Changeset cfa70add in mainline for uspace/libc/arch/sparc64/include/psthread.h
- Timestamp:
- 2006-09-03T23:37:14Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- fd85ae5
- Parents:
- 002e613
- File:
-
- 1 edited
-
uspace/libc/arch/sparc64/include/psthread.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/libc/arch/sparc64/include/psthread.h
r002e613 rcfa70add 1 1 /* 2 * Copyright (C) 200 6 Martin Decky2 * Copyright (C) 2005 Jakub Jermar 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup libcsparc64 29 /** @addtogroup libcsparc64 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 #ifndef __LIBC__sparc64__PSTHREAD_H__36 #define __LIBC__sparc64__PSTHREAD_H__35 #ifndef LIBC_sparc64_PSTHREAD_H_ 36 #define LIBC_sparc64_PSTHREAD_H_ 37 37 38 #include <libarch/stack.h> 38 39 #include <types.h> 40 #include <align.h> 39 41 40 /* We define our own context_set, because we need to set 41 * the TLS pointer to the tcb+0x7000 42 * 43 * See tls_set in thread.h 42 #define SP_DELTA STACK_WINDOW_SAVE_AREA_SIZE 43 44 #ifdef context_set 45 #undef context_set 46 #endif 47 48 #define context_set(c, _pc, stack, size, ptls) \ 49 (c)->pc = ((uintptr_t) _pc) - 8; \ 50 (c)->sp = ((uintptr_t) stack) + ALIGN_UP((size), STACK_ALIGNMENT) - (STACK_BIAS + SP_DELTA); \ 51 (c)->fp = -STACK_BIAS; \ 52 (c)->tp = ptls 53 54 /* 55 * Only save registers that must be preserved across 56 * function calls. 44 57 */ 45 #define context_set(c, _pc, stack, size, ptls) \46 (c)->pc = (sysarg_t) (_pc); \47 (c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA; \48 (c)->tls = ((sysarg_t) (ptls)) + 0x7000 + sizeof(tcb_t);49 50 #define SP_DELTA 1651 52 58 typedef struct { 53 uint64_t sp; 54 uint64_t pc; 55 56 uint64_t tls; 57 } __attribute__ ((packed)) context_t; 59 uintptr_t sp; /* %o6 */ 60 uintptr_t pc; /* %o7 */ 61 uint64_t i0; 62 uint64_t i1; 63 uint64_t i2; 64 uint64_t i3; 65 uint64_t i4; 66 uint64_t i5; 67 uintptr_t fp; /* %i6 */ 68 uintptr_t i7; 69 uint64_t l0; 70 uint64_t l1; 71 uint64_t l2; 72 uint64_t l3; 73 uint64_t l4; 74 uint64_t l5; 75 uint64_t l6; 76 uint64_t l7; 77 uint64_t tp; /* %g7 */ 78 } context_t; 58 79 59 80 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
