summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--DEVELOPMENT6
-rw-r--r--i386/intel/pmap.c54
3 files changed, 21 insertions, 49 deletions
diff --git a/ChangeLog b/ChangeLog
index c9486d9..f0fdc63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-01-02 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ Drop old and broken support for Olivetti XP7 & XP9
+ * i386/intel/pma.c [ORC] (OLIVETTICACHE): Remove macro.
+ [OLIVETTICACHE] (pstart): Remove declaration.
+ (CACHE_LINE, CACHE_SIZE, CACHE_PAGE, WRITE_PTE, WRITE_PTE_FAST): Remove
+ macros.
+ [OLIVETTICACHE] (write_pte): Remove function.
+ * DEVELOPMENT: Document the removal.
+
2006-12-19 Samuel Thibault <samuel.thibault@ens-lyon.org>
Add support for global pages.
diff --git a/DEVELOPMENT b/DEVELOPMENT
index ea02322..1a3d43f 100644
--- a/DEVELOPMENT
+++ b/DEVELOPMENT
@@ -47,6 +47,12 @@ Support for the old ipc interface, MACH_IPC_COMPAT, was removed on 2006-12-03.
Support for building without CONTINUATIONS was removed on 2006-12-03.
<http://savannah.gnu.org/patch/?5019>.
+Support for FP emulation was removed on 2006-12-13.
+http://lists.gnu.org/archive/html/bug-hurd/2006-12/msg00031.html
+
+Support for Olivetti XP7 & XP9 was removed on 2007-01-02.
+http://lists.gnu.org/archive/html/bug-hurd/2006-12/msg00107.html
+
Be sure to check the ChangeLog and have a look at the repository at that
tag's state if you want to work on those parts of GNU Mach.
diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c
index bd19613..b0fd4ca 100644
--- a/i386/intel/pmap.c
+++ b/i386/intel/pmap.c
@@ -82,51 +82,7 @@
#include <i386/proc_reg.h>
#include <i386/locore.h>
-#ifdef ORC
-#define OLIVETTICACHE 1
-#endif /* ORC */
-
-#ifndef OLIVETTICACHE
#define WRITE_PTE(pte_p, pte_entry) *(pte_p) = (pte_entry);
-#define WRITE_PTE_FAST(pte_p, pte_entry) *(pte_p) = (pte_entry);
-#else /* OLIVETTICACHE */
-#error might not work anymore
-
-/* This gross kludgery is needed for Olivetti XP7 & XP9 boxes to get
- * around an apparent hardware bug. Other than at startup it doesn't
- * affect run-time performacne very much, so we leave it in for all
- * machines.
- */
-extern unsigned *pstart();
-#define CACHE_LINE 8
-#define CACHE_SIZE 512
-#define CACHE_PAGE 0x1000;
-
-#define WRITE_PTE(pte_p, pte_entry) { write_pte(pte_p, pte_entry); }
-
-write_pte(pte_p, pte_entry)
-pt_entry_t *pte_p, pte_entry;
-{
- unsigned long count;
- volatile unsigned long hold, *addr1, *addr2;
-
- if ( pte_entry != *pte_p )
- *pte_p = pte_entry;
- else {
- /* This isn't necessarily the optimal algorithm */
- addr1 = (unsigned long *)pstart;
- for (count = 0; count < CACHE_SIZE; count++) {
- addr2 = addr1 + CACHE_PAGE;
- hold = *addr1; /* clear cache bank - A - */
- hold = *addr2; /* clear cache bank - B - */
- addr1 += CACHE_LINE;
- }
- }
-}
-
-#define WRITE_PTE_FAST(pte_p, pte_entry)*pte_p = pte_entry;
-
-#endif /* OLIVETTICACHE */
/*
* Private data structures.
@@ -557,7 +513,7 @@ vm_offset_t pmap_map_bd(virt, start, end, prot)
pte = pmap_pte(kernel_pmap, virt);
if (pte == PT_ENTRY_NULL)
panic("pmap_map_bd: Invalid kernel address\n");
- WRITE_PTE_FAST(pte, template)
+ WRITE_PTE(pte, template)
pte_increment_pa(template);
virt += PAGE_SIZE;
start += PAGE_SIZE;
@@ -658,7 +614,7 @@ void pmap_bootstrap()
{
if ((pte - ptable) < ptenum(va))
{
- WRITE_PTE_FAST(pte, 0);
+ WRITE_PTE(pte, 0);
}
else
{
@@ -667,12 +623,12 @@ void pmap_bootstrap()
if ((va >= (vm_offset_t)_start)
&& (va + INTEL_PGBYTES <= (vm_offset_t)etext))
{
- WRITE_PTE_FAST(pte, pa_to_pte(va)
+ WRITE_PTE(pte, pa_to_pte(va)
| INTEL_PTE_VALID | global);
}
else
{
- WRITE_PTE_FAST(pte, pa_to_pte(va)
+ WRITE_PTE(pte, pa_to_pte(va)
| INTEL_PTE_VALID | INTEL_PTE_WRITE | global);
}
va += INTEL_PGBYTES;
@@ -680,7 +636,7 @@ void pmap_bootstrap()
}
for (; pte < ptable+NPTES; pte++)
{
- WRITE_PTE_FAST(pte, 0);
+ WRITE_PTE(pte, 0);
va += INTEL_PGBYTES;
}
}