xref: /rk3399_rockchip-uboot/examples/api/crt0.S (revision 08ca213acadef61748dc62d48b0f5c4bed8b8c2d)
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
437c604231SStanislav Galabov#elif defined(CONFIG_MIPS)
44*78757d52SStanislav Galabov#include <asm/asm.h>
457c604231SStanislav Galabov	.text
467c604231SStanislav Galabov	.globl __start
477c604231SStanislav Galabov	.ent __start
487c604231SStanislav Galabov__start:
49*78757d52SStanislav Galabov	PTR_S	$sp, search_hint
507c604231SStanislav Galabov	b	main
517c604231SStanislav Galabov	.end __start
527c604231SStanislav Galabov
537c604231SStanislav Galabov	.globl syscall
547c604231SStanislav Galabov	.ent syscall
557c604231SStanislav Galabovsyscall:
56*78757d52SStanislav Galabov	PTR_S	$ra, return_addr
57*78757d52SStanislav Galabov	PTR_L	$t9, syscall_ptr
587c604231SStanislav Galabov	jalr	$t9
597c604231SStanislav Galabov	nop
60*78757d52SStanislav Galabov	PTR_L	$ra, return_addr
617c604231SStanislav Galabov	jr	$ra
627c604231SStanislav Galabov	nop
637c604231SStanislav Galabov	.end syscall
647c604231SStanislav Galabov
657c604231SStanislav Galabovreturn_addr:
66*78757d52SStanislav Galabov	.align 8
677c604231SStanislav Galabov	.long 0
68d4abc757SPeter Tyser#else
69d4abc757SPeter Tyser#error No support for this arch!
70d4abc757SPeter Tyser#endif
71d4abc757SPeter Tyser
72d4abc757SPeter Tyser	.globl syscall_ptr
73d4abc757SPeter Tysersyscall_ptr:
74*78757d52SStanislav Galabov	.align	8
75d4abc757SPeter Tyser	.long	0
76d4abc757SPeter Tyser
77d4abc757SPeter Tyser	.globl search_hint
78d4abc757SPeter Tysersearch_hint:
79d4abc757SPeter Tyser	.long   0
80