PERFORCE change 105536 for review
Oleksandr Tymoshenko
gonzo at FreeBSD.org
Sat Sep 2 15:57:36 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=105536
Change 105536 by gonzo at gonzo_hideout on 2006/09/02 15:57:32
o Add stubs for (sigi|_)?(set|long)jmp functions.
o Add stubs for context handling routines.
Affected files ...
.. //depot/projects/mips2/src/lib/libc/mips/gen/longjmp.c#2 edit
.. //depot/projects/mips2/src/lib/libc/mips/gen/makecontext.c#2 edit
.. //depot/projects/mips2/src/lib/libc/mips/gen/setjmp.S#2 edit
.. //depot/projects/mips2/src/lib/libc/mips/gen/signalcontext.c#1 add
.. //depot/projects/mips2/src/lib/libc/mips/gen/sigsetjmp.S#2 edit
Differences ...
==== //depot/projects/mips2/src/lib/libc/mips/gen/longjmp.c#2 (text+ko) ====
@@ -45,10 +45,6 @@
#include <machine/regnum.h>
-#define __LIBC12_SOURCE__
-#include <setjmp.h>
-#include <compat/include/setjmp.h>
-
void
__longjmp14(jmp_buf env, int val)
{
==== //depot/projects/mips2/src/lib/libc/mips/gen/makecontext.c#2 (text+ko) ====
@@ -44,13 +44,14 @@
#include <inttypes.h>
#include <stddef.h>
#include <ucontext.h>
-#include "extern.h"
#include <stdarg.h>
void
makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
{
+ /* XXXMIPS: Implement me */
+#if 0
__greg_t *gr = ucp->uc_mcontext.__gregs;
uintptr_t *sp;
int i;
@@ -82,4 +83,5 @@
/* LINTED uintptr_t is safe */
*sp++ = va_arg(ap, uintptr_t);
va_end(ap);
+#endif
}
==== //depot/projects/mips2/src/lib/libc/mips/gen/setjmp.S#2 (text+ko) ====
@@ -32,12 +32,8 @@
* SUCH DAMAGE.
*/
-#include <machine/cdefs.h>
-#include <sys/syscall.h>
-#include <mips/regnum.h>
-#include <mips/asm.h>
-#include <machine/signal.h>
-#include <machine/setjmp.h>
+#include <machine/regnum.h>
+#include <machine/asm.h>
#if defined(LIBC_SCCS) && !defined(lint)
ASMSTR("from: @(#)setjmp.s 8.1 (Berkeley) 6/4/93")
@@ -61,7 +57,7 @@
#define SETJMP_FRAME_SIZE (CALLFRAME_SIZ + 12)
-NON_LEAF(__setjmp14, SETJMP_FRAME_SIZE, ra)
+NESTED(setjmp, SETJMP_FRAME_SIZE, ra)
.mask 0x80000000, (CALLFRAME_RA - CALLFRAME_SIZ)
#ifdef __ABICALLS__
.set noreorder
@@ -78,13 +74,13 @@
/* Get the signal mask. */
addu a2, a0, _OFFSETOF_SC_MASK # &sc.sc_mask
move a1, zero
- jal _C_LABEL(__sigprocmask14) # get current signal mask
+ # XXXMIPS: jal _C_LABEL(__sigprocmask14) # get current signal mask
move a0, zero # (in delay slot)
/* Get the signal stack. */
move a0, zero
addu a1, sp, CALLFRAME_SIZ # pointer to struct sigaltstack
- jal _C_LABEL(__sigaltstack14)
+ # XXXMIPS: jal _C_LABEL(__sigaltstack14)
nop
lw v1, CALLFRAME_SIZ+8(sp) # get old ss_onstack
lw a0, SETJMP_FRAME_SIZE(sp) # restore sc pointer
@@ -99,18 +95,18 @@
REG_PROLOGUE
REG_S ra, (2 * 4)(a0) # sc_pc = return address
REG_LI v0, 0xACEDBADE # sigcontext magic number
- REG_S v0, (_OFFSETOF_SC_REGS + _R_ZERO * SZREG)(a0) # saved in sc_regs[0]
- REG_S s0, (_OFFSETOF_SC_REGS + _R_S0 * SZREG)(a0)
- REG_S s1, (_OFFSETOF_SC_REGS + _R_S1 * SZREG)(a0)
- REG_S s2, (_OFFSETOF_SC_REGS + _R_S2 * SZREG)(a0)
- REG_S s3, (_OFFSETOF_SC_REGS + _R_S3 * SZREG)(a0)
- REG_S s4, (_OFFSETOF_SC_REGS + _R_S4 * SZREG)(a0)
- REG_S s5, (_OFFSETOF_SC_REGS + _R_S5 * SZREG)(a0)
- REG_S s6, (_OFFSETOF_SC_REGS + _R_S6 * SZREG)(a0)
- REG_S s7, (_OFFSETOF_SC_REGS + _R_S7 * SZREG)(a0)
- REG_S gp, (_OFFSETOF_SC_REGS + _R_GP * SZREG)(a0)
- REG_S sp, (_OFFSETOF_SC_REGS + _R_SP * SZREG)(a0)
- REG_S s8, (_OFFSETOF_SC_REGS + _R_S8 * SZREG)(a0)
+ REG_S v0, (_OFFSETOF_SC_REGS + ZERO * SZREG)(a0) # saved in sc_regs[0]
+ REG_S s0, (_OFFSETOF_SC_REGS + S0 * SZREG)(a0)
+ REG_S s1, (_OFFSETOF_SC_REGS + S1 * SZREG)(a0)
+ REG_S s2, (_OFFSETOF_SC_REGS + S2 * SZREG)(a0)
+ REG_S s3, (_OFFSETOF_SC_REGS + S3 * SZREG)(a0)
+ REG_S s4, (_OFFSETOF_SC_REGS + S4 * SZREG)(a0)
+ REG_S s5, (_OFFSETOF_SC_REGS + S5 * SZREG)(a0)
+ REG_S s6, (_OFFSETOF_SC_REGS + S6 * SZREG)(a0)
+ REG_S s7, (_OFFSETOF_SC_REGS + S7 * SZREG)(a0)
+ REG_S gp, (_OFFSETOF_SC_REGS + GP * SZREG)(a0)
+ REG_S sp, (_OFFSETOF_SC_REGS + SP * SZREG)(a0)
+ REG_S s8, (_OFFSETOF_SC_REGS + S8 * SZREG)(a0)
li v0, 1 # be nice if we could tell
sw v0, (_OFFSETOF_SC_REGS + 34 * SZREG)(a0) # sc_fpused = 1
cfc1 v0, $31
@@ -132,4 +128,9 @@
REG_EPILOGUE
botch:
jal _C_LABEL(abort)
-END(__setjmp14)
+END(setjmp)
+
+WEAK_ALIAS(longjmp, __longjmp)
+LEAF(__longjmp)
+ j ra
+END(__longjmp)
==== //depot/projects/mips2/src/lib/libc/mips/gen/sigsetjmp.S#2 (text+ko) ====
@@ -32,10 +32,8 @@
* SUCH DAMAGE.
*/
-#include <sys/syscall.h>
-#include <mips/regnum.h>
-#include <mips/asm.h>
-#include <machine/setjmp.h>
+#include <machine/regnum.h>
+#include <machine/asm.h>
#if defined(LIBC_SCCS) && !defined(lint)
ASMSTR("from: @(#)setjmp.s 8.1 (Berkeley) 6/4/93")
@@ -58,31 +56,33 @@
* signal mask.
*/
-LEAF(__sigsetjmp14)
+LEAF(sigsetjmp)
#ifdef __ABICALLS__
.set noreorder
.cpload t9
.set reorder
#endif
- sw a1, (_JBLEN*4)(a0) # save "savemask"
- bne a1, 0x0, 1f # do saving of signal mask?
+ WEAK_ALIAS(__sigsetjmp, sigsetjmp)
+ # XXXMIPS: sw a1, (_JBLEN*4)(a0) # save "savemask"
+ # XXXMIPS: bne a1, 0x0, 1f # do saving of signal mask?
la t9, _setjmp
jr t9
-1: la t9, __setjmp14
+1: la t9, setjmp
jr t9
-END(__sigsetjmp14)
+END(sigsetjmp)
-LEAF(__siglongjmp14)
+LEAF(siglongjmp)
#ifdef __ABICALLS__
.set noreorder
.cpload t9
.set reorder
#endif
- lw t0, (_JBLEN * 4)(a0) # get "savemask"
- bne t0, 0x0, 1f # restore signal mask?
+ WEAK_ALIAS(__siglongjmp, siglongjmp)
+ # XXXMIPS: lw t0, (_JBLEN * 4)(a0) # get "savemask"
+ # XXXMIPS: bne t0, 0x0, 1f # restore signal mask?
la t9, _longjmp
jr t9
-1: la t9, __longjmp14
+1: la t9, __longjmp
jr t9
-END(__siglongjmp14)
+END(siglongjmp)
More information about the p4-projects
mailing list