diff options
| author | Julian Blake Kongslie | 2023-01-15 14:02:54 -0800 |
|---|---|---|
| committer | Julian Blake Kongslie | 2023-01-15 15:04:07 -0800 |
| commit | 27a58c86ce494588a12023a12b027b7f44bb35fc (patch) | |
| tree | b793a60b97ab402d8438aba0800667d4151909fe /isa/decode.cpp | |
| parent | Enable parallel LTO linking. (diff) | |
| download | biggolf-27a58c86ce494588a12023a12b027b7f44bb35fc.tar.xz | |
Stall decode after an instruction with stores until the stores are done.
Diffstat (limited to '')
| -rw-r--r-- | isa/decode.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/isa/decode.cpp b/isa/decode.cpp index f0cdca8..abcb3e3 100644 --- a/isa/decode.cpp +++ b/isa/decode.cpp | |||
| @@ -88,15 +88,15 @@ instruction_context decode(std::uint_fast32_t flags, unsigned int pc, unsigned i | |||
| 88 | #pragma GCC diagnostic pop | 88 | #pragma GCC diagnostic pop |
| 89 | 89 | ||
| 90 | instruction_context inst; | 90 | instruction_context inst; |
| 91 | inst.bits = bits; | ||
| 92 | inst.next_pc = (pc & ~07777) | ((pc + 1) & 07777); | ||
| 93 | |||
| 94 | if (interrupt) { | 91 | if (interrupt) { |
| 95 | inst.bits = bits = 04000; | 92 | inst.bits = bits = 04000; |
| 96 | assert(df == 0); | 93 | assert(df == 0); |
| 97 | assert(ifb == 0); | 94 | assert(ifb == 0); |
| 98 | inst.next_pc = pc; | 95 | inst.next_pc = pc; |
| 99 | pc = 0; | 96 | pc = 0; |
| 97 | } else { | ||
| 98 | inst.bits = bits; | ||
| 99 | inst.next_pc = (pc & ~07777) | ((pc + 1) & 07777); | ||
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | switch (bits >> 9) { | 102 | switch (bits >> 9) { |
