--- nono/vm/bus.cpp 2026/04/29 17:04:28 1.1.1.1 +++ 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" @@ -14,7 +15,7 @@ IODevice *devtable[256]; // uint64 -m68030_phys_read_8(uint32 addr) +vm_phys_read_8(uint32 addr) { uint64 data; @@ -28,11 +29,13 @@ m68030_phys_read_8(uint32 addr) } uint64 -m68030_phys_read_16(uint32 addr) +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 { @@ -43,11 +46,12 @@ if ((addr & 1))PANIC("unaligned access $ } uint64 -m68030_phys_read_32(uint32 addr) +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]; @@ -59,7 +63,7 @@ if ((addr & 3))PANIC("unaligned access $ } uint64 -m68030_phys_write_8(uint32 addr, uint32 data) +vm_phys_write_8(uint32 addr, uint32 data) { if (addr < ram_size) { ram[HLB(addr)] = data; @@ -71,9 +75,11 @@ m68030_phys_write_8(uint32 addr, uint32 } uint64 -m68030_phys_write_16(uint32 addr, uint32 data) +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; @@ -84,9 +90,11 @@ if ((addr & 1))PANIC("unaligned access $ } uint64 -m68030_phys_write_32(uint32 addr, uint32 data) +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; @@ -97,7 +105,7 @@ if ((addr & 3))PANIC("unaligned access $ } uint64 -m68030_phys_peek_8(uint32 addr) +vm_phys_peek_8(uint32 addr) { uint64 data;