On 5 September 2017 at 13:30, niuguoxiang <niuguoxi...@huawei.com> wrote: > I think only assert is not enough, because assert() depends on NDEBUG > preprocessing
The code cannot be reached with a non-aligned value, because we register these functions via the gic_ops[] MemoryRegionops in hw/intc/arm_gicv3.c, and since we do not specify .valid.unaligned=true there, the memory.c code will throw out attempts at unaligned accesses. The assert is just checking at runtime that this never becomes false accidentally (and also for the benefit of people reading the code). Incidentally, QEMU can never be compiled with NDEBUG not set -- we will #error in the compilation if it is not set. (It's not good practice to depend on the assert() actually doing anything though, and indeed in this case we don't.) thanks -- PMM