Commit b80029ca authored by ths's avatar ths
Browse files

Support for more SPARC relocations, by Martin Bochnig.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2407 c046a42c-6fe2-441c-8c8c-71466251a162
parent 43024c6a
......@@ -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);
}
......
......@@ -328,6 +328,9 @@ typedef struct {
#define R_SPARC_11 31
#define R_SPARC_64 32
#define R_SPARC_OLO10 33
#define R_SPARC_HH22 34
#define R_SPARC_HM10 35
#define R_SPARC_LM22 36
#define R_SPARC_WDISP16 40
#define R_SPARC_WDISP19 41
#define R_SPARC_7 43
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment