mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00
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
2 changed files with 30 additions and 0 deletions
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, reloc_offset, name, addend,
|
||||||
reloc_offset);
|
reloc_offset);
|
||||||
break;
|
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:
|
default:
|
||||||
error("unsupported sparc64 relocation (%d) for symbol %s", type, name);
|
error("unsupported sparc64 relocation (%d) for symbol %s", type, name);
|
||||||
}
|
}
|
||||||
|
|
3
elf.h
3
elf.h
|
@ -328,6 +328,9 @@ typedef struct {
|
||||||
#define R_SPARC_11 31
|
#define R_SPARC_11 31
|
||||||
#define R_SPARC_64 32
|
#define R_SPARC_64 32
|
||||||
#define R_SPARC_OLO10 33
|
#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_WDISP16 40
|
||||||
#define R_SPARC_WDISP19 41
|
#define R_SPARC_WDISP19 41
|
||||||
#define R_SPARC_7 43
|
#define R_SPARC_7 43
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue