]>
Commit | Line | Data |
---|---|---|
500856eb RJ |
1 | /* |
2 | * (C) Copyright 2007 Semihalf | |
3 | * | |
4 | * Written by: Rafal Jaworowski <raj@semihalf.com> | |
5 | * | |
1a459660 | 6 | * SPDX-License-Identifier: GPL-2.0+ |
500856eb RJ |
7 | */ |
8 | ||
9 | #if defined(CONFIG_PPC) | |
10 | ||
11 | .text | |
500856eb RJ |
12 | .globl _start |
13 | _start: | |
b84d7d8f RJ |
14 | lis %r11, search_hint@ha |
15 | addi %r11, %r11, search_hint@l | |
16 | stw %r1, 0(%r11) | |
500856eb RJ |
17 | b main |
18 | ||
19 | ||
20 | .globl syscall | |
21 | syscall: | |
22 | lis %r11, syscall_ptr@ha | |
23 | addi %r11, %r11, syscall_ptr@l | |
24 | lwz %r11, 0(%r11) | |
25 | mtctr %r11 | |
26 | bctr | |
7fb6c4f9 RJ |
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 | |
39 | syscall: | |
40 | ldr ip, =syscall_ptr | |
41 | ldr pc, [ip] | |
42 | ||
7c604231 SG |
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 | |
54 | syscall: | |
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 | ||
64 | return_addr: | |
65 | .align 4 | |
66 | .long 0 | |
b84d7d8f RJ |
67 | #else |
68 | #error No support for this arch! | |
69 | #endif | |
500856eb RJ |
70 | |
71 | .globl syscall_ptr | |
72 | syscall_ptr: | |
73 | .align 4 | |
74 | .long 0 | |
b84d7d8f RJ |
75 | |
76 | .globl search_hint | |
77 | search_hint: | |
78 | .long 0 |