diff --git a/hw/application_fpga/fw/irqpoc/start.S b/hw/application_fpga/fw/irqpoc/start.S index cb67e02..def6783 100644 --- a/hw/application_fpga/fw/irqpoc/start.S +++ b/hw/application_fpga/fw/irqpoc/start.S @@ -3,6 +3,9 @@ * SPDX-License-Identifier: GPL-2.0-only */ +// Example firmware that demonstrates how to raise interrupts +// + #include "custom_ops.S" // PicoRV32 custom instructions .section ".text.init" @@ -14,7 +17,6 @@ _start: irq_handler: // PicoRV32 stores the IRQ bitmask in x4. // If bit 31 is 1: IRQ31 was triggered. - // If bit 30 is 1: IRQ30 was triggered. nop // NOPs are not necessary. Only added to make it easier to find nop // when simulating. @@ -24,16 +26,12 @@ irq_handler: .=0x20 // Setting location of init to 0x20. Makes it easier to find when // simulating. init: - li t0, 0x3fffffff // IRQ31 & IRQ30 mask + li t0, 0x7fffffff // IRQ31 mask picorv32_maskirq_insn(zero, t0) // Enable IRQs li t0, 0xe1000000 // IRQ31 trigger address sw zero, 0(t0) // Raise IRQ by writing to interrupt trigger address. // Writing any data triggers an interrupt. - - li t0, 0xe0000000 // IRQ30 trigger address - sw zero, 0(t0) // Raise IRQ by writing to interrupt trigger address. - // Writing any data triggers an interrupt. loop: j loop