summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2013-12-30 12:52:32 +0000
committerDamien George <damien.p.george@gmail.com>2013-12-30 12:52:32 +0000
commit212c296c0b24dddd19099f9188176a14ade42d86 (patch)
tree50bdcb156669c1e6c77f0ba37206314f104196c4
parentcd340c44c28e2b07513fbe4d921a7eccca2dcd7a (diff)
downloadmicropython-212c296c0b24dddd19099f9188176a14ade42d86.tar.gz
micropython-212c296c0b24dddd19099f9188176a14ade42d86.zip
Make unix-cpy cross platform; remove dependency of asmx64 on mpconfig.
-rw-r--r--py/asmx64.c8
-rw-r--r--py/showbc.c4
-rw-r--r--stm/Makefile3
-rw-r--r--unix-cpy/Makefile7
-rw-r--r--unix-cpy/mpconfig.h18
-rw-r--r--unix/Makefile3
6 files changed, 30 insertions, 13 deletions
diff --git a/py/asmx64.c b/py/asmx64.c
index c023900a8f..2c56f35c99 100644
--- a/py/asmx64.c
+++ b/py/asmx64.c
@@ -5,7 +5,6 @@
#include <string.h>
#include "misc.h"
-#include "mpconfig.h"
#include "asmx64.h"
/* all offsets are measured in multiples of 8 bytes */
@@ -603,7 +602,12 @@ void asm_x64_call_i1(asm_x64_t* as, void* func, int i1)
*/
void asm_x64_call_ind(asm_x64_t* as, void *ptr, int temp_r64) {
- asm_x64_mov_i64_to_r64_optimised(as, (machine_int_t)ptr, temp_r64);
+#ifdef __LP64__
+ asm_x64_mov_i64_to_r64_optimised(as, (int64_t)ptr, temp_r64);
+#else
+ // If we get here, sizeof(int) == sizeof(void*).
+ asm_x64_mov_i64_to_r64_optimised(as, (int64_t)(unsigned int)ptr, temp_r64);
+#endif
asm_x64_write_byte_2(as, OPCODE_CALL_RM32, MODRM_R64(2) | MODRM_RM_REG | MODRM_RM_R64(temp_r64));
// this reduces code size by 2 bytes per call, but doesn't seem to speed it up at all
// doesn't work anymore because calls are 64 bits away
diff --git a/py/showbc.c b/py/showbc.c
index 600d497960..b063c846ac 100644
--- a/py/showbc.c
+++ b/py/showbc.c
@@ -283,12 +283,12 @@ void mp_show_byte_code(const byte *ip, int len) {
case MP_BC_BUILD_SET:
DECODE_UINT;
- printf("BUILD_SET %lu", unum);
+ printf("BUILD_SET " UINT_FMT, unum);
break;
case MP_BC_SET_ADD:
DECODE_UINT;
- printf("SET_ADD %lu", unum);
+ printf("SET_ADD " UINT_FMT, unum);
break;
case MP_BC_UNPACK_SEQUENCE:
diff --git a/stm/Makefile b/stm/Makefile
index c61900e3d1..0bbc10af50 100644
--- a/stm/Makefile
+++ b/stm/Makefile
@@ -171,6 +171,9 @@ $(BUILD)/%.o: $(CC3KSRC)/%.c
$(BUILD)/%.o: $(PYSRC)/%.s
$(AS) -o $@ $<
+$(BUILD)/%.o: $(PYSRC)/%.S
+ $(CC) $(CFLAGS) -c -o $@ $<
+
$(BUILD)/%.o: $(PYSRC)/%.c mpconfig.h
$(CC) $(CFLAGS) -c -o $@ $<
diff --git a/unix-cpy/Makefile b/unix-cpy/Makefile
index 475b6bd9d4..29ccb32773 100644
--- a/unix-cpy/Makefile
+++ b/unix-cpy/Makefile
@@ -9,6 +9,7 @@ SRC_C = \
main.c \
PY_O = \
+ nlrx86.o \
nlrx64.o \
malloc.o \
qstr.o \
@@ -57,13 +58,13 @@ $(PROG): $(BUILD) $(OBJ)
$(CC) -o $@ $(OBJ) $(LIB) $(LDFLAGS)
$(BUILD):
- mkdir $@
+ mkdir -p $@
$(BUILD)/%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
-$(BUILD)/%.o: $(PYSRC)/%.s
- $(AS) -o $@ $<
+$(BUILD)/%.o: $(PYSRC)/%.S
+ $(CC) $(CFLAGS) -c -o $@ $<
$(BUILD)/%.o: $(PYSRC)/%.c mpconfig.h
$(CC) $(CFLAGS) -c -o $@ $<
diff --git a/unix-cpy/mpconfig.h b/unix-cpy/mpconfig.h
index 9fe8a7ac2e..db72b31455 100644
--- a/unix-cpy/mpconfig.h
+++ b/unix-cpy/mpconfig.h
@@ -8,10 +8,22 @@
// type definitions for the specific machine
-#define BYTES_PER_WORD (8)
+#ifdef __LP64__
+typedef long machine_int_t; // must be pointer size
+typedef unsigned long machine_uint_t; // must be pointer size
+#define UINT_FMT "%lu"
+#define INT_FMT "%ld"
+#else
+// These are definitions for machines where sizeof(int) == sizeof(void*),
+// regardless for actual size.
+typedef int machine_int_t; // must be pointer size
+typedef unsigned int machine_uint_t; // must be pointer size
+#define UINT_FMT "%u"
+#define INT_FMT "%d"
+#endif
+
+#define BYTES_PER_WORD sizeof(machine_int_t)
-typedef int64_t machine_int_t; // must be pointer size
-typedef uint64_t machine_uint_t; // must be pointer size
typedef void *machine_ptr_t; // must be of pointer size
typedef const void *machine_const_ptr_t; // must be of pointer size
typedef double machine_float_t;
diff --git a/unix/Makefile b/unix/Makefile
index 91d05a2ec2..f191044421 100644
--- a/unix/Makefile
+++ b/unix/Makefile
@@ -72,9 +72,6 @@ $(BUILD):
$(BUILD)/%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
-$(BUILD)/%.o: $(PYSRC)/%.s
- $(AS) -o $@ $<
-
$(BUILD)/%.o: $(PYSRC)/%.S
$(CC) $(CFLAGS) -c -o $@ $<