xref: /openbmc/u-boot/examples/api/crt0.S (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */
2d4abc757SPeter Tyser/*
3d4abc757SPeter Tyser * (C) Copyright 2007 Semihalf
4d4abc757SPeter Tyser *
5d4abc757SPeter Tyser * Written by: Rafal Jaworowski <raj@semihalf.com>
6d4abc757SPeter Tyser */
7d4abc757SPeter Tyser
8d4abc757SPeter Tyser#if defined(CONFIG_PPC)
9d4abc757SPeter Tyser
10d4abc757SPeter Tyser	.text
11d4abc757SPeter Tyser	.globl _start
12d4abc757SPeter Tyser_start:
13d4abc757SPeter Tyser	lis	%r11, search_hint@ha
14d4abc757SPeter Tyser	addi	%r11, %r11, search_hint@l
15d4abc757SPeter Tyser	stw	%r1, 0(%r11)
16d4abc757SPeter Tyser	b	main
17d4abc757SPeter Tyser
18d4abc757SPeter Tyser
19d4abc757SPeter Tyser	.globl syscall
20d4abc757SPeter Tysersyscall:
21d4abc757SPeter Tyser	lis	%r11, syscall_ptr@ha
22d4abc757SPeter Tyser	addi	%r11, %r11, syscall_ptr@l
23d4abc757SPeter Tyser	lwz	%r11, 0(%r11)
24d4abc757SPeter Tyser	mtctr	%r11
25d4abc757SPeter Tyser	bctr
26d4abc757SPeter Tyser
27d4abc757SPeter Tyser#elif defined(CONFIG_ARM)
28d4abc757SPeter Tyser
29d4abc757SPeter Tyser	.text
30d4abc757SPeter Tyser	.globl _start
31d4abc757SPeter Tyser_start:
32d4abc757SPeter Tyser	ldr	ip, =search_hint
33d4abc757SPeter Tyser	str	sp, [ip]
34d4abc757SPeter Tyser	b	main
35d4abc757SPeter Tyser
36d4abc757SPeter Tyser
37d4abc757SPeter Tyser	.globl syscall
38d4abc757SPeter Tysersyscall:
39d4abc757SPeter Tyser	ldr	ip, =syscall_ptr
40d4abc757SPeter Tyser	ldr	pc, [ip]
41d4abc757SPeter Tyser
427c604231SStanislav Galabov#elif defined(CONFIG_MIPS)
4378757d52SStanislav Galabov#include <asm/asm.h>
447c604231SStanislav Galabov	.text
457c604231SStanislav Galabov	.globl __start
467c604231SStanislav Galabov	.ent __start
477c604231SStanislav Galabov__start:
4878757d52SStanislav Galabov	PTR_S	$sp, search_hint
497c604231SStanislav Galabov	b	main
507c604231SStanislav Galabov	.end __start
517c604231SStanislav Galabov
527c604231SStanislav Galabov	.globl syscall
537c604231SStanislav Galabov	.ent syscall
547c604231SStanislav Galabovsyscall:
5578757d52SStanislav Galabov	PTR_S	$ra, return_addr
5678757d52SStanislav Galabov	PTR_L	$t9, syscall_ptr
577c604231SStanislav Galabov	jalr	$t9
587c604231SStanislav Galabov	nop
5978757d52SStanislav Galabov	PTR_L	$ra, return_addr
607c604231SStanislav Galabov	jr	$ra
617c604231SStanislav Galabov	nop
627c604231SStanislav Galabov	.end syscall
637c604231SStanislav Galabov
647c604231SStanislav Galabovreturn_addr:
6578757d52SStanislav Galabov	.align 8
667c604231SStanislav 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:
7378757d52SStanislav Galabov	.align	8
74d4abc757SPeter Tyser	.long	0
75d4abc757SPeter Tyser
76d4abc757SPeter Tyser	.globl search_hint
77d4abc757SPeter Tysersearch_hint:
78d4abc757SPeter Tyser	.long   0
79