Merge branch 'wip' of oss.readytalk.com:/var/local/git/avian into wip

This commit is contained in:
Joel Dice 2009-10-29 16:19:51 -06:00
commit d7d7443688
6 changed files with 489 additions and 539 deletions

View File

@ -133,6 +133,21 @@ ifeq ($(arch),powerpc)
asm = powerpc
pointer-size = 4
endif
ifeq ($(arch),arm)
lflags := -L/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-unknown-linux-gnu/arm-unknown-linux-gnu/lib -L$(root)/arm/lib $(lflags)
cflags := -I/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-unknown-linux-gnu/arm-unknown-linux-gnu/include -I$(root)/arm/include $(cflags)
asm = arm
object-arch = arm
object-format = elf32-littlearm
pointer-size = 4
cxx = arm-unknown-linux-gnu-g++
cc = arm-unknown-linux-gnu-gcc
ar = arm-unknown-linux-gnu-ar
ranlib = arm-unknown-linux-gnu-ranlib
objcopy = arm-unknown-linux-gnu-objcopy
strip = arm-unknown-linux-gnu-strip
endif
ifeq ($(platform),darwin)
build-cflags = $(common-cflags) -fPIC -fvisibility=hidden -I$(src)

File diff suppressed because it is too large Load Diff

View File

@ -895,6 +895,12 @@ class Context {
} else {
assert(t, size == 4);
switch (op) {
case Divide:
return local::getThunk(t, divideIntThunk);
case Remainder:
return local::getThunk(t, moduloIntThunk);
case FloatAdd:
return local::getThunk(t, addFloatThunk);
@ -2160,12 +2166,23 @@ divideLong(int64_t b, int64_t a)
return a / b;
}
int64_t
divideInt(int32_t b, int32_t a)
{
return a / b;
}
int64_t
moduloLong(int64_t b, int64_t a)
{
return a % b;
}
int64_t
moduloInt(int32_t b, int32_t a) {
return a % b;
}
uint64_t
floatToDouble(int32_t a)
{

View File

@ -25,7 +25,7 @@
#include "unistd.h"
#include "pthread.h"
#include "signal.h"
#include "ucontext.h"
#include "sys/ucontext.h"
#include "stdint.h"
#include "dirent.h"

View File

@ -1073,10 +1073,7 @@ load(Context* c, unsigned srcSize, int base, int offset, int index,
break;
case 8: {
if (srcSize == 4 and dstSize == 8) {
load(c, 4, base, offset, NoRegister, 1, 4, dst, false, false);
moveRR(c, 4, dst, 8, dst);
} else if (srcSize == 8 and dstSize == 8) {
if (dstSize == 8) {
Assembler::Register dstHigh(dst->high);
load(c, 4, base, offset, NoRegister, 1, 4, &dstHigh, false, false);
load(c, 4, base, offset + 4, NoRegister, 1, 4, dst, false, false);

View File

@ -23,7 +23,9 @@ THUNK(moduloFloat)
THUNK(negateFloat)
THUNK(absoluteFloat)
THUNK(divideLong)
THUNK(divideInt)
THUNK(moduloLong)
THUNK(moduloInt)
THUNK(floatToDouble)
THUNK(floatToInt)
THUNK(floatToLong)