Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98d4ded6 authored by Stephen Boyd's avatar Stephen Boyd Committed by David Brown
Browse files

msm: scm: Fix improper register assignment



Assign the registers used in the inline assembly immediately
before the inline assembly block. This ensures the compiler
doesn't optimize away dead register assignments when it
shouldn't.

Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Acked-by: default avatarNicolas Pitre <nico@fluxnic.net>
Signed-off-by: default avatarDavid Brown <davidb@codeaurora.org>
parent 7e1a68ab
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -264,13 +264,16 @@ u32 scm_get_version(void)
{
	int context_id;
	static u32 version = -1;
	register u32 r0 asm("r0") = 0x1 << 8;
	register u32 r1 asm("r1") = (u32)&context_id;
	register u32 r0 asm("r0");
	register u32 r1 asm("r1");

	if (version != -1)
		return version;

	mutex_lock(&scm_lock);

	r0 = 0x1 << 8;
	r1 = (u32)&context_id;
	asm volatile(
		__asmeq("%0", "r1")
		__asmeq("%1", "r0")