]> Pileus Git - ~andy/linux/commitdiff
ARC: Change calling convention of do_page_fault()
authorVineet Gupta <vgupta@synopsys.com>
Wed, 18 Sep 2013 10:55:40 +0000 (16:25 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Wed, 6 Nov 2013 05:11:39 +0000 (10:41 +0530)
switch the args (address, pt_regs) to match with all the other "C"
exception handlers.

This removes the awkwardness in EV_ProtV for page fault vs. unaligned
access.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/kernel/entry.S
arch/arc/mm/fault.c
arch/arc/mm/tlbex.S

index b908dde8a331c26a00a4912309af78cf643fc05b..eb3f3c5a700a4fbb3323286d01683bbe3c8d0b46 100644 (file)
@@ -337,9 +337,9 @@ ARC_ENTRY EV_TLBProtV
        ;  vineetg: Mar 6th: Random Seg Fault issue #1
        ;  ecr and efa were not saved in case an Intr sneaks in
        ;  after fake rtie
-       ;
+
        lr  r2, [ecr]
-       lr  r1, [efa]   ; Faulting Data address
+       lr  r0, [efa]   ; Faulting Data address
 
        ; --------(4) Return from CPU Exception Mode ---------
        ;  Fake a rtie, but rtie to next label
@@ -348,6 +348,8 @@ ARC_ENTRY EV_TLBProtV
 
        FAKE_RET_FROM_EXCPN r9
 
+       mov   r1, sp
+
        ;------ (5) Type of Protection Violation? ----------
        ;
        ; ProtV Hardware Exception is triggered for Access Faults of 2 types
@@ -358,14 +360,11 @@ ARC_ENTRY EV_TLBProtV
        bbit1 r2, ECR_C_BIT_PROTV_MISALIG_DATA, 4f
 
        ;========= (6a) Access Violation Processing ========
-       mov r0, sp              ; pt_regs
        bl  do_page_fault
        b   ret_from_exception
 
        ;========== (6b) Non aligned access ============
 4:
-       mov r0, r1
-       mov r1, sp              ; pt_regs
 
 #ifdef  CONFIG_ARC_MISALIGN_ACCESS
        SAVE_CALLEE_SAVED_USER
index 0c14d8a526833fd3236f680abcad6c5f63279d36..9c69552350c49754ee056ab854a5971b460fe5f8 100644 (file)
@@ -52,7 +52,7 @@ bad_area:
        return 1;
 }
 
-void do_page_fault(struct pt_regs *regs, unsigned long address)
+void do_page_fault(unsigned long address, struct pt_regs *regs)
 {
        struct vm_area_struct *vma = NULL;
        struct task_struct *tsk = current;
index cf7d7d9ad695c2e607ab10a9f0423215f079b1f7..3fcfdb38d242d47512a5aa9a174434d25d6e6450 100644 (file)
@@ -369,8 +369,8 @@ do_slow_path_pf:
        EXCEPTION_PROLOGUE
 
        ; ------- setup args for Linux Page fault Hanlder ---------
-       mov_s r0, sp
-       lr  r1, [efa]
+       mov_s r1, sp
+       lr    r0, [efa]
 
        ; We don't want exceptions to be disabled while the fault is handled.
        ; Now that we have saved the context we return from exception hence