From f0faee57e42f0502d5b9e1f09897973c5badbc8c Mon Sep 17 00:00:00 2001 From: Sebastian Schmidt Date: Sat, 4 Jan 2020 20:45:16 +0100 Subject: [PATCH] Truncate control flow after ILL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC seems to insert a “DIV0” (in ASCII) after an ILL instruction, so truncate control flow by looping endlessly. --- data/languages/xtensaInstructions.sinc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data/languages/xtensaInstructions.sinc b/data/languages/xtensaInstructions.sinc index c0e3f93..31255a3 100644 --- a/data/languages/xtensaInstructions.sinc +++ b/data/languages/xtensaInstructions.sinc @@ -480,11 +480,13 @@ macro extract_bit(val, bit, result) { # ILL - Illegal Instruction, pg. 358. :ill is op2 = 0 & op1 = 0 & ar = 0 & as = 0 & at = 0 & op0 = 0 { ill(); + goto inst_start; } # ILL.N - Narrow Illegal Instruction, pg. 359. :ill.n is n_ar = 0b1111 & n_as = 0 & n_at = 0b0110 & n_op0 = 0b1101 { ill(); + goto inst_start; } # IPF - Instruction Cache Prefetch, pg. 360.