core: Support x86_64.
authorJan Nieuwenhuizen <janneke@gnu.org>
Thu, 4 Oct 2018 19:43:45 +0000 (21:43 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 4 Oct 2018 19:43:45 +0000 (21:43 +0200)
* src/lib.c: Support x86_64.
* src/math.c: Likewise.
* src/mes.c: Likewise.
* src/reader.c: Likewise.
* src/vector.c Likewise.

build-aux/build-x86_64-mes.sh
src/lib.c
src/math.c
src/mes.c
src/reader.c
src/vector.c

index 4f35f0e1fc95f14b8357f07b6ed38a60864c9b7c..b3d3d2400229b54151f1b0e86f90b5001d48df21 100755 (executable)
@@ -157,4 +157,5 @@ bash ${srcdest}build-aux/cc-x86_64-mes.sh scaffold/malloc
 ##sh ${srcdest}build-aux/cc-x86_64-mes.sh scaffold/tiny-mes
 # bash ${srcdest}build-aux/cc-x86_64-mes.sh scaffold/mini-mes
 bash ${srcdest}build-aux/cc-x86_64-mes.sh src/mes
-cp src/mes.x86_64-mes-out src/mes
+# not yet, broken
+# cp src/mes.x86_64-mes-out src/mes
index ff0574b2762886d9ea87470b74132b5329a11e73..999f35caf4350fcdb7745741f9f4efabb038dd1d 100644 (file)
--- a/src/lib.c
+++ b/src/lib.c
@@ -37,7 +37,7 @@ display_helper (SCM x, int cont, char* sep, int fd, int write_p)
       else
         {
           fdputs ("#\\", fd);
-          int v = VALUE (x);
+          long v = VALUE (x);
           if (v == '\0') fdputs ("nul", fd);
           else if (v == '\a') fdputs ("alarm", fd);
           else if (v == '\b') fdputs ("backspace", fd);
@@ -139,7 +139,7 @@ display_helper (SCM x, int cont, char* sep, int fd, int write_p)
       SCM t = CAR (x);
       while (t && t != cell_nil)
         {
-          int v = write_p ? VALUE (CAR (t)) : -1;
+          long v = write_p ? VALUE (CAR (t)) : -1;
           if (v == '\0') fdputs ("\\0", fd);
           else if (v == '\a') fdputs ("\\a", fd);
           else if (v == '\b') fdputs ("\\b", fd);
@@ -170,7 +170,7 @@ display_helper (SCM x, int cont, char* sep, int fd, int write_p)
     {
       fdputs ("#(", fd);
       SCM t = CAR (x);
-      for (int i = 0; i < LENGTH (x); i++)
+      for (long i = 0; i < LENGTH (x); i++)
         {
           if (i)
             fdputc (' ', fd);
@@ -302,7 +302,7 @@ equal2_p (SCM a, SCM b)
     {
       if (LENGTH (a) != LENGTH (b))
         return cell_f;
-      for (int i=0; i < LENGTH (a); i++)
+      for (long i=0; i < LENGTH (a); i++)
         {
           SCM ai = VECTOR (a) + i;
           SCM bi = VECTOR (b) + i;
index 1b3477d5a15110f85fad7e5fe4cea38994186b32..b33af93315b032f1efcb87b2cadc201d0c5d98e5 100644 (file)
@@ -36,7 +36,7 @@ greater_p (SCM x) ///((name . ">") (arity . n))
   if (x == cell_nil)
     return cell_t;
   assert_number ("greater_p", CAR (x));
-  int n = VALUE (CAR (x));
+  long n = VALUE (CAR (x));
   x = CDR (x);
   while (x != cell_nil)
     {
@@ -55,7 +55,7 @@ less_p (SCM x) ///((name . "<") (arity . n))
   if (x == cell_nil)
     return cell_t;
   assert_number ("less_p", CAR (x));
-  int n = VALUE (CAR (x));
+  long n = VALUE (CAR (x));
   x = CDR (x);
   while (x != cell_nil)
     {
@@ -74,7 +74,7 @@ is_p (SCM x) ///((name . "=") (arity . n))
   if (x == cell_nil)
     return cell_t;
   assert_number ("is_p", CAR (x));
-  int n = VALUE (CAR (x));
+  long n = VALUE (CAR (x));
   x = cdr (x);
   while (x != cell_nil)
     {
@@ -89,7 +89,7 @@ SCM
 minus (SCM x) ///((name . "-") (arity . n))
 {
   assert_number ("minus", CAR (x));
-  int n = VALUE (CAR (x));
+  long n = VALUE (CAR (x));
   x = cdr (x);
   if (x == cell_nil)
     n = -n;
@@ -105,7 +105,7 @@ minus (SCM x) ///((name . "-") (arity . n))
 SCM
 plus (SCM x) ///((name . "+") (arity . n))
 {
-  int n = 0;
+  long n = 0;
   while (x != cell_nil)
     {
       assert_number ("plus", CAR (x));
@@ -118,7 +118,7 @@ plus (SCM x) ///((name . "+") (arity . n))
 SCM
 divide (SCM x) ///((name . "/") (arity . n))
 {
-  int n = 1;
+  long n = 1;
   if (x != cell_nil)
     {
       assert_number ("divide", CAR (x));
@@ -139,7 +139,7 @@ modulo (SCM a, SCM b)
 {
   assert_number ("modulo", a);
   assert_number ("modulo", b);
-  int x = VALUE (a);
+  long x = VALUE (a);
   while (x < 0) x += VALUE (b);
   return MAKE_NUMBER (x % VALUE (b));
 }
@@ -147,7 +147,7 @@ modulo (SCM a, SCM b)
 SCM
 multiply (SCM x) ///((name . "*") (arity . n))
 {
-  int n = 1;
+  long n = 1;
   while (x != cell_nil)
     {
       assert_number ("multiply", CAR (x));
@@ -160,7 +160,7 @@ multiply (SCM x) ///((name . "*") (arity . n))
 SCM
 logand (SCM x) ///((arity . n))
 {
-  int n = 0;
+  long n = 0;
   while (x != cell_nil)
     {
       assert_number ("multiply", CAR (x));
@@ -173,7 +173,7 @@ logand (SCM x) ///((arity . n))
 SCM
 logior (SCM x) ///((arity . n))
 {
-  int n = 0;
+  long n = 0;
   while (x != cell_nil)
     {
       assert_number ("logior", CAR (x));
@@ -187,14 +187,14 @@ SCM
 lognot (SCM x)
 {
   assert_number ("lognot", x);
-  int n = ~VALUE (x);
+  long n = ~VALUE (x);
   return MAKE_NUMBER (n);
 }
 
 SCM
 logxor (SCM x) ///((arity . n))
 {
-  int n = 0;
+  long n = 0;
   while (x != cell_nil)
     {
       assert_number ("logxor", CAR (x));
@@ -209,7 +209,7 @@ ash (SCM n, SCM count)
 {
   assert_number ("ash", n);
   assert_number ("ash", count);
-  int cn = VALUE (n);
-  int ccount = VALUE (count);
+  long cn = VALUE (n);
+  long ccount = VALUE (count);
   return MAKE_NUMBER ((ccount < 0) ? cn >> -ccount : cn << ccount);
 }
index 46020d13329d2e4777f9623505d0021d9334fb6c..64c380d60e7a930f88772f02b9f833661a1d7a91 100644 (file)
--- a/src/mes.c
+++ b/src/mes.c
@@ -39,7 +39,7 @@ char *g_arena = 0;
 typedef long SCM;
 
 int g_debug = 0;
-int g_free = 0;
+long g_free = 0;
 
 SCM g_continuations = 0;
 SCM g_symbols = 0;
@@ -1029,7 +1029,7 @@ eval_apply ()
   int global_p;
   int macro_p;
   int t;
-  int c;
+  long c;
 
  eval_apply:
   if (r3 == cell_vm_evlis) goto evlis;
index 2cf54d00b37eae80b02c3e3e350484211d748f4d..3d9355a028db0e7fdb46810f358f9cf94176c2f8 100644 (file)
@@ -507,7 +507,7 @@ dump ()
       eputs ("\n");
     }
 
-  int i;
+  long i;
   for (i=0; i<g_free * sizeof (struct scm); i = i + 1)
     {
       putchar (p[0]);
index 86b61bf37565697e71553513cff9c16f00302814..0e34d93c89553bd9b6d71c97d391e01d9520e5da 100644 (file)
  */
 
 SCM
-make_vector__ (int k)
+make_vector__ (long k)
 {
   SCM v = alloc (k);
   SCM x = make_cell__ (TVECTOR, k, v);
-  for (int i=0; i<k; i++)
+  for (long i=0; i<k; i++)
     g_cells[v+i] = g_cells[vector_entry (cell_unspecified)];
   return x;
 }
@@ -91,7 +91,7 @@ SCM
 vector_to_list (SCM v)
 {
   SCM x = cell_nil;
-  for (int i = LENGTH (v); i; i--)
+  for (long i = LENGTH (v); i; i--)
     {
       SCM e = VECTOR (v)+i-1;
       if (TYPE (e) == TREF)