@@ -1088,9 +1088,9 @@ arc64_legitimize_address_1 (rtx x, rtx scratch)
1088
1088
a trampoline, leaving space for variable parts. A trampoline looks
1089
1089
like this:
1090
1090
1091
- ldl r12,[pcl,10 ]
1092
- ldl r11,[pcl,18 ]
1093
- j_s [r12]
1091
+ ldl r12,[pcl,12 ]
1092
+ ldl r11,[pcl,16 ]
1093
+ j [r12]
1094
1094
.xword function's address
1095
1095
.xword static chain value
1096
1096
@@ -1099,9 +1099,9 @@ arc64_legitimize_address_1 (rtx x, rtx scratch)
1099
1099
static void
1100
1100
arc64_asm_trampoline_template (FILE * f )
1101
1101
{
1102
- asm_fprintf (f , "\tldl\t%s,[pcl,8 ]\n" , reg_names [12 ]);
1103
- asm_fprintf (f , "\tldl\t%s,[pcl,12 ]\n" , reg_names [STATIC_CHAIN_REGNUM ]);
1104
- asm_fprintf (f , "\tj_s \t[%s]\n" , reg_names [12 ]);
1102
+ asm_fprintf (f , "\tldl\t%s,[pcl,12 ]\n" , reg_names [12 ]);
1103
+ asm_fprintf (f , "\tldl\t%s,[pcl,16 ]\n" , reg_names [STATIC_CHAIN_REGNUM ]);
1104
+ asm_fprintf (f , "\tj \t[%s]\n" , reg_names [12 ]);
1105
1105
assemble_aligned_integer (POINTER_BYTES , const0_rtx );
1106
1106
assemble_aligned_integer (POINTER_BYTES , const0_rtx );
1107
1107
}
@@ -1115,15 +1115,14 @@ arc64_initialize_trampoline (rtx tramp, tree fndecl, rtx cxt)
1115
1115
1116
1116
emit_block_move (tramp , assemble_trampoline_template (),
1117
1117
GEN_INT (TRAMPOLINE_SIZE ), BLOCK_OP_NORMAL );
1118
- emit_move_insn (adjust_address (tramp , Pmode , 8 ), fnaddr );
1119
- emit_move_insn (adjust_address (tramp , Pmode , 12 ), cxt );
1118
+ emit_move_insn (adjust_address (tramp , Pmode , 12 ), fnaddr );
1119
+ emit_move_insn (adjust_address (tramp , Pmode , 20 ), cxt );
1120
1120
emit_library_call (gen_rtx_SYMBOL_REF (Pmode , "__clear_cache" ),
1121
1121
LCT_NORMAL , VOIDmode , XEXP (tramp , 0 ), Pmode ,
1122
1122
plus_constant (Pmode , XEXP (tramp , 0 ), TRAMPOLINE_SIZE ),
1123
1123
Pmode );
1124
1124
}
1125
1125
1126
-
1127
1126
/* Implement FUNCTION_OK_FOR_SIBCALL hook. */
1128
1127
1129
1128
static bool
0 commit comments