Changeset 86 for trunk/hal/x86_64/core/hal_kentry.h
- Timestamp:
- Jun 28, 2017, 3:24:02 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/hal/x86_64/core/hal_kentry.h
r51 r86 45 45 #define T_USER 0x100 46 46 47 #define TF_REGSIZE (19 * 8) 48 49 #define INTR_SAVE_REGS \ 50 subq $TF_REGSIZE,%rsp ; \ 51 movq %rax,TF_RAX(%rsp) ; \ 52 movq %rbx,TF_RBX(%rsp) ; \ 53 movq %rcx,TF_RCX(%rsp) ; \ 54 movq %rdx,TF_RDX(%rsp) ; \ 55 movq %rbp,TF_RBP(%rsp) ; \ 56 movq %rdi,TF_RDI(%rsp) ; \ 57 movq %rsi,TF_RSI(%rsp) ; \ 58 movq %r8,TF_R8(%rsp) ; \ 59 movq %r9,TF_R9(%rsp) ; \ 60 movq %r10,TF_R10(%rsp) ; \ 61 movq %r11,TF_R11(%rsp) ; \ 62 movq %r12,TF_R12(%rsp) ; \ 63 movq %r13,TF_R13(%rsp) ; \ 64 movq %r14,TF_R14(%rsp) ; \ 65 movq %r15,TF_R15(%rsp) ; \ 66 movw %gs,TF_GS(%rsp) ; \ 67 movw %fs,TF_FS(%rsp) ; \ 68 movw %es,TF_ES(%rsp) ; \ 69 movw %ds,TF_DS(%rsp) ; \ 70 cld 71 72 #define INTR_RESTORE_REGS \ 73 movq TF_RAX(%rsp),%rax ; \ 74 movq TF_RBX(%rsp),%rbx ; \ 75 movq TF_RCX(%rsp),%rcx ; \ 76 movq TF_RDX(%rsp),%rdx ; \ 77 movq TF_RBP(%rsp),%rbp ; \ 78 movq TF_RDI(%rsp),%rdi ; \ 79 movq TF_RSI(%rsp),%rsi ; \ 80 movq TF_R8(%rsp),%r8 ; \ 81 movq TF_R9(%rsp),%r9 ; \ 82 movq TF_R10(%rsp),%r10 ; \ 83 movq TF_R11(%rsp),%r11 ; \ 84 movq TF_R12(%rsp),%r12 ; \ 85 movq TF_R13(%rsp),%r13 ; \ 86 movq TF_R14(%rsp),%r14 ; \ 87 movq TF_R15(%rsp),%r15 ; \ 88 movw TF_GS(%rsp),%gs ; \ 89 movw TF_FS(%rsp),%fs ; \ 90 movw TF_ES(%rsp),%es ; \ 91 movw TF_DS(%rsp),%ds ; \ 92 addq $TF_REGSIZE,%rsp ; \ 93 cld 94 47 95 #ifndef x86_ASM 48 96 … … 51 99 */ 52 100 struct trapframe { 101 /* Pushed by INTR_SAVE_REGS */ 102 uint64_t tf_rax; 103 uint64_t tf_rbx; 104 uint64_t tf_rcx; 105 uint64_t tf_rdx; 53 106 uint64_t tf_rdi; 54 107 uint64_t tf_rsi; 55 uint64_t tf_rdx; 56 uint64_t tf_r10; 108 uint64_t tf_rbp; 57 109 uint64_t tf_r8; 58 110 uint64_t tf_r9; 59 60 uint64_t tf_arg6; 61 uint64_t tf_arg7; 62 uint64_t tf_arg8; 63 uint64_t tf_arg9; 64 65 uint64_t tf_rcx; 111 uint64_t tf_r10; 66 112 uint64_t tf_r11; 67 113 uint64_t tf_r12; … … 69 115 uint64_t tf_r14; 70 116 uint64_t tf_r15; 71 uint64_t tf_rbp;72 uint64_t tf_rbx;73 uint64_t tf_rax;74 75 117 uint64_t tf_gs; 76 118 uint64_t tf_fs; … … 78 120 uint64_t tf_ds; 79 121 122 /* Pushed by the ISR */ 80 123 uint64_t tf_trapno; 81 124 … … 98 141 99 142 /* These are pushed for a trap */ 100 uint64_t tf_err; 143 uint64_t tf_err; /* in fact, this one may not... */ 101 144 uint64_t tf_rip; 102 145 uint64_t tf_cs; … … 108 151 }; 109 152 153 #else 154 155 /* offsets in the trapframe structure */ 156 #define TF_RAX 0 157 #define TF_RBX 8 158 #define TF_RCX 16 159 #define TF_RDX 24 160 #define TF_RDI 32 161 #define TF_RSI 40 162 #define TF_RBP 48 163 #define TF_R8 56 164 #define TF_R9 64 165 #define TF_R10 72 166 #define TF_R11 80 167 #define TF_R12 88 168 #define TF_R13 96 169 #define TF_R14 104 170 #define TF_R15 112 171 #define TF_GS 120 172 #define TF_FS 128 173 #define TF_ES 136 174 #define TF_DS 144 175 110 176 #endif 111 177
Note: See TracChangeset
for help on using the changeset viewer.