aboutsummaryrefslogtreecommitdiff
path: root/sim/arm/armemu.h
diff options
context:
space:
mode:
Diffstat (limited to 'sim/arm/armemu.h')
-rw-r--r--sim/arm/armemu.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/sim/arm/armemu.h b/sim/arm/armemu.h
index de836cb..7bca8d3 100644
--- a/sim/arm/armemu.h
+++ b/sim/arm/armemu.h
@@ -231,10 +231,14 @@ extern ARMword isize;
#define NORMALCYCLE state->NextInstr = 0
#define BUSUSEDN state->NextInstr |= 1 /* the next fetch will be an N cycle */
-#define BUSUSEDINCPCS state->Reg[15] += isize ; /* a standard PC inc and an S cycle */ \
- state->NextInstr = (state->NextInstr & 0xff) | 2
-#define BUSUSEDINCPCN state->Reg[15] += isize ; /* a standard PC inc and an N cycle */ \
- state->NextInstr |= 3
+#define BUSUSEDINCPCS do { if (! state->is_StrongARM) { \
+ state->Reg[15] += isize ; /* a standard PC inc and an S cycle */ \
+ state->NextInstr = (state->NextInstr & 0xff) | 2; \
+ } } while (0)
+#define BUSUSEDINCPCN do { if (state->is_StrongARM) BUSUSEDN; else { \
+ state->Reg[15] += isize ; /* a standard PC inc and an N cycle */ \
+ state->NextInstr |= 3; \
+ } } while (0)
#define INCPC state->Reg[15] += isize ; /* a standard PC inc */ \
state->NextInstr |= 2
#define FLUSHPIPE state->NextInstr |= PRIMEPIPE