[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/4] hw/registerfields: add 64-bit extract/depos
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH 3/4] hw/registerfields: add 64-bit extract/deposit macros |
Date: |
Thu, 14 Dec 2017 10:49:35 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 |
Hi Francisco,
On 12/13/2017 06:37 PM, francisco iglesias wrote:
> On 13 December 2017 at 06:17, Philippe Mathieu-Daudé <address@hidden>
> wrote:
[...]
>> /* Extract a field from an array of registers */
[...]
>> +#define FIELD_DP64(storage, reg, field, val) ({
>> \
>> + struct {
>> \
>> + unsigned int v:R_ ## reg ## _ ## field ## _LENGTH;
>> \
>>
>
> I'm just wondering if 'v' above maybe should be uint64_t? The size of
> unsigned int seems to be 'implementation defined' but I would guess 32 bits
> is not unsual. Basically wouldn't a field length > 32 above be problematic?
Good remark...
As per the standard bitfields access must be per 'unsigned'.
So with a LP64 data model we have sizeof(unsigned) = 32-bit, I wonder
how the compiler behaves.
I added the debian-win32 docker image to tests this kind of regressions,
but it seems the current toolchain used (mingw-w64) is now only a LLP64
model (I still need to verify).
I remember I somewhere have a Linux/X32 docker suite to test this
series. I'll give it a try (I doubt before this week-end).
Regards,
Phil.
>> + } v = { .v = val };
>> \
>> + uint64_t d;
>> \
>> + d = deposit64((storage), R_ ## reg ## _ ## field ## _SHIFT,
>> \
>> + R_ ## reg ## _ ## field ## _LENGTH, v.v);
>> \
>> + d; })
>>
>> /* Deposit a field to array of registers. */
>> #define ARRAY_FIELD_DP32(regs, reg, field, val)
>> \
>> --
>> 2.15.1
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH 0/4] Trivial changes in "registerfields.h", Philippe Mathieu-Daudé, 2017/12/13
- [Qemu-devel] [PATCH 1/4] MAINTAINERS: add "hw/registerfields.h" in Register API entry, Philippe Mathieu-Daudé, 2017/12/13
- [Qemu-devel] [PATCH 2/4] hw/registerfields: fix a typo in the FIELD() documentation, Philippe Mathieu-Daudé, 2017/12/13
- [Qemu-devel] [PATCH 3/4] hw/registerfields: add 64-bit extract/deposit macros, Philippe Mathieu-Daudé, 2017/12/13
- [Qemu-devel] [PATCH 4/4] hw/registerfields: add missing include, Philippe Mathieu-Daudé, 2017/12/13
- Re: [Qemu-devel] [PATCH 0/4] Trivial changes in "registerfields.h", Darren Kenny, 2017/12/13
- Re: [Qemu-devel] [PATCH 0/4] Trivial changes in "registerfields.h", Edgar E. Iglesias, 2017/12/13