hw/intc/loongarch_pch: Convert to little endian with ID register
With PCH ID register, it is defined as union type as follows:
union LoongArchPIC_ID {
struct {
uint8_t _reserved_0[3];
uint8_t id;
uint8_t version;
uint8_t _reserved_1;
uint8_t irq_num;
uint8_t _reserved_2;
} QEMU_PACKED desc;
uint64_t data;
}
And with pch driver in virt machine irq_number is parsed with little
endian method:
vec_count = ((readq(priv->base) >> 48) & 0xff) + 1
So the value of ID register should be converted to little endian.
With this patch, linux kernel passes to run on S390 big endian host
machine with TCG method.
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Reviewed-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20250604065502.1114098-3-maobibo@loongson.cn>
Signed-off-by: Song Gao <gaosong@loongson.cn>
This commit is contained in:
parent
9c55c03c05
commit
095e6fcf62
1 changed files with 1 additions and 1 deletions
|
|
@ -82,7 +82,7 @@ static uint64_t pch_pic_read(void *opaque, hwaddr addr, uint64_t field_mask)
|
|||
addr -= offset;
|
||||
switch (addr) {
|
||||
case PCH_PIC_INT_ID:
|
||||
val = s->id.data;
|
||||
val = cpu_to_le64(s->id.data);
|
||||
break;
|
||||
case PCH_PIC_INT_MASK:
|
||||
val = s->int_mask;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue