mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
Change the #ifdefs to allow compilation with a V8 compiler, but the JIT still
won't work if not compiled in V9 mode, currently by GCC only, because Sun's system compiler does not tell us if it's a V8 or V9 system. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16602 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a71989f11b
commit
1155d31ef6
@ -211,7 +211,7 @@ void JITResolver::insertFarJumpAtAddr(int64_t Target, uint64_t Addr) {
|
||||
|
||||
void JITResolver::SaveRegisters(uint64_t DoubleFP[], uint64_t CC[],
|
||||
uint64_t Globals[]) {
|
||||
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
|
||||
#if defined(__sparcv9)
|
||||
|
||||
__asm__ __volatile__ (// Save condition-code registers
|
||||
"stx %%fsr, %0;\n\t"
|
||||
@ -267,7 +267,7 @@ void JITResolver::SaveRegisters(uint64_t DoubleFP[], uint64_t CC[],
|
||||
void JITResolver::RestoreRegisters(uint64_t DoubleFP[], uint64_t CC[],
|
||||
uint64_t Globals[])
|
||||
{
|
||||
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
|
||||
#if defined(__sparcv9)
|
||||
|
||||
__asm__ __volatile__ (// Restore condition-code registers
|
||||
"ldx %0, %%fsr;\n\t"
|
||||
@ -333,7 +333,7 @@ void JITResolver::CompilationCallback() {
|
||||
int64_t Target = (int64_t)TheJITResolver->resolveFunctionReference(CameFrom);
|
||||
DEBUG(std::cerr << "In callback! Addr=0x" << std::hex << CameFrom << "\n");
|
||||
register int64_t returnAddr = 0;
|
||||
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
|
||||
#if defined(__sparcv9)
|
||||
__asm__ __volatile__ ("add %%i7, %%g0, %0" : "=r" (returnAddr) : );
|
||||
DEBUG(std::cerr << "Read i7 (return addr) = "
|
||||
<< std::hex << returnAddr << ", value: "
|
||||
@ -389,7 +389,7 @@ void JITResolver::CompilationCallback() {
|
||||
|
||||
// Flush the I-Cache: FLUSH clears out a doubleword at a given address
|
||||
// Self-modifying code MUST clear out the I-Cache to be portable
|
||||
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
|
||||
#if defined(__sparcv9)
|
||||
for (int i = -Offset, e = 32-((int64_t)Offset); i < e; i += 8)
|
||||
__asm__ __volatile__ ("flush %%i7 + %0" : : "r" (i));
|
||||
#endif
|
||||
@ -397,7 +397,7 @@ void JITResolver::CompilationCallback() {
|
||||
// Change the return address to re-execute the restore, then the jump.
|
||||
DEBUG(std::cerr << "Callback returning to: 0x"
|
||||
<< std::hex << (CameFrom-Offset-12) << "\n");
|
||||
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
|
||||
#if defined(__sparcv9)
|
||||
__asm__ __volatile__ ("sub %%i7, %0, %%i7" : : "r" (Offset+12));
|
||||
#endif
|
||||
|
||||
|
@ -65,7 +65,7 @@ namespace {
|
||||
}
|
||||
|
||||
unsigned SparcV9TargetMachine::getJITMatchQuality() {
|
||||
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
|
||||
#if defined(__sparcv9)
|
||||
return 10;
|
||||
#else
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user