361 GIC_REG_32(GICD_CTLR) = 0;
366 for (i = 32; i < OS_HWI_MAX_NUM; i += 16) {
367 GIC_REG_32(GICD_ICFGR(i / 16)) = 0;
371 for (i = 32; i < OS_HWI_MAX_NUM; i += 32) {
372 GIC_REG_32(GICD_ICENABLER(i / 32)) = 0xffffffff;
373 GIC_REG_32(GICD_ICPENDR(i / 32)) = 0xffffffff;
374 GIC_REG_32(GICD_IGRPMODR(i / 32)) = 0;
380 for (i = 32; i < OS_HWI_MAX_NUM; i++) {
387 for (i = 0; i < OS_HWI_MAX_NUM; i += 32) {
388 GIC_REG_32(GICD_ICENABLER(i / 32)) = 0xffffffff;
392 GIC_REG_32(GICD_CTLR) = CTLR_ENALBE_G0 | CTLR_ENABLE_G1NS | CTLR_ARE_S;
396 for (i = 32; i < OS_HWI_MAX_NUM; i++) {
397 GIC_REG_64(GICD_IROUTER(i)) = affinity;
402#ifdef LOSCFG_KERNEL_SMP
407#ifdef LOSCFG_KERNEL_SMP_CALL
STATIC INLINE VOID GicdSetGroup(UINT32 irq)
VOID HalIrqInitPercpu(VOID)
中断控制器与CPU之间的关系初始化
STATIC INLINE UINT64 MpidrToAffinity(UINT64 mpidr)
STATIC VOID GicdSetPmr(UINT32 irq, UINT8 priority)
STATIC VOID GicWaitForRwp(UINT64 reg)
LITE_OS_SEC_TEXT_INIT UINT32 LOS_HwiCreate(HWI_HANDLE_T hwiNum, HWI_PRIOR_T hwiPrio, HWI_MODE_T hwiMode, HWI_PROC_FUNC hwiHandler, HwiIrqParam *irqParam)
创建一个硬中断 中断创建,注册中断号、中断触发模式、中断优先级、中断处理程序。中断被触发时, handleIrq会调用该中断处理程序
VOID OsMpWakeHandler(VOID)
硬中断唤醒处理函数
VOID OsMpFuncCallHandler(VOID)
OsMpFuncCallHandler 回调向当前CPU注册过的函数
VOID OsMpScheduleHandler(VOID)
硬中断调度处理函数
@ LOS_MP_IPI_SCHEDULE
!< 唤醒CPU
@ LOS_MP_IPI_FUNC_CALL
!< 停止CPU
@ LOS_MP_IPI_HALT
!< 调度CPU