diff options
Diffstat (limited to 'dev/interrupt/arm_gic/gic_v3.c')
-rw-r--r-- | dev/interrupt/arm_gic/gic_v3.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/dev/interrupt/arm_gic/gic_v3.c b/dev/interrupt/arm_gic/gic_v3.c index d5e3c668..cc1005d1 100644 --- a/dev/interrupt/arm_gic/gic_v3.c +++ b/dev/interrupt/arm_gic/gic_v3.c @@ -108,13 +108,18 @@ static void gicv3_gicr_init(void) { /* GICD_CTRL Register write pending bit */ #define GICD_CTLR_RWP (0x1U << 31) +void arm_gicv3_wait_for_write_complete(void) { + /* wait until write complete */ + while (GICDREG_READ(0, GICD_CTLR) & GICD_CTLR_RWP) { + } +} + static void gicv3_gicd_ctrl_write(uint32_t val) { /* write CTRL register */ GICDREG_WRITE(0, GICD_CTLR, val); /* wait until write complete */ - while (GICDREG_READ(0, GICD_CTLR) & GICD_CTLR_RWP) { - } + arm_gicv3_wait_for_write_complete(); } static void gicv3_gicd_setup_irq_group(uint32_t vector, uint32_t grp) { |