Home | History | Annotate | Download | only in api
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  * (C) Copyright 2007 Semihalf
      4  *
      5  * Written by: Rafal Jaworowski <raj (at) semihalf.com>
      6  */
      7 
      8 #if defined(CONFIG_PPC)
      9 
     10 	.text
     11 	.globl _start
     12 _start:
     13 	lis	%r11, search_hint@ha
     14 	addi	%r11, %r11, search_hint@l
     15 	stw	%r1, 0(%r11)
     16 	b	main
     17 
     18 
     19 	.globl syscall
     20 syscall:
     21 	lis	%r11, syscall_ptr@ha
     22 	addi	%r11, %r11, syscall_ptr@l
     23 	lwz	%r11, 0(%r11)
     24 	mtctr	%r11
     25 	bctr
     26 
     27 #elif defined(CONFIG_ARM)
     28 
     29 	.text
     30 	.globl _start
     31 _start:
     32 	ldr	ip, =search_hint
     33 	str	sp, [ip]
     34 	b	main
     35 
     36 
     37 	.globl syscall
     38 syscall:
     39 	ldr	ip, =syscall_ptr
     40 	ldr	pc, [ip]
     41 
     42 #elif defined(CONFIG_MIPS)
     43 #include <asm/asm.h>
     44 	.text
     45 	.globl __start
     46 	.ent __start
     47 __start:
     48 	PTR_S	$sp, search_hint
     49 	b	main
     50 	.end __start
     51 
     52 	.globl syscall
     53 	.ent syscall
     54 syscall:
     55 	PTR_S	$ra, return_addr
     56 	PTR_L	$t9, syscall_ptr
     57 	jalr	$t9
     58 	nop
     59 	PTR_L	$ra, return_addr
     60 	jr	$ra
     61 	nop
     62 	.end syscall
     63 
     64 return_addr:
     65 	.align 8
     66 	.long 0
     67 #else
     68 #error No support for this arch!
     69 #endif
     70 
     71 	.globl syscall_ptr
     72 syscall_ptr:
     73 	.align	8
     74 	.long	0
     75 
     76 	.globl search_hint
     77 search_hint:
     78 	.long   0
     79