Changeset 827d73f in mainline for uspace/lib/libc/arch


Ignore:
Timestamp:
2010-02-12T14:09:22Z (16 years ago)
Author:
Lukas Mejdrech <lukasmejdrech@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a70bda4
Parents:
918e9910 (diff), e70edd1 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merged the actual head

Location:
uspace/lib/libc/arch
Files:
27 added
3 deleted
31 edited
3 moved

Legend:

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

    r918e9910 r827d73f  
    3737        arch/$(UARCH)/src/fibril.S \
    3838        arch/$(UARCH)/src/tls.c \
    39         arch/$(UARCH)/src/stacktrace.S
     39        arch/$(UARCH)/src/stacktrace.c \
     40        arch/$(UARCH)/src/stacktrace_asm.S
    4041
    4142GCC_CFLAGS += -fno-omit-frame-pointer
  • uspace/lib/libc/arch/amd64/include/limits.h

    r918e9910 r827d73f  
    3636#define LIBC_amd64_LIMITS_H_
    3737
    38 # define LONG_MIN MIN_INT64
    39 # define LONG_MAX MAX_INT64
    40 # define ULONG_MIN MIN_UINT64
    41 # define ULONG_MAX MAX_UINT64
     38#define LONG_MIN MIN_INT64
     39#define LONG_MAX MAX_INT64
     40#define ULONG_MIN MIN_UINT64
     41#define ULONG_MAX MAX_UINT64
     42
     43#define SIZE_MIN MIN_UINT64
     44#define SIZE_MAX MAX_UINT64
     45#define SSIZE_MIN MIN_INT64
     46#define SSIZE_MAX MAX_INT64
    4247
    4348#endif
  • uspace/lib/libc/arch/amd64/include/types.h

    r918e9910 r827d73f  
    3636#define LIBC_amd64_TYPES_H_
    3737
     38#define __64_BITS__
     39
    3840typedef unsigned long long sysarg_t;
    3941
  • uspace/lib/libc/arch/arm32/Makefile.inc

    r918e9910 r827d73f  
    3838        arch/$(UARCH)/src/tls.c \
    3939        arch/$(UARCH)/src/eabi.S \
    40         arch/$(UARCH)/src/stacktrace.S
     40        arch/$(UARCH)/src/stacktrace.c \
     41        arch/$(UARCH)/src/stacktrace_asm.S
    4142
    4243GCC_CFLAGS += -ffixed-r9 -mtp=soft -mapcs-frame -fno-omit-frame-pointer
  • uspace/lib/libc/arch/arm32/include/limits.h

    r918e9910 r827d73f  
    2727 */
    2828
    29 /** @addtogroup libcarm32       
     29/** @addtogroup libcarm32
    3030 * @{
    3131 */
    32 /** @file 
     32/** @file
    3333 *  @brief Limits declarations.
    3434 */
     
    4242#define ULONG_MAX MAX_UINT32
    4343
     44#define SIZE_MIN MIN_UINT32
     45#define SIZE_MAX MAX_UINT32
     46#define SSIZE_MIN MIN_INT32
     47#define SSIZE_MAX MAX_INT32
     48
    4449#endif
    4550
  • uspace/lib/libc/arch/arm32/include/types.h

    r918e9910 r827d73f  
    3737#define LIBC_arm32_TYPES_H_
    3838
     39#define __32_BITS__
     40
    3941typedef unsigned int sysarg_t;
    4042
  • uspace/lib/libc/arch/ia32/Makefile.inc

    r918e9910 r827d73f  
    3838        arch/$(UARCH)/src/tls.c \
    3939        arch/$(UARCH)/src/setjmp.S \
    40         arch/$(UARCH)/src/stacktrace.S
     40        arch/$(UARCH)/src/stacktrace.c \
     41        arch/$(UARCH)/src/stacktrace_asm.S
    4142
    4243GCC_CFLAGS += -march=pentium
  • uspace/lib/libc/arch/ia32/include/limits.h

    r918e9910 r827d73f  
    3636#define LIBC_ia32__LIMITS_H_
    3737
    38 # define LONG_MIN MIN_INT32
    39 # define LONG_MAX MAX_INT32
    40 # define ULONG_MIN MIN_UINT32
    41 # define ULONG_MAX MAX_UINT32
     38#define LONG_MIN MIN_INT32
     39#define LONG_MAX MAX_INT32
     40#define ULONG_MIN MIN_UINT32
     41#define ULONG_MAX MAX_UINT32
     42
     43#define SIZE_MIN MIN_UINT32
     44#define SIZE_MAX MAX_UINT32
     45#define SSIZE_MIN MIN_INT32
     46#define SSIZE_MAX MAX_INT32
    4247
    4348#endif
  • uspace/lib/libc/arch/ia32/include/syscall.h

    r918e9910 r827d73f  
    4040#include <kernel/syscall/syscall.h>
    4141
    42 #define __syscall0      __syscall_fast_func
    43 #define __syscall1      __syscall_fast_func
    44 #define __syscall2      __syscall_fast_func
    45 #define __syscall3      __syscall_fast_func
    46 #define __syscall4      __syscall_fast_func
    47 #define __syscall5      __syscall_slow
    48 #define __syscall6      __syscall_slow
     42#define __syscall0  __syscall_fast_func
     43#define __syscall1  __syscall_fast_func
     44#define __syscall2  __syscall_fast_func
     45#define __syscall3  __syscall_fast_func
     46#define __syscall4  __syscall_fast_func
     47#define __syscall5  __syscall_slow
     48#define __syscall6  __syscall_slow
    4949
    50 extern sysarg_t
    51 (* __syscall_fast_func)(const sysarg_t, const sysarg_t, const sysarg_t,
     50extern sysarg_t (* __syscall_fast_func)(const sysarg_t, const sysarg_t,
     51    const sysarg_t, const sysarg_t, const sysarg_t, const sysarg_t,
     52    const syscall_t);
     53
     54extern sysarg_t __syscall_slow(const sysarg_t, const sysarg_t, const sysarg_t,
    5255    const sysarg_t, const sysarg_t, const sysarg_t, const syscall_t);
    53 
    54 extern sysarg_t
    55 __syscall_slow(const sysarg_t, const sysarg_t, const sysarg_t, const sysarg_t,
    56     const sysarg_t, const sysarg_t, const syscall_t);
    5756
    5857#endif
  • uspace/lib/libc/arch/ia32/include/tls.h

    r918e9910 r827d73f  
    5353{
    5454        void *retval;
    55 
    56         asm ("movl %%gs:0, %0" : "=r"(retval));
     55       
     56        asm (
     57                "movl %%gs:0, %0"
     58                : "=r" (retval)
     59        );
     60       
    5761        return retval;
    5862}
  • uspace/lib/libc/arch/ia32/include/types.h

    r918e9910 r827d73f  
    3636#define LIBC_ia32_TYPES_H_
    3737
     38#define __32_BITS__
     39
    3840typedef unsigned int sysarg_t;
    3941
  • uspace/lib/libc/arch/ia64/Makefile.inc

    r918e9910 r827d73f  
    3737        arch/$(UARCH)/src/tls.c \
    3838        arch/$(UARCH)/src/ddi.c \
    39         arch/$(UARCH)/src/stacktrace.S
     39        arch/$(UARCH)/src/stacktrace.c \
     40        arch/$(UARCH)/src/stacktrace_asm.S
    4041
    4142GCC_CFLAGS += -fno-unwind-tables
  • uspace/lib/libc/arch/ia64/include/ddi.h

    r918e9910 r827d73f  
    3939#include <libarch/types.h>
    4040
    41 #define IO_SPACE_BOUNDARY       (64 * 1024)
     41#define IO_SPACE_BOUNDARY       ((void *) (64 * 1024))
    4242
    4343uint64_t get_ia64_iospace_address(void);
  • uspace/lib/libc/arch/ia64/include/faddr.h

    r918e9910 r827d73f  
    2727 */
    2828
    29 /** @addtogroup libcia64       
     29/** @addtogroup libcia64
    3030 * @{
    3131 */
     
    3838#include <libarch/types.h>
    3939
    40 /** 
     40/**
    4141 *
    4242 * Calculate absolute address of function
    4343 * referenced by fptr pointer.
    4444 *
    45  * @param f Function pointer.
     45 * @param fptr Function pointer.
    4646 *
    4747 */
    48 #define FADDR(f)         (*((uintptr_t *)(f)));
     48#define FADDR(fptr)  (((fncptr_t *) (fptr))->fnc)
    4949
    5050#endif
  • uspace/lib/libc/arch/ia64/include/fibril.h

    r918e9910 r827d73f  
    5353#define PSTHREAD_INITIAL_STACK_DIVISION 2 
    5454
    55 #ifdef context_set
    56 #undef context_set
    57 #endif
    58 
    5955#define context_set(c, _pc, stack, size, tls)                                                           \
    6056        do {                                                                                            \
     
    110106        uint64_t pr;
    111107
    112         __r128 f2 __attribute__ ((aligned(16)));
    113         __r128 f3;
    114         __r128 f4;
    115         __r128 f5;
     108        uint128_t f2 __attribute__ ((aligned(16)));
     109        uint128_t f3;
     110        uint128_t f4;
     111        uint128_t f5;
    116112
    117         __r128 f16;
    118         __r128 f17;
    119         __r128 f18;
    120         __r128 f19;
    121         __r128 f20;
    122         __r128 f21;
    123         __r128 f22;
    124         __r128 f23;
    125         __r128 f24;
    126         __r128 f25;
    127         __r128 f26;
    128         __r128 f27;
    129         __r128 f28;
    130         __r128 f29;
    131         __r128 f30;
    132         __r128 f31;
     113        uint128_t f16;
     114        uint128_t f17;
     115        uint128_t f18;
     116        uint128_t f19;
     117        uint128_t f20;
     118        uint128_t f21;
     119        uint128_t f22;
     120        uint128_t f23;
     121        uint128_t f24;
     122        uint128_t f25;
     123        uint128_t f26;
     124        uint128_t f27;
     125        uint128_t f28;
     126        uint128_t f29;
     127        uint128_t f30;
     128        uint128_t f31;
    133129
    134130} context_t;
  • uspace/lib/libc/arch/ia64/include/limits.h

    r918e9910 r827d73f  
    2727 */
    2828
    29 /** @addtogroup libcia64       
     29/** @addtogroup libcia64
    3030 * @{
    3131 */
     
    3636#define LIBC_ia64_LIMITS_H_
    3737
    38 # define LONG_MIN MIN_INT64
    39 # define LONG_MAX MAX_INT64
    40 # define ULONG_MIN MIN_UINT64
    41 # define ULONG_MAX MAX_UINT64
     38#define LONG_MIN MIN_INT64
     39#define LONG_MAX MAX_INT64
     40#define ULONG_MIN MIN_UINT64
     41#define ULONG_MAX MAX_UINT64
     42
     43#define SIZE_MIN MIN_UINT64
     44#define SIZE_MAX MAX_UINT64
     45#define SSIZE_MIN MIN_INT64
     46#define SSIZE_MAX MAX_INT64
    4247
    4348#endif
  • uspace/lib/libc/arch/ia64/include/types.h

    r918e9910 r827d73f  
    2727 */
    2828
    29 /** @addtogroup libcia64       
     29/** @addtogroup libcia64
    3030 * @{
    3131 */
     
    3535#ifndef LIBC_ia64_TYPES_H_
    3636#define LIBC_ia64_TYPES_H_
     37
     38#define __64_BITS__
    3739
    3840typedef unsigned long long sysarg_t;
     
    4850typedef unsigned long int uint64_t;
    4951
     52typedef struct {
     53        uint64_t lo;
     54        uint64_t hi;
     55} uint128_t;
     56
    5057typedef int64_t ssize_t;
    5158typedef uint64_t size_t;
     
    5360typedef uint64_t uintptr_t;
    5461
    55 typedef unsigned char __r8;                     /* Reserve byte */
    56 typedef unsigned short __r16;
    57 typedef unsigned int __r32;
    58 typedef unsigned long __r64;
    59 
    60 typedef struct __r128{
    61         __r64 lo;
    62         __r64 hi;
    63 } __r128;
     62typedef struct {
     63        uintptr_t fnc;
     64        uintptr_t gp;
     65} __attribute__((may_alias)) fncptr_t;
    6466
    6567#endif
  • uspace/lib/libc/arch/mips32/Makefile.inc

    r918e9910 r827d73f  
    3636        arch/$(UARCH)/src/fibril.S \
    3737        arch/$(UARCH)/src/tls.c \
    38         arch/$(UARCH)/src/stacktrace.S
     38        arch/$(UARCH)/src/stacktrace.c \
     39        arch/$(UARCH)/src/stacktrace_asm.S
    3940
    4041GCC_CFLAGS += -mips3
  • uspace/lib/libc/arch/mips32/include/limits.h

    r918e9910 r827d73f  
    2727 */
    2828
    29 /** @addtogroup libcmips32     
     29/** @addtogroup libcmips32
    3030 * @{
    3131 */
    3232/** @file
    33  * @ingroup libcmips32eb       
     33 * @ingroup libcmips32eb
    3434 */
    3535
     
    3737#define LIBC_mips32__LIMITS_H_
    3838
    39 # define LONG_MIN MIN_INT32
    40 # define LONG_MAX MAX_INT32
    41 # define ULONG_MIN MIN_UINT32
    42 # define ULONG_MAX MAX_UINT32
     39#define LONG_MIN MIN_INT32
     40#define LONG_MAX MAX_INT32
     41#define ULONG_MIN MIN_UINT32
     42#define ULONG_MAX MAX_UINT32
     43
     44#define SIZE_MIN MIN_UINT32
     45#define SIZE_MAX MAX_UINT32
     46#define SSIZE_MIN MIN_INT32
     47#define SSIZE_MAX MAX_INT32
    4348
    4449#endif
  • uspace/lib/libc/arch/mips32/include/types.h

    r918e9910 r827d73f  
    3737#define LIBC_mips32_TYPES_H_
    3838
     39#define __32_BITS__
     40
    3941typedef unsigned int sysarg_t;
    4042
  • uspace/lib/libc/arch/mips32/src/stacktrace_asm.S

    r918e9910 r827d73f  
    11#
    2 # Copyright (c) 2005 Martin Decky
     2# Copyright (c) 2009 Jakub Jermar
    33# All rights reserved.
    44#
     
    2727#
    2828
     29.text
    2930
    30 ## Common names
    31 #
     31.set noat
     32.set noreorder
    3233
    33 LIBC_PREFIX = ../../lib/libc
    34 SOFTINT_PREFIX = ../../lib/softint
    35 LIBS = $(LIBC_PREFIX)/libc.a
     34.global stacktrace_prepare
     35.global stacktrace_fp_get
     36.global stacktrace_pc_get
    3637
    37 DEPEND = Makefile.depend
    38 DEPEND_PREV = $(DEPEND).prev
    39 OUTPUT = edit
     38stacktrace_prepare:
     39stacktrace_fp_get:
     40stacktrace_pc_get:
     41        j $ra
     42        xor $v0, $v0
  • uspace/lib/libc/arch/mips32eb/Makefile.inc

    r918e9910 r827d73f  
    3535ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \
    3636        arch/$(UARCH)/src/fibril.S \
    37         arch/$(UARCH)/src/tls.c
     37        arch/$(UARCH)/src/tls.c \
     38        arch/$(UARCH)/src/stacktrace.c \
     39        arch/$(UARCH)/src/stacktrace_asm.S
    3840
    3941GCC_CFLAGS += -mips3
  • uspace/lib/libc/arch/ppc32/Makefile.inc

    r918e9910 r827d73f  
    3636        arch/$(UARCH)/src/fibril.S \
    3737        arch/$(UARCH)/src/tls.c \
    38         arch/$(UARCH)/src/stacktrace.S
     38        arch/$(UARCH)/src/stacktrace.c \
     39        arch/$(UARCH)/src/stacktrace_asm.S
    3940
    4041GCC_CFLAGS += -mcpu=powerpc -msoft-float -m32
  • uspace/lib/libc/arch/ppc32/include/limits.h

    r918e9910 r827d73f  
    2727 */
    2828
    29 /** @addtogroup libcppc32       
     29/** @addtogroup libcppc32
    3030 * @{
    3131 */
     
    4141#define ULONG_MAX MAX_UINT32
    4242
     43#define SIZE_MIN MIN_UINT32
     44#define SIZE_MAX MAX_UINT32
     45#define SSIZE_MIN MIN_INT32
     46#define SSIZE_MAX MAX_INT32
     47
    4348#endif
    4449
  • uspace/lib/libc/arch/ppc32/include/types.h

    r918e9910 r827d73f  
    3636#define LIBC_ppc32_TYPES_H_
    3737
     38#define __32_BITS__
     39
    3840typedef unsigned int sysarg_t;
    3941
  • uspace/lib/libc/arch/ppc32/src/entry.s

    r918e9910 r827d73f  
    3838#
    3939__entry:
     40        #
     41        # Create the first stack frame.
     42        #
     43        li %r3, 0
     44        stw %r3, 0(%r1)
     45        stwu %r1, -16(%r1)
     46
    4047        # Pass the PCB pointer to __main() as the first argument.
    4148        # The first argument is passed in r3.
  • uspace/lib/libc/arch/ppc32/src/stacktrace_asm.S

    r918e9910 r827d73f  
    3131#include <libarch/regname.h>
    3232
    33 .global frame_pointer_get
    34 .global frame_pointer_prev
    35 .global frame_pointer_validate
    36 .global return_address_get
    37 .global program_counter_get
     33.global stacktrace_prepare
     34.global stacktrace_fp_get
     35.global stacktrace_pc_get
    3836
    39 frame_pointer_get:
    40 frame_pointer_prev:
    41 frame_pointer_validate:
    42 return_address_get:
    43 program_counter_get:
    44         li r3, 0
     37stacktrace_prepare:
    4538        blr
     39
     40stacktrace_fp_get:
     41        mr r3, sp
     42        blr
     43
     44stacktrace_pc_get:
     45        mflr r3
     46        blr
  • uspace/lib/libc/arch/ppc32/src/thread_entry.s

    r918e9910 r827d73f  
    3535#
    3636__thread_entry:
     37        #
     38        # Create the first stack frame.
     39        #
     40        li %r4, 0
     41        stw %r4, 0(%r1)
     42        stwu %r1, -16(%r1)
     43
    3744        b __thread_main
    3845
  • uspace/lib/libc/arch/sparc64/Makefile.inc

    r918e9910 r827d73f  
    3535ARCH_SOURCES += arch/$(UARCH)/src/fibril.S \
    3636        arch/$(UARCH)/src/tls.c \
    37         arch/$(UARCH)/src/stacktrace.S
     37        arch/$(UARCH)/src/stacktrace.c \
     38        arch/$(UARCH)/src/stacktrace_asm.S
    3839
    3940GCC_CFLAGS += -mcpu=ultrasparc -m64
  • uspace/lib/libc/arch/sparc64/include/ddi.h

    r918e9910 r827d73f  
    3737#include <libarch/types.h>
    3838
    39 static inline memory_barrier(void)
     39static inline void memory_barrier(void)
    4040{
    41         asm volatile ("membar #LoadLoad | #StoreStore\n" ::: "memory");
     41        asm volatile (
     42                "membar #LoadLoad | #StoreStore\n"
     43                ::: "memory"
     44        );
    4245}
    4346
  • uspace/lib/libc/arch/sparc64/include/fibril.h

    r918e9910 r827d73f  
    4242#define SP_DELTA        (STACK_WINDOW_SAVE_AREA_SIZE + STACK_ARG_SAVE_AREA_SIZE)
    4343
    44 #ifdef context_set
    45 #undef context_set
    46 #endif
    47 
    4844#define context_set(c, _pc, stack, size, ptls) \
    4945        do { \
     
    5248                    STACK_ALIGNMENT) - (STACK_BIAS + SP_DELTA); \
    5349                (c)->fp = -STACK_BIAS; \
    54                 (c)->tp = ptls; \
     50                (c)->tp = (uint64_t) ptls; \
    5551        } while (0)
    5652       
  • uspace/lib/libc/arch/sparc64/include/limits.h

    r918e9910 r827d73f  
    2727 */
    2828
    29 /** @addtogroup libcsparc64     
     29/** @addtogroup libcsparc64
    3030 * @{
    3131 */
     
    4141#define ULONG_MAX MAX_UINT64
    4242
     43#define SIZE_MIN MIN_UINT64
     44#define SIZE_MAX MAX_UINT64
     45#define SSIZE_MIN MIN_INT64
     46#define SSIZE_MAX MAX_INT64
     47
    4348#endif
    4449
  • uspace/lib/libc/arch/sparc64/include/types.h

    r918e9910 r827d73f  
    2727 */
    2828
    29 /** @addtogroup libcsparc64     
     29/** @addtogroup libcsparc64
    3030 * @{
    3131 */
     
    3535#ifndef LIBC_sparc64_TYPES_H_
    3636#define LIBC_sparc64_TYPES_H_
     37
     38#define __64_BITS__
    3739
    3840typedef unsigned long sysarg_t;
  • uspace/lib/libc/arch/sparc64/src/stacktrace_asm.S

    r918e9910 r827d73f  
    2727#
    2828
     29#include <libarch/stack.h>
     30
    2931.text
    3032
    31 .global frame_pointer_get
    32 .global frame_pointer_prev
    33 .global frame_pointer_validate
    34 .global return_address_get
    35 .global program_counter_get
     33.global stacktrace_prepare
     34.global stacktrace_fp_get
     35.global stacktrace_pc_get
    3636
    37 frame_pointer_get:
    38         movq %rbp, %rax
     37stacktrace_prepare:
     38        save %sp, -(STACK_WINDOW_SAVE_AREA_SIZE+STACK_ARG_SAVE_AREA_SIZE), %sp
     39        # Flush all other windows to memory so that we can read their contents.
     40        flushw
    3941        ret
     42        restore
    4043
    41 frame_pointer_prev:
    42         movq (%rdi), %rax
    43         ret
     44stacktrace_fp_get:
     45        # Add the stack bias to %sp to get the actual address.
     46        retl
     47        add %sp, STACK_BIAS, %o0
    4448
    45 frame_pointer_validate:
    46         movq %rdi, %rax
    47         ret
    48 
    49 return_address_get:
    50         movq 8(%rdi), %rax
    51         ret
    52 
    53 program_counter_get:
    54         movq (%rsp), %rax
    55         ret
     49stacktrace_pc_get:
     50        retl
     51        mov %o7, %o0
Note: See TracChangeset for help on using the changeset viewer.