Fix use of MSR (immediate)
authorRoberto Vargas <roberto.vargas@arm.com>
Mon, 18 Sep 2017 08:53:25 +0000 (09:53 +0100)
committerRoberto Vargas <roberto.vargas@arm.com>
Mon, 16 Oct 2017 11:13:01 +0000 (12:13 +0100)
commite0f34eaacd714b0f1675eb9dc1777538e6907bfd
tree97032ec0a4cfcef6e00ea09d6d055da52aa7c82e
parent9679297faed7087fa3b84bc52dd7ff211a468583
Fix use of MSR (immediate)

The macro DEFINE_SYSREG_WRITE_CONST_FUNC defines an inline function
to an assembly statement that uses the MSR (immediate) instruction
to access the PSTATE.  The "i" (immediate) assembly constraint on
the operand was only satisfied when compiling with optimizations
enabled which resulted in the function being optimized out - the
"const uint64_t v" parameter was optimized out and replaced by a
literal value.

When compiling without optimizations, the function call remained and
therefore the parameter is not optimized out - compilation fails as
the constraint is impossible to satisfy by the compiler.

This patch replaces the function encapsulating the use of
the MSR (immediate) with a macro that allows the literal value to be
directly fed to the inline assembly statement

Change-Id: Ib379a7acc48ef3cb83090a680cd8a6ce1a94a9d9
Signed-off-by: Roberto Vargas <roberto.vargas@arm.com>
include/lib/aarch64/arch_helpers.h