Changeset 13643


Ignore:
Timestamp:
Apr 19, 2010, 8:18:00 AM (10 years ago)
Author:
gb
Message:

Changed files from trunk.

Location:
branches/arm/lisp-kernel
Files:
29 edited

Legend:

Unmodified
Added
Removed
  • branches/arm/lisp-kernel/Threads.h

    r13431 r13643  
    235235
    236236
    237 #if defined(SIGRTMIN) && !defined(SOLARIS)
    238 #define SIG_SUSPEND_THREAD (SIGRTMIN+6)
    239 #else
    240 #define SIG_SUSPEND_THREAD SIGUSR2
    241 #endif
    242 
    243 
    244 #ifdef DARWIN
    245 #define SIG_KILL_THREAD SIGEMT
    246 #endif
    247 
    248 #if defined(LINUX) && defined(SIGRTMIN)
    249 #define SIG_KILL_THREAD (SIGRTMIN+7)
    250 #endif
    251 
    252 #ifdef SOLARIS
    253 #define SIG_KILL_THREAD SIGRTMIN
    254 #endif
    255 
    256 #ifdef FREEBSD
    257 #define SIG_KILL_THREAD (SIGTHR+5)
    258 #endif
    259 
    260237
    261238extern int thread_suspend_signal, thread_kill_signal;
  • branches/arm/lisp-kernel/darwinppc/Makefile

    r13607 r13643  
    5151CHEADERS = area.h bits.h ppc-constants.h lisp-errors.h gc.h lisp.h \
    5252        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    53         Threads.h lisptypes.h ppc-constants32.h ppc-exceptions.h $(PLATFORM_H)
     53        Threads.h lisptypes.h ppc-constants32.h ppc-exceptions.h \
     54        $(PLATFORM_H) constants.h os-darwin.h
    5455
    5556# Subprims linked into the kernel ?
  • branches/arm/lisp-kernel/darwinppc64/Makefile

    r13607 r13643  
    5959CHEADERS = area.h bits.h ppc-constants.h lisp-errors.h gc.h lisp.h \
    6060        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    61         Threads.h lisptypes.h ppc-constants64.h ppc-exceptions.h $(PLATFORM_H)
     61        Threads.h lisptypes.h ppc-constants64.h ppc-exceptions.h \
     62        $(PLATFORM_H) constants.h os-darwin.h
    6263
    6364# Subprims linked into the kernel ?
  • branches/arm/lisp-kernel/darwinx8632/Makefile

    r13600 r13643  
    5353CHEADERS = area.h bits.h x86-constants.h lisp-errors.h gc.h lisp.h \
    5454        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    55         Threads.h lisptypes.h x86-constants32.h x86-exceptions.h $(PLATFORM_H)
     55        Threads.h lisptypes.h x86-constants32.h x86-exceptions.h \
     56        $(PLATFORM_H) constants.h os-darwin.h
    5657
    5758# Subprims linked into the kernel ?
  • branches/arm/lisp-kernel/darwinx8664/Makefile

    r13600 r13643  
    7676CHEADERS = area.h bits.h x86-constants.h lisp-errors.h gc.h lisp.h \
    7777        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    78         Threads.h lisptypes.h x86-constants64.h x86-exceptions.h $(PLATFORM_H)
     78        Threads.h lisptypes.h x86-constants64.h x86-exceptions.h \
     79        $(PLATFORM_H) constants.h os-darwin.h
    7980
    8081# Subprims linked into the kernel ?
  • branches/arm/lisp-kernel/linuxppc/Makefile

    r13602 r13643  
    7272CHEADERS = area.h bits.h ppc-constants.h lisp-errors.h gc.h lisp.h \
    7373        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    74         Threads.h ppc-constants32.h ppc-exceptions.h $(PLATFORM_H)
     74        Threads.h ppc-constants32.h ppc-exceptions.h $(PLATFORM_H) \
     75        constants.h os-linux.h
    7576
    7677# Subprims linked into the kernel ?
  • branches/arm/lisp-kernel/linuxppc64/Makefile

    r13602 r13643  
    6060CHEADERS = area.h bits.h ppc-constants.h lisp-errors.h gc.h lisp.h \
    6161        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    62         Threads.h ppc-constants64.h ppc-exceptions.h $(PLATFORM_H)
     62        Threads.h ppc-constants64.h ppc-exceptions.h $(PLATFORM_H) \
     63        constants.h os-linux.h
    6364
    6465# Subprims linked into the kernel ?
  • branches/arm/lisp-kernel/linuxx8632/Makefile

    r13594 r13643  
    2727# however.
    2828WFORMAT = -Wno-format
     29PLATFORM_H = platform-linuxx8632.h
    2930
    3031# If the linker supports a "--hash-style=" option, use traditional
     
    4243        $(M4) $(M4FLAGS) -I../ $< | $(AS)  $(ASFLAGS) -o $@
    4344.c.o:
    44         $(CC) -I./ -c $< $(CDEFINES) $(CDEBUG) $(COPT) $(WFORMAT) -m32 -o $@
     45        $(CC) -include ../$(PLATFORM_H) -c $< $(CDEFINES) $(CDEBUG) $(COPT) $(WFORMAT) -m32 -o $@
    4546
    4647SPOBJ = pad.o x86-spjump32.o x86-spentry32.o x86-subprims32.o
     
    5859CHEADERS = area.h bits.h x86-constants.h lisp-errors.h gc.h lisp.h \
    5960        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    60         Threads.h x86-constants32.h x86-exceptions.h lisptypes.h
     61        Threads.h x86-constants32.h x86-exceptions.h lisptypes.h \
     62        $(PLATFORM_H) constants.h os-linux.h
    6163
    6264
  • branches/arm/lisp-kernel/linuxx8664/Makefile

    r13594 r13643  
    2727# however.
    2828WFORMAT = -Wno-format
     29PLATFORM_H = platform-linuxx8664.h
    2930
    3031# If the linker supports a "--hash-style=" option, use traditional
     
    4243        $(M4) $(M4FLAGS) -I../ $< | $(AS)  $(ASFLAGS) -o $@
    4344.c.o:
    44         $(CC) -I./ -c $< $(CDEFINES) $(CDEBUG) $(COPT) $(WFORMAT) -m64 -o $@
     45        $(CC) -include ../$(PLATFORM_H) -c $< $(CDEFINES) $(CDEBUG) $(COPT) $(WFORMAT) -m64 -o $@
    4546
    4647SPOBJ = pad.o x86-spjump64.o x86-spentry64.o x86-subprims64.o
     
    5859CHEADERS = area.h bits.h x86-constants.h lisp-errors.h gc.h lisp.h \
    5960        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    60         Threads.h x86-constants64.h x86-exceptions.h lisptypes.h
     61        Threads.h x86-constants64.h x86-exceptions.h lisptypes.h \
     62        $(PLATFORM_H) constants.h os-linux.h
    6163
    6264
  • branches/arm/lisp-kernel/platform-darwinppc.h

    r13629 r13643  
    3636#include "lisptypes.h"
    3737#include "ppc-constants32.h"
     38
     39/* xp accessors.  Logically identical on darwinppc32/64. */
     40#define xpGPRvector(x) (&(UC_MCONTEXT(x)->__ss.__r0))
     41#define xpGPR(x,gprno) ((xpGPRvector(x))[gprno])
     42#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (UInt32)(new)
     43#define xpPC(x) (*((pc*) &(UC_MCONTEXT(x)->__ss.__srr0)))
     44#define set_xpPC(x,new) (xpPC(x) = (pc)(new))
     45#define xpLR(x) (*((pc*)(&(UC_MCONTEXT(x)->__ss.__lr))))
     46#define xpCTR(x) (*(pc*)(&(UC_MCONTEXT(x)->__ss.__ctr)))
     47#define xpXER(x) (UC_MCONTEXT(x)->__ss.__xer)
     48#define xpCCR(x) (UC_MCONTEXT(x)->__ss.__cr)
     49#define xpMSR(x) (UC_MCONTEXT(x)->__ss.__srr1)
     50#define xpDSISR(x) (UC_MCONTEXT(x)->__es.__dsisr)
     51#define xpDAR(x) (UC_MCONTEXT(x)->__es.__dar)
     52#define xpTRAP(x) (UC_MCONTEXT(x)->__es.__exception)
     53#define xpFPSCR(x) (UC_MCONTEXT(x)->__fs.__fpscr)
     54#define xpFPRvector(x) (UC_MCONTEXT(x)->__fs.__fpregs)
     55#define xpFPR(x,fprno) (xpFPRvector(x)[fprno])
     56
     57/* Late versions of OSX 10.2 had a bug in 32-bit exception handling;
     58   machine context wasn't restored correctly if it wasn't modified
     59   by the exception handler.  DarwinSigReturn() was a macro that
     60   tried to work around this.
     61*/
     62#define DarwinSigReturn(x)
     63
     64/* On some platforms, we may need to do something more than returning
     65   from a signal handler in order to return to the kernel and let it
     66   restore context.  On DarwinPPC, that's not a factor.
     67*/
     68#define SIGRETURN(context)
     69
     70#include "os-darwin.h"
  • branches/arm/lisp-kernel/platform-darwinppc64.h

    r13629 r13643  
    3636#include "lisptypes.h"
    3737#include "ppc-constants64.h"
     38
     39
     40/* xp accessors.  Logically identical on darwinppc32/64. */
     41#define xpGPRvector(x) (&(UC_MCONTEXT(x)->__ss.__r0))
     42#define xpGPR(x,gprno) ((xpGPRvector(x))[gprno])
     43#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (UInt32)(new)
     44#define xpPC(x) (*((pc*) &(UC_MCONTEXT(x)->__ss.__srr0)))
     45#define set_xpPC(x,new) (xpPC(x) = (pc)(new))
     46#define xpLR(x) (*((pc*)(&(UC_MCONTEXT(x)->__ss.__lr))))
     47#define xpCTR(x) (*(pc*)(&(UC_MCONTEXT(x)->__ss.__ctr)))
     48#define xpXER(x) (UC_MCONTEXT(x)->__ss.__xer)
     49#define xpCCR(x) (UC_MCONTEXT(x)->__ss.__cr)
     50#define xpMSR(x) (UC_MCONTEXT(x)->__ss.__srr1)
     51#define xpDSISR(x) (UC_MCONTEXT(x)->__es.__dsisr)
     52#define xpDAR(x) (UC_MCONTEXT(x)->__es.__dar)
     53#define xpTRAP(x) (UC_MCONTEXT(x)->__es.__exception)
     54#define xpFPSCR(x) (UC_MCONTEXT(x)->__fs.__fpscr)
     55#define xpFPRvector(x) (UC_MCONTEXT(x)->__fs.__fpregs)
     56#define xpFPR(x,fprno) (xpFPRvector(x)[fprno])
     57
     58/* Late versions of OSX 10.2 had a bug in 32-bit exception handling;
     59   machine context wasn't restored correctly if it wasn't modified
     60   by the exception handler.  DarwinSigReturn() was a macro that
     61   tried to work around this.
     62*/
     63#define DarwinSigReturn(x)
     64
     65/* On some platforms, we may need to do something more than returning
     66   from a signal handler in order to return to the kernel and let it
     67   restore context.  On DarwinPPC, that's not a factor.
     68*/
     69#define SIGRETURN(context)
     70
     71#include "os-darwin.h"
  • branches/arm/lisp-kernel/platform-darwinx8632.h

    r13629 r13643  
    3636#include "lisptypes.h"
    3737#include "x86-constants32.h"
     38
     39
     40/* xp accessors, sigreturn stuff */
     41#define DARWIN_USE_PSEUDO_SIGRETURN 1
     42#define DarwinSigReturn(context) do {\
     43    darwin_sigreturn(context);\
     44    Bug(context,"sigreturn returned");\
     45  } while (0)
     46
     47#define xpGPRvector(x) ((natural *)(&(UC_MCONTEXT(x)->__ss)))
     48#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     49#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     50#define xpPC(x) (xpGPR(x,Iip))
     51#define eflags_register(xp) xpGPR(xp,Iflags)
     52#define xpFPRvector(x) ((natural *)(&(UC_MCONTEXT(x)->__fs.__fpu_xmm0)))
     53#define xpMMXvector(x) (&(UC_MCONTEXT(x)->__fs.__fpu_stmm0))
     54/* Note that this yields only the lower half of the MMX reg on x8632 */
     55#define xpMMXreg(x,n) *(natural *)&(xpMMXvector(x)[n])
     56
     57#define SIGNUM_FOR_INTN_TRAP SIGSEGV /* Not really, but our Mach handler fakes that */
     58#define IS_MAYBE_INT_TRAP(info,xp) ((UC_MCONTEXT(xp)->__es.__trapno == 0xd) && (((UC_MCONTEXT(xp)->__es.__err)&7)==2))
     59#define IS_PAGE_FAULT(info,xp) (UC_MCONTEXT(xp)->__es.__trapno == 0xe)
     60/* The x86 version of sigreturn just needs the context argument; the
     61   hidden, magic "flavor" argument that sigtramp uses is ignored. */
     62#define SIGRETURN(context) DarwinSigReturn(context)
     63
     64#include <mach/mach.h>
     65#include <mach/mach_error.h>
     66#include <mach/machine/thread_state.h>
     67#include <mach/machine/thread_status.h>
     68
     69pthread_mutex_t *mach_exception_lock;
     70
     71#include "os-darwin.h"
  • branches/arm/lisp-kernel/platform-darwinx8664.h

    r13629 r13643  
    3737#include "lisptypes.h"
    3838#include "x86-constants64.h"
     39
     40/* xp accessors, sigreturn stuff */
     41#define DARWIN_USE_PSEUDO_SIGRETURN 1
     42#define DarwinSigReturn(context) do {\
     43    darwin_sigreturn(context);\
     44    Bug(context,"sigreturn returned");\
     45  } while (0)
     46
     47#define xpGPRvector(x) ((natural *)(&(UC_MCONTEXT(x)->__ss)))
     48#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     49#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     50#define xpPC(x) (xpGPR(x,Iip))
     51#define eflags_register(xp) xpGPR(xp,Iflags)
     52#define xpFPRvector(x) ((natural *)(&(UC_MCONTEXT(x)->__fs.__fpu_xmm0)))
     53#define xpMMXvector(x) (&(UC_MCONTEXT(x)->__fs.__fpu_stmm0))
     54/* Note that this yields only the lower half of the MMX reg on x8632 */
     55#define xpMMXreg(x,n) *(natural *)&(xpMMXvector(x)[n])
     56#define SIGNUM_FOR_INTN_TRAP SIGSEGV /* Not really, but our Mach handler fakes that */
     57#define IS_MAYBE_INT_TRAP(info,xp) ((UC_MCONTEXT(xp)->__es.__trapno == 0xd) && (((UC_MCONTEXT(xp)->__es.__err)&7)==2))
     58#define IS_PAGE_FAULT(info,xp) (UC_MCONTEXT(xp)->__es.__trapno == 0xe)
     59/* The x86 version of sigreturn just needs the context argument; the
     60   hidden, magic "flavor" argument that sigtramp uses is ignored. */
     61#define SIGRETURN(context) DarwinSigReturn(context)
     62
     63#include <mach/mach.h>
     64#include <mach/mach_error.h>
     65#include <mach/machine/thread_state.h>
     66#include <mach/machine/thread_status.h>
     67
     68pthread_mutex_t *mach_exception_lock;
     69
     70#include "os-darwin.h"
  • branches/arm/lisp-kernel/platform-freebsdx8632.h

    r13629 r13643  
    3131#include "lisptypes.h"
    3232#include "x86-constants32.h"
     33
     34#include "freebsdx8632/fpu.h"
     35#define xpGPRvector(x) ((natural *)(&((x)->uc_mcontext)))
     36#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     37#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     38#define eflags_register(xp) xpGPR(xp,Iflags)
     39#define xpPC(x) xpGPR(x,Iip)
     40#define xpMMXreg(x,n) *((natural *)(&(((struct ccl_savexmm *)(&(x)->uc_mcontext.mc_fpstate))->sv_fp[n])))
     41#define xpXMMregs(x)(&(((struct ccl_savexmm *)(&(x)->uc_mcontext.mc_fpstate))->sv_xmm[0]))
     42extern void freebsd_sigreturn(ExceptionInformation *);
     43#define SIGNUM_FOR_INTN_TRAP SIGBUS
     44#define IS_MAYBE_INT_TRAP(info,xp) ((xp->uc_mcontext.mc_trapno == T_PROTFLT) && ((xp->uc_mcontext.mc_err & 7) == 2))
     45#define IS_PAGE_FAULT(info,xp) (xp->uc_mcontext.mc_trapno == T_PAGEFLT)
     46#define SIGRETURN(context) freebsd_sigreturn(context)
     47
     48#include "os-freebsd.h"
  • branches/arm/lisp-kernel/platform-freebsdx8664.h

    r13629 r13643  
    3030#include "lisptypes.h"
    3131#include "x86-constants64.h"
     32
     33#include <machine/fpu.h>
     34#define xpGPRvector(x) ((natural *)(&((x)->uc_mcontext)))
     35#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     36#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     37#define eflags_register(xp) xpGPR(xp,Iflags)
     38#define xpPC(x) xpGPR(x,Iip)
     39#define xpMMXreg(x,n) *((natural *)(&(((struct savefpu *)(&(x)->uc_mcontext.mc_fpstate))->sv_fp[n])))
     40#define xpXMMregs(x)(&(((struct savefpu *)(&(x)->uc_mcontext.mc_fpstate))->sv_xmm[0]))
     41extern void freebsd_sigreturn(ExceptionInformation *);
     42#define SIGNUM_FOR_INTN_TRAP SIGBUS
     43#define IS_MAYBE_INT_TRAP(info,xp) ((xp->uc_mcontext.mc_trapno == T_PROTFLT) && ((xp->uc_mcontext.mc_err & 7) == 2))
     44#define IS_PAGE_FAULT(info,xp) (xp->uc_mcontext.mc_trapno == T_PAGEFLT)
     45#define SIGRETURN(context) freebsd_sigreturn(context)
     46
     47#include "os-freebsd.h"
  • branches/arm/lisp-kernel/platform-linuxppc.h

    r13629 r13643  
    3131#include "lisptypes.h"
    3232#include "ppc-constants32.h"
     33
     34/* xp accessors.  Logically identical on linuxppc32/64. */
     35#define XP_PTREGS(x) ((x)->uc_mcontext.regs)
     36#define xpGPRvector(x) ((natural *)(XP_PTREGS(x)))
     37#define XP_PTREGS(x) ((x)->uc_mcontext.regs)
     38#define xpGPRvector(x) ((natural *)(XP_PTREGS(x)))
     39#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     40#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     41#define xpPC(x) (*((pc*)(&(XP_PTREGS(x)->nip))))
     42#define set_xpPC(x,new) (xpPC(x) = (pc)(new))
     43#define xpLR(x) (*((pc*)(&(XP_PTREGS(x)->link))))
     44#define xpCTR(x) (*(pc*)(&(XP_PTREGS(x)->ctr)))
     45#define xpXER(x) (XP_PTREGS(x)->xer)
     46#define xpCCR(x) (XP_PTREGS(x)->ccr)
     47#define xpMSR(x) (XP_PTREGS(x)->msr)
     48#define xpDSISR(x) (XP_PTREGS(x)->dsisr)
     49#define xpDAR(x) (XP_PTREGS(x)->dar)
     50#define xpTRAP(x) (XP_PTREGS(x)->trap)
     51#define xpFPSCR(x) (XP_PTREGS(x)->gpr[PT_FPSCR])
     52#define xpFPRvector(x) ((double *)(&(XP_PTREGS(x)->gpr[PT_FPR0])))
     53#define xpFPR(x,fprno) (xpFPRvector(x)[fprno])
     54
     55/*
     56   Work around a Darwin G5 bug (present in OSX 10.2.7, 10.2.8, and later
     57   versions.  See platform-darwinppc*.h for details
     58*/
     59#define DarwinSigReturn(context)
     60#define SIGRETURN(context)
     61
     62#include "os-linux.h"
  • branches/arm/lisp-kernel/platform-linuxppc64.h

    r13629 r13643  
    3030#include "lisptypes.h"
    3131#include "ppc-constants64.h"
     32
     33/* xp accessors.  Logically identical on linuxppc32/64. */
     34#define XP_PTREGS(x) ((x)->uc_mcontext.regs)
     35#define xpGPRvector(x) ((natural *)(XP_PTREGS(x)))
     36#define XP_PTREGS(x) ((x)->uc_mcontext.regs)
     37#define xpGPRvector(x) ((natural *)(XP_PTREGS(x)))
     38#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     39#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     40#define xpPC(x) (*((pc*)(&(XP_PTREGS(x)->nip))))
     41#define set_xpPC(x,new) (xpPC(x) = (pc)(new))
     42#define xpLR(x) (*((pc*)(&(XP_PTREGS(x)->link))))
     43#define xpCTR(x) (*(pc*)(&(XP_PTREGS(x)->ctr)))
     44#define xpXER(x) (XP_PTREGS(x)->xer)
     45#define xpCCR(x) (XP_PTREGS(x)->ccr)
     46#define xpMSR(x) (XP_PTREGS(x)->msr)
     47#define xpDSISR(x) (XP_PTREGS(x)->dsisr)
     48#define xpDAR(x) (XP_PTREGS(x)->dar)
     49#define xpTRAP(x) (XP_PTREGS(x)->trap)
     50#define xpFPSCR(x) (XP_PTREGS(x)->gpr[PT_FPSCR])
     51#define xpFPRvector(x) ((double *)(&(XP_PTREGS(x)->gpr[PT_FPR0])))
     52#define xpFPR(x,fprno) (xpFPRvector(x)[fprno])
     53
     54/*
     55   Work around a Darwin G5 bug (present in OSX 10.2.7, 10.2.8, and later
     56   versions.  See platform-darwinppc*.h for details
     57*/
     58#define DarwinSigReturn(context)
     59#define SIGRETURN(context)
     60
     61#include "os-linux.h"
  • branches/arm/lisp-kernel/platform-linuxx8632.h

    r13629 r13643  
    3131#include "lisptypes.h"
    3232#include "x86-constants32.h"
     33
     34/* xp accessors */
     35#define xpGPRvector(x) ((natural *)(&((x)->uc_mcontext.gregs)))
     36#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     37#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     38#define xpPC(x) (xpGPR(x,Iip))
     39#define xpMMXreg(x,n)  *((natural *)(&((x)->uc_mcontext.fpregs->_st[n])))
     40#define eflags_register(xp) xpGPR(xp,Iflags)
     41#define SIGNUM_FOR_INTN_TRAP SIGSEGV
     42#define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,REG_TRAPNO)==0xd)&&((xpGPR(xp,REG_ERR)&7)==2))
     43#define IS_PAGE_FAULT(info,xp) (xpGPR(xp,REG_TRAPNO)==0xe)
     44#define SIGRETURN(context)
     45
     46#include "os-linux.h"
  • branches/arm/lisp-kernel/platform-linuxx8664.h

    r13629 r13643  
    3030#include "lisptypes.h"
    3131#include "x86-constants64.h"
     32
     33/* xp accessors */
     34#define xpGPRvector(x) ((natural *)(&((x)->uc_mcontext.gregs)))
     35#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     36#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     37#define xpPC(x) (xpGPR(x,Iip))
     38#define xpMMXreg(x,n)  *((natural *)(&((x)->uc_mcontext.fpregs->_st[n])))
     39#define eflags_register(xp) xpGPR(xp,Iflags)
     40#define SIGNUM_FOR_INTN_TRAP SIGSEGV
     41#define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,REG_TRAPNO)==0xd)&&((xpGPR(xp,REG_ERR)&7)==2))
     42#define IS_PAGE_FAULT(info,xp) (xpGPR(xp,REG_TRAPNO)==0xe)
     43#define SIGRETURN(context)
     44
     45#include "os-linux.h"
  • branches/arm/lisp-kernel/platform-solarisx64.h

    r13629 r13643  
    3030#include "lisptypes.h"
    3131#include "x86-constants64.h"
     32
     33#define xpGPRvector(x) ((x)->uc_mcontext.gregs)
     34#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     35#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     36#define xpPC(x) xpGPR(x,Iip)
     37#define eflags_register(xp) xpGPR(xp,Iflags)
     38#define xpXMMregs(x)(&((x)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.xmm[0]))
     39#define SIGNUM_FOR_INTN_TRAP SIGSEGV
     40#ifdef X8664
     41#define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,REG_TRAPNO)==0xd)&&((xpGPR(xp,REG_ERR)&7)==2))
     42#define IS_PAGE_FAULT(info,xp) (xpGPR(xp,REG_TRAPNO)==0xe)
     43#else
     44#define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,TRAPNO)==0xd)&&((xpGPR(xp,ERR)&7)==2))
     45#define IS_PAGE_FAULT(info,xp) (xpGPR(xp,TRAPNO)==0xe)
     46#endif
     47#define SIGRETURN(context) setcontext(context)
     48
     49#include "os-solaris.h"
  • branches/arm/lisp-kernel/platform-solarisx86.h

    r13629 r13643  
    3030#include "lisptypes.h"
    3131#include "x86-constants32.h"
     32
     33#define xpGPRvector(x) ((x)->uc_mcontext.gregs)
     34#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     35#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
     36#define xpPC(x) xpGPR(x,Iip)
     37#define eflags_register(xp) xpGPR(xp,Iflags)
     38#define xpXMMregs(x)(&((x)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.xmm[0]))
     39#define xpMMXreg(x,n)*(natural *)(&(((struct fnsave_state *)(&(((x)->uc_mcontext.fpregs))))->f_st[n]))
     40#define SIGNUM_FOR_INTN_TRAP SIGSEGV
     41#ifdef X8664
     42#define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,REG_TRAPNO)==0xd)&&((xpGPR(xp,REG_ERR)&7)==2))
     43#define IS_PAGE_FAULT(info,xp) (xpGPR(xp,REG_TRAPNO)==0xe)
     44#else
     45#define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,TRAPNO)==0xd)&&((xpGPR(xp,ERR)&7)==2))
     46#define IS_PAGE_FAULT(info,xp) (xpGPR(xp,TRAPNO)==0xe)
     47#endif
     48#define SIGRETURN(context) setcontext(context)
     49
     50#include "os-solaris.h"
  • branches/arm/lisp-kernel/platform-win32.h

    r13629 r13643  
    3232#include "lisptypes.h"
    3333#include "x86-constants32.h"
     34
     35#define xpGPRvector(x) ((DWORD *)(&(x)->Edi))
     36#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     37#define xpPC(x) xpGPR(x,Iip)
     38#define eflags_register(xp) xp->EFlags
     39#define xpFPRvector(x) ((natural *)(&(x->ExtendedRegisters[10*16])))
     40#define xpMMXreg(x,n)  (*((u64_t *)(&(x->FloatSave.RegisterArea[10*(n)]))))
     41#define xpMXCSRptr(x) (DWORD *)(&(x->ExtendedRegisters[24]))
     42
     43#define SIGNUM_FOR_INTN_TRAP SIGSEGV /* Also fake */
     44#define IS_MAYBE_INT_TRAP(info,xp) \
     45  ((info->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) &&       \
     46   (info->ExceptionInformation[0]==0) &&                       \
     47   (info->ExceptionInformation[1]==(ULONG_PTR)(-1L)))
     48#define IS_PAGE_FAULT(info,xp) (1)
     49#define SIGRETURN(context)      /* for now */
     50
     51#include "os-windows.h"
  • branches/arm/lisp-kernel/platform-win64.h

    r13629 r13643  
    3333#include "lisptypes.h"
    3434#include "x86-constants64.h"
     35
     36#define xpGPRvector(x) ((DWORD64 *)(&(x)->Rax))
     37#define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
     38#define xpPC(x) xpGPR(x,Iip)
     39#define eflags_register(xp) xp->EFlags
     40#define xpMXCSRptr(x) (DWORD *)(&(x->MxCsr))
     41
     42
     43#define SIGNUM_FOR_INTN_TRAP SIGSEGV /* Also fake */
     44#define IS_MAYBE_INT_TRAP(info,xp) \
     45  ((info->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) &&       \
     46   (info->ExceptionInformation[0]==0) &&                       \
     47   (info->ExceptionInformation[1]==(ULONG_PTR)(-1L)))
     48#define IS_PAGE_FAULT(info,xp) (1)
     49#define SIGRETURN(context)      /* for now */
     50
     51#include "os-windows.h"
  • branches/arm/lisp-kernel/ppc-exceptions.h

    r13207 r13643  
    2525OSStatus
    2626handle_uuo(ExceptionInformation *, opcode, pc);
    27 
    28 
    29 
    30 #ifdef LINUX
    31 /*
    32   Different (recent) versions of glibc disagree about how
    33   a ucontext is laid out (and about what an mcontext is.)
    34   There's something like a pointer to a pt_regs structure
    35   in the 12th word in both cases.  (Yes, this is an extremely
    36   ugly hack; it would be better to conditionalize on the values
    37   of GLIBC_VERSION/GLIBC_MINOR , but the discrepancy exists
    38   in various flavors of glibc 2.3.)
    39 */
    40 #ifdef PPC64
    41 #define XP_PTREGS(x) ((x)->uc_mcontext.regs)
    42 #define xpGPRvector(x) ((natural *)(XP_PTREGS(x)))
    43 #else
    44 #define XP_PTREGS(x) (((struct pt_regs **)(x))[12])
    45 #define xpGPRvector(x) (XP_PTREGS(x)->gpr)
    46 #endif
    47 #define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
    48 #define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
    49 #define xpPC(x) (*((pc*)(&(XP_PTREGS(x)->nip))))
    50 #define set_xpPC(x,new) (xpPC(x) = (pc)(new))
    51 #define xpLR(x) (*((pc*)(&(XP_PTREGS(x)->link))))
    52 #define xpCTR(x) (*(pc*)(&(XP_PTREGS(x)->ctr)))
    53 #define xpXER(x) (XP_PTREGS(x)->xer)
    54 #define xpCCR(x) (XP_PTREGS(x)->ccr)
    55 #define xpMSR(x) (XP_PTREGS(x)->msr)
    56 #define xpDSISR(x) (XP_PTREGS(x)->dsisr)
    57 #define xpDAR(x) (XP_PTREGS(x)->dar)
    58 #define xpTRAP(x) (XP_PTREGS(x)->trap)
    59 #define xpFPSCR(x) (XP_PTREGS(x)->gpr[PT_FPSCR])
    60 #define xpFPRvector(x) ((double *)(&(XP_PTREGS(x)->gpr[PT_FPR0])))
    61 #define xpFPR(x,fprno) (xpFPRvector(x)[fprno])
    62 
    63 /*
    64    Work around a Darwin G5 bug (present in OSX 10.2.7, 10.2.8, and later
    65    versions.  See below for details.
    66 */
    67 #define DarwinSigReturn(context)
    68 #define SIGRETURN(context)
    69 #endif
    70 
    71 #ifdef DARWIN
    72 #define xpGPRvector(x) (&(UC_MCONTEXT(x)->__ss.__r0))
    73 #define xpGPR(x,gprno) ((xpGPRvector(x))[gprno])
    74 #define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (UInt32)(new)
    75 #define xpPC(x) (*((pc*) &(UC_MCONTEXT(x)->__ss.__srr0)))
    76 #define set_xpPC(x,new) (xpPC(x) = (pc)(new))
    77 #define xpLR(x) (*((pc*)(&(UC_MCONTEXT(x)->__ss.__lr))))
    78 #define xpCTR(x) (*(pc*)(&(UC_MCONTEXT(x)->__ss.__ctr)))
    79 #define xpXER(x) (UC_MCONTEXT(x)->__ss.__xer)
    80 #define xpCCR(x) (UC_MCONTEXT(x)->__ss.__cr)
    81 #define xpMSR(x) (UC_MCONTEXT(x)->__ss.__srr1)
    82 #define xpDSISR(x) (UC_MCONTEXT(x)->__es.__dsisr)
    83 #define xpDAR(x) (UC_MCONTEXT(x)->__es.__dar)
    84 #define xpTRAP(x) (UC_MCONTEXT(x)->__es.__exception)
    85 #define xpFPSCR(x) (UC_MCONTEXT(x)->__fs.__fpscr)
    86 #define xpFPRvector(x) (UC_MCONTEXT(x)->__fs.__fpregs)
    87 #define xpFPR(x,fprno) (xpFPRvector(x)[fprno])
    88 /* There's a bug in some versions of Darwin on G5 processors: FP context
    89    isn't restored correctly on exit from a signal handler if the integer
    90    context appears to be unmodified (the 64-bit context isn't set up
    91    correctly by the kernel: only the first N bytes are copied out of
    92    the kernel, where N = size of 32-bit context.
    93 
    94    If the kernel pushed both a 32-bit and 64-bit context, the C
    95    runtime "signal trampoline" code tries to determine if the 32-bit
    96    GPRs and user-visible SPRs in the 32-bit context contain the same
    97    values as their 64-bit counterparts on exit; if so, it tries to
    98    call sigreturn with an extra argument that indicates that the
    99    thread's state should be restored from the 64-bit context.
    100    (Apparently that's more efficient; it'd be surprising if it'd be
    101    more efficent when the cost of comparing values in the two contexts
    102    is factored in ...).  On some OS releases, the 64-bit context can't
    103    be reliably restored (FPRs get trashed.)
    104 
    105    One way to work around this is to use a deprecated, 32-bit-context-only
    106    version of the sigreturn syscall.  There seems to be reason to be
    107    reason to believe that the old sigreturn syscall will disappear
    108    on OS releases >10.3.
    109 
    110    Another way to work around this is to make a "harmless" change to
    111    an SPR or GPR value in the 32-bit context.  There are lots of
    112    "reserved" bits in the XER that make good candidates: 1's written
    113    to reserved XER bits can't be reliably read anyway, so this may
    114    or may not actually change the value in the XER in a way that
    115    can be reliably detected.
    116 
    117    Note that both the old, deprecated version of sigreturn and the
    118    new version take a first argument of type "struct ucontext *",
    119    not "struct sigcontext *" as the man page and header files claim.
    120    The new version takes a second argument, which is a small integer
    121    which defines what "flavor" of context should be restored from.
    122    The meaningful values that can be used here aren't defined in
    123    a header file; the kernel (and the libc _sigtramp() function)
    124    have (hopefully) matching, redundant hardwired definitions in
    125    the source.
    126 */
    127 #ifdef PPC64
    128 #define DarwinSigReturn(x)
    129 #else
    130 #define DarwinSigReturn(x) (UC_MCONTEXT(x)->__ss.__xer)^=0x80
    131 #endif
    132 #define SIGRETURN(context) DarwinSigReturn(context)
    133 #endif
    134 
    135 
    136 
    13727
    13828
  • branches/arm/lisp-kernel/solarisx64/Makefile

    r13605 r13643  
    6060CHEADERS = area.h bits.h x86-constants.h lisp-errors.h gc.h lisp.h \
    6161        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    62         Threads.h x86-constants64.h x86-exceptions.h lisptypes.h $(PLATFORM_H)
     62        Threads.h x86-constants64.h x86-exceptions.h lisptypes.h \
     63        $(PLATFORM_H) constants.h os-solaris.h
    6364
    6465
  • branches/arm/lisp-kernel/solarisx86/Makefile

    r13605 r13643  
    5959CHEADERS = area.h bits.h x86-constants.h lisp-errors.h gc.h lisp.h \
    6060        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    61         Threads.h x86-constants32.h x86-exceptions.h lisptypes.h $(PLATFORM_H)
     61        Threads.h x86-constants32.h x86-exceptions.h lisptypes.h \
     62        $(PLATFORM_H) constants.h os-solaris.h
    6263
    6364
  • branches/arm/lisp-kernel/win32/Makefile

    r13609 r13643  
    7575        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    7676        Threads.h x86-constants32.h x86-exceptions.h lisptypes.h \
    77         $(PLATFORM_H)
     77        $(PLATFORM_H) constants.h os-windows.h
    7878
    7979
  • branches/arm/lisp-kernel/win64/Makefile

    r13612 r13643  
    7474        lisp-exceptions.h lisp_globals.h macros.h memprotect.h image.h \
    7575        Threads.h x86-constants64.h x86-exceptions.h lisptypes.h \
    76         $(PLATFORM_H)
     76        $(PLATFORM_H) constants.h os-windows.h
    7777
    7878
  • branches/arm/lisp-kernel/x86-exceptions.h

    r13206 r13643  
    1919
    2020typedef u8_t opcode, *pc;
    21 
    22 #ifdef LINUX
    23 #define xpGPRvector(x) ((natural *)(&((x)->uc_mcontext.gregs)))
    24 #define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
    25 #define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
    26 #define xpPC(x) (xpGPR(x,Iip))
    27 #define xpMMXreg(x,n)  *((natural *)(&((x)->uc_mcontext.fpregs->_st[n])))
    28 #define eflags_register(xp) xpGPR(xp,Iflags)
    29 #endif
    30 
    31 #ifdef DARWIN
    32 #define DARWIN_USE_PSEUDO_SIGRETURN 1
    33 #include <sys/syscall.h>
    34 #define DarwinSigReturn(context) do {\
    35     darwin_sigreturn(context);\
    36     Bug(context,"sigreturn returned");\
    37   } while (0)
    38 
    39 #define xpGPRvector(x) ((natural *)(&(UC_MCONTEXT(x)->__ss)))
    40 #define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
    41 #define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
    42 #define xpPC(x) (xpGPR(x,Iip))
    43 #define eflags_register(xp) xpGPR(xp,Iflags)
    44 #define xpFPRvector(x) ((natural *)(&(UC_MCONTEXT(x)->__fs.__fpu_xmm0)))
    45 #define xpMMXvector(x) (&(UC_MCONTEXT(x)->__fs.__fpu_stmm0))
    46 /* Note that this yields only the lower half of the MMX reg on x8632 */
    47 #define xpMMXreg(x,n) *(natural *)&(xpMMXvector(x)[n])
    48 
    49 #include <mach/mach.h>
    50 #include <mach/mach_error.h>
    51 #include <mach/machine/thread_state.h>
    52 #include <mach/machine/thread_status.h>
    53 
    54 pthread_mutex_t *mach_exception_lock;
    55 
    56 #endif
    57 
    58 #ifdef FREEBSD
    59 #ifdef X8664
    60 #include <machine/fpu.h>
    61 #else
    62 #include "freebsdx8632/fpu.h"
    63 #endif
    64 #define xpGPRvector(x) ((natural *)(&((x)->uc_mcontext)))
    65 #define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
    66 #define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
    67 #define eflags_register(xp) xpGPR(xp,Iflags)
    68 #define xpPC(x) xpGPR(x,Iip)
    69 #ifdef X8664
    70 #define xpMMXreg(x,n) *((natural *)(&(((struct savefpu *)(&(x)->uc_mcontext.mc_fpstate))->sv_fp[n])))
    71 #define xpXMMregs(x)(&(((struct savefpu *)(&(x)->uc_mcontext.mc_fpstate))->sv_xmm[0]))
    72 #else
    73 #define xpMMXreg(x,n) *((natural *)(&(((struct ccl_savexmm *)(&(x)->uc_mcontext.mc_fpstate))->sv_fp[n])))
    74 #define xpXMMregs(x)(&(((struct ccl_savexmm *)(&(x)->uc_mcontext.mc_fpstate))->sv_xmm[0]))
    75 #endif
    76 #endif
    77 
    78 #ifdef SOLARIS
    79 #define xpGPRvector(x) ((x)->uc_mcontext.gregs)
    80 #define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
    81 #define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) = (natural)(new)
    82 #define xpPC(x) xpGPR(x,Iip)
    83 #define eflags_register(xp) xpGPR(xp,Iflags)
    84 #define xpXMMregs(x)(&((x)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.xmm[0]))
    85 #ifdef X8632
    86 #define xpMMXreg(x,n)*(natural *)(&(((struct fnsave_state *)(&(((x)->uc_mcontext.fpregs))))->f_st[n]))
    87 #endif
    88 #endif
    89 
    90 #ifdef WINDOWS
    91 #ifdef X8664
    92 #define xpGPRvector(x) ((DWORD64 *)(&(x)->Rax))
    93 #define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
    94 #define xpPC(x) xpGPR(x,Iip)
    95 #define eflags_register(xp) xp->EFlags
    96 #define xpMXCSRptr(x) (DWORD *)(&(x->MxCsr))
    97 #else
    98 #define xpGPRvector(x) ((DWORD *)(&(x)->Edi))
    99 #define xpGPR(x,gprno) (xpGPRvector(x)[gprno])
    100 #define xpPC(x) xpGPR(x,Iip)
    101 #define eflags_register(xp) xp->EFlags
    102 #define xpFPRvector(x) ((natural *)(&(x->ExtendedRegisters[10*16])))
    103 #define xpMMXreg(x,n)  (*((u64_t *)(&(x->FloatSave.RegisterArea[10*(n)]))))
    104 #define xpMXCSRptr(x) (DWORD *)(&(x->ExtendedRegisters[24]))
    105 #endif
    106 #endif
    107 
    108 #ifdef DARWIN
    109 #define SIGNAL_FOR_PROCESS_INTERRUPT SIGUSR1
    110 #endif
    111 #ifdef LINUX
    112 #define SIGNAL_FOR_PROCESS_INTERRUPT SIGPWR
    113 #endif
    114 #ifdef FREEBSD
    115 #define SIGNAL_FOR_PROCESS_INTERRUPT SIGEMT
    116 #endif
    117 #ifdef SOLARIS
    118 #define SIGNAL_FOR_PROCESS_INTERRUPT SIGUSR1
    119 #endif
    120 #ifdef WINDOWS
    121 #define SIGNAL_FOR_PROCESS_INTERRUPT SIGINT
    122 #ifndef SIGBUS
    123 #define SIGBUS 10
    124 #endif
    125 #ifndef CONTEXT_ALL
    126 #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
    127 #endif
    128 #endif
    129 
    130 
    13121
    13222void switch_to_foreign_stack(void*, ...);
     
    17060} alloc_instruction_id;
    17161
    172 #ifdef LINUX
    173 #define SIGNUM_FOR_INTN_TRAP SIGSEGV
    174 #define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,REG_TRAPNO)==0xd)&&((xpGPR(xp,REG_ERR)&7)==2))
    175 #define IS_PAGE_FAULT(info,xp) (xpGPR(xp,REG_TRAPNO)==0xe)
    176 #define SIGRETURN(context)
    177 #endif
    17862
    179 #ifdef FREEBSD
    180 extern void freebsd_sigreturn(ExceptionInformation *);
    181 #define SIGNUM_FOR_INTN_TRAP SIGBUS
    182 #define IS_MAYBE_INT_TRAP(info,xp) ((xp->uc_mcontext.mc_trapno == T_PROTFLT) && ((xp->uc_mcontext.mc_err & 7) == 2))
    183 #define IS_PAGE_FAULT(info,xp) (xp->uc_mcontext.mc_trapno == T_PAGEFLT)
    184 #define SIGRETURN(context) freebsd_sigreturn(context)
    185 #endif
    18663
    187 #ifdef DARWIN
    188 #define SIGNUM_FOR_INTN_TRAP SIGSEGV /* Not really, but our Mach handler fakes that */
    189 #define IS_MAYBE_INT_TRAP(info,xp) ((UC_MCONTEXT(xp)->__es.__trapno == 0xd) && (((UC_MCONTEXT(xp)->__es.__err)&7)==2))
    190 #define IS_PAGE_FAULT(info,xp) (UC_MCONTEXT(xp)->__es.__trapno == 0xe)
    191 /* The x86 version of sigreturn just needs the context argument; the
    192    hidden, magic "flavor" argument that sigtramp uses is ignored. */
    193 #define SIGRETURN(context) DarwinSigReturn(context)
    194 #endif
    19564
    196 #ifdef SOLARIS
    197 #define SIGNUM_FOR_INTN_TRAP SIGSEGV
    198 #ifdef X8664
    199 #define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,REG_TRAPNO)==0xd)&&((xpGPR(xp,REG_ERR)&7)==2))
    200 #define IS_PAGE_FAULT(info,xp) (xpGPR(xp,REG_TRAPNO)==0xe)
    201 #else
    202 #define IS_MAYBE_INT_TRAP(info,xp) ((xpGPR(xp,TRAPNO)==0xd)&&((xpGPR(xp,ERR)&7)==2))
    203 #define IS_PAGE_FAULT(info,xp) (xpGPR(xp,TRAPNO)==0xe)
    204 #endif
    205 #define SIGRETURN(context) setcontext(context)
    206 #endif
    207 
    208 #ifdef WINDOWS
    209 #define SIGNUM_FOR_INTN_TRAP SIGSEGV /* Also fake */
    210 #define IS_MAYBE_INT_TRAP(info,xp) \
    211   ((info->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) &&       \
    212    (info->ExceptionInformation[0]==0) &&                       \
    213    (info->ExceptionInformation[1]==(ULONG_PTR)(-1L)))
    214 #define IS_PAGE_FAULT(info,xp) (1)
    215 #define SIGRETURN(context)      /* for now */
    216 #endif
    21765
    21866/* Please go away. */
     
    25098extern void set_mxcsr(natural);
    25199
    252 #ifdef WINDOWS
    253 typedef struct {
    254   HANDLE h;
    255   OVERLAPPED *o;
    256 } pending_io;
    257 #endif
    258 
    259100#ifdef X8632
    260101/* The 32-bit immediate value in the instruction
Note: See TracChangeset for help on using the changeset viewer.