This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] h8300/lib1funcs.asm: Don't save/restore unused registers.
- From: Kazu Hirata <kazu at cs dot umass dot edu>
- To: gcc-patches at gcc dot gnu dot org
- Cc: pisa at cmp dot felk dot cvut dot cz
- Date: Fri, 14 Nov 2003 07:40:17 -0500 (EST)
- Subject: [patch] h8300/lib1funcs.asm: Don't save/restore unused registers.
Hi,
Attached is a patch to tell __modsi3 and __divsi3 not to save unused
registers.
Tested on h8300 port. Committed.
Kazu Hirata
2003-11-14 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/lib1funcs.asm (modsi3): Don't save unused
registers.
(divsi3): Likewise.
(reti): Don't restore unused registers.
Index: lib1funcs.asm
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/h8300/lib1funcs.asm,v
retrieving revision 1.26
diff -c -r1.26 lib1funcs.asm
*** lib1funcs.asm 14 Nov 2003 04:35:46 -0000 1.26
--- lib1funcs.asm 14 Nov 2003 04:52:28 -0000
***************
*** 432,451 ****
; denominator in A2/A3
.global ___modsi3
___modsi3:
PUSHP S2P
PUSHP S0P
PUSHP S1P
-
bsr modnorm
- #ifdef __H8300__
bsr divmodsi4
mov S0,A0
mov S1,A1
#else
bsr ___udivsi3
mov.l er3,er0
- #endif
bra exitdiv
;; H8/300H and H8S version of ___udivsi3 is defined later in
;; the file.
--- 432,453 ----
; denominator in A2/A3
.global ___modsi3
___modsi3:
+ #ifdef __H8300__
PUSHP S2P
PUSHP S0P
PUSHP S1P
bsr modnorm
bsr divmodsi4
mov S0,A0
mov S1,A1
+ bra exitdiv
#else
+ PUSHP S2P
+ bsr modnorm
bsr ___udivsi3
mov.l er3,er0
bra exitdiv
+ #endif
;; H8/300H and H8S version of ___udivsi3 is defined later in
;; the file.
***************
*** 477,489 ****
.global ___divsi3
___divsi3:
PUSHP S2P
PUSHP S0P
PUSHP S1P
jsr divnorm
- #ifdef __H8300__
jsr divmodsi4
#else
bsr ___udivsi3
#endif
--- 479,493 ----
.global ___divsi3
___divsi3:
+ #ifdef __H8300__
PUSHP S2P
PUSHP S0P
PUSHP S1P
jsr divnorm
jsr divmodsi4
#else
+ PUSHP S2P
+ jsr divnorm
bsr ___udivsi3
#endif
***************
*** 508,515 ****
--- 512,521 ----
#endif
reti:
+ #ifdef __H8300__
POPP S1P
POPP S0P
+ #endif
POPP S2P
rts