forked from xuos/xiuos
				
			fit musl lib for arm boards.
This commit is contained in:
		
							parent
							
								
									e1999f5af9
								
							
						
					
					
						commit
						214cf55603
					
				|  | @ -22,6 +22,7 @@ | |||
| #define TRANSFORM_H | ||||
| 
 | ||||
| #include <pthread.h> | ||||
| #include <signal.h> | ||||
| #include <semaphore.h> | ||||
| #include <stddef.h> | ||||
| #include <stdint.h> | ||||
|  |  | |||
|  | @ -29,9 +29,8 @@ extern "C" { | |||
| #include <time.h> | ||||
| #include <sys/time.h> | ||||
| 
 | ||||
| #if defined(ARCH_ARM) | ||||
| #if defined(ARCH_ARM) && !defined(LIB_MUSLLIB) | ||||
| #include "pthread arm.h" | ||||
| #endif | ||||
| 
 | ||||
| // enum {
 | ||||
| //     PTHREAD_BARRIER_SERIAL_THREAD,
 | ||||
|  | @ -94,7 +93,7 @@ int       pthread_setname_np(pthread_t thread, const char *name); | |||
| int       pthread_timedjoin_np(pthread_t thread, void **retval, const struct timespec *abstime); | ||||
| 
 | ||||
| /* function in pthread_mutex.c */ | ||||
| int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); | ||||
| int pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t* attr); | ||||
| int pthread_mutex_destroy(pthread_mutex_t *mutex); | ||||
| int pthread_mutex_lock(pthread_mutex_t *mutex); | ||||
| int pthread_mutex_unlock(pthread_mutex_t *mutex); | ||||
|  | @ -105,7 +104,8 @@ int pthread_mutexattr_destroy(pthread_mutexattr_t *attr); | |||
| int pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, int *type); | ||||
| int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type); | ||||
| int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr, int pshared); | ||||
| int pthread_mutexattr_getpshared(pthread_mutexattr_t *attr, int *pshared); | ||||
| int pthread_mutexattr_getpshared(const pthread_mutexattr_t *attr, int *pshared); | ||||
| #endif | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|  |  | |||
|  | @ -49,7 +49,7 @@ int pthread_create(pthread_t *thread, const pthread_attr_t *attr, | |||
|       return -1 ; | ||||
|      | ||||
|     ret = UserTaskStartup(pid); | ||||
|     *thread = pid; | ||||
|     *thread = (pthread_t)pid; | ||||
| 
 | ||||
|     return ret; | ||||
| 
 | ||||
|  | @ -63,7 +63,7 @@ void pthread_exit(void *value_ptr){ | |||
| pthread_t pthread_self(void){ | ||||
|      | ||||
|     pthread_t pthread ; | ||||
|     pthread = UserGetTaskID(); | ||||
|     pthread = (pthread_t)UserGetTaskID(); | ||||
|     return pthread; | ||||
| } | ||||
| 
 | ||||
|  | @ -112,7 +112,7 @@ int pthread_join(pthread_t thread, void **retval) | |||
| int pthread_kill(pthread_t thread, int sig) | ||||
| { | ||||
|     /* This api should not be used, and will not be supported */ | ||||
|     UserTaskDelete(thread); | ||||
|     UserTaskDelete((int32_t)thread); | ||||
|     return -1; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -21,7 +21,117 @@ | |||
| 
 | ||||
| #include <time.h> | ||||
| #include "include/pthread.h" | ||||
| #include <pthread.h> | ||||
| #include <string.h> | ||||
| 
 | ||||
| #if defined(ARCH_ARM) && defined(LIB_MUSLLIB) | ||||
| int pthread_mutex_init(pthread_mutex_t* p_mutex, const pthread_mutexattr_t* attr) | ||||
| { | ||||
|     pthread_mutexattr_t mutexAttr; | ||||
|     uint32_t mutex_handle; | ||||
| 
 | ||||
|     // check p_mutex
 | ||||
|     if (p_mutex == NULL) { | ||||
|         return EINVAL; | ||||
|     } | ||||
| 
 | ||||
|     // set attr
 | ||||
|     if (attr == NULL) { | ||||
|         pthread_mutexattr_init(&mutexAttr); | ||||
|     } | ||||
|     else { | ||||
|         mutexAttr = *attr; | ||||
|     } | ||||
| 
 | ||||
|     // create mutex
 | ||||
|     mutex_handle = UserMutexCreate(); | ||||
|     if (mutex_handle < 0) { | ||||
|         return mutex_handle; | ||||
|     } | ||||
| 
 | ||||
|     p_mutex->stAttr = mutexAttr; | ||||
|     p_mutex->magic = _MUX_MAGIC; | ||||
|     p_mutex->handle = mutex_handle; | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| int pthread_mutex_destroy(pthread_mutex_t *p_mutex) | ||||
| { | ||||
|     if ((p_mutex == NULL) || (p_mutex->magic != _MUX_MAGIC)) { | ||||
|         return EINVAL; | ||||
|     } | ||||
|     UserMutexDelete(p_mutex->handle); | ||||
|     p_mutex->handle = _MUX_INVALID_HANDLE; | ||||
|     p_mutex->magic = 0; | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| int pthread_mutex_lock(pthread_mutex_t *p_mutex) | ||||
| { | ||||
|     if ((p_mutex == NULL) || (p_mutex->magic != _MUX_MAGIC) || | ||||
|         (p_mutex->handle == _MUX_INVALID_HANDLE)) { | ||||
|         return EINVAL; | ||||
|     } | ||||
|      | ||||
|     return UserMutexObtain(p_mutex->handle, WAITING_FOREVER); | ||||
| } | ||||
| 
 | ||||
| int pthread_mutex_unlock(pthread_mutex_t *p_mutex) | ||||
| { | ||||
|     if ((p_mutex == NULL) || (p_mutex->magic != _MUX_MAGIC) || | ||||
|         (p_mutex->handle == _MUX_INVALID_HANDLE)) { | ||||
|         return EINVAL; | ||||
|     } | ||||
| 
 | ||||
|     return UserMutexAbandon(p_mutex->handle); | ||||
| } | ||||
| 
 | ||||
| int pthread_mutex_trylock(pthread_mutex_t *p_mutex) | ||||
| { | ||||
|     if ((p_mutex == NULL) || (p_mutex->magic != _MUX_MAGIC) || | ||||
|         (p_mutex->handle == _MUX_INVALID_HANDLE)) { | ||||
|         return EINVAL; | ||||
|     } | ||||
|     return UserMutexObtain(p_mutex->handle , 0); | ||||
| } | ||||
| 
 | ||||
| int pthread_mutexattr_init(pthread_mutexattr_t *attr) | ||||
| { | ||||
|     if (attr == NULL) { | ||||
|         return EINVAL; | ||||
|     } | ||||
|     attr->type = PTHREAD_MUTEX_DEFAULT; | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| int pthread_mutexattr_destroy(pthread_mutexattr_t *attr) | ||||
| { | ||||
|     if (attr == NULL) { | ||||
|         return EINVAL; | ||||
|     } | ||||
|     memset(attr, 0, sizeof(pthread_mutexattr_t)); | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| int pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, int *type) | ||||
| { | ||||
|     if (attr == NULL) { | ||||
|         return EINVAL; | ||||
|     } | ||||
|     *type = attr->type; | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type) | ||||
| { | ||||
|     if (attr == NULL) { | ||||
|         return EINVAL; | ||||
|     } | ||||
|     attr->type = type; | ||||
|     return 0; | ||||
| } | ||||
| #else | ||||
| int pthread_mutex_init(pthread_mutex_t *p_mutex, const pthread_mutexattr_t *attr) | ||||
| { | ||||
|     *p_mutex = UserMutexCreate(); | ||||
|  | @ -82,9 +192,11 @@ int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type) | |||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict attr, int *restrict protocol) | ||||
| { | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| int pthread_mutexattr_getprotocol(const pthread_mutexattr_t* restrict attr, int* restrict protocol) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
|  | @ -118,7 +230,7 @@ int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr, int pshared) | |||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| int pthread_mutexattr_getpshared(pthread_mutexattr_t *attr, int *pshared) | ||||
| int pthread_mutexattr_getpshared(const pthread_mutexattr_t *attr, int *pshared) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  |  | |||
|  | @ -41,30 +41,35 @@ export CPPPATHS | |||
| export SRC_APP_DIR := ../../APP_Framework | ||||
| export SRC_KERNEL_DIR := arch board lib fs kernel resources tool | ||||
| export SRC_DIR:= $(SRC_APP_DIR) $(SRC_KERNEL_DIR) | ||||
| export LIBCC  | ||||
| export MUSL_DIR := $(KERNEL_ROOT)/lib/musllib | ||||
| export LWIP_DIR := $(KERNEL_ROOT)/resources/ethernet | ||||
| 
 | ||||
| PART:= | ||||
| 
 | ||||
| all: | ||||
| 
 | ||||
| ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),y_) | ||||
| include path_app.mk | ||||
| PART += COMPILE_APP | ||||
| 
 | ||||
| else ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),_y) | ||||
| include path_kernel.mk | ||||
| PART += COMPILE_KERNEL | ||||
| 
 | ||||
| else ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),y_y) | ||||
| include path_app.mk | ||||
| include path_kernel.mk | ||||
| PART := COMPILE_APP COMPILE_KERNEL | ||||
| 
 | ||||
| else | ||||
| include path_kernel.mk | ||||
| CPPPATHS := $(KERNELPATHS) | ||||
| PART := COMPILE_ALL | ||||
| PART :=  | ||||
| 
 | ||||
| ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||
| PART += COMPILE_MUSL clean | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(CONFIG_RESOURCES_LWIP), y) | ||||
| PART += COMPILE_LWIP clean | ||||
| endif | ||||
| 
 | ||||
| PART += COMPILE_ALL | ||||
| endif | ||||
| 
 | ||||
| 
 | ||||
| all: $(PART) | ||||
|  | @ -78,7 +83,40 @@ COMPILE_ALL: | |||
| 	@$(MAKE) -C build TARGET=XiZi-$(BOARD).elf LINK_FLAGS=LFLAGS | ||||
| 	@rm build/Makefile build/make.obj | ||||
| 
 | ||||
| COMPILE_MUSL: | ||||
| 	@for dir in $(MUSL_DIR);do    \
 | ||||
|                $(MAKE) -C $$dir  CONFIG_RESOURCES_LWIP=n;          \
 | ||||
|        done | ||||
| 	@cp link_libc.mk build/Makefile | ||||
| 	@$(MAKE) -C build TARGET=libmusl.a LINK_FLAGS=LFLAGS | ||||
| 	@cp build/libmusl.a $(KERNEL_ROOT)/lib/musllib/libmusl.a  | ||||
| 	@rm build/Makefile build/make.obj | ||||
| 
 | ||||
| COMPILE_LWIP:  | ||||
| 	@for dir in $(LWIP_DIR);do    \
 | ||||
|                $(MAKE) -C $$dir COMPILE_TYPE=$@;          \
 | ||||
|        done | ||||
| 	@cp link_lwip.mk build/Makefile | ||||
| 	@$(MAKE) -C build TARGET=liblwip.a LINK_FLAGS=LFLAGS | ||||
| 	@cp build/liblwip.a $(KERNEL_ROOT)/resources/ethernet/LwIP/liblwip.a | ||||
| 	@rm build/Makefile build/make.obj | ||||
| 
 | ||||
| COMPILE_KERNEL: | ||||
| 	@for dir in $(SRC_KERNEL_DIR);do    \
 | ||||
|                $(MAKE) -C $$dir;          \
 | ||||
|        done | ||||
| 	@cp link.mk build/Makefile | ||||
| 	@$(MAKE) -C build COMPILE_TYPE="_kernel" TARGET=XiZi-$(BOARD)_kernel.elf LINK_FLAGS=LFLAGS | ||||
| 	@rm build/Makefile build/make.obj | ||||
| 
 | ||||
| COMPILE_APP: | ||||
| 	@echo $(SRC_APP_DIR) | ||||
| 	@for dir in $(SRC_APP_DIR);do    \
 | ||||
|                $(MAKE) -C $$dir;          \
 | ||||
|        done | ||||
| 	@cp link.mk build/Makefile | ||||
| 	@$(MAKE) -C build COMPILE_TYPE="_app" TARGET=XiZi-$(BOARD)_app.elf LINK_FLAGS=APPLFLAGS USE_APP_INCLUDEPATH=y | ||||
| 	@rm build/Makefile build/make.obj | ||||
| 
 | ||||
| show_info: | ||||
| 	@echo "CONFIG_COMPILER_APP is :" $(CONFIG_COMPILER_APP) | ||||
|  |  | |||
|  | @ -156,12 +156,14 @@ uint8 KTaskStackSetup(struct TaskDescriptor *task) | |||
|     } | ||||
| #else | ||||
|     StackContex->ExErrorStackContex.lr = (unsigned long)KTaskQuit; | ||||
|     KPrintf("DEBUG: ExErrorStackContex.lr set KTaskQuit..\n"); | ||||
| #endif | ||||
| 
 | ||||
| #if USE_FPU | ||||
|     StackContex->flag = 0; | ||||
| #endif | ||||
| 
 | ||||
|     KPrintf("DEBUG: KTaskStackSetup end, task: %i.\n", task->id.id); | ||||
|     return EOK; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,6 +5,16 @@ export AFLAGS := -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard - | |||
| export LFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link.lds | ||||
| export CXXFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g | ||||
| 
 | ||||
| ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||
| export LFLAGS += -nostdlib -nostdinc -fno-builtin -nodefaultlibs | ||||
| export LIBCC := -lgcc | ||||
| export LINK_MUSLLIB := $(KERNEL_ROOT)/lib/musllib/libmusl.a | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(CONFIG_RESOURCES_LWIP), y) | ||||
| export LINK_LWIP := $(KERNEL_ROOT)/resources/ethernet/LwIP/liblwip.a | ||||
| endif | ||||
| 
 | ||||
| export APPLFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-app.map,-cref,-u, -T $(BSP_ROOT)/link_userspace.lds | ||||
| 
 | ||||
| export DEFINES := -DHAVE_CCONFIG_H  -DSTM32F407xx -DUSE_HAL_DRIVER -DHAVE_SIGINFO | ||||
|  |  | |||
|  | @ -7,7 +7,6 @@ export CXXFLAGS := -mcpu=cortex-m0 -mthumb -ffunction-sections -fdata-sections - | |||
| 
 | ||||
| export APPLFLAGS := -mcpu=cortex-m0 -mthumb -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-app.map,-cref,-u, -T $(BSP_ROOT)/link_userspace.lds | ||||
| 
 | ||||
| 
 | ||||
| export DEFINES := -DHAVE_CCONFIG_H -g | ||||
| 
 | ||||
| export ARCH = arm | ||||
|  |  | |||
|  | @ -5,6 +5,16 @@ export AFLAGS := -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard - | |||
| export LFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-cortex-m4-emulator.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link.lds | ||||
| export CXXFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -Werror | ||||
| 
 | ||||
| ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||
| export LFLAGS += -nostdlib -nostdinc -fno-builtin -nodefaultlibs | ||||
| export LIBCC := -lgcc | ||||
| export LINK_MUSLLIB := $(KERNEL_ROOT)/lib/musllib/libmusl.a | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(CONFIG_RESOURCES_LWIP), y) | ||||
| export LINK_LWIP := $(KERNEL_ROOT)/resources/ethernet/LwIP/liblwip.a | ||||
| endif | ||||
| 
 | ||||
| export APPLFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-app.map,-cref,-u, -T $(BSP_ROOT)/link_userspace.lds | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -225,6 +225,7 @@ CONFIG_FS_VFS_DEVFS=y | |||
| CONFIG_LIB=y | ||||
| CONFIG_LIB_POSIX=y | ||||
| CONFIG_LIB_NEWLIB=y | ||||
| CONFIG_LIB_MUSLLIB=y | ||||
| 
 | ||||
| CONFIG_LITTLEVGL2RTT_USING_DEMO=y | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,4 +1,6 @@ | |||
| export CFLAGS := -mcmodel=medany -march=rv64imafdc -mabi=lp64d -fno-common -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -O0 -ggdb -fgnu89-inline -Werror  | ||||
| # $(warning, "DEBUG, here add cflags.")
 | ||||
| # export CFLAGS += -nostdlib -nostdinc -fno-builtin
 | ||||
| export AFLAGS := -c -mcmodel=medany -march=rv64imafdc -mabi=lp64d -x assembler-with-cpp -ggdb | ||||
| export LFLAGS := -mcmodel=medany -march=rv64imafdc -mabi=lp64d -nostartfiles -Wl,--gc-sections,-Map=XiZi-kd233.map,-cref,-u,_start -T $(BSP_ROOT)/link.lds | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,7 +7,6 @@ export CXXFLAGS := -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections - | |||
| 
 | ||||
| export APPLFLAGS := -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-app.map,-cref,-u, -T $(BSP_ROOT)/link_userspace.lds | ||||
| 
 | ||||
| 
 | ||||
| export DEFINES := -DHAVE_CCONFIG_H   | ||||
| 
 | ||||
| export ARCH = arm | ||||
|  |  | |||
|  | @ -1,11 +1,21 @@ | |||
| export CROSS_COMPILE ?=/usr/bin/arm-none-eabi- | ||||
| 
 | ||||
| export CFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -fgnu89-inline -Wa,-mimplicit-it=thumb -Werror | ||||
| export AFLAGS := -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -x assembler-with-cpp -Wa,-mimplicit-it=thumb  -gdwarf-2 | ||||
| export LFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-stm32f407-st-discovery.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link.lds | ||||
| export CXXFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -Werror | ||||
| export CFLAGS := -mcpu=cortex-m4 -mthumb  -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -fgnu89-inline -Wa,-mimplicit-it=thumb | ||||
| export AFLAGS := -c -mcpu=cortex-m4 -mthumb  -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffunction-sections -fdata-sections -x assembler-with-cpp -Wa,-mimplicit-it=thumb  -gdwarf-2 | ||||
| export LFLAGS := -mcpu=cortex-m4 -mthumb  -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-stm32f407-st-discovery.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link.lds | ||||
| export CXXFLAGS := -mcpu=cortex-m4 -mthumb  -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -Werror | ||||
| 
 | ||||
