+Fri Jul 24 11:17:04 1998 Nick Clifton <nickc@cygnus.com>
+
+ * config/arm/thumb.c (thumb_print_operand): Decode %_ in asm
+ strings as the insertion of USER_LABEL_PREFIX.
+ * config/arm/thumb.h (PRINT_OPERAND_PUNCT_VALID_P): Accept _ as a
+ valid code.
+ * config/arm/thumb.md: Use %_ as a prefix to gcc library function
+ calls.
+
Thu Jul 23 18:53:20 1998 Jim Wilson <wilson@cygnus.com>
* dbxout.c (dbxout_range_type): Only call dbxout_type_index for
fputs (ASM_COMMENT_START, f);
return;
+ case '_':
+ fputs (USER_LABEL_PREFIX, f);
+ return;
+
case 'D':
if (x)
fputs (thumb_condition_code (x, 1), f);
output_addr_const ((STREAM), (X)); \
}
-#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '@')
+#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '@' || ((CODE) == '_'))
/* Emit a special directive when defining a function name.
This is used by the assembler to assit with interworking. */
[(call (mem:SI (match_operand:SI 0 "register_operand" "l*r"))
(match_operand 1 "" ""))]
"! TARGET_CALLER_INTERWORKING"
- "bl\\t__call_via_%0"
+ "bl\\t%__call_via_%0"
[(set_attr "length" "4")])
;; The non THUMB_INTERWORK, non TARGET_CALLER_INTERWORKING version
;; used to be: "mov\\tlr,pc\;bx\\t%0", but the mov does not set
[(call (mem:SI (match_operand:SI 0 "register_operand" "l*r"))
(match_operand 1 "" ""))]
"TARGET_CALLER_INTERWORKING"
- "bl\\t__interwork_call_via_%0"
+ "bl\\t%__interwork_call_via_%0"
[(set_attr "length" "4")])
(define_expand "call_value"
(call (mem:SI (match_operand:SI 1 "register_operand" "l*r"))
(match_operand 2 "" "")))]
"! TARGET_CALLER_INTERWORKING"
- "bl\\t__call_via_%1"
+ "bl\\t%__call_via_%1"
[(set_attr "length" "4")])
;; See comment for call_indirect pattern
(call (mem:SI (match_operand:SI 1 "register_operand" "l*r"))
(match_operand 2 "" "")))]
"TARGET_CALLER_INTERWORKING"
- "bl\\t__interwork_call_via_%1"
+ "bl\\t%__interwork_call_via_%1"
[(set_attr "length" "4")])