[pypy-commit] pypy arm-backed-float: (arigo, bivab) generate header and footer for functions when using the shadowstack
bivab
noreply at buildbot.pypy.org
Thu May 26 14:00:26 CEST 2011
Author: David Schneider <david.schneider at picle.org>
Branch: arm-backed-float
Changeset: r44503:a30fd39f0ff5
Date: 2011-05-25 14:07 +0200
http://bitbucket.org/pypy/pypy/changeset/a30fd39f0ff5/
Log: (arigo, bivab) generate header and footer for functions when using
the shadowstack
diff --git a/pypy/jit/backend/arm/assembler.py b/pypy/jit/backend/arm/assembler.py
--- a/pypy/jit/backend/arm/assembler.py
+++ b/pypy/jit/backend/arm/assembler.py
@@ -380,10 +380,10 @@
def gen_func_epilog(self, mc=None, cond=c.AL):
gcrootmap = self.cpu.gc_ll_descr.gcrootmap
- if gcrootmap and gcrootmap.is_shadow_stack:
- self.gen_footer_shadowstack(gcrootmap)
if mc is None:
mc = self.mc
+ if gcrootmap and gcrootmap.is_shadow_stack:
+ self.gen_footer_shadowstack(gcrootmap, mc)
offset = 1
if self.cpu.supports_floats:
offset += 1 # to keep stack alignment
@@ -421,12 +421,12 @@
self.mc.STR_ri(r.fp.value, r.r4.value, WORD)
self.mc.STR_ri(r.r5.value, r.ip.value)
- def gen_footer_shadowstack(self, gcrootmap):
+ def gen_footer_shadowstack(self, gcrootmap, mc):
rst = gcrootmap.get_root_stack_top_addr()
- self.mc.gen_load_int(r.ip.value, rst)
- self.mc.LDR_ri(r.r4.value, r.ip.value) # LDR r4, [rootstacktop]
- self.mc.SUB_ri(r.r5.value, r.r4.value, imm=2*WORD) # ADD r5, r4 [2*WORD]
- self.mc.STR_ri(r.r5.value, r.ip.value)
+ mc.gen_load_int(r.ip.value, rst)
+ mc.LDR_ri(r.r4.value, r.ip.value) # LDR r4, [rootstacktop]
+ mc.SUB_ri(r.r5.value, r.r4.value, imm=2*WORD) # ADD r5, r4 [2*WORD]
+ mc.STR_ri(r.r5.value, r.ip.value)
def gen_bootstrap_code(self, nonfloatlocs, floatlocs, inputargs):
for i in range(len(nonfloatlocs)):
diff --git a/pypy/jit/backend/arm/runner.py b/pypy/jit/backend/arm/runner.py
--- a/pypy/jit/backend/arm/runner.py
+++ b/pypy/jit/backend/arm/runner.py
@@ -4,6 +4,7 @@
from pypy.jit.backend.llsupport.llmodel import AbstractLLCPU
from pypy.rpython.llinterp import LLInterpreter
from pypy.rpython.lltypesystem import lltype, rffi, llmemory
+from pypy.jit.backend.arm.arch import FORCE_INDEX_OFS
class ArmCPU(AbstractLLCPU):
More information about the pypy-commit
mailing list