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)
 |