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