diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-11-11 13:51:24 +0300 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-11-11 13:51:24 +0300 |
commit | 3b621ee5df437d3f332a635ab6421aaa61a7dc2b (patch) | |
tree | c4a5236cee8eb7418770802313d36a55f1cc0b1e /include/asm-s390/uaccess.h | |
parent | 7211bb9b64f17b23834d91fc3d0c1d78671ee9a8 (diff) | |
parent | 5e04e7fe774794b837e1d3897e6b96ae2d06679a (diff) | |
download | linux-3b621ee5df437d3f332a635ab6421aaa61a7dc2b.tar.xz |
Merge branch 'master'
Diffstat (limited to 'include/asm-s390/uaccess.h')
-rw-r--r-- | include/asm-s390/uaccess.h | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/include/asm-s390/uaccess.h b/include/asm-s390/uaccess.h index 38a5cf8ab9e3..10a619da4761 100644 --- a/include/asm-s390/uaccess.h +++ b/include/asm-s390/uaccess.h @@ -200,21 +200,37 @@ extern int __put_user_bad(void) __attribute__((noreturn)); #define __get_user(x, ptr) \ ({ \ - __typeof__(*(ptr)) __x; \ int __gu_err; \ __chk_user_ptr(ptr); \ switch (sizeof(*(ptr))) { \ - case 1: \ - case 2: \ - case 4: \ - case 8: \ + case 1: { \ + unsigned char __x; \ + __get_user_asm(__x, ptr, __gu_err); \ + (x) = (__typeof__(*(ptr))) __x; \ + break; \ + }; \ + case 2: { \ + unsigned short __x; \ + __get_user_asm(__x, ptr, __gu_err); \ + (x) = (__typeof__(*(ptr))) __x; \ + break; \ + }; \ + case 4: { \ + unsigned int __x; \ + __get_user_asm(__x, ptr, __gu_err); \ + (x) = (__typeof__(*(ptr))) __x; \ + break; \ + }; \ + case 8: { \ + unsigned long long __x; \ __get_user_asm(__x, ptr, __gu_err); \ + (x) = (__typeof__(*(ptr))) __x; \ break; \ + }; \ default: \ __get_user_bad(); \ break; \ } \ - (x) = __x; \ __gu_err; \ }) |