xref: /openbmc/u-boot/examples/api/crt0.S (revision e8f80a5a)
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)
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
38syscall:
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
54syscall:
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
64return_addr:
65	.align 8
66	.long 0
67#else
68#error No support for this arch!
69#endif
70
71	.globl syscall_ptr
72syscall_ptr:
73	.align	8
74	.long	0
75
76	.globl search_hint
77search_hint:
78	.long   0
79