diff options
author | gerv%gerv.net <devnull@localhost> | 2006-03-28 20:52:14 +0000 |
---|---|---|
committer | gerv%gerv.net <devnull@localhost> | 2006-03-28 20:52:14 +0000 |
commit | e710289429ce5e9522ab4ce799e5c0defe4e0c7a (patch) | |
tree | 02e6f34803157374b4a57992ada1ea013f08ef35 | |
parent | 6216e3d4e62a55e39766c6c50724f57d8a0c4a9d (diff) | |
download | nspr-hg-e710289429ce5e9522ab4ce799e5c0defe4e0c7a.tar.gz |
Bug 331600 - remove non-tri-licensed code patch, originally from bug 61746. r=rrelyea.
-rw-r--r-- | pr/include/md/_netbsd.h | 116 |
1 files changed, 28 insertions, 88 deletions
diff --git a/pr/include/md/_netbsd.h b/pr/include/md/_netbsd.h index cc16f105..4b48b484 100644 --- a/pr/include/md/_netbsd.h +++ b/pr/include/md/_netbsd.h @@ -104,100 +104,40 @@ #define CONTEXT(_th) ((_th)->md.context) +#if defined(__i386__) || defined(__sparc__) || defined(__m68k__) || defined(__powerpc__) +#define JB_SP_INDEX 2 +#elif defined(__mips__) +#define JB_SP_INDEX 4 +#elif defined(__alpha__) +#define JB_SP_INDEX 34 +#elif defined(__arm32__) /* -** Initialize a thread context to run "_main()" when started -*/ -#ifdef __i386__ -#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ -{ \ - sigsetjmp(CONTEXT(_thread), 1); \ - CONTEXT(_thread)[2] = (unsigned char*) ((_sp) - 128); \ - CONTEXT(_thread)[0] = (int) _main; \ - *status = PR_TRUE; \ -} -#define _MD_GET_SP(_thread) CONTEXT(_thread)[2] -#endif -#ifdef __sparc_v9__ -#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ -{ \ - sigsetjmp(CONTEXT(_thread), 1); \ - CONTEXT(_thread)[1] = (unsigned char*) ((_sp) - 176 - 0x7ff); \ - CONTEXT(_thread)[2] = (long) _main; \ - CONTEXT(_thread)[3] = (long) _main + 4; \ - *status = PR_TRUE; \ -} -#define _MD_GET_SP(_thread) (CONTEXT(_thread)[2]+0x7ff) -#elif defined(__sparc__) -#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ -{ \ - sigsetjmp(CONTEXT(_thread), 1); \ - CONTEXT(_thread)[2] = (unsigned char*) ((_sp) - 128); \ - CONTEXT(_thread)[3] = (int) _main; \ - CONTEXT(_thread)[4] = (int) _main + 4; \ - *status = PR_TRUE; \ -} -#define _MD_GET_SP(_thread) CONTEXT(_thread)[2] -#endif -#ifdef __powerpc__ -#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ -{ \ - sigsetjmp(CONTEXT(_thread), 1); \ - CONTEXT(_thread)[3] = (unsigned char*) ((_sp) - 128); \ - CONTEXT(_thread)[4] = (int) _main; \ - *status = PR_TRUE; \ -} -#define _MD_GET_SP(_thread) CONTEXT(_thread)[3] -#endif -#ifdef __m68k__ -#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ -{ \ - sigsetjmp(CONTEXT(_thread), 1); \ - CONTEXT(_thread)[2] = (unsigned char*) ((_sp) - 128); \ - CONTEXT(_thread)[5] = (int) _main; \ - *status = PR_TRUE; \ -} -#define _MD_GET_SP(_thread) CONTEXT(_thread)[2] -#endif -#ifdef __mips__ -#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ -{ \ - sigsetjmp(CONTEXT(_thread), 1); \ - CONTEXT(_thread)[32] = (unsigned char*) ((_sp) - 128); \ - CONTEXT(_thread)[2] = (int) _main; \ - CONTEXT(_thread)[28] = (int) _main; \ - *status = PR_TRUE; \ -} -#define _MD_GET_SP(_thread) CONTEXT(_thread)[32] -#endif -#if defined(__arm32__) || defined(__arm__) || defined(__armel__) \ - || defined(__armeb__) -#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ -{ \ - sigsetjmp(CONTEXT(_thread), 1); \ - CONTEXT(_thread)[23] = (unsigned char*) ((_sp) - 128); \ - CONTEXT(_thread)[24] = (int) _main; \ - *status = PR_TRUE; \ -} -#define _MD_GET_SP(_thread) CONTEXT(_thread)[23] -#endif -#ifdef __alpha__ -#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ -{ \ - sigsetjmp(CONTEXT(_thread), 1); \ - CONTEXT(_thread)[34] = (unsigned char*) ((_sp) - 128); \ - CONTEXT(_thread)[2] = (long) _main; \ - CONTEXT(_thread)[30] = (long) _main; \ - CONTEXT(_thread)[31] = (long) _main; \ - *status = PR_TRUE; \ -} -#define _MD_GET_SP(_thread) CONTEXT(_thread)[34] + * On the arm32, the jmpbuf regs underwent a name change after NetBSD 1.3. + */ +#ifdef JMPBUF_REG_R13 +#define JB_SP_INDEX JMPBUF_REG_R13 +#else +#define JB_SP_INDEX _JB_REG_R13 #endif -#ifndef _MD_INIT_CONTEXT -#error "Need to define _MD_INIT_CONTEXT for this platform" +#else +#error "Need to define SP index in jmp_buf here" #endif +#define _MD_GET_SP(_th) (_th)->md.context[JB_SP_INDEX] #define PR_NUM_GCREGS _JBLEN +/* +** Initialize a thread context to run "_main()" when started +*/ +#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \ +{ \ + *status = PR_TRUE; \ + if (sigsetjmp(CONTEXT(_thread), 1)) { \ + _main(); \ + } \ + _MD_GET_SP(_thread) = (unsigned char*) ((_sp) - 64); \ +} + #define _MD_SWITCH_CONTEXT(_thread) \ if (!sigsetjmp(CONTEXT(_thread), 1)) { \ (_thread)->md.errcode = errno; \ |