|
From: | Paolo Bonzini |
Subject: | Re: [Qemu-devel] [PULL 18/76] optionrom: add new PVH option rom |
Date: | Fri, 19 Mar 2021 18:52:39 +0100 |
On Fri, Mar 19, 2021 at 06:03:59PM +0100, Paolo Bonzini wrote:
>On 19/03/21 15:06, Philippe Mathieu-Daudé wrote:
>>>+
>>>+/* Search RSDP signature. */
>>>+static uintptr_t search_rsdp(uint32_t start_addr, uint32_t end_addr)
>>>+{
>>>+ uint64_t *rsdp_p;
>>>+
>>>+ /* RSDP signature is always on a 16 byte boundary */
>>>+ for (rsdp_p = (uint64_t *)start_addr; rsdp_p < (uint64_t *)end_addr;
>>>+ rsdp_p += 2) {
>>>+ if (*rsdp_p == RSDP_SIGNATURE) {
>>>+ return (uintptr_t)rsdp_p;
>>>+ }
>>>+ }
>>>+
>>>+ return 0;
>>>+}
>>gcc 10.2.1 "cc (Alpine 10.2.1_pre2) 10.2.1 20210313" reports:
>>
>>pc-bios/optionrom/pvh_main.c: In function 'search_rsdp':
>>pc-bios/optionrom/pvh_main.c:61:21: warning: comparison is always false
>>due to limited range of data type [-Wtype-limits]
>> 61 | if (*rsdp_p == RSDP_SIGNATURE) {
>> | ^~
>
>This is probably a different bug, but I'll also add that uint64_t is
>supposed to be aligned to 64 bits, so you need either
>__attribute__((packed)), or use char* and memcmp. If you go for the
>latter, it would fix the issue that Philippe is reporting.
Yes, memcmp maybe is also more readable, but being baremetal, I have to
implement it right?
Thanks,
Stefano
[Prev in Thread] | Current Thread | [Next in Thread] |