t-sh (LIB1ASMFUNCS): Add _set_fpscr .

* t-sh (LIB1ASMFUNCS): Add _set_fpscr .
	* config/sh/lib1funcs.asm (___set_fpscr): Add.

From-SVN: r22746
This commit is contained in:
J"orn Rennecke 1998-10-02 08:22:31 +00:00 committed by Joern Rennecke
parent ca672a5534
commit e430f7389f
3 changed files with 261 additions and 217 deletions

View File

@ -1,3 +1,8 @@
Fri Oct 2 16:13:12 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* t-sh (LIB1ASMFUNCS): Add _set_fpscr .
* config/sh/lib1funcs.asm (___set_fpscr): Add.
Fri Oct 2 02:01:59 1998 Jeffrey A Law (law@cygnus.com)
* regclass.c (reg_scan_mark_refs): Return immediately if passed a

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
/* Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@ -39,6 +39,16 @@ Boston, MA 02111-1307, USA. */
!! recoded in assembly by Toshiyasu Morita
!! tm@netcom.com
/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
ELF local label prefixes by J"orn Rennecke
amylaar@cygnus.com */
#ifdef __ELF__
#define LOCAL(X) .L_##X
#else
#define LOCAL(X) L_##X
#endif
#ifdef L_ashiftrt
.global ___ashiftrt_r4_0
.global ___ashiftrt_r4_1
@ -178,123 +188,127 @@ ___ashiftrt_r4_0:
.align 2
___ashrsi3:
mov #31,r0
cmp/hi r0,r5
bt L_ashrsi3_31
mova L_ashrsi3_table,r0
and r0,r5
mova LOCAL(ashrsi3_table),r0
mov.b @(r0,r5),r5
add r5,r0 ! Change to braf when gas is fixed
#ifdef __sh1__
add r5,r0
jmp @r0
#else
braf r5
#endif
mov r4,r0
L_ashrsi3_table:
.byte L_ashrsi3_0-L_ashrsi3_table
.byte L_ashrsi3_1-L_ashrsi3_table
.byte L_ashrsi3_2-L_ashrsi3_table
.byte L_ashrsi3_3-L_ashrsi3_table
.byte L_ashrsi3_4-L_ashrsi3_table
.byte L_ashrsi3_5-L_ashrsi3_table
.byte L_ashrsi3_6-L_ashrsi3_table
.byte L_ashrsi3_7-L_ashrsi3_table
.byte L_ashrsi3_8-L_ashrsi3_table
.byte L_ashrsi3_9-L_ashrsi3_table
.byte L_ashrsi3_10-L_ashrsi3_table
.byte L_ashrsi3_11-L_ashrsi3_table
.byte L_ashrsi3_12-L_ashrsi3_table
.byte L_ashrsi3_13-L_ashrsi3_table
.byte L_ashrsi3_14-L_ashrsi3_table
.byte L_ashrsi3_15-L_ashrsi3_table
.byte L_ashrsi3_16-L_ashrsi3_table
.byte L_ashrsi3_17-L_ashrsi3_table
.byte L_ashrsi3_18-L_ashrsi3_table
.byte L_ashrsi3_19-L_ashrsi3_table
.byte L_ashrsi3_20-L_ashrsi3_table
.byte L_ashrsi3_21-L_ashrsi3_table
.byte L_ashrsi3_22-L_ashrsi3_table
.byte L_ashrsi3_23-L_ashrsi3_table
.byte L_ashrsi3_24-L_ashrsi3_table
.byte L_ashrsi3_25-L_ashrsi3_table
.byte L_ashrsi3_26-L_ashrsi3_table
.byte L_ashrsi3_27-L_ashrsi3_table
.byte L_ashrsi3_28-L_ashrsi3_table
.byte L_ashrsi3_29-L_ashrsi3_table
.byte L_ashrsi3_30-L_ashrsi3_table
.byte L_ashrsi3_31-L_ashrsi3_table
.align 2
LOCAL(ashrsi3_table):
.byte LOCAL(ashrsi3_0)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_1)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_2)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_3)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_4)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_5)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_6)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_7)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_8)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_9)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_10)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_11)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_12)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_13)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_14)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_15)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_16)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_17)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_18)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_19)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_20)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_21)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_22)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_23)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_24)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_25)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_26)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_27)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_28)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_29)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_30)-LOCAL(ashrsi3_table)
.byte LOCAL(ashrsi3_31)-LOCAL(ashrsi3_table)
L_ashrsi3_31:
LOCAL(ashrsi3_31):
rotcl r0
rts
subc r0,r0
L_ashrsi3_30:
LOCAL(ashrsi3_30):
shar r0
L_ashrsi3_29:
LOCAL(ashrsi3_29):
shar r0
L_ashrsi3_28:
LOCAL(ashrsi3_28):
shar r0
L_ashrsi3_27:
LOCAL(ashrsi3_27):
shar r0
L_ashrsi3_26:
LOCAL(ashrsi3_26):
shar r0
L_ashrsi3_25:
LOCAL(ashrsi3_25):
shar r0
L_ashrsi3_24:
LOCAL(ashrsi3_24):
shlr16 r0
shlr8 r0
rts
exts.b r0,r0
L_ashrsi3_23:
LOCAL(ashrsi3_23):
shar r0
L_ashrsi3_22:
LOCAL(ashrsi3_22):
shar r0
L_ashrsi3_21:
LOCAL(ashrsi3_21):
shar r0
L_ashrsi3_20:
LOCAL(ashrsi3_20):
shar r0
L_ashrsi3_19:
LOCAL(ashrsi3_19):
shar r0
L_ashrsi3_18:
LOCAL(ashrsi3_18):
shar r0
L_ashrsi3_17:
LOCAL(ashrsi3_17):
shar r0
L_ashrsi3_16:
LOCAL(ashrsi3_16):
shlr16 r0
rts
exts.w r0,r0
L_ashrsi3_15:
LOCAL(ashrsi3_15):
shar r0
L_ashrsi3_14:
LOCAL(ashrsi3_14):
shar r0
L_ashrsi3_13:
LOCAL(ashrsi3_13):
shar r0
L_ashrsi3_12:
LOCAL(ashrsi3_12):
shar r0
L_ashrsi3_11:
LOCAL(ashrsi3_11):
shar r0
L_ashrsi3_10:
LOCAL(ashrsi3_10):
shar r0
L_ashrsi3_9:
LOCAL(ashrsi3_9):
shar r0
L_ashrsi3_8:
LOCAL(ashrsi3_8):
shar r0
L_ashrsi3_7:
LOCAL(ashrsi3_7):
shar r0
L_ashrsi3_6:
LOCAL(ashrsi3_6):
shar r0
L_ashrsi3_5:
LOCAL(ashrsi3_5):
shar r0
L_ashrsi3_4:
LOCAL(ashrsi3_4):
shar r0
L_ashrsi3_3:
LOCAL(ashrsi3_3):
shar r0
L_ashrsi3_2:
LOCAL(ashrsi3_2):
shar r0
L_ashrsi3_1:
LOCAL(ashrsi3_1):
rts
shar r0
L_ashrsi3_0:
LOCAL(ashrsi3_0):
rts
nop
@ -322,136 +336,136 @@ L_ashrsi3_0:
.align 2
___ashlsi3:
mov #31,r0
cmp/hi r0,r5
bt L_ashlsi3_32
mova L_ashlsi3_table,r0
and r0,r5
mova LOCAL(ashlsi3_table),r0
mov.b @(r0,r5),r5
add r5,r0 ! Change to braf when gas is fixed
#ifdef __sh1__
add r5,r0
jmp @r0
#else
braf r5
#endif
mov r4,r0
L_ashlsi3_table:
.byte L_ashlsi3_0-L_ashlsi3_table
.byte L_ashlsi3_1-L_ashlsi3_table
.byte L_ashlsi3_2-L_ashlsi3_table
.byte L_ashlsi3_3-L_ashlsi3_table
.byte L_ashlsi3_4-L_ashlsi3_table
.byte L_ashlsi3_5-L_ashlsi3_table
.byte L_ashlsi3_6-L_ashlsi3_table
.byte L_ashlsi3_7-L_ashlsi3_table
.byte L_ashlsi3_8-L_ashlsi3_table
.byte L_ashlsi3_9-L_ashlsi3_table
.byte L_ashlsi3_10-L_ashlsi3_table
.byte L_ashlsi3_11-L_ashlsi3_table
.byte L_ashlsi3_12-L_ashlsi3_table
.byte L_ashlsi3_13-L_ashlsi3_table
.byte L_ashlsi3_14-L_ashlsi3_table
.byte L_ashlsi3_15-L_ashlsi3_table
.byte L_ashlsi3_16-L_ashlsi3_table
.byte L_ashlsi3_17-L_ashlsi3_table
.byte L_ashlsi3_18-L_ashlsi3_table
.byte L_ashlsi3_19-L_ashlsi3_table
.byte L_ashlsi3_20-L_ashlsi3_table
.byte L_ashlsi3_21-L_ashlsi3_table
.byte L_ashlsi3_22-L_ashlsi3_table
.byte L_ashlsi3_23-L_ashlsi3_table
.byte L_ashlsi3_24-L_ashlsi3_table
.byte L_ashlsi3_25-L_ashlsi3_table
.byte L_ashlsi3_26-L_ashlsi3_table
.byte L_ashlsi3_27-L_ashlsi3_table
.byte L_ashlsi3_28-L_ashlsi3_table
.byte L_ashlsi3_29-L_ashlsi3_table
.byte L_ashlsi3_30-L_ashlsi3_table
.byte L_ashlsi3_31-L_ashlsi3_table
.align 2
LOCAL(ashlsi3_table):
.byte LOCAL(ashlsi3_0)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_1)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_2)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_3)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_4)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_5)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_6)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_7)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_8)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_9)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_10)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_11)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_12)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_13)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_14)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_15)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_16)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_17)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_18)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_19)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_20)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_21)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_22)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_23)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_24)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_25)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_26)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_27)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_28)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_29)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_30)-LOCAL(ashlsi3_table)
.byte LOCAL(ashlsi3_31)-LOCAL(ashlsi3_table)
L_ashlsi3_6:
LOCAL(ashlsi3_6):
shll2 r0
L_ashlsi3_4:
LOCAL(ashlsi3_4):
shll2 r0
L_ashlsi3_2:
LOCAL(ashlsi3_2):
rts
shll2 r0
L_ashlsi3_7:
LOCAL(ashlsi3_7):
shll2 r0
L_ashlsi3_5:
LOCAL(ashlsi3_5):
shll2 r0
L_ashlsi3_3:
LOCAL(ashlsi3_3):
shll2 r0
L_ashlsi3_1:
LOCAL(ashlsi3_1):
rts
shll r0
L_ashlsi3_14:
LOCAL(ashlsi3_14):
shll2 r0
L_ashlsi3_12:
LOCAL(ashlsi3_12):
shll2 r0
L_ashlsi3_10:
LOCAL(ashlsi3_10):
shll2 r0
L_ashlsi3_8:
LOCAL(ashlsi3_8):
rts
shll8 r0
L_ashlsi3_15:
LOCAL(ashlsi3_15):
shll2 r0
L_ashlsi3_13:
LOCAL(ashlsi3_13):
shll2 r0
L_ashlsi3_11:
LOCAL(ashlsi3_11):
shll2 r0
L_ashlsi3_9:
LOCAL(ashlsi3_9):
shll8 r0
rts
shll r0
L_ashlsi3_22:
LOCAL(ashlsi3_22):
shll2 r0
L_ashlsi3_20:
LOCAL(ashlsi3_20):
shll2 r0
L_ashlsi3_18:
LOCAL(ashlsi3_18):
shll2 r0
L_ashlsi3_16:
LOCAL(ashlsi3_16):
rts
shll16 r0
L_ashlsi3_23:
LOCAL(ashlsi3_23):
shll2 r0
L_ashlsi3_21:
LOCAL(ashlsi3_21):
shll2 r0
L_ashlsi3_19:
LOCAL(ashlsi3_19):
shll2 r0
L_ashlsi3_17:
LOCAL(ashlsi3_17):
shll16 r0
rts
shll r0
L_ashlsi3_30:
LOCAL(ashlsi3_30):
shll2 r0
L_ashlsi3_28:
LOCAL(ashlsi3_28):
shll2 r0
L_ashlsi3_26:
LOCAL(ashlsi3_26):
shll2 r0
L_ashlsi3_24:
LOCAL(ashlsi3_24):
shll16 r0
rts
shll8 r0
L_ashlsi3_31:
LOCAL(ashlsi3_31):
shll2 r0
L_ashlsi3_29:
LOCAL(ashlsi3_29):
shll2 r0
L_ashlsi3_27:
LOCAL(ashlsi3_27):
shll2 r0
L_ashlsi3_25:
LOCAL(ashlsi3_25):
shll16 r0
shll8 r0
rts
shll r0
L_ashlsi3_32:
rts
mov #0,r0
L_ashlsi3_0:
LOCAL(ashlsi3_0):
rts
nop
@ -479,136 +493,136 @@ L_ashlsi3_0:
.align 2
___lshrsi3:
mov #31,r0
cmp/hi r0,r5
bt L_lshrsi3_32
mova L_lshrsi3_table,r0
and r0,r5
mova LOCAL(lshrsi3_table),r0
mov.b @(r0,r5),r5
add r5,r0 ! Change to braf when gas is fixed
#ifdef __sh1__
add r5,r0
jmp @r0
#else
braf r5
#endif
mov r4,r0
L_lshrsi3_table:
.byte L_lshrsi3_0-L_lshrsi3_table
.byte L_lshrsi3_1-L_lshrsi3_table
.byte L_lshrsi3_2-L_lshrsi3_table
.byte L_lshrsi3_3-L_lshrsi3_table
.byte L_lshrsi3_4-L_lshrsi3_table
.byte L_lshrsi3_5-L_lshrsi3_table
.byte L_lshrsi3_6-L_lshrsi3_table
.byte L_lshrsi3_7-L_lshrsi3_table
.byte L_lshrsi3_8-L_lshrsi3_table
.byte L_lshrsi3_9-L_lshrsi3_table
.byte L_lshrsi3_10-L_lshrsi3_table
.byte L_lshrsi3_11-L_lshrsi3_table
.byte L_lshrsi3_12-L_lshrsi3_table
.byte L_lshrsi3_13-L_lshrsi3_table
.byte L_lshrsi3_14-L_lshrsi3_table
.byte L_lshrsi3_15-L_lshrsi3_table
.byte L_lshrsi3_16-L_lshrsi3_table
.byte L_lshrsi3_17-L_lshrsi3_table
.byte L_lshrsi3_18-L_lshrsi3_table
.byte L_lshrsi3_19-L_lshrsi3_table
.byte L_lshrsi3_20-L_lshrsi3_table
.byte L_lshrsi3_21-L_lshrsi3_table
.byte L_lshrsi3_22-L_lshrsi3_table
.byte L_lshrsi3_23-L_lshrsi3_table
.byte L_lshrsi3_24-L_lshrsi3_table
.byte L_lshrsi3_25-L_lshrsi3_table
.byte L_lshrsi3_26-L_lshrsi3_table
.byte L_lshrsi3_27-L_lshrsi3_table
.byte L_lshrsi3_28-L_lshrsi3_table
.byte L_lshrsi3_29-L_lshrsi3_table
.byte L_lshrsi3_30-L_lshrsi3_table
.byte L_lshrsi3_31-L_lshrsi3_table
.align 2
LOCAL(lshrsi3_table):
.byte LOCAL(lshrsi3_0)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_1)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_2)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_3)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_4)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_5)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_6)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_7)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_8)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_9)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_10)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_11)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_12)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_13)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_14)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_15)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_16)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_17)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_18)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_19)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_20)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_21)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_22)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_23)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_24)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_25)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_26)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_27)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_28)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_29)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_30)-LOCAL(lshrsi3_table)
.byte LOCAL(lshrsi3_31)-LOCAL(lshrsi3_table)
L_lshrsi3_6:
LOCAL(lshrsi3_6):
shlr2 r0
L_lshrsi3_4:
LOCAL(lshrsi3_4):
shlr2 r0
L_lshrsi3_2:
LOCAL(lshrsi3_2):
rts
shlr2 r0
L_lshrsi3_7:
LOCAL(lshrsi3_7):
shlr2 r0
L_lshrsi3_5:
LOCAL(lshrsi3_5):
shlr2 r0
L_lshrsi3_3:
LOCAL(lshrsi3_3):
shlr2 r0
L_lshrsi3_1:
LOCAL(lshrsi3_1):
rts
shlr r0
L_lshrsi3_14:
LOCAL(lshrsi3_14):
shlr2 r0
L_lshrsi3_12:
LOCAL(lshrsi3_12):
shlr2 r0
L_lshrsi3_10:
LOCAL(lshrsi3_10):
shlr2 r0
L_lshrsi3_8:
LOCAL(lshrsi3_8):
rts
shlr8 r0
L_lshrsi3_15:
LOCAL(lshrsi3_15):
shlr2 r0
L_lshrsi3_13:
LOCAL(lshrsi3_13):
shlr2 r0
L_lshrsi3_11:
LOCAL(lshrsi3_11):
shlr2 r0
L_lshrsi3_9:
LOCAL(lshrsi3_9):
shlr8 r0
rts
shlr r0
L_lshrsi3_22:
LOCAL(lshrsi3_22):
shlr2 r0
L_lshrsi3_20:
LOCAL(lshrsi3_20):
shlr2 r0
L_lshrsi3_18:
LOCAL(lshrsi3_18):
shlr2 r0
L_lshrsi3_16:
LOCAL(lshrsi3_16):
rts
shlr16 r0
L_lshrsi3_23:
LOCAL(lshrsi3_23):
shlr2 r0
L_lshrsi3_21:
LOCAL(lshrsi3_21):
shlr2 r0
L_lshrsi3_19:
LOCAL(lshrsi3_19):
shlr2 r0
L_lshrsi3_17:
LOCAL(lshrsi3_17):
shlr16 r0
rts
shlr r0
L_lshrsi3_30:
LOCAL(lshrsi3_30):
shlr2 r0
L_lshrsi3_28:
LOCAL(lshrsi3_28):
shlr2 r0
L_lshrsi3_26:
LOCAL(lshrsi3_26):
shlr2 r0
L_lshrsi3_24:
LOCAL(lshrsi3_24):
shlr16 r0
rts
shlr8 r0
L_lshrsi3_31:
LOCAL(lshrsi3_31):
shlr2 r0
L_lshrsi3_29:
LOCAL(lshrsi3_29):
shlr2 r0
L_lshrsi3_27:
LOCAL(lshrsi3_27):
shlr2 r0
L_lshrsi3_25:
LOCAL(lshrsi3_25):
shlr16 r0
shlr8 r0
rts
shlr r0
L_lshrsi3_32:
rts
mov #0,r0
L_lshrsi3_0:
LOCAL(lshrsi3_0):
rts
nop
@ -953,3 +967,28 @@ ret: rts
mov r4,r0
#endif
#ifdef L_set_fpscr
#if defined (__SH3E__)
.global ___set_fpscr
___set_fpscr:
lds r4,fpscr
mov.l ___set_fpscr_L1,r1
swap.w r4,r0
or #24,r0
xor #16,r0
swap.w r0,r2
mov.l r2,@r1
xor #8,r0
swap.w r0,r3
rts
mov.l r3,@(4,r1)
.align 2
___set_fpscr_L1:
.long ___fpscr_values
#ifdef __ELF__
.comm ___fpscr_values,8,4
#else
.comm ___fpscr_values,8
#endif /* ELF */
#endif /* SH3E */
#endif /* L_set_fpscr */

View File

@ -1,7 +1,7 @@
CROSS_LIBGCC1 = libgcc1-asm.a
LIB1ASMSRC = sh/lib1funcs.asm
LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movstr \
_mulsi3 _sdivsi3 _udivsi3
_mulsi3 _sdivsi3 _udivsi3 _set_fpscr
# These are really part of libgcc1, but this will cause them to be
# built correctly, so...