1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* 3 * (C) Copyright 2007 Semihalf 4 * 5 * Written by: Rafal Jaworowski <raj@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 20syscall: 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) && !defined(CONFIG_ARM64) 28 29 .text 30 .globl _start 31_start: 32 ldr r4, =search_hint 33 mov r5, sp 34 str r5, [r4] 35 b main 36 37 38 .globl syscall 39syscall: 40 ldr r4, =syscall_ptr 41 ldr r4, [r4] 42 bx r4 43 44#elif defined(CONFIG_ARM64) 45 46 .text 47 .globl _start 48_start: 49 ldr x17, =search_hint 50 mov x16, sp 51 str x16, [x17] 52 b main 53 54 .globl syscall 55syscall: 56 ldr x16, =syscall_ptr 57 ldr x16, [x16] 58 br x16 59 60#elif defined(CONFIG_MIPS) 61#include <asm/asm.h> 62 .text 63 .globl __start 64 .ent __start 65__start: 66 PTR_S $sp, search_hint 67 b main 68 .end __start 69 70 .globl syscall 71 .ent syscall 72syscall: 73 PTR_S $ra, return_addr 74 PTR_L $t9, syscall_ptr 75 jalr $t9 76 nop 77 PTR_L $ra, return_addr 78 jr $ra 79 nop 80 .end syscall 81 82return_addr: 83 .align 8 84 .long 0 85#elif defined(CONFIG_ARCH_RV32I) 86 87 .text 88 .globl _start 89_start: 90 la t0, search_hint 91 sw sp, 0(t0) 92 la t0, main 93 jalr x0, t0 94 95 .globl syscall 96syscall: 97 la t0, syscall_ptr 98 lw t0, 0(t0) 99 jalr x0, t0 100 101#elif defined(CONFIG_ARCH_RV64I) 102 103 .text 104 .globl _start 105_start: 106 la t0, search_hint 107 sd sp, 0(t0) 108 la t0, main 109 jalr x0, t0 110 111 .globl syscall 112syscall: 113 la t0, syscall_ptr 114 ld t0, 0(t0) 115 jalr x0, t0 116 117#else 118#error No support for this arch! 119#endif 120 121.section .data 122 123 .globl syscall_ptr 124syscall_ptr: 125 .align 8 126 .long 0 127 128 .globl search_hint 129search_hint: 130 .long 0 131