| export APPLFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-app.map,-cref,-u, -T $(BSP_ROOT)/link_userspace.lds | ||||
| ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||
| export LFLAGS += -nostdlib -nostdinc -fno-builtin -nodefaultlibs | ||||
| export LIBCC := -lgcc | ||||
| export LINK_MUSLLIB := $(KERNEL_ROOT)/lib/musllib/libmusl.a | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(CONFIG_RESOURCES_LWIP), y) | ||||
| export LINK_LWIP := $(KERNEL_ROOT)/resources/ethernet/LwIP/liblwip.a | ||||
| endif | ||||
| 
 | ||||
| export APPLFLAGS := -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16  -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-app.map,-cref,-u, -T $(BSP_ROOT)/link_userspace.lds | ||||
| 
 | ||||
| 
 | ||||
| export DEFINES := -DHAVE_CCONFIG_H  -DSTM32F407xx -DUSE_HAL_DRIVER -DHAVE_SIGINFO | ||||
|  |  | |||
|  | @ -5,6 +5,16 @@ export AFLAGS := -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard - | |||
| export LFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link.lds | ||||
| export CXXFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -Werror | ||||
| 
 | ||||
| ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||
| export LFLAGS += -nostdlib -nostdinc -fno-builtin -nodefaultlibs | ||||
| export LIBCC := -lgcc | ||||
| export LINK_MUSLLIB := $(KERNEL_ROOT)/lib/musllib/libmusl.a | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(CONFIG_RESOURCES_LWIP), y) | ||||
| export LINK_LWIP := $(KERNEL_ROOT)/resources/ethernet/LwIP/liblwip.a | ||||
| endif | ||||
| 
 | ||||
| export APPLFLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-app.map,-cref,-u, -T $(BSP_ROOT)/link_userspace.lds | ||||
| 
 | ||||
| export DEFINES := -DHAVE_CCONFIG_H  -DSTM32F407xx -DUSE_HAL_DRIVER -DHAVE_SIGINFO | ||||
|  |  | |||
|  | @ -1,14 +1,24 @@ | |||
| export CROSS_COMPILE ?=/usr/bin/arm-none-eabi- | ||||
| 
 | ||||
| export CFLAGS := -mcpu=cortex-m7 -mthumb  -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -fgnu89-inline -Wa,-mimplicit-it=thumb | ||||
| export AFLAGS := -c -mcpu=cortex-m7 -mthumb -ffunction-sections -fdata-sections -x assembler-with-cpp -Wa,-mimplicit-it=thumb  -gdwarf-2 | ||||
| 
 | ||||
| export AFLAGS := -c -mcpu=cortex-m7 -mthumb -ffunction-sections -fdata-sections -x assembler-with-cpp -Wa,-mimplicit-it=thumb  -gdwarf-2 | ||||
| ### if use USB function, use special lds file because USB uses ITCM
 | ||||
| 
 | ||||
| ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||
| export LFLAGS += -nostdlib -nostdinc -fno-builtin -nodefaultlibs | ||||
| export LIBCC := -lgcc | ||||
| export LINK_MUSLLIB := $(KERNEL_ROOT)/lib/musllib/libmusl.a | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(CONFIG_RESOURCES_LWIP), y) | ||||
| export LINK_LWIP := $(KERNEL_ROOT)/resources/ethernet/LwIP/liblwip.a | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(CONFIG_BSP_USING_USB),y) | ||||
| export LFLAGS := -mcpu=cortex-m7 -mthumb -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-xidatong-arm32.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link-usb.lds | ||||
| export LFLAGS += -mcpu=cortex-m7 -mthumb -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-xidatong-arm32.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link-usb.lds | ||||
| else | ||||
| export LFLAGS := -mcpu=cortex-m7 -mthumb -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-xidatong-arm32.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link.lds | ||||
| export LFLAGS += -mcpu=cortex-m7 -mthumb -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=XiZi-xidatong-arm32.map,-cref,-u,Reset_Handler -T $(BSP_ROOT)/link.lds | ||||
| endif | ||||
| 
 | ||||
| export CXXFLAGS := -mcpu=cortex-m7 -mthumb -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g | ||||
|  |  | |||
|  | @ -33,7 +33,7 @@ Modification: | |||
| #include "fsl_clock.h" | ||||
| #include "fsl_enet.h" | ||||
| #include "clock_config.h" | ||||
| #include <xizi.h> | ||||
| // #include <xizi.h>
 | ||||
| #include <arch_interrupt.h> | ||||
| 
 | ||||
| extern int heap_start; | ||||
|  |  | |||
|  | @ -1,5 +1,21 @@ | |||
| SRC_DIR_TEMP :=$(SRC_DIR) | ||||
| SRC_DIR:= | ||||
| ifeq ($(COMPILE_TYPE), COMPILE_MUSL)  | ||||
| SRC_DIR_TEMP := $(MUSL_DIR) | ||||
| else ifeq ($(COMPILE_TYPE), COMPILE_LWIP)  | ||||
| SRC_DIR_TEMP := $(LWIP_DIR) | ||||
| else | ||||
| SRC_DIR_TEMP := $(SRC_DIR)  | ||||
| endif | ||||
| 
 | ||||
| SRC_DIR := | ||||
| MUSL_DIR := | ||||
| LWIP_DIR := | ||||
| 
 | ||||
| ifeq ($(USE_APP_INCLUDEPATH), y) | ||||
| 	include $(KERNEL_ROOT)/path_app.mk | ||||
| else  | ||||
| 	include $(KERNEL_ROOT)/path_kernel.mk | ||||
| endif | ||||
| export CPPPATHS := $(KERNELPATHS) | ||||
| 
 | ||||
| CUR_DIR :=$(shell pwd) | ||||
| 
 | ||||
|  | @ -34,7 +50,7 @@ $(if $(strip $(LOCALC)),$(eval $(LOCALC): $(1) | |||
| 	@if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi | ||||
| 	@echo cc $$< | ||||
| 	@/bin/echo -n $(dir $(LOCALC)) >>$(KERNEL_ROOT)/build/make.dep | ||||
| 	@$(CROSS_COMPILE)gcc -MM $$(CFLAGS) -c $$< >>$(KERNEL_ROOT)/build/make.dep | ||||
| 	@($(CROSS_COMPILE)gcc -MM $$(CFLAGS) -c $$<) >>$(KERNEL_ROOT)/build/make.dep | ||||
| 	@$(CROSS_COMPILE)gcc $$(CFLAGS) -c $$< -o $$@)) | ||||
| endef | ||||
| 
 | ||||
