Merge ../linus
[pandora-kernel.git] / arch / parisc / kernel / syscall.S
index b29b76b..9670a89 100644 (file)
        .level          1.1
 #endif
 
-#ifndef CONFIG_64BIT
-       .macro fixup_branch,lbl
-       b           \lbl
-       .endm
-#else
-       .macro fixup_branch,lbl
-       ldil        L%\lbl, %r1
-       ldo         R%\lbl(%r1), %r1
-       bv,n        %r0(%r1)
-       .endm
-#endif
-
        .text
 
        .import syscall_exit,code
@@ -55,7 +43,7 @@
         * pointers.
         */
 
-       .align 4096
+       .align ASM_PAGE_SIZE
 linux_gateway_page:
 
         /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */
@@ -164,7 +152,7 @@ linux_gateway_entry:
 #endif
        STREG   %r2,  TASK_PT_GR30(%r1)         /* ... and save it */
        
-       STREG   %r20, TASK_PT_GR20(%r1)
+       STREG   %r20, TASK_PT_GR20(%r1)         /* Syscall number */
        STREG   %r21, TASK_PT_GR21(%r1)
        STREG   %r22, TASK_PT_GR22(%r1)
        STREG   %r23, TASK_PT_GR23(%r1)         /* 4th argument */
@@ -527,6 +515,7 @@ lws_compare_and_swap:
                We *must* giveup this call and fail.
        */
        ldw     4(%sr2,%r20), %r28                      /* Load thread register */
+       /* WARNING: If cr27 cycles to the same value we have problems */
        mfctl   %cr27, %r21                             /* Get current thread register */
        cmpb,<>,n       %r21, %r28, cas_lock            /* Called recursive? */
        b       lws_exit                                /* Return error! */
@@ -540,7 +529,7 @@ cas_nocontend:
 # endif
 /* ENABLE_LWS_DEBUG */
 
-       ldcw    0(%sr2,%r20), %r28                      /* Try to acquire the lock */
+       LDCW    0(%sr2,%r20), %r28                      /* Try to acquire the lock */
        cmpb,<>,n       %r0, %r28, cas_action           /* Did we get it? */
 cas_wouldblock:
        ldo     2(%r0), %r28                            /* 2nd case */
@@ -631,7 +620,7 @@ cas_action:
 end_compare_and_swap:
 
        /* Make sure nothing else is placed on this page */
-       .align 4096
+       .align ASM_PAGE_SIZE
        .export end_linux_gateway_page
 end_linux_gateway_page:
 
@@ -649,7 +638,9 @@ end_linux_gateway_page:
 #define LWS_ENTRY(_name_) .word  (lws_##_name_ - linux_gateway_page)
 #endif
 
-       .align 4096
+       .section .rodata,"a"
+
+       .align ASM_PAGE_SIZE
        /* Light-weight-syscall table */
        /* Start of lws table. */
        .export lws_table
@@ -659,14 +650,14 @@ lws_table:
        LWS_ENTRY(compare_and_swap64)   /* 1 - ELF64 Atomic compare and swap */
        /* End of lws table */
 
-       .align 4096
+       .align ASM_PAGE_SIZE
        .export sys_call_table
 .Lsys_call_table:
 sys_call_table:
 #include "syscall_table.S"
 
 #ifdef CONFIG_64BIT
-       .align 4096
+       .align ASM_PAGE_SIZE
        .export sys_call_table64
 .Lsys_call_table64:
 sys_call_table64: