Make the ARM stuff build on clang so we can later get the unit test to

work there. also fixes the build.
This commit is contained in:
Henrik Rydgård 2013-09-29 19:59:55 +02:00
parent a2d1fd5a79
commit 4582902cf2
6 changed files with 24 additions and 19 deletions

View File

@ -226,6 +226,8 @@ elseif(X86)
set(CommonExtra ${CommonExtra}
Common/ABI.cpp
Common/ABI.h
Common/ArmEmitter.h
Common/ArmEmitter.cpp
Common/CPUDetect.cpp
Common/CPUDetect.h
Common/Thunk.cpp
@ -718,7 +720,8 @@ elseif(X86)
Core/MIPS/x86/RegCache.cpp
Core/MIPS/x86/RegCache.h
Core/MIPS/x86/RegCacheFPU.cpp
Core/MIPS/x86/RegCacheFPU.h)
Core/MIPS/x86/RegCacheFPU.h
ext/disarm.cpp)
endif()
# atrac3plus.cpp used dl* functions on non-win32 platforms

View File

@ -214,10 +214,10 @@ void ARMXEmitter::FlushLitPool()
// Write the constant to Literal Pool
if (!(*it).loc)
{
(*it).loc = (s32)code;
(*it).loc = (intptr_t)code;
Write32((*it).val);
}
s32 offset = (*it).loc - (s32)(*it).ldr_address - 8;
intptr_t offset = (*it).loc - (intptr_t)(*it).ldr_address - 8;
// Backpatch the LDR
*(u32*)(*it).ldr_address |= (offset >= 0) << 23 | abs(offset);
@ -267,7 +267,7 @@ void ARMXEmitter::QuickCallFunction(ARMReg reg, void *func) {
if (BLInRange(func)) {
BL(func);
} else {
MOVI2R(reg, (u32)(func));
MOVI2R(reg, (uintptr_t)(func));
BL(reg);
}
}
@ -297,13 +297,13 @@ void ARMXEmitter::ReserveCodeSpace(u32 bytes)
const u8 *ARMXEmitter::AlignCode16()
{
ReserveCodeSpace((-(s32)code) & 15);
ReserveCodeSpace((-(intptr_t)code) & 15);
return code;
}
const u8 *ARMXEmitter::AlignCodePage()
{
ReserveCodeSpace((-(s32)code) & 4095);
ReserveCodeSpace((-(intptr_t)code) & 4095);
return code;
}
@ -323,12 +323,14 @@ void ARMXEmitter::FlushIcacheSection(u8 *start, u8 *end)
// Header file says this is equivalent to: sys_icache_invalidate(start, end - start);
sys_cache_control(kCacheFunctionPrepareForExecution, start, end - start);
#elif !defined(_WIN32)
#if defined(ARM)
#ifdef __clang__
__clear_cache(start, end);
#else
__builtin___clear_cache(start, end);
#endif
#endif
#endif
}
void ARMXEmitter::SetCC(CCFlags cond)
@ -390,7 +392,7 @@ FixupBranch ARMXEmitter::B_CC(CCFlags Cond)
}
void ARMXEmitter::B_CC(CCFlags Cond, const void *fnptr)
{
s32 distance = (s32)fnptr - (s32(code) + 8);
s32 distance = (intptr_t)fnptr - ((intptr_t)(code) + 8);
_assert_msg_(JIT, distance > -33554432
&& distance <= 33554432,
"B_CC out of range (%p calls %p)", code, fnptr);
@ -409,7 +411,7 @@ FixupBranch ARMXEmitter::BL_CC(CCFlags Cond)
}
void ARMXEmitter::SetJumpTarget(FixupBranch const &branch)
{
s32 distance = (s32(code) - 8) - (s32)branch.ptr;
s32 distance = ((intptr_t)(code) - 8) - (intptr_t)branch.ptr;
_assert_msg_(JIT, distance > -33554432
&& distance <= 33554432,
"SetJumpTarget out of range (%p calls %p)", code,
@ -423,7 +425,7 @@ void ARMXEmitter::SetJumpTarget(FixupBranch const &branch)
}
void ARMXEmitter::B (const void *fnptr)
{
s32 distance = (s32)fnptr - (s32(code) + 8);
s32 distance = (intptr_t)fnptr - (intptr_t(code) + 8);
_assert_msg_(JIT, distance > -33554432
&& distance <= 33554432,
"B out of range (%p calls %p)", code, fnptr);
@ -437,7 +439,7 @@ void ARMXEmitter::B(ARMReg src)
}
bool ARMXEmitter::BLInRange(const void *fnptr) {
s32 distance = (s32)fnptr - (s32(code) + 8);
s32 distance = (intptr_t)fnptr - (intptr_t(code) + 8);
if (distance <= -33554432 || distance > 33554432)
return false;
else
@ -446,7 +448,7 @@ bool ARMXEmitter::BLInRange(const void *fnptr) {
void ARMXEmitter::BL(const void *fnptr)
{
s32 distance = (s32)fnptr - (s32(code) + 8);
s32 distance = (intptr_t)fnptr - (intptr_t(code) + 8);
_assert_msg_(JIT, distance > -33554432
&& distance <= 33554432,
"BL out of range (%p calls %p)", code, fnptr);

View File

@ -325,7 +325,7 @@ Operand2 AssumeMakeOperand2(u32 imm);
inline Operand2 R(ARMReg Reg) { return Operand2(Reg, TYPE_REG); }
inline Operand2 IMM(u32 Imm) { return Operand2(Imm, TYPE_IMM); }
inline Operand2 Mem(void *ptr) { return Operand2((u32)ptr, TYPE_IMM); }
inline Operand2 Mem(void *ptr) { return Operand2((uintptr_t)ptr, TYPE_IMM); }
//usage: struct {int e;} s; STRUCT_OFFSET(s,e)
#define STRUCT_OFF(str,elem) ((u32)((u32)&(str).elem-(u32)&(str)))

2
lang

@ -1 +1 @@
Subproject commit a52257c30fb0739b828666359ed81763d1ec8fc9
Subproject commit 307b80af9051eab4bf37af646f5bc9bbc778316c

@ -1 +1 @@
Subproject commit 42bffddb5c133c81c88e62cfaca75c68d443f992
Subproject commit c1255c756aae9caf4aa45ccbcb69b02882058288