xref: /rk3399_rockchip-uboot/examples/api/crt0.S (revision 7c60423106bebafedbdd9879d84d105b3fb03930)
1d4abc757SPeter Tyser/*
2d4abc757SPeter Tyser * (C) Copyright 2007 Semihalf
3d4abc757SPeter Tyser *
4d4abc757SPeter Tyser * Written by: Rafal Jaworowski <raj@semihalf.com>
5d4abc757SPeter Tyser *
61a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
7d4abc757SPeter Tyser */
8d4abc757SPeter Tyser
9d4abc757SPeter Tyser#if defined(CONFIG_PPC)
10d4abc757SPeter Tyser
11d4abc757SPeter Tyser	.text
12d4abc757SPeter Tyser	.globl _start
13d4abc757SPeter Tyser_start:
14d4abc757SPeter Tyser	lis	%r11, search_hint@ha
15d4abc757SPeter Tyser	addi	%r11, %r11, search_hint@l
16d4abc757SPeter Tyser	stw	%r1, 0(%r11)
17d4abc757SPeter Tyser	b	main
18d4abc757SPeter Tyser
19d4abc757SPeter Tyser
20d4abc757SPeter Tyser	.globl syscall
21d4abc757SPeter Tysersyscall:
22d4abc757SPeter Tyser	lis	%r11, syscall_ptr@ha
23d4abc757SPeter Tyser	addi	%r11, %r11, syscall_ptr@l
24d4abc757SPeter Tyser	lwz	%r11, 0(%r11)
25d4abc757SPeter Tyser	mtctr	%r11
26d4abc757SPeter Tyser	bctr
27d4abc757SPeter Tyser
28d4abc757SPeter Tyser#elif defined(CONFIG_ARM)
29d4abc757SPeter Tyser
30d4abc757SPeter Tyser	.text
31d4abc757SPeter Tyser	.globl _start
32d4abc757SPeter Tyser_start:
33d4abc757SPeter Tyser	ldr	ip, =search_hint
34d4abc757SPeter Tyser	str	sp, [ip]
35d4abc757SPeter Tyser	b	main
36d4abc757SPeter Tyser
37d4abc757SPeter Tyser
38d4abc757SPeter Tyser	.globl syscall
39d4abc757SPeter Tysersyscall:
40d4abc757SPeter Tyser	ldr	ip, =syscall_ptr
41d4abc757SPeter Tyser	ldr	pc, [ip]
42d4abc757SPeter Tyser
43*7c604231SStanislav Galabov#elif defined(CONFIG_MIPS)
44*7c604231SStanislav Galabov	.text
45*7c604231SStanislav Galabov	.globl __start
46*7c604231SStanislav Galabov	.ent __start
47*7c604231SStanislav Galabov__start:
48*7c604231SStanislav Galabov	sw	$sp, search_hint
49*7c604231SStanislav Galabov	b	main
50*7c604231SStanislav Galabov	.end __start
51*7c604231SStanislav Galabov
52*7c604231SStanislav Galabov	.globl syscall
53*7c604231SStanislav Galabov	.ent syscall
54*7c604231SStanislav Galabovsyscall:
55*7c604231SStanislav Galabov	sw	$ra, return_addr
56*7c604231SStanislav Galabov	lw	$t9, syscall_ptr
57*7c604231SStanislav Galabov	jalr	$t9
58*7c604231SStanislav Galabov	nop
59*7c604231SStanislav Galabov	lw	$ra, return_addr
60*7c604231SStanislav Galabov	jr	$ra
61*7c604231SStanislav Galabov	nop
62*7c604231SStanislav Galabov	.end syscall
63*7c604231SStanislav Galabov
64*7c604231SStanislav Galabovreturn_addr:
65*7c604231SStanislav Galabov	.align 4
66*7c604231SStanislav Galabov	.long 0
67d4abc757SPeter Tyser#else
68d4abc757SPeter Tyser#error No support for this arch!
69d4abc757SPeter Tyser#endif
70d4abc757SPeter Tyser
71d4abc757SPeter Tyser	.globl syscall_ptr
72d4abc757SPeter Tysersyscall_ptr:
73d4abc757SPeter Tyser	.align	4
74d4abc757SPeter Tyser	.long	0
75d4abc757SPeter Tyser
76d4abc757SPeter Tyser	.globl search_hint
77d4abc757SPeter Tysersearch_hint:
78d4abc757SPeter Tyser	.long   0
79