make factor compile on win64

db4
Doug Coleman 2008-02-04 11:45:53 -06:00
parent e2c20d23a4
commit bc3bf6b2b4
7 changed files with 26 additions and 10 deletions

View File

@ -65,6 +65,7 @@ default:
@echo "solaris-x86-64"
@echo "windows-ce-arm"
@echo "windows-nt-x86-32"
@echo "windows-nt-x86-64"
@echo ""
@echo "Additional modifiers:"
@echo ""
@ -125,6 +126,9 @@ solaris-x86-64:
windows-nt-x86-32:
$(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.32
windows-nt-x86-64:
$(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.64
windows-ce-arm:
$(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.ce.arm
@ -151,7 +155,7 @@ clean:
rm -f factor*.dll libfactor*.*
vm/resources.o:
windres vm/factor.rs vm/resources.o
$(WINDRES) vm/factor.rs vm/resources.o
.c.o:
$(CC) -c $(CFLAGS) -o $@ $<

View File

@ -1,3 +1,4 @@
WINDRES=windres
include vm/Config.windows.nt
include vm/Config.x86.32
#error "lolllll"

View File

@ -1,4 +1,6 @@
CC=/k/target/bin/x86_64-pc-mingw32-gcc
#WIN64_PATH=/k/MinGW/win64/bin
WIN64_PATH=/cygdrive/k/MinGW/win64/bin/x86_64-pc-mingw32
CC=$(WIN64_PATH)-gcc.exe
WINDRES=$(WIN64_PATH)-windres.exe
include vm/Config.windows.nt
include vm/Config.x86.64
WINDRES = /k/target/bin/windres

2
vm/os-windows-nt.32.h Normal file
View File

@ -0,0 +1,2 @@
#define ESP Esp
#define EIP Eip

2
vm/os-windows-nt.64.h Normal file
View File

@ -0,0 +1,2 @@
#define ESP Rsp
#define EIP Rip

View File

@ -57,26 +57,26 @@ long exception_handler(PEXCEPTION_POINTERS pe)
PEXCEPTION_RECORD e = (PEXCEPTION_RECORD)pe->ExceptionRecord;
CONTEXT *c = (CONTEXT*)pe->ContextRecord;
if(in_code_heap_p(c->Eip))
signal_callstack_top = (void *)c->Esp;
if(in_code_heap_p(c->EIP))
signal_callstack_top = (void *)c->ESP;
else
signal_callstack_top = NULL;
if(e->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)
{
signal_fault_addr = e->ExceptionInformation[1];
c->Eip = (CELL)memory_signal_handler_impl;
c->EIP = (CELL)memory_signal_handler_impl;
}
else if(e->ExceptionCode == EXCEPTION_FLT_DIVIDE_BY_ZERO
|| e->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO)
{
signal_number = ERROR_DIVIDE_BY_ZERO;
c->Eip = (CELL)divide_by_zero_signal_handler_impl;
c->EIP = (CELL)divide_by_zero_signal_handler_impl;
}
else
{
signal_number = 11;
c->Eip = (CELL)misc_signal_handler_impl;
c->EIP = (CELL)misc_signal_handler_impl;
}
return EXCEPTION_CONTINUE_EXECUTION;

View File

@ -1,11 +1,11 @@
#if defined(__arm__)
#define FACTOR_ARM
#elif defined(__amd64__) || defined(__x86_64__)
#define FACTOR_AMD64
#elif defined(i386) || defined(__i386) || defined(__i386__) || defined(WIN32)
#define FACTOR_X86
#elif defined(__POWERPC__) || defined(__ppc__) || defined(_ARCH_PPC)
#define FACTOR_PPC
#elif defined(__amd64__) || defined(__x86_64__)
#define FACTOR_AMD64
#else
#error "Unsupported architecture"
#endif
@ -18,6 +18,11 @@
#endif
#include "os-windows.h"
#if defined(FACTOR_AMD64)
#include "os-windows-nt.64.h"
#elif defined(FACTOR_X86)
#include "os-windows-nt.32.h"
#endif
#else
#include "os-unix.h"