Support for more SPARC relocations, by Martin Bochnig.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2407 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
43024c6a2b
commit
b80029cad1
27
dyngen.c
27
dyngen.c
@ -2349,6 +2349,33 @@ void gen_code(const char *name, host_ulong offset, host_ulong size,
|
||||
reloc_offset, reloc_offset, name, addend,
|
||||
reloc_offset);
|
||||
break;
|
||||
case R_SPARC_HH22:
|
||||
fprintf(outfile,
|
||||
" *(uint32_t *)(gen_code_ptr + %d) = "
|
||||
"((*(uint32_t *)(gen_code_ptr + %d)) "
|
||||
" & ~0x00000000) "
|
||||
" | (((%s + %d) >> 42) & 0x00000000);\n",
|
||||
reloc_offset, reloc_offset, name, addend);
|
||||
break;
|
||||
|
||||
case R_SPARC_LM22:
|
||||
fprintf(outfile,
|
||||
" *(uint32_t *)(gen_code_ptr + %d) = "
|
||||
"((*(uint32_t *)(gen_code_ptr + %d)) "
|
||||
" & ~0x00000000) "
|
||||
" | (((%s + %d) >> 10) & 0x00000000);\n",
|
||||
reloc_offset, reloc_offset, name, addend);
|
||||
break;
|
||||
|
||||
case R_SPARC_HM10:
|
||||
fprintf(outfile,
|
||||
" *(uint32_t *)(gen_code_ptr + %d) = "
|
||||
"((*(uint32_t *)(gen_code_ptr + %d)) "
|
||||
" & ~0x00000000) "
|
||||
" | ((((%s + %d) >> 32 & 0x3ff)) & 0x00000000);\n",
|
||||
reloc_offset, reloc_offset, name, addend);
|
||||
break;
|
||||
|
||||
default:
|
||||
error("unsupported sparc64 relocation (%d) for symbol %s", type, name);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user