about summary refs log tree commit diff stats
path: root/miasm2/arch/msp430/ira.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/arch/msp430/ira.py')
-rw-r--r--miasm2/arch/msp430/ira.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/miasm2/arch/msp430/ira.py b/miasm2/arch/msp430/ira.py
index 2a850d82..5b19956e 100644
--- a/miasm2/arch/msp430/ira.py
+++ b/miasm2/arch/msp430/ira.py
@@ -2,7 +2,8 @@
 
 from miasm2.ir.analysis import ira
 from miasm2.arch.msp430.sem import ir_msp430
-
+from miasm2.ir.ir import AssignBlock
+from miasm2.expression.expression import *
 
 class ir_a_msp430_base(ir_msp430, ira):
 
@@ -10,6 +11,15 @@ class ir_a_msp430_base(ir_msp430, ira):
         ir_msp430.__init__(self, loc_db)
         self.ret_reg = self.arch.regs.R15
 
+    def call_effects(self, addr, instr):
+        call_assignblk = AssignBlock(
+            [
+                ExprAssign(self.ret_reg, ExprOp('call_func_ret', addr, self.sp, self.arch.regs.R15)),
+                ExprAssign(self.sp, ExprOp('call_func_stack', addr, self.sp))
+            ],
+            instr
+        )
+        return [call_assignblk], []
 
 class ir_a_msp430(ir_a_msp430_base):