|  |  | |||
|  | @ -357,7 +357,7 @@ static int FatfsStat(struct MountPoint *mp, const char *path, | |||
|     FRESULT res; | ||||
|     FILINFO fno; | ||||
|     char *ff_path; | ||||
|     struct tm tm; | ||||
|     // struct tm tm;
 | ||||
|     int year, mon, day, hour, min, sec; | ||||
|     WORD tmp; | ||||
| 
 | ||||
|  | @ -465,7 +465,7 @@ DWORD GetFatTime(void) | |||
| { | ||||
|     DWORD fat_time = 0; | ||||
| 
 | ||||
| #ifdef LIB | ||||
| #if defined LIB && !defined(LIB_MUSLLIB) | ||||
|     time_t now; | ||||
|     struct tm *p_tm; | ||||
|     struct tm tm_now; | ||||
|  |  | |||
|  | @ -13,7 +13,6 @@ | |||
| #ifndef _INC_IOT_VFS_H_ | ||||
| #define _INC_IOT_VFS_H_ | ||||
| 
 | ||||
| #include <xizi.h> | ||||
| #include <bus.h> | ||||
| 
 | ||||
| #define MAX_FILE_NAME 255 | ||||
|  |  | |||
|  | @ -25,14 +25,16 @@ int read(int fd, void *buf, size_t len); | |||
| int write(int fd, const void *buf, size_t len); | ||||
| #endif | ||||
| 
 | ||||
| int open(const char *path, int flags, ...); | ||||
| 
 | ||||
| 
 | ||||
| int open(const char* path, int flags, ...); | ||||
| int close(int fd); | ||||
| int ioctl(int fd, int cmd, void *args); | ||||
| int ioctl(int fd, int cmd, ...); | ||||
| off_t lseek(int fd, off_t offset, int whence); | ||||
| int rename(const char *from, const char *to); | ||||
| int unlink(const char *path); | ||||
| int stat(const char *path, struct stat *buf); | ||||
| int fstat(int fd, struct stat *buf); | ||||
| // int stat(const char *path, struct stat *buf);
 | ||||
| // int fstat(int fd, struct stat *buf);
 | ||||
| int fsync(int fd); | ||||
| int ftruncate(int fd, off_t length); | ||||
| 
 | ||||
|  |  | |||
|  | @ -573,7 +573,8 @@ int write(int fd, const void *buf, size_t len) | |||
|     return ret; | ||||
| } | ||||
| 
 | ||||
| int ioctl(int fd, int cmd, void *args) | ||||
| #ifndef LIB_MUSLLIB | ||||
| int ioctl(int fd, int cmd, ...) | ||||
| { | ||||
|     int ret; | ||||
|     struct FileDescriptor *fdp; | ||||
|  | @ -589,7 +590,10 @@ int ioctl(int fd, int cmd, void *args) | |||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     ret = fdp->mntp->fs->ioctl(fdp, cmd, args); | ||||
|     va_list ap; | ||||
|     va_start(ap, cmd); | ||||
|     ret = fdp->mntp->fs->ioctl(fdp, cmd, (void*)va_arg(ap, int)); | ||||
|     va_end(ap); | ||||
|     if (ret < 0) { | ||||
|         SYS_ERR("%s: ioctl file failed\n", __func__); | ||||
|         KUpdateExstatus(ret); | ||||
|  | @ -598,6 +602,7 @@ int ioctl(int fd, int cmd, void *args) | |||
| 
 | ||||
|     return ret; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| off_t lseek(int fd, off_t offset, int whence) | ||||
| { | ||||
|  |  | |||
|  | @ -35,6 +35,12 @@ | |||
| #include <xs_isr.h> | ||||
| #include <string.h> | ||||
| #include <stdio.h> | ||||
| #include <stdint.h> | ||||
| #include <stdarg.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/stat.h> | ||||
| #include <fcntl.h> | ||||
| #include <errno.h> | ||||
| #include <xs_memory.h> | ||||
| #include <xs_id.h> | ||||
| #include <xs_ktick.h> | ||||
|  |  | |||
|  | @ -80,11 +80,11 @@ enum SIGN_OPER | |||
| 
 | ||||
| struct DeviceBlockArrange | ||||
| { | ||||
|     uint32 bank_num; | ||||
|     uint32 size_perbank; | ||||
|     uint32 block_size; | ||||
|     uint16 bank_start; | ||||
|     uint16 bank_end;                       | ||||
|     uint32_t bank_num; | ||||
|     uint32_t size_perbank; | ||||
|     uint32_t block_size; | ||||
|     uint16_t bank_start; | ||||
|     uint16_t bank_end;                       | ||||
| }; | ||||
| 
 | ||||
| struct DeviceBlockAddr | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ | |||
| #define XS_KLIST_H | ||||
| 
 | ||||
| #include <xs_base.h> | ||||
| #include "libc.h" | ||||
| // #include <libc.h>
 | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
|  |  | |||
|  | @ -170,7 +170,7 @@ int32 UTaskCreate(const char *name, | |||
| 
 | ||||
| void KUpdateExstatus(x_err_t no); | ||||
| int *KObtainExstatus(void); | ||||
| #if !defined(LIB_NEWLIB) && !defined(_WIN32) | ||||
| #if !defined(LIB_NEWLIB) && !defined(LIB_MUSLLIB) && !defined(_WIN32) | ||||
| #ifndef errno | ||||
| #define errno    *KObtainExstatus() | ||||
| #endif | ||||
|  |  | |||
|  | @ -23,6 +23,7 @@ | |||
| #define XS_MEMORY_H | ||||
| 
 | ||||
| #include <xsconfig.h> | ||||
| #include <xs_base.h> | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
|  |  | |||
|  | @ -270,6 +270,7 @@ static inline void SwitchToFirstRunningTask(struct TaskDescriptor* task) | |||
| 
 | ||||
|     Assign.ready_vector_done->remove(task); | ||||
|     KTaskStatSetAsRunning(task); | ||||
|     KPrintf("DEBUG: calling SwitchKtaskContextTo, task: %i.\n", task->id.id); | ||||
|     SwitchKtaskContextTo((x_ubase)&task->stack_point, task); | ||||
| } | ||||
| 
 | ||||
|  | @ -372,7 +373,7 @@ void StartupOsAssign(void) | |||
|     FirstRunningTask = ChooseTaskWithHighestPrio(&Assign.os_assign_read_vector); | ||||
| 
 | ||||
|     SetSystemRunningTask(FirstRunningTask); | ||||
| 
 | ||||
|     KPrintf("DEBUG: calling SwitchToFirstRunningTask.\n"); | ||||
|     SwitchToFirstRunningTask(FirstRunningTask); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -155,6 +155,7 @@ void _InitSubCmpts(struct InitSequenceDesc sub_cmpts[]) | |||
| #ifdef KERNEL_COMPONENTS_INIT | ||||
| void EnvInitKTask(void *parameter) | ||||
| { | ||||
| 	KPrintf("DEBUG: RUNNING ENV TASK\n"); | ||||
| 	x_base lock = 0; | ||||
| 	lock = DISABLE_INTERRUPT(); | ||||
| 	_InitSubCmpts(prev_cmpts_init); | ||||
|  | @ -187,12 +188,14 @@ void CreateEnvInitTask(void) | |||
| 
 | ||||
|     env_init = KTaskCreate("env_init", EnvInitKTask, NONE, | ||||
| 		ENV_INIT_KTASK_STACK_SIZE, KTASK_PRIORITY_MAX - 1); | ||||
|     if(env_init < 0) {		 | ||||
| 	KPrintf("DEBUG: Env KTaskCreate end. env_init: %i.\n", env_init); | ||||
| 	if (env_init < 0) { | ||||
| 		KPrintf("env_init create failed ...%s %d.\n",__FUNCTION__,__LINE__); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	StartupKTask(env_init); | ||||
| 	KPrintf("DEBUG: Env StartupTask end.\n"); | ||||
| } | ||||
| #endif   /* KERNEL_COMPONENTS_INIT */ | ||||
| 
 | ||||
|  | @ -250,8 +253,8 @@ extern int InitUserspace(void); | |||
|     StartWatchdog(); | ||||
| #endif | ||||
| 
 | ||||
| 	KPrintf("DEBUG: calling StartipOsAssign.\n"); | ||||
| 	StartupOsAssign(); | ||||
| 	 | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,23 +1,26 @@ | |||
| menu "Lib" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| menuconfig LIB | ||||
|     bool "Enable libc APIs from toolchain" | ||||
|     default y | ||||
| 
 | ||||
| 
 | ||||
|     if LIB  | ||||
|         config LIB_POSIX | ||||
|             bool "Enable POSIX layer for poll/select, stdin etc" | ||||
|             default y | ||||
|     endif | ||||
| 
 | ||||
|     choice  | ||||
|         prompt "select libc" | ||||
|         default LIB_NEWLIB | ||||
| 
 | ||||
|         config LIB_NEWLIB | ||||
|             bool "use newlib as libc realization." | ||||
| 
 | ||||
|         config LIB_MUSLLIB | ||||
|             bool "use musllib as libc realization." | ||||
|     endchoice | ||||
| 
 | ||||
| source "$KERNEL_DIR/lib/libcpp/Kconfig" | ||||
| 
 | ||||
| source "$KERNEL_DIR/lib/newlib/Kconfig" | ||||
| 
 | ||||
| endmenu | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| SRC_DIR :=     | ||||
| 
 | ||||
| MUSL_DIR := | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -11,6 +11,10 @@ ifeq ($(CONFIG_LIB_CPLUSPLUS),y) | |||
| SRC_DIR += libcpp | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||
| # SRC_DIR += musllib
 | ||||
| # MUSL_DIR += musllib
 | ||||
| endif | ||||
| 
 | ||||
| include $(KERNEL_ROOT)/compiler.mk | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,3 @@ | |||
| menuconfig LIB_MUSLLIB | ||||
| bool "Enable Musllib " | ||||
| default y | ||||
|  | @ -0,0 +1,5 @@ | |||
| SRC_DIR := src | ||||
| MUSL_DIR := src | ||||
| 
 | ||||
| 
 | ||||
| include $(KERNEL_ROOT)/compiler.mk | ||||
|  | @ -0,0 +1 @@ | |||
| COMPAT_SRC_DIRS = compat/time32 | ||||
|  | @ -0,0 +1,107 @@ | |||
| #include "libc.h" | ||||
| 
 | ||||
| #if __ARM_ARCH_4__ || __ARM_ARCH_4T__ || __ARM_ARCH == 4 | ||||
| #define BLX "mov lr,pc\n\tbx" | ||||
| #else | ||||
| #define BLX "blx" | ||||
| #endif | ||||
| 
 | ||||
| extern hidden uintptr_t __a_cas_ptr, __a_barrier_ptr; | ||||
| 
 | ||||
| #if ((__ARM_ARCH_6__ || __ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \ | ||||
|  || __ARM_ARCH_6T2__ || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 | ||||
| 
 | ||||
| #define a_ll a_ll | ||||
| static inline int a_ll(volatile int *p) | ||||
| { | ||||
| 	int v; | ||||
| 	__asm__ __volatile__ ("ldrex %0, %1" : "=r"(v) : "Q"(*p)); | ||||
| 	return v; | ||||
| } | ||||
| 
 | ||||
| #define a_sc a_sc | ||||
| static inline int a_sc(volatile int *p, int v) | ||||
| { | ||||
| 	int r; | ||||
| 	__asm__ __volatile__ ("strex %0,%2,%1" : "=&r"(r), "=Q"(*p) : "r"(v) : "memory"); | ||||
| 	return !r; | ||||
| } | ||||
| 
 | ||||
| #if __ARM_ARCH_7A__ || __ARM_ARCH_7R__ ||  __ARM_ARCH >= 7 | ||||
| 
 | ||||
| #define a_barrier a_barrier | ||||
| static inline void a_barrier() | ||||
| { | ||||
| 	__asm__ __volatile__ ("dmb ish" : : : "memory"); | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #define a_pre_llsc a_barrier | ||||
| #define a_post_llsc a_barrier | ||||
| 
 | ||||
| #else | ||||
| 
 | ||||
| #define a_cas a_cas | ||||
| static inline int a_cas(volatile int *p, int t, int s) | ||||
| { | ||||
| 	for (;;) { | ||||
| 		register int r0 __asm__("r0") = t; | ||||
| 		register int r1 __asm__("r1") = s; | ||||
| 		register volatile int *r2 __asm__("r2") = p; | ||||
| 		register uintptr_t r3 __asm__("r3") = __a_cas_ptr; | ||||
| 		int old; | ||||
| 		__asm__ __volatile__ ( | ||||
| 			BLX " r3" | ||||
| 			: "+r"(r0), "+r"(r3) : "r"(r1), "r"(r2) | ||||
| 			: "memory", "lr", "ip", "cc" ); | ||||
| 		if (!r0) return t; | ||||
| 		if ((old=*p)!=t) return old; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #ifndef a_barrier | ||||
| #define a_barrier a_barrier | ||||
| static inline void a_barrier() | ||||
| { | ||||
| 	register uintptr_t ip __asm__("ip") = __a_barrier_ptr; | ||||
| 	__asm__ __volatile__( BLX " ip" : "+r"(ip) : : "memory", "cc", "lr" ); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| #define a_crash a_crash | ||||
| static inline void a_crash() | ||||
| { | ||||
| 	__asm__ __volatile__( | ||||
| #ifndef __thumb__ | ||||
| 		".word 0xe7f000f0" | ||||
| #else | ||||
| 		".short 0xdeff" | ||||
| #endif | ||||
| 		: : : "memory"); | ||||
| } | ||||
| 
 | ||||
| #if __ARM_ARCH >= 5 && (!__thumb__ || __thumb2__) | ||||
| 
 | ||||
| #define a_clz_32 a_clz_32 | ||||
| static inline int a_clz_32(uint32_t x) | ||||
| { | ||||
| 	__asm__ ("clz %0, %1" : "=r"(x) : "r"(x)); | ||||
| 	return x; | ||||
| } | ||||
| 
 | ||||
| #if __ARM_ARCH_6T2__ || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 | ||||
| 
 | ||||
| #define a_ctz_32 a_ctz_32 | ||||
| static inline int a_ctz_32(uint32_t x) | ||||
| { | ||||
| 	uint32_t xr; | ||||
| 	__asm__ ("rbit %0, %1" : "=r"(xr) : "r"(x)); | ||||
| 	return a_clz_32(xr); | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
|  | @ -0,0 +1,21 @@ | |||
| #define _REDIR_TIME64 1 | ||||
| #define _Addr int | ||||
| #define _Int64 long long | ||||
| #define _Reg int | ||||
| 
 | ||||
| #if __ARMEB__ | ||||
| #define __BYTE_ORDER 4321 | ||||
| #else | ||||
| #define __BYTE_ORDER 1234 | ||||
| #endif | ||||
| 
 | ||||
| #define __LONG_MAX 0x7fffffffL | ||||
| 
 | ||||
| #ifndef __cplusplus | ||||
| TYPEDEF unsigned wchar_t; | ||||
| #endif | ||||
| 
 | ||||
| TYPEDEF float float_t; | ||||
| TYPEDEF double double_t; | ||||
| 
 | ||||
| TYPEDEF struct { long long __ll; long double __ld; } max_align_t; | ||||
|  | @ -0,0 +1,40 @@ | |||
| #define O_CREAT        0100 | ||||
| #define O_EXCL         0200 | ||||
| #define O_NOCTTY       0400 | ||||
| #define O_TRUNC       01000 | ||||
| #define O_APPEND      02000 | ||||
| #define O_NONBLOCK    04000 | ||||
| #define O_DSYNC      010000 | ||||
| #define O_SYNC     04010000 | ||||
| #define O_RSYNC    04010000 | ||||
| #define O_DIRECTORY  040000 | ||||
| #define O_NOFOLLOW  0100000 | ||||
| #define O_CLOEXEC  02000000 | ||||
| 
 | ||||
| #define O_ASYNC      020000 | ||||
| #define O_DIRECT    0200000 | ||||
| #define O_LARGEFILE 0400000 | ||||
| #define O_NOATIME  01000000 | ||||
| #define O_PATH    010000000 | ||||
| #define O_TMPFILE 020040000 | ||||
| #define O_NDELAY O_NONBLOCK | ||||
| 
 | ||||
| #define F_DUPFD  0 | ||||
| #define F_GETFD  1 | ||||
| #define F_SETFD  2 | ||||
| #define F_GETFL  3 | ||||
| #define F_SETFL  4 | ||||
| 
 | ||||
| #define F_SETOWN 8 | ||||
| #define F_GETOWN 9 | ||||
| #define F_SETSIG 10 | ||||
| #define F_GETSIG 11 | ||||
| 
 | ||||
| #define F_GETLK 12 | ||||
| #define F_SETLK 13 | ||||
| #define F_SETLKW 14 | ||||
| 
 | ||||
| #define F_SETOWN_EX 15 | ||||
| #define F_GETOWN_EX 16 | ||||
| 
 | ||||
| #define F_GETOWNER_UIDS 17 | ||||
|  | @ -0,0 +1,23 @@ | |||
| #ifndef __ARM_PCS_VFP | ||||
| #define FE_ALL_EXCEPT 0 | ||||
| #define FE_TONEAREST  0 | ||||
| #else | ||||
| #define FE_INVALID    1 | ||||
| #define FE_DIVBYZERO  2 | ||||
| #define FE_OVERFLOW   4 | ||||
| #define FE_UNDERFLOW  8 | ||||
| #define FE_INEXACT    16 | ||||
| #define FE_ALL_EXCEPT 31 | ||||
| #define FE_TONEAREST  0 | ||||
| #define FE_DOWNWARD   0x800000 | ||||
| #define FE_UPWARD     0x400000 | ||||
| #define FE_TOWARDZERO 0xc00000 | ||||
| #endif | ||||
| 
 | ||||
| typedef unsigned long fexcept_t; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	unsigned long __cw; | ||||
| } fenv_t; | ||||
| 
 | ||||
| #define FE_DFL_ENV      ((const fenv_t *) -1) | ||||
|  | @ -0,0 +1,16 @@ | |||
| #define FLT_EVAL_METHOD 0 | ||||
| 
 | ||||
| #define LDBL_TRUE_MIN 4.94065645841246544177e-324L | ||||
| #define LDBL_MIN 2.22507385850720138309e-308L | ||||
| #define LDBL_MAX 1.79769313486231570815e+308L | ||||
| #define LDBL_EPSILON 2.22044604925031308085e-16L | ||||
| 
 | ||||
| #define LDBL_MANT_DIG 53 | ||||
| #define LDBL_MIN_EXP (-1021) | ||||
| #define LDBL_MAX_EXP 1024 | ||||
| 
 | ||||
| #define LDBL_DIG 15 | ||||
| #define LDBL_MIN_10_EXP (-307) | ||||
| #define LDBL_MAX_10_EXP 308 | ||||
| 
 | ||||
| #define DECIMAL_DIG 17 | ||||
|  | @ -0,0 +1,53 @@ | |||
| #define HWCAP_SWP	(1 << 0) | ||||
| #define HWCAP_HALF	(1 << 1) | ||||
| #define HWCAP_THUMB	(1 << 2) | ||||
| #define HWCAP_26BIT	(1 << 3) | ||||
| #define HWCAP_FAST_MULT	(1 << 4) | ||||
| #define HWCAP_FPA	(1 << 5) | ||||
| #define HWCAP_VFP	(1 << 6) | ||||
| #define HWCAP_EDSP	(1 << 7) | ||||
| #define HWCAP_JAVA	(1 << 8) | ||||
| #define HWCAP_IWMMXT	(1 << 9) | ||||
| #define HWCAP_CRUNCH	(1 << 10) | ||||
| #define HWCAP_THUMBEE	(1 << 11) | ||||
| #define HWCAP_NEON	(1 << 12) | ||||
| #define HWCAP_VFPv3	(1 << 13) | ||||
| #define HWCAP_VFPv3D16	(1 << 14) | ||||
| #define HWCAP_TLS	(1 << 15) | ||||
| #define HWCAP_VFPv4	(1 << 16) | ||||
| #define HWCAP_IDIVA	(1 << 17) | ||||
| #define HWCAP_IDIVT	(1 << 18) | ||||
| #define HWCAP_VFPD32	(1 << 19) | ||||
| #define HWCAP_IDIV	(HWCAP_IDIVA | HWCAP_IDIVT) | ||||
| #define HWCAP_LPAE	(1 << 20) | ||||
| #define HWCAP_EVTSTRM	(1 << 21) | ||||
| 
 | ||||
| #define HWCAP2_AES	(1 << 0) | ||||
| #define HWCAP2_PMULL	(1 << 1) | ||||
| #define HWCAP2_SHA1	(1 << 2) | ||||
| #define HWCAP2_SHA2	(1 << 3) | ||||
| #define HWCAP2_CRC32	(1 << 4) | ||||
| 
 | ||||
| #define HWCAP_ARM_SWP	(1 << 0) | ||||
| #define HWCAP_ARM_HALF	(1 << 1) | ||||
| #define HWCAP_ARM_THUMB	(1 << 2) | ||||
| #define HWCAP_ARM_26BIT	(1 << 3) | ||||
| #define HWCAP_ARM_FAST_MULT	(1 << 4) | ||||
| #define HWCAP_ARM_FPA	(1 << 5) | ||||
| #define HWCAP_ARM_VFP	(1 << 6) | ||||
| #define HWCAP_ARM_EDSP	(1 << 7) | ||||
| #define HWCAP_ARM_JAVA	(1 << 8) | ||||
| #define HWCAP_ARM_IWMMXT	(1 << 9) | ||||
| #define HWCAP_ARM_CRUNCH	(1 << 10) | ||||
| #define HWCAP_ARM_THUMBEE	(1 << 11) | ||||
| #define HWCAP_ARM_NEON	(1 << 12) | ||||
| #define HWCAP_ARM_VFPv3	(1 << 13) | ||||
| #define HWCAP_ARM_VFPv3D16	(1 << 14) | ||||
| #define HWCAP_ARM_TLS	(1 << 15) | ||||
| #define HWCAP_ARM_VFPv4	(1 << 16) | ||||
| #define HWCAP_ARM_IDIVA	(1 << 17) | ||||
| #define HWCAP_ARM_IDIVT	(1 << 18) | ||||
| #define HWCAP_ARM_VFPD32	(1 << 19) | ||||
| #define HWCAP_ARM_IDIV	(HWCAP_ARM_IDIVA | HWCAP_ARM_IDIVT) | ||||
| #define HWCAP_ARM_LPAE	(1 << 20) | ||||
| #define HWCAP_ARM_EVTSTRM	(1 << 21) | ||||
|  | @ -0,0 +1,2 @@ | |||
| #undef FIOQSIZE | ||||
| #define FIOQSIZE 0x545e | ||||
|  | @ -0,0 +1 @@ | |||
| #define IPC_STAT 0x102 | ||||
|  | @ -0,0 +1,18 @@ | |||
| struct msqid_ds { | ||||
| 	struct ipc_perm msg_perm; | ||||
| 	unsigned long __msg_stime_lo; | ||||
| 	unsigned long __msg_stime_hi; | ||||
| 	unsigned long __msg_rtime_lo; | ||||
| 	unsigned long __msg_rtime_hi; | ||||
| 	unsigned long __msg_ctime_lo; | ||||
| 	unsigned long __msg_ctime_hi; | ||||
| 	unsigned long msg_cbytes; | ||||
| 	msgqnum_t msg_qnum; | ||||
| 	msglen_t msg_qbytes; | ||||
| 	pid_t msg_lspid; | ||||
| 	pid_t msg_lrpid; | ||||
| 	unsigned long __unused[2]; | ||||
| 	time_t msg_stime; | ||||
| 	time_t msg_rtime; | ||||
| 	time_t msg_ctime; | ||||
| }; | ||||
|  | @ -0,0 +1,2 @@ | |||
| #define _POSIX_V6_ILP32_OFFBIG  1 | ||||
| #define _POSIX_V7_ILP32_OFFBIG  1 | ||||
|  | @ -0,0 +1,25 @@ | |||
| #define PTRACE_GETWMMXREGS	18 | ||||
| #define PTRACE_SETWMMXREGS	19 | ||||
| #define PTRACE_GET_THREAD_AREA	22 | ||||
| #define PTRACE_SET_SYSCALL	23 | ||||
| #define PTRACE_GETCRUNCHREGS	25 | ||||
| #define PTRACE_SETCRUNCHREGS	26 | ||||
| #define PTRACE_GETVFPREGS	27 | ||||
| #define PTRACE_SETVFPREGS	28 | ||||
| #define PTRACE_GETHBPREGS	29 | ||||
| #define PTRACE_SETHBPREGS	30 | ||||
| #define PTRACE_GETFDPIC		31 | ||||
| #define PTRACE_GETFDPIC_EXEC	0 | ||||
| #define PTRACE_GETFDPIC_INTERP	1 | ||||
| 
 | ||||
| #define PT_GETWMMXREGS PTRACE_GETWMMXREGS | ||||
| #define PT_SETWMMXREGS PTRACE_SETWMMXREGS | ||||
| #define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA | ||||
| #define PT_SET_SYSCALL PTRACE_SET_SYSCALL | ||||
| #define PT_GETCRUNCHREGS PTRACE_GETCRUNCHREGS | ||||
| #define PT_SETCRUNCHREGS PTRACE_SETCRUNCHREGS | ||||
| #define PT_GETVFPREGS PTRACE_GETVFPREGS | ||||
| #define PT_SETVFPREGS PTRACE_SETVFPREGS | ||||
| #define PT_GETHBPREGS PTRACE_GETHBPREGS | ||||
| #define PT_SETHBPREGS PTRACE_SETHBPREGS | ||||
| #define PT_GETFDPIC PTRACE_GETFDPIC | ||||
|  | @ -0,0 +1,3 @@ | |||
| #undef __WORDSIZE | ||||
| #define __WORDSIZE 32 | ||||
| /* FIXME */ | ||||
|  | @ -0,0 +1,18 @@ | |||
| struct semid_ds { | ||||
| 	struct ipc_perm sem_perm; | ||||
| 	unsigned long __sem_otime_lo; | ||||
| 	unsigned long __sem_otime_hi; | ||||
| 	unsigned long __sem_ctime_lo; | ||||
| 	unsigned long __sem_ctime_hi; | ||||
| #if __BYTE_ORDER == __LITTLE_ENDIAN | ||||
| 	unsigned short sem_nsems; | ||||
| 	char __sem_nsems_pad[sizeof(long)-sizeof(short)]; | ||||
| #else | ||||
| 	char __sem_nsems_pad[sizeof(long)-sizeof(short)]; | ||||
| 	unsigned short sem_nsems; | ||||
| #endif | ||||
| 	long __unused3; | ||||
| 	long __unused4; | ||||
| 	time_t sem_otime; | ||||
| 	time_t sem_ctime; | ||||
| }; | ||||
|  | @ -0,0 +1 @@ | |||
| typedef unsigned long long __jmp_buf[32]; | ||||
|  | @ -0,0 +1,31 @@ | |||
| #define SHMLBA 4096 | ||||
| 
 | ||||
| struct shmid_ds { | ||||
| 	struct ipc_perm shm_perm; | ||||
| 	size_t shm_segsz; | ||||
| 	unsigned long __shm_atime_lo; | ||||
| 	unsigned long __shm_atime_hi; | ||||
| 	unsigned long __shm_dtime_lo; | ||||
| 	unsigned long __shm_dtime_hi; | ||||
| 	unsigned long __shm_ctime_lo; | ||||
| 	unsigned long __shm_ctime_hi; | ||||
| 	pid_t shm_cpid; | ||||
| 	pid_t shm_lpid; | ||||
| 	unsigned long shm_nattch; | ||||
| 	unsigned long __pad1; | ||||
| 	unsigned long __pad2; | ||||
| 	unsigned long __pad3; | ||||
| 	time_t shm_atime; | ||||
| 	time_t shm_dtime; | ||||
| 	time_t shm_ctime; | ||||
| }; | ||||
| 
 | ||||
| struct shminfo { | ||||
| 	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; | ||||
| }; | ||||
| 
 | ||||
| struct shm_info { | ||||
| 	int __used_ids; | ||||
| 	unsigned long shm_tot, shm_rss, shm_swp; | ||||
| 	unsigned long __swap_attempts, __swap_successes; | ||||
| }; | ||||
|  | @ -0,0 +1,86 @@ | |||
| #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ | ||||
|  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | ||||
| 
 | ||||
| #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | ||||
| #define MINSIGSTKSZ 2048 | ||||
| #define SIGSTKSZ 8192 | ||||
| #endif | ||||
| 
 | ||||
| #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | ||||
| typedef int greg_t, gregset_t[18]; | ||||
| typedef struct sigcontext { | ||||
| 	unsigned long trap_no, error_code, oldmask; | ||||
| 	unsigned long arm_r0, arm_r1, arm_r2, arm_r3; | ||||
| 	unsigned long arm_r4, arm_r5, arm_r6, arm_r7; | ||||
| 	unsigned long arm_r8, arm_r9, arm_r10, arm_fp; | ||||
| 	unsigned long arm_ip, arm_sp, arm_lr, arm_pc; | ||||
| 	unsigned long arm_cpsr, fault_address; | ||||
| } mcontext_t; | ||||
| #else | ||||
| typedef struct { | ||||
| 	unsigned long __regs[21]; | ||||
| } mcontext_t; | ||||
| #endif | ||||
| 
 | ||||
| struct sigaltstack { | ||||
| 	void *ss_sp; | ||||
| 	int ss_flags; | ||||
| 	size_t ss_size; | ||||
| }; | ||||
| 
 | ||||
| typedef struct __ucontext { | ||||
| 	unsigned long uc_flags; | ||||
| 	struct __ucontext *uc_link; | ||||
| 	stack_t uc_stack; | ||||
| 	mcontext_t uc_mcontext; | ||||
| 	sigset_t uc_sigmask; | ||||
| 	unsigned long long uc_regspace[64]; | ||||
| } ucontext_t; | ||||
| 
 | ||||
| #define SA_NOCLDSTOP  1 | ||||
| #define SA_NOCLDWAIT  2 | ||||
| #define SA_SIGINFO    4 | ||||
| #define SA_ONSTACK    0x08000000 | ||||
| #define SA_RESTART    0x10000000 | ||||
| #define SA_NODEFER    0x40000000 | ||||
| #define SA_RESETHAND  0x80000000 | ||||
| #define SA_RESTORER   0x04000000 | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #define SIGHUP    1 | ||||
| #define SIGINT    2 | ||||
| #define SIGQUIT   3 | ||||
| #define SIGILL    4 | ||||
| #define SIGTRAP   5 | ||||
| #define SIGABRT   6 | ||||
| #define SIGIOT    SIGABRT | ||||
| #define SIGBUS    7 | ||||
| #define SIGFPE    8 | ||||
| #define SIGKILL   9 | ||||
| #define SIGUSR1   10 | ||||
| #define SIGSEGV   11 | ||||
| #define SIGUSR2   12 | ||||
| #define SIGPIPE   13 | ||||
| #define SIGALRM   14 | ||||
| #define SIGTERM   15 | ||||
| #define SIGSTKFLT 16 | ||||
| #define SIGCHLD   17 | ||||
| #define SIGCONT   18 | ||||
| #define SIGSTOP   19 | ||||
| #define SIGTSTP   20 | ||||
| #define SIGTTIN   21 | ||||
| #define SIGTTOU   22 | ||||
| #define SIGURG    23 | ||||
| #define SIGXCPU   24 | ||||
| #define SIGXFSZ   25 | ||||
| #define SIGVTALRM 26 | ||||
| #define SIGPROF   27 | ||||
| #define SIGWINCH  28 | ||||
| #define SIGIO     29 | ||||
| #define SIGPOLL   29 | ||||
| #define SIGPWR    30 | ||||
| #define SIGSYS    31 | ||||
| #define SIGUNUSED SIGSYS | ||||
| 
 | ||||
| #define _NSIG 65 | ||||
|  | @ -0,0 +1,25 @@ | |||
| /* copied from kernel definition, but with padding replaced
 | ||||
|  * by the corresponding correctly-sized userspace types. */ | ||||
| 
 | ||||
| struct stat { | ||||
| 	dev_t st_dev; | ||||
| 	int __st_dev_padding; | ||||
| 	long __st_ino_truncated; | ||||
| 	mode_t st_mode; | ||||
| 	nlink_t st_nlink; | ||||
| 	uid_t st_uid; | ||||
| 	gid_t st_gid; | ||||
| 	dev_t st_rdev; | ||||
| 	int __st_rdev_padding; | ||||
| 	off_t st_size; | ||||
| 	blksize_t st_blksize; | ||||
| 	blkcnt_t st_blocks; | ||||
| 	struct { | ||||
| 		long tv_sec; | ||||
| 		long tv_nsec; | ||||
| 	} __st_atim32, __st_mtim32, __st_ctim32; | ||||
| 	ino_t st_ino; | ||||
| 	struct timespec st_atim; | ||||
| 	struct timespec st_mtim; | ||||
| 	struct timespec st_ctim; | ||||
| }; | ||||
|  | @ -0,0 +1,20 @@ | |||
| typedef int32_t int_fast16_t; | ||||
| typedef int32_t int_fast32_t; | ||||
| typedef uint32_t uint_fast16_t; | ||||
| typedef uint32_t uint_fast32_t; | ||||
| 
 | ||||
| #define INT_FAST16_MIN  INT32_MIN | ||||
| #define INT_FAST32_MIN  INT32_MIN | ||||
| 
 | ||||
| #define INT_FAST16_MAX  INT32_MAX | ||||
| #define INT_FAST32_MAX  INT32_MAX | ||||
| 
 | ||||
| #define UINT_FAST16_MAX UINT32_MAX | ||||
| #define UINT_FAST32_MAX UINT32_MAX | ||||
| 
 | ||||
| #define INTPTR_MIN      INT32_MIN | ||||
| #define INTPTR_MAX      INT32_MAX | ||||
| #define UINTPTR_MAX     UINT32_MAX | ||||
| #define PTRDIFF_MIN     INT32_MIN | ||||
| #define PTRDIFF_MAX     INT32_MAX | ||||
| #define SIZE_MAX        UINT32_MAX | ||||
|  | @ -0,0 +1,409 @@ | |||
| #define __NR_restart_syscall	0 | ||||
| #define __NR_exit	1 | ||||
| #define __NR_fork	2 | ||||
| #define __NR_read	3 | ||||
| #define __NR_write	4 | ||||
| #define __NR_open	5 | ||||
| #define __NR_close	6 | ||||
| #define __NR_creat	8 | ||||
| #define __NR_link	9 | ||||
| #define __NR_unlink	10 | ||||
| #define __NR_execve	11 | ||||
| #define __NR_chdir	12 | ||||
| #define __NR_mknod	14 | ||||
| #define __NR_chmod	15 | ||||
| #define __NR_lchown	16 | ||||
| #define __NR_lseek	19 | ||||
| #define __NR_getpid	20 | ||||
| #define __NR_mount	21 | ||||
| #define __NR_setuid	23 | ||||
| #define __NR_getuid	24 | ||||
| #define __NR_ptrace	26 | ||||
| #define __NR_pause	29 | ||||
| #define __NR_access	33 | ||||
| #define __NR_nice	34 | ||||
| #define __NR_sync	36 | ||||
| #define __NR_kill	37 | ||||
| #define __NR_rename	38 | ||||
| #define __NR_mkdir	39 | ||||
| #define __NR_rmdir	40 | ||||
| #define __NR_dup	41 | ||||
| #define __NR_pipe	42 | ||||
| #define __NR_times	43 | ||||
| #define __NR_brk	45 | ||||
| #define __NR_setgid	46 | ||||
| #define __NR_getgid	47 | ||||
| #define __NR_geteuid	49 | ||||
| #define __NR_getegid	50 | ||||
| #define __NR_acct	51 | ||||
| #define __NR_umount2	52 | ||||
| #define __NR_ioctl	54 | ||||
| #define __NR_fcntl	55 | ||||
| #define __NR_setpgid	57 | ||||
| #define __NR_umask	60 | ||||
| #define __NR_chroot	61 | ||||
| #define __NR_ustat	62 | ||||
| #define __NR_dup2	63 | ||||
| #define __NR_getppid	64 | ||||
| #define __NR_getpgrp	65 | ||||
| #define __NR_setsid	66 | ||||
| #define __NR_sigaction	67 | ||||
| #define __NR_setreuid	70 | ||||
| #define __NR_setregid	71 | ||||
| #define __NR_sigsuspend	72 | ||||
| #define __NR_sigpending	73 | ||||
| #define __NR_sethostname	74 | ||||
| #define __NR_setrlimit	75 | ||||
| #define __NR_getrusage	77 | ||||
| #define __NR_gettimeofday_time32	78 | ||||
| #define __NR_settimeofday_time32	79 | ||||
| #define __NR_getgroups	80 | ||||
| #define __NR_setgroups	81 | ||||
| #define __NR_symlink	83 | ||||
| #define __NR_readlink	85 | ||||
| #define __NR_uselib	86 | ||||
| #define __NR_swapon	87 | ||||
| #define __NR_reboot	88 | ||||
| #define __NR_munmap	91 | ||||
| #define __NR_truncate	92 | ||||
| #define __NR_ftruncate	93 | ||||
| #define __NR_fchmod	94 | ||||
| #define __NR_fchown	95 | ||||
| #define __NR_getpriority	96 | ||||
| #define __NR_setpriority	97 | ||||
| #define __NR_statfs	99 | ||||
| #define __NR_fstatfs	100 | ||||
| #define __NR_syslog	103 | ||||
| #define __NR_setitimer	104 | ||||
| #define __NR_getitimer	105 | ||||
| #define __NR_stat	106 | ||||
| #define __NR_lstat	107 | ||||
| #define __NR_fstat	108 | ||||
| #define __NR_vhangup	111 | ||||
| #define __NR_wait4	114 | ||||
| #define __NR_swapoff	115 | ||||
| #define __NR_sysinfo	116 | ||||
| #define __NR_fsync	118 | ||||
| #define __NR_sigreturn	119 | ||||
| #define __NR_clone	120 | ||||
| #define __NR_setdomainname	121 | ||||
| #define __NR_uname	122 | ||||
| #define __NR_adjtimex	124 | ||||
| #define __NR_mprotect	125 | ||||
| #define __NR_sigprocmask	126 | ||||
| #define __NR_init_module	128 | ||||
| #define __NR_delete_module	129 | ||||
| #define __NR_quotactl	131 | ||||
| #define __NR_getpgid	132 | ||||
| #define __NR_fchdir	133 | ||||
| #define __NR_bdflush	134 | ||||
| #define __NR_sysfs	135 | ||||
| #define __NR_personality	136 | ||||
| #define __NR_setfsuid	138 | ||||
| #define __NR_setfsgid	139 | ||||
| #define __NR__llseek	140 | ||||
| #define __NR_getdents	141 | ||||
| #define __NR__newselect	142 | ||||
| #define __NR_flock	143 | ||||
| #define __NR_msync	144 | ||||
| #define __NR_readv	145 | ||||
| #define __NR_writev	146 | ||||
| #define __NR_getsid	147 | ||||
| #define __NR_fdatasync	148 | ||||
| #define __NR__sysctl	149 | ||||
| #define __NR_mlock	150 | ||||
| #define __NR_munlock	151 | ||||
| #define __NR_mlockall	152 | ||||
| #define __NR_munlockall	153 | ||||
| #define __NR_sched_setparam	154 | ||||
| #define __NR_sched_getparam	155 | ||||
| #define __NR_sched_setscheduler	156 | ||||
| #define __NR_sched_getscheduler	157 | ||||
| #define __NR_sched_yield	158 | ||||
| #define __NR_sched_get_priority_max	159 | ||||
| #define __NR_sched_get_priority_min	160 | ||||
| #define __NR_sched_rr_get_interval	161 | ||||
| #define __NR_nanosleep	162 | ||||
| #define __NR_mremap	163 | ||||
| #define __NR_setresuid	164 | ||||
| #define __NR_getresuid	165 | ||||
| #define __NR_poll	168 | ||||
| #define __NR_nfsservctl	169 | ||||
| #define __NR_setresgid	170 | ||||
| #define __NR_getresgid	171 | ||||
| #define __NR_prctl	172 | ||||
| #define __NR_rt_sigreturn	173 | ||||
| #define __NR_rt_sigaction	174 | ||||
| #define __NR_rt_sigprocmask	175 | ||||
| #define __NR_rt_sigpending	176 | ||||
| #define __NR_rt_sigtimedwait	177 | ||||
| #define __NR_rt_sigqueueinfo	178 | ||||
| #define __NR_rt_sigsuspend	179 | ||||
| #define __NR_pread64	180 | ||||
| #define __NR_pwrite64	181 | ||||
| #define __NR_chown	182 | ||||
| #define __NR_getcwd	183 | ||||
| #define __NR_capget	184 | ||||
| #define __NR_capset	185 | ||||
| #define __NR_sigaltstack	186 | ||||
| #define __NR_sendfile	187 | ||||
| #define __NR_vfork	190 | ||||
| #define __NR_ugetrlimit	191 | ||||
| #define __NR_mmap2	192 | ||||
| #define __NR_truncate64	193 | ||||
| #define __NR_ftruncate64	194 | ||||
| #define __NR_stat64	195 | ||||
| #define __NR_lstat64	196 | ||||
| #define __NR_fstat64	197 | ||||
| #define __NR_lchown32	198 | ||||
| #define __NR_getuid32	199 | ||||
| #define __NR_getgid32	200 | ||||
| #define __NR_geteuid32	201 | ||||
| #define __NR_getegid32	202 | ||||
| #define __NR_setreuid32	203 | ||||
| #define __NR_setregid32	204 | ||||
| #define __NR_getgroups32	205 | ||||
| #define __NR_setgroups32	206 | ||||
| #define __NR_fchown32	207 | ||||
| #define __NR_setresuid32	208 | ||||
| #define __NR_getresuid32	209 | ||||
| #define __NR_setresgid32	210 | ||||
| #define __NR_getresgid32	211 | ||||
| #define __NR_chown32	212 | ||||
| #define __NR_setuid32	213 | ||||
| #define __NR_setgid32	214 | ||||
| #define __NR_setfsuid32	215 | ||||
| #define __NR_setfsgid32	216 | ||||
| #define __NR_getdents64	217 | ||||
| #define __NR_pivot_root	218 | ||||
| #define __NR_mincore	219 | ||||
| #define __NR_madvise	220 | ||||
| #define __NR_fcntl64	221 | ||||
| #define __NR_gettid	224 | ||||
| #define __NR_readahead	225 | ||||
| #define __NR_setxattr	226 | ||||
| #define __NR_lsetxattr	227 | ||||
| #define __NR_fsetxattr	228 | ||||
| #define __NR_getxattr	229 | ||||
| #define __NR_lgetxattr	230 | ||||
| #define __NR_fgetxattr	231 | ||||
| #define __NR_listxattr	232 | ||||
| #define __NR_llistxattr	233 | ||||
| #define __NR_flistxattr	234 | ||||
| #define __NR_removexattr	235 | ||||
| #define __NR_lremovexattr	236 | ||||
| #define __NR_fremovexattr	237 | ||||
| #define __NR_tkill	238 | ||||
| #define __NR_sendfile64	239 | ||||
| #define __NR_futex	240 | ||||
| #define __NR_sched_setaffinity	241 | ||||
| #define __NR_sched_getaffinity	242 | ||||
| #define __NR_io_setup	243 | ||||
| #define __NR_io_destroy	244 | ||||
| #define __NR_io_getevents	245 | ||||
| #define __NR_io_submit	246 | ||||
| #define __NR_io_cancel	247 | ||||
| #define __NR_exit_group	248 | ||||
| #define __NR_lookup_dcookie	249 | ||||
| #define __NR_epoll_create	250 | ||||
| #define __NR_epoll_ctl	251 | ||||
| #define __NR_epoll_wait	252 | ||||
| #define __NR_remap_file_pages	253 | ||||
| #define __NR_set_tid_address	256 | ||||
| #define __NR_timer_create	257 | ||||
| #define __NR_timer_settime32	258 | ||||
| #define __NR_timer_gettime32	259 | ||||
| #define __NR_timer_getoverrun	260 | ||||
| #define __NR_timer_delete	261 | ||||
| #define __NR_clock_settime32	262 | ||||
| #define __NR_clock_gettime32	263 | ||||
| #define __NR_clock_getres_time32	264 | ||||
| #define __NR_clock_nanosleep_time32	265 | ||||
| #define __NR_statfs64	266 | ||||
| #define __NR_fstatfs64	267 | ||||
| #define __NR_tgkill	268 | ||||
| #define __NR_utimes	269 | ||||
| #define __NR_fadvise64_64	270 | ||||
| #define __NR_arm_fadvise64_64	270 | ||||
| #define __NR_pciconfig_iobase	271 | ||||
| #define __NR_pciconfig_read	272 | ||||
| #define __NR_pciconfig_write	273 | ||||
| #define __NR_mq_open	274 | ||||
| #define __NR_mq_unlink	275 | ||||
| #define __NR_mq_timedsend	276 | ||||
| #define __NR_mq_timedreceive	277 | ||||
| #define __NR_mq_notify	278 | ||||
| #define __NR_mq_getsetattr	279 | ||||
| #define __NR_waitid	280 | ||||
| #define __NR_socket	281 | ||||
| #define __NR_bind	282 | ||||
| #define __NR_connect	283 | ||||
| #define __NR_listen	284 | ||||
| #define __NR_accept	285 | ||||
| #define __NR_getsockname	286 | ||||
| #define __NR_getpeername	287 | ||||
| #define __NR_socketpair	288 | ||||
| #define __NR_send	289 | ||||
| #define __NR_sendto	290 | ||||
| #define __NR_recv	291 | ||||
| #define __NR_recvfrom	292 | ||||
| #define __NR_shutdown	293 | ||||
| #define __NR_setsockopt	294 | ||||
| #define __NR_getsockopt	295 | ||||
| #define __NR_sendmsg	296 | ||||
| #define __NR_recvmsg	297 | ||||
| #define __NR_semop	298 | ||||
| #define __NR_semget	299 | ||||
| #define __NR_semctl	300 | ||||
| #define __NR_msgsnd	301 | ||||
| #define __NR_msgrcv	302 | ||||
| #define __NR_msgget	303 | ||||
| #define __NR_msgctl	304 | ||||
| #define __NR_shmat	305 | ||||
| #define __NR_shmdt	306 | ||||
| #define __NR_shmget	307 | ||||
| #define __NR_shmctl	308 | ||||
| #define __NR_add_key	309 | ||||
| #define __NR_request_key	310 | ||||
| #define __NR_keyctl	311 | ||||
| #define __NR_semtimedop	312 | ||||
| #define __NR_vserver	313 | ||||
| #define __NR_ioprio_set	314 | ||||
| #define __NR_ioprio_get	315 | ||||
| #define __NR_inotify_init	316 | ||||
| #define __NR_inotify_add_watch	317 | ||||
| #define __NR_inotify_rm_watch	318 | ||||
| #define __NR_mbind	319 | ||||
| #define __NR_get_mempolicy	320 | ||||
| #define __NR_set_mempolicy	321 | ||||
| #define __NR_openat	322 | ||||
| #define __NR_mkdirat	323 | ||||
| #define __NR_mknodat	324 | ||||
| #define __NR_fchownat	325 | ||||
| #define __NR_futimesat	326 | ||||
| #define __NR_fstatat64	327 | ||||
| #define __NR_unlinkat	328 | ||||
| #define __NR_renameat	329 | ||||
| #define __NR_linkat	330 | ||||
| #define __NR_symlinkat	331 | ||||
| #define __NR_readlinkat	332 | ||||
| #define __NR_fchmodat	333 | ||||
| #define __NR_faccessat	334 | ||||
| #define __NR_pselect6	335 | ||||
| #define __NR_ppoll	336 | ||||
| #define __NR_unshare	337 | ||||
| #define __NR_set_robust_list	338 | ||||
| #define __NR_get_robust_list	339 | ||||
| #define __NR_splice	340 | ||||
| #define __NR_sync_file_range2	341 | ||||
| #define __NR_arm_sync_file_range	341 | ||||
| #define __NR_tee	342 | ||||
| #define __NR_vmsplice	343 | ||||
| #define __NR_move_pages	344 | ||||
| #define __NR_getcpu	345 | ||||
| #define __NR_epoll_pwait	346 | ||||
| #define __NR_kexec_load	347 | ||||
| #define __NR_utimensat	348 | ||||
| #define __NR_signalfd	349 | ||||
| #define __NR_timerfd_create	350 | ||||
| #define __NR_eventfd	351 | ||||
| #define __NR_fallocate	352 | ||||
| #define __NR_timerfd_settime32	353 | ||||
| #define __NR_timerfd_gettime32	354 | ||||
| #define __NR_signalfd4	355 | ||||
| #define __NR_eventfd2	356 | ||||
| #define __NR_epoll_create1	357 | ||||
| #define __NR_dup3	358 | ||||
| #define __NR_pipe2	359 | ||||
| #define __NR_inotify_init1	360 | ||||
| #define __NR_preadv	361 | ||||
| #define __NR_pwritev	362 | ||||
| #define __NR_rt_tgsigqueueinfo	363 | ||||
| #define __NR_perf_event_open	364 | ||||
| #define __NR_recvmmsg	365 | ||||
| #define __NR_accept4	366 | ||||
| #define __NR_fanotify_init	367 | ||||
| #define __NR_fanotify_mark	368 | ||||
| #define __NR_prlimit64	369 | ||||
| #define __NR_name_to_handle_at	370 | ||||
| #define __NR_open_by_handle_at	371 | ||||
| #define __NR_clock_adjtime	372 | ||||
| #define __NR_syncfs	373 | ||||
| #define __NR_sendmmsg	374 | ||||
| #define __NR_setns	375 | ||||
| #define __NR_process_vm_readv	376 | ||||
| #define __NR_process_vm_writev	377 | ||||
| #define __NR_kcmp		378 | ||||
| #define __NR_finit_module	379 | ||||
| #define __NR_sched_setattr	380 | ||||
| #define __NR_sched_getattr	381 | ||||
| #define __NR_renameat2	382 | ||||
| #define __NR_seccomp	383 | ||||
| #define __NR_getrandom	384 | ||||
| #define __NR_memfd_create	385 | ||||
| #define __NR_bpf	386 | ||||
| #define __NR_execveat	387 | ||||
| #define __NR_userfaultfd	388 | ||||
| #define __NR_membarrier		389 | ||||
| #define __NR_mlock2		390 | ||||
| #define __NR_copy_file_range	391 | ||||
| #define __NR_preadv2	392 | ||||
| #define __NR_pwritev2	393 | ||||
| #define __NR_pkey_mprotect	394 | ||||
| #define __NR_pkey_alloc	395 | ||||
| #define __NR_pkey_free	396 | ||||
| #define __NR_statx	397 | ||||
| #define __NR_rseq	398 | ||||
| #define __NR_io_pgetevents	399 | ||||
| #define __NR_migrate_pages	400 | ||||
| #define __NR_kexec_file_load	401 | ||||
| #define __NR_clock_gettime64	403 | ||||
| #define __NR_clock_settime64	404 | ||||
| #define __NR_clock_adjtime64	405 | ||||
| #define __NR_clock_getres_time64	406 | ||||
| #define __NR_clock_nanosleep_time64	407 | ||||
| #define __NR_timer_gettime64	408 | ||||
| #define __NR_timer_settime64	409 | ||||
| #define __NR_timerfd_gettime64	410 | ||||
| #define __NR_timerfd_settime64	411 | ||||
| #define __NR_utimensat_time64	412 | ||||
| #define __NR_pselect6_time64	413 | ||||
| #define __NR_ppoll_time64	414 | ||||
| #define __NR_io_pgetevents_time64	416 | ||||
| #define __NR_recvmmsg_time64	417 | ||||
| #define __NR_mq_timedsend_time64	418 | ||||
| #define __NR_mq_timedreceive_time64	419 | ||||
| #define __NR_semtimedop_time64	420 | ||||
| #define __NR_rt_sigtimedwait_time64	421 | ||||
| #define __NR_futex_time64	422 | ||||
| #define __NR_sched_rr_get_interval_time64	423 | ||||
| #define __NR_pidfd_send_signal	424 | ||||
| #define __NR_io_uring_setup	425 | ||||
| #define __NR_io_uring_enter	426 | ||||
| #define __NR_io_uring_register	427 | ||||
| #define __NR_open_tree		428 | ||||
| #define __NR_move_mount		429 | ||||
| #define __NR_fsopen		430 | ||||
| #define __NR_fsconfig		431 | ||||
| #define __NR_fsmount		432 | ||||
| #define __NR_fspick		433 | ||||
| #define __NR_pidfd_open		434 | ||||
| #define __NR_clone3		435 | ||||
| #define __NR_close_range	436 | ||||
| #define __NR_openat2		437 | ||||
| #define __NR_pidfd_getfd	438 | ||||
| #define __NR_faccessat2		439 | ||||
| #define __NR_process_madvise	440 | ||||
| #define __NR_epoll_pwait2	441 | ||||
| #define __NR_mount_setattr	442 | ||||
| #define __NR_landlock_create_ruleset	444 | ||||
| #define __NR_landlock_add_rule	445 | ||||
| #define __NR_landlock_restrict_self	446 | ||||
| 
 | ||||
| #define __ARM_NR_breakpoint	0x0f0001 | ||||
| #define __ARM_NR_cacheflush	0x0f0002 | ||||
| #define __ARM_NR_usr26		0x0f0003 | ||||
| #define __ARM_NR_usr32		0x0f0004 | ||||
| #define __ARM_NR_set_tls	0x0f0005 | ||||
| #define __ARM_NR_get_tls	0x0f0006 | ||||
| 
 | ||||
|  | @ -0,0 +1,36 @@ | |||
| typedef struct user_fpregs { | ||||
| 	struct fp_reg { | ||||
| 		unsigned sign1:1; | ||||
| 		unsigned unused:15; | ||||
| 		unsigned sign2:1; | ||||
| 		unsigned exponent:14; | ||||
| 		unsigned j:1; | ||||
| 		unsigned mantissa1:31; | ||||
| 		unsigned mantissa0:32; | ||||
| 	} fpregs[8]; | ||||
| 	unsigned fpsr:32; | ||||
| 	unsigned fpcr:32; | ||||
| 	unsigned char ftype[8]; | ||||
| 	unsigned int init_flag; | ||||
| } elf_fpregset_t; | ||||
| 
 | ||||
| struct user_regs { | ||||
| 	unsigned long uregs[18]; | ||||
| }; | ||||
| #define ELF_NGREG 18 | ||||
| typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; | ||||
| 
 | ||||
| struct user { | ||||
| 	struct user_regs regs; | ||||
| 	int u_fpvalid; | ||||
| 	unsigned long u_tsize, u_dsize, u_ssize; | ||||
| 	unsigned long start_code, start_stack; | ||||
| 	long signal; | ||||
| 	int reserved; | ||||
| 	struct user_regs *u_ar0; | ||||
| 	unsigned long magic; | ||||
| 	char u_comm[32]; | ||||
| 	int u_debugreg[8]; | ||||
| 	struct user_fpregs u_fp; | ||||
| 	struct user_fpregs *u_fp0; | ||||
| }; | ||||
|  | @ -0,0 +1,18 @@ | |||
| __asm__( | ||||
| ".text \n" | ||||
| ".global " START " \n" | ||||
| ".type " START ",%function \n" | ||||
| START ": \n" | ||||
| "	mov fp, #0 \n" | ||||
| "	mov lr, #0 \n" | ||||
| "	ldr a2, 1f \n" | ||||
| "	add a2, pc, a2 \n" | ||||
| "	mov a1, sp \n" | ||||
| "2:	and ip, a1, #-16 \n" | ||||
| "	mov sp, ip \n" | ||||
| "	bl " START "_c \n" | ||||
| ".weak _DYNAMIC \n" | ||||
| ".hidden _DYNAMIC \n" | ||||
| ".align 2 \n" | ||||
| "1:	.word _DYNAMIC-2b \n" | ||||
| ); | ||||
|  | @ -0,0 +1,21 @@ | |||
| struct kstat { | ||||
| 	dev_t st_dev; | ||||
| 	int __st_dev_padding; | ||||
| 	long __st_ino_truncated; | ||||
| 	mode_t st_mode; | ||||
| 	nlink_t st_nlink; | ||||
| 	uid_t st_uid; | ||||
| 	gid_t st_gid; | ||||
| 	dev_t st_rdev; | ||||
| 	int __st_rdev_padding; | ||||
| 	off_t st_size; | ||||
| 	blksize_t st_blksize; | ||||
| 	blkcnt_t st_blocks; | ||||
| 	long st_atime_sec; | ||||
| 	long st_atime_nsec; | ||||
| 	long st_mtime_sec; | ||||
| 	long st_mtime_nsec; | ||||
| 	long st_ctime_sec; | ||||
| 	long st_ctime_nsec; | ||||
| 	ino_t st_ino; | ||||
| }; | ||||
|  | @ -0,0 +1,32 @@ | |||
| #if ((__ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \ | ||||
|  || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 | ||||
| 
 | ||||
| static inline uintptr_t __get_tp() | ||||
| { | ||||
| 	uintptr_t tp; | ||||
| 	__asm__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(tp) ); | ||||
| 	return tp; | ||||
| } | ||||
| 
 | ||||
| #else | ||||
| 
 | ||||
| #if __ARM_ARCH_4__ || __ARM_ARCH_4T__ || __ARM_ARCH == 4 | ||||
| #define BLX "mov lr,pc\n\tbx" | ||||
| #else | ||||
| #define BLX "blx" | ||||
| #endif | ||||
| 
 | ||||
| static inline uintptr_t __get_tp() | ||||
| { | ||||
| 	extern hidden uintptr_t __a_gettp_ptr; | ||||
| 	register uintptr_t tp __asm__("r0"); | ||||
| 	__asm__ ( BLX " %1" : "=r"(tp) : "r"(__a_gettp_ptr) : "cc", "lr" ); | ||||
| 	return tp; | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #define TLS_ABOVE_TP | ||||
| #define GAP_ABOVE_TP 8 | ||||
| 
 | ||||
| #define MC_PC arm_pc | ||||
|  | @ -0,0 +1,32 @@ | |||
| #if __BYTE_ORDER == __BIG_ENDIAN | ||||
| #define ENDIAN_SUFFIX "eb" | ||||
| #else | ||||
| #define ENDIAN_SUFFIX "" | ||||
| #endif | ||||
| 
 | ||||
| #if __ARM_PCS_VFP | ||||
| #define FP_SUFFIX "hf" | ||||
| #else | ||||
| #define FP_SUFFIX "" | ||||
| #endif | ||||
| 
 | ||||
| #define LDSO_ARCH "arm" ENDIAN_SUFFIX FP_SUFFIX | ||||
| 
 | ||||
| #define NO_LEGACY_INITFINI | ||||
| 
 | ||||
| #define TPOFF_K 0 | ||||
| 
 | ||||
| #define REL_SYMBOLIC    R_ARM_ABS32 | ||||
| #define REL_GOT         R_ARM_GLOB_DAT | ||||
| #define REL_PLT         R_ARM_JUMP_SLOT | ||||
| #define REL_RELATIVE    R_ARM_RELATIVE | ||||
| #define REL_COPY        R_ARM_COPY | ||||
| #define REL_DTPMOD      R_ARM_TLS_DTPMOD32 | ||||
| #define REL_DTPOFF      R_ARM_TLS_DTPOFF32 | ||||
| #define REL_TPOFF       R_ARM_TLS_TPOFF32 | ||||
| #define REL_TLSDESC     R_ARM_TLS_DESC | ||||
| 
 | ||||
| #define TLSDESC_BACKWARDS | ||||
| 
 | ||||
| #define CRTJMP(pc,sp) __asm__ __volatile__( \ | ||||
| 	"mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory" ) | ||||
|  | @ -0,0 +1,103 @@ | |||
| #define __SYSCALL_LL_E(x) \ | ||||
| ((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ | ||||
| ((union { long long ll; long l[2]; }){ .ll = x }).l[1] | ||||
| #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) | ||||
| 
 | ||||
| #ifdef __thumb__ | ||||
| 
 | ||||
| /* Avoid use of r7 in asm constraints when producing thumb code,
 | ||||
|  * since it's reserved as frame pointer and might not be supported. */ | ||||
| #define __ASM____R7__ | ||||
| #define __asm_syscall(...) do { \ | ||||
| 	__asm__ __volatile__ ( "mov %1,r7 ; mov r7,%2 ; svc 0 ; mov r7,%1" \ | ||||
| 	: "=r"(r0), "=&r"((int){0}) : __VA_ARGS__ : "memory"); \ | ||||
| 	return r0; \ | ||||
| 	} while (0) | ||||
| 
 | ||||
| #else | ||||
| 
 | ||||
| #define __ASM____R7__ __asm__("r7") | ||||
| #define __asm_syscall(...) do { \ | ||||
| 	__asm__ __volatile__ ( "svc 0" \ | ||||
| 	: "=r"(r0) : __VA_ARGS__ : "memory"); \ | ||||
| 	return r0; \ | ||||
| 	} while (0) | ||||
| #endif | ||||
| 
 | ||||
| /* For thumb2, we can allow 8-bit immediate syscall numbers, saving a
 | ||||
|  * register in the above dance around r7. Does not work for thumb1 where | ||||
|  * only movs, not mov, supports immediates, and we can't use movs because | ||||
|  * it doesn't support high regs. */ | ||||
| #ifdef __thumb2__ | ||||
| #define R7_OPERAND "rI"(r7) | ||||
| #else | ||||
| #define R7_OPERAND "r"(r7) | ||||
| #endif | ||||
| 
 | ||||
| static inline long __syscall0(long n) | ||||
| { | ||||
| 	register long r7 __ASM____R7__ = n; | ||||
| 	register long r0 __asm__("r0"); | ||||
| 	__asm_syscall(R7_OPERAND); | ||||
| } | ||||
| 
 | ||||
| static inline long __syscall1(long n, long a) | ||||
| { | ||||
| 	register long r7 __ASM____R7__ = n; | ||||
| 	register long r0 __asm__("r0") = a; | ||||
| 	__asm_syscall(R7_OPERAND, "0"(r0)); | ||||
| } | ||||
| 
 | ||||
| static inline long __syscall2(long n, long a, long b) | ||||
| { | ||||
| 	register long r7 __ASM____R7__ = n; | ||||
| 	register long r0 __asm__("r0") = a; | ||||
| 	register long r1 __asm__("r1") = b; | ||||
| 	__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1)); | ||||
| } | ||||
| 
 | ||||
| static inline long __syscall3(long n, long a, long b, long c) | ||||
| { | ||||
| 	register long r7 __ASM____R7__ = n; | ||||
| 	register long r0 __asm__("r0") = a; | ||||
| 	register long r1 __asm__("r1") = b; | ||||
| 	register long r2 __asm__("r2") = c; | ||||
| 	__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2)); | ||||
| } | ||||
| 
 | ||||
| static inline long __syscall4(long n, long a, long b, long c, long d) | ||||
| { | ||||
| 	register long r7 __ASM____R7__ = n; | ||||
| 	register long r0 __asm__("r0") = a; | ||||
| 	register long r1 __asm__("r1") = b; | ||||
| 	register long r2 __asm__("r2") = c; | ||||
| 	register long r3 __asm__("r3") = d; | ||||
| 	__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3)); | ||||
| } | ||||
| 
 | ||||
| static inline long __syscall5(long n, long a, long b, long c, long d, long e) | ||||
| { | ||||
| 	register long r7 __ASM____R7__ = n; | ||||
| 	register long r0 __asm__("r0") = a; | ||||
| 	register long r1 __asm__("r1") = b; | ||||
| 	register long r2 __asm__("r2") = c; | ||||
| 	register long r3 __asm__("r3") = d; | ||||
| 	register long r4 __asm__("r4") = e; | ||||
| 	__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4)); | ||||
| } | ||||
| 
 | ||||
| static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) | ||||
| { | ||||
| 	register long r7 __ASM____R7__ = n; | ||||
| 	register long r0 __asm__("r0") = a; | ||||
| 	register long r1 __asm__("r1") = b; | ||||
| 	register long r2 __asm__("r2") = c; | ||||
| 	register long r3 __asm__("r3") = d; | ||||
| 	register long r4 __asm__("r4") = e; | ||||
| 	register long r5 __asm__("r5") = f; | ||||
| 	__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5)); | ||||
| } | ||||
| 
 | ||||
