1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12 /*
13 * Copyright 2013 (c) Joyent, Inc. All rights reserved.
14 */
15
16 /*
17 * Every story needs a beginning, this is the loader's.
18 */
19
20 #include <sys/asm_linkage.h>
21
22 ENTRY(_start)
23 mov sp, #0x8000
24 /*
25 * XXX manually fix up the tag start
26 */
27 mov r2, #0x100
28 bl fakeload_init
29 SET_SIZE(_start)
30
31 #if defined(__lint)
32
33 /* ARGSUSED */
34 void
35 fakeload_unaligned_enable(void)
36 {}
37
38 #else /* __lint */
39
40 /*
41 * Fix up alignment by turning off A and by turning on U.
42 */
85
86 #else /* __lint */
87
88 /*
89 * We first make sure that the ARMv6 pages are enabled (bit 23) and then
90 * enable the MMU (bit 0).
91 */
92 ENTRY(fakeload_mmu_enable)
93 mrc p15, 0, r0, c1, c0, 0
94 orr r0, #0x800000
95 mcr p15, 0, r0, c1, c0, 0
96 mrc p15, 0, r0, c1, c0, 0
97 orr r0, #0x1
98 mcr p15, 0, r0, c1, c0, 0
99 bx lr
100 SET_SIZE(fakeload_mmu_enable)
101 #endif /* __lint */
102
103
104 ENTRY(fakeload_exec)
105 mov r4, r0
106 mov r2, #0x100
107 blx r4
108 /* We should never execute this. If we do we'll go back to a panic */
109 bx lr
110 SET_SIZE(fakeload_exec)
|
1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12 /*
13 * Copyright 2013 (c) Joyent, Inc. All rights reserved.
14 * Copyright 2015 (c) Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
15 */
16
17 /*
18 * Every story needs a beginning, this is the loader's.
19 */
20
21 #include <sys/asm_linkage.h>
22
23 /*
24 * We put _start into the .text.init section so we can more easily shove it
25 * at the front of the .text.
26 */
27 .section .text.init
28 .align 4
29 .globl _start
30 .type _start, %function
31 _start:
32 mov sp, #0x8000
33 /*
34 * XXX manually fix up the tag start
35 */
36 mov r2, #0x100
37 bl fakeload_init
38 SET_SIZE(_start)
39
40 #if defined(__lint)
41
42 /* ARGSUSED */
43 void
44 fakeload_unaligned_enable(void)
45 {}
46
47 #else /* __lint */
48
49 /*
50 * Fix up alignment by turning off A and by turning on U.
51 */
94
95 #else /* __lint */
96
97 /*
98 * We first make sure that the ARMv6 pages are enabled (bit 23) and then
99 * enable the MMU (bit 0).
100 */
101 ENTRY(fakeload_mmu_enable)
102 mrc p15, 0, r0, c1, c0, 0
103 orr r0, #0x800000
104 mcr p15, 0, r0, c1, c0, 0
105 mrc p15, 0, r0, c1, c0, 0
106 orr r0, #0x1
107 mcr p15, 0, r0, c1, c0, 0
108 bx lr
109 SET_SIZE(fakeload_mmu_enable)
110 #endif /* __lint */
111
112
113 ENTRY(fakeload_exec)
114 blx r3
115 /* We should never execute this. If we do we'll go back to a panic */
116 bx lr
117 SET_SIZE(fakeload_exec)
|