patch-2.1.17 linux/include/asm-sparc/page.h
Next file: linux/include/asm-sparc/pgtable.h
Previous file: linux/include/asm-sparc/namei.h
Back to the patch index
Back to the overall index
- Lines: 158
- Date:
Thu Dec 19 11:03:37 1996
- Orig file:
v2.1.16/linux/include/asm-sparc/page.h
- Orig date:
Wed Dec 18 15:59:01 1996
diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/page.h linux/include/asm-sparc/page.h
@@ -1,4 +1,4 @@
-/* $Id: page.h,v 1.33 1996/12/03 08:44:55 jj Exp $
+/* $Id: page.h,v 1.35 1996/12/19 08:08:22 davem Exp $
* page.h: Various defines and such for MMU operations on the Sparc for
* the Linux kernel.
*
@@ -8,6 +8,7 @@
#ifndef _SPARC_PAGE_H
#define _SPARC_PAGE_H
+#include <linux/config.h>
#include <asm/head.h> /* for KERNBASE */
#define PAGE_SHIFT 12
@@ -28,8 +29,8 @@
extern unsigned long (*mmu_v2p)(unsigned long);
extern unsigned long (*mmu_p2v)(unsigned long);
-#define __pa(x) mmu_v2p(x)
-#define __va(x) mmu_p2v(x)
+#define __pa(x) mmu_v2p((unsigned long)(x))
+#define __va(x) mmu_p2v((unsigned long)(x))
/* The following structure is used to hold the physical
* memory configuration of the machine. This is filled in
@@ -87,6 +88,132 @@
#define __ctxd(x) ((ctxd_t) { (x) } )
#define __pgprot(x) ((pgprot_t) { (x) } )
#define __iopgprot(x) ((iopgprot_t) { (x) } )
+
+#elif CONFIG_AP1000_DEBUG
+
+typedef struct { unsigned long pte; } pte_t;
+typedef struct { unsigned long iopte; } iopte_t;
+typedef struct { unsigned long pmd; } pmd_t;
+typedef struct { unsigned long pgd; } pgd_t;
+typedef struct { unsigned long ctxd; } ctxd_t;
+typedef struct { unsigned long pgprot; } pgprot_t;
+typedef struct { unsigned long iopgprot; } iopgprot_t;
+
+static inline unsigned long __get_val(unsigned long x)
+{
+ if ((x & 0xF0000000) == (8<<28))
+ return x & 0x0FFFFFFF;
+ return x;
+}
+
+static inline unsigned long __set_val(unsigned long x)
+{
+ if ((x & 0xF0000000) == (0<<28))
+ return x | 0x80000000;
+ return x;
+}
+
+#define __pte_val(x) ((x).pte)
+#define __iopte_val(x) ((x).iopte)
+#define __pmd_val(x) ((x).pmd)
+#define __pgd_val(x) ((x).pgd)
+#define __ctxd_val(x) ((x).ctxd)
+#define __pgprot_val(x) ((x).pgprot)
+#define __iopgprot_val(x) ((x).iopgprot)
+
+#define ___pte(x) ((pte_t) { (x) } )
+#define ___iopte(x) ((iopte_t) { (x) } )
+#define ___pmd(x) ((pmd_t) { (x) } )
+#define ___pgd(x) ((pgd_t) { (x) } )
+#define ___ctxd(x) ((ctxd_t) { (x) } )
+#define ___pgprot(x) ((pgprot_t) { (x) } )
+#define ___iopgprot(x) ((iopgprot_t) { (x) } )
+
+
+#define pte_val(x) __get_val(__pte_val(x))
+#define iopte_val(x) __get_val(__iopte_val(x))
+#define pmd_val(x) __get_val(__pmd_val(x))
+#define pgd_val(x) __get_val(__pgd_val(x))
+#define ctxd_val(x) __get_val(__ctxd_val(x))
+#define pgprot_val(x) __get_val(__pgprot_val(x))
+#define iopgprot_val(x) __get_val(__iopgprot_val(x))
+
+#define __pte(x) ___pte(__set_val(x))
+#define __iopte(x) ___iopte(__set_val(x))
+#define __pmd(x) ___pmd(__set_val(x))
+#define __pgd(x) ___pgd(__set_val(x))
+#define __ctxd(x) ___ctxd(__set_val(x))
+#define __pgprot(x) ___pgprot(x)
+#define __iopgprot(x) ___iopgprot(__set_val(x))
+
+#elif CONFIG_AP1000
+
+typedef unsigned long pte_t;
+typedef unsigned long iopte_t;
+typedef unsigned long pmd_t;
+typedef unsigned long pgd_t;
+typedef unsigned long ctxd_t;
+typedef unsigned long pgprot_t;
+typedef unsigned long iopgprot_t;
+
+static inline unsigned long __get_val(unsigned long x)
+{
+#if 0
+ extern void ap_panic(char *fmt,...);
+ if (x && (x & 0xF0000000) == 0) {
+ ap_panic("get_val got 0x%x\n",x);
+ }
+#endif
+ if ((x & 0xF0000000) == (8<<28))
+ return x & 0x0FFFFFFF;
+ return x;
+}
+
+static inline unsigned long __set_val(unsigned long x)
+{
+#if 0
+ extern void ap_panic(char *fmt,...);
+ if ((x & 0xF0000000) == (8<<28)) {
+ ap_panic("set_val got 0x%x\n",x);
+ }
+#endif
+ if ((x & 0xF0000000) == (0<<28))
+ return x | 0x80000000;
+ return x;
+}
+
+#define __pte_val(x) (x)
+#define __iopte_val(x) (x)
+#define __pmd_val(x) (x)
+#define __pgd_val(x) (x)
+#define __ctxd_val(x) (x)
+#define __pgprot_val(x) (x)
+#define __iopgprot_val(x) (x)
+
+#define ___pte(x) ((pte_t) { (x) } )
+#define ___iopte(x) ((iopte_t) { (x) } )
+#define ___pmd(x) ((pmd_t) { (x) } )
+#define ___pgd(x) ((pgd_t) { (x) } )
+#define ___ctxd(x) ((ctxd_t) { (x) } )
+#define ___pgprot(x) ((pgprot_t) { (x) } )
+#define ___iopgprot(x) ((iopgprot_t) { (x) } )
+
+
+#define pte_val(x) __get_val(__pte_val(x))
+#define iopte_val(x) __get_val(__iopte_val(x))
+#define pmd_val(x) __get_val(__pmd_val(x))
+#define pgd_val(x) __get_val(__pgd_val(x))
+#define ctxd_val(x) __get_val(__ctxd_val(x))
+#define pgprot_val(x) __get_val(__pgprot_val(x))
+#define iopgprot_val(x) __get_val(__iopgprot_val(x))
+
+#define __pte(x) ___pte(__set_val(x))
+#define __iopte(x) ___iopte(__set_val(x))
+#define __pmd(x) ___pmd(__set_val(x))
+#define __pgd(x) ___pgd(__set_val(x))
+#define __ctxd(x) ___ctxd(__set_val(x))
+#define __pgprot(x) ___pgprot(x)
+#define __iopgprot(x) ___iopgprot(__set_val(x))
#else
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov