以mainstone开发板为例
mainstone.c文件的最后几行:
MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")
MAINTAINER("MontaVista Software Inc.")
BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
MAPIO(mainstone_map_io)
INITIRQ(mainstone_init_irq)
INITTIME(pxa_init_time)
INIT_MACHINE(mainstone_init)
MACHINE_END
以中断为例,其中的INITIRQ(mainstone_init_irq)初始化结构struct machine_desc中的函数指针init_irq。
在setup_arch(char **cmdline_p)函数中
init_arch_irq = mdesc->init_irq;
arch/arm/kernel/irq.c的init_IRQ()函数
void __init init_IRQ(void)
{
struct irqdesc *desc;
extern void init_dma(void);
int irq;
for (irq = 0, desc = irq_desc; irq < NR_IRQS; irq++, desc++) {
*desc = bad_irq_desc;
INIT_LIST_HEAD(&desc->pend);
}
init_arch_irq();
init_dma();
}
调用init_arch_irq()实现中断的初始化。
阅读(910) | 评论(0) | 转发(0) |