ARC: [tlb-miss] Extraneous PTE bit testing/setting
authorVineet Gupta <vgupta@synopsys.com>
Mon, 17 Jun 2013 06:05:15 +0000 (11:35 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Thu, 27 Jun 2013 09:07:57 +0000 (14:37 +0530)
* No need to check for READ access in I-TLB Miss handler

* Redundant PAGE_PRESENT update in PTE

Post TLB entry installation, in updating PTE for software accessed/dity
bits, no need to update PAGE_PRESENT since it will already be set.
Infact the entry won't have installed if !PAGE_PRESENT.

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

index 8d61fdf7a43bf6b39a5fa86980c3d164d2571492..fcdc19ff6da7746d9b32e7a6a7718d4f57820653 100644 (file)
@@ -277,16 +277,16 @@ ARC_ENTRY EV_TLBMissI
        ;----------------------------------------------------------------
        ; VERIFY_PTE: Check if PTE permissions approp for executing code
        cmp_s   r2, VMALLOC_START
-       mov.lo  r2, (_PAGE_PRESENT | _PAGE_U_READ | _PAGE_U_EXECUTE)
-       mov.hs  r2, (_PAGE_PRESENT | _PAGE_K_READ | _PAGE_K_EXECUTE)
+       mov.lo  r2, (_PAGE_PRESENT | _PAGE_U_EXECUTE)
+       mov.hs  r2, (_PAGE_PRESENT | _PAGE_K_EXECUTE)
 
        and     r3, r0, r2  ; Mask out NON Flag bits from PTE
        xor.f   r3, r3, r2  ; check ( ( pte & flags_test ) == flags_test )
        bnz     do_slow_path_pf
 
        ; Let Linux VM know that the page was accessed
-       or      r0, r0, (_PAGE_PRESENT | _PAGE_ACCESSED)  ; set Accessed Bit
-       st_s    r0, [r1]                                  ; Write back PTE
+       or      r0, r0, _PAGE_ACCESSED  ; set Accessed Bit
+       st_s    r0, [r1]                ; Write back PTE
 
        CONV_PTE_TO_TLB
        COMMIT_ENTRY_TO_MMU
@@ -345,7 +345,7 @@ ARC_ENTRY EV_TLBMissD
        ;----------------------------------------------------------------
        ; UPDATE_PTE: Let Linux VM know that page was accessed/dirty
        lr      r3, [ecr]
-       or      r0, r0, (_PAGE_PRESENT | _PAGE_ACCESSED) ; Accessed bit always
+       or      r0, r0, _PAGE_ACCESSED        ; Accessed bit always
        btst_s  r3,  ECR_C_BIT_DTLB_ST_MISS   ; See if it was a Write Access ?
        or.nz   r0, r0, _PAGE_MODIFIED        ; if Write, set Dirty bit as well
        st_s    r0, [r1]                      ; Write back PTE
This page took 0.025026 seconds and 5 git commands to generate.