Exemplo n.º 1
0
// IRQ割り込みハンドラ
void IRQ_handler(void){
	// IRQ割り込みを停止
	disable_IRQ();

	// printf("get IRQ in IRQ handler\n");
	// printf("CPSR (in IRQ_handler) = 0x%08x\n",getmode());

	// Basic IRQ pendingをチェック
	if(*INTERRUPT_IRQ_BASIC_PENDING & 0x01 != 0){
		// タイマー割り込み

		// デバッグ用
		// printf("Timer IRQ start\n");
		// printf("Timer Raw IRQ before: 0x%08x\n",*TIMER_RAWIRQ);
		// printf("irq_pending0 before : 0x%08x\n",*INTERRUPT_IRQ_BASIC_PENDING);

		// タイマ割り込み処理
		timerIRQ_func();

		// 割り込みフラグクリア
		*TIMER_IRQ_CLR = 0;

		// デバッグ用
		// フラグがクリアされたかチェック
		// printf("irq_pending0 after: 0x%08x\n",*INTERRUPT_IRQ_BASIC_PENDING);
		// printf("Timer Raw IRQ after: 0x%08x\n",*TIMER_RAWIRQ);
		// printf("Timer IRQ end\n");
	}
	// TODO: その他の割り込みも調べる

	// IRQ割り込みを許可
	enable_IRQ();
	return;
}
Exemplo n.º 2
0
void disable_all_IRQ(void){
	// すべての割り込み不許可
	*INTERRUPT_DISABLE_BASIC_IRQS = 0xffffffff;
	*INTERRUPT_DISABLE_IRQS1 = 0xffffffff;
	*INTERRUPT_DISABLE_IRQS2 = 0xffffffff;
	*INTERRUPT_FIQ_CTRL = 0;

	// IRQ不許可
	disable_IRQ();
}
Exemplo n.º 3
0
void mouse_dead()
{
	printf(LNG_MOUSE_REMOVE);
	disable_IRQ(12);
	_kprintOK();
}