--- nono/vm/bus.cpp 2026/04/29 17:04:31 1.1.1.2 +++ nono/vm/bus.cpp 2026/04/29 17:04:38 1.1.1.4 @@ -1,6 +1,7 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #include "bus.h" @@ -32,7 +33,9 @@ vm_phys_read_16(uint32 addr) { uint64 data; -if ((addr & 1))PANIC("unaligned access $%08x", addr); + if (__predict_false(addr & 1)) + PANIC("unaligned access $%08x", addr); + if (addr < ram_size) { data = *(uint16 *)&ram[HLW(addr)]; } else { @@ -47,7 +50,8 @@ vm_phys_read_32(uint32 addr) { uint64 data; -if ((addr & 3))PANIC("unaligned access $%08x", addr); + if (__predict_false(addr & 3)) + PANIC("unaligned access $%08x", addr); if (addr < ram_size) { data = *(uint32 *)&ram[addr]; @@ -73,7 +77,9 @@ vm_phys_write_8(uint32 addr, uint32 data uint64 vm_phys_write_16(uint32 addr, uint32 data) { -if ((addr & 1))PANIC("unaligned access $%08x", addr); + if (__predict_false(addr & 1)) + PANIC("unaligned access $%08x", addr); + if (addr < ram_size) { *(uint16 *)&ram[HLW(addr)] = data; return 0; @@ -86,7 +92,9 @@ if ((addr & 1))PANIC("unaligned access $ uint64 vm_phys_write_32(uint32 addr, uint32 data) { -if ((addr & 3))PANIC("unaligned access $%08x", addr); + if (__predict_false(addr & 3)) + PANIC("unaligned access $%08x", addr); + if (addr < ram_size) { *(uint32 *)&ram[addr] = data; return 0;