- 论坛徽章:
- 0
|
这两天在写inux ppc下的驱动,现在关于中断号有个问题。我用的是amcc 的4xx系列的cpu,其中断由UICB0下级联三个UIC[0,1,2],类似于x86下的8259a级联,
uic0 ------+
|
uci1-------+ ---->uicb0
|
uic2-------+
其中每个uic[0,1,2]中各定义了32个中断源,如uic0中定义如下:
Interrupt PolaritySensitivity InterruptSource
0 HighLevel UART0
1 HighLevel UART1
2 HighLevel IIC 0
3 HighLevel IIC 1
4 HighLevelPCI Inbound Message
5 HighLevel PCI Command Write Register
6 HighLevel PCI Power Management
7 HighEdge PCI MSI Level 0
8 HighEdge PCI MSI Level 1
9 HighEdge PCI MSI Level 2
10 HighLevel MAL TX EOB
11 HighLevel MAL RX EOB
12 HighLevel DMA Channel 0
13 HighLevel DMA Channel 1
14 HighLevel DMA Channel 2
每个uci[0,1,2]分别有寄存器控制中断使能、高低电平触发、critical/noncritical中断等。
而uicb0总的中断定义是
.UICB0 Interrupt Assignments
Interrupt PolaritySensitivity InterruptSource
0 HighLevel UIC0 Critical Interrupt
1 HighLevel UIC0 Non-Critical Interrupt
2 HighLevel UIC1 Critical Interrupt
3 HighLevel UIC1 Non-Critical Interrupt
4 HighLevel UIC2 Critical Interrupt
5 HighLevel UIC2 Non-Critical Interrupt
按照上述定义,若我在powerpc平台下做一个驱动处理uci0中的第7号中断PCI MSI Level0 ,并通过寄存器设置好使能、电平触发、critical等,则当PCI MSI Level0有效时,将触发uicb0的0号中断0 HighLevel UIC0 Critical Interrupt,并发送给4xx cpu内核。现在问题是,当我写驱动是,在内核中,这应该是第几号中断?(在内核代码中,关于这部分中断处理的定义是在哪几个文件中?我现在还没找到,应该是和x86类似,x86下0-31保留为软件中断,而的8259a中0时钟中断对应到内核中中断0x20,8259a的1号中断键盘对应到内核 0x33) |
|