xref: /OK3568_Linux_fs/u-boot/examples/api/crt0.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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#include <asm/asm.h>
45	.text
46	.globl __start
47	.ent __start
48__start:
49	PTR_S	$sp, search_hint
50	b	main
51	.end __start
52
53	.globl syscall
54	.ent syscall
55syscall:
56	PTR_S	$ra, return_addr
57	PTR_L	$t9, syscall_ptr
58	jalr	$t9
59	nop
60	PTR_L	$ra, return_addr
61	jr	$ra
62	nop
63	.end syscall
64
65return_addr:
66	.align 8
67	.long 0
68#else
69#error No support for this arch!
70#endif
71
72	.globl syscall_ptr
73syscall_ptr:
74	.align	8
75	.long	0
76
77	.globl search_hint
78search_hint:
79	.long   0
80