Changeset fca4207 in mainline for libc/arch/ppc32/include/thread.h


Ignore:
Timestamp:
2006-05-04T11:04:23Z (20 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4a7c273
Parents:
f33cb0b9
Message:

preliminary TLS & pthread support for ppc32

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libc/arch/ppc32/include/thread.h

    rf33cb0b9 rfca4207  
    3030#define __LIBC__ppc32__THREAD_H__
    3131
     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
    3246typedef struct {
    3347        void *pst_data;
     
    3650static inline void __tcb_set(tcb_t *tcb)
    3751{
     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        );
    3860}
    3961
    4062static inline tcb_t * __tcb_get(void)
    4163{
     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));
    4272}
    4373
Note: See TracChangeset for help on using the changeset viewer.