Rev 2776 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2776 | Rev 2778 | ||
---|---|---|---|
Line 41... | Line 41... | ||
41 | # |
41 | # |
42 | context_save: |
42 | context_save: |
43 | movl 0(%esp),%eax # the caller's return %eip |
43 | movl 0(%esp),%eax # the caller's return %eip |
44 | movl 4(%esp),%edx # address of the context variable to save context to |
44 | movl 4(%esp),%edx # address of the context variable to save context to |
45 | 45 | ||
46 | # save registers to given structure |
46 | # save registers to the context structure |
47 | CONTEXT_SAVE_ARCH_CORE %edx %eax |
47 | CONTEXT_SAVE_ARCH_CORE %edx %eax |
48 | 48 | ||
49 | # Save TLS |
49 | # Save TLS |
50 | movl %gs:0, %eax |
50 | movl %gs:0, %eax |
51 | movl %eax, OFFSET_TLS(%edx) # tls -> ctx->tls |
51 | movl %eax, OFFSET_TLS(%edx) # tls -> ctx->tls |
Line 61... | Line 61... | ||
61 | # pointed by the 1st argument. Returns 0 in EAX. |
61 | # pointed by the 1st argument. Returns 0 in EAX. |
62 | # |
62 | # |
63 | context_restore: |
63 | context_restore: |
64 | movl 4(%esp),%eax # address of the context variable to restore context from |
64 | movl 4(%esp),%eax # address of the context variable to restore context from |
65 | 65 | ||
66 | # restore registers from jmp_buf |
66 | # restore registers from the context structure |
67 | CONTEXT_RESTORE_ARCH_CORE %eax %edx |
67 | CONTEXT_RESTORE_ARCH_CORE %eax %edx |
68 | 68 | ||
69 | movl %edx,0(%esp) # ctx->pc -> saver's return %eip |
69 | movl %edx,0(%esp) # ctx->pc -> saver's return %eip |
70 | 70 | ||
71 | # Set thread local storage |
71 | # Set thread local storage |