summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/include/mmu.h
diff options
context:
space:
mode:
authorDale S. Rahn <rahnds@cvs.openbsd.org>1997-03-03 19:08:44 +0000
committerDale S. Rahn <rahnds@cvs.openbsd.org>1997-03-03 19:08:44 +0000
commit787fa51745fb95eeb01962d519fd60073f503c0c (patch)
tree8338976f469ead8b064d407c7b2aa2f9963a44b3 /sys/arch/mvme88k/include/mmu.h
parent031c14d03c6210d5b329ac3256dba53a0fb9135a (diff)
This is a remove to get rid of the old mvme88k port which was incomplete
to replace it with a working version. The kernel compiles and works at least. The new version will be imported shortly.
Diffstat (limited to 'sys/arch/mvme88k/include/mmu.h')
-rw-r--r--sys/arch/mvme88k/include/mmu.h306
1 files changed, 0 insertions, 306 deletions
diff --git a/sys/arch/mvme88k/include/mmu.h b/sys/arch/mvme88k/include/mmu.h
deleted file mode 100644
index fda1117f667..00000000000
--- a/sys/arch/mvme88k/include/mmu.h
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Ashura Project
- */
-/*
- * HISTORY
- *
- * Original SCCS ID in ISEDL
- * @(#)mmu.h 1.22 90/09/20 19:13:34
- */
-
-#ifndef _MACHINE_MMU_
-#define _MACHINE_MMU_
-
-/* for m88k_pgbytes, m8kk_pgshift */
-#include <machine/vmparam.h>
-
-
-/*
- * Parameters which determine the 'geometry' of the M88K page tables in memory.
- */
-#define SDT_BITS 10 /* M88K segment table size bits */
-#define PDT_BITS 10 /* M88K page table size bits */
-#define PG_BITS M88K_PGSHIFT /* M88K hardware page size bits */
-
-/*
- * Shifts and masks for M88K (hardware) page
- */
-/* M88K_PGBYTES, PG_SHIFT in vm_param.h */
-#define M88K_PGOFSET (M88K_PGBYTES-1) /* offset into M88K page */
-#define M88K_PGMASK (~M88K_PGOFSET) /* page mask */
-
-/*
- * Convert byte address to page frame number
- */
-#define M88K_BTOP(x) (((unsigned) (x)) >> M88K_PGSHIFT)
-#define M88K_PTOB(x) (((unsigned) (x)) << M88K_PGSHIFT)
-
-/*
- * Round off or truncate to the nearest page. These will work for
- * either addresses of counts. (i.e. 1 byte round to 1 page bytes).
- */
-#define M88K_TRUNC_PAGE(x) (((unsigned) (x) & M88K_PGMASK))
-#define M88K_ROUND_PAGE(x) M88K_TRUNC_PAGE((x) + M88K_PGOFSET)
-
-/*
- * M88K area descriptors
- */
-typedef struct cmmu_apr {
- unsigned long
- st_base:20, /* segment table base address */
- rsvA:2, /* reserved */
- wt:1, /* writethrough (cache control) */
- rsvB:1, /* reserved */
- g:1, /* global (cache control) */
- ci:1, /* cache inhibit */
- rsvC:5, /* reserved */
- te:1; /* transration enable */
-} cmmu_apr_t;
-
-typedef union apr_template {
- cmmu_apr_t field;
- unsigned long bits;
-} apr_template_t;
-
-/*
- * M88K segment descriptors
- */
-typedef struct sdt_entry {
- unsigned long
- table_addr:20, /* page table base address */
- rsvA:2, /* reserved */
- wt:1, /* writethrough (cache control) */
- sup:1, /* supervisor protection */
- g:1, /* global (cache control) */
- no_cache:1, /* cache inhibit */
- rsvB:3, /* reserved */
- prot:1, /* write protect */
- rsvC:1, /* reserved */
- dtype:1; /* valid */
-} sdt_entry_t;
-
-typedef union sdt_entry_template {
- sdt_entry_t sdt_desc;
- unsigned long bits;
-} sdt_entry_template_t;
-
-#define SDT_ENTRY_NULL ((sdt_entry_t *) 0)
-
-/*
- * M88K page descriptors
- */
-typedef struct pt_entry {
- unsigned long
- pfn:20, /* page frame address */
- rsvA:1, /* reserved */
- wired:1, /* wired bit <<software>> */
- wt:1, /* writethrough (cache control) */
- sup:1, /* supervisor protection */
- g:1, /* global (cache control) */
- ci:1, /* cache inhibit */
- rsvB:1, /* reserved */
- modified:1, /* modified */
- pg_used:1, /* used (referenced) */
- prot:1, /* write protect */
- rsvC:1, /* reserved */
- dtype:1; /* valid */
-} pt_entry_t;
-
-typedef union pte_template {
- pt_entry_t pte;
- unsigned long bits;
-} pte_template_t;
-
-#define PT_ENTRY_NULL ((pt_entry_t *) 0)
-
-/*
- * 88200 PATC (TLB)
- */
-
-#define PATC_ENTRIES 56
-
-/*
- * M88K BATC entries
- */
-typedef struct {
- unsigned long
- lba:13, /* logical block address */
- pba:13, /* physical block address */
- sup:1, /* supervisor mode bit */
- wt:1, /* writethrough (cache control) */
- g:1, /* global (cache control) */
- ci:1, /* cache inhibit */
- wp:1, /* write protect */
- v:1; /* valid */
-} batc_entry_t;
-
-typedef union batc_template {
- batc_entry_t field;
- unsigned long bits;
-} batc_template_t;
-
-/*
- * Parameters and macros for BATC
- */
-#define BATC_BLKBYTES (512*1024) /* 'block' size of a BATC entry mapping */
-#define BATC_BLKSHIFT 19 /* number of bits to BATC shift (log2(BATC_BLKBYTES)) */
-#define BATC_BLKMASK (BATC_BLKBYTES-1) /* BATC block mask */
-
-#define BATC_MAX 8 /* number of BATC entries */
-
-#define BATC_BLK_ALIGNED(x) ((x & BATC_BLKMASK) == 0)
-
-#define M88K_BTOBLK(x) (x >> BATC_BLKSHIFT)
-
-/*
- * protection codes (prot field)
- */
-#define M88K_RO 1 /* read only */
-#define M88K_RW 0 /* read/write */
-
-/*
- * protection codes (sup field)
- */
-#define M88K_SUPV 1 /* translation can only be done in supervisor mode */
-#define M88K_USER 0 /* translation can be done supv. or user mode */
-
-/*
- * descriptor types
- */
-#define DT_INVALID 0
-#define DT_VALID 1
-
-/*
- * Number of entries in a page table.
- */
-#define SDT_ENTRIES (1<<(SDT_BITS))
-#define PDT_ENTRIES (1<<(PDT_BITS))
-
-/*
- * Size in bytes of a single page table.
- */
-#define SDT_SIZE (sizeof(sdt_entry_t) * SDT_ENTRIES)
-#define PDT_SIZE (sizeof(pt_entry_t) * PDT_ENTRIES)
-
-/*
- * Shifts and masks
- */
-#define SDT_SHIFT (PDT_BITS + PG_BITS)
-#define PDT_SHIFT (PG_BITS)
-
-#define SDT_MASK (((1<<SDT_BITS)-1) << SDT_SHIFT)
-#define PDT_MASK (((1<<PDT_BITS)-1) << PDT_SHIFT)
-
-#define SDT_NEXT(va) ((va + (1<<SDT_SHIFT)) & SDT_MASK)
-#define PDT_NEXT(va) ((va + (1<<PDT_SHIFT)) & (SDT_MASK|PDT_MASK))
-
-#define SDTIDX(va) ((va & SDT_MASK) >> SDT_SHIFT)
-#define PDTIDX(va) ((va & PDT_MASK) >> PDT_SHIFT)
-
-#define SDTENT(map, va) ((sdt_entry_t *)(map->sdt_vaddr + SDTIDX(va)))
-
-/*
- * Size of a PDT table group.
- */
-#define LOG2_PDT_SIZE (PDT_BITS + 2)
-#define LOG2_PDT_TABLE_GROUP_SIZE (PAGE_SHIFT - LOG2_PDT_SIZE)
-#define PDT_TABLE_GROUP_SIZE (1 << LOG2_PDT_TABLE_GROUP_SIZE)
-#define PT_FREE(tbl) kmem_free(kernel_map, tbl, PAGE_SIZE)
-
-/*
- * Va spaces mapped by tables and PDT table group.
- */
-#define PDT_VA_SPACE (PDT_ENTRIES * M88K_PGBYTES)
-#define PDT_TABLE_GROUP_VA_SPACE (PDT_VA_SPACE * PDT_TABLE_GROUP_SIZE)
-
-/*
- * Number of sdt entries used to map user and kernel space.
- */
-#define USER_SDT_ENTRIES SDTIDX(VM_MIN_KERNEL_ADDRESS)
-#define KERNEL_SDT_ENTRIES (SDT_ENTRIES - USER_SDT_ENTRIES)
-
-/*
- * Macros to check if the descriptor is valid.
- */
-#define SDT_VALID(sd_ptr) ((sd_ptr)->dtype == DT_VALID)
-#define PDT_VALID(pd_ptr) ((pd_ptr)->dtype == DT_VALID)
-
-/*
- * Alignment checks for pages (must lie on page boundaries).
- */
-#define PAGE_ALIGNED(ad) (((vm_offset_t)(ad) & ~M88K_PGMASK) == 0)
-#define CHECK_PAGE_ALIGN(ad,who) \
- if (!PAGE_ALIGNED(ad)) \
- printf("%s: addr %x not page aligned.\n", who, ad)
-
-/*
- * Validate PTE's for all hardware pages in a VM page.
- * "ptes_per_vm_page" should be set in pmap_bootstrap.
- *
- * PARAMETERS:
- * pt_entry_t *start;
- * unsigned long template;
- */
-#define DO_PTES(start, template) \
-{ \
- int i_; \
- pt_entry_t *p_ = start; \
- \
- for (i_ = ptes_per_vm_page; i_>0; i_--) { \
- *(int *)p_++ = (unsigned long)(template); \
- template += M88K_PGBYTES; \
- /* (unsigned long)(template) for m88k C compiler\
- '90.7.24 Fuzzy */ \
- } \
-}
-
-/*
- * Flags for cmmu_store() <cmmu.s>
- */
-#define STORE_CMD 0
-#define STORE_UAPR 4
-#define STORE_SAPR 8
-#define STORE_BATCWP 0x400
-
-#define C_CMMU 0
-#define D_CMMU 0x1000
-
-/*
- * Parameters for ATC(TLB) fulsh
- */
-
-#define CMMU_SCR 0x004
-
-#define FLUSH_SUP_ALL 0x37
-#define FLUSH_USR_ALL 0x33
-#define FLUSH_SUP_SEG 0x36
-#define FLUSH_USR_SEG 0x32
-#define FLUSH_SUP_PG 0x35
-#define FLUSH_USR_PG 0x31
-
-/*
- * Cache coontrol bits for pte
- */
-#define CACHE_DFL 0
-#define CACHE_INH 0x40
-#define CACHE_GLOBAL 0x80
-#define CACHE_WT 0x200
-
-#define CACHE_MASK (~(unsigned)(CACHE_INH | CACHE_GLOBAL | CACHE_WT))
-
-/*
- * Prototype for invalidate_pte found in "motorola/m88k/m88100/misc.s"
- */
-unsigned invalidate_pte(pt_entry_t *pointer);
-
-extern vm_offset_t kmapva;
-
-#define kvtopte(va) \
-({ \
- sdt_entry_t *sdt; \
- sdt = (sdt_entry_t *)kmapva + SDTIDX(va) + SDT_ENTRIES; \
- (pte_template_t *)(sdt->table_addr << PDT_SHIFT) + PDTIDX(va); \
-})
-
-#endif
-/* endif _MACHINE_MMU_ */