<div dir="ltr"><div>Hello!<br></div><div><br></div><div>The syscall will get the return value in %rax I believe, so it may be wise to indicate that it gets modified no? I would assume something like</div><div><br></div><div><font face="monospace" color="#990000"><b>int foo; </b></font></div><div><font face="monospace">asm volatile ("syscall" : <font color="#990000"><b>"=a" (foo)</b>:</font> "a"(__NR_tkill), "D"(pid), "S"(SIGHUP) : "rcx", "r11");<br></font></div><div><br></div><div>would instruct the compiler to expect that %rax has been modified, and it can't rely on it staying the same. An optimization pass may otherwise take away the repeated setting of __NR_tkill in %rax. </div><div> </div><div>/V</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 19, 2022 at 2:31 PM 'Edward Liaw' via kernel-team <<a href="mailto:kernel-team@android.com">kernel-team@android.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Indicate to the compiler that the syscall will modify registers rcx<br>
and r11 to prevent loop from getting clobbered.<br>
<br>
Signed-off-by: Edward Liaw <<a href="mailto:edliaw@google.com" target="_blank">edliaw@google.com</a>><br>
<br>
---<br>
When I combined the asm instruction into one line, it threw an error<br>
that the "Asm-specifier for input or output variable conflicts with asm<br>
clobber list" for rax.  I omitted it for now, but I'm not sure if that<br>
is correct.<br>
<br>
Also, is it ok to change the subject line like I did?<br>
---<br>
 testcases/kernel/syscalls/signal/signal06.c | 3 +--<br>
 1 file changed, 1 insertion(+), 2 deletions(-)<br>
<br>
diff --git a/testcases/kernel/syscalls/signal/signal06.c b/testcases/kernel/syscalls/signal/signal06.c<br>
index 64f886ee3..fba380610 100644<br>
--- a/testcases/kernel/syscalls/signal/signal06.c<br>
+++ b/testcases/kernel/syscalls/signal/signal06.c<br>
@@ -72,8 +72,7 @@ void test(void)<br>
        while (D == VALUE && loop < LOOPS) {<br>
                /* sys_tkill(pid, SIGHUP); asm to avoid save/reload<br>
                 * fp regs around c call */<br>
-               asm ("" : : "a"(__NR_tkill), "D"(pid), "S"(SIGHUP));<br>
-               asm ("syscall" : : : "ax");<br>
+               asm volatile ("syscall" : : "a"(__NR_tkill), "D"(pid), "S"(SIGHUP) : "rcx", "r11");<br>
<br>
                loop++;<br>
        }<br>
-- <br>
2.37.2.609.g9ff673ca1a-goog<br>
<br>
-- <br>
To unsubscribe from this group and stop receiving emails from it, send an email to <a href="mailto:kernel-team%2Bunsubscribe@android.com" target="_blank">kernel-team+unsubscribe@android.com</a>.<br>
<br>
</blockquote></div>