Changeset fca4207 in mainline for libc/arch/ppc32/include/thread.h
- Timestamp:
- 2006-05-04T11:04:23Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4a7c273
- Parents:
- f33cb0b9
- File:
-
- 1 edited
-
libc/arch/ppc32/include/thread.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libc/arch/ppc32/include/thread.h
rf33cb0b9 rfca4207 30 30 #define __LIBC__ppc32__THREAD_H__ 31 31 32 /* I did not find any specification (neither MIPS nor PowerPC), but 33 * as I found it 34 * - it uses Variant II 35 * - TCB is at Address(First TLS Block)+0x7000. 36 * - DTV is at Address(First TLS Block)+0x8000 37 * - What would happen if the TLS data was larger then 0x7000? 38 * - The linker never accesses DTV directly, has the second definition any 39 * sense? 40 * We will make it this way: 41 * - TCB is at TP-0x7000-sizeof(tcb) 42 * - No assumption about DTV etc., but it will not have a fixed address 43 */ 44 #define PPC_TP_OFFSET 0x7000 45 32 46 typedef struct { 33 47 void *pst_data; … … 36 50 static inline void __tcb_set(tcb_t *tcb) 37 51 { 52 void *tp = tcb; 53 tp += PPC_TP_OFFSET + sizeof(tcb_t); 54 55 asm volatile ( 56 "mr %%r2, %0\n" 57 : 58 : "r" (tp) 59 ); 38 60 } 39 61 40 62 static inline tcb_t * __tcb_get(void) 41 63 { 64 void * retval; 65 66 asm volatile ( 67 "mr %0, %%r2\n" 68 : "=r" (retval) 69 ); 70 71 return (tcb_t *)(retval - PPC_TP_OFFSET - sizeof(tcb_t)); 42 72 } 43 73
Note:
See TracChangeset
for help on using the changeset viewer.
