mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-18 21:29:19 +02:00
make 9front "work" again by properly handling 64-bit typedefs
This commit is contained in:
parent
de02feb8ff
commit
683554c2ab
4 changed files with 28 additions and 3 deletions
|
@ -8,7 +8,11 @@
|
||||||
#include "chibi/eval.h"
|
#include "chibi/eval.h"
|
||||||
|
|
||||||
#if SEXP_USE_CUSTOM_LONG_LONGS
|
#if SEXP_USE_CUSTOM_LONG_LONGS
|
||||||
|
#ifdef PLAN9
|
||||||
|
#include <ape/stdint.h>
|
||||||
|
#else
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint64_t hi;
|
uint64_t hi;
|
||||||
|
|
|
@ -308,7 +308,7 @@
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
#ifndef SEXP_64_BIT
|
#ifndef SEXP_64_BIT
|
||||||
#if defined(__amd64) || defined(__x86_64) || defined(_WIN64) || defined(_Wp64) || defined(__LP64__) || defined(__PPC64__) || defined(__mips64__) || defined(__sparc64__)
|
#if defined(__amd64) || defined(__x86_64) || defined(_WIN64) || defined(_Wp64) || defined(__LP64__) || defined(__PPC64__) || defined(__mips64__) || defined(__sparc64__) || defined(__arm64)
|
||||||
#define SEXP_64_BIT 1
|
#define SEXP_64_BIT 1
|
||||||
#else
|
#else
|
||||||
#define SEXP_64_BIT 0
|
#define SEXP_64_BIT 0
|
||||||
|
|
|
@ -231,9 +231,15 @@ typedef int sexp_sint_t;
|
||||||
#define sexp_heap_align(n) sexp_align(n, 5)
|
#define sexp_heap_align(n) sexp_align(n, 5)
|
||||||
#define sexp_heap_chunks(n) (sexp_heap_align(n)>>5)
|
#define sexp_heap_chunks(n) (sexp_heap_align(n)>>5)
|
||||||
#elif SEXP_64_BIT
|
#elif SEXP_64_BIT
|
||||||
|
#if PLAN9
|
||||||
|
typedef uintptr sexp_tag_t;
|
||||||
|
typedef uintptr sexp_uint_t;
|
||||||
|
typedef intptr sexp_sint_t;
|
||||||
|
#else
|
||||||
typedef unsigned int sexp_tag_t;
|
typedef unsigned int sexp_tag_t;
|
||||||
typedef unsigned long sexp_uint_t;
|
typedef unsigned long sexp_uint_t;
|
||||||
typedef long sexp_sint_t;
|
typedef long sexp_sint_t;
|
||||||
|
#endif
|
||||||
#define SEXP_PRIdFIXNUM "ld"
|
#define SEXP_PRIdFIXNUM "ld"
|
||||||
#define sexp_heap_align(n) sexp_align(n, 5)
|
#define sexp_heap_align(n) sexp_align(n, 5)
|
||||||
#define sexp_heap_chunks(n) (sexp_heap_align(n)>>5)
|
#define sexp_heap_chunks(n) (sexp_heap_align(n)>>5)
|
||||||
|
@ -244,6 +250,13 @@ typedef int sexp_sint_t;
|
||||||
#define SEXP_PRIdFIXNUM "d"
|
#define SEXP_PRIdFIXNUM "d"
|
||||||
#define sexp_heap_align(n) sexp_align(n, 5)
|
#define sexp_heap_align(n) sexp_align(n, 5)
|
||||||
#define sexp_heap_chunks(n) (sexp_heap_align(n)>>5)
|
#define sexp_heap_chunks(n) (sexp_heap_align(n)>>5)
|
||||||
|
#elif PLAN9
|
||||||
|
typedef uintptr sexp_tag_t;
|
||||||
|
typedef unsigned int sexp_uint_t;
|
||||||
|
typedef int sexp_sint_t;
|
||||||
|
#define SEXP_PRIdFIXNUM "d"
|
||||||
|
#define sexp_heap_align(n) sexp_align(n, 4)
|
||||||
|
#define sexp_heap_chunks(n) (sexp_heap_align(n)>>4)
|
||||||
#else
|
#else
|
||||||
typedef unsigned short sexp_tag_t;
|
typedef unsigned short sexp_tag_t;
|
||||||
typedef unsigned int sexp_uint_t;
|
typedef unsigned int sexp_uint_t;
|
||||||
|
@ -260,7 +273,11 @@ typedef int sexp_sint_t;
|
||||||
|
|
||||||
|
|
||||||
#ifdef SEXP_USE_INTTYPES
|
#ifdef SEXP_USE_INTTYPES
|
||||||
|
#ifdef PLAN9
|
||||||
|
#include <ape/stdint.h>
|
||||||
|
#else
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
# ifdef UINT8_MAX
|
# ifdef UINT8_MAX
|
||||||
# define SEXP_UINT8_DEFINED 1
|
# define SEXP_UINT8_DEFINED 1
|
||||||
typedef uint8_t sexp_uint8_t;
|
typedef uint8_t sexp_uint8_t;
|
||||||
|
@ -276,9 +293,13 @@ typedef int32_t sexp_int32_t;
|
||||||
# else
|
# else
|
||||||
# include <limits.h>
|
# include <limits.h>
|
||||||
# if SEXP_USE_UNIFORM_VECTOR_LITERALS
|
# if SEXP_USE_UNIFORM_VECTOR_LITERALS
|
||||||
|
# ifdef PLAN9
|
||||||
|
# include <ape/stdint.h>
|
||||||
|
# else
|
||||||
# include <stdint.h>
|
# include <stdint.h>
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
# endif
|
||||||
# if UCHAR_MAX == 255
|
# if UCHAR_MAX == 255
|
||||||
# define SEXP_UINT8_DEFINED 1
|
# define SEXP_UINT8_DEFINED 1
|
||||||
typedef unsigned char sexp_uint8_t;
|
typedef unsigned char sexp_uint8_t;
|
||||||
|
|
4
mkfile
4
mkfile
|
@ -7,7 +7,7 @@ MODDIR=/sys/lib/chibi-scheme
|
||||||
CHIBI=./$O.out
|
CHIBI=./$O.out
|
||||||
GENSTATIC=./tools/chibi-genstatic
|
GENSTATIC=./tools/chibi-genstatic
|
||||||
|
|
||||||
CPPFLAGS= -Iinclude -DPLAN9 -DSEXP_USE_GREEN_THREADS=0
|
CPPFLAGS= -Iinclude -DPLAN9 -DSEXP_USE_GREEN_THREADS=0 -D__$objtype
|
||||||
CFLAGS= -p $CPPFLAGS
|
CFLAGS= -p $CPPFLAGS
|
||||||
CFLAGS_STATIC=$CFLAGS -DSEXP_USE_STATIC_LIBS
|
CFLAGS_STATIC=$CFLAGS -DSEXP_USE_STATIC_LIBS
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ COMPILED_LIBS = $CHIBI_COMPILED_LIBS $CHIBI_IO_COMPILED_LIBS \
|
||||||
</sys/src/cmd/mkone
|
</sys/src/cmd/mkone
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $CLEANFILES
|
rm -f $CLEANFILES *.[$OS] [$OS].out
|
||||||
|
|
||||||
clibs.$O: clibs.c
|
clibs.$O: clibs.c
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue