fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / asm-arm / cpu-multi32.h
index 00f9361..715e18a 100644 (file)
@@ -7,9 +7,6 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __ASSEMBLY__
-
-#include <asm/memory.h>
 #include <asm/page.h>
 
 struct mm_struct;
@@ -34,7 +31,7 @@ extern struct processor {
        /*
         * Special stuff for a reset
         */
-       volatile void (*reset)(unsigned long addr);
+       void (*reset)(unsigned long addr) __attribute__((noreturn));
        /*
         * Idle the processor
         */
@@ -53,9 +50,10 @@ extern struct processor {
         */
        void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm);
        /*
-        * Set a PTE
+        * Set a possibly extended PTE.  Non-extended PTEs should
+        * ignore 'ext'.
         */
-       void (*set_pte)(pte_t *ptep, pte_t pte);
+       void (*set_pte_ext)(pte_t *ptep, pte_t pte, unsigned int ext);
 } processor;
 
 #define cpu_proc_init()                        processor._proc_init()
@@ -63,17 +61,5 @@ extern struct processor {
 #define cpu_reset(addr)                        processor.reset(addr)
 #define cpu_do_idle()                  processor._do_idle()
 #define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz)
-#define cpu_set_pte(ptep, pte)         processor.set_pte(ptep, pte)
-
-#define cpu_switch_mm(pgd,mm)  processor.switch_mm(__virt_to_phys((unsigned long)(pgd)),mm)
-
-#define cpu_get_pgd()  \
-       ({                                              \
-               unsigned long pg;                       \
-               __asm__("mrc    p15, 0, %0, c2, c0, 0"  \
-                        : "=r" (pg) : : "cc");         \
-               pg &= ~0x3fff;                          \
-               (pgd_t *)phys_to_virt(pg);              \
-       })
-
-#endif
+#define cpu_set_pte_ext(ptep,pte,ext)  processor.set_pte_ext(ptep,pte,ext)
+#define cpu_do_switch_mm(pgd,mm)       processor.switch_mm(pgd,mm)