Module Name: src Committed By: ad Date: Sat May 16 22:20:42 UTC 2009
Modified Files: src/lib/libpthread/arch/alpha: pthread_md.h src/lib/libpthread/arch/arm: pthread_md.h src/lib/libpthread/arch/hppa: pthread_md.h src/lib/libpthread/arch/i386: pthread_md.h src/lib/libpthread/arch/m68k: pthread_md.h src/lib/libpthread/arch/mips: pthread_md.h src/lib/libpthread/arch/powerpc: pthread_md.h src/lib/libpthread/arch/powerpc64: pthread_md.h src/lib/libpthread/arch/sh3: pthread_md.h src/lib/libpthread/arch/sparc: pthread_md.h src/lib/libpthread/arch/sparc64: pthread_md.h src/lib/libpthread/arch/vax: pthread_md.h Added Files: src/lib/libpthread/arch/hppa: pthread_md.S Removed Files: src/lib/libpthread/arch/alpha: _context_u.S genassym.cf src/lib/libpthread/arch/arm: _context_u.S genassym.cf src/lib/libpthread/arch/hppa: _context_u.S genassym.cf src/lib/libpthread/arch/i386: _context_u.S _getsetc.S genassym.cf pthread_md.c src/lib/libpthread/arch/m68k: _context_u.S genassym.cf src/lib/libpthread/arch/mips: SYS.h _context_u.S genassym.cf src/lib/libpthread/arch/powerpc: _context_u.S genassym.cf src/lib/libpthread/arch/powerpc64: _context_u.S genassym.cf src/lib/libpthread/arch/sh3: _context_u.S genassym.cf src/lib/libpthread/arch/sparc: _context_u.S genassym.cf src/lib/libpthread/arch/sparc64: _context_u.S genassym.cf src/lib/libpthread/arch/vax: _context_u.S genassym.cf Log Message: Remove unused code that's confusing when using cscope/opengrok. To generate a diff of this commit: cvs rdiff -u -r1.4 -r0 src/lib/libpthread/arch/alpha/_context_u.S cvs rdiff -u -r1.7 -r0 src/lib/libpthread/arch/alpha/genassym.cf cvs rdiff -u -r1.5 -r1.6 src/lib/libpthread/arch/alpha/pthread_md.h cvs rdiff -u -r1.4 -r0 src/lib/libpthread/arch/arm/_context_u.S cvs rdiff -u -r1.7 -r0 src/lib/libpthread/arch/arm/genassym.cf cvs rdiff -u -r1.4 -r1.5 src/lib/libpthread/arch/arm/pthread_md.h cvs rdiff -u -r1.4 -r0 src/lib/libpthread/arch/hppa/_context_u.S cvs rdiff -u -r1.3 -r0 src/lib/libpthread/arch/hppa/genassym.cf cvs rdiff -u -r0 -r1.1 src/lib/libpthread/arch/hppa/pthread_md.S cvs rdiff -u -r1.6 -r1.7 src/lib/libpthread/arch/hppa/pthread_md.h cvs rdiff -u -r1.9 -r0 src/lib/libpthread/arch/i386/_context_u.S cvs rdiff -u -r1.8 -r0 src/lib/libpthread/arch/i386/_getsetc.S cvs rdiff -u -r1.7 -r0 src/lib/libpthread/arch/i386/genassym.cf cvs rdiff -u -r1.6 -r0 src/lib/libpthread/arch/i386/pthread_md.c cvs rdiff -u -r1.16 -r1.17 src/lib/libpthread/arch/i386/pthread_md.h cvs rdiff -u -r1.5 -r0 src/lib/libpthread/arch/m68k/_context_u.S cvs rdiff -u -r1.7 -r0 src/lib/libpthread/arch/m68k/genassym.cf cvs rdiff -u -r1.6 -r1.7 src/lib/libpthread/arch/m68k/pthread_md.h cvs rdiff -u -r1.3 -r0 src/lib/libpthread/arch/mips/SYS.h \ src/lib/libpthread/arch/mips/_context_u.S cvs rdiff -u -r1.7 -r0 src/lib/libpthread/arch/mips/genassym.cf cvs rdiff -u -r1.7 -r1.8 src/lib/libpthread/arch/mips/pthread_md.h cvs rdiff -u -r1.5 -r0 src/lib/libpthread/arch/powerpc/_context_u.S cvs rdiff -u -r1.7 -r0 src/lib/libpthread/arch/powerpc/genassym.cf cvs rdiff -u -r1.5 -r1.6 src/lib/libpthread/arch/powerpc/pthread_md.h cvs rdiff -u -r1.1 -r0 src/lib/libpthread/arch/powerpc64/_context_u.S cvs rdiff -u -r1.2 -r0 src/lib/libpthread/arch/powerpc64/genassym.cf cvs rdiff -u -r1.1 -r1.2 src/lib/libpthread/arch/powerpc64/pthread_md.h cvs rdiff -u -r1.6 -r0 src/lib/libpthread/arch/sh3/_context_u.S cvs rdiff -u -r1.8 -r0 src/lib/libpthread/arch/sh3/genassym.cf cvs rdiff -u -r1.6 -r1.7 src/lib/libpthread/arch/sh3/pthread_md.h cvs rdiff -u -r1.3 -r0 src/lib/libpthread/arch/sparc/_context_u.S cvs rdiff -u -r1.8 -r0 src/lib/libpthread/arch/sparc/genassym.cf cvs rdiff -u -r1.6 -r1.7 src/lib/libpthread/arch/sparc/pthread_md.h cvs rdiff -u -r1.3 -r0 src/lib/libpthread/arch/sparc64/_context_u.S cvs rdiff -u -r1.8 -r0 src/lib/libpthread/arch/sparc64/genassym.cf cvs rdiff -u -r1.5 -r1.6 src/lib/libpthread/arch/sparc64/pthread_md.h cvs rdiff -u -r1.4 -r0 src/lib/libpthread/arch/vax/_context_u.S cvs rdiff -u -r1.8 -r0 src/lib/libpthread/arch/vax/genassym.cf cvs rdiff -u -r1.6 -r1.7 src/lib/libpthread/arch/vax/pthread_md.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libpthread/arch/alpha/pthread_md.h diff -u src/lib/libpthread/arch/alpha/pthread_md.h:1.5 src/lib/libpthread/arch/alpha/pthread_md.h:1.6 --- src/lib/libpthread/arch/alpha/pthread_md.h:1.5 Mon Apr 28 20:23:02 2008 +++ src/lib/libpthread/arch/alpha/pthread_md.h Sat May 16 22:20:40 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.5 2008/04/28 20:23:02 martin Exp $ */ +/* $NetBSD: pthread_md.h,v 1.6 2009/05/16 22:20:40 ad Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -45,7 +45,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_SP]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_PC]) /* * Set initial, sane values for registers whose values aren't just @@ -54,33 +53,5 @@ */ #define _INITCONTEXT_U_MD(ucp) \ (ucp)->uc_mcontext.__gregs[_REG_PS] = 0x0008; -#define STACKSPACE 32 /* 4 quad values */ -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - memcpy(&(reg)->r_regs, &(uc)->uc_mcontext.__gregs, \ - 31 * sizeof(__greg_t)); \ - (reg)->r_regs[R_ZERO] = (uc)->uc_mcontext.__gregs[_REG_PC]; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - memcpy(&(uc)->uc_mcontext.__gregs, &(reg)->r_regs, \ - 31 * sizeof(__greg_t)); \ - (uc)->uc_mcontext.__gregs[_REG_PC] = (reg)->r_regs[R_ZERO]; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) \ - memcpy((freg), &(uc)->uc_mcontext.__fpregs, \ - sizeof(struct fpreg)) \ - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) do { \ - memcpy(&(uc)->uc_mcontext.__fpregs, (freg), \ - sizeof(struct fpreg)); \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) #endif /* _LIB_PTHREAD_ALPHA_MD_H */ Index: src/lib/libpthread/arch/arm/pthread_md.h diff -u src/lib/libpthread/arch/arm/pthread_md.h:1.4 src/lib/libpthread/arch/arm/pthread_md.h:1.5 --- src/lib/libpthread/arch/arm/pthread_md.h:1.4 Sat Dec 24 21:11:16 2005 +++ src/lib/libpthread/arch/arm/pthread_md.h Sat May 16 22:20:40 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.4 2005/12/24 21:11:16 perry Exp $ */ +/* $NetBSD: pthread_md.h,v 1.5 2009/05/16 22:20:40 ad Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -50,7 +50,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_SP]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_PC]) /* * Set initial, sane values for registers whose values aren't just @@ -67,72 +66,4 @@ (ucp)->uc_mcontext.__gregs[_REG_CPSR] = 0x10; #endif -/* - * Usable stack space below the ucontext_t. - * For a good time, see comments in pthread_switch.S and - * ../i386/pthread_switch.S about STACK_SWITCH. - */ -#define STACKSPACE (6 * sizeof(long)) - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ - -#define PTHREAD_ARM_UCONTEXT_TO_REG(reg, uc) \ -do { \ - int _reg_; \ - \ - for (_reg_ = 0; _reg_ <= 12; _reg_++) \ - (reg)->r[_reg_] = \ - (uc)->uc_mcontext.__gregs[_REG_R0 + _reg_]; \ - (reg)->r_sp = (uc)->uc_mcontext.__gregs[_REG_SP]; \ - (reg)->r_lr = (uc)->uc_mcontext.__gregs[_REG_LR]; \ - (reg)->r_pc = (uc)->uc_mcontext.__gregs[_REG_PC]; \ - (reg)->r_cpsr = (uc)->uc_mcontext.__gregs[_REG_CPSR]; \ -} while (/*CONSTCOND*/0) - -#ifdef __APCS_26__ -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) PTHREAD_ARM_UCONTEXT_TO_REG((reg), (uc)) -#else -/* Need to signal in the CPSR that this is 32-bit ARM */ -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) \ -do { \ - PTHREAD_ARM_UCONTEXT_TO_REG((reg), (uc)); \ - if ((uc)->uc_flags & _UC_USER) \ - (reg)->r_cpsr = 0x10; \ -} while (/*CONSTCOND*/0) -#endif - - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) \ -do { \ - int _reg_; \ - \ - for (_reg_ = 0; _reg_ <= 12; _reg_++) \ - (uc)->uc_mcontext.__gregs[_REG_R0 + _reg_] = \ - (reg)->r[_reg_]; \ - (uc)->uc_mcontext.__gregs[_REG_SP] = (reg)->r_sp; \ - (uc)->uc_mcontext.__gregs[_REG_LR] = (reg)->r_lr; \ - (uc)->uc_mcontext.__gregs[_REG_PC] = (reg)->r_pc; \ - (uc)->uc_mcontext.__gregs[_REG_CPSR] = (reg)->r_cpsr; \ -} while (/*CONSTCOND*/0) - -/* - * XXX Need to deal with VFP. - */ -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) \ -do { \ - (freg)->fpr_fpsr = (uc)->uc_mcontext.__fpu.__fpregs.__fp_fpsr; \ - memcpy((freg)->fpr, (uc)->uc_mcontext.__fpu.__fpregs.__fp_fr, \ - sizeof((freg)->fpr)); \ -} while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) \ -do { \ - (uc)->uc_mcontext.__fpu.__fpregs.__fp_fpsr = (freg)->fpr_fpsr; \ - memcpy((uc)->uc_mcontext.__fpu.__fpregs.__fp_fr, (freg)->fpr, \ - sizeof((uc)->uc_mcontext.__fpu.__fpregs.__fp_fr)); \ -} while (/*CONSTCOND*/0) - #endif /* _LIB_PTHREAD_ARM_MD_H */ Index: src/lib/libpthread/arch/hppa/pthread_md.h diff -u src/lib/libpthread/arch/hppa/pthread_md.h:1.6 src/lib/libpthread/arch/hppa/pthread_md.h:1.7 --- src/lib/libpthread/arch/hppa/pthread_md.h:1.6 Mon Apr 28 20:23:02 2008 +++ src/lib/libpthread/arch/hppa/pthread_md.h Sat May 16 22:20:40 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.6 2008/04/28 20:23:02 martin Exp $ */ +/* $NetBSD: pthread_md.h,v 1.7 2009/05/16 22:20:40 ad Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -45,7 +45,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_SP]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_PCOQH]) /* * Set initial, sane values for registers whose values aren't just @@ -59,38 +58,6 @@ */ #define STACKSPACE (HPPA_FRAME_SIZE) -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ -#include <hppa/reg.h> - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) \ -do { \ - memcpy(&(reg)->r_regs, &(uc)->uc_mcontext.__gregs, \ - sizeof(__greg_t) * 32); \ -} while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) \ -do { \ - memcpy(&(uc)->uc_mcontext.__gregs, &(reg)->r_regs, \ - sizeof(__greg_t) * 32); \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ -} while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) \ -do { \ - memcpy((freg), &(uc)->uc_mcontext.__fpregs, \ - sizeof(struct fpreg)); \ -} while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) \ -do { \ - memcpy(&(uc)->uc_mcontext.__fpregs, (freg), \ - sizeof(struct fpreg)); \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ -} while (/*CONSTCOND*/0) - /* Don't need additional memory barriers. */ #define PTHREAD__ATOMIC_IS_MEMBAR Index: src/lib/libpthread/arch/i386/pthread_md.h diff -u src/lib/libpthread/arch/i386/pthread_md.h:1.16 src/lib/libpthread/arch/i386/pthread_md.h:1.17 --- src/lib/libpthread/arch/i386/pthread_md.h:1.16 Sun Mar 29 09:30:05 2009 +++ src/lib/libpthread/arch/i386/pthread_md.h Sat May 16 22:20:40 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.16 2009/03/29 09:30:05 ad Exp $ */ +/* $NetBSD: pthread_md.h,v 1.17 2009/05/16 22:20:40 ad Exp $ */ /*- * Copyright (c) 2001, 2007, 2008 The NetBSD Foundation, Inc. @@ -35,25 +35,6 @@ #include <sys/ucontext.h> #include <ucontext.h> -extern int (*_md_getcontext_u)(ucontext_t *); -extern int (*_md_setcontext_u)(const ucontext_t *); -extern int (*_md_swapcontext_u)(ucontext_t *, const ucontext_t *); - -#define _getcontext_u(uc) (*_md_getcontext_u)((uc)) -#define _setcontext_u(uc) (*_md_setcontext_u)((uc)) -#define _swapcontext_u(ouc, nuc) (*_md_swapcontext_u)((ouc), (nuc)) - -int _getcontext_u_s87(ucontext_t *); -int _setcontext_u_s87(const ucontext_t *); -int _swapcontext_u_s87(ucontext_t *, const ucontext_t *); -int _getcontext_u_xmm(ucontext_t *); -int _setcontext_u_xmm(const ucontext_t *); -int _swapcontext_u_xmm(ucontext_t *, const ucontext_t *); - -void pthread__i386_init(void); - -#define PTHREAD_MD_INIT pthread__i386_init(); - static inline long pthread__sp(void) { @@ -64,7 +45,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_UESP]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_EIP]) /* * Set initial, sane values for registers whose values aren't just @@ -94,86 +74,6 @@ ucur.uc_mcontext.__gregs[_REG_EFL]; \ } while (/*CONSTCOND*/0); -/* - * Usable stack space below the ucontext_t. - * See comment in pthread_switch.S about STACK_SWITCH. - */ -#define STACKSPACE 32 /* room for 8 integer values */ - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - (reg)->r_gs = (uc)->uc_mcontext.__gregs[_REG_GS]; \ - (reg)->r_fs = (uc)->uc_mcontext.__gregs[_REG_FS]; \ - (reg)->r_es = (uc)->uc_mcontext.__gregs[_REG_ES]; \ - (reg)->r_ds = (uc)->uc_mcontext.__gregs[_REG_DS]; \ - (reg)->r_edi = (uc)->uc_mcontext.__gregs[_REG_EDI]; \ - (reg)->r_esi = (uc)->uc_mcontext.__gregs[_REG_ESI]; \ - (reg)->r_ebp = (uc)->uc_mcontext.__gregs[_REG_EBP]; \ - (reg)->r_ebx = (uc)->uc_mcontext.__gregs[_REG_EBX]; \ - (reg)->r_edx = (uc)->uc_mcontext.__gregs[_REG_EDX]; \ - (reg)->r_ecx = (uc)->uc_mcontext.__gregs[_REG_ECX]; \ - (reg)->r_eax = (uc)->uc_mcontext.__gregs[_REG_EAX]; \ - (reg)->r_eip = (uc)->uc_mcontext.__gregs[_REG_EIP]; \ - (reg)->r_cs = (uc)->uc_mcontext.__gregs[_REG_CS]; \ - (reg)->r_eflags = (uc)->uc_mcontext.__gregs[_REG_EFL]; \ - (reg)->r_esp = (uc)->uc_mcontext.__gregs[_REG_UESP]; \ - (reg)->r_ss = (uc)->uc_mcontext.__gregs[_REG_SS]; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - (uc)->uc_mcontext.__gregs[_REG_GS] = (reg)->r_gs; \ - (uc)->uc_mcontext.__gregs[_REG_FS] = (reg)->r_fs; \ - (uc)->uc_mcontext.__gregs[_REG_ES] = (reg)->r_es; \ - (uc)->uc_mcontext.__gregs[_REG_DS] = (reg)->r_ds; \ - (uc)->uc_mcontext.__gregs[_REG_EDI] = (reg)->r_edi; \ - (uc)->uc_mcontext.__gregs[_REG_ESI] = (reg)->r_esi; \ - (uc)->uc_mcontext.__gregs[_REG_EBP] = (reg)->r_ebp; \ - (uc)->uc_mcontext.__gregs[_REG_EBX] = (reg)->r_ebx; \ - (uc)->uc_mcontext.__gregs[_REG_EDX] = (reg)->r_edx; \ - (uc)->uc_mcontext.__gregs[_REG_ECX] = (reg)->r_ecx; \ - (uc)->uc_mcontext.__gregs[_REG_EAX] = (reg)->r_eax; \ - (uc)->uc_mcontext.__gregs[_REG_EIP] = (reg)->r_eip; \ - (uc)->uc_mcontext.__gregs[_REG_CS] = (reg)->r_cs; \ - (uc)->uc_mcontext.__gregs[_REG_EFL] = (reg)->r_eflags; \ - (uc)->uc_mcontext.__gregs[_REG_UESP]= (reg)->r_esp; \ - (uc)->uc_mcontext.__gregs[_REG_SS] = (reg)->r_ss; \ - /*LINTED precision loss */ \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) \ - (void)memcpy((freg)->__data, \ - (uc)->uc_mcontext.__fpregs.__fp_reg_set.__fpchip_state.__fp_state, \ - sizeof(struct fpreg)) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) do { \ - (void)memcpy( \ - (uc)->uc_mcontext.__fpregs.__fp_reg_set.__fpchip_state.__fp_state, \ - (freg)->__data, sizeof(struct fpreg)); \ - /*LINTED precision loss */ \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_XREG_FLAG _UC_FXSAVE - -#define PTHREAD_UCONTEXT_TO_XREG(xreg, uc) \ - (void)memcpy((xreg), \ - (uc)->uc_mcontext.__fpregs.__fp_reg_set.__fp_xmm_state.__fp_xmm, \ - sizeof(struct xmmregs)) - -#define PTHREAD_XREG_TO_UCONTEXT(uc, xreg) do { \ - (void)memcpy( \ - (uc)->uc_mcontext.__fpregs.__fp_reg_set.__fp_xmm_state.__fp_xmm, \ - (xreg), \ - sizeof(struct xmmregs)); \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FXSAVE) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - #define pthread__smt_pause() __asm __volatile("rep; nop" ::: "memory") /* #define PTHREAD__HAVE_THREADREG */ Index: src/lib/libpthread/arch/m68k/pthread_md.h diff -u src/lib/libpthread/arch/m68k/pthread_md.h:1.6 src/lib/libpthread/arch/m68k/pthread_md.h:1.7 --- src/lib/libpthread/arch/m68k/pthread_md.h:1.6 Mon Apr 28 20:23:02 2008 +++ src/lib/libpthread/arch/m68k/pthread_md.h Sat May 16 22:20:41 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.6 2008/04/28 20:23:02 martin Exp $ */ +/* $NetBSD: pthread_md.h,v 1.7 2009/05/16 22:20:41 ad Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -29,14 +29,9 @@ * POSSIBILITY OF SUCH DAMAGE. */ -/* - * Based on the i386 version. - */ - #ifndef _LIB_PTHREAD_M68K_MD_H #define _LIB_PTHREAD_M68K_MD_H - static inline long pthread__sp(void) { @@ -47,50 +42,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_A7]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_PC]) - -/* - * Usable stack space below the ucontext_t. - * See comment in pthread_switch.S about STACK_SWITCH. - */ -#define STACKSPACE 12 /* room for 3 integer values */ - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - memcpy(&(reg)->r_regs, &(uc)->uc_mcontext.__gregs, \ - _REG_PC * sizeof(__greg_t)); \ - (reg)->r_sr = (uc)->uc_mcontext.__gregs[_REG_PS]; \ - (reg)->r_pc = (uc)->uc_mcontext.__gregs[_REG_PC]; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - memcpy(&(uc)->uc_mcontext.__gregs, &(reg)->r_regs, \ - _REG_PC * sizeof(__greg_t)); \ - (uc)->uc_mcontext.__gregs[_REG_PS] = (reg)->r_sr; \ - (uc)->uc_mcontext.__gregs[_REG_PC] = (reg)->r_pc; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) do { \ - memcpy(&(freg)->r_regs, &(uc)->uc_mcontext.__fpregs.__fp_fpregs,\ - 8 * 3 * sizeof(int)); \ - (freg)->r_fpcr = (uc)->uc_mcontext.__fpregs.__fp_pcr; \ - (freg)->r_fpsr = (uc)->uc_mcontext.__fpregs.__fp_psr; \ - (freg)->r_fpiar = (uc)->uc_mcontext.__fpregs.__fp_piaddr; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) do { \ - memcpy(&(uc)->uc_mcontext.__fpregs.__fp_fpregs, &(freg)->r_regs,\ - 8 * 3 * sizeof(int)); \ - (uc)->uc_mcontext.__fpregs.__fp_pcr = (freg)->r_fpcr; \ - (uc)->uc_mcontext.__fpregs.__fp_psr = (freg)->r_fpsr; \ - (uc)->uc_mcontext.__fpregs.__fp_piaddr = (freg)->r_fpiar; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) /* m68k will not go SMP */ #define PTHREAD__ATOMIC_IS_MEMBAR Index: src/lib/libpthread/arch/mips/pthread_md.h diff -u src/lib/libpthread/arch/mips/pthread_md.h:1.7 src/lib/libpthread/arch/mips/pthread_md.h:1.8 --- src/lib/libpthread/arch/mips/pthread_md.h:1.7 Mon Apr 28 20:23:02 2008 +++ src/lib/libpthread/arch/mips/pthread_md.h Sat May 16 22:20:41 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.7 2008/04/28 20:23:02 martin Exp $ */ +/* $NetBSD: pthread_md.h,v 1.8 2009/05/16 22:20:41 ad Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -43,64 +43,5 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_SP]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_EPC]) - -/* - * Usable stack space below the ucontext_t. - * For a good time, see comments in pthread_switch.S and - * ../i386/pthread_switch.S about STACK_SWITCH. - */ -#define STACKSPACE (6*4) /* 6 integer values */ - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. Note that in the "reg" structure, the indices - * are the same as are used in the "frame" structure in the kernel. - * These do NOT, in all cases, match the indices used in the - * "mcontext" structure. - */ -#include <mips/regnum.h> - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) \ -do { \ - memcpy(&(reg)->r_regs[_R_AST], &(uc)->uc_mcontext.__gregs[_REG_AT],\ - sizeof(__greg_t) * 31); \ - (reg)->r_regs[_R_MULLO] = (uc)->uc_mcontext.__gregs[_REG_MDLO]; \ - (reg)->r_regs[_R_MULHI] = (uc)->uc_mcontext.__gregs[_REG_MDHI]; \ - (reg)->r_regs[_R_CAUSE] = (uc)->uc_mcontext.__gregs[_REG_CAUSE];\ - (reg)->r_regs[_R_PC] = (uc)->uc_mcontext.__gregs[_REG_EPC]; \ - (reg)->r_regs[_R_SR] = (uc)->uc_mcontext.__gregs[_REG_SR]; \ -} while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) \ -do { \ - memcpy(&(uc)->uc_mcontext.__gregs[_REG_AT], &(reg)->r_regs[_R_AST],\ - sizeof(__greg_t) * 31); \ - (uc)->uc_mcontext.__gregs[_REG_MDLO] = (reg)->r_regs[_R_MULLO]; \ - (uc)->uc_mcontext.__gregs[_REG_MDHI] = (reg)->r_regs[_R_MULHI]; \ - (uc)->uc_mcontext.__gregs[_REG_CAUSE] = (reg)->r_regs[_R_CAUSE];\ - (uc)->uc_mcontext.__gregs[_REG_EPC] = (reg)->r_regs[_R_PC]; \ - (uc)->uc_mcontext.__gregs[_REG_SR] = (reg)->r_regs[_R_SR]; \ - \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ -} while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) \ -do { \ - memcpy((freg), &(uc)->uc_mcontext.__fpregs.__fp_r.__fp_regs, \ - sizeof((uc)->uc_mcontext.__fpregs.__fp_r.__fp_regs)); \ - (freg)->r_regs[_R_FSR - _FPBASE] = \ - (uc)->uc_mcontext.__fpregs.__fp_csr; \ -} while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) \ -do { \ - memcpy(&(uc)->uc_mcontext.__fpregs.__fp_r.__fp_regs, (freg), \ - sizeof((uc)->uc_mcontext.__fpregs.__fp_r.__fp_regs)); \ - (uc)->uc_mcontext.__fpregs.__fp_csr = \ - (freg)->r_regs[_R_FSR - _FPBASE]; \ - \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ -} while (/*CONSTCOND*/0) #endif /* !_LIB_PTHREAD_MIPS_MD_H */ Index: src/lib/libpthread/arch/powerpc/pthread_md.h diff -u src/lib/libpthread/arch/powerpc/pthread_md.h:1.5 src/lib/libpthread/arch/powerpc/pthread_md.h:1.6 --- src/lib/libpthread/arch/powerpc/pthread_md.h:1.5 Sat Dec 24 21:11:16 2005 +++ src/lib/libpthread/arch/powerpc/pthread_md.h Sat May 16 22:20:41 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.5 2005/12/24 21:11:16 perry Exp $ */ +/* $NetBSD: pthread_md.h,v 1.6 2009/05/16 22:20:41 ad Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -49,7 +49,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[1]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[34]) /* * Set initial, sane values for registers whose values aren't just @@ -59,67 +58,4 @@ #define _INITCONTEXT_U_MD(ucp) \ (ucp)->uc_mcontext.__gregs[_REG_MSR] = 0xd032; -/* - * Usable stack space below the ucontext_t. - * For a good time, see comments in pthread_switch.S and - * ../i386/pthread_switch.S about STACK_SWITCH. - */ -#define STACKSPACE 16 /* room for 4 integer values */ - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - memcpy((reg)->fixreg, (uc)->uc_mcontext.__gregs, 32 * 4); \ - (reg)->cr = (uc)->uc_mcontext.__gregs[_REG_CR]; \ - (reg)->lr = (uc)->uc_mcontext.__gregs[_REG_LR]; \ - (reg)->pc = (uc)->uc_mcontext.__gregs[_REG_PC]; \ - (reg)->ctr = (uc)->uc_mcontext.__gregs[_REG_CTR]; \ - (reg)->xer = (uc)->uc_mcontext.__gregs[_REG_XER]; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - memcpy((uc)->uc_mcontext.__gregs, (reg)->fixreg, 32 * 4); \ - (uc)->uc_mcontext.__gregs[_REG_CR] = (reg)->cr; \ - (uc)->uc_mcontext.__gregs[_REG_LR] = (reg)->lr; \ - (uc)->uc_mcontext.__gregs[_REG_PC] = (reg)->pc; \ - (uc)->uc_mcontext.__gregs[_REG_CTR] = (reg)->ctr; \ - (uc)->uc_mcontext.__gregs[_REG_XER] = (reg)->xer; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) do { \ - memcpy((freg)->fpreg, (uc)->uc_mcontext.__fpregs.__fpu_regs, \ - 32 * 4); \ - (freg)->fpscr = (uc)->uc_mcontext.__fpregs.__fpu_fpscr; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) do { \ - memcpy((uc)->uc_mcontext.__fpregs.__fpu_regs, (freg)->fpreg, \ - 32 * 4); \ - (uc)->uc_mcontext.__fpregs.__fpu_fpscr = (freg)->fpscr; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_XREG_FLAG _UC_POWERPC_VEC - -#define PTHREAD_UCONTEXT_TO_XREG(xreg, uc) do { \ - memcpy(((struct vreg *)(xreg))->vreg, \ - (uc)->uc_mcontext.__vrf.__vrs, \ - 16 * _NVR); \ - ((struct vreg *)(xreg))->vscr = (uc)->uc_mcontext.__vrf.__vscr; \ - ((struct vreg *)(xreg))->vrsave = (uc)->uc_mcontext.__vrf.__vrsave; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_XREG_TO_UCONTEXT(uc, xreg) do { \ - memcpy((uc)->uc_mcontext.__vrf.__vrs, \ - ((struct vreg *)(xreg))->vreg, \ - 16 * _NVR); \ - (uc)->uc_mcontext.__vrf.__vscr = ((struct vreg *)(xreg))->vscr; \ - (uc)->uc_mcontext.__vrf.__vrsave = ((struct vreg *)(xreg))->vrsave; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_POWERPC_VEC) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - #endif /* _LIB_PTHREAD_POWERPC_MD_H */ Index: src/lib/libpthread/arch/powerpc64/pthread_md.h diff -u src/lib/libpthread/arch/powerpc64/pthread_md.h:1.1 src/lib/libpthread/arch/powerpc64/pthread_md.h:1.2 --- src/lib/libpthread/arch/powerpc64/pthread_md.h:1.1 Sat Jul 8 05:09:44 2006 +++ src/lib/libpthread/arch/powerpc64/pthread_md.h Sat May 16 22:20:41 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.1 2006/07/08 05:09:44 ross Exp $ */ +/* $NetBSD: pthread_md.h,v 1.2 2009/05/16 22:20:41 ad Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -49,7 +49,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[1]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[34]) /* * Set initial, sane values for registers whose values aren't just @@ -59,67 +58,4 @@ #define _INITCONTEXT_U_MD(ucp) \ (ucp)->uc_mcontext.__gregs[_REG_MSR] = 0xd032; -/* - * Usable stack space below the ucontext_t. - * For a good time, see comments in pthread_switch.S and - * ../i386/pthread_switch.S about STACK_SWITCH. - */ -#define STACKSPACE 16 /* room for 4 integer values */ - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - memcpy((reg)->fixreg, (uc)->uc_mcontext.__gregs, 32 * 4); \ - (reg)->cr = (uc)->uc_mcontext.__gregs[_REG_CR]; \ - (reg)->lr = (uc)->uc_mcontext.__gregs[_REG_LR]; \ - (reg)->pc = (uc)->uc_mcontext.__gregs[_REG_PC]; \ - (reg)->ctr = (uc)->uc_mcontext.__gregs[_REG_CTR]; \ - (reg)->xer = (uc)->uc_mcontext.__gregs[_REG_XER]; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - memcpy((uc)->uc_mcontext.__gregs, (reg)->fixreg, 32 * 4); \ - (uc)->uc_mcontext.__gregs[_REG_CR] = (reg)->cr; \ - (uc)->uc_mcontext.__gregs[_REG_LR] = (reg)->lr; \ - (uc)->uc_mcontext.__gregs[_REG_PC] = (reg)->pc; \ - (uc)->uc_mcontext.__gregs[_REG_CTR] = (reg)->ctr; \ - (uc)->uc_mcontext.__gregs[_REG_XER] = (reg)->xer; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) do { \ - memcpy((freg)->fpreg, (uc)->uc_mcontext.__fpregs.__fpu_regs, \ - 32 * 4); \ - (freg)->fpscr = (uc)->uc_mcontext.__fpregs.__fpu_fpscr; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) do { \ - memcpy((uc)->uc_mcontext.__fpregs.__fpu_regs, (freg)->fpreg, \ - 32 * 4); \ - (uc)->uc_mcontext.__fpregs.__fpu_fpscr = (freg)->fpscr; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_XREG_FLAG _UC_POWERPC_VEC - -#define PTHREAD_UCONTEXT_TO_XREG(xreg, uc) do { \ - memcpy(((struct vreg *)(xreg))->vreg, \ - (uc)->uc_mcontext.__vrf.__vrs, \ - 16 * _NVR); \ - ((struct vreg *)(xreg))->vscr = (uc)->uc_mcontext.__vrf.__vscr; \ - ((struct vreg *)(xreg))->vrsave = (uc)->uc_mcontext.__vrf.__vrsave; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_XREG_TO_UCONTEXT(uc, xreg) do { \ - memcpy((uc)->uc_mcontext.__vrf.__vrs, \ - ((struct vreg *)(xreg))->vreg, \ - 16 * _NVR); \ - (uc)->uc_mcontext.__vrf.__vscr = ((struct vreg *)(xreg))->vscr; \ - (uc)->uc_mcontext.__vrf.__vrsave = ((struct vreg *)(xreg))->vrsave; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_POWERPC_VEC) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - #endif /* _LIB_PTHREAD_POWERPC_MD_H */ Index: src/lib/libpthread/arch/sh3/pthread_md.h diff -u src/lib/libpthread/arch/sh3/pthread_md.h:1.6 src/lib/libpthread/arch/sh3/pthread_md.h:1.7 --- src/lib/libpthread/arch/sh3/pthread_md.h:1.6 Mon Oct 27 00:52:07 2008 +++ src/lib/libpthread/arch/sh3/pthread_md.h Sat May 16 22:20:41 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.6 2008/10/27 00:52:07 uwe Exp $ */ +/* $NetBSD: pthread_md.h,v 1.7 2009/05/16 22:20:41 ad Exp $ */ /* * Copyright 2003 Wasabi Systems, Inc. @@ -48,7 +48,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_R15]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_PC]) /* * Set initial, sane values for registers whose values aren't just @@ -57,83 +56,6 @@ #define _INITCONTEXT_U_MD(ucp) \ (ucp)->uc_mcontext.__gregs[_REG_SR] = 0; -/* - * SH3 requires no extra stack space - */ -#define STACKSPACE 0 - - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - (reg)->r_spc = (uc)->uc_mcontext.__gregs[_REG_PC]; \ - (reg)->r_ssr = (uc)->uc_mcontext.__gregs[_REG_SR]; \ - (reg)->r_pr = (uc)->uc_mcontext.__gregs[_REG_PR]; \ - (reg)->r_mach = (uc)->uc_mcontext.__gregs[_REG_MACH]; \ - (reg)->r_macl = (uc)->uc_mcontext.__gregs[_REG_MACL]; \ - (reg)->r_r15 = (uc)->uc_mcontext.__gregs[_REG_R15]; \ - (reg)->r_r14 = (uc)->uc_mcontext.__gregs[_REG_R14]; \ - (reg)->r_r13 = (uc)->uc_mcontext.__gregs[_REG_R13]; \ - (reg)->r_r12 = (uc)->uc_mcontext.__gregs[_REG_R12]; \ - (reg)->r_r11 = (uc)->uc_mcontext.__gregs[_REG_R11]; \ - (reg)->r_r10 = (uc)->uc_mcontext.__gregs[_REG_R10]; \ - (reg)->r_r9 = (uc)->uc_mcontext.__gregs[_REG_R9]; \ - (reg)->r_r8 = (uc)->uc_mcontext.__gregs[_REG_R8]; \ - (reg)->r_r7 = (uc)->uc_mcontext.__gregs[_REG_R7]; \ - (reg)->r_r6 = (uc)->uc_mcontext.__gregs[_REG_R6]; \ - (reg)->r_r5 = (uc)->uc_mcontext.__gregs[_REG_R5]; \ - (reg)->r_r4 = (uc)->uc_mcontext.__gregs[_REG_R4]; \ - (reg)->r_r3 = (uc)->uc_mcontext.__gregs[_REG_R3]; \ - (reg)->r_r2 = (uc)->uc_mcontext.__gregs[_REG_R2]; \ - (reg)->r_r1 = (uc)->uc_mcontext.__gregs[_REG_R1]; \ - (reg)->r_r0 = (uc)->uc_mcontext.__gregs[_REG_R0]; \ - (reg)->r_gbr = (uc)->uc_mcontext.__gregs[_REG_GBR]; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - (uc)->uc_mcontext.__gregs[_REG_GBR] = (reg)->r_gbr; \ - (uc)->uc_mcontext.__gregs[_REG_PC] = (reg)->r_spc; \ - (uc)->uc_mcontext.__gregs[_REG_SR] = (reg)->r_ssr; \ - (uc)->uc_mcontext.__gregs[_REG_PR] = (reg)->r_pr; \ - (uc)->uc_mcontext.__gregs[_REG_MACH] = (reg)->r_mach; \ - (uc)->uc_mcontext.__gregs[_REG_MACL] = (reg)->r_macl; \ - (uc)->uc_mcontext.__gregs[_REG_R15] = (reg)->r_r15; \ - (uc)->uc_mcontext.__gregs[_REG_R14] = (reg)->r_r14; \ - (uc)->uc_mcontext.__gregs[_REG_R13] = (reg)->r_r13; \ - (uc)->uc_mcontext.__gregs[_REG_R12] = (reg)->r_r12; \ - (uc)->uc_mcontext.__gregs[_REG_R11] = (reg)->r_r11; \ - (uc)->uc_mcontext.__gregs[_REG_R10] = (reg)->r_r10; \ - (uc)->uc_mcontext.__gregs[_REG_R9] = (reg)->r_r9; \ - (uc)->uc_mcontext.__gregs[_REG_R8] = (reg)->r_r8; \ - (uc)->uc_mcontext.__gregs[_REG_R7] = (reg)->r_r7; \ - (uc)->uc_mcontext.__gregs[_REG_R6] = (reg)->r_r6; \ - (uc)->uc_mcontext.__gregs[_REG_R5] = (reg)->r_r5; \ - (uc)->uc_mcontext.__gregs[_REG_R4] = (reg)->r_r4; \ - (uc)->uc_mcontext.__gregs[_REG_R3] = (reg)->r_r3; \ - (uc)->uc_mcontext.__gregs[_REG_R2] = (reg)->r_r2; \ - (uc)->uc_mcontext.__gregs[_REG_R1] = (reg)->r_r1; \ - (uc)->uc_mcontext.__gregs[_REG_R0] = (reg)->r_r0; \ - \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#if 0 /* no struct fpreg!!! */ -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) \ - memcpy((freg), &(uc)->uc_mcontext.__fpregs, sizeof(*(freg))); - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) do { \ - memcpy(&(uc)->uc_mcontext.__fpregs, (freg), sizeof(*(freg))); \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#else /* stubs */ -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) -#endif - /* sh3 will not go SMP */ #define PTHREAD__ATOMIC_IS_MEMBAR Index: src/lib/libpthread/arch/sparc/pthread_md.h diff -u src/lib/libpthread/arch/sparc/pthread_md.h:1.6 src/lib/libpthread/arch/sparc/pthread_md.h:1.7 --- src/lib/libpthread/arch/sparc/pthread_md.h:1.6 Mon Apr 28 20:23:02 2008 +++ src/lib/libpthread/arch/sparc/pthread_md.h Sat May 16 22:20:41 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.6 2008/04/28 20:23:02 martin Exp $ */ +/* $NetBSD: pthread_md.h,v 1.7 2009/05/16 22:20:41 ad Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -43,47 +43,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_O6]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_PC]) - -#define STACKSPACE 96 /* min stack frame XXX */ - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - * XXX macros - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - memcpy((reg), &(uc)->uc_mcontext.__gregs, \ - (_REG_Y+1)*sizeof(__greg_t)); \ - (reg)->r_global[0] = 0; \ - memcpy(&(reg)->r_global[1], &(uc)->uc_mcontext.__gregs[_REG_G1],\ - (_REG_O7-_REG_G1+1)*sizeof(__greg_t)); \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - memcpy(&(uc)->uc_mcontext.__gregs, (reg), \ - (_REG_Y+1)*sizeof(__greg_t)); \ - (uc)->uc_mcontext.__gregs[_REG_Y] = (reg)->r_y; \ - memcpy(&(uc)->uc_mcontext.__gregs[_REG_G1], &(reg)->r_global[1],\ - (_REG_O7-_REG_G1+1)*sizeof(__greg_t)); \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) do { \ - memcpy((freg)->fr_regs, \ - &(uc)->uc_mcontext.__fpregs.__fpu_fr.__fpu_regs, \ - 32*sizeof(u_int)); \ - (freg)->fr_fsr = (uc)->uc_mcontext.__fpregs.__fpu_fsr; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) do { \ - memcpy(&(uc)->uc_mcontext.__fpregs.__fpu_fr.__fpu_regs, \ - (freg)->fr_regs, \ - 32*sizeof(u_int)); \ - (uc)->uc_mcontext.__fpregs.__fpu_fsr = (freg)->fr_fsr; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) /* Don't need additional memory barriers. */ #define PTHREAD__ATOMIC_IS_MEMBAR Index: src/lib/libpthread/arch/sparc64/pthread_md.h diff -u src/lib/libpthread/arch/sparc64/pthread_md.h:1.5 src/lib/libpthread/arch/sparc64/pthread_md.h:1.6 --- src/lib/libpthread/arch/sparc64/pthread_md.h:1.5 Mon Apr 28 20:23:02 2008 +++ src/lib/libpthread/arch/sparc64/pthread_md.h Sat May 16 22:20:41 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.5 2008/04/28 20:23:02 martin Exp $ */ +/* $NetBSD: pthread_md.h,v 1.6 2009/05/16 22:20:41 ad Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -43,51 +43,5 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_O6]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_PC]) - -#define STACKSPACE 176 /* min stack frame XXX */ - -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - * XXX macros - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - memcpy(&(reg)->r_tstate, &(uc)->uc_mcontext.__gregs, \ - _REG_Y * sizeof(__greg_t)); \ - (reg)->r_y = (uc)->uc_mcontext.__gregs[_REG_Y]; \ - memcpy(&(reg)->r_global[1], &(uc)->uc_mcontext.__gregs[_REG_G1],\ - (_REG_O7 - _REG_G1 + 1) * sizeof(__greg_t)); \ - (reg)->r_global[0] = 0; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - memcpy(&(uc)->uc_mcontext.__gregs, &(reg)->r_tstate, \ - _REG_Y * sizeof(__greg_t)); \ - (uc)->uc_mcontext.__gregs[_REG_Y] = (reg)->r_y; \ - memcpy(&(uc)->uc_mcontext.__gregs[_REG_G1], &(reg)->r_global[1],\ - (_REG_O7 - _REG_G1 + 1) * sizeof(__greg_t)); \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(freg, uc) do { \ - memcpy((freg)->fr_regs, \ - &(uc)->uc_mcontext.__fpregs.__fpu_fr.__fpu_dregs, \ - 32*sizeof(double)); \ - (freg)->fr_fsr = (uc)->uc_mcontext.__fpregs.__fpu_fsr; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, freg) do { \ - memcpy(&(uc)->uc_mcontext.__fpregs.__fpu_fr.__fpu_dregs, \ - (freg)->fr_regs, \ - 32*sizeof(double)); \ - (uc)->uc_mcontext.__fpregs.__fpu_fsr = (freg)->fr_fsr; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_FPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#ifdef __PTHREAD_SIGNAL_PRIVATE -#include <machine/psl.h> -#endif #endif /* _LIB_PTHREAD_SPARC64_MD_H */ Index: src/lib/libpthread/arch/vax/pthread_md.h diff -u src/lib/libpthread/arch/vax/pthread_md.h:1.6 src/lib/libpthread/arch/vax/pthread_md.h:1.7 --- src/lib/libpthread/arch/vax/pthread_md.h:1.6 Mon Apr 28 20:23:02 2008 +++ src/lib/libpthread/arch/vax/pthread_md.h Sat May 16 22:20:42 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.6 2008/04/28 20:23:02 martin Exp $ */ +/* $NetBSD: pthread_md.h,v 1.7 2009/05/16 22:20:42 ad Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -43,7 +43,6 @@ } #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_SP]) -#define pthread__uc_pc(ucp) ((ucp)->uc_mcontext.__gregs[_REG_PC]) /* * Set initial, sane values for registers whose values aren't just @@ -53,31 +52,6 @@ #define _INITCONTEXT_U_MD(ucp) \ (ucp)->uc_mcontext.__gregs[_REG_PSL] = 0x03c00000; -#define STACKSPACE 0 -/* - * Conversions between struct reg and struct mcontext. Used by - * libpthread_dbg. - */ - -#define PTHREAD_UCONTEXT_TO_REG(reg, uc) do { \ - memcpy((reg), &(uc)->uc_mcontext.__gregs, 17 * sizeof(__greg_t)); \ - (reg)->fp = (uc)->uc_mcontext.__gregs[_REG_FP]; \ - (reg)->sp = (uc)->uc_mcontext.__gregs[_REG_SP]; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_REG_TO_UCONTEXT(uc, reg) do { \ - memcpy(&(uc)->uc_mcontext.__gregs, (reg), 17 * sizeof(__greg_t)); \ - (uc)->uc_mcontext.__gregs[_REG_FP] = (reg)->fp; \ - (uc)->uc_mcontext.__gregs[_REG_SP] = (reg)->sp; \ - (uc)->uc_flags = ((uc)->uc_flags | _UC_CPU) & ~_UC_USER; \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_UCONTEXT_TO_FPREG(reg, uc) do { \ - } while (/*CONSTCOND*/0) - -#define PTHREAD_FPREG_TO_UCONTEXT(uc, reg) do { \ - } while (/*CONSTCOND*/0) - /* Don't need additional memory barriers. */ #define PTHREAD__ATOMIC_IS_MEMBAR Added files: Index: src/lib/libpthread/arch/hppa/pthread_md.S diff -u /dev/null src/lib/libpthread/arch/hppa/pthread_md.S:1.1 --- /dev/null Sat May 16 22:20:42 2009 +++ src/lib/libpthread/arch/hppa/pthread_md.S Sat May 16 22:20:40 2009 @@ -0,0 +1,67 @@ +/* $NetBSD: pthread_md.S,v 1.1 2009/05/16 22:20:40 ad Exp $ */ + +/* + * Copyright (c) 2001 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Wayne Knowles + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <machine/asm.h> + +LEAF_ENTRY(pthread__ras_simple_lock_init) + ldi 1,%ret0 /* 1 == unlocked */ + stw %ret0,0(%arg0) + stw %ret0,4(%arg0) + stw %ret0,8(%arg0) + stw %ret0,12(%arg0) + bv,n %r0(%rp) +EXIT(pthread__ras_simple_lock_init) + + .global pthread__lock_ras_start + .global pthread__lock_ras_end + +LEAF_ENTRY(pthread__ras_simple_lock_try) + ldo 15(%arg0),%arg0 + depi 0,31,4,%arg0 + +pthread__lock_ras_start: + ldw 0(%arg0),%ret0 + stw %r0,0(%arg0) /* 0 == locked */ +pthread__lock_ras_end: + + comiclr,= 0,%ret0,%ret0 /* if locked return 0 */ + ldi 1,%ret0 /* else return 1 */ + bv,n %r0(%rp) +EXIT(pthread__ras_simple_lock_try) + + +LEAF_ENTRY(pthread__ras_simple_unlock) + ldo 15(%arg0),%arg0 + depi 0,31,4,%arg0 + ldi 1,%ret0 /* 1 == unlocked */ + bv %r0(%rp) + stw %ret0,0(%arg0) +EXIT(pthread__ras_simple_unlock)