Changes in kernel/arch/amd64/src/context.S [4bf0926e:9d58539] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/src/context.S
r4bf0926e r9d58539 27 27 # 28 28 29 #include <abi/asmtool.h> 30 #include <arch/context_struct.h> 31 #include <arch/vreg.h> 29 .text 32 30 33 .text 31 .global context_save_arch 32 .global context_restore_arch 33 34 #include <arch/context_offset.h> 34 35 35 36 ## Save current CPU context … … 38 39 # pointed by the 1st argument. Returns 1 in EAX. 39 40 # 40 FUNCTION_BEGIN(context_save_arch) 41 movq (%rsp), %rdx # the caller's return % rip41 context_save_arch: 42 movq (%rsp), %rdx # the caller's return %eip 42 43 43 movq %rdx, CONTEXT_OFFSET_PC(%rdi) 44 movq %rsp, CONTEXT_OFFSET_SP(%rdi) 45 46 movq %rbx, CONTEXT_OFFSET_RBX(%rdi) 47 movq %rbp, CONTEXT_OFFSET_RBP(%rdi) 48 movq %r12, CONTEXT_OFFSET_R12(%rdi) 49 movq %r13, CONTEXT_OFFSET_R13(%rdi) 50 movq %r14, CONTEXT_OFFSET_R14(%rdi) 51 movq %r15, CONTEXT_OFFSET_R15(%rdi) 52 53 #ifdef MEMORY_MODEL_large 54 movabsq $vreg_ptr, %rsi 55 movq (%rsi), %rsi 56 #else 57 movq vreg_ptr, %rsi 58 #endif 59 movq %fs:VREG_TP(%rsi), %rsi 60 movq %rsi, CONTEXT_OFFSET_TP(%rdi) 44 # 1st argument passed in %edi 45 CONTEXT_SAVE_ARCH_CORE %rdi %rdx 61 46 62 47 xorl %eax, %eax # context_save returns 1 63 48 incl %eax 64 49 ret 65 FUNCTION_END(context_save_arch)66 50 67 51 … … 71 55 # pointed by the 1st argument. Returns 0 in EAX. 72 56 # 73 FUNCTION_BEGIN(context_restore_arch) 74 movq CONTEXT_OFFSET_R15(%rdi), %r15 75 movq CONTEXT_OFFSET_R14(%rdi), %r14 76 movq CONTEXT_OFFSET_R13(%rdi), %r13 77 movq CONTEXT_OFFSET_R12(%rdi), %r12 78 movq CONTEXT_OFFSET_RBP(%rdi), %rbp 79 movq CONTEXT_OFFSET_RBX(%rdi), %rbx 57 context_restore_arch: 58 CONTEXT_RESTORE_ARCH_CORE %rdi %rdx 80 59 81 movq CONTEXT_OFFSET_SP(%rdi), %rsp82 83 movq CONTEXT_OFFSET_PC(%rdi), %rdx84 60 movq %rdx, (%rsp) 85 86 movq CONTEXT_OFFSET_TP(%rdi), %rcx87 #ifdef MEMORY_MODEL_large88 movabsq $vreg_ptr, %rsi89 movq (%rsi), %rsi90 #else91 movq vreg_ptr, %rsi92 #endif93 movq %rcx, %fs:VREG_TP(%rsi)94 61 95 62 xorl %eax, %eax # context_restore returns 0 96 63 ret 97 FUNCTION_END(context_restore_arch)98
Note:
See TracChangeset
for help on using the changeset viewer.