Move ARM control stack pointer to a static-symbol.
commit0f0029c14c839050ea4020b0e4472c68fe4a73f0
authorAlastair Bridgewater <nyef@kana.lisphacker.com>
Sat, 26 Apr 2014 03:44:09 +0000 (25 23:44 -0400)
committerAlastair Bridgewater <nyef@kana.lisphacker.com>
Sat, 10 May 2014 19:12:23 +0000 (10 15:12 -0400)
tree3151665cc197822ebfa15cc63cc3f9a22fbbc1aa
parent1a09729a4d2a073e6cc7b1052d9af042c0687f2e
Move ARM control stack pointer to a static-symbol.

  * The simplest part of this whole mess is in src/compiler/arm/,
where we define a couple of new static-symbols (one for the
runtime to use during interrupt processing) and we switch out the
LOAD-CSP and STORE-CSP macros in favor of using a symbol value.

  * The next tricky bit is in interrupt.c, where we change how we
access the control stack pointer on ARM, and where we arrange to
store the control stack pointer where a non-local unwind won't
screw up if it runs across it but still where it can be restored
if we do a "normal" exit (necessary because it's no longer part of
the signal context).

  * And the really tricky bit is fixing up call_into_lisp and
call_into_c to operate in terms of the new symbol instead of in
terms of the old register.  Hopefully I got that right, and it's
about to change again, anyway.
src/compiler/arm/macros.lisp
src/compiler/arm/parms.lisp
src/runtime/arm-assem.S
src/runtime/interrupt.c