--- nono/vm/bus.cpp 2026/04/29 17:04:52 1.1.1.6 +++ nono/vm/bus.cpp 2026/04/29 17:05:10 1.1.1.8 @@ -4,6 +4,12 @@ // Licensed under nono-license.txt // +// +// 物理バスアクセス? +// + +// addr はそれぞれアラインされていること + #include "bus.h" #include "ram.h" @@ -15,11 +21,6 @@ IODevice *devtable[256]; // 計算する分を回避したい。 int direct_ram_size; -// -// 物理バスアクセス? -// addr はそれぞれアラインされていること -// - uint64 vm_phys_read_8(uint32 addr) { @@ -39,8 +40,8 @@ vm_phys_read_16(uint32 addr) { uint64 data; - if (__predict_false(addr & 1)) - PANIC("unaligned access $%08x", addr); + if (__predict_false((addr & 1) != 0)) + VMPANIC("unaligned access $%08x", addr); if (addr < direct_ram_size) { data = *(uint16 *)&mainram[HLW(addr)]; @@ -56,8 +57,8 @@ vm_phys_read_32(uint32 addr) { uint64 data; - if (__predict_false(addr & 3)) - PANIC("unaligned access $%08x", addr); + if (__predict_false((addr & 3) != 0)) + VMPANIC("unaligned access $%08x", addr); if (addr < direct_ram_size) { data = *(uint32 *)&mainram[addr]; @@ -83,8 +84,8 @@ vm_phys_write_8(uint32 addr, uint32 data uint64 vm_phys_write_16(uint32 addr, uint32 data) { - if (__predict_false(addr & 1)) - PANIC("unaligned access $%08x", addr); + if (__predict_false((addr & 1) != 0)) + VMPANIC("unaligned access $%08x", addr); if (addr < direct_ram_size) { *(uint16 *)&mainram[HLW(addr)] = data; @@ -98,8 +99,8 @@ vm_phys_write_16(uint32 addr, uint32 dat uint64 vm_phys_write_32(uint32 addr, uint32 data) { - if (__predict_false(addr & 3)) - PANIC("unaligned access $%08x", addr); + if (__predict_false((addr & 3) != 0)) + VMPANIC("unaligned access $%08x", addr); if (addr < direct_ram_size) { *(uint32 *)&mainram[addr] = data;