| #define SYSCALL_FADVISE_6_ARG | ||||
| 
 | ||||
| #define SYSCALL_IPC_BROKEN_MODE | ||||
|  | @ -0,0 +1,11 @@ | |||
| #define _DIRENT_HAVE_D_RECLEN | ||||
| #define _DIRENT_HAVE_D_OFF | ||||
| #define _DIRENT_HAVE_D_TYPE | ||||
| 
 | ||||
| struct dirent { | ||||
| 	ino_t d_ino; | ||||
| 	off_t d_off; | ||||
| 	unsigned short d_reclen; | ||||
| 	unsigned char d_type; | ||||
| 	char d_name[256]; | ||||
| }; | ||||
|  | @ -0,0 +1,134 @@ | |||
| #define EPERM            1 | ||||
| #define ENOENT           2 | ||||
| #define ESRCH            3 | ||||
| #define EINTR            4 | ||||
| #define EIO              5 | ||||
| #define ENXIO            6 | ||||
| #define E2BIG            7 | ||||
| #define ENOEXEC          8 | ||||
| #define EBADF            9 | ||||
| #define ECHILD          10 | ||||
| #define EAGAIN          11 | ||||
| #define ENOMEM          12 | ||||
| #define EACCES          13 | ||||
| #define EFAULT          14 | ||||
| #define ENOTBLK         15 | ||||
| #define EBUSY           16 | ||||
| #define EEXIST          17 | ||||
| #define EXDEV           18 | ||||
| #define ENODEV          19 | ||||
| #define ENOTDIR         20 | ||||
| #define EISDIR          21 | ||||
| #define EINVAL          22 | ||||
| #define ENFILE          23 | ||||
| #define EMFILE          24 | ||||
| #define ENOTTY          25 | ||||
| #define ETXTBSY         26 | ||||
| #define EFBIG           27 | ||||
| #define ENOSPC          28 | ||||
| #define ESPIPE          29 | ||||
| #define EROFS           30 | ||||
| #define EMLINK          31 | ||||
| #define EPIPE           32 | ||||
| #define EDOM            33 | ||||
| #define ERANGE          34 | ||||
| #define EDEADLK         35 | ||||
| #define ENAMETOOLONG    36 | ||||
| #define ENOLCK          37 | ||||
| #define ENOSYS          38 | ||||
| #define ENOTEMPTY       39 | ||||
| #define ELOOP           40 | ||||
| #define EWOULDBLOCK     EAGAIN | ||||
| #define ENOMSG          42 | ||||
| #define EIDRM           43 | ||||
| #define ECHRNG          44 | ||||
| #define EL2NSYNC        45 | ||||
| #define EL3HLT          46 | ||||
| #define EL3RST          47 | ||||
| #define ELNRNG          48 | ||||
| #define EUNATCH         49 | ||||
| #define ENOCSI          50 | ||||
| #define EL2HLT          51 | ||||
| #define EBADE           52 | ||||
| #define EBADR           53 | ||||
| #define EXFULL          54 | ||||
| #define ENOANO          55 | ||||
| #define EBADRQC         56 | ||||
| #define EBADSLT         57 | ||||
| #define EDEADLOCK       EDEADLK | ||||
| #define EBFONT          59 | ||||
| #define ENOSTR          60 | ||||
| #define ENODATA         61 | ||||
| #define ETIME           62 | ||||
| #define ENOSR           63 | ||||
| #define ENONET          64 | ||||
| #define ENOPKG          65 | ||||
| #define EREMOTE         66 | ||||
| #define ENOLINK         67 | ||||
| #define EADV            68 | ||||
| #define ESRMNT          69 | ||||
| #define ECOMM           70 | ||||
| #define EPROTO          71 | ||||
| #define EMULTIHOP       72 | ||||
| #define EDOTDOT         73 | ||||
| #define EBADMSG         74 | ||||
| #define EOVERFLOW       75 | ||||
| #define ENOTUNIQ        76 | ||||
| #define EBADFD          77 | ||||
| #define EREMCHG         78 | ||||
| #define ELIBACC         79 | ||||
| #define ELIBBAD         80 | ||||
| #define ELIBSCN         81 | ||||
| #define ELIBMAX         82 | ||||
| #define ELIBEXEC        83 | ||||
| #define EILSEQ          84 | ||||
| #define ERESTART        85 | ||||
| #define ESTRPIPE        86 | ||||
| #define EUSERS          87 | ||||
| #define ENOTSOCK        88 | ||||
| #define EDESTADDRREQ    89 | ||||
| #define EMSGSIZE        90 | ||||
| #define EPROTOTYPE      91 | ||||
| #define ENOPROTOOPT     92 | ||||
| #define EPROTONOSUPPORT 93 | ||||
| #define ESOCKTNOSUPPORT 94 | ||||
| #define EOPNOTSUPP      95 | ||||
| #define ENOTSUP         EOPNOTSUPP | ||||
| #define EPFNOSUPPORT    96 | ||||
| #define EAFNOSUPPORT    97 | ||||
| #define EADDRINUSE      98 | ||||
| #define EADDRNOTAVAIL   99 | ||||
| #define ENETDOWN        100 | ||||
| #define ENETUNREACH     101 | ||||
| #define ENETRESET       102 | ||||
| #define ECONNABORTED    103 | ||||
| #define ECONNRESET      104 | ||||
| #define ENOBUFS         105 | ||||
| #define EISCONN         106 | ||||
| #define ENOTCONN        107 | ||||
| #define ESHUTDOWN       108 | ||||
| #define ETOOMANYREFS    109 | ||||
| #define ETIMEDOUT       110 | ||||
| #define ECONNREFUSED    111 | ||||
| #define EHOSTDOWN       112 | ||||
| #define EHOSTUNREACH    113 | ||||
| #define EALREADY        114 | ||||
| #define EINPROGRESS     115 | ||||
| #define ESTALE          116 | ||||
| #define EUCLEAN         117 | ||||
| #define ENOTNAM         118 | ||||
| #define ENAVAIL         119 | ||||
| #define EISNAM          120 | ||||
| #define EREMOTEIO       121 | ||||
| #define EDQUOT          122 | ||||
| #define ENOMEDIUM       123 | ||||
| #define EMEDIUMTYPE     124 | ||||
| #define ECANCELED       125 | ||||
| #define ENOKEY          126 | ||||
| #define EKEYEXPIRED     127 | ||||
| #define EKEYREVOKED     128 | ||||
| #define EKEYREJECTED    129 | ||||
| #define EOWNERDEAD      130 | ||||
| #define ENOTRECOVERABLE 131 | ||||
| #define ERFKILL         132 | ||||
| #define EHWPOISON       133 | ||||
|  | @ -0,0 +1,46 @@ | |||
| #define O_CREAT        0100 | ||||
| #define O_EXCL         0200 | ||||
| #define O_NOCTTY       0400 | ||||
| #define O_TRUNC       01000 | ||||
| #define O_APPEND      02000 | ||||
| #define O_NONBLOCK    04000 | ||||
| #define O_DSYNC      010000 | ||||
| #define O_SYNC     04010000 | ||||
| #define O_RSYNC    04010000 | ||||
| #define O_DIRECTORY 0200000 | ||||
| #define O_NOFOLLOW  0400000 | ||||
| #define O_CLOEXEC  02000000 | ||||
| 
 | ||||
