[PARISC] Fix IOREMAP with a 64-bit kernel
Helge Deller [Tue, 21 Mar 2006 23:01:15 +0000 (16:01 -0700)]
We were only copying 32-bits of the PTE/PFN, not the full 52-bits.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>

arch/parisc/kernel/entry.S

index 9af4b22..6d17c0a 100644 (file)
        extrd,u,*=      \pte,_PAGE_GATEWAY_BIT+32,1,%r0
        depd            %r0,11,2,\prot  /* If Gateway, Set PL2 to 0 */
 
-       /* Get rid of prot bits and convert to page addr for iitlbt */
+       /* Get rid of prot bits and convert to page addr for iitlbt and idtlbt */
 
        depd            %r0,63,PAGE_SHIFT,\pte
-       extrd,u         \pte,56,32,\pte
+       extrd,s         \pte,(63-PAGE_SHIFT)+(63-58),64-PAGE_SHIFT,\pte
        .endm
 
        /* Identical macro to make_insert_tlb above, except it
 
        /* Get rid of prot bits and convert to page addr for iitlba */
 
-       depi            0,31,12,\pte
+       depi            0,31,PAGE_SHIFT,\pte
        extru           \pte,24,25,\pte
 
        .endm