Merge tag 'csky-for-linus-5.12-rc1' of git://github.com/c-sky/csky-linux
[linux-2.6-microblaze.git] / arch / csky / kernel / head.S
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