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


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/ia64
Files:
1 added
2 edited
1 moved

Legend:

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

    rb2a0f6dd rfa23560  
    3838ARCH_SOURCES += arch/$(ARCH)/src/syscall.S \
    3939                arch/$(ARCH)/src/fibril.S \
    40                 arch/$(ARCH)/src/thread.c
     40                arch/$(ARCH)/src/tls.c
    4141
    4242BFD_NAME = elf64-little
  • uspace/lib/libc/arch/ia64/include/thread.h

    rb2a0f6dd rfa23560  
    3838#define THREAD_INITIAL_STACK_PAGES_NO 2
    3939
    40 /* This structure must be exactly 16 bytes long */
    41 typedef struct {
    42         void *dtv; /* unused in static linking*/
    43         void *fibril_data;
    44 } tcb_t;
    45 
    46 static inline void __tcb_set(tcb_t *tcb)
    47 {
    48         asm volatile ("mov r13 = %0\n" : : "r" (tcb) : "r13");
    49 }
    50 
    51 static inline tcb_t *__tcb_get(void)
    52 {
    53         void *retval;
    54 
    55         asm volatile ("mov %0 = r13\n" : "=r" (retval));
    56 
    57         return retval;
    58 }
    59 
    6040#endif
    6141
  • uspace/lib/libc/arch/ia64/src/tls.c

    rb2a0f6dd rfa23560  
    3535 */
    3636
    37 #include <thread.h>
     37#include <tls.h>
    3838#include <malloc.h>
    3939
    40 /** Allocate TLS & TCB for initial module threads
    41  *
    42  * @param data Start of data section
    43  * @return pointer to tcb_t structure
    44  */
    45 extern char _tdata_start;
    46 extern char _tbss_end;
    4740tcb_t * __alloc_tls(void **data, size_t size)
    4841{
    49         tcb_t *tcb;
    50        
    51 /*      ASSERT(sizeof(tcb_t) == 16); */
    52 
    53         tcb = malloc(sizeof(tcb_t) + size);
    54         *data = ((void *) tcb) + 16;
    55 
    56         return tcb;
     42        return tls_alloc_variant_1(data, size);
    5743}
    5844
    5945void __free_tls_arch(tcb_t *tcb, size_t size)
    6046{
    61         free(tcb);
     47        tls_free_variant_1(tcb, size);
    6248}
    6349
Note: See TracChangeset for help on using the changeset viewer.