Changeset 04c418d in mainline for uspace/lib
- Timestamp:
- 2011-05-17T07:58:39Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7d521e24
- Parents:
- e913cc9 (diff), 3375bd4 (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. - Location:
- uspace/lib
- Files:
-
- 20 added
- 76 edited
- 10 moved
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/block/libblock.c
re913cc9 r04c418d 51 51 #include <macros.h> 52 52 #include <mem.h> 53 #include <malloc.h> 54 #include <stdio.h> 53 55 #include <sys/typefmt.h> 54 56 #include <stacktrace.h> -
uspace/lib/c/Makefile
re913cc9 r04c418d 41 41 CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config 42 42 43 LINKER_SCRIPTS = \ 44 $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld \ 45 $(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld \ 46 $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld \ 47 $(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld 48 43 49 PRE_DEPEND = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) 44 EXTRA_OUTPUT = $(LINKER_SCRIPT )45 EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) $(LINKER_SCRIPT )50 EXTRA_OUTPUT = $(LINKER_SCRIPTS) 51 EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) $(LINKER_SCRIPTS) 46 52 LIBRARY = libc 53 SLIBRARY = libc.so.0.0 54 LSONAME = libc.so0 55 47 56 48 57 -include $(COMMON_MAKEFILE) 49 58 -include $(CONFIG_MAKEFILE) 50 59 -include arch/$(UARCH)/Makefile.inc 60 61 EXTRA_CFLAGS += -I../../srv/loader/include 51 62 52 63 GENERIC_SOURCES = \ … … 98 109 generic/adt/measured_strings.c \ 99 110 generic/adt/char_map.c \ 111 generic/adt/prodcons.c \ 100 112 generic/time.c \ 101 113 generic/stdlib.c \ … … 114 126 generic/arg_parse.c \ 115 127 generic/sort.c \ 116 generic/stats.c 128 generic/stats.c \ 129 generic/assert.c 130 131 ifeq ($(CONFIG_RTLD), y) 132 GENERIC_SOURCES += \ 133 generic/dlfcn.c \ 134 generic/rtld/rtld.c \ 135 generic/rtld/elf_load.c \ 136 generic/rtld/dynamic.c \ 137 generic/rtld/module.c \ 138 generic/rtld/symbol.c 139 endif 117 140 118 141 SOURCES = \ … … 133 156 ln -sfn ../$< $@ 134 157 135 $(LI NKER_SCRIPT): $(LINKER_SCRIPT).in158 $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in 136 159 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -E -x c $< | grep -v "^\#" > $@ 160 161 $(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in 162 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DLOADER -E -x c $< | grep -v "^\#" > $@ 163 164 $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in 165 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DSHLIB -E -x c $< | grep -v "^\#" > $@ 166 167 $(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in 168 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DDLEXE -E -x c $< | grep -v "^\#" > $@ 137 169 138 170 $(COMMON_HEADER_ARCH): $(COMMON_HEADER) -
uspace/lib/c/arch/abs32le/Makefile.inc
re913cc9 r04c418d 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.c \ 31 arch/$(UARCH)/src/entryjmp.c \ 31 32 arch/$(UARCH)/src/thread_entry.c \ 32 33 arch/$(UARCH)/src/fibril.c \ -
uspace/lib/c/arch/abs32le/_link.ld.in
re913cc9 r04c418d 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70001000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x1000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .text : { 13 25 *(.text .text.*); -
uspace/lib/c/arch/abs32le/src/entryjmp.c
re913cc9 r04c418d 31 31 32 32 #include <bool.h> 33 #include "arch.h"33 #include <entry_point.h> 34 34 35 void program_run(void *entry_point, void *pcb) 35 /** Jump to program entry point. */ 36 void entry_point_jmp(void *entry_point, void *pcb) 36 37 { 37 38 while (true); -
uspace/lib/c/arch/amd64/Makefile.inc
re913cc9 r04c418d 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.S \ -
uspace/lib/c/arch/amd64/_link.ld.in
re913cc9 r04c418d 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 debug PT_NOTE; … … 9 14 10 15 SECTIONS { 16 #ifdef LOADER 17 .interp : { 18 *(.interp); 19 } :interp 20 21 . = 0x70001000 + SIZEOF_HEADERS; 22 #else 11 23 . = 0x1000 + SIZEOF_HEADERS; 12 24 #endif 13 25 .init : { 14 26 *(.init); -
uspace/lib/c/arch/amd64/src/entryjmp.s
re913cc9 r04c418d 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 33 # %rdi contains entry_point 34 34 # %rsi contains pcb 35 35 # 36 # Jump to aprogram entry point37 program_run:36 # Jump to program entry point 37 entry_point_jmp: 38 38 # pcb must be passed in %rdi, use %rdx as a scratch register 39 39 mov %rdi, %rdx -
uspace/lib/c/arch/arm32/Makefile.inc
re913cc9 r04c418d 30 30 ARCH_SOURCES = \ 31 31 arch/$(UARCH)/src/entry.s \ 32 arch/$(UARCH)/src/entryjmp.s \ 32 33 arch/$(UARCH)/src/thread_entry.s \ 33 34 arch/$(UARCH)/src/syscall.c \ -
uspace/lib/c/arch/arm32/_link.ld.in
re913cc9 r04c418d 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70001000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x1000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .init : { 13 25 *(.init); -
uspace/lib/c/arch/arm32/src/entryjmp.s
re913cc9 r04c418d 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 33 # r0 contains entry_point 34 34 # r1 contains pcb 35 35 # 36 # Jump to aprogram entry point37 program_run:36 # Jump to program entry point 37 entry_point_jmp: 38 38 # load ras_page address to r2 39 39 ldr r2, =ras_page -
uspace/lib/c/arch/ia32/Makefile.common
re913cc9 r04c418d 28 28 29 29 CLANG_ARCH = i386 30 GCC_CFLAGS += -march=pentium 30 GCC_CFLAGS += -march=pentium -fno-omit-frame-pointer 31 31 32 32 ENDIANESS = LE -
uspace/lib/c/arch/ia32/Makefile.inc
re913cc9 r04c418d 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.S \ … … 35 36 arch/$(UARCH)/src/setjmp.S \ 36 37 arch/$(UARCH)/src/stacktrace.c \ 37 arch/$(UARCH)/src/stacktrace_asm.S 38 arch/$(UARCH)/src/stacktrace_asm.S \ 39 arch/$(UARCH)/src/rtld/dynamic.c \ 40 arch/$(UARCH)/src/rtld/reloc.c 38 41 39 42 .PRECIOUS: arch/$(UARCH)/src/entry.o -
uspace/lib/c/arch/ia32/_link.ld.in
re913cc9 r04c418d 1 #ifndef SHLIB 1 2 STARTUP(LIBC_PATH/arch/UARCH/src/entry.o) 2 3 ENTRY(__entry) 4 #endif 3 5 4 6 PHDRS { 7 #if defined(LOADER) || defined(DLEXE) 8 interp PT_INTERP; 9 text PT_LOAD FILEHDR PHDRS FLAGS(5); 10 #else 5 11 text PT_LOAD FLAGS(5); 12 #endif 6 13 data PT_LOAD FLAGS(6); 14 #if defined(SHLIB) || defined(DLEXE) 15 dynamic PT_DYNAMIC; 16 #endif 7 17 debug PT_NOTE; 8 18 } 9 19 10 20 SECTIONS { 21 #if defined(LOADER) || defined(DLEXE) 22 .interp : { 23 *(.interp); 24 } :interp 25 #endif 26 #ifdef LOADER 27 . = 0x70001000 + SIZEOF_HEADERS; 28 #else 11 29 . = 0x1000 + SIZEOF_HEADERS; 12 30 #endif 13 31 .init : { 14 32 *(.init); … … 19 37 *(.rodata .rodata.*); 20 38 } :text 39 40 #if defined(SHLIB) || defined(DLEXE) 41 .rel.plt : { 42 *(.rel.plt); 43 } 44 /* 45 *.rel.dyn MUST FOLLOW IMMEDIATELY after .rel.plt 46 * without alignment gap or DT_REL will be broken 47 */ 48 .rel.dyn : { 49 *(.rel.*); 50 } :text 21 51 52 .plt : { 53 *(.plt); 54 } :text 55 56 .dynsym : { 57 *(.dynsym); 58 } :text 59 60 .dynstr : { 61 *(.dynstr); 62 } :text 63 64 .hash : { 65 *(.hash); 66 } :text 67 #endif 22 68 . = . + 0x1000; 69 70 #if defined(SHLIB) || defined(DLEXE) 71 .dynamic : { 72 *(.dynamic); 73 } :data :dynamic 74 #endif 23 75 24 76 .data : { … … 26 78 } :data 27 79 80 #if defined(SHLIB) || defined(DLEXE) 81 .data.rel : { 82 *(.data.rel .data.rel.*); 83 } :data 84 85 .got : { 86 *(.got); 87 } :data 88 .got.plt : { 89 *(.got.plt); 90 } :data 91 #endif 92 93 #ifndef DLEXE 28 94 .tdata : { 29 95 _tdata_start = .; … … 37 103 38 104 _tls_alignment = ALIGNOF(.tdata); 105 #endif 39 106 40 107 .bss : { 108 *(.dynbss); 41 109 *(COMMON); 42 110 *(.bss); -
uspace/lib/c/arch/ia32/include/config.h
re913cc9 r04c418d 36 36 #define LIBC_ia32_CONFIG_H_ 37 37 38 #define PAGE_WIDTH 12 39 #define PAGE_SIZE (1 << PAGE_WIDTH) 38 #define PAGE_WIDTH 12 39 #define PAGE_SIZE (1 << PAGE_WIDTH) 40 41 #define USER_ADDRESS_SPACE_START_ARCH UINT32_C(0x00000000) 42 #define USER_ADDRESS_SPACE_END_ARCH UINT32_C(0x7fffffff) 40 43 41 44 #endif -
uspace/lib/c/arch/ia32/include/ddi.h
re913cc9 r04c418d 37 37 #include <libarch/types.h> 38 38 39 #define IO_SPACE_BOUNDARY 39 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024)) 40 40 41 41 static inline uint8_t pio_read_8(ioport8_t *port) -
uspace/lib/c/arch/ia32/include/faddr.h
re913cc9 r04c418d 38 38 #include <libarch/types.h> 39 39 40 #define FADDR(fptr) 40 #define FADDR(fptr) ((uintptr_t) (fptr)) 41 41 42 42 #endif -
uspace/lib/c/arch/ia32/include/fibril.h
re913cc9 r04c418d 42 42 * panic sooner or later 43 43 */ 44 #define SP_DELTA (12)44 #define SP_DELTA 12 45 45 46 46 #define context_set(c, _pc, stack, size, ptls) \ … … 51 51 (c)->ebp = 0; \ 52 52 } while (0) 53 54 /* We include only registers that must be preserved 53 54 /* 55 * We include only registers that must be preserved 55 56 * during function call 56 57 */ -
uspace/lib/c/arch/ia32/include/rtld/dynamic.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup fs29 /** @addtogroup generic 30 30 * @{ 31 31 */ 32 32 /** @file 33 * @brief34 33 */ 35 34 36 #ifndef L OADER_ARCH_H_37 #define L OADER_ARCH_H_35 #ifndef LIBC_ia32_RTLD_DYNAMIC_H_ 36 #define LIBC_ia32_RTLD_DYNAMIC_H_ 38 37 39 extern void program_run(void *entry_point, void *pcb); 38 #include <sys/types.h> 39 40 typedef struct { 41 /* Empty. */ 42 } dyn_info_arch_t; 40 43 41 44 #endif 42 45 43 /** 44 * @} 46 /** @} 45 47 */ -
uspace/lib/c/arch/ia32/src/entryjmp.s
re913cc9 r04c418d 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 # Jump to aprogram entry point34 program_run:33 # Jump to program entry point 34 entry_point_jmp: 35 35 # Use standard ia32 prologue not to confuse anybody 36 36 push %ebp -
uspace/lib/c/arch/ia32/src/stacktrace.c
re913cc9 r04c418d 35 35 */ 36 36 37 #include <libarch/config.h> 37 38 #include <sys/types.h> 38 39 #include <bool.h> 39 40 40 #include <stacktrace.h> 41 41 42 #define FRAME_OFFSET_FP_PREV 43 #define FRAME_OFFSET_RA 42 #define FRAME_OFFSET_FP_PREV 0 43 #define FRAME_OFFSET_RA 4 44 44 45 45 bool stacktrace_fp_valid(stacktrace_t *st, uintptr_t fp) 46 46 { 47 47 (void) st; 48 return fp != 0;48 return (fp != 0) && (fp <= USER_ADDRESS_SPACE_END_ARCH); 49 49 } 50 50 -
uspace/lib/c/arch/ia32/src/syscall.S
re913cc9 r04c418d 32 32 __syscall_fast_func: 33 33 .long __syscall_slow 34 .size __syscall_fast_func, . - __syscall_fast_func 34 35 35 36 .text … … 71 72 */ 72 73 .global __syscall_fast 74 .type __syscall_fast, @function 75 73 76 __syscall_fast: 74 77 pushl %ebx … … 95 98 popl %ebx 96 99 ret 100 101 .size __syscall_fast, . - __syscall_fast -
uspace/lib/c/arch/ia32/src/tls.c
re913cc9 r04c418d 37 37 #include <tls.h> 38 38 #include <sys/types.h> 39 #include <align.h> 39 40 40 41 tcb_t * __alloc_tls(void **data, size_t size) … … 48 49 } 49 50 51 /* 52 * Rtld TLS support 53 */ 54 55 typedef struct { 56 unsigned long int ti_module; 57 unsigned long int ti_offset; 58 } tls_index; 59 60 void __attribute__ ((__regparm__ (1))) 61 *___tls_get_addr(tls_index *ti); 62 63 void __attribute__ ((__regparm__ (1))) 64 *___tls_get_addr(tls_index *ti) 65 { 66 size_t tls_size; 67 uint8_t *tls; 68 69 /* Calculate size of TLS block */ 70 tls_size = ALIGN_UP(&_tbss_end - &_tdata_start, &_tls_alignment); 71 72 /* The TLS block is just before TCB */ 73 tls = (uint8_t *)__tcb_get() - tls_size; 74 75 return tls + ti->ti_offset; 76 } 77 50 78 /** @} 51 79 */ -
uspace/lib/c/arch/ia64/Makefile.inc
re913cc9 r04c418d 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.S \ -
uspace/lib/c/arch/ia64/_link.ld.in
re913cc9 r04c418d 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 5 7 text PT_LOAD FLAGS(5); 8 #else 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x800000000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x4000 + SIZEOF_HEADERS; 11 23 #endif 24 /* 25 * XXX This is just a work around. Problem: .init section does not 26 * have the proper alignment. 27 */ 28 . = ALIGN(., 16); 29 12 30 .init : { 13 31 *(.init); … … 22 40 23 41 .got : { 24 _gp = .; 42 /* Tell the linker where we expect GP to point. */ 43 __gp = .; 25 44 *(.got .got.*); 26 45 } :data -
uspace/lib/c/arch/ia64/src/entry.s
re913cc9 r04c418d 39 39 __entry: 40 40 alloc loc0 = ar.pfs, 0, 1, 2, 0 41 movl gp = _ gp41 movl gp = __gp 42 42 43 43 # Pass PCB pointer as the first argument to __main -
uspace/lib/c/arch/ia64/src/entryjmp.s
re913cc9 r04c418d 28 28 29 29 .text 30 .globl program_run30 .globl entry_point_jmp 31 31 32 ## void program_run(void *entry_point, void *pcb);32 ## void entry_point_jmp(void *entry_point, void *pcb); 33 33 # 34 34 # in0 (r32) contains entry_point 35 35 # in1 (r33) contains pcb 36 36 # 37 # Jump to aprogram entry point38 program_run:37 # Jump to program entry point 38 entry_point_jmp: 39 39 # Pass pcb to the entry point in r2 40 40 -
uspace/lib/c/arch/ia64/src/thread_entry.s
re913cc9 r04c418d 37 37 alloc loc0 = ar.pfs, 0, 1, 1, 0 38 38 39 movl gp = _ gp39 movl gp = __gp 40 40 41 41 # -
uspace/lib/c/arch/mips32/Makefile.inc
re913cc9 r04c418d 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.c \ -
uspace/lib/c/arch/mips32/_link.ld.in
re913cc9 r04c418d 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70004000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x4000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .init : { 13 25 *(.init); -
uspace/lib/c/arch/mips32/src/entryjmp.s
re913cc9 r04c418d 29 29 .text 30 30 .section .text 31 .global program_run31 .global entry_point_jmp 32 32 .set noreorder 33 33 34 ## void program_run(void *entry_point, void *pcb);34 ## void entry_point_jmp(void *entry_point, void *pcb); 35 35 # 36 36 # $a0 (=$4) contains entry_point 37 37 # $a1 (=$5) contains pcb 38 38 # 39 # Jump to aprogram entry point40 .ent program_run41 program_run:39 # Jump to program entry point 40 .ent entry_point_jmp 41 entry_point_jmp: 42 42 # tmp := entry_point 43 43 move $25, $a0 -
uspace/lib/c/arch/mips32eb/Makefile.inc
re913cc9 r04c418d 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.c \ -
uspace/lib/c/arch/ppc32/Makefile.inc
re913cc9 r04c418d 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/syscall.c \ -
uspace/lib/c/arch/ppc32/_link.ld.in
re913cc9 r04c418d 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70001000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x1000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .init : { 13 25 *(.init); -
uspace/lib/c/arch/ppc32/src/entryjmp.s
re913cc9 r04c418d 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 33 # %r3 contains entry_point 34 34 # %r4 contains pcb 35 35 # 36 # Jump to aprogram entry point37 program_run:36 # Jump to program entry point 37 entry_point_jmp: 38 38 mtctr %r3 39 39 mr %r6, %r4 # Pass pcb to the entry point in %r6 -
uspace/lib/c/arch/sparc64/Makefile.inc
re913cc9 r04c418d 29 29 ARCH_SOURCES = \ 30 30 arch/$(UARCH)/src/entry.s \ 31 arch/$(UARCH)/src/entryjmp.s \ 31 32 arch/$(UARCH)/src/thread_entry.s \ 32 33 arch/$(UARCH)/src/fibril.S \ -
uspace/lib/c/arch/sparc64/_link.ld.in
re913cc9 r04c418d 3 3 4 4 PHDRS { 5 #ifdef LOADER 6 interp PT_INTERP; 7 text PT_LOAD FILEHDR PHDRS FLAGS(5); 8 #else 5 9 text PT_LOAD FLAGS(5); 10 #endif 6 11 data PT_LOAD FLAGS(6); 7 12 } 8 13 9 14 SECTIONS { 15 #ifdef LOADER 16 .interp : { 17 *(.interp); 18 } :interp 19 20 . = 0x70004000 + SIZEOF_HEADERS; 21 #else 10 22 . = 0x4000 + SIZEOF_HEADERS; 11 23 #endif 12 24 .init : { 13 25 *(.init); -
uspace/lib/c/arch/sparc64/src/entryjmp.s
re913cc9 r04c418d 27 27 # 28 28 29 .globl program_run29 .globl entry_point_jmp 30 30 31 ## void program_run(void *entry_point, void *pcb);31 ## void entry_point_jmp(void *entry_point, void *pcb); 32 32 # 33 33 # %o0 contains entry_point 34 34 # %o1 contains pcb 35 35 # 36 # Jump to aprogram entry point37 program_run:36 # Jump to program entry point 37 entry_point_jmp: 38 38 # Pass pcb pointer to entry point in %o1. As it is already 39 39 # there, no action is needed. -
uspace/lib/c/generic/as.c
re913cc9 r04c418d 52 52 * 53 53 */ 54 void *as_area_create(void *address, size_t size, int flags)54 void *as_area_create(void *address, size_t size, unsigned int flags) 55 55 { 56 56 return (void *) __SYSCALL3(SYS_AS_AREA_CREATE, (sysarg_t) address, … … 68 68 * 69 69 */ 70 int as_area_resize(void *address, size_t size, int flags)70 int as_area_resize(void *address, size_t size, unsigned int flags) 71 71 { 72 72 return __SYSCALL3(SYS_AS_AREA_RESIZE, (sysarg_t) address, … … 96 96 * 97 97 */ 98 int as_area_change_flags(void *address, int flags)98 int as_area_change_flags(void *address, unsigned int flags) 99 99 { 100 100 return __SYSCALL2(SYS_AS_AREA_CHANGE_FLAGS, (sysarg_t) address, -
uspace/lib/c/generic/async.c
re913cc9 r04c418d 102 102 #include <arch/barrier.h> 103 103 #include <bool.h> 104 #include <stdlib.h> 105 #include <malloc.h> 104 106 #include "private/async.h" 105 107 -
uspace/lib/c/generic/async_sess.c
re913cc9 r04c418d 105 105 #include <errno.h> 106 106 #include <assert.h> 107 #include <async.h> 107 108 #include "private/async_sess.h" 108 109 -
uspace/lib/c/generic/errno.c
re913cc9 r04c418d 36 36 #include <fibril.h> 37 37 38 int _errno; 38 static fibril_local int fibril_errno; 39 40 int *__errno(void) 41 { 42 return &fibril_errno; 43 } 39 44 40 45 /** @} -
uspace/lib/c/generic/event.c
re913cc9 r04c418d 41 41 #include <kernel/ipc/event_types.h> 42 42 43 /** Subscribe forevent notifications.43 /** Subscribe event notifications. 44 44 * 45 * @param evno Event number.46 * @param method Use thismethod for notifying me.45 * @param evno Event type to subscribe. 46 * @param imethod Use this interface and method for notifying me. 47 47 * 48 48 * @return Value returned by the kernel. 49 * 49 50 */ 50 int event_subscribe(event_type_t e , sysarg_tmethod)51 int event_subscribe(event_type_t evno, sysarg_t imethod) 51 52 { 52 return __SYSCALL2(SYS_EVENT_SUBSCRIBE, (sysarg_t) e, (sysarg_t) method); 53 return __SYSCALL2(SYS_EVENT_SUBSCRIBE, (sysarg_t) evno, 54 (sysarg_t) imethod); 55 } 56 57 /** Unmask event notifications. 58 * 59 * @param evno Event type to unmask. 60 * 61 * @return Value returned by the kernel. 62 * 63 */ 64 int event_unmask(event_type_t evno) 65 { 66 return __SYSCALL1(SYS_EVENT_UNMASK, (sysarg_t) evno); 53 67 } 54 68 -
uspace/lib/c/generic/fibril_synch.c
re913cc9 r04c418d 43 43 #include <stacktrace.h> 44 44 #include <stdlib.h> 45 #include <stdio.h> 45 46 #include "private/async.h" 46 47 -
uspace/lib/c/generic/io/io.c
re913cc9 r04c418d 173 173 } 174 174 *flags = (O_APPEND | O_CREAT) | (plus ? O_RDWR : O_WRONLY); 175 break; 175 176 default: 176 177 errno = EINVAL; -
uspace/lib/c/generic/libc.c
re913cc9 r04c418d 53 53 #include "private/io.h" 54 54 55 #ifdef CONFIG_RTLD 56 #include <rtld/rtld.h> 57 #endif 58 55 59 static bool env_setup = false; 56 60 … … 77 81 char **argv; 78 82 83 #ifdef __IN_SHARED_LIBC__ 84 if (__pcb != NULL && __pcb->rtld_runtime != NULL) { 85 runtime_env = (runtime_env_t *) __pcb->rtld_runtime; 86 } 87 #endif 79 88 /* 80 89 * Get command line arguments and initialize -
uspace/lib/c/generic/malloc.c
re913cc9 r04c418d 44 44 #include <mem.h> 45 45 #include <futex.h> 46 #include <stdlib.h> 46 47 #include <adt/gcdlcm.h> 47 48 #include "private/malloc.h" -
uspace/lib/c/generic/stacktrace.c
re913cc9 r04c418d 61 61 stacktrace_prepare(); 62 62 stacktrace_print_fp_pc(stacktrace_fp_get(), stacktrace_pc_get()); 63 63 64 /* 64 65 * Prevent the tail call optimization of the previous call by 65 66 * making it a non-tail call. 66 67 */ 67 (void) stacktrace_fp_get(); 68 69 printf("-- end of stack trace --\n"); 68 70 } 69 71 -
uspace/lib/c/generic/str.c
re913cc9 r04c418d 1215 1215 void order_suffix(const uint64_t val, uint64_t *rv, char *suffix) 1216 1216 { 1217 if (val > 10000000000000000000ULL) {1218 *rv = val / 1000000000000000000ULL;1217 if (val > UINT64_C(10000000000000000000)) { 1218 *rv = val / UINT64_C(1000000000000000000); 1219 1219 *suffix = 'Z'; 1220 } else if (val > 1000000000000000000ULL) {1221 *rv = val / 1000000000000000ULL;1220 } else if (val > UINT64_C(1000000000000000000)) { 1221 *rv = val / UINT64_C(1000000000000000); 1222 1222 *suffix = 'E'; 1223 } else if (val > 1000000000000000ULL) {1224 *rv = val / 1000000000000ULL;1223 } else if (val > UINT64_C(1000000000000000)) { 1224 *rv = val / UINT64_C(1000000000000); 1225 1225 *suffix = 'T'; 1226 } else if (val > 1000000000000ULL) {1227 *rv = val / 1000000000ULL;1226 } else if (val > UINT64_C(1000000000000)) { 1227 *rv = val / UINT64_C(1000000000); 1228 1228 *suffix = 'G'; 1229 } else if (val > 1000000000ULL) {1230 *rv = val / 1000000ULL;1229 } else if (val > UINT64_C(1000000000)) { 1230 *rv = val / UINT64_C(1000000); 1231 1231 *suffix = 'M'; 1232 } else if (val > 1000000ULL) {1233 *rv = val / 1000ULL;1232 } else if (val > UINT64_C(1000000)) { 1233 *rv = val / UINT64_C(1000); 1234 1234 *suffix = 'k'; 1235 1235 } else { … … 1239 1239 } 1240 1240 1241 void bin_order_suffix(const uint64_t val, uint64_t *rv, const char **suffix, 1242 bool fixed) 1243 { 1244 if (val > UINT64_C(1152921504606846976)) { 1245 *rv = val / UINT64_C(1125899906842624); 1246 *suffix = "EiB"; 1247 } else if (val > UINT64_C(1125899906842624)) { 1248 *rv = val / UINT64_C(1099511627776); 1249 *suffix = "TiB"; 1250 } else if (val > UINT64_C(1099511627776)) { 1251 *rv = val / UINT64_C(1073741824); 1252 *suffix = "GiB"; 1253 } else if (val > UINT64_C(1073741824)) { 1254 *rv = val / UINT64_C(1048576); 1255 *suffix = "MiB"; 1256 } else if (val > UINT64_C(1048576)) { 1257 *rv = val / UINT64_C(1024); 1258 *suffix = "KiB"; 1259 } else { 1260 *rv = val; 1261 if (fixed) 1262 *suffix = "B "; 1263 else 1264 *suffix = "B"; 1265 } 1266 } 1267 1241 1268 /** @} 1242 1269 */ -
uspace/lib/c/generic/time.c
re913cc9 r04c418d 207 207 } 208 208 209 void udelay(useconds_t time) 210 { 211 (void) __SYSCALL1(SYS_THREAD_UDELAY, (sysarg_t) time); 212 } 213 214 209 215 /** Wait unconditionally for specified number of seconds 210 216 * -
uspace/lib/c/include/adt/fifo.h
re913cc9 r04c418d 51 51 typedef unsigned long fifo_index_t; 52 52 53 #define FIFO_CREATE_STATIC(name, t, itms) 54 struct { 55 t fifo[(itms)]; 56 fifo_count_t items; 57 fifo_index_t head; 58 fifo_index_t tail; 53 #define FIFO_CREATE_STATIC(name, t, itms) \ 54 struct { \ 55 t fifo[(itms)]; \ 56 fifo_count_t items; \ 57 fifo_index_t head; \ 58 fifo_index_t tail; \ 59 59 } name 60 60 -
uspace/lib/c/include/adt/list.h
re913cc9 r04c418d 47 47 * 48 48 * @param name Name of the new statically allocated list. 49 * 49 50 */ 50 51 #define LIST_INITIALIZE(name) link_t name = { \ … … 58 59 * 59 60 * @param link Pointer to link_t structure to be initialized. 61 * 60 62 */ 61 63 static inline void link_initialize(link_t *link) … … 70 72 * 71 73 * @param head Pointer to link_t structure representing head of the list. 74 * 72 75 */ 73 76 static inline void list_initialize(link_t *head) … … 83 86 * @param link Pointer to link_t structure to be added. 84 87 * @param head Pointer to link_t structure representing head of the list. 88 * 85 89 */ 86 90 static inline void list_prepend(link_t *link, link_t *head) … … 98 102 * @param link Pointer to link_t structure to be added. 99 103 * @param head Pointer to link_t structure representing head of the list. 104 * 100 105 */ 101 106 static inline void list_append(link_t *link, link_t *head) … … 123 128 * Remove item from doubly-linked circular list. 124 129 * 125 * @param link Pointer to link_t structure to be removed from the list it is contained in. 130 * @param link Pointer to link_t structure to be removed from the list 131 * it is contained in. 132 * 126 133 */ 127 134 static inline void list_remove(link_t *link) … … 137 144 * 138 145 * @param head Pointer to link_t structure representing head of the list. 146 * 139 147 */ 140 148 static inline int list_empty(link_t *head) … … 142 150 return ((head->next == head) ? 1 : 0); 143 151 } 144 145 152 146 153 /** Split or concatenate headless doubly-linked circular list … … 151 158 * concatenates splitted lists and splits concatenated lists. 152 159 * 153 * @param part1 Pointer to link_t structure leading the first (half of the headless) list. 154 * @param part2 Pointer to link_t structure leading the second (half of the headless) list. 160 * @param part1 Pointer to link_t structure leading the first 161 * (half of the headless) list. 162 * @param part2 Pointer to link_t structure leading the second 163 * (half of the headless) list. 164 * 155 165 */ 156 166 static inline void headless_list_split_or_concat(link_t *part1, link_t *part2) … … 165 175 } 166 176 167 168 177 /** Split headless doubly-linked circular list 169 178 * 170 179 * Split headless doubly-linked circular list. 171 180 * 172 * @param part1 Pointer to link_t structure leading the first half of the headless list. 173 * @param part2 Pointer to link_t structure leading the second half of the headless list. 181 * @param part1 Pointer to link_t structure leading 182 * the first half of the headless list. 183 * @param part2 Pointer to link_t structure leading 184 * the second half of the headless list. 185 * 174 186 */ 175 187 static inline void headless_list_split(link_t *part1, link_t *part2) … … 182 194 * Concatenate two headless doubly-linked circular lists. 183 195 * 184 * @param part1 Pointer to link_t structure leading the first headless list. 185 * @param part2 Pointer to link_t structure leading the second headless list. 196 * @param part1 Pointer to link_t structure leading 197 * the first headless list. 198 * @param part2 Pointer to link_t structure leading 199 * the second headless list. 200 * 186 201 */ 187 202 static inline void headless_list_concat(link_t *part1, link_t *part2) … … 190 205 } 191 206 192 #define list_get_instance(link, type, member) ((type *) (((void *)(link)) - ((void *) &(((type *) NULL)->member)))) 193 194 extern int list_member(const link_t *link, const link_t *head); 195 extern void list_concat(link_t *head1, link_t *head2); 196 extern unsigned int list_count(const link_t *link); 207 #define list_get_instance(link, type, member) \ 208 ((type *) (((void *)(link)) - ((void *) &(((type *) NULL)->member)))) 209 210 #define list_foreach(list, iterator) \ 211 for (link_t *iterator = (list).next; \ 212 iterator != &(list); iterator = iterator->next) 213 214 extern int list_member(const link_t *, const link_t *); 215 extern void list_concat(link_t *, link_t *); 216 extern unsigned int list_count(const link_t *); 197 217 198 218 #endif -
uspace/lib/c/include/adt/measured_strings.h
re913cc9 r04c418d 61 61 extern measured_string_t *measured_string_create_bulk(const uint8_t *, size_t); 62 62 extern measured_string_t *measured_string_copy(measured_string_t *); 63 63 64 extern int measured_strings_receive(measured_string_t **, uint8_t **, size_t); 64 65 extern int measured_strings_reply(const measured_string_t *, size_t); -
uspace/lib/c/include/as.h
re913cc9 r04c418d 54 54 } 55 55 56 extern void *as_area_create(void * address, size_t size, int flags);57 extern int as_area_resize(void * address, size_t size, int flags);58 extern int as_area_change_flags(void * address, int flags);59 extern int as_area_destroy(void * address);60 extern void *set_maxheapsize(size_t mhs);61 extern void * as_get_mappable_page(size_t sz);62 extern int as_get_physical_mapping(void * address, uintptr_t *frame);56 extern void *as_area_create(void *, size_t, unsigned int); 57 extern int as_area_resize(void *, size_t, unsigned int); 58 extern int as_area_change_flags(void *, unsigned int); 59 extern int as_area_destroy(void *); 60 extern void *set_maxheapsize(size_t); 61 extern void * as_get_mappable_page(size_t); 62 extern int as_get_physical_mapping(void *, uintptr_t *); 63 63 64 64 #endif -
uspace/lib/c/include/assert.h
re913cc9 r04c418d 40 40 * 41 41 * If NDEBUG is not set, the assert() macro 42 * evaluates expr and if it is false prints 42 * evaluates expr and if it is false prints 43 43 * error message and terminate program. 44 44 * … … 47 47 */ 48 48 49 #include <stdio.h>50 #include <stdlib.h>51 52 49 #ifndef NDEBUG 53 50 54 51 #define assert(expr) \ 55 52 do { \ 56 if (!(expr)) { \ 57 printf("Assertion failed (%s) at file '%s', " \ 58 "line %d.\n", #expr, __FILE__, __LINE__); \ 59 abort(); \ 60 } \ 53 if (!(expr)) \ 54 assert_abort(#expr, __FILE__, __LINE__); \ 61 55 } while (0) 62 56 … … 67 61 #endif /* NDEBUG */ 68 62 63 extern void assert_abort(const char *, const char *, unsigned int) 64 __attribute__((noreturn)); 65 69 66 #endif 70 67 -
uspace/lib/c/include/entry_point.h
re913cc9 r04c418d 1 1 /* 2 * Copyright (c) 20 06 Jakub Jermar2 * Copyright (c) 2011 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup sparc64mm29 /** @addtogroup libc 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 #ifndef KERN_sparc64_CACHE_H_36 #define KERN_sparc64_CACHE_H_35 #ifndef LIBC_ENTRY_POINT_H_ 36 #define LIBC_ENTRY_POINT_H_ 37 37 38 #include <mm/page.h> 39 #include <mm/frame.h> 38 /* Defined in arch/ARCH/src/entryjmp.[c|s] */ 39 void entry_point_jmp(void *, void *); 40 40 41 41 #endif -
uspace/lib/c/include/errno.h
re913cc9 r04c418d 39 39 #include <fibril.h> 40 40 41 #define errno _errno41 #define errno (*(__errno())) 42 42 43 extern int _errno;43 extern int *__errno(void) __attribute__((const)); 44 44 45 45 #define EMFILE (-18) -
uspace/lib/c/include/event.h
re913cc9 r04c418d 39 39 40 40 extern int event_subscribe(event_type_t, sysarg_t); 41 extern int event_unmask(event_type_t); 41 42 42 43 #endif -
uspace/lib/c/include/fibril.h
re913cc9 r04c418d 70 70 int (*func)(void *); 71 71 tcb_t *tcb; 72 72 73 73 struct fibril *clean_after_me; 74 74 int retval; 75 75 int flags; 76 76 77 77 fibril_owner_info_t *waits_for; 78 78 } fibril_t; -
uspace/lib/c/include/fibril_synch.h
re913cc9 r04c418d 36 36 #define LIBC_FIBRIL_SYNCH_H_ 37 37 38 #include <async.h>39 38 #include <fibril.h> 40 39 #include <adt/list.h> 41 40 #include <libarch/tls.h> 42 41 #include <sys/time.h> 42 #include <bool.h> 43 43 44 44 typedef struct { 45 fibril_owner_info_t oi; /*Keep this the first thing. */45 fibril_owner_info_t oi; /**< Keep this the first thing. */ 46 46 int counter; 47 47 link_t waiters; … … 64 64 65 65 typedef struct { 66 fibril_owner_info_t oi; /*Keep this the first thing. */66 fibril_owner_info_t oi; /**< Keep this the first thing. */ 67 67 unsigned writers; 68 68 unsigned readers; -
uspace/lib/c/include/loader/pcb.h
re913cc9 r04c418d 72 72 /** Pointer to ELF dynamic section of the program. */ 73 73 void *dynamic; 74 /** Pointer to dynamic linker state structure (runtime_env_t). */ 75 void *rtld_runtime; 74 76 } pcb_t; 75 77 -
uspace/lib/c/include/macros.h
re913cc9 r04c418d 39 39 #define max(a, b) ((a) > (b) ? (a) : (b)) 40 40 41 #define SIZE2KB(size) ((size) >> 10) 42 #define SIZE2MB(size) ((size) >> 20) 43 44 #define KB2SIZE(kb) ((kb) << 10) 45 #define MB2SIZE(mb) ((mb) << 20) 41 #define KiB2SIZE(kb) ((kb) << 10) 42 #define MiB2SIZE(mb) ((mb) << 20) 46 43 47 44 #define STRING(arg) STRING_ARG(arg) -
uspace/lib/c/include/str.h
re913cc9 r04c418d 89 89 extern int str_size_t(const char *, char **, unsigned int, bool, size_t *); 90 90 91 extern void order_suffix(const uint64_t val, uint64_t *rv, char *suffix); 91 extern void order_suffix(const uint64_t, uint64_t *, char *); 92 extern void bin_order_suffix(const uint64_t, uint64_t *, const char **, bool); 92 93 93 94 /* -
uspace/lib/c/include/sys/time.h
re913cc9 r04c418d 62 62 extern int gettimeofday(struct timeval *tv, struct timezone *tz); 63 63 64 extern void udelay(useconds_t); 65 64 66 #endif 65 67 -
uspace/lib/softfloat/generic/add.c
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 #include <sftypes.h>36 #include <add.h>37 #include <comparison.h>35 #include <sftypes.h> 36 #include <add.h> 37 #include <comparison.h> 38 38 39 39 /** Add two Float32 numbers with same signs … … 139 139 a.parts.exp = exp1; 140 140 141 /* Clear hidden bit and shift */141 /* Clear hidden bit and shift */ 142 142 a.parts.fraction = ((frac1 >> 6) & (~FLOAT32_HIDDEN_BIT_MASK)) ; 143 143 return a; 144 144 } 145 146 145 147 146 /** Add two Float64 numbers with same signs … … 250 249 251 250 a.parts.exp = exp1; 252 /* Clear hidden bit and shift */251 /* Clear hidden bit and shift */ 253 252 a.parts.fraction = ( (frac1 >> 6 ) & (~FLOAT64_HIDDEN_BIT_MASK)); 254 253 -
uspace/lib/softfloat/generic/common.c
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 #include <sftypes.h>36 #include <common.h>35 #include <sftypes.h> 36 #include <common.h> 37 37 38 38 /* Table for fast leading zeroes counting */ … … 213 213 /** @} 214 214 */ 215 -
uspace/lib/softfloat/generic/comparison.c
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 #include <sftypes.h>36 #include <comparison.h>35 #include <sftypes.h> 36 #include <comparison.h> 37 37 38 inline int isFloat32NaN(float32 f) 39 { /* NaN : exp = 0xff and nonzero fraction */ 40 return ((f.parts.exp==0xFF)&&(f.parts.fraction)); 38 /* NaN : exp = 0xff and nonzero fraction */ 39 int isFloat32NaN(float32 f) 40 { 41 return ((f.parts.exp == 0xFF) && (f.parts.fraction)); 41 42 } 42 43 43 inline int isFloat64NaN(float64 d) 44 { /* NaN : exp = 0x7ff and nonzero fraction */ 45 return ((d.parts.exp==0x7FF)&&(d.parts.fraction)); 44 /* NaN : exp = 0x7ff and nonzero fraction */ 45 int isFloat64NaN(float64 d) 46 { 47 return ((d.parts.exp == 0x7FF) && (d.parts.fraction)); 46 48 } 47 49 48 inline int isFloat32SigNaN(float32 f) 49 { /* SigNaN : exp = 0xff fraction = 0xxxxx..x (binary), where at least one x is nonzero */ 50 return ((f.parts.exp==0xFF)&&(f.parts.fraction<0x400000)&&(f.parts.fraction)); 50 /* SigNaN : exp = 0xff fraction = 0xxxxx..x (binary), where at least one x is nonzero */ 51 int isFloat32SigNaN(float32 f) 52 { 53 return ((f.parts.exp == 0xFF) && (f.parts.fraction < 0x400000) && (f.parts.fraction)); 51 54 } 52 55 53 inline int isFloat64SigNaN(float64 d) 54 { /* SigNaN : exp = 0x7ff fraction = 0xxxxx..x (binary), where at least one x is nonzero */ 55 return ((d.parts.exp==0x7FF)&&(d.parts.fraction)&&(d.parts.fraction<0x8000000000000ll)); 56 /* SigNaN : exp = 0x7ff fraction = 0xxxxx..x (binary), where at least one x is nonzero */ 57 int isFloat64SigNaN(float64 d) 58 { 59 return ((d.parts.exp == 0x7FF) && (d.parts.fraction) && (d.parts.fraction < 0x8000000000000ll)); 56 60 } 57 61 58 in line int isFloat32Infinity(float32 f)62 int isFloat32Infinity(float32 f) 59 63 { 60 return ((f.parts.exp ==0xFF)&&(f.parts.fraction==0x0));64 return ((f.parts.exp == 0xFF) && (f.parts.fraction == 0x0)); 61 65 } 62 66 63 in line int isFloat64Infinity(float64 d)67 int isFloat64Infinity(float64 d) 64 68 { 65 return ((d.parts.exp ==0x7FF)&&(d.parts.fraction==0x0));69 return ((d.parts.exp == 0x7FF) && (d.parts.fraction == 0x0)); 66 70 } 67 71 68 in line int isFloat32Zero(float32 f)72 int isFloat32Zero(float32 f) 69 73 { 70 74 return (((f.binary) & 0x7FFFFFFF) == 0); 71 75 } 72 76 73 in line int isFloat64Zero(float64 d)77 int isFloat64Zero(float64 d) 74 78 { 75 79 return (((d.binary) & 0x7FFFFFFFFFFFFFFFll) == 0); … … 77 81 78 82 /** 79 * @return 1 , if both floats are equal - but NaNs are not recognized83 * @return 1 if both floats are equal - but NaNs are not recognized 80 84 */ 81 in line int isFloat32eq(float32 a, float32 b)85 int isFloat32eq(float32 a, float32 b) 82 86 { 83 return ((a.binary==b.binary)||(((a.binary| b.binary)&0x7FFFFFFF)==0)); /* a equals to b or both are zeros (with any sign) */ 87 /* a equals to b or both are zeros (with any sign) */ 88 return ((a.binary==b.binary) || (((a.binary | b.binary) & 0x7FFFFFFF) == 0)); 84 89 } 85 90 86 91 /** 87 * @return 1 , if a<b - but NaNs are not recognized92 * @return 1 if a < b - but NaNs are not recognized 88 93 */ 89 in line int isFloat32lt(float32 a, float32 b)94 int isFloat32lt(float32 a, float32 b) 90 95 { 91 if (((a.binary | b.binary)&0x7FFFFFFF)==0) {96 if (((a.binary | b.binary) & 0x7FFFFFFF) == 0) 92 97 return 0; /* +- zeroes */ 93 };94 98 95 if ((a.parts.sign)&&(b.parts.sign)) { 96 /*if both are negative, smaller is that with greater binary value*/ 97 return (a.binary>b.binary); 98 }; 99 if ((a.parts.sign) && (b.parts.sign)) 100 /* if both are negative, smaller is that with greater binary value */ 101 return (a.binary > b.binary); 99 102 100 /* lets negate signs - now will be positive numbers allways bigger than negative (first bit will be set for unsigned integer comparison)*/ 101 a.parts.sign=!a.parts.sign; 102 b.parts.sign=!b.parts.sign; 103 return (a.binary<b.binary); 104 103 /* lets negate signs - now will be positive numbers allways bigger than negative (first bit will be set for unsigned integer comparison) */ 104 a.parts.sign = !a.parts.sign; 105 b.parts.sign = !b.parts.sign; 106 return (a.binary < b.binary); 105 107 } 106 108 107 109 /** 108 * @return 1 , if a>b - but NaNs are not recognized110 * @return 1 if a > b - but NaNs are not recognized 109 111 */ 110 in line int isFloat32gt(float32 a, float32 b)112 int isFloat32gt(float32 a, float32 b) 111 113 { 112 if (((a.binary | b.binary)&0x7FFFFFFF)==0) {114 if (((a.binary | b.binary) & 0x7FFFFFFF) == 0) 113 115 return 0; /* zeroes are equal with any sign */ 114 };115 116 116 if ((a.parts.sign)&&(b.parts.sign)) { 117 /*if both are negative, greater is that with smaller binary value*/ 118 return (a.binary<b.binary); 119 }; 117 if ((a.parts.sign) && (b.parts.sign)) 118 /* if both are negative, greater is that with smaller binary value */ 119 return (a.binary < b.binary); 120 120 121 /* lets negate signs - now will be positive numbers allways bigger than negative (first bit will be set for unsigned integer comparison)*/ 122 a.parts.sign=!a.parts.sign; 123 b.parts.sign=!b.parts.sign; 124 return (a.binary>b.binary); 125 121 /* lets negate signs - now will be positive numbers allways bigger than negative (first bit will be set for unsigned integer comparison) */ 122 a.parts.sign = !a.parts.sign; 123 b.parts.sign = !b.parts.sign; 124 return (a.binary > b.binary); 126 125 } 127 126 -
uspace/lib/softfloat/generic/div.c
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 #include<sftypes.h> 36 #include<add.h> 37 #include<div.h> 38 #include<comparison.h> 39 #include<mul.h> 40 #include<common.h> 41 35 #include <sftypes.h> 36 #include <add.h> 37 #include <div.h> 38 #include <comparison.h> 39 #include <mul.h> 40 #include <common.h> 42 41 43 42 float32 divFloat32(float32 a, float32 b) -
uspace/lib/softfloat/generic/mul.c
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 #include <sftypes.h>36 #include <mul.h>37 #include <comparison.h>38 #include <common.h>35 #include <sftypes.h> 36 #include <mul.h> 37 #include <comparison.h> 38 #include <common.h> 39 39 40 40 /** Multiply two 32 bit float numbers -
uspace/lib/softfloat/generic/other.c
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ -
uspace/lib/softfloat/generic/softfloat.c
re913cc9 r04c418d 35 35 */ 36 36 37 #include <softfloat.h>38 #include <sftypes.h>39 40 #include <add.h>41 #include <sub.h>42 #include <mul.h>43 #include <div.h>44 45 #include <conversion.h>46 #include <comparison.h>47 #include <other.h>48 49 #include <functions.h>37 #include <softfloat.h> 38 #include <sftypes.h> 39 40 #include <add.h> 41 #include <sub.h> 42 #include <mul.h> 43 #include <div.h> 44 45 #include <conversion.h> 46 #include <comparison.h> 47 #include <other.h> 48 49 #include <functions.h> 50 50 51 51 /* Arithmetic functions */ … … 494 494 } 495 495 496 497 496 /** @} 498 497 */ 499 -
uspace/lib/softfloat/generic/sub.c
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 #include <sftypes.h>36 #include <sub.h>37 #include <comparison.h>35 #include <sftypes.h> 36 #include <sub.h> 37 #include <comparison.h> 38 38 39 39 /** Subtract two float32 numbers with same signs … … 260 260 } 261 261 262 263 /** @} 264 */ 265 262 /** @} 263 */ -
uspace/lib/softfloat/include/add.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 36 36 #define __ADD_H__ 37 37 38 float32 addFloat32(float32 a, float32 b); 39 40 float64 addFloat64(float64 a, float64 b); 38 extern float32 addFloat32(float32, float32); 39 extern float64 addFloat64(float64, float64); 41 40 42 41 #endif 43 42 44 45 /** @} 43 /** @} 46 44 */ 47 -
uspace/lib/softfloat/include/common.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 36 36 #define __COMMON_H__ 37 37 38 #include <sftypes.h>38 #include <sftypes.h> 39 39 40 float64 finishFloat64(int32_t cexp, uint64_t cfrac, char sign);40 extern float64 finishFloat64(int32_t, uint64_t, char); 41 41 42 int countZeroes64(uint64_t i);43 int countZeroes32(uint32_t i);44 int countZeroes8(uint8_t i);42 extern int countZeroes64(uint64_t); 43 extern int countZeroes32(uint32_t); 44 extern int countZeroes8(uint8_t); 45 45 46 void roundFloat32(int32_t *exp, uint32_t *fraction);47 void roundFloat64(int32_t *exp, uint64_t *fraction);46 extern void roundFloat32(int32_t *, uint32_t *); 47 extern void roundFloat64(int32_t *, uint64_t *); 48 48 49 49 #endif 50 50 51 51 /** @} 52 52 */ 53 -
uspace/lib/softfloat/include/comparison.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 36 36 #define __COMPARISON_H__ 37 37 38 inline int isFloat32NaN(float32 f);39 inline int isFloat32SigNaN(float32 f);38 extern int isFloat32NaN(float32); 39 extern int isFloat32SigNaN(float32); 40 40 41 inline int isFloat32Infinity(float32 f);42 inline int isFloat32Zero(float32 f);41 extern int isFloat32Infinity(float32); 42 extern int isFloat32Zero(float32); 43 43 44 inline int isFloat64NaN(float64 d);45 inline int isFloat64SigNaN(float64 d);44 extern int isFloat64NaN(float64); 45 extern int isFloat64SigNaN(float64); 46 46 47 inline int isFloat64Infinity(float64 d);48 inline int isFloat64Zero(float64 d);47 extern int isFloat64Infinity(float64); 48 extern int isFloat64Zero(float64); 49 49 50 inline int isFloat32eq(float32 a, float32 b);51 inline int isFloat32lt(float32 a, float32 b);52 inline int isFloat32gt(float32 a, float32 b);50 extern int isFloat32eq(float32, float32); 51 extern int isFloat32lt(float32, float32); 52 extern int isFloat32gt(float32, float32); 53 53 54 54 #endif 55 55 56 57 /** @} 56 /** @} 58 57 */ 59 -
uspace/lib/softfloat/include/conversion.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 36 36 #define __CONVERSION_H__ 37 37 38 float64 convertFloat32ToFloat64(float32 a); 38 extern float64 convertFloat32ToFloat64(float32); 39 extern float32 convertFloat64ToFloat32(float64); 39 40 40 float32 convertFloat64ToFloat32(float64 a); 41 extern uint32_t float32_to_uint32(float32); 42 extern int32_t float32_to_int32(float32); 41 43 42 uint32_t float32_to_uint32(float32 a);43 int32_t float32_to_int32(float32 a);44 extern uint64_t float32_to_uint64(float32); 45 extern int64_t float32_to_int64(float32); 44 46 45 uint64_t float32_to_uint64(float32 a);46 int64_t float32_to_int64(float32 a);47 extern uint64_t float64_to_uint64(float64); 48 extern int64_t float64_to_int64(float64); 47 49 48 uint64_t float64_to_uint64(float64 a);49 int64_t float64_to_int64(float64 a);50 extern uint32_t float64_to_uint32(float64); 51 extern int32_t float64_to_int32(float64); 50 52 51 uint32_t float64_to_uint32(float64 a);52 int32_t float64_to_int32(float64 a);53 extern float32 uint32_to_float32(uint32_t); 54 extern float32 int32_to_float32(int32_t); 53 55 54 float32 uint32_to_float32(uint32_t i);55 float32 int32_to_float32(int32_t i);56 extern float32 uint64_to_float32(uint64_t); 57 extern float32 int64_to_float32(int64_t); 56 58 57 float32 uint64_to_float32(uint64_t i);58 float32 int64_to_float32(int64_t i);59 extern float64 uint32_to_float64(uint32_t); 60 extern float64 int32_to_float64(int32_t); 59 61 60 float64 uint32_to_float64(uint32_t i); 61 float64 int32_to_float64(int32_t i); 62 63 float64 uint64_to_float64(uint64_t i); 64 float64 int64_to_float64(int64_t i); 62 extern float64 uint64_to_float64(uint64_t); 63 extern float64 int64_to_float64(int64_t); 65 64 66 65 #endif 67 66 68 69 /** @} 67 /** @} 70 68 */ 71 -
uspace/lib/softfloat/include/div.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 36 36 #define __DIV_H__ 37 37 38 float32 divFloat32(float32 a, float32 b);39 float64 divFloat64(float64 a, float64 b);38 extern float32 divFloat32(float32, float32); 39 extern float64 divFloat64(float64, float64); 40 40 41 uint64_t divFloat64estim(uint64_t a, uint64_t b);41 extern uint64_t divFloat64estim(uint64_t, uint64_t); 42 42 43 43 #endif 44 44 45 46 /** @} 45 /** @} 47 46 */ 48 -
uspace/lib/softfloat/include/mul.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 36 36 #define __MUL_H__ 37 37 38 float32 mulFloat32(float32 a, float32 b); 38 extern float32 mulFloat32(float32, float32); 39 extern float64 mulFloat64(float64, float64); 39 40 40 float64 mulFloat64(float64 a, float64 b); 41 42 void mul64integers(uint64_t a,uint64_t b, uint64_t *lo, uint64_t *hi); 41 extern void mul64integers(uint64_t, uint64_t, uint64_t *, uint64_t *); 43 42 44 43 #endif 45 44 46 47 /** @} 45 /** @} 48 46 */ 49 -
uspace/lib/softfloat/include/other.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 38 38 #endif 39 39 40 41 /** @} 40 /** @} 42 41 */ 43 -
uspace/lib/softfloat/include/sftypes.h
re913cc9 r04c418d 55 55 #error Unknown endianess 56 56 #endif 57 57 } parts __attribute__ ((packed)); 58 58 } float32; 59 59 … … 77 77 } float64; 78 78 79 #define FLOAT32_MAX 0x7f80000080 #define FLOAT32_MIN 0xff80000079 #define FLOAT32_MAX 0x7f800000 80 #define FLOAT32_MIN 0xff800000 81 81 #define FLOAT64_MAX 82 82 #define FLOAT64_MIN … … 86 86 * comparing with these constants is not sufficient. 87 87 */ 88 #define FLOAT32_NAN 0x7FC0000189 #define FLOAT32_SIGNAN 0x7F80000190 #define FLOAT32_INF 0x7F80000091 88 92 #define FLOAT 64_NAN 0x7FF8000000000001ll93 #define FLOAT 64_SIGNAN 0x7FF0000000000001ll94 #define FLOAT 64_INF 0x7FF0000000000000ll89 #define FLOAT32_NAN 0x7FC00001 90 #define FLOAT32_SIGNAN 0x7F800001 91 #define FLOAT32_INF 0x7F800000 95 92 96 #define FLOAT32_FRACTION_SIZE 23 97 #define FLOAT64_FRACTION_SIZE 52 93 #define FLOAT64_NAN 0x7FF8000000000001ll 94 #define FLOAT64_SIGNAN 0x7FF0000000000001ll 95 #define FLOAT64_INF 0x7FF0000000000000ll 98 96 99 #define FLOAT32_ HIDDEN_BIT_MASK 0x800000100 #define FLOAT64_ HIDDEN_BIT_MASK 0x10000000000000ll97 #define FLOAT32_FRACTION_SIZE 23 98 #define FLOAT64_FRACTION_SIZE 52 101 99 102 #define FLOAT32_ MAX_EXPONENT 0xFF103 #define FLOAT64_ MAX_EXPONENT 0x7FF100 #define FLOAT32_HIDDEN_BIT_MASK 0x800000 101 #define FLOAT64_HIDDEN_BIT_MASK 0x10000000000000ll 104 102 105 #define FLOAT32_BIAS 0x7F 106 #define FLOAT64_BIAS 0x3FF 107 #define FLOAT80_BIAS 0x3FFF 103 #define FLOAT32_MAX_EXPONENT 0xFF 104 #define FLOAT64_MAX_EXPONENT 0x7FF 108 105 106 #define FLOAT32_BIAS 0x7F 107 #define FLOAT64_BIAS 0x3FF 108 #define FLOAT80_BIAS 0x3FFF 109 109 110 110 #endif -
uspace/lib/softfloat/include/softfloat.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 36 36 #define __SOFTFLOAT_H__ 37 37 38 float __addsf3(float a, float b);39 double __adddf3(double a, double b);40 long double __addtf3(long double a, long double b);41 long double __addxf3(long double a, long double b);42 43 float __subsf3(float a, float b);44 double __subdf3(double a, double b);45 long double __subtf3(long double a, long double b);46 long double __subxf3(long double a, long double b);47 48 float __mulsf3(float a, float b);49 double __muldf3(double a, double b);50 long double __multf3(long double a, long double b);51 long double __mulxf3(long double a, long double b);52 53 float __divsf3(float a, float b);54 double __divdf3(double a, double b);55 long double __divtf3(long double a, long double b);56 long double __divxf3(long double a, long double b);57 58 float __negsf2(float a);59 double __negdf2(double a);60 long double __negtf2(long double a);61 long double __negxf2(long double a);62 63 double __extendsfdf2(float a);64 long double __extendsftf2(float a);65 long double __extendsfxf2(float a);66 long double __extenddftf2(double a);67 long double __extenddfxf2(double a);68 69 double __truncxfdf2(long double a);70 double __trunctfdf2(long double a);71 float __truncxfsf2(long double a);72 float __trunctfsf2(long double a);73 float __truncdfsf2(double a);74 75 int __fixsfsi(float a);76 int __fixdfsi(double a);77 int __fixtfsi(long double a);78 int __fixxfsi(long double a);79 80 long __fixsfdi(float a);81 long __fixdfdi(double a);82 long __fixtfdi(long double a);83 long __fixxfdi(long double a);84 85 long long __fixsfti(float a);86 long long __fixdfti(double a);87 long long __fixtfti(long double a);88 long long __fixxfti(long double a);89 90 unsigned int __fixunssfsi(float a);91 unsigned int __fixunsdfsi(double a);92 unsigned int __fixunstfsi(long double a);93 unsigned int __fixunsxfsi(long double a);94 95 unsigned long __fixunssfdi(float a);96 unsigned long __fixunsdfdi(double a);97 unsigned long __fixunstfdi(long double a);98 unsigned long __fixunsxfdi(long double a);99 100 unsigned long long __fixunssfti(float a);101 unsigned long long __fixunsdfti(double a);102 unsigned long long __fixunstfti(long double a);103 unsigned long long __fixunsxfti(long double a);104 105 float __floatsisf(int i);106 double __floatsidf(int i);107 long double __floatsitf(int i);108 long double __floatsixf(int i);109 110 float __floatdisf(long i);111 double __floatdidf(long i);112 long double __floatditf(long i);113 long double __floatdixf(long i);114 115 float __floattisf(long long i);116 double __floattidf(long long i);117 long double __floattitf(long long i);118 long double __floattixf(long long i);119 120 float __floatunsisf(unsigned int i);121 double __floatunsidf(unsigned int i);122 long double __floatunsitf(unsigned int i);123 long double __floatunsixf(unsigned int i);124 125 float __floatundisf(unsigned long i);126 double __floatundidf(unsigned long i);127 long double __floatunditf(unsigned long i);128 long double __floatundixf(unsigned long i);129 130 float __floatuntisf(unsigned long long i);131 double __floatuntidf(unsigned long long i);132 long double __floatuntitf(unsigned long long i);133 long double __floatuntixf(unsigned long long i);134 135 int __cmpsf2(float a, float b);136 int __cmpdf2(double a, double b);137 int __cmptf2(long double a, long double b);138 139 int __unordsf2(float a, float b);140 int __unorddf2(double a, double b);141 int __unordtf2(long double a, long double b);142 143 int __eqsf2(float a, float b);144 int __eqdf2(double a, double b);145 int __eqtf2(long double a, long double b);146 147 int __nesf2(float a, float b);148 int __nedf2(double a, double b);149 int __netf2(long double a, long double b);150 151 int __gesf2(float a, float b);152 int __gedf2(double a, double b);153 int __getf2(long double a, long double b);154 155 int __ltsf2(float a, float b);156 int __ltdf2(double a, double b);157 int __lttf2(long double a, long double b);158 int __lesf2(float a, float b);159 int __ledf2(double a, double b);160 int __letf2(long double a, long double b);161 162 int __gtsf2(float a, float b);163 int __gtdf2(double a, double b);164 int __gttf2(long double a, long double b);165 166 /* Not implemented yet */167 float __powisf2(float a, int b);38 extern float __addsf3(float, float); 39 extern double __adddf3(double, double); 40 extern long double __addtf3(long double, long double); 41 extern long double __addxf3(long double, long double); 42 43 extern float __subsf3(float, float); 44 extern double __subdf3(double, double); 45 extern long double __subtf3(long double, long double); 46 extern long double __subxf3(long double, long double); 47 48 extern float __mulsf3(float, float); 49 extern double __muldf3(double, double); 50 extern long double __multf3(long double, long double); 51 extern long double __mulxf3(long double, long double); 52 53 extern float __divsf3(float, float); 54 extern double __divdf3(double, double); 55 extern long double __divtf3(long double, long double); 56 extern long double __divxf3(long double, long double); 57 58 extern float __negsf2(float); 59 extern double __negdf2(double); 60 extern long double __negtf2(long double); 61 extern long double __negxf2(long double); 62 63 extern double __extendsfdf2(float); 64 extern long double __extendsftf2(float); 65 extern long double __extendsfxf2(float); 66 extern long double __extenddftf2(double); 67 extern long double __extenddfxf2(double); 68 69 extern double __truncxfdf2(long double); 70 extern double __trunctfdf2(long double); 71 extern float __truncxfsf2(long double); 72 extern float __trunctfsf2(long double); 73 extern float __truncdfsf2(double); 74 75 extern int __fixsfsi(float); 76 extern int __fixdfsi(double); 77 extern int __fixtfsi(long double); 78 extern int __fixxfsi(long double); 79 80 extern long __fixsfdi(float); 81 extern long __fixdfdi(double); 82 extern long __fixtfdi(long double); 83 extern long __fixxfdi(long double); 84 85 extern long long __fixsfti(float); 86 extern long long __fixdfti(double); 87 extern long long __fixtfti(long double); 88 extern long long __fixxfti(long double); 89 90 extern unsigned int __fixunssfsi(float); 91 extern unsigned int __fixunsdfsi(double); 92 extern unsigned int __fixunstfsi(long double); 93 extern unsigned int __fixunsxfsi(long double); 94 95 extern unsigned long __fixunssfdi(float); 96 extern unsigned long __fixunsdfdi(double); 97 extern unsigned long __fixunstfdi(long double); 98 extern unsigned long __fixunsxfdi(long double); 99 100 extern unsigned long long __fixunssfti(float); 101 extern unsigned long long __fixunsdfti(double); 102 extern unsigned long long __fixunstfti(long double); 103 extern unsigned long long __fixunsxfti(long double); 104 105 extern float __floatsisf(int); 106 extern double __floatsidf(int); 107 extern long double __floatsitf(int); 108 extern long double __floatsixf(int); 109 110 extern float __floatdisf(long); 111 extern double __floatdidf(long); 112 extern long double __floatditf(long); 113 extern long double __floatdixf(long); 114 115 extern float __floattisf(long long); 116 extern double __floattidf(long long); 117 extern long double __floattitf(long long); 118 extern long double __floattixf(long long); 119 120 extern float __floatunsisf(unsigned int); 121 extern double __floatunsidf(unsigned int); 122 extern long double __floatunsitf(unsigned int); 123 extern long double __floatunsixf(unsigned int); 124 125 extern float __floatundisf(unsigned long); 126 extern double __floatundidf(unsigned long); 127 extern long double __floatunditf(unsigned long); 128 extern long double __floatundixf(unsigned long); 129 130 extern float __floatuntisf(unsigned long long); 131 extern double __floatuntidf(unsigned long long); 132 extern long double __floatuntitf(unsigned long long); 133 extern long double __floatuntixf(unsigned long long); 134 135 extern int __cmpsf2(float, float); 136 extern int __cmpdf2(double, double); 137 extern int __cmptf2(long double, long double); 138 139 extern int __unordsf2(float, float); 140 extern int __unorddf2(double, double); 141 extern int __unordtf2(long double, long double); 142 143 extern int __eqsf2(float, float); 144 extern int __eqdf2(double, double); 145 extern int __eqtf2(long double, long double); 146 147 extern int __nesf2(float, float); 148 extern int __nedf2(double, double); 149 extern int __netf2(long double, long double); 150 151 extern int __gesf2(float, float); 152 extern int __gedf2(double, double); 153 extern int __getf2(long double, long double); 154 155 extern int __ltsf2(float, float); 156 extern int __ltdf2(double, double); 157 extern int __lttf2(long double, long double); 158 extern int __lesf2(float, float); 159 extern int __ledf2(double, double); 160 extern int __letf2(long double, long double); 161 162 extern int __gtsf2(float, float); 163 extern int __gtdf2(double, double); 164 extern int __gttf2(long double, long double); 165 166 /* Not implemented yet */ 167 extern float __powisf2(float, int); 168 168 169 169 #endif 170 170 171 172 /** @} 171 /** @} 173 172 */ 174 -
uspace/lib/softfloat/include/sub.h
re913cc9 r04c418d 27 27 */ 28 28 29 /** @addtogroup softfloat 29 /** @addtogroup softfloat 30 30 * @{ 31 31 */ … … 36 36 #define __SUB_H__ 37 37 38 float32 subFloat32(float32 a, float32 b); 39 40 float64 subFloat64(float64 a, float64 b); 38 extern float32 subFloat32(float32, float32); 39 extern float64 subFloat64(float64, float64); 41 40 42 41 #endif 43 42 44 45 /** @} 43 /** @} 46 44 */ 47 -
uspace/lib/softint/Makefile
re913cc9 r04c418d 31 31 EXTRA_CFLAGS = -Iinclude 32 32 LIBRARY = libsoftint 33 SLIBRARY = libsoftint.so.0.0 34 LSONAME = libsofti.so0 33 35 34 36 SOURCES = \ 35 generic/division.c \37 generic/division.c \ 36 38 generic/multiplication.c 37 39 -
uspace/lib/usbhid/src/hidparser.c
re913cc9 r04c418d 46 46 */ 47 47 uint32_t usb_hid_report_tag_data_uint32(const uint8_t *data, size_t size); 48 inline size_t usb_hid_count_item_offset(usb_hid_report_item_t * report_item, size_t offset);48 //inline size_t usb_hid_count_item_offset(usb_hid_report_item_t * report_item, size_t offset); 49 49 int usb_hid_translate_data(usb_hid_report_field_t *item, const uint8_t *data); 50 50 uint32_t usb_hid_translate_data_reverse(usb_hid_report_field_t *item, int32_t value); -
uspace/lib/usbhost/include/usb/host/usb_endpoint_manager.h
re913cc9 r04c418d 40 40 #define LIBUSB_HOST_YSB_ENDPOINT_MANAGER_H 41 41 42 #include <stdlib.h> 42 43 #include <adt/hash_table.h> 43 44 #include <fibril_synch.h> -
uspace/lib/usbhost/src/endpoint.c
re913cc9 r04c418d 35 35 36 36 #include <assert.h> 37 #include <stdlib.h> 37 38 #include <errno.h> 38 39 #include <usb/host/endpoint.h>
Note:
See TracChangeset
for help on using the changeset viewer.