9676aeef0d
START_FUNC: New macro. END_FUNC: New macro. exit, isatty, getpid, sc2: Use the new macros.
87 lines
1.9 KiB
ArmAsm
87 lines
1.9 KiB
ArmAsm
/* Copyright (c) 2012, 2013 Red Hat, Inc. All rights reserved.
|
|
|
|
This copyrighted material is made available to anyone wishing to use, modify,
|
|
copy, or redistribute it subject to the terms and conditions of the BSD
|
|
License. This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties
|
|
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license
|
|
is available at http://www.opensource.org/licenses. Any Red Hat trademarks that
|
|
are incorporated in the source code or documentation are not subject to the BSD
|
|
License and may only be used or replicated with the express permission of
|
|
Red Hat, Inc.
|
|
*/
|
|
|
|
/* Empty syscall definitions for when we run on real hardware. */
|
|
|
|
#include "../syscall.h"
|
|
#include "memmodel.h"
|
|
|
|
#define ENOSYS 88
|
|
|
|
.macro sc,a
|
|
sc2 \a,\a
|
|
.endm
|
|
|
|
.macro START_FUNC name1, name2=foo
|
|
.pushsection .text.\name1,"ax",@progbits
|
|
.p2align 1
|
|
.weak \name1
|
|
.global \name1
|
|
\name1:
|
|
.ifnc \name2,foo
|
|
.weak \name2
|
|
.global \name2
|
|
\name2:
|
|
.endif
|
|
.endm
|
|
|
|
.macro END_FUNC name1, name2=foo
|
|
.type \name1 , @function
|
|
.size \name1 , . - \name1
|
|
.ifnc \name2,foo
|
|
.type \name2 , @function
|
|
.size \name2 , . - \name2
|
|
.endif
|
|
.popsection
|
|
.endm
|
|
|
|
|
|
START_FUNC exit, _exit
|
|
/* For some reason, the board fails to stop at a breakpoint
|
|
placed on top of a software breakpoint instruction. */
|
|
/* MOV.B #0,R3 ; this is a software breakpoint instruction */
|
|
1: br_ #1b
|
|
END_FUNC exit, _exit
|
|
|
|
|
|
START_FUNC isatty,_isatty
|
|
MOV #1,R12
|
|
ret_
|
|
END_FUNC isatty,_isatty
|
|
|
|
|
|
START_FUNC getpid
|
|
MOV #42,R12
|
|
ret_
|
|
END_FUNC getpid
|
|
|
|
|
|
.macro sc2,name,num
|
|
START_FUNC \name
|
|
call_ #__errno
|
|
movx_ #ENOSYS, @R12
|
|
MOV.W #-1,R12
|
|
ret_
|
|
END_FUNC \name
|
|
.endm
|
|
|
|
#define SC(n) sc2 n,SYS_##n
|
|
|
|
SC (open)
|
|
SC (close)
|
|
SC (read)
|
|
/* SC (write)*/
|
|
SC (fstat)
|
|
SC (lseek)
|
|
SC (kill)
|