number.
* v850.md (save_interrupt, return_interrupt): Correct
register number.
* v850/lib1funcs.asm (save_interrupt): Correct register number.
(return_interrupt): Use stack pointer, not element pointer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15550
138bc75d-0d04-0410-961f-
82ee72b054a4
+Thu Sep 18 10:43:07 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850.c (compute_register_save_size): Correct register
+ number.
+ * v850.md (save_interrupt, return_interrupt): Correct
+ register number.
+ * v850/lib1funcs.asm (save_interrupt): Correct register number.
+ (return_interrupt): Use stack pointer, not element pointer.
+
1997-09-18 Brendan Kehoe <brendan@lisa.cygnus.com>
* configure.in, configure: Make sure to create the stage* and include
.align 2
.globl __save_interrupt
.type __save_interrupt,@function
- /* Save registers r1, r5 on stack and load up with expected values */
+ /* Save registers r1, r4 on stack and load up with expected values */
/* Note, 12 bytes of stack have already been allocated. */
/* Called via: jalr __save_interrupt,r10 */
__save_interrupt:
__return_interrupt:
ld.w 0[sp],ep
ld.w 4[sp],gp
- ld.w 8[ep],r1
- ld.w 12[ep],r10
- add 12,sp
+ ld.w 8[sp],r1
+ ld.w 12[sp],r10
+ add 16,sp
reti
.size __return_interrupt,.-__return_interrupt
#endif /* L_save_interrupt */
These registers are handled specially, so don't list them
on the list of registers to save in the prologue. */
case 1: /* temp used to hold ep */
- case 5: /* gp */
+ case 4: /* gp */
case 10: /* temp used to call interrupt save/restore */
case EP_REGNUM: /* ep */
size += 4;
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -16)))
(set (mem:SI (reg:SI 3)) (reg:SI 30))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 10))
- (set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 5))
+ (set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 4))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 1))]
""
"add -16,sp\;st.w r10,12[sp]\;jarl __save_interrupt,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
-;; Restore r1, r5, r10, and return from the interrupt
+;; Restore r1, r4, r10, and return from the interrupt
(define_insn "restore_interrupt"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 16)))
(set (reg:SI 30) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 10) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
- (set (reg:SI 5) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))
+ (set (reg:SI 4) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))
(set (reg:SI 1) (mem:SI (reg:SI 3)))]
""
"jr __return_interrupt"