Changeset a5c78a18 in mainline for uspace/lib/c/arch/amd64
- Timestamp:
- 2019-02-03T14:35:44Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b4f1171
- Parents:
- 67ca359
- Location:
- uspace/lib/c/arch/amd64
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/amd64/include/libarch/fibril_context.h
r67ca359 ra5c78a18 30 30 #define LIBC_ARCH_FIBRIL_CONTEXT_H_ 31 31 32 #define CONTEXT_OFFSET_SP 0x0033 #define CONTEXT_OFFSET_PC 0x0834 #define CONTEXT_OFFSET_RBX 0x1035 #define CONTEXT_OFFSET_RBP 0x1836 #define CONTEXT_OFFSET_R12 0x2037 #define CONTEXT_OFFSET_R13 0x2838 #define CONTEXT_OFFSET_R14 0x3039 #define CONTEXT_OFFSET_R15 0x3840 #define CONTEXT_OFFSET_TLS 0x4041 #define CONTEXT_SIZE 0x4832 #define __CONTEXT_OFFSET_SP 0x00 33 #define __CONTEXT_OFFSET_PC 0x08 34 #define __CONTEXT_OFFSET_RBX 0x10 35 #define __CONTEXT_OFFSET_RBP 0x18 36 #define __CONTEXT_OFFSET_R12 0x20 37 #define __CONTEXT_OFFSET_R13 0x28 38 #define __CONTEXT_OFFSET_R14 0x30 39 #define __CONTEXT_OFFSET_R15 0x38 40 #define __CONTEXT_OFFSET_TLS 0x40 41 #define __CONTEXT_SIZE 0x48 42 42 43 43 #ifndef __ASSEMBLER__ … … 45 45 #include <stdint.h> 46 46 47 typedef struct context {47 typedef struct __context { 48 48 /* 49 49 * We include only registers that must be preserved … … 59 59 uint64_t r15; 60 60 uint64_t tls; 61 } context_t;61 } __context_t; 62 62 63 63 #endif -
uspace/lib/c/arch/amd64/src/fibril.S
r67ca359 ra5c78a18 41 41 42 42 # in %rdi is passed 1st argument 43 movq %rdx, CONTEXT_OFFSET_PC(%rdi)44 movq %rsp, CONTEXT_OFFSET_SP(%rdi)43 movq %rdx, __CONTEXT_OFFSET_PC(%rdi) 44 movq %rsp, __CONTEXT_OFFSET_SP(%rdi) 45 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)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 52 53 53 movq %fs:0, %rax 54 movq %rax, CONTEXT_OFFSET_TLS(%rdi)54 movq %rax, __CONTEXT_OFFSET_TLS(%rdi) 55 55 56 56 xorq %rax, %rax # __setjmp returns 0 … … 64 64 # 65 65 FUNCTION_BEGIN(__longjmp) 66 movq CONTEXT_OFFSET_R15(%rdi), %r1567 movq CONTEXT_OFFSET_R14(%rdi), %r1468 movq CONTEXT_OFFSET_R13(%rdi), %r1369 movq CONTEXT_OFFSET_R12(%rdi), %r1270 movq CONTEXT_OFFSET_RBP(%rdi), %rbp71 movq CONTEXT_OFFSET_RBX(%rdi), %rbx66 movq __CONTEXT_OFFSET_R15(%rdi), %r15 67 movq __CONTEXT_OFFSET_R14(%rdi), %r14 68 movq __CONTEXT_OFFSET_R13(%rdi), %r13 69 movq __CONTEXT_OFFSET_R12(%rdi), %r12 70 movq __CONTEXT_OFFSET_RBP(%rdi), %rbp 71 movq __CONTEXT_OFFSET_RBX(%rdi), %rbx 72 72 73 movq CONTEXT_OFFSET_SP(%rdi), %rsp # ctx->sp -> %rsp73 movq __CONTEXT_OFFSET_SP(%rdi), %rsp # ctx->sp -> %rsp 74 74 75 movq CONTEXT_OFFSET_PC(%rdi), %rdx75 movq __CONTEXT_OFFSET_PC(%rdi), %rdx 76 76 77 77 movq %rdx,(%rsp) 78 78 79 movq CONTEXT_OFFSET_TLS(%rdi), %rdi79 movq __CONTEXT_OFFSET_TLS(%rdi), %rdi 80 80 movq %rdi, %fs:0 81 81
Note:
See TracChangeset
for help on using the changeset viewer.