ubsan: or1k: left shift of negative value

Message ID 20191220095549.GK32672@bubble.grove.modra.org
State New
Headers show
Series
  • ubsan: or1k: left shift of negative value
Related show

Commit Message

Alan Modra Dec. 20, 2019, 9:55 a.m.
cpu/
	* or1korbis.cpu (f-disp26, f-disp21): Don't left shift negative values.
opcodes/
	* or1k-ibld.c: Regenerate.


-- 
Alan Modra
Australia Development Lab, IBM

Patch

diff --git a/cpu/or1korbis.cpu b/cpu/or1korbis.cpu
index 3741d4c8f7..a8002a3718 100644
--- a/cpu/or1korbis.cpu
+++ b/cpu/or1korbis.cpu
@@ -76,7 +76,7 @@ 
     26
     INT
     ((value pc) (sra IAI (sub IAI value pc) (const 2)))
-    ((value pc) (add IAI (sll IAI value (const 2)) pc))
+    ((value pc) (add IAI (mul IAI value (const 4)) pc))
     )
 
 ; PC relative, 21-bit, 13 shifted to right, aligned.
@@ -91,7 +91,7 @@ 
     ((value pc)
      (sub IAI (sra IAI value (const 13)) (sra IAI pc (const 13))))
     ((value pc)
-     (sll IAI (add IAI value (sra IAI pc (const 13))) (const 13)))
+     (mul IAI (add IAI value (sra IAI pc (const 13))) (const 8192)))
     )
 
 ; Immediates.