--- /dev/null
+#ifndef _RTYPES_H_
+#define _RTYPES_H_
+#include <windows.h>
+
+/*
+ * Architecture dependent types. These types have to be redefined
+ * for every architecture
+ */
+typedef signed char rint8;
+typedef unsigned char ruint8;
+typedef signed short rint16;
+typedef unsigned short ruint16;
+typedef signed int rint32;
+typedef unsigned int ruint32;
+typedef signed long long rint64;
+typedef unsigned long long ruint64;
+typedef long ratomic_t;
+typedef ruint64 rword;
+typedef rint64 rsword;
+
+#ifndef _RSIZE_T_DEFINED
+typedef ruint64 rsize_t;
+#define _RSIZE_T_DEFINED
+#endif
+
+#ifndef _RSSIZE_T_DEFINED
+typedef rint64 rssize_t;
+#define _RSSIZE_T_DEFINED
+#endif
+
+/*
+ * Common types. These types should be the same for most of the architectures.
+ */
+typedef int rboolean;
+typedef void *rpointer;
+typedef const void *rconstpointer;
+typedef struct {ruint32 p1; ruint32 p2;} rpair_t;
+
+/*
+ * Atomic operations (Architecture Dependent)
+ */
+#define R_ATOMIC_CMPXCHG(ptr, oldval, newval, resptr) \
+ do { InterlockedCompareExchange (ptr, newval, oldval); *resptr = *ptr; } while (0)
+
+#define R_ATOMIC_XCHG(ptr, val) \
+ do { val = InterlockedExchange (ptr, val); } while (0)
+
+#define R_ATOMIC_ADD(ptr, val) \
+ do { InterlockedExchangeAdd (ptr, val); } while (0)
+
+#define R_ATOMIC_SUB(ptr, val) \
+ do { InterlockedExchangeAdd (ptr, -val); } while (0)
+
+
+#define R_DEBUG_BRAKE do { } while (0)
+#define R_ASSERT(__a__) do {if (!(__a__)) R_DEBUG_BRAKE; } while (0)
+#define R_SIZE_ALIGN(s, n) ((((s) + (n) - 1) / (n)) * (n))
+#define R_MIN(a, b) ((a) < (b) ? (a): (b))
+#define R_MAX(a, b) ((a) > (b) ? (a): (b))
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((rpointer)0)
+#endif
+#endif
+
+#ifndef TRUE
+#define TRUE ((rboolean)1)
+#endif
+
+#ifndef FALSE
+#define FALSE ((rboolean)0)
+#endif
+
+
+typedef enum {
+ RVALSET_NONE = 0,
+ RVALSET_OR,
+ RVALSET_XOR,
+ RVALSET_AND,
+} rvalset_t;
+
+
+#endif
+
--- /dev/null
+!IF "$(BLDCFG)" == ""
+BLDCFG=debug
+!ENDIF
+
+!IF "$(BLDCFG)" != "release" && "$(BLDCFG)" != "debug"
+!MESSAGE Invalid configuration "$(BLDCFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro BLDCFG on the command line. For example:
+!MESSAGE
+!MESSAGE nmake /f makefile BLDCFG=debug
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "release" ( Win32 x86 release build )
+!MESSAGE "debug" ( Win32 x86 debug build)
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+
+PORT=windows
+ARCH=x64
+RPATK_DIR=..\..\..
+
+SUBPROJECTS= \
+ $(RPATK_DIR)\rlib\build\$(PORT)\$(ARCH)+ \
+ $(RPATK_DIR)\rvm\build\$(PORT)\$(ARCH)+ \
+ $(RPATK_DIR)\rpa\build\$(PORT)\$(ARCH)+ \
+ $(RPATK_DIR)\rgrep\build\$(PORT)\$(ARCH)+ \
+ $(RPATK_DIR)\rjs\build\$(PORT)\$(ARCH)+ \
+
+
+ALL : $(SUBPROJECTS)
+
+$(SUBPROJECTS) :
+ @echo Building $(@:+=) ...
+ @cd $(@:+=)
+ @$(MAKE) /NOLOGO /$(MAKEFLAGS)
+ @cd $(MAKEDIR)
+ @echo Built $(@:+=)
+
+CLEAN : $(SUBPROJECTS:+=-clean)
+
+$(SUBPROJECTS:+=-clean) :
+ @echo Building $@ clean ...
+ @cd $(@:-clean=)
+ @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean
+ @cd $(MAKEDIR)
+ @echo Built $@
+
--- /dev/null
+!IF "$(BLDCFG)" == ""
+BLDCFG=debug
+!ENDIF
+
+!IF "$(BLDCFG)" != "release" && "$(BLDCFG)" != "debug"
+!MESSAGE Invalid configuration "$(BLDCFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro BLDCFG on the command line. For example:
+!MESSAGE
+!MESSAGE nmake /f makefile BLDCFG=debug
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "release" ( Win32 x86 release build )
+!MESSAGE "debug" ( Win32 x86 debug build)
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+
+RGREP=rgrep.exe
+PORT=windows
+ARCH=x64
+SRC_DIR=..\..\..
+DEPSRC_DIR=..\..\..\win32
+RPATK_DIR=..\..\..\..
+RPA_LIB="$(RPATK_DIR)\rpa\build\$(PORT)\$(ARCH)\out\rpa.lib"
+RVM_LIB="$(RPATK_DIR)\rvm\build\$(PORT)\$(ARCH)\out\rvm.lib"
+RLIB_LIB="$(RPATK_DIR)\rlib\build\$(PORT)\$(ARCH)\out\rlib.lib"
+INCLUDE_DIRS=/I"$(SRC_DIR)" /I"$(SRC_DIR)\win32" /I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\$(ARCH)"
+
+!IF "$(BLDCFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /ML /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /Fo"$(OUTDIR)\\" /FD /c
+LINK_DEBUG=
+
+!ELSEIF "$(BLDCFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /MLd /Zi /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /Fo"$(OUTDIR)\\" /FD /c
+LINK_DEBUG=/DEBUG
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS)
+LIBS=$(RPA_LIB) $(RVM_LIB) $(RLIB_LIB)
+
+CPP=cl.exe
+# LINK32=lib.exe
+# LINK32_FLAGS=/nologo /LTCG /out:"$(OUTDIR)\$(TARGET)"
+LINK32=link.exe
+LINK32_FLAGS=$(LIBS) kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /incremental:no $(LINK_DEBUG)
+
+RGREP_OBJS= \
+ "$(OUTDIR)\rpagrep.obj" \
+ "$(OUTDIR)\rpagreputf.obj" \
+ "$(OUTDIR)\fsenumwin.obj" \
+ "$(OUTDIR)\rpagrepdep.obj" \
+ "$(OUTDIR)\main.obj" \
+
+
+ALL : "$(OUTDIR)\$(RGREP)"
+
+CLEAN :
+ -@erase "$(OUTDIR)\$(RGREP)"
+ -@erase $(RGREP_OBJS)
+ -@erase *.pdb *.idb *.pch "$(OUTDIR)\*.pdb"
+ -@rd /S /Q "$(OUTDIR)"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)\$(NULL)" mkdir "$(OUTDIR)"
+
+
+"$(OUTDIR)\$(RGREP)" : "$(OUTDIR)" $(RGREP_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) /out:"$(OUTDIR)\$(RGREP)" $(RGREP_OBJS)
+<<
+
+
+SOURCE="$(SRC_DIR)\rpagrep.c"
+"$(OUTDIR)\rpagrep.obj" : $(SOURCE) "$(OUTDIR)"
+ $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rpagreputf.c"
+"$(OUTDIR)\rpagreputf.obj" : $(SOURCE) "$(OUTDIR)"
+ $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(DEPSRC_DIR)\rpagrepdep.c"
+"$(OUTDIR)\rpagrepdep.obj" : $(SOURCE) "$(OUTDIR)"
+ $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(DEPSRC_DIR)\fsenumwin.c"
+"$(OUTDIR)\fsenumwin.obj" : $(SOURCE) "$(OUTDIR)"
+ $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(DEPSRC_DIR)\main.c"
+"$(OUTDIR)\main.obj" : $(SOURCE) "$(OUTDIR)"
+ $(CPP) $(CPP_FLAGS) $(SOURCE)
--- /dev/null
+!IF "$(BLDCFG)" == ""
+BLDCFG=debug
+!ENDIF
+
+!IF "$(BLDCFG)" != "release" && "$(BLDCFG)" != "debug"
+!MESSAGE Invalid configuration "$(BLDCFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro BLDCFG on the command line. For example:
+!MESSAGE
+!MESSAGE nmake /f makefile BLDCFG=debug
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "release" ( Win32 x86 release build )
+!MESSAGE "debug" ( Win32 x86 debug build)
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+
+RJSEXEC=rjsexec.exe
+PORT=windows
+ARCH=x64
+SRC_DIR=..\..\..
+DEPSRC_DIR=$(SRC_DIR)\windows
+RPATK_DIR=..\..\..\..
+RPA_LIB="$(RPATK_DIR)\rpa\build\$(PORT)\$(ARCH)\out\rpa.lib"
+RVM_LIB="$(RPATK_DIR)\rvm\build\$(PORT)\$(ARCH)\out\rvm.lib"
+RLIB_LIB="$(RPATK_DIR)\rlib\build\$(PORT)\$(ARCH)\out\rlib.lib"
+INCLUDE_DIRS=/I"$(SRC_DIR)" /I"$(SRC_DIR)\win32" /I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\$(ARCH)"
+
+!IF "$(BLDCFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /ML /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /Fo"$(OUTDIR)\\" /FD /c
+LINK_DEBUG=
+
+!ELSEIF "$(BLDCFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /MLd /Zi /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_CONSOLE" /YX /Fo"$(OUTDIR)\\" /FD /c
+LINK_DEBUG=/DEBUG
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS)
+LIBS=$(RPA_LIB) $(RVM_LIB) $(RLIB_LIB)
+
+RC=rc.exe
+CPP=cl.exe
+# LINK32=lib.exe
+# LINK32_FLAGS=/nologo /LTCG /out:"$(OUTDIR)\$(TARGET)"
+LINK32=link.exe
+LINK32_FLAGS=$(LIBS) kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /incremental:no $(LINK_DEBUG)
+
+include "../rjs.mk"
--- /dev/null
+
+!IF "$(BLDCFG)" == ""
+BLDCFG=debug
+!ENDIF
+
+!IF "$(BLDCFG)" != "release" && "$(BLDCFG)" != "debug"
+!MESSAGE Invalid configuration "$(BLDCFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro BLDCFG on the command line. For example:
+!MESSAGE
+!MESSAGE nmake /f makefile BLDCFG=debug
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "release" ( Win32 x86 release build )
+!MESSAGE "debug" ( Win32 x86 debug build)
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+PORT=windows
+ARCH=x64
+SRC_DIR=..\..\..
+RPATK_DIR=..\..\..\..
+INCLUDE_DIRS=/I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\$(ARCH)"
+
+
+!IF "$(BLDCFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD /c
+
+!ELSEIF "$(BLDCFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /Zi /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "R_DEBUG_MEMALLOC" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD /c
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS)
+
+!IF "$(DBG_CONSOLE)" == "shut"
+CPP_FLAGS=$(CPP_FLAGS) /D "_SHUT_CONSOLE"
+!ENDIF
+
+
+CPP=cl.exe
+LINK32=lib.exe
+LINK32_FLAGS=/nologo /LTCG /out:"$(OUTDIR)\$(TARGET)"
+# LINK32=link.exe
+# LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /incremental:no /machine:I386 /out:"$(OUTDIR)\$(TARGET)"
+
+include "..\rlib.mk"
r_spinlock_lock(&g_lock);
g_allocmem -= csize;
r_spinlock_unlock(&g_lock);
- size += sizeof(long);
+ size += sizeof(rword);
mem = (rword*)realloc((void*)mem, (size_t)(size));
*mem = size;
r_spinlock_lock(&g_lock);
--- /dev/null
+
+!IF "$(BLDCFG)" == ""
+BLDCFG=debug
+!ENDIF
+
+!IF "$(BLDCFG)" != "release" && "$(BLDCFG)" != "debug"
+!MESSAGE Invalid configuration "$(BLDCFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro BLDCFG on the command line. For example:
+!MESSAGE
+!MESSAGE nmake /f makefile BLDCFG=debug
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "release" ( Win32 x86 release build )
+!MESSAGE "debug" ( Win32 x86 debug build)
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+PORT=windows
+ARCH=x64
+SRC_DIR=..\..\..
+RPATK_DIR=..\..\..\..
+INCLUDE_DIRS=/I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\$(ARCH)"
+
+
+!IF "$(BLDCFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD /c
+
+!ELSEIF "$(BLDCFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /Zi /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD /c
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS)
+
+!IF "$(DBG_CONSOLE)" == "shut"
+CPP_FLAGS=$(CPP_FLAGS) /D "_SHUT_CONSOLE"
+!ENDIF
+
+
+CPP=cl.exe
+LINK32=lib.exe
+LINK32_FLAGS=/nologo /LTCG /out:"$(OUTDIR)\$(TARGET)"
+# LINK32=link.exe
+# LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /incremental:no /machine:I386 /out:"$(OUTDIR)\$(TARGET)"
+
+include "..\rpa.mk"
static void rpavm_swi_shift(rvmcpu_t *cpu, rvm_asmins_t *ins)
{
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
- long top = RVM_CPUREG_GETL(cpu, R_TOP);
+ rsword top = RVM_CPUREG_GETL(cpu, R_TOP);
if ((top = rpa_stat_shift(stat, top)) >= 0)
RVM_CPUREG_SETL(cpu, R_TOP, top);
{
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
rpabitmap_t bitmap = RVM_CPUREG_GETU(cpu, ins->op1);
- long r0 = RVM_CPUREG_GETU(cpu, R0);
+ rword r0 = RVM_CPUREG_GETU(cpu, R0);
if (bitmap && r0 > 0) {
if (!rpa_stat_matchbitmap(stat, RVM_CPUREG_GETL(cpu, R_TOP) - r0, bitmap)) {
static void rpavm_swi_emittail(rvmcpu_t *cpu, rvm_asmins_t *ins)
{
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
- long index = RVM_CPUREG_GETL(cpu, R_REC);
+ rsword index = RVM_CPUREG_GETL(cpu, R_REC);
if (stat->records)
r_array_setlength(stat->records, index + 1);
rpa_ruledata_t *ruledata = RVM_CPUREG_GETP(cpu, ins->op1);
rstr_t name = {(char*)ruledata + ruledata->name, ruledata->namesize};
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
- long index = RVM_CPUREG_GETL(cpu, R_REC);
+ rsword index = RVM_CPUREG_GETL(cpu, R_REC);
rword tp = RVM_CPUREG_GETU(cpu, ins->op2);
rpa_ruledata_t *ruledata = RVM_CPUREG_GETP(cpu, ins->op1);
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
rparecord_t *rec;
- long index = RVM_CPUREG_GETL(cpu, R_REC);
+ rsword index = RVM_CPUREG_GETL(cpu, R_REC);
rword tp = RVM_CPUREG_GETU(cpu, ins->op2);
rstr_t name = {(char*)ruledata + ruledata->name, ruledata->namesize};
rpa_ruledata_t *ruledata = RVM_CPUREG_GETP(cpu, ins->op1);
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
rparecord_t *rec, *startrec;
- long startindex = RVM_CPUREG_GETL(cpu, R1) + 1;
- long index = RVM_CPUREG_GETL(cpu, R_REC);
+ rsword startindex = RVM_CPUREG_GETL(cpu, R1) + 1;
+ rsword index = RVM_CPUREG_GETL(cpu, R_REC);
rword tp = RVM_CPUREG_GETU(cpu, ins->op2);
rword tplen = RVM_CPUREG_GETU(cpu, ins->op3);
rstr_t name = {(char*)ruledata + ruledata->name, ruledata->namesize};
static void rpavm_swi_setcache(rvmcpu_t *cpu, rvm_asmins_t *ins)
{
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
- long r0 = RVM_CPUREG_GETL(cpu, R0);
- long ruleid = RVM_CPUREG_GETL(cpu, ins->op1);
- long prevrec = RVM_CPUREG_GETL(cpu, ins->op2);
- long endrec = RVM_CPUREG_GETL(cpu, ins->op3);
- long top = RVM_CPUREG_GETL(cpu, R_OTP);
- long startrec = 0;
+ rsword r0 = RVM_CPUREG_GETL(cpu, R0);
+ rsword ruleid = RVM_CPUREG_GETL(cpu, ins->op1);
+ rsword prevrec = RVM_CPUREG_GETL(cpu, ins->op2);
+ rsword endrec = RVM_CPUREG_GETL(cpu, ins->op3);
+ rsword top = RVM_CPUREG_GETL(cpu, R_OTP);
+ rsword startrec = 0;
if (r0 > 0 && prevrec != endrec) {
startrec = prevrec + 1;
{
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
rpacachedentry_t *entry;
- long ruleid = RVM_CPUREG_GETL(cpu, ins->op1);
- long top = RVM_CPUREG_GETL(cpu, ins->op2);
- long r0 = 0;
+ rsword ruleid = RVM_CPUREG_GETL(cpu, ins->op1);
+ rsword top = RVM_CPUREG_GETL(cpu, ins->op2);
+ rsword r0 = 0;
entry = rpa_cache_lookup(stat->cache, top, ruleid);
if (entry) {
r0 = entry->ret;
--- /dev/null
+
+!IF "$(BLDCFG)" == ""
+BLDCFG=debug
+!ENDIF
+
+!IF "$(BLDCFG)" != "release" && "$(BLDCFG)" != "debug"
+!MESSAGE Invalid configuration "$(BLDCFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro BLDCFG on the command line. For example:
+!MESSAGE
+!MESSAGE nmake /f makefile BLDCFG=debug
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "release" ( Win32 x86 release build )
+!MESSAGE "debug" ( Win32 x86 debug build)
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+
+PORT=windows
+ARCH=x64
+SRC_DIR=..\..\..
+RPATK_DIR=..\..\..\..
+INCLUDE_DIRS=/I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\$(ARCH)"
+
+
+!IF "$(BLDCFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD /c
+
+!ELSEIF "$(BLDCFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /Zi /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD /c
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS)
+
+!IF "$(DBG_CONSOLE)" == "shut"
+CPP_FLAGS=$(CPP_FLAGS) /D "_SHUT_CONSOLE"
+!ENDIF
+
+
+CPP=cl.exe
+LINK32=lib.exe
+LINK32_FLAGS=/nologo /LTCG /out:"$(OUTDIR)\$(TARGET)"
+# LINK32=link.exe
+# LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /incremental:no /machine:I386 /out:"$(OUTDIR)\$(TARGET)"
+
+include "..\rvm.mk"
if (pi->da) {
*regda = pi->data;
}
+ R_DEBUG_BRAKE;
#if RVM_CONDITIONAL_INSTRUCTIONS
if (pi->cond) {
switch (pi->cond) {
#define RVM_REGISTER_BITS (8 * sizeof(rword))
-#define RVM_SIGN_BIT (1LU << (RVM_REGISTER_BITS - 1))
+#define RVM_SIGN_BIT (((rword)1) << (RVM_REGISTER_BITS - 1))
#define RVM_STATUS_Z (1 << 0)
#define RVM_STATUS_N (1 << 1)
#define RVM_STATUS_C (1 << 2)
#define RVM_CPUREG_SETU(__cpu__, __r__, __val__) RVM_REG_SETU(RVM_CPUREG_PTR(__cpu__, __r__), __val__)
#define RVM_REG_GETL(__r__) (__r__)->v.l
-#define RVM_REG_SETL(__r__, __val__) do { (__r__)->v.l = (long)(__val__); } while (0)
+#define RVM_REG_SETL(__r__, __val__) do { (__r__)->v.l = (rsword)(__val__); } while (0)
#define RVM_CPUREG_GETL(__cpu__, __r__) RVM_CPUREG_PTR(__cpu__, __r__)->v.l
#define RVM_CPUREG_SETL(__cpu__, __r__, __val__) RVM_REG_SETL(RVM_CPUREG_PTR(__cpu__, __r__), __val__)