arm64: use readq() instead of readl() to read 64bit entry_point
Here the entrypoint, declared as a 64 bit integer, is read from a pointer to 64bit integer but the read is done via readl_relaxed() which is for 32bit quantities. All the high bits will thus be lost which change the meaning of the test against zero done later. Fix this by using readq_relaxed() instead as it should be for 64bit quantities. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
committed by
Will Deacon
parent
02129ae5fe
commit
c0d109de4c
@@ -125,7 +125,7 @@ static void acpi_parking_protocol_cpu_postboot(void)
|
|||||||
struct parking_protocol_mailbox __iomem *mailbox = cpu_entry->mailbox;
|
struct parking_protocol_mailbox __iomem *mailbox = cpu_entry->mailbox;
|
||||||
__le64 entry_point;
|
__le64 entry_point;
|
||||||
|
|
||||||
entry_point = readl_relaxed(&mailbox->entry_point);
|
entry_point = readq_relaxed(&mailbox->entry_point);
|
||||||
/*
|
/*
|
||||||
* Check if firmware has cleared the entry_point as expected
|
* Check if firmware has cleared the entry_point as expected
|
||||||
* by the protocol specification.
|
* by the protocol specification.
|
||||||
|
|||||||
Reference in New Issue
Block a user