+2015-06-26 Jiong Wang <jiong.wang@arm.com>
+
+ * config/aarch64/aarch64-protos.h (aarch64_symbol_type): Rename
+ SYMBOL_SMALL_GOT to SYMBOL_SMALL_GOT_4G.
+ * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Ditto.
+ (aarch64_expand_mov_immediate): Ditto.
+ (aarch64_print_operand): Ditto.
+ (aarch64_classify_symbol): Ditto.
+
2015-06-26 Nathan Sidwell <nathan@codesourcery.com>
* config/nvptx/nvptx.md (call_operation): Remove unused variables.
This corresponds to the small code model of the compiler.
- SYMBOL_SMALL_GOT: Similar to the one above but this
+ SYMBOL_SMALL_GOT_4G: Similar to the one above but this
gives us the GOT entry of the symbol being referred to :
Thus calculating the GOT entry for foo is done using the
following sequence of instructions. The ADRP instruction
gets us to the page containing the GOT entry of the symbol
- and the got_lo12 gets us the actual offset in it.
+ and the got_lo12 gets us the actual offset in it, together
+ the base and offset, we can address 4G size GOT table.
adrp x0, :got:foo
ldr x0, [x0, :gotoff_lo12:foo]
enum aarch64_symbol_type
{
SYMBOL_SMALL_ABSOLUTE,
- SYMBOL_SMALL_GOT,
+ SYMBOL_SMALL_GOT_4G,
SYMBOL_SMALL_TLSGD,
SYMBOL_SMALL_TLSDESC,
SYMBOL_SMALL_GOTTPREL,
emit_insn (gen_rtx_SET (dest, imm));
return;
- case SYMBOL_SMALL_GOT:
+ case SYMBOL_SMALL_GOT_4G:
{
/* In ILP32, the mode of dest can be either SImode or DImode,
while the got entry is always of SImode size. The mode of
case SYMBOL_SMALL_TLSGD:
case SYMBOL_SMALL_TLSDESC:
case SYMBOL_SMALL_GOTTPREL:
- case SYMBOL_SMALL_GOT:
+ case SYMBOL_SMALL_GOT_4G:
case SYMBOL_TINY_GOT:
if (offset != const0_rtx)
{
switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR))
{
- case SYMBOL_SMALL_GOT:
+ case SYMBOL_SMALL_GOT_4G:
asm_fprintf (asm_out_file, ":got:");
break;
case 'L':
switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR))
{
- case SYMBOL_SMALL_GOT:
+ case SYMBOL_SMALL_GOT_4G:
asm_fprintf (asm_out_file, ":lo12:");
break;
case AARCH64_CMODEL_SMALL_PIC:
if (!aarch64_symbol_binds_local_p (x))
- return SYMBOL_SMALL_GOT;
+ return SYMBOL_SMALL_GOT_4G;
return SYMBOL_SMALL_ABSOLUTE;
default: