[parisc-linux] fdisk problems 2.4 <-> 2.6

Joel Soete soete.joel@tiscali.be
Sun, 09 Nov 2003 18:59:48 +0000


Just for remainder here is the alignement of uaccess.h (i just finished 
to test on my c110 :)):
----------><----------
--- uaccess.h.orig      2004-04-20 21:03:59.000000000 +0200
+++ uaccess.h   2003-11-09 18:47:06.000000000 +0100
@@ -42,8 +42,8 @@
  #if BITS_PER_LONG == 32
  #define LDD_KERNEL(ptr) __get_kernel_bad();
  #define LDD_USER(ptr) __get_user_bad();
-#define STD_KERNEL(x, ptr) __put_kernel_asm64((u32)x,ptr)
-#define STD_USER(x, ptr) __put_user_asm64((u32)x,ptr)
+#define STD_KERNEL(x, ptr) __put_kernel_asm64((u64)x,ptr)
+#define STD_USER(x, ptr) __put_user_asm64((u64)x,ptr)
  #else
  #define LDD_KERNEL(ptr) __get_kernel_asm("ldd",ptr)
  #define LDD_USER(ptr) __get_user_asm("ldd",ptr)
@@ -213,41 +213,33 @@
                 : "=r"(__pu_err)                            \
                 : "r"(ptr), "r"(x), "0"(__pu_err))

-static inline void __put_kernel_asm64(u64 x, void *ptr)
-{
-       u32 hi = x>>32;
-       u32 lo = x&0xffffffff;
-       __asm__ __volatile__ (
-               "\n1:\tstw %1,0(%0)\n"
-               "\n2:\tstw %2,4(%0)\n"
-               "3:\n"
-               "\t.section __ex_table,\"a\"\n"
-                "\t.word\t1b\n"
-                "\t.word\t(3b-1b)+1\n"
-                "\t.word\t2b\n"
-                "\t.word\t(3b-2b)+1\n"
-                "\t.previous"
-               : : "r"(ptr), "r"(hi), "r"(lo));
-
-}
-
-static inline void __put_user_asm64(u64 x, void *ptr)
-{
-       u32 hi = x>>32;
-       u32 lo = x&0xffffffff;
-       __asm__ __volatile__ (
-               "\n1:\tstw %1,0(%%sr3,%0)\n"
-               "\n2:\tstw %2,4(%%sr3,%0)\n"
-               "3:\n"
-               "\t.section __ex_table,\"a\"\n"
-                "\t.word\t1b\n"
-                "\t.word\t(3b-1b)+1\n"
-                "\t.word\t2b\n"
-                "\t.word\t(3b-2b)+1\n"
-                "\t.previous"
-               : : "r"(ptr), "r"(hi), "r"(lo));
+#define __put_kernel_asm64(x, ptr)                         \
+       __asm__ __volatile__ (                              \
+               "\n1:\tstw\t%2,0(%1)\n"                     \
+               "2:\tstw\t%R2,4(%1)\n"                      \
+               "3:\n"                                      \
+               "\t.section __ex_table,\"a\"\n"             \
+                "\t.word\t1b\n"                            \
+                "\t.word\t(3b-1b)+1\n"                     \
+                "\t.word\t2b\n"                            \
+                "\t.word\t(3b-2b)+1\n"                     \
+                "\t.previous"                              \
+               : "=r"(__pu_err)                            \
+               : "r"(ptr), "r"(x), "0"(__pu_err))

-}
+#define __put_user_asm64(x, ptr)                           \
+       __asm__ __volatile__ (                              \
+               "\n1:\tstw\t%2,0(%%sr3,%1)\n"               \
+               "2:\tstw\t%R2,4(%%sr3,%1)\n"                \
+               "3:\n"                                      \
+               "\t.section __ex_table,\"a\"\n"             \
+                "\t.word\t1b\n"                            \
+                "\t.word\t(3b-1b)+1\n"                     \
+                "\t.word\t2b\n"                            \
+                "\t.word\t(3b-2b)+1\n"                     \
+                "\t.previous"                              \
+               : "=r"(__pu_err)                            \
+               : "r"(ptr), "r"(x), "0"(__pu_err))

  #endif

----------><----------

Cheers,
	Joel

PS: I also attach the patch for easy apply
and here I need the cast.



Matthew Wilcox wrote:
> On Sun, Nov 09, 2003 at 01:50:49PM +0000, Joel Soete wrote:
> 
>>Joel Soete wrote:
>>
>>>----------><----------
>>>--- uaccess.h.orig    2004-04-20 19:58:08.000000000 +0200
>>>+++ uaccess.h-t2    2004-04-20 20:10:41.000000000 +0200
>>>@@ -42,8 +42,8 @@
>>>#if BITS_PER_LONG == 32
>>>#define LDD_KERNEL(ptr) __get_kernel_bad();
>>>#define LDD_USER(ptr) __get_user_bad();
>>>-#define STD_KERNEL(x, ptr) __put_kernel_asm64((u32)x,ptr)
>>>-#define STD_USER(x, ptr) __put_user_asm64((u32)x,ptr)
>>>+#define STD_KERNEL(x, ptr) __put_kernel_asm64((u64)x,ptr)
>>>+#define STD_USER(x, ptr) __put_user_asm64((u64)x,ptr)
>>>#else
>>>#define LDD_KERNEL(ptr) __get_kernel_asm("ldd",ptr)
>>>#define LDD_USER(ptr) __get_user_asm("ldd",ptr)
>>>----------><----------
>>
>>I just test it and it seems to be a fix (among others):
> 
> 
> I figured this out in Chicago airport yesterday.  Grant just pointed
> me to this mail after I checked in the fix deleting the cast entirely.
> Thanks for testing though.
>