getting to my first branch now
This commit is contained in:
@@ -1,7 +1,14 @@
|
||||
#include <broadway.hpp>
|
||||
#include <broadway/utils.hpp>
|
||||
|
||||
namespace weee::core {
|
||||
void broadway::addis(ircolib::u32 instr) {
|
||||
|
||||
if (utils::RA(instr) == 0) { // lis
|
||||
gpr[utils::RD(instr)] = ircolib::s32(utils::SIMM(instr)) << 16;
|
||||
return;
|
||||
}
|
||||
|
||||
gpr[utils::RD(instr)] = gpr[utils::RA(instr)] + (ircolib::s32(utils::SIMM(instr)) << 16);
|
||||
}
|
||||
|
||||
void broadway::ori(ircolib::u32 instr) { gpr[utils::RA(instr)] = gpr[utils::RS(instr)] | utils::UIMM(instr); }
|
||||
} // namespace weee::core
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
#include <broadway.hpp>
|
||||
|
||||
namespace weee::core::utils {
|
||||
static inline ircolib::u8 primary(ircolib::u32 instr) { return (instr >> 26) & 0x3f; }
|
||||
static inline ircolib::u8 RD(ircolib::u32 instr) { return (instr >> 21) & 0x1f; }
|
||||
static inline ircolib::u8 RS(ircolib::u32 instr) { return RD(instr); }
|
||||
static inline ircolib::u8 RA(ircolib::u32 instr) { return (instr >> 16) & 0x1f; }
|
||||
static inline ircolib::u16 UIMM(ircolib::u32 instr) { return instr & 0xffff; }
|
||||
static inline ircolib::s16 SIMM(ircolib::u32 instr) { return UIMM(instr); }
|
||||
} // namespace weee::core::utils
|
||||
Reference in New Issue
Block a user