]> git.neil.brown.name Git - history.git/commitdiff
[SPARC64]: Fix zero-extension issues wrt. {pgd,pmd}_val().
authorDavid S. Miller <davem@nuts.davemloft.net>
Fri, 23 Apr 2004 09:16:16 +0000 (02:16 -0700)
committerDavid S. Miller <davem@nuts.davemloft.net>
Fri, 23 Apr 2004 09:16:16 +0000 (02:16 -0700)
arch/sparc64/kernel/process.c
arch/sparc64/mm/init.c
include/asm-sparc64/mmu_context.h
include/asm-sparc64/pgtable.h

index 0caf962e815544cd417cc9e423fac7654d41d566..f6d3364624c3bbb6bbd72e8d959a27efcd4d1af1 100644 (file)
@@ -435,7 +435,7 @@ void flush_thread(void)
                                        page = pmd_alloc_one(NULL, 0);
                                pgd_set(pgd0, page);
                        }
-                       pgd_cache = pgd_val(*pgd0) << 11UL;
+                       pgd_cache = ((unsigned long) pgd_val(*pgd0)) << 11UL;
                }
                __asm__ __volatile__("stxa %0, [%1] %2\n\t"
                                     "membar #Sync"
index de444560373ccd89c7dfd371bafacdc68ec569e9..a5518c23dde94afc0c247d961df54f76d984f607 100644 (file)
@@ -1523,8 +1523,10 @@ void __init paging_init(void)
        /* Now can init the kernel/bad page tables. */
        pgd_set(&swapper_pg_dir[0], swapper_pmd_dir + (shift / sizeof(pgd_t)));
        
-       sparc64_vpte_patchme1[0] |= (pgd_val(init_mm.pgd[0]) >> 10);
-       sparc64_vpte_patchme2[0] |= (pgd_val(init_mm.pgd[0]) & 0x3ff);
+       sparc64_vpte_patchme1[0] |=
+               (((unsigned long)pgd_val(init_mm.pgd[0])) >> 10);
+       sparc64_vpte_patchme2[0] |=
+               (((unsigned long)pgd_val(init_mm.pgd[0])) & 0x3ff);
        flushi((long)&sparc64_vpte_patchme1[0]);
        
        /* Setup bootmem... */
index cd67129971986df113994f2fa5e64bf610152e2f..1081acb1c352997a414ba24820530b6df3655ae5 100644 (file)
@@ -83,7 +83,8 @@ do { \
        paddr = __pa((__mm)->pgd); \
        pgd_cache = 0UL; \
        if ((__tsk)->thread_info->flags & _TIF_32BIT) \
-               pgd_cache = pgd_val((__mm)->pgd[0]) << 11UL; \
+               pgd_cache = \
+                 ((unsigned long)pgd_val((__mm)->pgd[0])) << 11UL; \
        __asm__ __volatile__("wrpr      %%g0, 0x494, %%pstate\n\t" \
                             "mov       %3, %%g4\n\t" \
                             "mov       %0, %%g7\n\t" \
index 3cb8a2b3c7e8c1f215f7539332b904439690371a..20149fbc89fa5309daeaf2eb80a2356e13bd4d56 100644 (file)
@@ -234,20 +234,22 @@ static inline pte_t pte_modify(pte_t orig_pte, pgprot_t new_prot)
        (pmd_val(*(pmdp)) = (__pa((unsigned long) (ptep)) >> 11UL))
 #define pgd_set(pgdp, pmdp)    \
        (pgd_val(*(pgdp)) = (__pa((unsigned long) (pmdp)) >> 11UL))
-#define __pmd_page(pmd)                        ((unsigned long) __va((pmd_val(pmd)<<11UL)))
+#define __pmd_page(pmd)                \
+       ((unsigned long) __va((((unsigned long)pmd_val(pmd))<<11UL)))
 #define pmd_page(pmd)                  virt_to_page((void *)__pmd_page(pmd))
-#define pgd_page(pgd)                  ((unsigned long) __va((pgd_val(pgd)<<11UL)))
+#define pgd_page(pgd)          \
+       ((unsigned long) __va((((unsigned long)pgd_val(pgd))<<11UL)))
 #define pte_none(pte)                  (!pte_val(pte))
 #define pte_present(pte)               (pte_val(pte) & _PAGE_PRESENT)
 #define pte_clear(pte)                 (pte_val(*(pte)) = 0UL)
 #define pmd_none(pmd)                  (!pmd_val(pmd))
 #define pmd_bad(pmd)                   (0)
-#define pmd_present(pmd)               (pmd_val(pmd) != 0UL)
-#define pmd_clear(pmdp)                        (pmd_val(*(pmdp)) = 0UL)
+#define pmd_present(pmd)               (pmd_val(pmd) != 0U)
+#define pmd_clear(pmdp)                        (pmd_val(*(pmdp)) = 0U)
 #define pgd_none(pgd)                  (!pgd_val(pgd))
 #define pgd_bad(pgd)                   (0)
-#define pgd_present(pgd)               (pgd_val(pgd) != 0UL)
-#define pgd_clear(pgdp)                        (pgd_val(*(pgdp)) = 0UL)
+#define pgd_present(pgd)               (pgd_val(pgd) != 0U)
+#define pgd_clear(pgdp)                        (pgd_val(*(pgdp)) = 0U)
 
 /* The following only work if pte_present() is true.
  * Undefined behaviour if not..