Subversion Repositories HelenOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Copyright (c) 2005 Jakub Jermar
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  *
  9.  * - Redistributions of source code must retain the above copyright
  10.  *   notice, this list of conditions and the following disclaimer.
  11.  * - Redistributions in binary form must reproduce the above copyright
  12.  *   notice, this list of conditions and the following disclaimer in the
  13.  *   documentation and/or other materials provided with the distribution.
  14.  * - The name of the author may not be used to endorse or promote products
  15.  *   derived from this software without specific prior written permission.
  16.  *
  17.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  18.  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  19.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  20.  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  21.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  22.  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  23.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  24.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  25.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  26.  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27.  */
  28.  
  29. /** @addtogroup sparc64interrupt
  30.  * @{
  31.  */
  32. #ifndef KERN_sparc64_sun4u_REGWIN_H_
  33. #define KERN_sparc64_sun4u_REGWIN_H_
  34.  
  35. #ifdef __ASM__
  36.  
  37. /*
  38.  * Macro used to spill userspace window to userspace window buffer.
  39.  * It can be either triggered from preemptible_handler doing SAVE
  40.  * at (TL=1) or from normal kernel code doing SAVE when OTHERWIN>0
  41.  * at (TL=0).
  42.  */
  43. .macro SPILL_TO_USPACE_WINDOW_BUFFER
  44.     stx %l0, [%g7 + L0_OFFSET] 
  45.     stx %l1, [%g7 + L1_OFFSET]
  46.     stx %l2, [%g7 + L2_OFFSET]
  47.     stx %l3, [%g7 + L3_OFFSET]
  48.     stx %l4, [%g7 + L4_OFFSET]
  49.     stx %l5, [%g7 + L5_OFFSET]
  50.     stx %l6, [%g7 + L6_OFFSET]
  51.     stx %l7, [%g7 + L7_OFFSET]
  52.     stx %i0, [%g7 + I0_OFFSET]
  53.     stx %i1, [%g7 + I1_OFFSET]
  54.     stx %i2, [%g7 + I2_OFFSET]
  55.     stx %i3, [%g7 + I3_OFFSET]
  56.     stx %i4, [%g7 + I4_OFFSET]
  57.     stx %i5, [%g7 + I5_OFFSET]
  58.     stx %i6, [%g7 + I6_OFFSET]
  59.     stx %i7, [%g7 + I7_OFFSET]
  60.     add %g7, STACK_WINDOW_SAVE_AREA_SIZE, %g7
  61.     saved
  62.     retry
  63. .endm
  64.  
  65. #endif
  66.  
  67. #endif
  68.  
  69. /** @}
  70.  */
  71.