diff options
Diffstat (limited to 'src/arch/arm/isa/insts')
-rw-r--r-- | src/arch/arm/isa/insts/div.isa | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/arch/arm/isa/insts/div.isa b/src/arch/arm/isa/insts/div.isa index b240e2967..302beb6b3 100644 --- a/src/arch/arm/isa/insts/div.isa +++ b/src/arch/arm/isa/insts/div.isa @@ -40,6 +40,13 @@ let {{ sdivCode = ''' if (Op2.sw == 0) { + if (((SCTLR)Sctlr).dz) { +#if FULL_SYSTEM + return new UndefinedInstruction; +#else + return new UndefinedInstruction(false, mnemonic); +#endif + } Dest.sw = 0; } else if (Op1.sw == INT_MIN && Op2.sw == -1) { Dest.sw = INT_MIN; @@ -56,6 +63,13 @@ let {{ udivCode = ''' if (Op2.uw == 0) { + if (((SCTLR)Sctlr).dz) { +#if FULL_SYSTEM + return new UndefinedInstruction; +#else + return new UndefinedInstruction(false, mnemonic); +#endif + } Dest.uw = 0; } else { Dest.uw = Op1.uw / Op2.uw; |