mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-02-01 19:23:04 +00:00
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:
parent
a2d1fd5a79
commit
4582902cf2
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
2
lang
@ -1 +1 @@
|
||||
Subproject commit a52257c30fb0739b828666359ed81763d1ec8fc9
|
||||
Subproject commit 307b80af9051eab4bf37af646f5bc9bbc778316c
|
@ -1 +1 @@
|
||||
Subproject commit 42bffddb5c133c81c88e62cfaca75c68d443f992
|
||||
Subproject commit c1255c756aae9caf4aa45ccbcb69b02882058288
|
Loading…
x
Reference in New Issue
Block a user