1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #include <linux/linkage.h>
- #include <linux/init.h>
- #include <asm/page.h>
- #include <abi/entry.h>
- __HEAD
- ENTRY(_start)
- /* set super user mode */
- lrw a3, DEFAULT_PSR_VALUE
- mtcr a3, psr
- psrset ee
- SETUP_MMU a3
- /* set stack point */
- lrw a3, init_thread_union + THREAD_SIZE
- mov sp, a3
- jmpi csky_start
- END(_start)
- #ifdef CONFIG_SMP
- .align 10
- ENTRY(_start_smp_secondary)
- /* Invalid I/Dcache BTB BHT */
- movi a3, 7
- lsli a3, 16
- addi a3, (1<<4) | 3
- mtcr a3, cr17
- tlbi.alls
- /* setup PAGEMASK */
- movi a3, 0
- mtcr a3, cr<6, 15>
- /* setup MEL0/MEL1 */
- grs a0, _start_smp_pc
- _start_smp_pc:
- bmaski a1, 13
- andn a0, a1
- movi a1, 0x00000006
- movi a2, 0x00001006
- or a1, a0
- or a2, a0
- mtcr a1, cr<2, 15>
- mtcr a2, cr<3, 15>
- /* setup MEH */
- mtcr a0, cr<4, 15>
- /* write TLB */
- bgeni a3, 28
- mtcr a3, cr<8, 15>
- SETUP_MMU a3
- /* enable MMU */
- movi a3, 1
- mtcr a3, cr18
- jmpi _goto_mmu_on
- _goto_mmu_on:
- lrw a3, DEFAULT_PSR_VALUE
- mtcr a3, psr
- psrset ee
- /* set stack point */
- lrw a3, secondary_stack
- ld.w a3, (a3, 0)
- mov sp, a3
- jmpi csky_start_secondary
- END(_start_smp_secondary)
- #endif
|