]> git.sur5r.net Git - u-boot/blob - examples/api/crt0.S
5a7049d6b4b721f71a85948364d24217e93030ec
[u-boot] / examples / api / crt0.S
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
21 syscall:
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
39 syscall:
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
55 syscall:
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
65 return_addr:
66         .align 8
67         .long 0
68 #else
69 #error No support for this arch!
70 #endif
71
72         .globl syscall_ptr
73 syscall_ptr:
74         .align  8
75         .long   0
76
77         .globl search_hint
78 search_hint:
79         .long   0