i should implement DSP DMA...
This commit is contained in:
+37
-3
@@ -16,9 +16,10 @@ broadway::broadway() {
|
||||
void broadway::set_pc(ircolib::u32 value) { pc = value; }
|
||||
|
||||
void broadway::run(mem &mem) {
|
||||
for (int i = 0; i < 12150000; i++) {
|
||||
// std::println("pc: 0x{:08X}", pc);
|
||||
execute(fetch(mem), mem);
|
||||
std::println("pc: 0x{:08X}", pc);
|
||||
for (int i = 0; i < 1000000; i++) {
|
||||
ircolib::u32 instr = fetch(mem);
|
||||
execute(instr, mem);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,6 +59,12 @@ void broadway::decode_special2(ircolib::u32 instr, mem &mem) {
|
||||
case 0x000:
|
||||
cmp(instr);
|
||||
break;
|
||||
case 0x008:
|
||||
subfc(instr);
|
||||
break;
|
||||
case 0x00A:
|
||||
addc(instr);
|
||||
break;
|
||||
case 0x013:
|
||||
mfcr(instr);
|
||||
break;
|
||||
@@ -76,6 +83,12 @@ void broadway::decode_special2(ircolib::u32 instr, mem &mem) {
|
||||
case 0x053:
|
||||
mfmsr(instr);
|
||||
break;
|
||||
case 0x088:
|
||||
subfe(instr);
|
||||
break;
|
||||
case 0x08A:
|
||||
adde(instr);
|
||||
break;
|
||||
case 0x090:
|
||||
mtcrf(instr);
|
||||
break;
|
||||
@@ -85,12 +98,21 @@ void broadway::decode_special2(ircolib::u32 instr, mem &mem) {
|
||||
case 0x097:
|
||||
stwx(instr, mem);
|
||||
break;
|
||||
case 0x0CA:
|
||||
addze(instr);
|
||||
break;
|
||||
case 0x0D2:
|
||||
ircolib::warn("broadway TODO mtsr (pc 0x{:08X})", pc - 4);
|
||||
break;
|
||||
case 0x0EB:
|
||||
mullw(instr);
|
||||
break;
|
||||
case 0x117:
|
||||
lhzx(instr, mem);
|
||||
break;
|
||||
case 0x173:
|
||||
mftb(instr);
|
||||
break;
|
||||
case 0x1BC:
|
||||
or (instr);
|
||||
break;
|
||||
@@ -109,6 +131,9 @@ void broadway::decode_special2(ircolib::u32 instr, mem &mem) {
|
||||
break;
|
||||
case 0x256: // sync
|
||||
break;
|
||||
case 0x318:
|
||||
sraw(instr);
|
||||
break;
|
||||
default:
|
||||
std::println("broadway unknown special2 {} (0x{:04X}) (pc 0x{:08X})", secondary, secondary, pc - 4);
|
||||
std::println("disassembly:");
|
||||
@@ -142,6 +167,9 @@ void broadway::execute(ircolib::u32 instr, mem &mem) {
|
||||
case 7:
|
||||
mulli(instr);
|
||||
break;
|
||||
case 8:
|
||||
subfic(instr);
|
||||
break;
|
||||
case 10:
|
||||
cmpli(instr);
|
||||
break;
|
||||
@@ -181,6 +209,9 @@ void broadway::execute(ircolib::u32 instr, mem &mem) {
|
||||
case 25:
|
||||
oris(instr);
|
||||
break;
|
||||
case 26:
|
||||
xori(instr);
|
||||
break;
|
||||
case 28:
|
||||
andi(instr);
|
||||
break;
|
||||
@@ -217,6 +248,9 @@ void broadway::execute(ircolib::u32 instr, mem &mem) {
|
||||
case 44:
|
||||
sth(instr, mem);
|
||||
break;
|
||||
case 45:
|
||||
sthu(instr, mem);
|
||||
break;
|
||||
case 50:
|
||||
lfd(instr, mem);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user