Ejemplo n.º 1
0
/*
 *  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 */
}
Ejemplo n.º 2
0
/*
 *  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);
}
Ejemplo n.º 3
0
/*
 *  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 */
}