Changeset 1dbfe98 in mainline
- Timestamp:
- 2008-03-15T10:22:07Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8476a8d
- Parents:
- baac911
- Files:
-
- 1 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/include/context_offset.h
rbaac911 r1dbfe98 38 38 #define OFFSET_R14 0x30 39 39 #define OFFSET_R15 0x38 40 #define OFFSET_IPL 0x40 40 41 #ifdef KERNEL 42 # define OFFSET_IPL 0x40 43 #else 44 # define OFFSET_TLS 0x40 45 #endif 41 46 42 47 #ifdef __ASM__ … … 45 50 # pc: return address 46 51 .macro CONTEXT_SAVE_ARCH_CORE ctx:req pc:req 52 movq \pc, OFFSET_PC(\ctx) 53 movq %rsp, OFFSET_SP(\ctx) 54 55 movq %rbx, OFFSET_RBX(\ctx) 56 movq %rbp, OFFSET_RBP(\ctx) 57 movq %r12, OFFSET_R12(\ctx) 58 movq %r13, OFFSET_R13(\ctx) 59 movq %r14, OFFSET_R14(\ctx) 60 movq %r15, OFFSET_R15(\ctx) 47 61 .endm 48 62 49 63 # ctx: address of the structure with saved context 50 64 .macro CONTEXT_RESTORE_ARCH_CORE ctx:req pc:req 65 movq OFFSET_R15(\ctx), %r15 66 movq OFFSET_R14(\ctx), %r14 67 movq OFFSET_R13(\ctx), %r13 68 movq OFFSET_R12(\ctx), %r12 69 movq OFFSET_RBP(\ctx), %rbp 70 movq OFFSET_RBX(\ctx), %rbx 71 72 movq OFFSET_SP(\ctx), %rsp # ctx->sp -> %rsp 73 74 movq OFFSET_PC(\ctx), \pc 51 75 .endm 52 76 -
kernel/arch/amd64/src/context.S
rbaac911 r1dbfe98 41 41 context_save_arch: 42 42 movq (%rsp), %rdx # the caller's return %eip 43 43 44 # In %edi is passed 1st argument 44 movq %rdx, OFFSET_PC(%rdi) 45 movq %rsp, OFFSET_SP(%rdi) 46 47 movq %rbx, OFFSET_RBX(%rdi) 48 movq %rbp, OFFSET_RBP(%rdi) 49 movq %r12, OFFSET_R12(%rdi) 50 movq %r13, OFFSET_R13(%rdi) 51 movq %r14, OFFSET_R14(%rdi) 52 movq %r15, OFFSET_R15(%rdi) 45 CONTEXT_SAVE_ARCH_CORE %rdi %rdx 53 46 54 47 xorq %rax,%rax # context_save returns 1 … … 63 56 # 64 57 context_restore_arch: 65 movq OFFSET_R15(%rdi), %r15 66 movq OFFSET_R14(%rdi), %r14 67 movq OFFSET_R13(%rdi), %r13 68 movq OFFSET_R12(%rdi), %r12 69 movq OFFSET_RBP(%rdi), %rbp 70 movq OFFSET_RBX(%rdi), %rbx 71 72 movq OFFSET_SP(%rdi), %rsp # ctx->sp -> %rsp 73 74 movq OFFSET_PC(%rdi), %rdx 58 59 CONTEXT_RESTORE_ARCH_CORE %rdi %rdx 60 75 61 movq %rdx,(%rsp) 76 62 -
uspace/lib/libc/arch/amd64/src/fibril.S
rbaac911 r1dbfe98 32 32 .global context_restore 33 33 34 #include < libarch/context_offset.h>34 #include <kernel/arch/context_offset.h> 35 35 36 36 ## Save current CPU context … … 41 41 context_save: 42 42 movq (%rsp), %rdx # the caller's return %eip 43 43 44 # In %edi is passed 1st argument 44 movq %rdx, OFFSET_PC(%rdi) 45 movq %rsp, OFFSET_SP(%rdi) 45 CONTEXT_SAVE_ARCH_CORE %rdi %rdx 46 46 47 movq %rbx, OFFSET_RBX(%rdi)48 movq %rbp, OFFSET_RBP(%rdi)49 movq %r12, OFFSET_R12(%rdi)50 movq %r13, OFFSET_R13(%rdi)51 movq %r14, OFFSET_R14(%rdi)52 movq %r15, OFFSET_R15(%rdi)53 54 47 # Save TLS 55 48 movq %fs:0, %rax … … 67 60 # 68 61 context_restore: 69 movq OFFSET_R15(%rdi), %r1570 movq OFFSET_R14(%rdi), %r1471 movq OFFSET_R13(%rdi), %r1372 movq OFFSET_R12(%rdi), %r1273 movq OFFSET_RBP(%rdi), %rbp74 movq OFFSET_RBX(%rdi), %rbx75 62 76 movq OFFSET_SP(%rdi), %rsp # ctx->sp -> %rsp63 CONTEXT_RESTORE_ARCH_CORE %rdi %rdx 77 64 78 movq OFFSET_PC(%rdi), %rdx79 65 movq %rdx,(%rsp) 80 66
Note:
See TracChangeset
for help on using the changeset viewer.