--- nono/vm/bus.h 2026/04/29 17:05:29 1.1.1.7 +++ nono/vm/bus.h 2026/04/29 17:05:43 1.1.1.9 @@ -58,6 +58,7 @@ enum class BusAddr : uint64 Write = D | W, SRead = S | Read, SWrite = S | Write, + FCMask = 0x0000'000f'0000'0000ULL, Size1 = 0x0001'0000'0000'0000ULL, Size2 = 0x0002'0000'0000'0000ULL, @@ -111,6 +112,7 @@ class busaddr value = value_; } + // enum からの自動変換のため explicit つけない。 busaddr(BusAddr value_) noexcept { value = (uint64)value_; } @@ -153,6 +155,10 @@ class busaddr value &= ~(uint64)BusAddr::S; } } + void ChangeFC(uint32 fc_) noexcept { + value &= ~(uint64)BusAddr::FCMask; + value |= (uint64)busaddr::FC(fc_); + } void ChangeData(bool data_) noexcept { value &= ~(uint64)(BusAddr::I | BusAddr::D); if (data_) { @@ -313,6 +319,7 @@ class busdata value = value_; } + // enum からの自動変換のため explicit つけない。 busdata(BusData value_) noexcept { value = (uint64)value_; }