This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ARMCompiler6.18 armasm inline assembly syntax

I tried to switch my compiler from ARM V5 to V6, and I faced a inline assembly funciton conversion issue:

[Original]

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DATA_RAM_FUNCTION __asm void prvEnableVFP_RTT(void)
{
PRESERVE8
/* The FPU enable bits are in the CPACR. */
ldr.w r0, = 0xE000ED88
ldr r1, [r0]
/* Enable CP10 and CP11 coprocessors, then save back. */
// orr r1, r1, #( 0xf << 20 )
orr r1, r1, #0xf00000
str r1, [r0]
bx r14
nop
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[After Conversion]

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
DATA_RAM_FUNCTION void prvEnableVFP_RTT(void)
{
__asm volatile(
".eabi_attribute Tag_ABI_align_preserved, 1 \n"
"ldr.w r0, = %0 \n"
"ldr r1, [r0] \n"
"orr r1, r1, #0xf00000 \n"
"str r1, [r0] \n"
"bx r14 \n"
"nop \n"
: /* no outputs */ : "r"(0xE000ED88) : "r0", "r1", "r14"
);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

There is a error:

./.rtt-studio/Debug\rtthread.axf: Error: L6218E: Undefined symbol r2 (referred from lto-llvm-293411.o).

What's going wrong?

0