Subversion Repositories HelenOS

Rev

Rev 2860 | Blame | Compare with Previous | 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. #ifndef KERN_sparc64_CONTEXT_OFFSET_H_
  30. #define KERN_sparc64_CONTEXT_OFFSET_H_
  31.  
  32. #define OFFSET_SP       0x0
  33. #define OFFSET_PC       0x8
  34. #define OFFSET_I0       0x10
  35. #define OFFSET_I1       0x18
  36. #define OFFSET_I2       0x20
  37. #define OFFSET_I3       0x28
  38. #define OFFSET_I4       0x30
  39. #define OFFSET_I5       0x38
  40. #define OFFSET_FP       0x40
  41. #define OFFSET_I7       0x48
  42. #define OFFSET_L0       0x50
  43. #define OFFSET_L1       0x58
  44. #define OFFSET_L2       0x60
  45. #define OFFSET_L3       0x68
  46. #define OFFSET_L4       0x70
  47. #define OFFSET_L5       0x78
  48. #define OFFSET_L6       0x80
  49. #define OFFSET_L7       0x88
  50.  
  51. #ifndef KERNEL     
  52. # define OFFSET_TP      0x90
  53. #endif
  54.  
  55. #ifdef __ASM__
  56.  
  57. .macro CONTEXT_SAVE_ARCH_CORE ctx:req
  58.     stx %sp, [\ctx + OFFSET_SP]
  59.     stx %o7, [\ctx + OFFSET_PC]
  60.     stx %i0, [\ctx + OFFSET_I0]
  61.     stx %i1, [\ctx + OFFSET_I1]
  62.     stx %i2, [\ctx + OFFSET_I2]
  63.     stx %i3, [\ctx + OFFSET_I3]
  64.     stx %i4, [\ctx + OFFSET_I4]
  65.     stx %i5, [\ctx + OFFSET_I5]
  66.     stx %fp, [\ctx + OFFSET_FP]
  67.     stx %i7, [\ctx + OFFSET_I7]
  68.     stx %l0, [\ctx + OFFSET_L0]
  69.     stx %l1, [\ctx + OFFSET_L1]
  70.     stx %l2, [\ctx + OFFSET_L2]
  71.     stx %l3, [\ctx + OFFSET_L3]
  72.     stx %l4, [\ctx + OFFSET_L4]
  73.     stx %l5, [\ctx + OFFSET_L5]
  74.     stx %l6, [\ctx + OFFSET_L6]
  75.     stx %l7, [\ctx + OFFSET_L7]
  76. #ifndef KERNEL     
  77.     stx %g7, [\ctx + OFFSET_TP]
  78. #endif
  79. .endm
  80.  
  81. .macro CONTEXT_RESTORE_ARCH_CORE ctx:req
  82.     ldx [\ctx + OFFSET_SP], %sp
  83.     ldx [\ctx + OFFSET_PC], %o7
  84.     ldx [\ctx + OFFSET_I0], %i0
  85.     ldx [\ctx + OFFSET_I1], %i1
  86.     ldx [\ctx + OFFSET_I2], %i2
  87.     ldx [\ctx + OFFSET_I3], %i3
  88.     ldx [\ctx + OFFSET_I4], %i4
  89.     ldx [\ctx + OFFSET_I5], %i5
  90.     ldx [\ctx + OFFSET_FP], %fp
  91.     ldx [\ctx + OFFSET_I7], %i7
  92.     ldx [\ctx + OFFSET_L0], %l0
  93.     ldx [\ctx + OFFSET_L1], %l1
  94.     ldx [\ctx + OFFSET_L2], %l2
  95.     ldx [\ctx + OFFSET_L3], %l3
  96.     ldx [\ctx + OFFSET_L4], %l4
  97.     ldx [\ctx + OFFSET_L5], %l5
  98.     ldx [\ctx + OFFSET_L6], %l6
  99.     ldx [\ctx + OFFSET_L7], %l7
  100. #ifndef KERNEL     
  101.     ldx [\ctx + OFFSET_TP], %g7
  102. #endif
  103. .endm
  104.  
  105. #endif /* __ASM__ */
  106.  
  107. #endif
  108.