irq.c

来自「Nand Flash (SAMSUNG_K9K1G08U0B) boot loa」· C语言 代码 · 共 71 行

C
71
字号
#include <common/types.h>
#include <mx/mx21/mx21_register.h>
#include <core/arm926ej-s/arm.h>

#define FIQ_HW_ACC_ENABLE (1<<17)
#define NIQ_HW_ACC_ENABLE (1<<18)

void NIQ_Enable(void)
{
	ARM_NIQ_Enable();
}

void NIQ_Disable(void)
{
	ARM_NIQ_Disable();
}

void FIQ_Enable(void)
{
	ARM_FIQ_Enable();
}

void FIQ_Disable(void)
{
	ARM_FIQ_Disable();
}

void NIQ_SetType(u32 IRQnum)
{
	if (IRQnum <32) 
		*(volatile u32 *)AITC_INTTYPEL &= ~(1<<IRQnum);
	else 
		*(volatile u32 *)AITC_INTTYPEH &= ~(1<<(IRQnum-32));	
}

void FIQ_SetType(u32 IRQnum)
{
	if (IRQnum <32) 
		*(volatile u32 *)AITC_INTTYPEL |= (1<<IRQnum);
	else 
		*(volatile u32 *)AITC_INTTYPEH |= (1<<(IRQnum-32));
}


void IRQ_SourceEnable(u32 IRQnum)
{
	IRQnum &= 0x0000003F;
	*(volatile u32 *)AITC_INTENNUM = IRQnum;
}

void IRQ_SourceDisable(u32 IRQnum)
{
	IRQnum &= 0x0000003F;
	*(volatile u32 *)AITC_INTDISNUM = IRQnum;
}

void IRQ_Init(void)
{
	// Mask all Interrupt Source;
  *(volatile u32 *)AITC_INTENABLEH = 0;
  *(volatile u32 *)AITC_INTENABLEL = 0;	

  *(volatile u32 *)AITC_INTCNTL = 0;

  // Enable Hardware Acceleration
  // Note: The interrupt hardware acceleration cannot work with I-Cache Enable.
  *(volatile u32 *)AITC_INTCNTL = FIQ_HW_ACC_ENABLE | NIQ_HW_ACC_ENABLE;

  NIQ_Enable();
  FIQ_Enable();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?