* sysdeps/sh/sh4/dl-trampoline.S: Only set HAVE_FPU if __SH_FPU_ANY__

is set.
	* sysdeps/sh/sh4/setjmp.S: Support SH4-NOFPU.
	* sysdeps/sh/sh4/__longjmp.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sh4/getcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sh4/setcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sh4/register-dump.h: Likewise.
This commit is contained in:
Ulrich Drepper 2009-02-05 01:01:39 +00:00
parent 22cc3f7580
commit 0899b8897c
8 changed files with 50 additions and 20 deletions

View File

@ -1,3 +1,14 @@
2009-02-03 Andrew Stubbs <ams@codesourcery.com>
* sysdeps/sh/sh4/dl-trampoline.S: Only set HAVE_FPU if __SH_FPU_ANY__
is set.
* sysdeps/sh/sh4/setjmp.S: Support SH4-NOFPU.
* sysdeps/sh/sh4/__longjmp.S: Likewise.
* sysdeps/unix/sysv/linux/sh/sh4/getcontext.S: Likewise.
* sysdeps/unix/sysv/linux/sh/sh4/setcontext.S: Likewise.
* sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S: Likewise.
* sysdeps/unix/sysv/linux/sh/sh4/register-dump.h: Likewise.
2009-02-04 Ulrich Drepper <drepper@redhat.com>
* po/ru.po: Update from translation team.

View File

@ -1,5 +1,5 @@
/* longjmp for SH.
Copyright (C) 1999, 2000, 2005, 2006 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2005, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -52,6 +52,7 @@ ENTRY (__longjmp)
mov.l @r4+, r15
lds.l @r4+, pr
#endif
#ifdef __SH_FPU_ANY__
ldc.l @r4+, gbr
lds.l @r4+, fpscr
fmov.s @r4+, fr12
@ -59,4 +60,8 @@ ENTRY (__longjmp)
fmov.s @r4+, fr14
rts
fmov.s @r4+, fr15
#else
rts
ldc.l @r4+, gbr
#endif /* !__SH_FPU_ANY__ */
END (__longjmp)

View File

@ -1,2 +1,4 @@
#define HAVE_FPU
#ifdef __SH_FPU_ANY__
# define HAVE_FPU
#endif
#include <sysdeps/sh/dl-trampoline.S>

View File

@ -1,5 +1,5 @@
/* setjmp for SH4.
Copyright (C) 1999, 2000, 2005, 2006 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2005, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -23,11 +23,13 @@
ENTRY (__sigsetjmp)
/* Save registers */
add #JB_SIZE, r4
#ifdef __SH_FPU_ANY__
fmov.s fr15, @-r4
fmov.s fr14, @-r4
fmov.s fr13, @-r4
fmov.s fr12, @-r4
sts.l fpscr, @-r4
#endif /* __SH_FPU_ANY__ */
stc.l gbr, @-r4
#ifdef PTR_MANGLE
sts pr, r2

View File

@ -1,5 +1,5 @@
/* Save current context.
Copyright (C) 2005 Free Software Foundation, Inc.
Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -61,6 +61,7 @@ ENTRY(__getcontext)
mov.l r9, @-r0
mov.l r8, @-r0
#ifdef __SH_FPU_ANY__
mov r4, r0
/* We need 2 add instruction because oFPUL+4 > 127. */
add #124,r0
@ -101,6 +102,7 @@ ENTRY(__getcontext)
fmov.s fr2, @-r0
fmov.s fr1, @-r0
fmov.s fr0, @-r0
#endif /* __SH_FPU_ANY__ */
/* sigprocmask (SIG_BLOCK, NULL, &uc->uc_sigmask). */
mov r4, r6
@ -117,7 +119,7 @@ ENTRY(__getcontext)
not r1, r1 // r1=0 means r0 = -1 to -4095
tst r1, r1 // i.e. error in linux
bf .Lgetcontext_end
.Lsyscall_error:
.Lsyscall_error:
SYSCALL_ERROR_HANDLER
.Lgetcontext_end:
/* All done, return 0 for success. */

View File

