X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fruntime.h;h=fec8c7789500652633d1625a54a38e552ad4db9d;hb=bf40ae88bc289fd765a33861cc4bc0853ed483ba;hp=072f5e47b7680e004991efe10ee67ce51ef1db8c;hpb=8ede17a6b75128950ba83bb5e59e6c1b4d6f2746;p=sbcl.git diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h index 072f5e4..fec8c77 100644 --- a/src/runtime/runtime.h +++ b/src/runtime/runtime.h @@ -199,13 +199,24 @@ extern sigset_t blockable_sigset; /* even on alpha, int happens to be 4 bytes. long is longer. */ /* FIXME: these names really shouldn't reflect their length and this is not quite right for some of the FFI stuff */ +#if defined(LISP_FEATURE_WIN32)&&defined(LISP_FEATURE_X86_64) +typedef unsigned long long u64; +typedef signed long long s64; +#else typedef unsigned long u64; typedef signed long s64; +#endif typedef unsigned int u32; typedef signed int s32; /* this is an integral type the same length as a machine pointer */ -typedef unsigned long pointer_sized_uint_t ; +typedef uintptr_t pointer_sized_uint_t; + +#ifdef _WIN64 +#define AMD64_SYSV_ABI __attribute__((sysv_abi)) +#else +#define AMD64_SYSV_ABI +#endif #include @@ -215,12 +226,15 @@ typedef pthread_t os_thread_t; typedef pid_t os_thread_t; #endif +typedef uintptr_t uword_t; +typedef intptr_t sword_t; + /* FIXME: we do things this way because of the alpha32 port. once alpha64 has arrived, all this nastiness can go away */ #if 64 == N_WORD_BITS #define LOW_WORD(c) ((pointer_sized_uint_t)c) #define OBJ_FMTX "lx" -typedef unsigned long lispobj; +typedef uintptr_t lispobj; #else #define OBJ_FMTX "x" #define LOW_WORD(c) ((long)(c) & 0xFFFFFFFFL) @@ -240,7 +254,7 @@ widetag_of(lispobj obj) return obj & WIDETAG_MASK; } -static inline unsigned long +static inline uword_t HeaderValue(lispobj obj) { return obj >> N_WIDETAG_BITS; @@ -309,12 +323,12 @@ make_lispobj(void *o, int low_tag) #define MAKE_FIXNUM(n) (n << N_FIXNUM_TAG_BITS) static inline lispobj -make_fixnum(long n) +make_fixnum(sword_t n) { return MAKE_FIXNUM(n); } -static inline long +static inline sword_t fixnum_value(lispobj n) { return n >> N_FIXNUM_TAG_BITS;