| #define O_ASYNC      020000 | ||||
| #define O_DIRECT     040000 | ||||
| #define O_LARGEFILE 0100000 | ||||
| #define O_NOATIME  01000000 | ||||
| #define O_PATH    010000000 | ||||
| #define O_TMPFILE 020200000 | ||||
| #define O_NDELAY O_NONBLOCK | ||||
| 
 | ||||
| #define F_DUPFD  0 | ||||
| #define F_GETFD  1 | ||||
| #define F_SETFD  2 | ||||
| #define F_GETFL  3 | ||||
| #define F_SETFL  4 | ||||
| 
 | ||||
| #define F_SETOWN 8 | ||||
| #define F_GETOWN 9 | ||||
| #define F_SETSIG 10 | ||||
| #define F_GETSIG 11 | ||||
| 
 | ||||
| #if __LONG_MAX == 0x7fffffffL | ||||
| #define F_GETLK 12 | ||||
| #define F_SETLK 13 | ||||
| #define F_SETLKW 14 | ||||
| #else | ||||
| #define F_GETLK 5 | ||||
| #define F_SETLK 6 | ||||
| #define F_SETLKW 7 | ||||
| #endif | ||||
| 
 | ||||
| #define F_SETOWN_EX 15 | ||||
| #define F_GETOWN_EX 16 | ||||
| 
 | ||||
