[PATCH 1/1]: arm: _syscallX() macros must mark "memory" as clobbered

From: Markus Gutschke
Date: Thu Mar 09 2006 - 18:36:42 EST


From: Markus Gutschke <markus@xxxxxxxxxx>

While other platforms (including x86) have been fixed to mark memory as clobbered by _syscallX()'s, this bug has not yet been fixed for ARM. This patch adds the missing constraints and applies to version 2.6.15.6.

The bug can be tracked at http://bugzilla.kernel.org/show_bug.cgi?id=6205

Signed-off-by: Markus Gutschke <markus@xxxxxxxxxx>

--- --- include/asm-arm/unistd.h.orig 2006-03-05 11:07:54.000000000 -0800
+++ include/asm-arm/unistd.h 2006-03-09 15:10:22.000000000 -0800
@@ -415,7 +415,7 @@
__syscall(name) \
: "=r" (__res_r0) \
: "r" (__r0) \
- : "lr"); \
+ : "lr", "memory"); \
__res = __res_r0; \
__syscall_return(type,__res); \
}
@@ -430,7 +430,7 @@
__syscall(name) \
: "=r" (__res_r0) \
: "r" (__r0),"r" (__r1) \
- : "lr"); \
+ : "lr", "memory"); \
__res = __res_r0; \
__syscall_return(type,__res); \
}
@@ -447,7 +447,7 @@
__syscall(name) \
: "=r" (__res_r0) \
: "r" (__r0),"r" (__r1),"r" (__r2) \
- : "lr"); \
+ : "lr", "memory"); \
__res = __res_r0; \
__syscall_return(type,__res); \
}
@@ -465,7 +465,7 @@
__syscall(name) \
: "=r" (__res_r0) \
: "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3) \
- : "lr"); \
+ : "lr", "memory"); \
__res = __res_r0; \
__syscall_return(type,__res); \
}
@@ -484,7 +484,7 @@
__syscall(name) \
: "=r" (__res_r0) \
: "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3),"r" (__r4) \
- : "lr"); \
+ : "lr", "memory"); \
__res = __res_r0; \
__syscall_return(type,__res); \
}
@@ -503,7 +503,7 @@
__syscall(name) \
: "=r" (__res_r0) \
: "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3), "r" (__r4),"r" (__r5) \
- : "lr"); \
+ : "lr", "memory"); \
__res = __res_r0; \
__syscall_return(type,__res); \
}