On 06/13/2018 04:31 PM, Richard Henderson wrote: > On 06/13/2018 02:13 AM, Eric Blake wrote: >> Or spell it UINT64_C(1) if you don't want a cast. > > Not unsigned is what I want most.
I used both of your suggestions, but now new format string errors appeared due to ram_addr_t being unsigned, so code cleaned using MachineState->ram_size now complains. include/exec/cpu-common.h:53:typedef uintptr_t ram_addr_t; include/hw/boards.h:259: ram_addr_t ram_size; Is the following snippet OK? /* allocate RAM */ - if (ram_size > (2048u << 20)) { - error_report("Too much memory for this machine: %dMB, maximum 2048MB", - ((unsigned int)ram_size / (1 << 20))); + if (ram_size > 2 * GiB) { + error_report("Too much memory for this machine: %luMB, maximum 2048MB", + ram_size / MiB); exit(1); }