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 | #define TRANSFORM_H | ||||||
| 
 | 
 | ||||||
| #include <pthread.h> | #include <pthread.h> | ||||||
|  | #include <signal.h> | ||||||
| #include <semaphore.h> | #include <semaphore.h> | ||||||
| #include <stddef.h> | #include <stddef.h> | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
|  |  | ||||||
|  | @ -29,9 +29,8 @@ extern "C" { | ||||||
| #include <time.h> | #include <time.h> | ||||||
| #include <sys/time.h> | #include <sys/time.h> | ||||||
| 
 | 
 | ||||||
| #if defined(ARCH_ARM) | #if defined(ARCH_ARM) && !defined(LIB_MUSLLIB) | ||||||
| #include "pthread arm.h" | #include "pthread arm.h" | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| // enum {
 | // enum {
 | ||||||
| //     PTHREAD_BARRIER_SERIAL_THREAD,
 | //     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); | int       pthread_timedjoin_np(pthread_t thread, void **retval, const struct timespec *abstime); | ||||||
| 
 | 
 | ||||||
| /* function in pthread_mutex.c */ | /* 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_destroy(pthread_mutex_t *mutex); | ||||||
| int pthread_mutex_lock(pthread_mutex_t *mutex); | int pthread_mutex_lock(pthread_mutex_t *mutex); | ||||||
| int pthread_mutex_unlock(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_gettype(const pthread_mutexattr_t *attr, int *type); | ||||||
| int pthread_mutexattr_settype(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_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 | #ifdef __cplusplus | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -49,7 +49,7 @@ int pthread_create(pthread_t *thread, const pthread_attr_t *attr, | ||||||
|       return -1 ; |       return -1 ; | ||||||
|      |      | ||||||
|     ret = UserTaskStartup(pid); |     ret = UserTaskStartup(pid); | ||||||
|     *thread = pid; |     *thread = (pthread_t)pid; | ||||||
| 
 | 
 | ||||||
|     return ret; |     return ret; | ||||||
| 
 | 
 | ||||||
|  | @ -63,7 +63,7 @@ void pthread_exit(void *value_ptr){ | ||||||
| pthread_t pthread_self(void){ | pthread_t pthread_self(void){ | ||||||
|      |      | ||||||
|     pthread_t pthread ; |     pthread_t pthread ; | ||||||
|     pthread = UserGetTaskID(); |     pthread = (pthread_t)UserGetTaskID(); | ||||||
|     return pthread; |     return pthread; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -112,7 +112,7 @@ int pthread_join(pthread_t thread, void **retval) | ||||||
| int pthread_kill(pthread_t thread, int sig) | int pthread_kill(pthread_t thread, int sig) | ||||||
| { | { | ||||||
|     /* This api should not be used, and will not be supported */ |     /* This api should not be used, and will not be supported */ | ||||||
|     UserTaskDelete(thread); |     UserTaskDelete((int32_t)thread); | ||||||
|     return -1; |     return -1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -21,7 +21,117 @@ | ||||||
| 
 | 
 | ||||||
| #include <time.h> | #include <time.h> | ||||||
| #include "include/pthread.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) | int pthread_mutex_init(pthread_mutex_t *p_mutex, const pthread_mutexattr_t *attr) | ||||||
| { | { | ||||||
|     *p_mutex = UserMutexCreate(); |     *p_mutex = UserMutexCreate(); | ||||||
|  | @ -82,9 +192,11 @@ int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type) | ||||||
|     return 0; |     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; |     return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -118,7 +230,7 @@ int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr, int pshared) | ||||||
|     return 0; |     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; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -41,30 +41,35 @@ export CPPPATHS | ||||||
| export SRC_APP_DIR := ../../APP_Framework | export SRC_APP_DIR := ../../APP_Framework | ||||||
| export SRC_KERNEL_DIR := arch board lib fs kernel resources tool | export SRC_KERNEL_DIR := arch board lib fs kernel resources tool | ||||||
| export SRC_DIR:= $(SRC_APP_DIR) $(SRC_KERNEL_DIR) | 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:= | PART:= | ||||||
| 
 | 
 | ||||||
| all: | all: | ||||||
| 
 |  | ||||||
| ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),y_) | ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),y_) | ||||||
| include path_app.mk |  | ||||||
| PART += COMPILE_APP | PART += COMPILE_APP | ||||||
| 
 | 
 | ||||||
| else ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),_y) | else ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),_y) | ||||||
| include path_kernel.mk |  | ||||||
| PART += COMPILE_KERNEL | PART += COMPILE_KERNEL | ||||||
| 
 | 
 | ||||||
| else ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),y_y) | else ifeq ($(CONFIG_COMPILER_APP)_$(CONFIG_COMPILER_KERNEL),y_y) | ||||||
| include path_app.mk |  | ||||||
| include path_kernel.mk |  | ||||||
| PART := COMPILE_APP COMPILE_KERNEL | PART := COMPILE_APP COMPILE_KERNEL | ||||||
| 
 | 
 | ||||||
| else | else | ||||||
| include path_kernel.mk | PART :=  | ||||||
| CPPPATHS := $(KERNELPATHS) | 
 | ||||||
| PART := COMPILE_ALL | ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||||
|  | PART += COMPILE_MUSL clean | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
|  | ifeq ($(CONFIG_RESOURCES_LWIP), y) | ||||||
|  | PART += COMPILE_LWIP clean | ||||||
|  | endif | ||||||
|  | 
 | ||||||
|  | PART += COMPILE_ALL | ||||||
|  | endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| all: $(PART) | all: $(PART) | ||||||
|  | @ -78,7 +83,40 @@ COMPILE_ALL: | ||||||
| 	@$(MAKE) -C build TARGET=XiZi-$(BOARD).elf LINK_FLAGS=LFLAGS | 	@$(MAKE) -C build TARGET=XiZi-$(BOARD).elf LINK_FLAGS=LFLAGS | ||||||
| 	@rm build/Makefile build/make.obj | 	@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: | show_info: | ||||||
| 	@echo "CONFIG_COMPILER_APP is :" $(CONFIG_COMPILER_APP) | 	@echo "CONFIG_COMPILER_APP is :" $(CONFIG_COMPILER_APP) | ||||||
|  |  | ||||||
|  | @ -156,12 +156,14 @@ uint8 KTaskStackSetup(struct TaskDescriptor *task) | ||||||
|     } |     } | ||||||
| #else | #else | ||||||
|     StackContex->ExErrorStackContex.lr = (unsigned long)KTaskQuit; |     StackContex->ExErrorStackContex.lr = (unsigned long)KTaskQuit; | ||||||
|  |     KPrintf("DEBUG: ExErrorStackContex.lr set KTaskQuit..\n"); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if USE_FPU | #if USE_FPU | ||||||
|     StackContex->flag = 0; |     StackContex->flag = 0; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  |     KPrintf("DEBUG: KTaskStackSetup end, task: %i.\n", task->id.id); | ||||||
|     return EOK; |     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 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 | 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 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 | 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 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 DEFINES := -DHAVE_CCONFIG_H -g | ||||||
| 
 | 
 | ||||||
| export ARCH = arm | 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 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 | 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 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=y | ||||||
| CONFIG_LIB_POSIX=y | CONFIG_LIB_POSIX=y | ||||||
| CONFIG_LIB_NEWLIB=y | CONFIG_LIB_NEWLIB=y | ||||||
|  | CONFIG_LIB_MUSLLIB=y | ||||||
| 
 | 
 | ||||||
| CONFIG_LITTLEVGL2RTT_USING_DEMO=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  | 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 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 | 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 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 DEFINES := -DHAVE_CCONFIG_H   | ||||||
| 
 | 
 | ||||||
| export ARCH = arm | export ARCH = arm | ||||||
|  |  | ||||||
|  | @ -1,11 +1,21 @@ | ||||||
| export CROSS_COMPILE ?=/usr/bin/arm-none-eabi- | 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 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 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -x assembler-with-cpp -Wa,-mimplicit-it=thumb  -gdwarf-2 | 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 -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 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 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -Werror | 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 | 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 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 | 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 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 | export DEFINES := -DHAVE_CCONFIG_H  -DSTM32F407xx -DUSE_HAL_DRIVER -DHAVE_SIGINFO | ||||||
|  |  | ||||||
|  | @ -1,14 +1,24 @@ | ||||||
| export CROSS_COMPILE ?=/usr/bin/arm-none-eabi- | 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 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
 | ### 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) | 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 | 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 | endif | ||||||
| 
 | 
 | ||||||
| export CXXFLAGS := -mcpu=cortex-m7 -mthumb -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g | 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_clock.h" | ||||||
| #include "fsl_enet.h" | #include "fsl_enet.h" | ||||||
| #include "clock_config.h" | #include "clock_config.h" | ||||||
| #include <xizi.h> | // #include <xizi.h>
 | ||||||
| #include <arch_interrupt.h> | #include <arch_interrupt.h> | ||||||
| 
 | 
 | ||||||
| extern int heap_start; | extern int heap_start; | ||||||
|  |  | ||||||
|  | @ -1,5 +1,21 @@ | ||||||
| SRC_DIR_TEMP :=$(SRC_DIR) | ifeq ($(COMPILE_TYPE), COMPILE_MUSL)  | ||||||
| SRC_DIR:= | 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) | CUR_DIR :=$(shell pwd) | ||||||
| 
 | 
 | ||||||
|  | @ -34,7 +50,7 @@ $(if $(strip $(LOCALC)),$(eval $(LOCALC): $(1) | ||||||
| 	@if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi | 	@if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi | ||||||
| 	@echo cc $$< | 	@echo cc $$< | ||||||
| 	@/bin/echo -n $(dir $(LOCALC)) >>$(KERNEL_ROOT)/build/make.dep | 	@/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 $$@)) | 	@$(CROSS_COMPILE)gcc $$(CFLAGS) -c $$< -o $$@)) | ||||||
| endef | endef | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -357,7 +357,7 @@ static int FatfsStat(struct MountPoint *mp, const char *path, | ||||||
|     FRESULT res; |     FRESULT res; | ||||||
|     FILINFO fno; |     FILINFO fno; | ||||||
|     char *ff_path; |     char *ff_path; | ||||||
|     struct tm tm; |     // struct tm tm;
 | ||||||
|     int year, mon, day, hour, min, sec; |     int year, mon, day, hour, min, sec; | ||||||
|     WORD tmp; |     WORD tmp; | ||||||
| 
 | 
 | ||||||
|  | @ -465,7 +465,7 @@ DWORD GetFatTime(void) | ||||||
| { | { | ||||||
|     DWORD fat_time = 0; |     DWORD fat_time = 0; | ||||||
| 
 | 
 | ||||||
| #ifdef LIB | #if defined LIB && !defined(LIB_MUSLLIB) | ||||||
|     time_t now; |     time_t now; | ||||||
|     struct tm *p_tm; |     struct tm *p_tm; | ||||||
|     struct tm tm_now; |     struct tm tm_now; | ||||||
|  |  | ||||||
|  | @ -13,7 +13,6 @@ | ||||||
| #ifndef _INC_IOT_VFS_H_ | #ifndef _INC_IOT_VFS_H_ | ||||||
| #define _INC_IOT_VFS_H_ | #define _INC_IOT_VFS_H_ | ||||||
| 
 | 
 | ||||||
| #include <xizi.h> |  | ||||||
| #include <bus.h> | #include <bus.h> | ||||||
| 
 | 
 | ||||||
| #define MAX_FILE_NAME 255 | #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); | int write(int fd, const void *buf, size_t len); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| int open(const char *path, int flags, ...); | 
 | ||||||
|  | 
 | ||||||
|  | int open(const char* path, int flags, ...); | ||||||
| int close(int fd); | 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); | off_t lseek(int fd, off_t offset, int whence); | ||||||
| int rename(const char *from, const char *to); | int rename(const char *from, const char *to); | ||||||
| int unlink(const char *path); | int unlink(const char *path); | ||||||
| int stat(const char *path, struct stat *buf); | // int stat(const char *path, struct stat *buf);
 | ||||||
| int fstat(int fd, struct stat *buf); | // int fstat(int fd, struct stat *buf);
 | ||||||
| int fsync(int fd); | int fsync(int fd); | ||||||
| int ftruncate(int fd, off_t length); | int ftruncate(int fd, off_t length); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -573,7 +573,8 @@ int write(int fd, const void *buf, size_t len) | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int ioctl(int fd, int cmd, void *args) | #ifndef LIB_MUSLLIB | ||||||
|  | int ioctl(int fd, int cmd, ...) | ||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|     struct FileDescriptor *fdp; |     struct FileDescriptor *fdp; | ||||||
|  | @ -589,7 +590,10 @@ int ioctl(int fd, int cmd, void *args) | ||||||
|         return -1; |         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) { |     if (ret < 0) { | ||||||
|         SYS_ERR("%s: ioctl file failed\n", __func__); |         SYS_ERR("%s: ioctl file failed\n", __func__); | ||||||
|         KUpdateExstatus(ret); |         KUpdateExstatus(ret); | ||||||
|  | @ -598,6 +602,7 @@ int ioctl(int fd, int cmd, void *args) | ||||||
| 
 | 
 | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| off_t lseek(int fd, off_t offset, int whence) | off_t lseek(int fd, off_t offset, int whence) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -35,6 +35,12 @@ | ||||||
| #include <xs_isr.h> | #include <xs_isr.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
| #include <stdio.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_memory.h> | ||||||
| #include <xs_id.h> | #include <xs_id.h> | ||||||
| #include <xs_ktick.h> | #include <xs_ktick.h> | ||||||
|  |  | ||||||
|  | @ -80,11 +80,11 @@ enum SIGN_OPER | ||||||
| 
 | 
 | ||||||
| struct DeviceBlockArrange | struct DeviceBlockArrange | ||||||
| { | { | ||||||
|     uint32 bank_num; |     uint32_t bank_num; | ||||||
|     uint32 size_perbank; |     uint32_t size_perbank; | ||||||
|     uint32 block_size; |     uint32_t block_size; | ||||||
|     uint16 bank_start; |     uint16_t bank_start; | ||||||
|     uint16 bank_end;                       |     uint16_t bank_end;                       | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct DeviceBlockAddr | struct DeviceBlockAddr | ||||||
|  |  | ||||||
|  | @ -23,7 +23,7 @@ | ||||||
| #define XS_KLIST_H | #define XS_KLIST_H | ||||||
| 
 | 
 | ||||||
| #include <xs_base.h> | #include <xs_base.h> | ||||||
| #include "libc.h" | // #include <libc.h>
 | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
|  |  | ||||||
|  | @ -170,7 +170,7 @@ int32 UTaskCreate(const char *name, | ||||||
| 
 | 
 | ||||||
| void KUpdateExstatus(x_err_t no); | void KUpdateExstatus(x_err_t no); | ||||||
| int *KObtainExstatus(void); | int *KObtainExstatus(void); | ||||||
| #if !defined(LIB_NEWLIB) && !defined(_WIN32) | #if !defined(LIB_NEWLIB) && !defined(LIB_MUSLLIB) && !defined(_WIN32) | ||||||
| #ifndef errno | #ifndef errno | ||||||
| #define errno    *KObtainExstatus() | #define errno    *KObtainExstatus() | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -23,6 +23,7 @@ | ||||||
| #define XS_MEMORY_H | #define XS_MEMORY_H | ||||||
| 
 | 
 | ||||||
| #include <xsconfig.h> | #include <xsconfig.h> | ||||||
|  | #include <xs_base.h> | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
|  |  | ||||||
|  | @ -270,6 +270,7 @@ static inline void SwitchToFirstRunningTask(struct TaskDescriptor* task) | ||||||
| 
 | 
 | ||||||
|     Assign.ready_vector_done->remove(task); |     Assign.ready_vector_done->remove(task); | ||||||
|     KTaskStatSetAsRunning(task); |     KTaskStatSetAsRunning(task); | ||||||
|  |     KPrintf("DEBUG: calling SwitchKtaskContextTo, task: %i.\n", task->id.id); | ||||||
|     SwitchKtaskContextTo((x_ubase)&task->stack_point, task); |     SwitchKtaskContextTo((x_ubase)&task->stack_point, task); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -372,7 +373,7 @@ void StartupOsAssign(void) | ||||||
|     FirstRunningTask = ChooseTaskWithHighestPrio(&Assign.os_assign_read_vector); |     FirstRunningTask = ChooseTaskWithHighestPrio(&Assign.os_assign_read_vector); | ||||||
| 
 | 
 | ||||||
|     SetSystemRunningTask(FirstRunningTask); |     SetSystemRunningTask(FirstRunningTask); | ||||||
| 
 |     KPrintf("DEBUG: calling SwitchToFirstRunningTask.\n"); | ||||||
|     SwitchToFirstRunningTask(FirstRunningTask); |     SwitchToFirstRunningTask(FirstRunningTask); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -155,6 +155,7 @@ void _InitSubCmpts(struct InitSequenceDesc sub_cmpts[]) | ||||||
| #ifdef KERNEL_COMPONENTS_INIT | #ifdef KERNEL_COMPONENTS_INIT | ||||||
| void EnvInitKTask(void *parameter) | void EnvInitKTask(void *parameter) | ||||||
| { | { | ||||||
|  | 	KPrintf("DEBUG: RUNNING ENV TASK\n"); | ||||||
| 	x_base lock = 0; | 	x_base lock = 0; | ||||||
| 	lock = DISABLE_INTERRUPT(); | 	lock = DISABLE_INTERRUPT(); | ||||||
| 	_InitSubCmpts(prev_cmpts_init); | 	_InitSubCmpts(prev_cmpts_init); | ||||||
|  | @ -187,12 +188,14 @@ void CreateEnvInitTask(void) | ||||||
| 
 | 
 | ||||||
|     env_init = KTaskCreate("env_init", EnvInitKTask, NONE, |     env_init = KTaskCreate("env_init", EnvInitKTask, NONE, | ||||||
| 		ENV_INIT_KTASK_STACK_SIZE, KTASK_PRIORITY_MAX - 1); | 		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__); | 		KPrintf("env_init create failed ...%s %d.\n",__FUNCTION__,__LINE__); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	StartupKTask(env_init); | 	StartupKTask(env_init); | ||||||
|  | 	KPrintf("DEBUG: Env StartupTask end.\n"); | ||||||
| } | } | ||||||
| #endif   /* KERNEL_COMPONENTS_INIT */ | #endif   /* KERNEL_COMPONENTS_INIT */ | ||||||
| 
 | 
 | ||||||
|  | @ -250,8 +253,8 @@ extern int InitUserspace(void); | ||||||
|     StartWatchdog(); |     StartWatchdog(); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | 	KPrintf("DEBUG: calling StartipOsAssign.\n"); | ||||||
| 	StartupOsAssign(); | 	StartupOsAssign(); | ||||||
| 	 |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,23 +1,26 @@ | ||||||
| menu "Lib" | menu "Lib" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| menuconfig LIB | menuconfig LIB | ||||||
|     bool "Enable libc APIs from toolchain" |     bool "Enable libc APIs from toolchain" | ||||||
|     default y |     default y | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     if LIB  |     if LIB  | ||||||
|         config LIB_POSIX |         config LIB_POSIX | ||||||
|             bool "Enable POSIX layer for poll/select, stdin etc" |             bool "Enable POSIX layer for poll/select, stdin etc" | ||||||
|             default y |             default y | ||||||
|     endif |     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/libcpp/Kconfig" | ||||||
| 
 | 
 | ||||||
| source "$KERNEL_DIR/lib/newlib/Kconfig" |  | ||||||
| 
 |  | ||||||
| endmenu | endmenu | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| SRC_DIR :=     | SRC_DIR :=     | ||||||
| 
 | MUSL_DIR := | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -11,6 +11,10 @@ ifeq ($(CONFIG_LIB_CPLUSPLUS),y) | ||||||
| SRC_DIR += libcpp | SRC_DIR += libcpp | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
|  | ifeq ($(CONFIG_LIB_MUSLLIB), y) | ||||||
|  | # SRC_DIR += musllib
 | ||||||
|  | # MUSL_DIR += musllib
 | ||||||
|  | endif | ||||||
| 
 | 
 | ||||||
| include $(KERNEL_ROOT)/compiler.mk | 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