From 9a2d437b244437e3aede4728510e9a3104a8686f Mon Sep 17 00:00:00 2001 From: iris Date: Thu, 14 May 2026 16:49:10 +0200 Subject: [PATCH] oris --- core/broadway.cpp | 3 +++ core/broadway.hpp | 1 + core/broadway/instructions.cpp | 3 +++ 3 files changed, 7 insertions(+) diff --git a/core/broadway.cpp b/core/broadway.cpp index c8f335c..f786754 100644 --- a/core/broadway.cpp +++ b/core/broadway.cpp @@ -70,6 +70,9 @@ void broadway::execute(ircolib::u32 instr, mem &mem) { case 24: // ori ra, rs, uimm ori(instr); break; + case 25: + oris(instr); + break; case 31: decode_special(instr, mem); break; diff --git a/core/broadway.hpp b/core/broadway.hpp index b206333..0bd9cc2 100644 --- a/core/broadway.hpp +++ b/core/broadway.hpp @@ -42,6 +42,7 @@ struct broadway { void addis(ircolib::u32); void addi(ircolib::u32); void ori(ircolib::u32); + void oris(ircolib::u32); void bx(ircolib::u32); void bcx(ircolib::u32); void mtspr(ircolib::u32); diff --git a/core/broadway/instructions.cpp b/core/broadway/instructions.cpp index b8643c7..b372bd6 100644 --- a/core/broadway/instructions.cpp +++ b/core/broadway/instructions.cpp @@ -24,6 +24,9 @@ void broadway::addis(ircolib::u32 instr) { } void broadway::ori(ircolib::u32 instr) { gpr[utils::RA(instr)] = gpr[utils::RS(instr)] | utils::UIMM(instr); } +void broadway::oris(ircolib::u32 instr) { + gpr[utils::RA(instr)] = gpr[utils::RS(instr)] | ((ircolib::u32)utils::UIMM(instr) << 16); +} void broadway::bx(ircolib::u32 instr) { const bool link = instr & 1;