Mostly making the code nicer to read.
Signed-off-by: Julien Grall <julien.grall@arm.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
#define GICH_V2_LR_PHYSICAL_SHIFT 10
#define GICH_V2_LR_STATE_MASK 0x3
#define GICH_V2_LR_STATE_SHIFT 28
+#define GICH_V2_LR_PENDING (1U << 28)
+#define GICH_V2_LR_ACTIVE (1U << 29)
#define GICH_V2_LR_PRIORITY_SHIFT 23
#define GICH_V2_LR_PRIORITY_MASK 0x1f
#define GICH_V2_LR_HW_SHIFT 31
lr_reg->pirq = (lrv >> GICH_V2_LR_PHYSICAL_SHIFT) & GICH_V2_LR_PHYSICAL_MASK;
lr_reg->virq = (lrv >> GICH_V2_LR_VIRTUAL_SHIFT) & GICH_V2_LR_VIRTUAL_MASK;
lr_reg->priority = (lrv >> GICH_V2_LR_PRIORITY_SHIFT) & GICH_V2_LR_PRIORITY_MASK;
- lr_reg->state = (lrv >> GICH_V2_LR_STATE_SHIFT) & GICH_V2_LR_STATE_MASK;
+ lr_reg->pending = lrv & GICH_V2_LR_PENDING;
+ lr_reg->active = lrv & GICH_V2_LR_ACTIVE;
lr_reg->hw_status = lrv & GICH_V2_LR_HW;
}
lrv = ( ((lr_reg->pirq & GICH_V2_LR_PHYSICAL_MASK) << GICH_V2_LR_PHYSICAL_SHIFT) |
((lr_reg->virq & GICH_V2_LR_VIRTUAL_MASK) << GICH_V2_LR_VIRTUAL_SHIFT) |
((uint32_t)(lr_reg->priority & GICH_V2_LR_PRIORITY_MASK)
- << GICH_V2_LR_PRIORITY_SHIFT) |
- ((uint32_t)(lr_reg->state & GICH_V2_LR_STATE_MASK)
- << GICH_V2_LR_STATE_SHIFT) );
+ << GICH_V2_LR_PRIORITY_SHIFT) );
+
+ if ( lr_reg->active )
+ lrv |= GICH_V2_LR_ACTIVE;
+
+ if ( lr_reg->pending )
+ lrv |= GICH_V2_LR_PENDING;
if ( lr_reg->hw_status )
lrv |= GICH_V2_LR_HW;
lr_reg->virq = (lrv >> ICH_LR_VIRTUAL_SHIFT) & ICH_LR_VIRTUAL_MASK;
lr_reg->priority = (lrv >> ICH_LR_PRIORITY_SHIFT) & ICH_LR_PRIORITY_MASK;
- lr_reg->state = (lrv >> ICH_LR_STATE_SHIFT) & ICH_LR_STATE_MASK;
+ lr_reg->pending = lrv & ICH_LR_STATE_PENDING;
+ lr_reg->active = lrv & ICH_LR_STATE_ACTIVE;
lr_reg->hw_status = lrv & ICH_LR_HW;
}
lrv = ( ((u64)(lr->pirq & ICH_LR_PHYSICAL_MASK) << ICH_LR_PHYSICAL_SHIFT)|
((u64)(lr->virq & ICH_LR_VIRTUAL_MASK) << ICH_LR_VIRTUAL_SHIFT) |
- ((u64)(lr->priority & ICH_LR_PRIORITY_MASK) << ICH_LR_PRIORITY_SHIFT)|
- ((u64)(lr->state & ICH_LR_STATE_MASK) << ICH_LR_STATE_SHIFT) );
+ ((u64)(lr->priority & ICH_LR_PRIORITY_MASK) << ICH_LR_PRIORITY_SHIFT) );
+
+ if ( lr->active )
+ lrv |= ICH_LR_STATE_ACTIVE;
+
+ if ( lr->pending )
+ lrv |= ICH_LR_STATE_PENDING;
if ( lr->hw_status )
lrv |= ICH_LR_HW;
return;
}
- if ( lr_val.state & GICH_LR_ACTIVE )
+ if ( lr_val.active )
{
set_bit(GIC_IRQ_GUEST_ACTIVE, &p->status);
if ( test_bit(GIC_IRQ_GUEST_ENABLED, &p->status) &&
{
if ( p->desc == NULL )
{
- lr_val.state |= GICH_LR_PENDING;
+ lr_val.pending = true;
gic_hw_ops->write_lr(i, &lr_val);
}
else
irq, v->domain->domain_id, v->vcpu_id, i);
}
}
- else if ( lr_val.state & GICH_LR_PENDING )
+ else if ( lr_val.pending )
{
int q __attribute__ ((unused)) = test_and_clear_bit(GIC_IRQ_GUEST_QUEUED, &p->status);
#ifdef GIC_DEBUG
/* Virtual IRQ */
uint32_t virq;
uint8_t priority;
- uint8_t state;
+ bool active;
+ bool pending;
bool hw_status;
};
#define ICH_LR_PHYSICAL_SHIFT 32
#define ICH_LR_STATE_MASK 0x3
#define ICH_LR_STATE_SHIFT 62
+#define ICH_LR_STATE_PENDING (1ULL << 62)
+#define ICH_LR_STATE_ACTIVE (1ULL << 63)
#define ICH_LR_PRIORITY_MASK 0xff
#define ICH_LR_PRIORITY_SHIFT 48
#define ICH_LR_HW_MASK 0x1