| #define F_GETOWNER_UIDS 17 | ||||
|  | @ -0,0 +1,10 @@ | |||
| #define FE_ALL_EXCEPT 0 | ||||
| #define FE_TONEAREST  0 | ||||
| 
 | ||||
| typedef unsigned long fexcept_t; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	unsigned long __cw; | ||||
| } fenv_t; | ||||
| 
 | ||||
| #define FE_DFL_ENV      ((const fenv_t *) -1) | ||||
|  | @ -0,0 +1,115 @@ | |||
| #define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) | ||||
| #define _IOC_NONE  0U | ||||
| #define _IOC_WRITE 1U | ||||
| #define _IOC_READ  2U | ||||
| 
 | ||||
| #define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) | ||||
| #define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) | ||||
| #define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) | ||||
| #define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) | ||||
| 
 | ||||
| #define TCGETS		0x5401 | ||||
| #define TCSETS		0x5402 | ||||
| #define TCSETSW		0x5403 | ||||
| #define TCSETSF		0x5404 | ||||
| #define TCGETA		0x5405 | ||||
| #define TCSETA		0x5406 | ||||
| #define TCSETAW		0x5407 | ||||
| #define TCSETAF		0x5408 | ||||
| #define TCSBRK		0x5409 | ||||
| #define TCXONC		0x540A | ||||
| #define TCFLSH		0x540B | ||||
| #define TIOCEXCL	0x540C | ||||
| #define TIOCNXCL	0x540D | ||||
| #define TIOCSCTTY	0x540E | ||||
| #define TIOCGPGRP	0x540F | ||||
| #define TIOCSPGRP	0x5410 | ||||
| #define TIOCOUTQ	0x5411 | ||||
| #define TIOCSTI		0x5412 | ||||
| #define TIOCGWINSZ	0x5413 | ||||
| #define TIOCSWINSZ	0x5414 | ||||
| #define TIOCMGET	0x5415 | ||||
| #define TIOCMBIS	0x5416 | ||||
| #define TIOCMBIC	0x5417 | ||||
| #define TIOCMSET	0x5418 | ||||
| #define TIOCGSOFTCAR	0x5419 | ||||
| #define TIOCSSOFTCAR	0x541A | ||||
| #define FIONREAD	0x541B | ||||
| #define TIOCINQ		FIONREAD | ||||
| #define TIOCLINUX	0x541C | ||||
| #define TIOCCONS	0x541D | ||||
| #define TIOCGSERIAL	0x541E | ||||
| #define TIOCSSERIAL	0x541F | ||||
| #define TIOCPKT		0x5420 | ||||
| #define FIONBIO		0x5421 | ||||
| #define TIOCNOTTY	0x5422 | ||||
| #define TIOCSETD	0x5423 | ||||
| #define TIOCGETD	0x5424 | ||||
| #define TCSBRKP		0x5425 | ||||
| #define TIOCSBRK	0x5427 | ||||
| #define TIOCCBRK	0x5428 | ||||
| #define TIOCGSID	0x5429 | ||||
| #define TIOCGRS485	0x542E | ||||
| #define TIOCSRS485	0x542F | ||||
| #define TIOCGPTN	0x80045430 | ||||
| #define TIOCSPTLCK	0x40045431 | ||||
| #define TIOCGDEV	0x80045432 | ||||
| #define TCGETX		0x5432 | ||||
| #define TCSETX		0x5433 | ||||
| #define TCSETXF		0x5434 | ||||
| #define TCSETXW		0x5435 | ||||
| #define TIOCSIG		0x40045436 | ||||
| #define TIOCVHANGUP	0x5437 | ||||
| #define TIOCGPKT	0x80045438 | ||||
| #define TIOCGPTLCK	0x80045439 | ||||
| #define TIOCGEXCL	0x80045440 | ||||
| #define TIOCGPTPEER	0x5441 | ||||
| #define TIOCGISO7816	0x80285442 | ||||
| #define TIOCSISO7816	0xc0285443 | ||||
| 
 | ||||
| #define FIONCLEX	0x5450 | ||||
| #define FIOCLEX		0x5451 | ||||
| #define FIOASYNC	0x5452 | ||||
| #define TIOCSERCONFIG	0x5453 | ||||
| #define TIOCSERGWILD	0x5454 | ||||
| #define TIOCSERSWILD	0x5455 | ||||
| #define TIOCGLCKTRMIOS	0x5456 | ||||
| #define TIOCSLCKTRMIOS	0x5457 | ||||
| #define TIOCSERGSTRUCT	0x5458 | ||||
| #define TIOCSERGETLSR   0x5459 | ||||
| #define TIOCSERGETMULTI 0x545A | ||||
| #define TIOCSERSETMULTI 0x545B | ||||
| 
 | ||||
| #define TIOCMIWAIT	0x545C | ||||
| #define TIOCGICOUNT	0x545D | ||||
| #define FIOQSIZE	0x5460 | ||||
| 
 | ||||
| #define TIOCM_LE        0x001 | ||||
| #define TIOCM_DTR       0x002 | ||||
| #define TIOCM_RTS       0x004 | ||||
| #define TIOCM_ST        0x008 | ||||
| #define TIOCM_SR        0x010 | ||||
| #define TIOCM_CTS       0x020 | ||||
| #define TIOCM_CAR       0x040 | ||||
| #define TIOCM_RNG       0x080 | ||||
| #define TIOCM_DSR       0x100 | ||||
| #define TIOCM_CD        TIOCM_CAR | ||||
| #define TIOCM_RI        TIOCM_RNG | ||||
| #define TIOCM_OUT1      0x2000 | ||||
| #define TIOCM_OUT2      0x4000 | ||||
| #define TIOCM_LOOP      0x8000 | ||||
| 
 | ||||
| #define FIOSETOWN       0x8901 | ||||
| #define SIOCSPGRP       0x8902 | ||||
| #define FIOGETOWN       0x8903 | ||||
| #define SIOCGPGRP       0x8904 | ||||
| #define SIOCATMARK      0x8905 | ||||
| #if __LONG_MAX == 0x7fffffff | ||||
| #define SIOCGSTAMP      _IOR(0x89, 6, char[16]) | ||||
| #define SIOCGSTAMPNS    _IOR(0x89, 7, char[16]) | ||||
| #else | ||||
| #define SIOCGSTAMP      0x8906 | ||||
| #define SIOCGSTAMPNS    0x8907 | ||||
| #endif | ||||
| 
 | ||||
| #include <bits/ioctl_fix.h> | ||||
|  | @ -0,0 +1,11 @@ | |||
| struct ipc_perm { | ||||
| 	key_t __ipc_perm_key; | ||||
| 	uid_t uid; | ||||
| 	gid_t gid; | ||||
| 	uid_t cuid; | ||||
| 	gid_t cgid; | ||||
| 	mode_t mode; | ||||
| 	int __ipc_perm_seq; | ||||
| 	long __pad1; | ||||
| 	long __pad2; | ||||
| }; | ||||
|  | @ -0,0 +1 @@ | |||
| #define IPC_STAT 2 | ||||
|  | @ -0,0 +1 @@ | |||
| #include <linux/kd.h> | ||||
|  | @ -0,0 +1 @@ | |||
| typedef uint32_t Elf_Symndx; | ||||
|  | @ -0,0 +1,12 @@ | |||
| struct msqid_ds { | ||||
| 	struct ipc_perm msg_perm; | ||||
| 	time_t msg_stime; | ||||
| 	time_t msg_rtime; | ||||
| 	time_t msg_ctime; | ||||
| 	unsigned long msg_cbytes; | ||||
| 	msgqnum_t msg_qnum; | ||||
| 	msglen_t msg_qbytes; | ||||
| 	pid_t msg_lspid; | ||||
| 	pid_t msg_lrpid; | ||||
| 	unsigned long __unused[2]; | ||||
| }; | ||||
|  | @ -0,0 +1,14 @@ | |||
| struct semid_ds { | ||||
| 	struct ipc_perm sem_perm; | ||||
| 	time_t sem_otime; | ||||
| 	time_t sem_ctime; | ||||
| #if __BYTE_ORDER == __LITTLE_ENDIAN | ||||
| 	unsigned short sem_nsems; | ||||
| 	char __sem_nsems_pad[sizeof(long)-sizeof(short)]; | ||||
| #else | ||||
| 	char __sem_nsems_pad[sizeof(long)-sizeof(short)]; | ||||
| 	unsigned short sem_nsems; | ||||
| #endif | ||||
| 	long __unused3; | ||||
| 	long __unused4; | ||||
| }; | ||||
|  | @ -0,0 +1,24 @@ | |||
| #define SHMLBA 4096 | ||||
| 
 | ||||
| struct shmid_ds { | ||||
| 	struct ipc_perm shm_perm; | ||||
| 	size_t shm_segsz; | ||||
| 	time_t shm_atime; | ||||
| 	time_t shm_dtime; | ||||
| 	time_t shm_ctime; | ||||
| 	pid_t shm_cpid; | ||||
| 	pid_t shm_lpid; | ||||
| 	unsigned long shm_nattch; | ||||
| 	unsigned long __pad1; | ||||
| 	unsigned long __pad2; | ||||
| }; | ||||
| 
 | ||||
| struct shminfo { | ||||
| 	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; | ||||
| }; | ||||
| 
 | ||||
| struct shm_info { | ||||
| 	int __used_ids; | ||||
| 	unsigned long shm_tot, shm_rss, shm_swp; | ||||
| 	unsigned long __swap_attempts, __swap_successes; | ||||
| }; | ||||
|  | @ -0,0 +1 @@ | |||
| #include <linux/soundcard.h> | ||||
|  | @ -0,0 +1,7 @@ | |||
| struct statfs { | ||||
| 	unsigned long f_type, f_bsize; | ||||
| 	fsblkcnt_t f_blocks, f_bfree, f_bavail; | ||||
| 	fsfilcnt_t f_files, f_ffree; | ||||
| 	fsid_t f_fsid; | ||||
| 	unsigned long f_namelen, f_frsize, f_flags, f_spare[4]; | ||||
| }; | ||||
|  | @ -0,0 +1,166 @@ | |||
| struct termios { | ||||
| 	tcflag_t c_iflag; | ||||
| 	tcflag_t c_oflag; | ||||
| 	tcflag_t c_cflag; | ||||
| 	tcflag_t c_lflag; | ||||
| 	cc_t c_line; | ||||
| 	cc_t c_cc[NCCS]; | ||||
| 	speed_t __c_ispeed; | ||||
| 	speed_t __c_ospeed; | ||||
| }; | ||||
| 
 | ||||
