Commit f6bac694 by DJ Delorie Committed by DJ Delorie

* config/m32c/m32c-lib1.S (m32c_jsri16): Make reentrant.

From-SVN: r165859
parent 4d1bc60a
2010-10-22 DJ Delorie <dj@redhat.com>
* config/m32c/m32c-lib1.S (m32c_jsri16): Make reentrant.
2010-10-22 Paul Koning <ni1d@arrl.net> 2010-10-22 Paul Koning <ni1d@arrl.net>
* config/pdp11/pdp11.h (IRA_COVER_CLASSES): Define. * config/pdp11/pdp11.h (IRA_COVER_CLASSES): Define.
...@@ -204,20 +204,28 @@ cmpsi_lt: ...@@ -204,20 +204,28 @@ cmpsi_lt:
#endif #endif
#ifdef L__m32c_jsri16 #ifdef L__m32c_jsri16
.data
m32c_jsri_addr:
.byte 0, 0, 0
m32c_jsri_ret:
.byte 0, 0, 0
.text .text
#ifdef A16
.global m32c_jsri16 .global m32c_jsri16
m32c_jsri16: m32c_jsri16:
pop.w m32c_jsri_ret add.w #-1, sp
pop.b m32c_jsri_ret+2
pop.w m32c_jsri_addr /* Read the address (16 bits) and return address (24 bits) off
push.b m32c_jsri_ret+2 the stack. */
push.w m32c_jsri_ret mov.w 4[sp], r0
jmpi.a m32c_jsri_addr mov.w 1[sp], r3
mov.b 3[sp], a0 /* This zero-extends, so the high byte has
zero in it. */
/* Write the return address, then new address, to the stack. */
mov.w a0, 1[sp] /* Just to get the zero in 2[sp]. */
mov.w r0, 0[sp]
mov.w r3, 3[sp]
mov.b a0, 5[sp]
/* This "returns" to the target address, leaving the pending
return address on the stack. */
rts
#endif
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment