Home | History | Annotate | Line # | Download | only in include
mmu_30.h revision 1.1.2.1
      1  1.1.2.1  perseant /*	$NetBSD: mmu_30.h,v 1.1.2.1 2025/08/02 05:55:49 perseant Exp $	*/
      2      1.1   thorpej 
      3      1.1   thorpej /*-
      4      1.1   thorpej  * Copyright (c) 2023 The NetBSD Foundation, Inc.
      5      1.1   thorpej  * All rights reserved.
      6      1.1   thorpej  *
      7      1.1   thorpej  * This code is derived from software contributed to The NetBSD Foundation
      8      1.1   thorpej  * by Jason R. Thorpe.
      9      1.1   thorpej  *
     10      1.1   thorpej  * Redistribution and use in source and binary forms, with or without
     11      1.1   thorpej  * modification, are permitted provided that the following conditions
     12      1.1   thorpej  * are met:
     13      1.1   thorpej  * 1. Redistributions of source code must retain the above copyright
     14      1.1   thorpej  *    notice, this list of conditions and the following disclaimer.
     15      1.1   thorpej  * 2. Redistributions in binary form must reproduce the above copyright
     16      1.1   thorpej  *    notice, this list of conditions and the following disclaimer in the
     17      1.1   thorpej  *    documentation and/or other materials provided with the distribution.
     18      1.1   thorpej  *
     19      1.1   thorpej  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20      1.1   thorpej  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21      1.1   thorpej  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22      1.1   thorpej  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23      1.1   thorpej  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24      1.1   thorpej  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25      1.1   thorpej  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26      1.1   thorpej  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27      1.1   thorpej  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28      1.1   thorpej  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29      1.1   thorpej  * POSSIBILITY OF SUCH DAMAGE.
     30      1.1   thorpej  */
     31      1.1   thorpej 
     32      1.1   thorpej #ifndef _M68K_MMU_30_H_
     33      1.1   thorpej #define	_M68K_MMU_30_H_
     34      1.1   thorpej 
     35      1.1   thorpej #include <machine/fcode.h>
     36      1.1   thorpej 
     37      1.1   thorpej /*
     38      1.1   thorpej  * The built-in MMU in the 68030 is a subset of the 68851.  Section 9.6
     39      1.1   thorpej  * of the 68030 User's Manual describes the differences:
     40      1.1   thorpej  *
     41      1.1   thorpej  * The following 68851 functions are not present on the 68030:
     42      1.1   thorpej  * - Access levels
     43      1.1   thorpej  * - Breakpoint registers
     44      1.1   thorpej  * - DMA Root Pointer
     45      1.1   thorpej  * - Task aliases
     46      1.1   thorpej  * - Lockable ATC entries
     47      1.1   thorpej  * - ATC entries defined as Shared Globally
     48      1.1   thorpej  *
     49  1.1.2.1  perseant  * Furthermore, the 68030 has some functional differences:
     50      1.1   thorpej  * - Only 22 ATC entries
     51      1.1   thorpej  * - Reduced instruction set for MMU operations
     52      1.1   thorpej  * - Reduced addressing modes for MMU instructions.
     53      1.1   thorpej  *
     54      1.1   thorpej  * Instructions removed: PVALID, PFLUSHR, PFLUSHS, PBcc, PDBcc, PScc,
     55      1.1   thorpej  * PTRAPcc, PSAVE, PRESTORE.
     56      1.1   thorpej  *
     57      1.1   thorpej  * Registers removed: CAL, VAL, BAD, BACx, DRP, AC.
     58      1.1   thorpej  *
     59      1.1   thorpej  * The 68030 does, however, add a pair of Transparent Translation
     60      1.1   thorpej  * registers
     61      1.1   thorpej  */
     62      1.1   thorpej 
     63      1.1   thorpej /*
     64      1.1   thorpej  * 9.7.3 -- Transparent Translation registers
     65      1.1   thorpej  *
     66      1.1   thorpej  * These registers define blocks of logical address space that are
     67      1.1   thorpej  * transparently translated VA==PA.  The minimum block size is 16MB,
     68      1.1   thorpej  * and the blocks may overlap.  The mode in which the transparent
     69      1.1   thorpej  * translation is applied is specified by the Function Code base and
     70      1.1   thorpej  * mask fields.
     71      1.1   thorpej  *
     72      1.1   thorpej  * The Logical Address Base specifies the address of the block and
     73      1.1   thorpej  * the Logical Address Mask field specifies the address bits to *ignore*.
     74      1.1   thorpej  *
     75      1.1   thorpej  */
     76      1.1   thorpej #define	TT30_LAB	__BITS(31,24)	/* Logical Address Base */
     77      1.1   thorpej #define	TT30_LAM	__BITS(16,23)	/* Logical Address Mask */
     78      1.1   thorpej #define	TT30_E		__BIT(15)	/* Enable transparent translation */
     79      1.1   thorpej #define	TT30_CI		__BIT(10)	/* Cache Inhibit */
     80      1.1   thorpej #define	TT30_RW		__BIT(9)	/* Read(1) or Write(0) translated */
     81      1.1   thorpej #define	TT30_RWM	__BIT(8)	/* RW field used(0) or ignored(1) */
     82      1.1   thorpej #define	TT30_FCBASE	__BITS(4,6)	/* Function Code base */
     83      1.1   thorpej #define	TT30_FCMASK	__BITS(0,2)	/* Function Code bits to ignore */
     84      1.1   thorpej 
     85      1.1   thorpej /* Convenience definitions for address space selection. */
     86      1.1   thorpej #define	TT30_USERD	__SHIFTIN(FC_USERD,TT30_FCBASE)
     87      1.1   thorpej #define	TT30_USERP	__SHIFTIN(FC_USERP,TT30_FCBASE)
     88      1.1   thorpej #define	TT30_SUPERD	__SHIFTIN(FC_SUPERD,TT30_FCBASE)
     89      1.1   thorpej #define	TT30_SUPERP	__SHIFTIN(FC_SUPERP,TT30_FCBASE)
     90      1.1   thorpej 
     91  1.1.2.1  perseant #ifdef _KERNEL
     92  1.1.2.1  perseant /*
     93  1.1.2.1  perseant  * TT register value indices in the mmu_ttregs[] array.  Note that asm
     94  1.1.2.1  perseant  * code makes assumptions about these indices, to change them at your
     95  1.1.2.1  perseant  * peril.
     96  1.1.2.1  perseant  */
     97  1.1.2.1  perseant extern uint32_t mmu_tt30[];
     98  1.1.2.1  perseant #define	MMU_TTREG_TT0	0
     99  1.1.2.1  perseant #define	MMU_TTREG_TT1	1
    100  1.1.2.1  perseant #define	MMU_NTTREGS30	2
    101  1.1.2.1  perseant 
    102  1.1.2.1  perseant void	mmu_load_tt30(uint32_t *);
    103  1.1.2.1  perseant #endif /* _KERNEL */
    104  1.1.2.1  perseant 
    105      1.1   thorpej #endif /* _M68K_MMU_30_H_ */
    106