| #define VINTR     0 | ||||
| #define VQUIT     1 | ||||
| #define VERASE    2 | ||||
| #define VKILL     3 | ||||
| #define VEOF      4 | ||||
| #define VTIME     5 | ||||
| #define VMIN      6 | ||||
| #define VSWTC     7 | ||||
| #define VSTART    8 | ||||
| #define VSTOP     9 | ||||
| #define VSUSP    10 | ||||
| #define VEOL     11 | ||||
| #define VREPRINT 12 | ||||
| #define VDISCARD 13 | ||||
| #define VWERASE  14 | ||||
| #define VLNEXT   15 | ||||
| #define VEOL2    16 | ||||
| 
 | ||||
| #define IGNBRK  0000001 | ||||
| #define BRKINT  0000002 | ||||
| #define IGNPAR  0000004 | ||||
| #define PARMRK  0000010 | ||||
| #define INPCK   0000020 | ||||
| #define ISTRIP  0000040 | ||||
| #define INLCR   0000100 | ||||
| #define IGNCR   0000200 | ||||
| #define ICRNL   0000400 | ||||
| #define IUCLC   0001000 | ||||
| #define IXON    0002000 | ||||
| #define IXANY   0004000 | ||||
| #define IXOFF   0010000 | ||||
| #define IMAXBEL 0020000 | ||||
| #define IUTF8   0040000 | ||||
| 
 | ||||
| #define OPOST  0000001 | ||||
| #define OLCUC  0000002 | ||||
| #define ONLCR  0000004 | ||||
| #define OCRNL  0000010 | ||||
| #define ONOCR  0000020 | ||||
| #define ONLRET 0000040 | ||||
| #define OFILL  0000100 | ||||
| #define OFDEL  0000200 | ||||
| #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) | ||||
| #define NLDLY  0000400 | ||||
| #define NL0    0000000 | ||||
| #define NL1    0000400 | ||||
| #define CRDLY  0003000 | ||||
| #define CR0    0000000 | ||||
| #define CR1    0001000 | ||||
| #define CR2    0002000 | ||||
| #define CR3    0003000 | ||||
| #define TABDLY 0014000 | ||||
| #define TAB0   0000000 | ||||
| #define TAB1   0004000 | ||||
| #define TAB2   0010000 | ||||
| #define TAB3   0014000 | ||||
| #define BSDLY  0020000 | ||||
| #define BS0    0000000 | ||||
| #define BS1    0020000 | ||||
| #define FFDLY  0100000 | ||||
| #define FF0    0000000 | ||||
| #define FF1    0100000 | ||||
| #endif | ||||
| 
 | ||||
| #define VTDLY  0040000 | ||||
| #define VT0    0000000 | ||||
| #define VT1    0040000 | ||||
| 
 | ||||
| #define B0       0000000 | ||||
| #define B50      0000001 | ||||
| #define B75      0000002 | ||||
| #define B110     0000003 | ||||
| #define B134     0000004 | ||||
| #define B150     0000005 | ||||
| #define B200     0000006 | ||||
| #define B300     0000007 | ||||
| #define B600     0000010 | ||||
| #define B1200    0000011 | ||||
| #define B1800    0000012 | ||||
| #define B2400    0000013 | ||||
| #define B4800    0000014 | ||||
| #define B9600    0000015 | ||||
| #define B19200   0000016 | ||||
| #define B38400   0000017 | ||||
| 
 | ||||
| #define B57600   0010001 | ||||
| #define B115200  0010002 | ||||
| #define B230400  0010003 | ||||
| #define B460800  0010004 | ||||
| #define B500000  0010005 | ||||
| #define B576000  0010006 | ||||
| #define B921600  0010007 | ||||
| #define B1000000 0010010 | ||||
| #define B1152000 0010011 | ||||
| #define B1500000 0010012 | ||||
| #define B2000000 0010013 | ||||
| #define B2500000 0010014 | ||||
| #define B3000000 0010015 | ||||
| #define B3500000 0010016 | ||||
| #define B4000000 0010017 | ||||
| 
 | ||||
| #define CSIZE  0000060 | ||||
| #define CS5    0000000 | ||||
| #define CS6    0000020 | ||||
| #define CS7    0000040 | ||||
| #define CS8    0000060 | ||||
| #define CSTOPB 0000100 | ||||
| #define CREAD  0000200 | ||||
| #define PARENB 0000400 | ||||
| #define PARODD 0001000 | ||||
| #define HUPCL  0002000 | ||||
| #define CLOCAL 0004000 | ||||
| 
 | ||||
| #define ISIG   0000001 | ||||
| #define ICANON 0000002 | ||||
| #define ECHO   0000010 | ||||
| #define ECHOE  0000020 | ||||
| #define ECHOK  0000040 | ||||
| #define ECHONL 0000100 | ||||
| #define NOFLSH 0000200 | ||||
| #define TOSTOP 0000400 | ||||
| #define IEXTEN 0100000 | ||||
| 
 | ||||
| #define TCOOFF 0 | ||||
| #define TCOON  1 | ||||
| #define TCIOFF 2 | ||||
| #define TCION  3 | ||||
| 
 | ||||
| #define TCIFLUSH  0 | ||||
| #define TCOFLUSH  1 | ||||
| #define TCIOFLUSH 2 | ||||
| 
 | ||||
| #define TCSANOW   0 | ||||
| #define TCSADRAIN 1 | ||||
| #define TCSAFLUSH 2 | ||||
| 
 | ||||
| #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | ||||
| #define EXTA    0000016 | ||||
| #define EXTB    0000017 | ||||
| #define CBAUD   0010017 | ||||
| #define CBAUDEX 0010000 | ||||
| #define CIBAUD  002003600000 | ||||
| #define CMSPAR  010000000000 | ||||
| #define CRTSCTS 020000000000 | ||||
| 
 | ||||
| #define XCASE   0000004 | ||||
| #define ECHOCTL 0001000 | ||||
| #define ECHOPRT 0002000 | ||||
| #define ECHOKE  0004000 | ||||
| #define FLUSHO  0010000 | ||||
| #define PENDIN  0040000 | ||||
| #define EXTPROC 0200000 | ||||
| 
 | ||||
| #define XTABS  0014000 | ||||
| #endif | ||||
|  | @ -0,0 +1 @@ | |||
| #include <linux/vt.h> | ||||
|  | @ -0,0 +1,38 @@ | |||
| #define a_barrier a_barrier | ||||
| static inline void a_barrier() | ||||
| { | ||||
| 	__asm__ __volatile__ ("fence rw,rw" : : : "memory"); | ||||
| } | ||||
| 
 | ||||
| #define a_cas a_cas | ||||
| static inline int a_cas(volatile int *p, int t, int s) | ||||
| { | ||||
| 	int old, tmp; | ||||
| 	__asm__ __volatile__ ( | ||||
| 		"\n1:	lr.w.aqrl %0, (%2)\n" | ||||
| 		"	bne %0, %3, 1f\n" | ||||
| 		"	sc.w.aqrl %1, %4, (%2)\n" | ||||
| 		"	bnez %1, 1b\n" | ||||
| 		"1:" | ||||
| 		: "=&r"(old), "=&r"(tmp) | ||||
| 		: "r"(p), "r"((long)t), "r"((long)s) | ||||
| 		: "memory"); | ||||
| 	return old; | ||||
| } | ||||
| 
 | ||||
| #define a_cas_p a_cas_p | ||||
| static inline void *a_cas_p(volatile void *p, void *t, void *s) | ||||
| { | ||||
| 	void *old; | ||||
| 	int tmp; | ||||
| 	__asm__ __volatile__ ( | ||||
| 		"\n1:	lr.d.aqrl %0, (%2)\n" | ||||
| 		"	bne %0, %3, 1f\n" | ||||
| 		"	sc.d.aqrl %1, %4, (%2)\n" | ||||
| 		"	bnez %1, 1b\n" | ||||
| 		"1:" | ||||
| 		: "=&r"(old), "=&r"(tmp) | ||||
| 		: "r"(p), "r"(t), "r"(s) | ||||
| 		: "memory"); | ||||
| 	return old; | ||||
| } | ||||
|  | @ -0,0 +1,18 @@ | |||
| #define _Addr long | ||||
| #define _Int64 long | ||||
| #define _Reg long | ||||
| 
 | ||||
| #define __BYTE_ORDER 1234 | ||||
| #define __LONG_MAX 0x7fffffffffffffffL | ||||
| 
 | ||||
| #ifndef __cplusplus | ||||
| TYPEDEF int wchar_t; | ||||
| #endif | ||||
| 
 | ||||
| TYPEDEF int blksize_t; | ||||
| TYPEDEF unsigned int nlink_t; | ||||
| 
 | ||||
| TYPEDEF float float_t; | ||||
| TYPEDEF double double_t; | ||||
| 
 | ||||
| TYPEDEF struct { long long __ll; long double __ld; } max_align_t; | ||||
|  | @ -0,0 +1,17 @@ | |||
| #define FE_INVALID      16 | ||||
| #define FE_DIVBYZERO    8 | ||||
| #define FE_OVERFLOW     4 | ||||
| #define FE_UNDERFLOW    2 | ||||
| #define FE_INEXACT      1 | ||||
| 
 | ||||
| #define FE_ALL_EXCEPT   31 | ||||
| 
 | ||||
| #define FE_TONEAREST    0 | ||||
| #define FE_DOWNWARD     2 | ||||
| #define FE_UPWARD       3 | ||||
| #define FE_TOWARDZERO   1 | ||||
| 
 | ||||
| typedef unsigned int fexcept_t; | ||||
| typedef unsigned int fenv_t; | ||||
| 
 | ||||
| #define FE_DFL_ENV      ((const fenv_t *) -1) | ||||
|  | @ -0,0 +1,16 @@ | |||
| #define FLT_EVAL_METHOD 0 | ||||
| 
 | ||||
| #define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L | ||||
| #define LDBL_MIN 3.36210314311209350626267781732175260e-4932L | ||||
| #define LDBL_MAX 1.18973149535723176508575932662800702e+4932L | ||||
| #define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L | ||||
| 
 | ||||
| #define LDBL_MANT_DIG 113 | ||||
| #define LDBL_MIN_EXP (-16381) | ||||
| #define LDBL_MAX_EXP 16384 | ||||
| 
 | ||||
| #define LDBL_DIG 33 | ||||
| #define LDBL_MIN_10_EXP (-4931) | ||||
| #define LDBL_MAX_10_EXP 4932 | ||||
| 
 | ||||
| #define DECIMAL_DIG 36 | ||||
|  | @ -0,0 +1,2 @@ | |||
| #define _POSIX_V6_LP64_OFF64 1 | ||||
| #define _POSIX_V7_LP64_OFF64 1 | ||||
|  | @ -0,0 +1,2 @@ | |||
| #undef __WORDSIZE | ||||
| #define __WORDSIZE 64 | ||||
|  | @ -0,0 +1 @@ | |||
| typedef unsigned long __jmp_buf[26]; | ||||
|  | @ -0,0 +1,118 @@ | |||
| #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ | ||||
|  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | ||||
| 
 | ||||
| #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | ||||
| # define MINSIGSTKSZ 2048 | ||||
| # define SIGSTKSZ 8192 | ||||
| #endif | ||||
| 
 | ||||
| typedef unsigned long __riscv_mc_gp_state[32]; | ||||
| 
 | ||||
| struct __riscv_mc_f_ext_state { | ||||
| 	unsigned int __f[32]; | ||||
| 	unsigned int __fcsr; | ||||
| }; | ||||
| 
 | ||||
| struct __riscv_mc_d_ext_state { | ||||
| 	unsigned long long __f[32]; | ||||
| 	unsigned int __fcsr; | ||||
| }; | ||||
| 
 | ||||
| struct __riscv_mc_q_ext_state { | ||||
| 	unsigned long long __f[64] __attribute__((aligned(16))); | ||||
| 	unsigned int __fcsr; | ||||
| 	unsigned int __reserved[3]; | ||||
| }; | ||||
| 
 | ||||
| union __riscv_mc_fp_state { | ||||
| 	struct __riscv_mc_f_ext_state __f; | ||||
| 	struct __riscv_mc_d_ext_state __d; | ||||
| 	struct __riscv_mc_q_ext_state __q; | ||||
| }; | ||||
| 
 | ||||
| typedef struct mcontext_t { | ||||
| 	__riscv_mc_gp_state __gregs; | ||||
| 	union __riscv_mc_fp_state __fpregs; | ||||
| } mcontext_t; | ||||
| 
 | ||||
| #if defined(_GNU_SOURCE) | ||||
| #define REG_PC 0 | ||||
| #define REG_RA 1 | ||||
| #define REG_SP 2 | ||||
| #define REG_TP 4 | ||||
| #define REG_S0 8 | ||||
| #define REG_A0 10 | ||||
| #endif | ||||
| 
 | ||||
