diff options
| -rw-r--r-- | mips/mips_insts.sail | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/mips/mips_insts.sail b/mips/mips_insts.sail index a6cef9ca..2555bb78 100644 --- a/mips/mips_insts.sail +++ b/mips/mips_insts.sail @@ -1461,6 +1461,17 @@ function clause execute (MFC0(rt, rd, sel, double)) = { wGPR(rt) := if (double) then result else EXTS(result[31..0]) } +(* simulator halt instruction "MTC0 rt, r23" (cheri specific behaviour) *) +union ast member unit HCF +function clause decode (0b010000 : 0b00100 : (regno) rt : 0b10111 : 0b00000000000) = + Some(HCF()) + +function clause decode (0b010000 : 0b00100 : (regno) rt : 0b11010 : 0b00000000000) = + Some(HCF()) + +function clause execute (HCF) = + () (* halt instruction actually executed by interpreter framework *) + union ast member (regno, regno, bit[3], bool) MTC0 function clause decode (0b010000 : 0b00100 : (regno) rt : (regno) rd : 0b00000000 : (bit[3]) sel) = Some(MTC0(rt, rd, sel, false)) (* MTC0 *) @@ -1645,14 +1656,3 @@ function clause execute (ERET) = CP0Status.EXL := 0; } } - -(* simulator halt instruction "MTC0 rt, r23" (cheri specific behaviour) *) -union ast member unit HCF -function clause decode (0b010000 : 0b00100 : (regno) rt : 0b10111 : 0b00000000000) = - Some(HCF()) - -function clause decode (0b010000 : 0b00100 : (regno) rt : 0b11010 : 0b00000000000) = - Some(HCF()) - -function clause execute (HCF) = - () (* halt instruction actually executed by interpreter framework *) |
