Commit 9e419e38 by H.J. Lu Committed by H.J. Lu

Use movl instead of movabs for x32.

2011-07-10  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_trampoline_init): Use movl instead
	of movabs for x32.

From-SVN: r176129
parent 3db72de3
2011-07-10 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (ix86_trampoline_init): Use movl instead
of movabs for x32.
2011-07-10 Richard Henderson <rth@redhat.com> 2011-07-10 Richard Henderson <rth@redhat.com>
* config/i386/i386.c (x86_output_mi_thunk): Generate rtl and * config/i386/i386.c (x86_output_mi_thunk): Generate rtl and
......
...@@ -22730,7 +22730,7 @@ ix86_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value) ...@@ -22730,7 +22730,7 @@ ix86_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
} }
else else
{ {
int offset = 0; int offset = 0, size;
/* Load the function address to r11. Try to load address using /* Load the function address to r11. Try to load address using
the shorter movl instead of movabs. We may want to support the shorter movl instead of movabs. We may want to support
...@@ -22759,11 +22759,21 @@ ix86_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value) ...@@ -22759,11 +22759,21 @@ ix86_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
/* Load static chain using movabs to r10. */ /* Load static chain using movabs to r10. */
mem = adjust_address (m_tramp, HImode, offset); mem = adjust_address (m_tramp, HImode, offset);
emit_move_insn (mem, gen_int_mode (0xba49, HImode)); /* Use the shorter movl instead of movabs for x32. */
if (TARGET_X32)
{
size = 6;
emit_move_insn (mem, gen_int_mode (0xba41, HImode));
}
else
{
size = 10;
emit_move_insn (mem, gen_int_mode (0xba49, HImode));
}
mem = adjust_address (m_tramp, DImode, offset + 2); mem = adjust_address (m_tramp, ptr_mode, offset + 2);
emit_move_insn (mem, chain_value); emit_move_insn (mem, chain_value);
offset += 10; offset += size;
/* Jump to r11; the last (unused) byte is a nop, only there to /* Jump to r11; the last (unused) byte is a nop, only there to
pad the write out to a single 32-bit store. */ pad the write out to a single 32-bit store. */
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