"Das U-Boot" Source Tree
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