1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | #include <linux/linkage.h> |
4 | #include <linux/init.h> |
5 | #include <asm/page.h> |
6 | #include <abi/entry.h> |
7 | |
8 | __HEAD |
9 | ENTRY(_start) |
10 | SETUP_MMU |
11 | |
12 | /* set stack point */ |
13 | lrw r6, init_thread_union + THREAD_SIZE |
14 | mov sp, r6 |
15 | |
16 | jmpi csky_start |
17 | END(_start) |
18 | |
19 | #ifdef CONFIG_SMP |
20 | .align 10 |
21 | ENTRY(_start_smp_secondary) |
22 | SETUP_MMU |
23 | |
24 | #ifdef CONFIG_PAGE_OFFSET_80000000 |
25 | lrw r6, secondary_msa1 |
26 | ld.w r6, (r6, 0) |
27 | mtcr r6, cr<31, 15> |
28 | #endif |
29 | |
30 | lrw r6, secondary_pgd |
31 | ld.w r6, (r6, 0) |
32 | mtcr r6, cr<28, 15> |
33 | mtcr r6, cr<29, 15> |
34 | |
35 | /* set stack point */ |
36 | lrw r6, secondary_stack |
37 | ld.w r6, (r6, 0) |
38 | mov sp, r6 |
39 | |
40 | jmpi csky_start_secondary |
41 | END(_start_smp_secondary) |
42 | #endif |
43 | |