[artix7_100t] plic interrupt mcause is wrong , most significant bit is not set
Hi We observe a behavior in running interrupt based application. The mcause value is not having the most significant bit set. Because of this, we are not able to service the interrupt.
We saw this issue with
- clint flow
- normal plic interrupt process flow
- vectored interrupt process flow.
steps to reproduce
git clone https://gitlab.com/shaktiproject/software/shakti-sdk
make software PROGRAM=interrupt_demo TARGET=artix7_100t
load through gdb and test
uart is run at 9600 baud rate
snapshot of error in output
address = c002003 data = 11
addr = c010000 data = 1
addr = c010010 data = 0
handle_trap entered
mcause = b, epc = 80002c0c
Source of Trap: Software
default_handler entered
Gdb trace
(gdb) target remote localhost:3333
`/home/sathya/Documents/shakti-sdk/software/examples/plic_applns/interrupt_demo/output /interrupt_demo.shakti' has changed; re-reading symbols.
Remote debugging using localhost:3333
0x0000000000000000 in ?? ()
(gdb) file Documents/shakti-sdk/software/examples/plic_applns/interrupt_demo/output /interrupt_demo.shakti
A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Load new symbol table from "Documents/shakti-sdk/software/examples/plic_applns/interrupt_demo/output /interrupt_demo.shakti"? (y or n) y
Reading symbols from Documents/shakti-sdk/software/examples/plic_applns/interrupt_demo/output/interrupt_demo.shakti...
(gdb) load
Loading section .text.init, size 0x5e lma 0x80000000
Loading section .text, size 0x3984 lma 0x80000060
Loading section .rodata, size 0xfc0 lma 0x800039e8
Loading section .sdata, size 0x58 lma 0x800049a8
Start address 0x0000000080000000, load size 18938
Transfer rate: 11 KB/sec, 4734 bytes/write.
(gdb) c
Continuing.