Home | History | Annotate | Line # | Download | only in zboot
unixsys.S revision 1.1.2.2
      1  1.1.2.2  skrll /*	$NetBSD: unixsys.S,v 1.1.2.2 2009/03/03 18:29:50 skrll Exp $	*/
      2  1.1.2.2  skrll /*	$OpenBSD: unixsys.S,v 1.6 2005/05/24 20:38:20 uwe Exp $	*/
      3  1.1.2.2  skrll 
      4  1.1.2.2  skrll /*
      5  1.1.2.2  skrll  * Copyright (c) 2005 Uwe Stuehler <uwe (at) bsdx.de>
      6  1.1.2.2  skrll  *
      7  1.1.2.2  skrll  * Permission to use, copy, modify, and distribute this software for any
      8  1.1.2.2  skrll  * purpose with or without fee is hereby granted, provided that the above
      9  1.1.2.2  skrll  * copyright notice and this permission notice appear in all copies.
     10  1.1.2.2  skrll  *
     11  1.1.2.2  skrll  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     12  1.1.2.2  skrll  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     13  1.1.2.2  skrll  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     14  1.1.2.2  skrll  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     15  1.1.2.2  skrll  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     16  1.1.2.2  skrll  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     17  1.1.2.2  skrll  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     18  1.1.2.2  skrll  */
     19  1.1.2.2  skrll 
     20  1.1.2.2  skrll #include <machine/asm.h>
     21  1.1.2.2  skrll 
     22  1.1.2.2  skrll #include "compat_linux.h"
     23  1.1.2.2  skrll 
     24  1.1.2.2  skrll 	.text
     25  1.1.2.2  skrll 
     26  1.1.2.2  skrll #define RSYSCALL(x) \
     27  1.1.2.2  skrll 	ENTRY(__CONCAT(u,x)) \
     28  1.1.2.2  skrll 		swi	__CONCAT(__NR_,x); \
     29  1.1.2.2  skrll 		b	1f
     30  1.1.2.2  skrll 
     31  1.1.2.2  skrll RSYSCALL(exit)
     32  1.1.2.2  skrll RSYSCALL(read)
     33  1.1.2.2  skrll RSYSCALL(write)
     34  1.1.2.2  skrll RSYSCALL(open)
     35  1.1.2.2  skrll RSYSCALL(close)
     36  1.1.2.2  skrll RSYSCALL(lseek32)
     37  1.1.2.2  skrll RSYSCALL(ioctl)
     38  1.1.2.2  skrll RSYSCALL(stat)
     39  1.1.2.2  skrll 
     40  1.1.2.2  skrll 1:
     41  1.1.2.2  skrll 	cmn	r0, #4096
     42  1.1.2.2  skrll 	movcc	pc, lr
     43  1.1.2.2  skrll 	rsb	r0, r0, #0
     44  1.1.2.2  skrll 	ldr	r1, .Lerrno	/* XXX clobbers arg1 */
     45  1.1.2.2  skrll 	str	r0, [r1]
     46  1.1.2.2  skrll 	mvn	r0, #0
     47  1.1.2.2  skrll 	mov	pc, lr
     48  1.1.2.2  skrll 
     49  1.1.2.2  skrll .Lerrno:
     50  1.1.2.2  skrll 	.word	errno
     51  1.1.2.2  skrll 
     52  1.1.2.2  skrll /* XXX only works for up to four arguments. */
     53  1.1.2.2  skrll ENTRY(syscall)
     54  1.1.2.2  skrll 	swi	__NR_syscall
     55  1.1.2.2  skrll 	b	1b
     56  1.1.2.2  skrll 
     57  1.1.2.2  skrll ENTRY(uselect)
     58  1.1.2.2  skrll 	str	r4, [sp, #-4]!
     59  1.1.2.2  skrll 	ldr	r4, [sp, #4]
     60  1.1.2.2  skrll 	swi	__NR_select
     61  1.1.2.2  skrll 	ldr	r4, [sp], #4
     62  1.1.2.2  skrll 	cmn	r0, #4096
     63  1.1.2.2  skrll 	movcc	pc, lr
     64  1.1.2.2  skrll 	rsb	r0, r0, #0
     65  1.1.2.2  skrll 	str	r1, [sp, #-4]!
     66  1.1.2.2  skrll 	ldr	r1, .Lerrno
     67  1.1.2.2  skrll 	str	r0, [r1]
     68  1.1.2.2  skrll 	ldr	r1, [sp], #4
     69  1.1.2.2  skrll 	mvn	r0, #0
     70  1.1.2.2  skrll 	mov	pc, lr
     71  1.1.2.2  skrll 
     72  1.1.2.2  skrll .data
     73  1.1.2.2  skrll 
     74  1.1.2.2  skrll 	.global errno
     75  1.1.2.2  skrll errno:
     76  1.1.2.2  skrll 	.word	0
     77