nt9856x/rtos/code/application/source/cardv/SrcCode/Startup/smp_entry.S
2023-03-28 15:07:53 +08:00

57 lines
1.4 KiB
ArmAsm
Executable File

//#include "regdef.h"
# use CC_CPU2_CPU1_CMDBUF_REG1 to store uboot starting address
#define CC_CPU2_CPU1_CMDBUF_REG1 0xF07F800C
#define CPU_TIMER_SETTING 0x00B71B00
/*
************************************************************************
* Multiprocessor Affubuty register, MPIDR (cp15, 0, c0, c0, 5) *
************************************************************************
*
* 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |1|U|Reserved |Cluster|SBZ |CPU|
* | | | |ID | |ID |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define S_MPIDR_U 30
#define M_MPIDR_U (0x1 << S_MPIDR_U)
#define S_MPIDR_CLUSTER_ID 8
#define M_MPIDR_CLUSTER_ID (0xf << S_MPIDR_CLUSTER_ID)
#define S_MPIDR_CPU_ID 0
#define M_MPIDR_CPU_ID (0x3 << S_MPIDR_CPU_ID)
.text
.section .smp,"ax"
_smp_:
ldr r0, =0xF0290000
ldr r1, ='2'
str r1, [r0]
ldr r0, =0xF0290000 /* print $ */
ldr r1, ='c'
str r1, [r0]
ldr r1, ='o'
str r1, [r0]
ldr r1, ='r'
str r1, [r0]
ldr r1, ='2'
str r1, [r0]
LDR r1, =CC_CPU2_CPU1_CMDBUF_REG1 // check core2 entry address ready
LDR r0, [r1]
isb
dsb
MOV pc, r0
nop
nop
.end