ced2c82e5ffcacb5702cd0a9a841a559cad8d74e
[oweals/u-boot.git] / 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         .text
45         .globl __start
46         .ent __start
47 __start:
48         sw      $sp, search_hint
49         b       main
50         .end __start
51
52         .globl syscall
53         .ent syscall
54 syscall:
55         sw      $ra, return_addr
56         lw      $t9, syscall_ptr
57         jalr    $t9
58         nop
59         lw      $ra, return_addr
60         jr      $ra
61         nop
62         .end syscall
63
64 return_addr:
65         .align 4
66         .long 0
67 #else
68 #error No support for this arch!
69 #endif
70
71         .globl syscall_ptr
72 syscall_ptr:
73         .align  4
74         .long   0
75
76         .globl search_hint
77 search_hint:
78         .long   0