@ -1,5 +1,5 @@
/* Dump registers.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -31,15 +31,15 @@ MACL: XXXXXXXX MACH: XXXXXXXX
PC: XXXXXXXX PR: XXXXXXXX GBR: XXXXXXXX SR: XXXXXXXX
FR0: XXXXXXXX FR1: XXXXXXXX FR2: XXXXXXXX FR3: XXXXXXXX
FR4: XXXXXXXX FR5: XXXXXXXX FR6: XXXXXXXX FR7: XXXXXXXX
FR8: XXXXXXXX FR9: XXXXXXXX FR10: XXXXXXXX FR11: XXXXXXXX
FR12: XXXXXXXX FR13: XXXXXXXX FR14: XXXXXXXX FR15: XXXXXXXX
FR0: XXXXXXXX FR1: XXXXXXXX FR2: XXXXXXXX FR3: XXXXXXXX
FR4: XXXXXXXX FR5: XXXXXXXX FR6: XXXXXXXX FR7: XXXXXXXX
FR8: XXXXXXXX FR9: XXXXXXXX FR10: XXXXXXXX FR11: XXXXXXXX
FR12: XXXXXXXX FR13: XXXXXXXX FR14: XXXXXXXX FR15: XXXXXXXX
XR0: XXXXXXXX XR1: XXXXXXXX XR2: XXXXXXXX XR3: XXXXXXXX
XR4: XXXXXXXX XR5: XXXXXXXX XR6: XXXXXXXX XR7: XXXXXXXX
XR8: XXXXXXXX XR9: XXXXXXXX XR10: XXXXXXXX XR11: XXXXXXXX
XR12: XXXXXXXX XR13: XXXXXXXX XR14: XXXXXXXX XR15: XXXXXXXX
XR0: XXXXXXXX XR1: XXXXXXXX XR2: XXXXXXXX XR3: XXXXXXXX
XR4: XXXXXXXX XR5: XXXXXXXX XR6: XXXXXXXX XR7: XXXXXXXX
XR8: XXXXXXXX XR9: XXXXXXXX XR10: XXXXXXXX XR11: XXXXXXXX
XR12: XXXXXXXX XR13: XXXXXXXX XR14: XXXXXXXX XR15: XXXXXXXX
FPSCR: XXXXXXXX FPUL: XXXXXXXX
@ -144,6 +144,7 @@ register_dump (int fd, struct sigcontext *ctx)
ADD_STRING ("\n");
#ifdef __SH_FPU_ANY__
if (ctx->sc_ownedfp != NULL)
{
hexvalue (ctx->sc_fpregs[0], fpregs[0], 8);
@ -253,6 +254,7 @@ register_dump (int fd, struct sigcontext *ctx)
ADD_STRING ("\n");
}
#endif /* __SH_FPU_ANY__ */
/* Write the stuff out. */
writev (fd, iov, nr);

View File

@ -1,5 +1,5 @@
/* Install given context.
Copyright (C) 2005 Free Software Foundation, Inc.
Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -43,13 +43,14 @@ ENTRY(__setcontext)
not r1, r1 // r1=0 means r0 = -1 to -4095
tst r1, r1 // i.e. error in linux
bf .Lsetcontext_restore
.Lsyscall_error:
.Lsyscall_error:
SYSCALL_ERROR_HANDLER
.Lpseudo_end:
rts
nop
.Lsetcontext_restore:
#ifdef __SH_FPU_ANY__
mov r8, r0
add #(oFR0),r0
fmov.s @r0+, fr0
@ -88,6 +89,7 @@ ENTRY(__setcontext)
frchg
lds.l @r0+, fpscr
lds.l @r0+, fpul
#endif /* __SH_FPU_ANY__ */
mov r8, r0
add #(oPC), r0

View File

@ -1,5 +1,5 @@
/* Save current context and install the given one.
Copyright (C) 2005 Free Software Foundation, Inc.
Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -61,6 +61,7 @@ ENTRY(__swapcontext)
mov.l r9, @-r0
mov.l r8, @-r0
#ifdef __SH_FPU_ANY__
mov r4, r0
/* We need 2 add instruction because oFPUL+4 >= 127. */
add #124,r0
@ -101,6 +102,7 @@ ENTRY(__swapcontext)
fmov.s fr2, @-r0
fmov.s fr1, @-r0
fmov.s fr0, @-r0
#endif /* __SH_FPU_ANY__ */
mov r5, r8
@ -119,12 +121,13 @@ ENTRY(__swapcontext)
not r1, r1 // r1=0 means r0 = -1 to -4095
tst r1, r1 // i.e. error in linux
bf .Lswapcontext_restore
.Lsyscall_error:
.Lsyscall_error:
SYSCALL_ERROR_HANDLER
.Lpseudo_end:
rts
nop
.Lswapcontext_restore:
.Lswapcontext_restore:
#ifdef __SH_FPU_ANY__
mov r8, r0
add #(oFR0),r0
fmov.s @r0+, fr0
@ -163,6 +166,7 @@ ENTRY(__swapcontext)
frchg
lds.l @r0+, fpscr
lds.l @r0+, fpul
#endif /* __SH_FPU_ANY__ */
mov r8, r0
add #(oPC), r0
@ -208,7 +212,7 @@ ENTRY(__swapcontext)
mov.l @r15+, r0
jmp @r0
mov.l @r15+, r0
PSEUDO_END(__swapcontext)
weak_alias (__swapcontext, swapcontext)