From 8f0f81825daca4c7490ab86e1b2f98b82476e9fe Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 2 Jun 2003 22:22:52 +0000 Subject: Port libc_r to amd64, and turn it back on for amd64. It passes all of the same src/lib/libc_r/test/* tests that the other platforms pass. --- lib/libc_r/uthread/pthread_private.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lib/libc_r/uthread/pthread_private.h') diff --git a/lib/libc_r/uthread/pthread_private.h b/lib/libc_r/uthread/pthread_private.h index 143772d..5569b20 100644 --- a/lib/libc_r/uthread/pthread_private.h +++ b/lib/libc_r/uthread/pthread_private.h @@ -87,6 +87,24 @@ __asm__("frstor %0": :"m"(*fdata)); \ } while (0) #define SET_RETURN_ADDR_JB(jb, ra) (jb)[0]._jb[0] = (int)(ra) +#elif defined(__amd64__) +#define GET_STACK_JB(jb) ((unsigned long)((jb)[0]._jb[2])) +#define GET_STACK_SJB(sjb) ((unsigned long)((sjb)[0]._sjb[2])) +#define GET_STACK_UC(ucp) ((unsigned long)((ucp)->uc_mcontext.mc_rsp)) +#define SET_STACK_JB(jb, stk) (jb)[0]._jb[2] = (long)(stk) +#define SET_STACK_SJB(sjb, stk) (sjb)[0]._sjb[2] = (long)(stk) +#define SET_STACK_UC(ucp, stk) (ucp)->uc_mcontext.mc_rsp = (long)(stk) +#define FP_SAVE_UC(ucp) do { \ + char *fdata; \ + fdata = (char *) (ucp)->uc_mcontext.mc_fpstate; \ + __asm__("fxsave %0": :"m"(*fdata)); \ +} while (0) +#define FP_RESTORE_UC(ucp) do { \ + char *fdata; \ + fdata = (char *) (ucp)->uc_mcontext.mc_fpstate; \ + __asm__("fxrstor %0": :"m"(*fdata)); \ +} while (0) +#define SET_RETURN_ADDR_JB(jb, ra) (jb)[0]._jb[0] = (long)(ra) #elif defined(__alpha__) #include #define GET_STACK_JB(jb) ((unsigned long)((jb)[0]._jb[R_SP + 4])) -- cgit v1.1