Changeset fa23560 in mainline for uspace/lib/libc/arch/ppc32


Ignore:
Timestamp:
2007-10-30T22:54:11Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4d21cf8
Parents:
b2a0f6dd
Message:

Unify implementations of TLS variant I and variant II alloc_tls() and
free_tls_arch().

Location:
uspace/lib/libc/arch/ppc32
Files:
1 added
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • uspace/lib/libc/arch/ppc32/Makefile.inc

    rb2a0f6dd rfa23560  
    3535ARCH_SOURCES += arch/$(ARCH)/src/syscall.c \
    3636                arch/$(ARCH)/src/fibril.S \
    37                 arch/$(ARCH)/src/thread.c
     37                arch/$(ARCH)/src/tls.c
    3838
    3939CFLAGS += -mcpu=powerpc -msoft-float -m32
  • uspace/lib/libc/arch/ppc32/include/thread.h

    rb2a0f6dd rfa23560  
    3636#define LIBC_ppc32_THREAD_H_
    3737
    38 #define PPC_TP_OFFSET 0x7000
    39 
    40 typedef struct {
    41         void *fibril_data;
    42 } tcb_t;
    43 
    44 static inline void __tcb_set(tcb_t *tcb)
    45 {
    46         void *tp = tcb;
    47         tp += PPC_TP_OFFSET + sizeof(tcb_t);
    48        
    49         asm volatile (
    50                 "mr %%r2, %0\n"
    51                 :
    52                 : "r" (tp)
    53         );
    54 }
    55 
    56 static inline tcb_t * __tcb_get(void)
    57 {
    58         void * retval;
    59        
    60         asm volatile (
    61                 "mr %0, %%r2\n"
    62                 : "=r" (retval)
    63         );
    64 
    65         return (tcb_t *)(retval - PPC_TP_OFFSET - sizeof(tcb_t));
    66 }
    67 
    6838#endif
    6939
  • uspace/lib/libc/arch/ppc32/src/tls.c

    rb2a0f6dd rfa23560  
    3333 */
    3434
    35 #include <thread.h>
    36 #include <malloc.h>
     35#include <tls.h>
     36#include <sys/types.h>
    3737
    38 /** Allocate TLS & TCB for initial module threads
    39  *
    40  * @param data Start of data section
    41  * @return pointer to tcb_t structure
    42  *
    43  */
    4438tcb_t * __alloc_tls(void **data, size_t size)
    4539{
    46         tcb_t *result;
    47 
    48         result = malloc(sizeof(tcb_t) + size);
    49         *data = ((void *)result) + sizeof(tcb_t);
    50         return result;
     40        return tls_alloc_variant_1(data, size);
    5141}
    5242
    5343void __free_tls_arch(tcb_t *tcb, size_t size)
    5444{
    55         free(tcb);
     45        tls_free_variant_1(tcb, size);
    5646}
    5747
Note: See TracChangeset for help on using the changeset viewer.