diff options
| author | Julian Blake Kongslie | 2022-11-19 16:29:27 -0800 |
|---|---|---|
| committer | Julian Blake Kongslie | 2022-11-19 16:29:27 -0800 |
| commit | fdb61389099cee41b86c25c3d1ddb660b509e5fa (patch) | |
| tree | 00ebbec2b5a3398ea71442d5cd124a64bd61d80a /isa | |
| parent | Multi-word fetch bundles and icache with realistic dram latency (diff) | |
| download | biggolf-fdb61389099cee41b86c25c3d1ddb660b509e5fa.tar.xz | |
Pipelined microarchitecture, which even almost works!
Includes such horrors as the "unstore" operation for undoing
autoincremented addresses on instructions subsequently found to be
bogus.
Diffstat (limited to 'isa')
| -rw-r--r-- | isa/decode.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/isa/decode.cpp b/isa/decode.cpp index 061fe5c..f0cdca8 100644 --- a/isa/decode.cpp +++ b/isa/decode.cpp | |||
| @@ -92,7 +92,7 @@ instruction_context decode(std::uint_fast32_t flags, unsigned int pc, unsigned i | |||
| 92 | inst.next_pc = (pc & ~07777) | ((pc + 1) & 07777); | 92 | inst.next_pc = (pc & ~07777) | ((pc + 1) & 07777); |
| 93 | 93 | ||
| 94 | if (interrupt) { | 94 | if (interrupt) { |
| 95 | bits = 04000; | 95 | inst.bits = bits = 04000; |
| 96 | assert(df == 0); | 96 | assert(df == 0); |
| 97 | assert(ifb == 0); | 97 | assert(ifb == 0); |
| 98 | inst.next_pc = pc; | 98 | inst.next_pc = pc; |
| @@ -146,7 +146,7 @@ instruction_context decode(std::uint_fast32_t flags, unsigned int pc, unsigned i | |||
| 146 | case 4: // JMS jump subroutine | 146 | case 4: // JMS jump subroutine |
| 147 | inst.need_exec_store = true; | 147 | inst.need_exec_store = true; |
| 148 | inst.possibly_redirects = true; | 148 | inst.possibly_redirects = true; |
| 149 | inst.df = "JMS %a"; | 149 | inst.df = interrupt ? "<interrupt> JMS %a" : "JMS %a"; |
| 150 | inst.ef = [ifb](auto &ctx) { | 150 | inst.ef = [ifb](auto &ctx) { |
| 151 | ctx.data = ctx.next_pc; | 151 | ctx.data = ctx.next_pc; |
| 152 | ctx.next_pc = (ifb << 12) | ((ctx.final_address.value() + 1) & 07777); | 152 | ctx.next_pc = (ifb << 12) | ((ctx.final_address.value() + 1) & 07777); |
