/* * CPUインタフェースの初期化 */ void gicc_initialize(void) { /* * CPUインタフェースをディスエーブル */ sil_wrw_mem(GICC_CTLR, GICC_CTLR_DISABLE); /* * 割込み優先度マスクを最低優先度に設定 */ gicc_set_priority((GIC_PRI_LEVEL - 1) << GIC_PRI_SHIFT); /* * 割込み優先度の全ビット有効に */ sil_wrw_mem(GICC_BPR, 0U); /* * アクティブな割込みがあれば,EOIによりクリアする */ sil_wrw_mem(GICC_EOIR, sil_rew_mem(GICC_IAR)); /* * CPUインタフェースをイネーブル */ #ifdef TOPPERS_SAFEG_SECURE sil_wrw_mem(GICC_CTLR, (GICC_CTLR_FIQEN|GICC_CTLR_ENABLEGRP1 |GICC_CTLR_ENABLEGRP0)); #else /* TOPPERS_SAFEG_SECURE */ sil_wrw_mem(GICC_CTLR, GICC_CTLR_ENABLE); #endif /* TOPPERS_SAFEG_SECURE */ }
/* * CPU Interface の初期化 */ void gicc_init(void) { /* CPUインタフェースを無効に */ *(volatile uint32_t *)ASP_GICC_ICCICR = 0; /* 最低優先度に設定 */ gicc_set_priority(GIC_MIN_PRIORITY); /* 割込み優先度の全ビット有効に */ gicc_set_bp(0); /* ペンディングしている可能性があるので,EOI によりクリア */ *(volatile uint32_t *)ASP_GICC_ICCEOIR = *(volatile uint32_t *)ASP_GICC_ICCIAR; /* CPUインタフェースを有効に */ *(volatile uint32_t *)ASP_GICC_ICCICR = (GICC_CTLR_ENABLEGRP1|GICC_CTLR_ENABLEGRP0); }
/* * CPU Interface の初期化 */ void gicc_init(void) { /* CPUインタフェースを無効に */ sil_wrw_mem((void *)GICC_CTLR, 0); /* 最低優先度に設定 */ gicc_set_priority(GIC_MIN_PRIORITY); /* 割込み優先度の全ビット有効に */ gicc_set_bp(0); /* ペンディングしている可能性があるので,EOI によりクリア */ sil_wrw_mem((void *)GICC_EOIR, sil_rew_mem((void *)GICC_IAR)); /* CPUインタフェースを有効に */ #ifdef GIC_USE_FIQ sil_wrw_mem((void *)GICC_CTLR, (GICC_CTLR_FIQEn|GICC_CTLR_ENABLEGRP1|GICC_CTLR_ENABLEGRP0)); #else /* GIC_USE_FIQ */ sil_wrw_mem((void *)GICC_CTLR, GICC_CTLR_EN); #endif /* GIC_USE_FIQ */ }