@@ -30,6 +30,7 @@
(define_constants
[(R0_REGNUM 0) ; First CORE register
(R1_REGNUM 1) ; Second CORE register
+ (R4_REGNUM 4) ; Fifth CORE register
(IP_REGNUM 12) ; Scratch register
(SP_REGNUM 13) ; Stack pointer
(LR_REGNUM 14) ; Return address register
@@ -8118,14 +8119,13 @@
UNSPEC_NONSECURE_MEM)
(match_operand 1 "general_operand" ""))
(use (match_operand 2 "" ""))
- (clobber (reg:SI LR_REGNUM))
- (clobber (reg:SI 4))])]
+ (clobber (reg:SI LR_REGNUM))])]
"use_cmse"
"
{
rtx tmp;
tmp = copy_to_suggested_reg (XEXP (operands[0], 0),
- gen_rtx_REG (SImode, 4),
+ gen_rtx_REG (SImode, R4_REGNUM),
SImode);
operands[0] = replace_equiv_address (operands[0], tmp);
@@ -8210,14 +8210,13 @@
UNSPEC_NONSECURE_MEM)
(match_operand 2 "general_operand" "")))
(use (match_operand 3 "" ""))
- (clobber (reg:SI LR_REGNUM))
- (clobber (reg:SI 4))])]
+ (clobber (reg:SI LR_REGNUM))])]
"use_cmse"
"
{
rtx tmp;
tmp = copy_to_suggested_reg (XEXP (operands[1], 0),
- gen_rtx_REG (SImode, 4),
+ gen_rtx_REG (SImode, R4_REGNUM),
SImode);
operands[1] = replace_equiv_address (operands[1], tmp);
@@ -1732,12 +1732,11 @@
)
(define_insn "*nonsecure_call_reg_thumb1_v5"
- [(call (unspec:SI [(mem:SI (match_operand:SI 0 "register_operand" "l*r"))]
+ [(call (unspec:SI [(mem:SI (reg:SI R4_REGNUM))]
UNSPEC_NONSECURE_MEM)
- (match_operand 1 "" ""))
- (use (match_operand 2 "" ""))
- (clobber (reg:SI LR_REGNUM))
- (clobber (match_dup 0))]
+ (match_operand 0 "" ""))
+ (use (match_operand 1 "" ""))
+ (clobber (reg:SI LR_REGNUM))]
"TARGET_THUMB1 && use_cmse && !SIBLING_CALL_P (insn)"
"bl\\t__gnu_cmse_nonsecure_call"
[(set_attr "length" "4")
@@ -1779,12 +1778,11 @@
(define_insn "*nonsecure_call_value_reg_thumb1_v5"
[(set (match_operand 0 "" "")
(call (unspec:SI
- [(mem:SI (match_operand:SI 1 "register_operand" "l*r"))]
+ [(mem:SI (reg:SI R4_REGNUM))]
UNSPEC_NONSECURE_MEM)
- (match_operand 2 "" "")))
- (use (match_operand 3 "" ""))
- (clobber (reg:SI LR_REGNUM))
- (clobber (match_dup 1))]
+ (match_operand 1 "" "")))
+ (use (match_operand 2 "" ""))
+ (clobber (reg:SI LR_REGNUM))]
"TARGET_THUMB1 && use_cmse"
"bl\\t__gnu_cmse_nonsecure_call"
[(set_attr "length" "4")
@@ -555,12 +555,11 @@
)
(define_insn "*nonsecure_call_reg_thumb2"
- [(call (unspec:SI [(mem:SI (match_operand:SI 0 "s_register_operand" "r"))]
+ [(call (unspec:SI [(mem:SI (reg:SI R4_REGNUM))]
UNSPEC_NONSECURE_MEM)
- (match_operand 1 "" ""))
- (use (match_operand 2 "" ""))
- (clobber (reg:SI LR_REGNUM))
- (clobber (match_dup 0))]
+ (match_operand 0 "" ""))
+ (use (match_operand 1 "" ""))
+ (clobber (reg:SI LR_REGNUM))]
"TARGET_THUMB2 && use_cmse"
"bl\\t__gnu_cmse_nonsecure_call"
[(set_attr "length" "4")
@@ -581,12 +580,11 @@
(define_insn "*nonsecure_call_value_reg_thumb2"
[(set (match_operand 0 "" "")
(call
- (unspec:SI [(mem:SI (match_operand:SI 1 "register_operand" "l*r"))]
+ (unspec:SI [(mem:SI (reg:SI R4_REGNUM))]
UNSPEC_NONSECURE_MEM)
- (match_operand 2 "" "")))
- (use (match_operand 3 "" ""))
- (clobber (reg:SI LR_REGNUM))
- (clobber (match_dup 1))]
+ (match_operand 1 "" "")))
+ (use (match_operand 2 "" ""))
+ (clobber (reg:SI LR_REGNUM))]
"TARGET_THUMB2 && use_cmse"
"bl\t__gnu_cmse_nonsecure_call"
[(set_attr "length" "4")