| #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | ||||
| typedef unsigned long greg_t; | ||||
| typedef unsigned long gregset_t[32]; | ||||
| typedef union __riscv_mc_fp_state fpregset_t; | ||||
| struct sigcontext { | ||||
| 	gregset_t gregs; | ||||
| 	fpregset_t fpregs; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| struct sigaltstack { | ||||
| 	void *ss_sp; | ||||
| 	int ss_flags; | ||||
| 	size_t ss_size; | ||||
| }; | ||||
| 
 | ||||
| typedef struct __ucontext | ||||
| { | ||||
| 	unsigned long uc_flags; | ||||
| 	struct __ucontext *uc_link; | ||||
| 	stack_t uc_stack; | ||||
| 	sigset_t uc_sigmask; | ||||
| 	mcontext_t uc_mcontext; | ||||
| } ucontext_t; | ||||
| 
 | ||||
| #define SA_NOCLDSTOP 1 | ||||
| #define SA_NOCLDWAIT 2 | ||||
| #define SA_SIGINFO   4 | ||||
| #define SA_ONSTACK   0x08000000 | ||||
| #define SA_RESTART   0x10000000 | ||||
| #define SA_NODEFER   0x40000000 | ||||
| #define SA_RESETHAND 0x80000000 | ||||
| #define SA_RESTORER  0x04000000 | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #define SIGHUP     1 | ||||
| #define SIGINT     2 | ||||
| #define SIGQUIT    3 | ||||
| #define SIGILL     4 | ||||
| #define SIGTRAP    5 | ||||
| #define SIGABRT    6 | ||||
| #define SIGIOT     SIGABRT | ||||
| #define SIGBUS     7 | ||||
| #define SIGFPE     8 | ||||
| #define SIGKILL    9 | ||||
| #define SIGUSR1   10 | ||||
| #define SIGSEGV   11 | ||||
| #define SIGUSR2   12 | ||||
| #define SIGPIPE   13 | ||||
| #define SIGALRM   14 | ||||
| #define SIGTERM   15 | ||||
| #define SIGSTKFLT 16 | ||||
| #define SIGCHLD   17 | ||||
| #define SIGCONT   18 | ||||
| #define SIGSTOP   19 | ||||
| #define SIGTSTP   20 | ||||
| #define SIGTTIN   21 | ||||
| #define SIGTTOU   22 | ||||
| #define SIGURG    23 | ||||
| #define SIGXCPU   24 | ||||
| #define SIGXFSZ   25 | ||||
| #define SIGVTALRM 26 | ||||
| #define SIGPROF   27 | ||||
| #define SIGWINCH  28 | ||||
| #define SIGIO     29 | ||||
| #define SIGPOLL   SIGIO | ||||
| #define SIGPWR    30 | ||||
| #define SIGSYS    31 | ||||
| #define SIGUNUSED SIGSYS | ||||
| 
 | ||||
| #define _NSIG     65 | ||||
|  | @ -0,0 +1,18 @@ | |||
| struct stat { | ||||
| 	dev_t st_dev; | ||||
| 	ino_t st_ino; | ||||
| 	mode_t st_mode; | ||||
| 	nlink_t st_nlink; | ||||
| 	uid_t st_uid; | ||||
| 	gid_t st_gid; | ||||
| 	dev_t st_rdev; | ||||
| 	unsigned long __pad; | ||||
| 	off_t st_size; | ||||
| 	blksize_t st_blksize; | ||||
| 	int __pad2; | ||||
| 	blkcnt_t st_blocks; | ||||
| 	struct timespec st_atim; | ||||
| 	struct timespec st_mtim; | ||||
| 	struct timespec st_ctim; | ||||
| 	unsigned __unused[2]; | ||||
| }; | ||||
|  | @ -0,0 +1,20 @@ | |||
| typedef int32_t int_fast16_t; | ||||
| typedef int32_t int_fast32_t; | ||||
| typedef uint32_t uint_fast16_t; | ||||
| typedef uint32_t uint_fast32_t; | ||||
| 
 | ||||
| #define INT_FAST16_MIN  INT32_MIN | ||||
| #define INT_FAST32_MIN  INT32_MIN | ||||
| 
 | ||||
| #define INT_FAST16_MAX  INT32_MAX | ||||
| #define INT_FAST32_MAX  INT32_MAX | ||||
| 
 | ||||
| #define UINT_FAST16_MAX UINT32_MAX | ||||
| #define UINT_FAST32_MAX UINT32_MAX | ||||
| 
 | ||||
| #define INTPTR_MIN      INT64_MIN | ||||
| #define INTPTR_MAX      INT64_MAX | ||||
| #define UINTPTR_MAX     UINT64_MAX | ||||
| #define PTRDIFF_MIN     INT64_MIN | ||||
| #define PTRDIFF_MAX     INT64_MAX | ||||
| #define SIZE_MAX        UINT64_MAX | ||||
|  | @ -0,0 +1,304 @@ | |||
| #define __NR_io_setup 0 | ||||
| #define __NR_io_destroy 1 | ||||
| #define __NR_io_submit 2 | ||||
| #define __NR_io_cancel 3 | ||||
| #define __NR_io_getevents 4 | ||||
| #define __NR_setxattr 5 | ||||
| #define __NR_lsetxattr 6 | ||||
| #define __NR_fsetxattr 7 | ||||
| #define __NR_getxattr 8 | ||||
| #define __NR_lgetxattr 9 | ||||
| #define __NR_fgetxattr 10 | ||||
| #define __NR_listxattr 11 | ||||
| #define __NR_llistxattr 12 | ||||
| #define __NR_flistxattr 13 | ||||
| #define __NR_removexattr 14 | ||||
| #define __NR_lremovexattr 15 | ||||
| #define __NR_fremovexattr 16 | ||||
| #define __NR_getcwd 17 | ||||
| #define __NR_lookup_dcookie 18 | ||||
| #define __NR_eventfd2 19 | ||||
| #define __NR_epoll_create1 20 | ||||
| #define __NR_epoll_ctl 21 | ||||
| #define __NR_epoll_pwait 22 | ||||
| #define __NR_dup 23 | ||||
| #define __NR_dup3 24 | ||||
| #define __NR_fcntl 25 | ||||
| #define __NR_inotify_init1 26 | ||||
| #define __NR_inotify_add_watch 27 | ||||
| #define __NR_inotify_rm_watch 28 | ||||
| #define __NR_ioctl 29 | ||||
| #define __NR_ioprio_set 30 | ||||
| #define __NR_ioprio_get 31 | ||||
| #define __NR_flock 32 | ||||
| #define __NR_mknodat 33 | ||||
| #define __NR_mkdirat 34 | ||||
| #define __NR_unlinkat 35 | ||||
| #define __NR_symlinkat 36 | ||||
| #define __NR_linkat 37 | ||||
| #define __NR_umount2 39 | ||||
| #define __NR_mount 40 | ||||
| #define __NR_pivot_root 41 | ||||
| #define __NR_nfsservctl 42 | ||||
| #define __NR_statfs 43 | ||||
| #define __NR_fstatfs 44 | ||||
| #define __NR_truncate 45 | ||||
| #define __NR_ftruncate 46 | ||||
| #define __NR_fallocate 47 | ||||
| #define __NR_faccessat 48 | ||||
| #define __NR_chdir 49 | ||||
| #define __NR_fchdir 50 | ||||
| #define __NR_chroot 51 | ||||
| #define __NR_fchmod 52 | ||||
| #define __NR_fchmodat 53 | ||||
| #define __NR_fchownat 54 | ||||
| #define __NR_fchown 55 | ||||
| #define __NR_openat 56 | ||||
| #define __NR_close 57 | ||||
| #define __NR_vhangup 58 | ||||
| #define __NR_pipe2 59 | ||||
| #define __NR_quotactl 60 | ||||
| #define __NR_getdents64 61 | ||||
| #define __NR_lseek 62 | ||||
| #define __NR_read 63 | ||||
| #define __NR_write 64 | ||||
| #define __NR_readv 65 | ||||
| #define __NR_writev 66 | ||||
| #define __NR_pread64 67 | ||||
| #define __NR_pwrite64 68 | ||||
| #define __NR_preadv 69 | ||||
| #define __NR_pwritev 70 | ||||
| #define __NR_sendfile 71 | ||||
| #define __NR_pselect6 72 | ||||
| #define __NR_ppoll 73 | ||||
| #define __NR_signalfd4 74 | ||||
| #define __NR_vmsplice 75 | ||||
| #define __NR_splice 76 | ||||
| #define __NR_tee 77 | ||||
| #define __NR_readlinkat 78 | ||||
| #define __NR_newfstatat 79 | ||||
| #define __NR_fstat 80 | ||||
| #define __NR_sync 81 | ||||
| #define __NR_fsync 82 | ||||
| #define __NR_fdatasync 83 | ||||
| #define __NR_sync_file_range 84 | ||||
| #define __NR_timerfd_create 85 | ||||
| #define __NR_timerfd_settime 86 | ||||
| #define __NR_timerfd_gettime 87 | ||||
| #define __NR_utimensat 88 | ||||
| #define __NR_acct 89 | ||||
| #define __NR_capget 90 | ||||
| #define __NR_capset 91 | ||||
| #define __NR_personality 92 | ||||
| #define __NR_exit 93 | ||||
| #define __NR_exit_group 94 | ||||
| #define __NR_waitid 95 | ||||
| #define __NR_set_tid_address 96 | ||||
| #define __NR_unshare 97 | ||||
| #define __NR_futex 98 | ||||
| #define __NR_set_robust_list 99 | ||||
| #define __NR_get_robust_list 100 | ||||
| #define __NR_nanosleep 101 | ||||
| #define __NR_getitimer 102 | ||||
| #define __NR_setitimer 103 | ||||
| #define __NR_kexec_load 104 | ||||
| #define __NR_init_module 105 | ||||
| #define __NR_delete_module 106 | ||||
| #define __NR_timer_create 107 | ||||
| #define __NR_timer_gettime 108 | ||||
| #define __NR_timer_getoverrun 109 | ||||
| #define __NR_timer_settime 110 | ||||
| #define __NR_timer_delete 111 | ||||
| #define __NR_clock_settime 112 | ||||
| #define __NR_clock_gettime 113 | ||||
| #define __NR_clock_getres 114 | ||||
| #define __NR_clock_nanosleep 115 | ||||
| #define __NR_syslog 116 | ||||
| #define __NR_ptrace 117 | ||||
| #define __NR_sched_setparam 118 | ||||
| #define __NR_sched_setscheduler 119 | ||||
| #define __NR_sched_getscheduler 120 | ||||
| #define __NR_sched_getparam 121 | ||||
| #define __NR_sched_setaffinity 122 | ||||
| #define __NR_sched_getaffinity 123 | ||||
| #define __NR_sched_yield 124 | ||||
| #define __NR_sched_get_priority_max 125 | ||||
| #define __NR_sched_get_priority_min 126 | ||||
| #define __NR_sched_rr_get_interval 127 | ||||
| #define __NR_restart_syscall 128 | ||||
| #define __NR_kill 129 | ||||
| #define __NR_tkill 130 | ||||
| #define __NR_tgkill 131 | ||||
| #define __NR_sigaltstack 132 | ||||
| #define __NR_rt_sigsuspend 133 | ||||
| #define __NR_rt_sigaction 134 | ||||
| #define __NR_rt_sigprocmask 135 | ||||
| #define __NR_rt_sigpending 136 | ||||
| #define __NR_rt_sigtimedwait 137 | ||||
| #define __NR_rt_sigqueueinfo 138 | ||||
| #define __NR_rt_sigreturn 139 | ||||
| #define __NR_setpriority 140 | ||||
| #define __NR_getpriority 141 | ||||
| #define __NR_reboot 142 | ||||
| #define __NR_setregid 143 | ||||
| #define __NR_setgid 144 | ||||
| #define __NR_setreuid 145 | ||||
| #define __NR_setuid 146 | ||||
| #define __NR_setresuid 147 | ||||
| #define __NR_getresuid 148 | ||||
| #define __NR_setresgid 149 | ||||
| #define __NR_getresgid 150 | ||||
| #define __NR_setfsuid 151 | ||||
| #define __NR_setfsgid 152 | ||||
| #define __NR_times 153 | ||||
| #define __NR_setpgid 154 | ||||
| #define __NR_getpgid 155 | ||||
| #define __NR_getsid 156 | ||||
| #define __NR_setsid 157 | ||||
| #define __NR_getgroups 158 | ||||
| #define __NR_setgroups 159 | ||||
| #define __NR_uname 160 | ||||
| #define __NR_sethostname 161 | ||||
| #define __NR_setdomainname 162 | ||||
| #define __NR_getrlimit 163 | ||||
| #define __NR_setrlimit 164 | ||||
| #define __NR_getrusage 165 | ||||
| #define __NR_umask 166 | ||||
| #define __NR_prctl 167 | ||||
| #define __NR_getcpu 168 | ||||
| #define __NR_gettimeofday 169 | ||||
| #define __NR_settimeofday 170 | ||||
| #define __NR_adjtimex 171 | ||||
| #define __NR_getpid 172 | ||||
| #define __NR_getppid 173 | ||||
| #define __NR_getuid 174 | ||||
| #define __NR_geteuid 175 | ||||
| #define __NR_getgid 176 | ||||
| #define __NR_getegid 177 | ||||
| #define __NR_gettid 178 | ||||
| #define __NR_sysinfo 179 | ||||
| #define __NR_mq_open 180 | ||||
| #define __NR_mq_unlink 181 | ||||
| #define __NR_mq_timedsend 182 | ||||
| #define __NR_mq_timedreceive 183 | ||||
| #define __NR_mq_notify 184 | ||||
| #define __NR_mq_getsetattr 185 | ||||
| #define __NR_msgget 186 | ||||
| #define __NR_msgctl 187 | ||||
| #define __NR_msgrcv 188 | ||||
| #define __NR_msgsnd 189 | ||||
| #define __NR_semget 190 | ||||
| #define __NR_semctl 191 | ||||
| #define __NR_semtimedop 192 | ||||
| #define __NR_semop 193 | ||||
| #define __NR_shmget 194 | ||||
| #define __NR_shmctl 195 | ||||
| #define __NR_shmat 196 | ||||
| #define __NR_shmdt 197 | ||||
| #define __NR_socket 198 | ||||
| #define __NR_socketpair 199 | ||||
| #define __NR_bind 200 | ||||
| #define __NR_listen 201 | ||||
| #define __NR_accept 202 | ||||
| #define __NR_connect 203 | ||||
| #define __NR_getsockname 204 | ||||
| #define __NR_getpeername 205 | ||||
| #define __NR_sendto 206 | ||||
| #define __NR_recvfrom 207 | ||||
| #define __NR_setsockopt 208 | ||||
| #define __NR_getsockopt 209 | ||||
| #define __NR_shutdown 210 | ||||
| #define __NR_sendmsg 211 | ||||
| #define __NR_recvmsg 212 | ||||
| #define __NR_readahead 213 | ||||
| #define __NR_brk 214 | ||||
| #define __NR_munmap 215 | ||||
| #define __NR_mremap 216 | ||||
| #define __NR_add_key 217 | ||||
| #define __NR_request_key 218 | ||||
| #define __NR_keyctl 219 | ||||
| #define __NR_clone 220 | ||||
| #define __NR_execve 221 | ||||
| #define __NR_mmap 222 | ||||
| #define __NR_fadvise64 223 | ||||
| #define __NR_swapon 224 | ||||
| #define __NR_swapoff 225 | ||||
| #define __NR_mprotect 226 | ||||
| #define __NR_msync 227 | ||||
| #define __NR_mlock 228 | ||||
| #define __NR_munlock 229 | ||||
| #define __NR_mlockall 230 | ||||
| #define __NR_munlockall 231 | ||||
| #define __NR_mincore 232 | ||||
| #define __NR_madvise 233 | ||||
| #define __NR_remap_file_pages 234 | ||||
| #define __NR_mbind 235 | ||||
| #define __NR_get_mempolicy 236 | ||||
| #define __NR_set_mempolicy 237 | ||||
| #define __NR_migrate_pages 238 | ||||
| #define __NR_move_pages 239 | ||||
| #define __NR_rt_tgsigqueueinfo 240 | ||||
| #define __NR_perf_event_open 241 | ||||
| #define __NR_accept4 242 | ||||
| #define __NR_recvmmsg 243 | ||||
| #define __NR_arch_specific_syscall 244 | ||||
| #define __NR_wait4 260 | ||||
| #define __NR_prlimit64 261 | ||||
| #define __NR_fanotify_init 262 | ||||
| #define __NR_fanotify_mark 263 | ||||
| #define __NR_name_to_handle_at 264 | ||||
| #define __NR_open_by_handle_at 265 | ||||
| #define __NR_clock_adjtime 266 | ||||
| #define __NR_syncfs 267 | ||||
| #define __NR_setns 268 | ||||
| #define __NR_sendmmsg 269 | ||||
| #define __NR_process_vm_readv 270 | ||||
| #define __NR_process_vm_writev 271 | ||||
| #define __NR_kcmp 272 | ||||
| #define __NR_finit_module 273 | ||||
| #define __NR_sched_setattr 274 | ||||
| #define __NR_sched_getattr 275 | ||||
| #define __NR_renameat2 276 | ||||
| #define __NR_seccomp 277 | ||||
| #define __NR_getrandom 278 | ||||
| #define __NR_memfd_create 279 | ||||
| #define __NR_bpf 280 | ||||
| #define __NR_execveat 281 | ||||
| #define __NR_userfaultfd 282 | ||||
| #define __NR_membarrier 283 | ||||
| #define __NR_mlock2 284 | ||||
| #define __NR_copy_file_range 285 | ||||
| #define __NR_preadv2 286 | ||||
| #define __NR_pwritev2 287 | ||||
| #define __NR_pkey_mprotect 288 | ||||
| #define __NR_pkey_alloc 289 | ||||
| #define __NR_pkey_free 290 | ||||
| #define __NR_statx 291 | ||||
| #define __NR_io_pgetevents 292 | ||||
| #define __NR_rseq 293 | ||||
| #define __NR_kexec_file_load 294 | ||||
| #define __NR_pidfd_send_signal 424 | ||||
| #define __NR_io_uring_setup 425 | ||||
| #define __NR_io_uring_enter 426 | ||||
| #define __NR_io_uring_register 427 | ||||
| #define __NR_open_tree		428 | ||||
| #define __NR_move_mount		429 | ||||
| #define __NR_fsopen		430 | ||||
| #define __NR_fsconfig		431 | ||||
| #define __NR_fsmount		432 | ||||
| #define __NR_fspick		433 | ||||
| #define __NR_pidfd_open		434 | ||||
| #define __NR_clone3		435 | ||||
| #define __NR_close_range	436 | ||||
| #define __NR_openat2		437 | ||||
| #define __NR_pidfd_getfd	438 | ||||
| #define __NR_faccessat2		439 | ||||
| #define __NR_process_madvise	440 | ||||
| #define __NR_epoll_pwait2	441 | ||||
| #define __NR_mount_setattr	442 | ||||
| #define __NR_landlock_create_ruleset	444 | ||||
| #define __NR_landlock_add_rule	445 | ||||
| #define __NR_landlock_restrict_self	446 | ||||
| 
 | ||||
| #define __NR_sysriscv __NR_arch_specific_syscall | ||||
| #define __NR_riscv_flush_icache (__NR_sysriscv + 15) | ||||
|  | @ -0,0 +1,6 @@ | |||
| #include <signal.h> | ||||
| 
 | ||||
| #define ELF_NGREG 32 | ||||
| #define ELF_NFPREG 33 | ||||
| typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; | ||||
| typedef union __riscv_mc_fp_state elf_fpregset_t; | ||||
|  | @ -0,0 +1,19 @@ | |||
| __asm__( | ||||
| ".section .sdata,\"aw\"\n" | ||||
| ".text\n" | ||||
| ".global " START "\n" | ||||
| ".type " START ",%function\n" | ||||
| START ":\n" | ||||
| ".weak __global_pointer$\n" | ||||
| ".hidden __global_pointer$\n" | ||||
| ".option push\n" | ||||
| ".option norelax\n\t" | ||||
| "lla gp, __global_pointer$\n" | ||||
| ".option pop\n\t" | ||||
| "mv a0, sp\n" | ||||
| ".weak _DYNAMIC\n" | ||||
| ".hidden _DYNAMIC\n\t" | ||||
| "lla a1, _DYNAMIC\n\t" | ||||
| "andi sp, sp, -16\n\t" | ||||
| "tail " START "_c" | ||||
| ); | ||||
|  | @ -0,0 +1,21 @@ | |||
| struct kstat { | ||||
| 	dev_t st_dev; | ||||
| 	ino_t st_ino; | ||||
| 	mode_t st_mode; | ||||
| 	nlink_t st_nlink; | ||||
| 	uid_t st_uid; | ||||
| 	gid_t st_gid; | ||||
| 	dev_t st_rdev; | ||||
| 	unsigned long __pad; | ||||
| 	off_t st_size; | ||||
| 	blksize_t st_blksize; | ||||
| 	int __pad2; | ||||
| 	blkcnt_t st_blocks; | ||||
| 	long st_atime_sec; | ||||
| 	long st_atime_nsec; | ||||
| 	long st_mtime_sec; | ||||
| 	long st_mtime_nsec; | ||||
| 	long st_ctime_sec; | ||||
| 	long st_ctime_nsec; | ||||
| 	unsigned __unused[2]; | ||||
| }; | ||||
|  | @ -0,0 +1,13 @@ | |||
| static inline uintptr_t __get_tp() | ||||
| { | ||||
| 	uintptr_t tp; | ||||
| 	__asm__ __volatile__("mv %0, tp" : "=r"(tp)); | ||||
| 	return tp; | ||||
| } | ||||
| 
 | ||||
| #define TLS_ABOVE_TP | ||||
| #define GAP_ABOVE_TP 0 | ||||
| 
 | ||||
| #define DTP_OFFSET 0x800 | ||||
| 
 | ||||
| #define MC_PC __gregs[0] | ||||
|  | @ -0,0 +1,22 @@ | |||
| #if defined __riscv_float_abi_soft | ||||
| #define RISCV_FP_SUFFIX "-sf" | ||||
| #elif defined __riscv_float_abi_single | ||||
| #define RISCV_FP_SUFFIX "-sp" | ||||
| #elif defined __riscv_float_abi_double | ||||
| #define RISCV_FP_SUFFIX "" | ||||
| #endif | ||||
| 
 | ||||
| #define LDSO_ARCH "riscv64" RISCV_FP_SUFFIX | ||||
| 
 | ||||
| #define TPOFF_K 0 | ||||
| 
 | ||||
| #define REL_SYMBOLIC    R_RISCV_64 | ||||
| #define REL_PLT         R_RISCV_JUMP_SLOT | ||||
| #define REL_RELATIVE    R_RISCV_RELATIVE | ||||
| #define REL_COPY        R_RISCV_COPY | ||||
| #define REL_DTPMOD      R_RISCV_TLS_DTPMOD64 | ||||
| #define REL_DTPOFF      R_RISCV_TLS_DTPREL64 | ||||
| #define REL_TPOFF       R_RISCV_TLS_TPREL64 | ||||
| 
 | ||||
| #define CRTJMP(pc,sp) __asm__ __volatile__( \ | ||||
| 	"mv sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue