用于嵌入式Linux系统的标准C的库函数

源代码在线查看: trap.s

软件大小: 6528 K
上传用户: whyzhao
关键词: Linux 嵌入式 标准
下载地址: 免注册下载 普通下载 VIP

相关代码

				#include "sys/syscall.h"								#define SYSCALL(name) \					.global name	; \				name:			; \					ldi	r4, SYS ## name ; \					bra	__trap0									.text					.stabs	"trap.S",100,0,0,__trap0					.stabs	"int:t(0,1)=r(0,1);-65536;65535;",128,0,0,0					.stabs	"long int:t(0,2)=r(0,1);0020000000000;0017777777777;",128,0,0,0					.stabs	"_trap0:F(0,1)",36,0,1,__trap0					.stabs	"arg1:P(0,1)",64,0,1,0					.stabs	"arg2:P(0,1)",64,0,1,1					.stabs	"arg3:P(0,1)",64,0,1,2					.stabs	"arg4:P(0,1)",64,0,1,3					.stabs	"number:P(0,1)",64,0,1,4					.global	__trap0					.type	__trap0,@function				__trap0:					trap	15			/* trap 15 returns result in r0, error code in r4 */					cmpeqi	r4,0			/* is error code zero? */					brf0t	ret			/* yes, skip setting errno */				#if __INT__==32					st	r4,@(errno+2,r14)	/* no, set errno */					srai	r4,15			/* sign extend high word */					st	r4,@(errno,r14)				#else					st	r4,@(errno,r14)	/* no, set errno */				#endif								ret:					jmp	r13		/* return to caller */				.Ltrap0:					.size	__trap0,.Ltrap0-__trap0					.stabs	"",36,0,0,.Ltrap0-__trap0								#define CONCAT(a,b) a ## b				#define STRING(a) #a				#define XSTRING(a) STRING(a)				#define XSTRING2(a,b) XSTRING(CONCAT(a,b))								#if __INT__==32				#define _read _read16				#define _lseek _lseek16				#define _write _write16				#define _close _close16				#define _open _open16				#define _creat _creat16				#define _exit _exit16				#define _stat _stat16				#define _chmod _chmod16				#define _chown _chown16				#define _fork _fork16				#define _wait _wait16				#define _execve _execve16				#define _execv _execv16				#define _pipe _pipe16				#define _kill _kill16				#define _getpid _getpid16				#endif								/* Until the assembler allows semicolon as a statement separator, */				/* we cannot use the SYSCALL macro.  So expand it manually for now. */								/* #SYSCALL(_read) */				/* #SYSCALL(_lseek) */				/* #SYSCALL(_write) */				/* #SYSCALL(_close) */				/* #SYSCALL(_open) */				/* #SYSCALL(_creat) */				/* #SYSCALL(_exit) */				/* #SYSCALL(_stat) */				/* #SYSCALL(_chmod) */				/* #SYSCALL(_chown) */				/* #SYSCALL(_fork) */				/* #SYSCALL(_wait) */				/* #SYSCALL(_execve) */				/* #SYSCALL(_execv) */				/* #SYSCALL(_pipe) */				/* #SYSCALL(_getpid) */				/* #SYSCALL(_kill) */									.global	_read					.type	_read,@function					.stabs	XSTRING2(_read,:F(0,1)),36,0,2,_read					.stabs	"fd:P(0,1)",64,0,1,0					.stabs	"ptr:P(0,1)",64,0,1,1					.stabs	"len:P(0,1)",64,0,1,2				_read:					ldi	r4, SYS_read					bra	__trap0				.Lread:					.size	_read,.-_read					.stabs	"",36,0,0,.Lread-_read									.global	_lseek					.type	_lseek,@function					.stabs	XSTRING2(_lseek,:F(0,1)),36,0,3,_lseek					.stabs	"fd:P(0,1)",64,0,1,0					.stabs	"offset:P(0,1)",64,0,1,2					.stabs	"whence:p(0,1)",160,0,1,0				_lseek:					ldi	r4, SYS_lseek					bra	__trap0				.Llseek:					.size	_lseek,.Llseek-_lseek					.stabs	"",36,0,0,.Llseek-_lseek									.global	_write					.type	_write,@function					.stabs	XSTRING2(_write,:F(0,1)),36,0,4,_write					.stabs	"fd:P(0,1)",64,0,1,0					.stabs	"ptr:P(0,1)",64,0,1,1					.stabs	"len:P(0,1)",64,0,1,2				_write:					ldi	r4, SYS_write					bra	__trap0				.Lwrite:					.size	_write,.Lwrite-_write					.stabs	"",36,0,0,.Lwrite-_write									.global	_close					.type	_close,@function					.stabs	XSTRING2(_close,:F(0,1)),36,0,5,_close					.stabs	"fd:P(0,1)",64,0,1,0				_close:					ldi	r4, SYS_close					bra	__trap0				.Lclose:					.size	_close,.Lclose-_close					.stabs	"",36,0,0,.Lclose-_close									.global	_open					.type	_open,@function					.stabs	XSTRING2(_open,:F(0,1)),36,0,6,_open					.stabs	"name:P(0,1)",64,0,1,0					.stabs	"flags:P(0,1)",64,0,1,1					.stabs	"mode:P(0,1)",64,0,1,2				_open:					ldi	r4, SYS_open					bra	__trap0				.Lopen:					.size	_open,.Lopen-_open					.stabs	"",36,0,0,.Lopen-_open									.global	_creat					.type	_creat,@function					.stabs	XSTRING2(_creat,:F(0,1)),36,0,7,_creat					.stabs	"name:P(0,1)",64,0,1,0					.stabs	"mode:P(0,1)",64,0,1,1				_creat:					ldi	r4, SYS_creat					bra	__trap0				.Lcreat:					.size	_creat,.Lcreat-_creat					.stabs	"",36,0,0,.Lcreat-_creat									.global	_exit					.type	_exit,@function					.stabs	XSTRING2(_exit,:F(0,1)),36,0,8,_exit					.stabs	"status:P(0,1)",64,0,1,0				_exit:					ldi	r4, SYS_exit					bra	__trap0				.Lexit:					.size	_exit,.Lexit-_exit					.stabs	"",36,0,0,.Lexit-_exit									.global	_stat					.type	_stat,@function					.stabs	XSTRING2(_stat,:F(0,1)),36,0,9,_stat					.stabs	"name:P(0,1)",64,0,1,0					.stabs	"packet:P(0,1)",64,0,1,1				_stat:					ldi	r4, SYS_stat					bra	__trap0				.Lstat:					.size	_stat,.Lstat-_stat					.stabs	"",36,0,0,.Lstat-_stat									.global	_chmod					.type	_chmod,@function					.stabs	XSTRING2(_chmod,:F(0,1)),36,0,10,_chmod					.stabs	"name:P(0,1)",64,0,1,0					.stabs	"mode:P(0,1)",64,0,1,1				_chmod:					ldi	r4, SYS_chmod					bra	__trap0				.Lchmod:					.size	_chmod,.Lchmod-_chmod					.stabs	"",36,0,0,.Lchmod-_chmod									.global	_chown					.type	_chown,@function					.stabs	XSTRING2(_chown,:F(0,1)),36,0,11,_chown					.stabs	"name:P(0,1)",64,0,1,0					.stabs	"uid:P(0,1)",64,0,1,1					.stabs	"gid:P(0,1)",64,0,1,2				_chown:					ldi	r4, SYS_chown					bra	__trap0				.Lchown:					.size	_chown,.Lchown-_chown					.stabs	"",36,0,0,.Lchown-_chown									.global	_fork					.type	_fork,@function					.stabs	XSTRING2(_fork,:F(0,1)),36,0,12,_fork				_fork:					ldi	r4, SYS_fork					bra	__trap0				.Lfork:					.size	_fork,.Lfork-_fork					.stabs	"",36,0,0,.Lfork-_fork									.global	_wait					.type	_wait,@function					.stabs	"status:P(0,1)",64,0,1,0					.stabs	XSTRING2(_wait,:F(0,1)),36,0,13,_wait				_wait:					ldi	r4, SYS_wait					bra	__trap0				.Lwait:					.size	_wait,.Lwait-_wait					.stabs	"",36,0,0,.Lwait-_wait									.global	_execve					.type	_execve,@function					.stabs	"name:P(0,1)",64,0,1,0					.stabs	"argv:P(0,1)",64,0,1,1					.stabs	"envp:P(0,1)",64,0,1,2					.stabs	XSTRING2(_execve,:F(0,1)),36,0,14,_execve				_execve:					ldi	r4, SYS_execve					bra	__trap0				.Lexecve:					.size	_execve,.Lexecve-_execve					.stabs	"",36,0,0,.Lexecve-_execve									.global	_execv					.type	_execv,@function					.stabs	XSTRING2(_execv,:F(0,1)),36,0,15,_execv					.stabs	"name:P(0,1)",64,0,1,0					.stabs	"argv:P(0,1)",64,0,1,1				_execv:					ldi	r4, SYS_execv					bra	__trap0				.Lexecv:					.size	_execv,.Lexecv-_execv					.stabs	"",36,0,0,.Lexecv-_execv									.global	_pipe					.type	_pipe,@function					.stabs	XSTRING2(_pipe,:F(0,1)),36,0,16,_pipe					.stabs	"fds:P(0,1)",64,0,1,0				_pipe:					ldi	r4, SYS_pipe					bra	__trap0				.Lpipe:					.size	_pipe,.Lpipe-_pipe					.stabs	"",36,0,0,.Lpipe-_pipe									.global	time					.type	time,@function					.stabs	XSTRING2(time,:F(0,1)),36,0,17,time					.stabs	"ptr:P(0,1)",64,0,1,0				time:					ldi	r4, SYS_time					bra	__trap0				.Ltime:					.size	time,.Ltime-time					.stabs	"",36,0,0,.Ltime-time									.global	_kill					.type	_kill,@function					.stabs	XSTRING2(_kill,:F(0,1)),36,0,18,_kill					.stabs	"pid:P(0,1)",64,0,1,0					.stabs	"sig:P(0,1)",64,0,1,1				_kill:					ldi	r4, SYS_kill					bra	__trap0				.Lkill:					.size	_kill,.Lkill-_kill					.stabs	"",36,0,0,.Lkill-_kill									.global	_getpid					.type	_getpid,@function					.stabs	XSTRING2(_getpid,:F(0,1)),36,0,19,_getpid				_getpid:					ldi	r4, SYS_getpid					bra	__trap0				.Lgetpid:					.size	_getpid,.Lgetpid-_getpid					.stabs	"",36,0,0,.Lgetpid-_getpid							

相关资源