FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
/* $NetBSD: cpuregs.h,v 1.70 2006/05/15 02:26:54 simonb Exp $ */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright (c) 1992, 1993
|
|
|
|
* The Regents of the University of California. All rights reserved.
|
|
|
|
*
|
|
|
|
* This code is derived from software contributed to Berkeley by
|
|
|
|
* Ralph Campbell and Rick Macklem.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
|
|
|
* 3. Neither the name of the University nor the names of its contributors
|
|
|
|
* may be used to endorse or promote products derived from this software
|
|
|
|
* without specific prior written permission.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
* SUCH DAMAGE.
|
|
|
|
*
|
|
|
|
* @(#)machConst.h 8.1 (Berkeley) 6/10/93
|
|
|
|
*
|
|
|
|
* machConst.h --
|
|
|
|
*
|
|
|
|
* Machine dependent constants.
|
|
|
|
*
|
|
|
|
* Copyright (C) 1989 Digital Equipment Corporation.
|
|
|
|
* Permission to use, copy, modify, and distribute this software and
|
|
|
|
* its documentation for any purpose and without fee is hereby granted,
|
|
|
|
* provided that the above copyright notice appears in all copies.
|
|
|
|
* Digital Equipment Corporation makes no representations about the
|
|
|
|
* suitability of this software for any purpose. It is provided "as is"
|
|
|
|
* without express or implied warranty.
|
|
|
|
*
|
|
|
|
* from: Header: /sprite/src/kernel/mach/ds3100.md/RCS/machConst.h,
|
|
|
|
* v 9.2 89/10/21 15:55:22 jhh Exp SPRITE (DECWRL)
|
|
|
|
* from: Header: /sprite/src/kernel/mach/ds3100.md/RCS/machAddrs.h,
|
|
|
|
* v 1.2 89/08/15 18:28:21 rab Exp SPRITE (DECWRL)
|
|
|
|
* from: Header: /sprite/src/kernel/vm/ds3100.md/RCS/vmPmaxConst.h,
|
|
|
|
* v 9.1 89/09/18 17:33:00 shirriff Exp SPRITE (DECWRL)
|
|
|
|
*
|
|
|
|
* $FreeBSD$
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _MIPS_CPUREGS_H_
|
|
|
|
#define _MIPS_CPUREGS_H_
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Address space.
|
|
|
|
* 32-bit mips CPUS partition their 32-bit address space into four segments:
|
|
|
|
*
|
|
|
|
* kuseg 0x00000000 - 0x7fffffff User virtual mem, mapped
|
|
|
|
* kseg0 0x80000000 - 0x9fffffff Physical memory, cached, unmapped
|
|
|
|
* kseg1 0xa0000000 - 0xbfffffff Physical memory, uncached, unmapped
|
|
|
|
* kseg2 0xc0000000 - 0xffffffff kernel-virtual, mapped
|
|
|
|
*
|
|
|
|
* Caching of mapped addresses is controlled by bits in the TLB entry.
|
|
|
|
*/
|
|
|
|
|
2010-08-18 12:52:21 +00:00
|
|
|
#define MIPS_KSEG0_LARGEST_PHYS (0x20000000)
|
|
|
|
#define MIPS_KSEG0_PHYS_MASK (0x1fffffff)
|
|
|
|
#define MIPS_XKPHYS_LARGEST_PHYS (0x10000000000) /* 40 bit PA */
|
|
|
|
#define MIPS_XKPHYS_PHYS_MASK (0x0ffffffffff)
|
2010-07-12 07:24:40 +00:00
|
|
|
|
2010-07-13 17:24:30 +00:00
|
|
|
#ifndef LOCORE
|
2010-04-19 06:01:58 +00:00
|
|
|
#define MIPS_KUSEG_START 0x00000000
|
|
|
|
#define MIPS_KSEG0_START ((intptr_t)(int32_t)0x80000000)
|
|
|
|
#define MIPS_KSEG0_END ((intptr_t)(int32_t)0x9fffffff)
|
|
|
|
#define MIPS_KSEG1_START ((intptr_t)(int32_t)0xa0000000)
|
|
|
|
#define MIPS_KSEG1_END ((intptr_t)(int32_t)0xbfffffff)
|
|
|
|
#define MIPS_KSSEG_START ((intptr_t)(int32_t)0xc0000000)
|
|
|
|
#define MIPS_KSSEG_END ((intptr_t)(int32_t)0xdfffffff)
|
|
|
|
#define MIPS_KSEG3_START ((intptr_t)(int32_t)0xe0000000)
|
|
|
|
#define MIPS_KSEG3_END ((intptr_t)(int32_t)0xffffffff)
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
#define MIPS_KSEG2_START MIPS_KSSEG_START
|
|
|
|
#define MIPS_KSEG2_END MIPS_KSSEG_END
|
2010-07-13 17:24:30 +00:00
|
|
|
#endif
|
2010-07-12 07:24:40 +00:00
|
|
|
|
|
|
|
#define MIPS_PHYS_TO_KSEG0(x) ((uintptr_t)(x) | MIPS_KSEG0_START)
|
|
|
|
#define MIPS_PHYS_TO_KSEG1(x) ((uintptr_t)(x) | MIPS_KSEG1_START)
|
2010-08-18 12:52:21 +00:00
|
|
|
#define MIPS_KSEG0_TO_PHYS(x) ((uintptr_t)(x) & MIPS_KSEG0_PHYS_MASK)
|
|
|
|
#define MIPS_KSEG1_TO_PHYS(x) ((uintptr_t)(x) & MIPS_KSEG0_PHYS_MASK)
|
2010-07-12 07:24:40 +00:00
|
|
|
|
|
|
|
#define MIPS_IS_KSEG0_ADDR(x) \
|
|
|
|
(((vm_offset_t)(x) >= MIPS_KSEG0_START) && \
|
|
|
|
((vm_offset_t)(x) <= MIPS_KSEG0_END))
|
|
|
|
#define MIPS_IS_KSEG1_ADDR(x) \
|
|
|
|
(((vm_offset_t)(x) >= MIPS_KSEG1_START) && \
|
|
|
|
((vm_offset_t)(x) <= MIPS_KSEG1_END))
|
|
|
|
#define MIPS_IS_VALID_PTR(x) (MIPS_IS_KSEG0_ADDR(x) || \
|
|
|
|
MIPS_IS_KSEG1_ADDR(x))
|
2010-04-19 06:01:58 +00:00
|
|
|
|
2010-08-07 01:49:44 +00:00
|
|
|
/*
|
|
|
|
* Cache Coherency Attributes:
|
|
|
|
* UC: Uncached.
|
|
|
|
* UA: Uncached accelerated.
|
|
|
|
* C: Cacheable, coherency unspecified.
|
|
|
|
* CNC: Cacheable non-coherent.
|
|
|
|
* CC: Cacheable coherent.
|
|
|
|
* CCE: Cacheable coherent, exclusive read.
|
|
|
|
* CCEW: Cacheable coherent, exclusive write.
|
|
|
|
* CCUOW: Cacheable coherent, update on write.
|
|
|
|
*
|
|
|
|
* Note that some bits vary in meaning across implementations (and that the
|
|
|
|
* listing here is no doubt incomplete) and that the optimal cached mode varies
|
|
|
|
* between implementations. 0x02 is required to be UC and 0x03 is required to
|
|
|
|
* be a least C.
|
|
|
|
*
|
|
|
|
* We define the following logical bits:
|
|
|
|
* UNCACHED:
|
|
|
|
* The optimal uncached mode for the target CPU type. This must
|
|
|
|
* be suitable for use in accessing memory-mapped devices.
|
|
|
|
* CACHED: The optional cached mode for the target CPU type.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define MIPS_CCA_UC 0x02 /* Uncached. */
|
|
|
|
#define MIPS_CCA_C 0x03 /* Cacheable, coherency unspecified. */
|
|
|
|
|
|
|
|
#if defined(CPU_R4000) || defined(CPU_R10000)
|
|
|
|
#define MIPS_CCA_CNC 0x03
|
|
|
|
#define MIPS_CCA_CCE 0x04
|
|
|
|
#define MIPS_CCA_CCEW 0x05
|
|
|
|
|
|
|
|
#ifdef CPU_R4000
|
|
|
|
#define MIPS_CCA_CCUOW 0x06
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef CPU_R10000
|
|
|
|
#define MIPS_CCA_UA 0x07
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define MIPS_CCA_CACHED MIPS_CCA_CCEW
|
|
|
|
#endif /* defined(CPU_R4000) || defined(CPU_R10000) */
|
|
|
|
|
|
|
|
#if defined(CPU_SB1)
|
|
|
|
#define MIPS_CCA_CC 0x05 /* Cacheable Coherent. */
|
|
|
|
#endif
|
|
|
|
|
2013-10-09 00:27:12 +00:00
|
|
|
#if defined(CPU_MIPS74KC)
|
|
|
|
#define MIPS_CCA_UNCACHED 0x02
|
2015-10-31 00:04:44 +00:00
|
|
|
#define MIPS_CCA_CACHED 0x03
|
2013-10-09 00:27:12 +00:00
|
|
|
#endif
|
|
|
|
|
2010-08-07 01:49:44 +00:00
|
|
|
#ifndef MIPS_CCA_UNCACHED
|
|
|
|
#define MIPS_CCA_UNCACHED MIPS_CCA_UC
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* If we don't know which cached mode to use and there is a cache coherent
|
|
|
|
* mode, use it. If there is not a cache coherent mode, use the required
|
|
|
|
* cacheable mode.
|
|
|
|
*/
|
|
|
|
#ifndef MIPS_CCA_CACHED
|
|
|
|
#ifdef MIPS_CCA_CC
|
|
|
|
#define MIPS_CCA_CACHED MIPS_CCA_CC
|
|
|
|
#else
|
|
|
|
#define MIPS_CCA_CACHED MIPS_CCA_C
|
|
|
|
#endif
|
|
|
|
#endif
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
#define MIPS_PHYS_TO_XKPHYS(cca,x) \
|
|
|
|
((0x2ULL << 62) | ((unsigned long long)(cca) << 59) | (x))
|
2010-07-12 07:24:40 +00:00
|
|
|
#define MIPS_PHYS_TO_XKPHYS_CACHED(x) \
|
2010-08-07 01:49:44 +00:00
|
|
|
((0x2ULL << 62) | ((unsigned long long)(MIPS_CCA_CACHED) << 59) | (x))
|
2010-07-12 07:24:40 +00:00
|
|
|
#define MIPS_PHYS_TO_XKPHYS_UNCACHED(x) \
|
2010-08-07 01:49:44 +00:00
|
|
|
((0x2ULL << 62) | ((unsigned long long)(MIPS_CCA_UNCACHED) << 59) | (x))
|
2010-07-12 07:24:40 +00:00
|
|
|
|
2010-08-18 12:52:21 +00:00
|
|
|
#define MIPS_XKPHYS_TO_PHYS(x) ((uintptr_t)(x) & MIPS_XKPHYS_PHYS_MASK)
|
2010-04-19 06:01:58 +00:00
|
|
|
|
2010-08-18 12:52:21 +00:00
|
|
|
#define MIPS_XKPHYS_START 0x8000000000000000
|
|
|
|
#define MIPS_XKPHYS_END 0xbfffffffffffffff
|
2010-04-19 06:01:58 +00:00
|
|
|
#define MIPS_XUSEG_START 0x0000000000000000
|
|
|
|
#define MIPS_XUSEG_END 0x0000010000000000
|
|
|
|
#define MIPS_XKSEG_START 0xc000000000000000
|
|
|
|
#define MIPS_XKSEG_END 0xc00000ff80000000
|
2010-11-07 03:09:02 +00:00
|
|
|
#define MIPS_XKSEG_COMPAT32_START 0xffffffff80000000
|
|
|
|
#define MIPS_XKSEG_COMPAT32_END 0xffffffffffffffff
|
|
|
|
#define MIPS_XKSEG_TO_COMPAT32(va) ((va) & 0xffffffff)
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
2010-08-18 12:52:21 +00:00
|
|
|
#ifdef __mips_n64
|
|
|
|
#define MIPS_DIRECT_MAPPABLE(pa) 1
|
|
|
|
#define MIPS_PHYS_TO_DIRECT(pa) MIPS_PHYS_TO_XKPHYS_CACHED(pa)
|
|
|
|
#define MIPS_PHYS_TO_DIRECT_UNCACHED(pa) MIPS_PHYS_TO_XKPHYS_UNCACHED(pa)
|
|
|
|
#define MIPS_DIRECT_TO_PHYS(va) MIPS_XKPHYS_TO_PHYS(va)
|
|
|
|
#else
|
|
|
|
#define MIPS_DIRECT_MAPPABLE(pa) ((pa) < MIPS_KSEG0_LARGEST_PHYS)
|
|
|
|
#define MIPS_PHYS_TO_DIRECT(pa) MIPS_PHYS_TO_KSEG0(pa)
|
|
|
|
#define MIPS_PHYS_TO_DIRECT_UNCACHED(pa) MIPS_PHYS_TO_KSEG1(pa)
|
|
|
|
#define MIPS_DIRECT_TO_PHYS(va) MIPS_KSEG0_TO_PHYS(va)
|
|
|
|
#endif
|
|
|
|
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
/* CPU dependent mtc0 hazard hook */
|
2011-03-16 08:22:29 +00:00
|
|
|
#if defined(CPU_CNMIPS) || defined(CPU_RMI)
|
|
|
|
#define COP0_SYNC
|
2011-11-18 09:30:24 +00:00
|
|
|
#elif defined(CPU_NLM)
|
|
|
|
#define COP0_SYNC .word 0xc0 /* ehb */
|
Merge from projects/mips to head by hand:
r201881 | imp | 2010-01-08 20:08:22 -0700 (Fri, 08 Jan 2010) | 3 lines
Rename mips_pcpu_init to mips_pcpu0_init since it applies only to the
BSP. Provide a missing prototype.
r200343 | imp | 2009-12-09 18:44:11 -0700 (Wed, 09 Dec 2009) | 4 lines
Get the sense of this right. We use uintpr_t for bus_addr_t when
we're building everything except octeon && 32-bit. As note before, we
need a clearner way, but at least now the hack is right.
r199760 | imp | 2009-11-24 10:15:22 -0700 (Tue, 24 Nov 2009) | 2 lines
Add in Cavium's CID. Report what the unknown CID is.
r199754 | imp | 2009-11-24 09:32:31 -0700 (Tue, 24 Nov 2009) | 6 lines
Include opt_cputype.h for all .c and .S files referencing TARGET_OCTEON.
Spell ld script name right.
r199599 | imp | 2009-11-20 09:32:26 -0700 (Fri, 20 Nov 2009) | 2 lines
Another kludge for 64-bit bus_addr_t with 32-bit pointers...
r199496 | gonzo | 2009-11-18 15:52:05 -0700 (Wed, 18 Nov 2009) | 5 lines
- Add cpu_init_interrupts function that is supposed to
prepeare stuff required for spinning out interrupts later
- Add API for managing intrcnt/intrnames arrays
- Some minor style(9) fixes
r198958 | rrs | 2009-11-05 11:15:47 -0700 (Thu, 05 Nov 2009) | 2 lines
For XLR adds extern for its bus space routines
r198669 | rrs | 2009-10-30 02:53:11 -0600 (Fri, 30 Oct 2009) | 5 lines
With this commit our friend RMI will now compile. I have
not tested it and the chances of it running yet are about
ZERO.. but it will now compile. The hard part now begins,
making it run ;-)
r198666 | imp | 2009-10-29 18:37:50 -0600 (Thu, 29 Oct 2009) | 2 lines
Add some newer MIPS CO cores.
r198665 | imp | 2009-10-29 18:37:04 -0600 (Thu, 29 Oct 2009) | 4 lines
db_expr_t is really closer to a register_t.
Submitted by: bde@
r198531 | gonzo | 2009-10-27 18:01:20 -0600 (Tue, 27 Oct 2009) | 3 lines
- Remove bunch of declared but not defined cach-related variables
- Add mips_picache_linesize and mips_pdcache_linesize variables
r198354 | neel | 2009-10-21 20:51:31 -0600 (Wed, 21 Oct 2009) | 9 lines
Get rid of the hardcoded constants to define cacheable memory:
SDRAM_ADDR_START, SDRAM_ADDR_END and SDRAM_MEM_SIZE
Instead we now keep a copy of the memory regions enumerated by
platform-specific code and use that to determine whether an address
is cacheable or not.
r198310 | gonzo | 2009-10-20 17:13:08 -0600 (Tue, 20 Oct 2009) | 5 lines
- Commit missing part of "bt" fix: store PC register in pcb_context struct
in cpu_switch and use it in stack_trace function later. pcb_regs contains
state of the process stored by exception handler and therefor is not
valid for sleeping processes.
r198207 | imp | 2009-10-18 08:57:04 -0600 (Sun, 18 Oct 2009) | 2 lines
Undo spamage of last MFC.
r198206 | imp | 2009-10-18 08:56:33 -0600 (Sun, 18 Oct 2009) | 3 lines
_ALIGN has to return u_long, since pointers don't fit into u_int in
64-bit mips.
r198182 | gonzo | 2009-10-16 18:22:07 -0600 (Fri, 16 Oct 2009) | 11 lines
- Use PC/RA/SP values as arguments for stacktrace_subr instead of trapframe.
Context info could be obtained from other sources (see below) no only from
td_pcb field
- Do not show a0..a3 values unless they're obtained from the stack. These
are only confirmed values.
- Fix bt command in DDB. Previous implementation used thread's trapframe
structure as a source info for trace unwinding, but this structure
is filled only when exception occurs. Valid register values for sleeping
processes are in pcb_context array. For curthread use pc/sp/ra for current
frame
r198181 | gonzo | 2009-10-16 16:52:18 -0600 (Fri, 16 Oct 2009) | 2 lines
- Get rid of label_t. It came from NetBSD and was used only in one place
r198154 | rrs | 2009-10-15 15:03:32 -0600 (Thu, 15 Oct 2009) | 10 lines
Does 4 things:
1) Adds future RMI directories
2) Places intr_machdep.c in specfic files.arch pointing to the generic
intr_machdep.c. This allows us to have an architecture dependant
intr_machdep.c (which we will need for RMI) in the machine specific
directory
3) removes intr_machdep.c from files.mips
4) Adds some TARGET_XLR_XLS ifdef's for the machine specific intra_machdep.h. We
may need to look at finding a better place to put this. But first I want to
get this thing compiling.
r198066 | gonzo | 2009-10-13 19:43:53 -0600 (Tue, 13 Oct 2009) | 5 lines
- Move stack tracing function to db_trace.c
- Axe unused extern MipsXXX declarations
- Move all declarations for functions in exceptions.S/swtch.S
from trap.c to respective headers
r197685 | gonzo | 2009-10-01 14:05:36 -0600 (Thu, 01 Oct 2009) | 2 lines
- Sync caches properly when dealing with sf_buf
r196215 | imp | 2009-08-14 10:15:18 -0600 (Fri, 14 Aug 2009) | 6 lines
(u_int) is the wrong type here. Use unsigned long instead, even
though that's only less wrong...
r196199 | imp | 2009-08-13 13:47:13 -0600 (Thu, 13 Aug 2009) | 7 lines
Use unsigned long instead of unsigned for the integer casts here. The
former works for both ILP32 and LP64 programming models, while the
latter fails LP64.
r196089 | gonzo | 2009-08-09 19:49:59 -0600 (Sun, 09 Aug 2009) | 4 lines
- Make i/d cache size field 32-bit to prevent overflow
Submited by: Neelkanth Natu
r195582 | imp | 2009-07-10 13:07:07 -0600 (Fri, 10 Jul 2009) | 2 lines
fix prototype for MipsEmulateBranch.
r195581 | imp | 2009-07-10 13:06:43 -0600 (Fri, 10 Jul 2009) | 2 lines
Better definitions for a few types for n32/n64.
r195580 | imp | 2009-07-10 13:06:15 -0600 (Fri, 10 Jul 2009) | 5 lines
Fixed aligned macros...
r195478 | gonzo | 2009-07-08 16:28:36 -0600 (Wed, 08 Jul 2009) | 5 lines
- Port busdma code from FreeBSD/arm. This is more mature version
that takes into account all limitation to DMA memory (boundaries,
alignment) and implements bounce pages.
- Add BUS_DMASYNC_POSTREAD case to bus_dmamap_sync_buf
r195440 | imp | 2009-07-08 00:01:37 -0600 (Wed, 08 Jul 2009) | 2 lines
Fix atomic_store_64 prototype for 64-bit systems.
r195392 | imp | 2009-07-05 20:27:03 -0600 (Sun, 05 Jul 2009) | 3 lines
The MCOUNT macro isn't going to work in 64-bit mode. Add a note to
this effect.
r195391 | imp | 2009-07-05 20:22:51 -0600 (Sun, 05 Jul 2009) | 3 lines
Provide a macro for PTR_ADDU as well. We may need to implement this
differently for N32... Use PTR_ADDU in DO_AST macro.
r195390 | imp | 2009-07-05 20:22:06 -0600 (Sun, 05 Jul 2009) | 4 lines
Change the addu here to daddu.
addu paranoina prodded by: jmallet@
r195382 | imp | 2009-07-05 15:16:26 -0600 (Sun, 05 Jul 2009) | 5 lines
addu and subu are special. We need to use daddu and dsubu here to get
proper behavior.
Submitted by: jmallet@
r195370 | imp | 2009-07-05 09:20:16 -0600 (Sun, 05 Jul 2009) | 6 lines
The SB1 has cohernet memory, so add it.
Also, Maxmem is better as a long.
Submitted by: Neelkanth Natu
r195369 | imp | 2009-07-05 09:19:28 -0600 (Sun, 05 Jul 2009) | 4 lines
The SB1 needs a special value for the cache field of the pte.
Submitted by: Neelkanth Natu
r195368 | imp | 2009-07-05 09:18:06 -0600 (Sun, 05 Jul 2009) | 2 lines
compute the areas to save registers in for 64-bit access correctly.
r195367 | imp | 2009-07-05 09:17:11 -0600 (Sun, 05 Jul 2009) | 3 lines
First cut at 64-bit types. not 100% sure these are all correct for
N32 ABI.
r195366 | imp | 2009-07-05 09:16:27 -0600 (Sun, 05 Jul 2009) | 3 lines
Trim unreferenced goo. SDRAM likely should be next, but it is still
referenced.
r195365 | imp | 2009-07-05 09:13:24 -0600 (Sun, 05 Jul 2009) | 9 lines
First cut at atomics for 64-bit machines and SMP machines.
# Note: Cavium provided a port that has atomics similar to these, but
# that does a syncw; sync; atomic; sync; syncw where we just do the classic
# mips 'atomic' operation (eg ll; frob; sc). It is unclear to me why
# the extra is needed. Since my initial target is one core, I'll defer
# investigation until I bring up multiple cores. syncw is an octeon specific
# instruction.
r195359 | imp | 2009-07-05 02:14:00 -0600 (Sun, 05 Jul 2009) | 4 lines
Bring in cdefs.h from NetBSD to define ABI goo.
Obtained from: NetBSD
r195358 | imp | 2009-07-05 02:13:19 -0600 (Sun, 05 Jul 2009) | 4 lines
Pull in machine/cdefs.h for the ABI definitions. Provide a PTR_LA,
ala sgi, and use it in preference to a bare 'la' so that it gets
translated to a 'dla' for the 64-bit pointer ABIs.
r195357 | imp | 2009-07-05 01:01:34 -0600 (Sun, 05 Jul 2009) | 2 lines
Use uintptr_t rather than unsigned here for 64-bit correctness.
r195356 | imp | 2009-07-05 01:00:51 -0600 (Sun, 05 Jul 2009) | 6 lines
Define __ELF_WORD_SIZE appropriately for n64. Note for N32 I believe
this is correct. While registers are 64-bit, n32 is a 32-bit ABI and
lives in a 32-bit world (with explicit 64-bit registers, however).
Change an 8, which was 4 + 4 or sizeof(int) + SZREG to be a simple '4
+ SZREG' to reflect the actual offset of the structure in question.
r195355 | imp | 2009-07-05 00:56:51 -0600 (Sun, 05 Jul 2009) | 7 lines
(1) Use uintptr_t in preference to unsigned. The latter isn't right for
64-bit case, while the former is.
(2) include a SB1 specific coherency mapping
Submitted by: Neelkanth Nath (2)
r195352 | imp | 2009-07-05 00:44:37 -0600 (Sun, 05 Jul 2009) | 3 lines
db_expr_t should be a intptr_t, not an int. These expressions can be
addresses or numbers, and that's a intptr_t if I ever saw one.
r195351 | imp | 2009-07-05 00:43:01 -0600 (Sun, 05 Jul 2009) | 4 lines
Define COP0_SYNC for SB1 CPU.
Submitted by: Neelkanth Natu
r195350 | imp | 2009-07-05 00:39:37 -0600 (Sun, 05 Jul 2009) | 7 lines
Switch to ABI agnostic ta0-ta3. Provide defs for this in the right
places. Provide n32/n64 register name defintions. This should have
no effect for the O32 builds that everybody else uses, but should help
make N64 builds possible (lots of other changes are needed for that).
Obtained from: NetBSD (for the regdef.h changes)
r195128 | gonzo | 2009-06-27 17:27:41 -0600 (Sat, 27 Jun 2009) | 4 lines
- Add support for handling TLS area address in kernel space.
From the userland point of view get/set operations are
performed using sysarch(2) call.
r195076 | gonzo | 2009-06-26 13:54:06 -0600 (Fri, 26 Jun 2009) | 2 lines
- Add guards to ensure that these files are included only once
r194469 | gonzo | 2009-06-18 22:43:49 -0600 (Thu, 18 Jun 2009) | 16 lines
- Mark temp variable as "earlyclobber" in assembler inline in
atomic_fetchadd_32. Without it gcc would use it as input
register for v and sometimes generate following code for
function call like atomic_fetchadd_32(&(fp)->f_count, -1):
801238b4: 2402ffff li v0,-1
801238b8: c2230018 ll v1,24(s1)
801238bc: 00431021 addu v0,v0,v1
801238c0: e2220018 sc v0,24(s1)
801238c4: 1040fffc beqz v0,801238b8 <dupfdopen+0x2e8>
801238c8: 00000000 nop
Which is definitly wrong because if sc fails v0 is set to 0
and previous value of -1 is overriden hence whole operation
turns to bogus
r194164 | imp | 2009-06-14 00:14:25 -0600 (Sun, 14 Jun 2009) | 3 lines
bye bye. This is no longer referenced, but much code from it will
resurface for a bus-space implementation.
r194160 | imp | 2009-06-14 00:10:36 -0600 (Sun, 14 Jun 2009) | 3 lines
Cavium-specific goo is no longer necessary here. Of course, I now
have to write a bus space for cavium, but that shouldn't be too hard.
r194157 | imp | 2009-06-14 00:01:46 -0600 (Sun, 14 Jun 2009) | 2 lines
Move this to a more approrpiate plae.
r194156 | imp | 2009-06-13 23:29:13 -0600 (Sat, 13 Jun 2009) | 2 lines
Bring this in from the cavium port.
r193487 | gonzo | 2009-06-05 02:37:11 -0600 (Fri, 05 Jun 2009) | 2 lines
- Use restoreintr instead of enableint while accessing pcpu in DO_AST
r192864 | gonzo | 2009-05-26 16:40:12 -0600 (Tue, 26 May 2009) | 4 lines
- Replace CPU_NOFPU and SOFTFLOAT options with CPU_FPU. By default
we assume that there is no FPU, because majority of SoC does
not have it.
r192817 | gonzo | 2009-05-26 10:35:05 -0600 (Tue, 26 May 2009) | 2 lines
- Add type cast for atomic_cmpset_acq_ptr arguments
r192792 | gonzo | 2009-05-26 00:01:17 -0600 (Tue, 26 May 2009) | 2 lines
- Remove now unused NetBSDism intr.h
r192177 | gonzo | 2009-05-15 20:39:13 -0600 (Fri, 15 May 2009) | 4 lines
- Add MIPS_IS_KSEG0_ADDR, MIPS_IS_KSEG1_ADDR and MIPS_IS_VALID_PTR
macroses thet check if address belongs to KSEG0, KSEG1 or both
of them respectively.
r191589 | gonzo | 2009-04-27 13:18:55 -0600 (Mon, 27 Apr 2009) | 3 lines
- Cast argument to proper type in order to avoid warnings like
"shift value is too large for given type"
r191577 | gonzo | 2009-04-27 12:29:59 -0600 (Mon, 27 Apr 2009) | 4 lines
- Use naming convention the same as MIPS spec does: eliminate _sel1 sufix
and just use selector number. e.g. mips_rd_config_sel1 -> mips_rd_config1
- Add WatchHi/WatchLo accessors for selctors 1..3 (for debug purposes)
r191451 | gonzo | 2009-04-23 22:17:21 -0600 (Thu, 23 Apr 2009) | 4 lines
- Define accessor functions for CP0 Config(16) register selects 1, 2, 3.
Content of these registers is defined in MIPS spec and can be used
for obtaining info about CPU capabilities.
r191282 | gonzo | 2009-04-19 16:02:14 -0600 (Sun, 19 Apr 2009) | 3 lines
- Make mips_bus_space_generic be of type bus_space_tag_t instead of
struct bus_space and update all relevant places.
r191084 | gonzo | 2009-04-14 20:28:26 -0600 (Tue, 14 Apr 2009) | 6 lines
Use FreeBSD/arm approach for handling bus space access: space tag is a pointer
to bus_space structure that defines access methods and hence every bus can
define own accessors. Default space is mips_bus_space_generic. It's a simple
interface to physical memory, values are read with regard to host system
byte order.
2010-01-10 19:50:24 +00:00
|
|
|
#elif defined(CPU_SB1)
|
|
|
|
#define COP0_SYNC ssnop; ssnop; ssnop; ssnop; ssnop; ssnop; ssnop; ssnop; ssnop
|
2013-10-09 00:27:12 +00:00
|
|
|
#elif defined(CPU_MIPS74KC)
|
|
|
|
#define COP0_SYNC .word 0xc0 /* ehb */
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
#else
|
2010-01-26 02:26:04 +00:00
|
|
|
/*
|
|
|
|
* Pick a reasonable default based on the "typical" spacing described in the
|
|
|
|
* "CP0 Hazards" chapter of MIPS Architecture Book Vol III.
|
|
|
|
*/
|
2013-10-09 00:27:12 +00:00
|
|
|
#define COP0_SYNC ssnop; ssnop; ssnop; ssnop; .word 0xc0;
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
#endif
|
|
|
|
#define COP0_HAZARD_FPUENABLE nop; nop; nop; nop;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The bits in the cause register.
|
|
|
|
*
|
|
|
|
* Bits common to r3000 and r4000:
|
|
|
|
*
|
|
|
|
* MIPS_CR_BR_DELAY Exception happened in branch delay slot.
|
|
|
|
* MIPS_CR_COP_ERR Coprocessor error.
|
|
|
|
* MIPS_CR_IP Interrupt pending bits defined below.
|
|
|
|
* (same meaning as in CAUSE register).
|
|
|
|
* MIPS_CR_EXC_CODE The exception type (see exception codes below).
|
|
|
|
*
|
|
|
|
* Differences:
|
|
|
|
* r3k has 4 bits of execption type, r4k has 5 bits.
|
|
|
|
*/
|
|
|
|
#define MIPS_CR_BR_DELAY 0x80000000
|
|
|
|
#define MIPS_CR_COP_ERR 0x30000000
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CR_EXC_CODE 0x0000007C /* five bits */
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
#define MIPS_CR_IP 0x0000FF00
|
|
|
|
#define MIPS_CR_EXC_CODE_SHIFT 2
|
2012-01-06 01:23:26 +00:00
|
|
|
#define MIPS_CR_COP_ERR_SHIFT 28
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* The bits in the status register. All bits are active when set to 1.
|
|
|
|
*
|
|
|
|
* R3000 status register fields:
|
|
|
|
* MIPS_SR_COP_USABILITY Control the usability of the four coprocessors.
|
|
|
|
* MIPS_SR_TS TLB shutdown.
|
|
|
|
*
|
|
|
|
* MIPS_SR_INT_IE Master (current) interrupt enable bit.
|
|
|
|
*
|
|
|
|
* Differences:
|
|
|
|
* r3k has cache control is via frobbing SR register bits, whereas the
|
|
|
|
* r4k cache control is via explicit instructions.
|
|
|
|
* r3k has a 3-entry stack of kernel/user bits, whereas the
|
|
|
|
* r4k has kernel/supervisor/user.
|
|
|
|
*/
|
|
|
|
#define MIPS_SR_COP_USABILITY 0xf0000000
|
|
|
|
#define MIPS_SR_COP_0_BIT 0x10000000
|
|
|
|
#define MIPS_SR_COP_1_BIT 0x20000000
|
|
|
|
#define MIPS_SR_COP_2_BIT 0x40000000
|
|
|
|
|
|
|
|
/* r4k and r3k differences, see below */
|
|
|
|
|
|
|
|
#define MIPS_SR_MX 0x01000000 /* MIPS64 */
|
|
|
|
#define MIPS_SR_PX 0x00800000 /* MIPS64 */
|
|
|
|
#define MIPS_SR_BEV 0x00400000 /* Use boot exception vector */
|
|
|
|
#define MIPS_SR_TS 0x00200000
|
|
|
|
#define MIPS_SR_DE 0x00010000
|
|
|
|
|
|
|
|
#define MIPS_SR_INT_IE 0x00000001
|
|
|
|
/*#define MIPS_SR_MBZ 0x0f8000c0*/ /* Never used, true for r3k */
|
2010-07-13 17:24:30 +00:00
|
|
|
#define MIPS_SR_INT_MASK 0x0000ff00
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* R4000 status register bit definitons,
|
|
|
|
* where different from r2000/r3000.
|
|
|
|
*/
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_SR_XX 0x80000000
|
|
|
|
#define MIPS_SR_RP 0x08000000
|
|
|
|
#define MIPS_SR_FR 0x04000000
|
|
|
|
#define MIPS_SR_RE 0x02000000
|
|
|
|
|
|
|
|
#define MIPS_SR_DIAG_DL 0x01000000 /* QED 52xx */
|
|
|
|
#define MIPS_SR_DIAG_IL 0x00800000 /* QED 52xx */
|
|
|
|
#define MIPS_SR_SR 0x00100000
|
|
|
|
#define MIPS_SR_NMI 0x00080000 /* MIPS32/64 */
|
|
|
|
#define MIPS_SR_DIAG_CH 0x00040000
|
|
|
|
#define MIPS_SR_DIAG_CE 0x00020000
|
|
|
|
#define MIPS_SR_DIAG_PE 0x00010000
|
|
|
|
#define MIPS_SR_EIE 0x00010000 /* TX79/R5900 */
|
|
|
|
#define MIPS_SR_KX 0x00000080
|
|
|
|
#define MIPS_SR_SX 0x00000040
|
|
|
|
#define MIPS_SR_UX 0x00000020
|
|
|
|
#define MIPS_SR_KSU_MASK 0x00000018
|
|
|
|
#define MIPS_SR_KSU_USER 0x00000010
|
|
|
|
#define MIPS_SR_KSU_SUPER 0x00000008
|
|
|
|
#define MIPS_SR_KSU_KERNEL 0x00000000
|
|
|
|
#define MIPS_SR_ERL 0x00000004
|
|
|
|
#define MIPS_SR_EXL 0x00000002
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* The interrupt masks.
|
|
|
|
* If a bit in the mask is 1 then the interrupt is enabled (or pending).
|
|
|
|
*/
|
|
|
|
#define MIPS_INT_MASK 0xff00
|
|
|
|
#define MIPS_INT_MASK_5 0x8000
|
|
|
|
#define MIPS_INT_MASK_4 0x4000
|
|
|
|
#define MIPS_INT_MASK_3 0x2000
|
|
|
|
#define MIPS_INT_MASK_2 0x1000
|
|
|
|
#define MIPS_INT_MASK_1 0x0800
|
|
|
|
#define MIPS_INT_MASK_0 0x0400
|
|
|
|
#define MIPS_HARD_INT_MASK 0xfc00
|
|
|
|
#define MIPS_SOFT_INT_MASK_1 0x0200
|
|
|
|
#define MIPS_SOFT_INT_MASK_0 0x0100
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The bits in the MIPS3 config register.
|
|
|
|
*
|
|
|
|
* bit 0..5: R/W, Bit 6..31: R/O
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* kseg0 coherency algorithm - see MIPS3_TLB_ATTR values */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_K0_MASK 0x00000007
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* R/W Update on Store Conditional
|
|
|
|
* 0: Store Conditional uses coherency algorithm specified by TLB
|
|
|
|
* 1: Store Conditional uses cacheable coherent update on write
|
|
|
|
*/
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_CU 0x00000008
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_DB 0x00000010 /* Primary D-cache line size */
|
|
|
|
#define MIPS_CONFIG_IB 0x00000020 /* Primary I-cache line size */
|
|
|
|
#define MIPS_CONFIG_CACHE_L1_LSIZE(config, bit) \
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
(((config) & (bit)) ? 32 : 16)
|
|
|
|
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_DC_MASK 0x000001c0 /* Primary D-cache size */
|
|
|
|
#define MIPS_CONFIG_DC_SHIFT 6
|
|
|
|
#define MIPS_CONFIG_IC_MASK 0x00000e00 /* Primary I-cache size */
|
|
|
|
#define MIPS_CONFIG_IC_SHIFT 9
|
|
|
|
#define MIPS_CONFIG_C_DEFBASE 0x1000 /* default base 2^12 */
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Cache size mode indication: available only on Vr41xx CPUs */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_CS 0x00001000
|
|
|
|
#define MIPS_CONFIG_C_4100BASE 0x0400 /* base is 2^10 if CS=1 */
|
|
|
|
#define MIPS_CONFIG_CACHE_SIZE(config, mask, base, shift) \
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
((base) << (((config) & (mask)) >> (shift)))
|
|
|
|
|
|
|
|
/* External cache enable: Controls L2 for R5000/Rm527x and L3 for Rm7000 */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_SE 0x00001000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Block ordering: 0: sequential, 1: sub-block */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_EB 0x00002000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* ECC mode - 0: ECC mode, 1: parity mode */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_EM 0x00004000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* BigEndianMem - 0: kernel and memory are little endian, 1: big endian */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_BE 0x00008000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Dirty Shared coherency state - 0: enabled, 1: disabled */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_SM 0x00010000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Secondary Cache - 0: present, 1: not present */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_SC 0x00020000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* System Port width - 0: 64-bit, 1: 32-bit (QED RM523x), 2,3: reserved */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_EW_MASK 0x000c0000
|
|
|
|
#define MIPS_CONFIG_EW_SHIFT 18
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Secondary Cache port width - 0: 128-bit data path to S-cache, 1: reserved */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_SW 0x00100000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Split Secondary Cache Mode - 0: I/D mixed, 1: I/D separated by SCAddr(17) */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_SS 0x00200000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Secondary Cache line size */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_SB_MASK 0x00c00000
|
|
|
|
#define MIPS_CONFIG_SB_SHIFT 22
|
|
|
|
#define MIPS_CONFIG_CACHE_L2_LSIZE(config) \
|
|
|
|
(0x10 << (((config) & MIPS_CONFIG_SB_MASK) >> MIPS_CONFIG_SB_SHIFT))
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Write back data rate */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_EP_MASK 0x0f000000
|
|
|
|
#define MIPS_CONFIG_EP_SHIFT 24
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* System clock ratio - this value is CPU dependent */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_EC_MASK 0x70000000
|
|
|
|
#define MIPS_CONFIG_EC_SHIFT 28
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/* Master-Checker Mode - 1: enabled */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_CONFIG_CM 0x80000000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* The bits in the MIPS4 config register.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Location of exception vectors.
|
|
|
|
*
|
|
|
|
* Common vectors: reset and UTLB miss.
|
|
|
|
*/
|
2010-07-13 17:24:30 +00:00
|
|
|
#define MIPS_RESET_EXC_VEC ((intptr_t)(int32_t)0xBFC00000)
|
|
|
|
#define MIPS_UTLB_MISS_EXC_VEC ((intptr_t)(int32_t)0x80000000)
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* MIPS-III exception vectors
|
|
|
|
*/
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_XTLB_MISS_EXC_VEC ((intptr_t)(int32_t)0x80000080)
|
|
|
|
#define MIPS_CACHE_ERR_EXC_VEC ((intptr_t)(int32_t)0x80000100)
|
|
|
|
#define MIPS_GEN_EXC_VEC ((intptr_t)(int32_t)0x80000180)
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* MIPS32/MIPS64 (and some MIPS3) dedicated interrupt vector.
|
|
|
|
*/
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_INTR_EXC_VEC 0x80000200
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Coprocessor 0 registers:
|
|
|
|
*
|
|
|
|
* v--- width for mips I,III,32,64
|
|
|
|
* (3=32bit, 6=64bit, i=impl dep)
|
|
|
|
* 0 MIPS_COP_0_TLB_INDEX 3333 TLB Index.
|
|
|
|
* 1 MIPS_COP_0_TLB_RANDOM 3333 TLB Random.
|
|
|
|
* 2 MIPS_COP_0_TLB_LO0 .636 r4k TLB entry low.
|
|
|
|
* 3 MIPS_COP_0_TLB_LO1 .636 r4k TLB entry low, extended.
|
|
|
|
* 4 MIPS_COP_0_TLB_CONTEXT 3636 TLB Context.
|
|
|
|
* 5 MIPS_COP_0_TLB_PG_MASK .333 TLB Page Mask register.
|
|
|
|
* 6 MIPS_COP_0_TLB_WIRED .333 Wired TLB number.
|
2010-07-13 22:35:09 +00:00
|
|
|
* 7 MIPS_COP_0_INFO ..33 Info registers
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
* 8 MIPS_COP_0_BAD_VADDR 3636 Bad virtual address.
|
|
|
|
* 9 MIPS_COP_0_COUNT .333 Count register.
|
|
|
|
* 10 MIPS_COP_0_TLB_HI 3636 TLB entry high.
|
|
|
|
* 11 MIPS_COP_0_COMPARE .333 Compare (against Count).
|
|
|
|
* 12 MIPS_COP_0_STATUS 3333 Status register.
|
|
|
|
* 13 MIPS_COP_0_CAUSE 3333 Exception cause register.
|
|
|
|
* 14 MIPS_COP_0_EXC_PC 3636 Exception PC.
|
|
|
|
* 15 MIPS_COP_0_PRID 3333 Processor revision identifier.
|
|
|
|
* 16 MIPS_COP_0_CONFIG 3333 Configuration register.
|
|
|
|
* 16/1 MIPS_COP_0_CONFIG1 ..33 Configuration register 1.
|
|
|
|
* 16/2 MIPS_COP_0_CONFIG2 ..33 Configuration register 2.
|
|
|
|
* 16/3 MIPS_COP_0_CONFIG3 ..33 Configuration register 3.
|
2011-03-16 08:22:29 +00:00
|
|
|
* 16/4 MIPS_COP_0_CONFIG4 ..33 Configuration register 4.
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
* 17 MIPS_COP_0_LLADDR .336 Load Linked Address.
|
|
|
|
* 18 MIPS_COP_0_WATCH_LO .336 WatchLo register.
|
|
|
|
* 19 MIPS_COP_0_WATCH_HI .333 WatchHi register.
|
|
|
|
* 20 MIPS_COP_0_TLB_XCONTEXT .6.6 TLB XContext register.
|
|
|
|
* 23 MIPS_COP_0_DEBUG .... Debug JTAG register.
|
|
|
|
* 24 MIPS_COP_0_DEPC .... DEPC JTAG register.
|
|
|
|
* 25 MIPS_COP_0_PERFCNT ..36 Performance Counter register.
|
|
|
|
* 26 MIPS_COP_0_ECC .3ii ECC / Error Control register.
|
|
|
|
* 27 MIPS_COP_0_CACHE_ERR .3ii Cache Error register.
|
|
|
|
* 28/0 MIPS_COP_0_TAG_LO .3ii Cache TagLo register (instr).
|
|
|
|
* 28/1 MIPS_COP_0_DATA_LO ..ii Cache DataLo register (instr).
|
|
|
|
* 28/2 MIPS_COP_0_TAG_LO ..ii Cache TagLo register (data).
|
|
|
|
* 28/3 MIPS_COP_0_DATA_LO ..ii Cache DataLo register (data).
|
|
|
|
* 29/0 MIPS_COP_0_TAG_HI .3ii Cache TagHi register (instr).
|
|
|
|
* 29/1 MIPS_COP_0_DATA_HI ..ii Cache DataHi register (instr).
|
|
|
|
* 29/2 MIPS_COP_0_TAG_HI ..ii Cache TagHi register (data).
|
|
|
|
* 29/3 MIPS_COP_0_DATA_HI ..ii Cache DataHi register (data).
|
|
|
|
* 30 MIPS_COP_0_ERROR_PC .636 Error EPC register.
|
|
|
|
* 31 MIPS_COP_0_DESAVE .... DESAVE JTAG register.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* Deal with inclusion from an assembly file. */
|
|
|
|
#if defined(_LOCORE) || defined(LOCORE)
|
|
|
|
#define _(n) $n
|
|
|
|
#else
|
|
|
|
#define _(n) n
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#define MIPS_COP_0_TLB_INDEX _(0)
|
|
|
|
#define MIPS_COP_0_TLB_RANDOM _(1)
|
|
|
|
/* Name and meaning of TLB bits for $2 differ on r3k and r4k. */
|
|
|
|
|
|
|
|
#define MIPS_COP_0_TLB_CONTEXT _(4)
|
|
|
|
/* $5 and $6 new with MIPS-III */
|
|
|
|
#define MIPS_COP_0_BAD_VADDR _(8)
|
|
|
|
#define MIPS_COP_0_TLB_HI _(10)
|
|
|
|
#define MIPS_COP_0_STATUS _(12)
|
|
|
|
#define MIPS_COP_0_CAUSE _(13)
|
|
|
|
#define MIPS_COP_0_EXC_PC _(14)
|
|
|
|
#define MIPS_COP_0_PRID _(15)
|
|
|
|
|
|
|
|
/* MIPS-III */
|
|
|
|
#define MIPS_COP_0_TLB_LO0 _(2)
|
|
|
|
#define MIPS_COP_0_TLB_LO1 _(3)
|
|
|
|
|
|
|
|
#define MIPS_COP_0_TLB_PG_MASK _(5)
|
|
|
|
#define MIPS_COP_0_TLB_WIRED _(6)
|
|
|
|
|
|
|
|
#define MIPS_COP_0_COUNT _(9)
|
|
|
|
#define MIPS_COP_0_COMPARE _(11)
|
|
|
|
|
|
|
|
#define MIPS_COP_0_CONFIG _(16)
|
|
|
|
#define MIPS_COP_0_LLADDR _(17)
|
|
|
|
#define MIPS_COP_0_WATCH_LO _(18)
|
|
|
|
#define MIPS_COP_0_WATCH_HI _(19)
|
|
|
|
#define MIPS_COP_0_TLB_XCONTEXT _(20)
|
|
|
|
#define MIPS_COP_0_ECC _(26)
|
|
|
|
#define MIPS_COP_0_CACHE_ERR _(27)
|
|
|
|
#define MIPS_COP_0_TAG_LO _(28)
|
|
|
|
#define MIPS_COP_0_TAG_HI _(29)
|
|
|
|
#define MIPS_COP_0_ERROR_PC _(30)
|
|
|
|
|
|
|
|
/* MIPS32/64 */
|
2010-07-13 22:35:09 +00:00
|
|
|
#define MIPS_COP_0_INFO _(7)
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
#define MIPS_COP_0_DEBUG _(23)
|
|
|
|
#define MIPS_COP_0_DEPC _(24)
|
|
|
|
#define MIPS_COP_0_PERFCNT _(25)
|
|
|
|
#define MIPS_COP_0_DATA_LO _(28)
|
|
|
|
#define MIPS_COP_0_DATA_HI _(29)
|
|
|
|
#define MIPS_COP_0_DESAVE _(31)
|
|
|
|
|
|
|
|
/* MIPS32 Config register definitions */
|
|
|
|
#define MIPS_MMU_NONE 0x00 /* No MMU present */
|
|
|
|
#define MIPS_MMU_TLB 0x01 /* Standard TLB */
|
|
|
|
#define MIPS_MMU_BAT 0x02 /* Standard BAT */
|
|
|
|
#define MIPS_MMU_FIXED 0x03 /* Standard fixed mapping */
|
|
|
|
|
|
|
|
#define MIPS_CONFIG0_MT_MASK 0x00000380 /* bits 9..7 MMU Type */
|
|
|
|
#define MIPS_CONFIG0_MT_SHIFT 7
|
|
|
|
#define MIPS_CONFIG0_BE 0x00008000 /* data is big-endian */
|
2015-12-11 16:51:04 +00:00
|
|
|
#define MIPS_CONFIG0_VI 0x00000008 /* instruction cache is virtual */
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
#define MIPS_CONFIG1_TLBSZ_MASK 0x7E000000 /* bits 30..25 # tlb entries minus one */
|
|
|
|
#define MIPS_CONFIG1_TLBSZ_SHIFT 25
|
2010-03-12 03:49:17 +00:00
|
|
|
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
#define MIPS_CONFIG1_IS_MASK 0x01C00000 /* bits 24..22 icache sets per way */
|
|
|
|
#define MIPS_CONFIG1_IS_SHIFT 22
|
|
|
|
#define MIPS_CONFIG1_IL_MASK 0x00380000 /* bits 21..19 icache line size */
|
|
|
|
#define MIPS_CONFIG1_IL_SHIFT 19
|
|
|
|
#define MIPS_CONFIG1_IA_MASK 0x00070000 /* bits 18..16 icache associativity */
|
|
|
|
#define MIPS_CONFIG1_IA_SHIFT 16
|
|
|
|
#define MIPS_CONFIG1_DS_MASK 0x0000E000 /* bits 15..13 dcache sets per way */
|
|
|
|
#define MIPS_CONFIG1_DS_SHIFT 13
|
|
|
|
#define MIPS_CONFIG1_DL_MASK 0x00001C00 /* bits 12..10 dcache line size */
|
|
|
|
#define MIPS_CONFIG1_DL_SHIFT 10
|
|
|
|
#define MIPS_CONFIG1_DA_MASK 0x00000380 /* bits 9.. 7 dcache associativity */
|
|
|
|
#define MIPS_CONFIG1_DA_SHIFT 7
|
|
|
|
#define MIPS_CONFIG1_LOWBITS 0x0000007F
|
|
|
|
#define MIPS_CONFIG1_C2 0x00000040 /* Coprocessor 2 implemented */
|
|
|
|
#define MIPS_CONFIG1_MD 0x00000020 /* MDMX ASE implemented (MIPS64) */
|
|
|
|
#define MIPS_CONFIG1_PC 0x00000010 /* Performance counters implemented */
|
|
|
|
#define MIPS_CONFIG1_WR 0x00000008 /* Watch registers implemented */
|
|
|
|
#define MIPS_CONFIG1_CA 0x00000004 /* MIPS16e ISA implemented */
|
|
|
|
#define MIPS_CONFIG1_EP 0x00000002 /* EJTAG implemented */
|
|
|
|
#define MIPS_CONFIG1_FP 0x00000001 /* FPU implemented */
|
|
|
|
|
2014-11-20 17:06:41 +00:00
|
|
|
#define MIPS_CONFIG2_SA_SHIFT 0 /* Secondary cache associativity */
|
|
|
|
#define MIPS_CONFIG2_SA_MASK 0xf
|
|
|
|
#define MIPS_CONFIG2_SL_SHIFT 4 /* Secondary cache line size */
|
|
|
|
#define MIPS_CONFIG2_SL_MASK 0xf
|
|
|
|
#define MIPS_CONFIG2_SS_SHIFT 8 /* Secondary cache sets per way */
|
|
|
|
#define MIPS_CONFIG2_SS_MASK 0xf
|
|
|
|
|
2011-03-16 08:22:29 +00:00
|
|
|
#define MIPS_CONFIG4_MMUSIZEEXT 0x000000FF /* bits 7.. 0 MMU Size Extension */
|
|
|
|
#define MIPS_CONFIG4_MMUEXTDEF 0x0000C000 /* bits 15.14 MMU Extension Definition */
|
|
|
|
#define MIPS_CONFIG4_MMUEXTDEF_MMUSIZEEXT 0x00004000 /* This values denotes CONFIG4 bits */
|
|
|
|
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
/*
|
|
|
|
* Values for the code field in a break instruction.
|
|
|
|
*/
|
|
|
|
#define MIPS_BREAK_INSTR 0x0000000d
|
|
|
|
#define MIPS_BREAK_VAL_MASK 0x03ff0000
|
|
|
|
#define MIPS_BREAK_VAL_SHIFT 16
|
|
|
|
#define MIPS_BREAK_KDB_VAL 512
|
|
|
|
#define MIPS_BREAK_SSTEP_VAL 513
|
|
|
|
#define MIPS_BREAK_BRKPT_VAL 514
|
|
|
|
#define MIPS_BREAK_SOVER_VAL 515
|
2010-07-13 17:24:30 +00:00
|
|
|
#define MIPS_BREAK_DDB_VAL 516
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
#define MIPS_BREAK_KDB (MIPS_BREAK_INSTR | \
|
|
|
|
(MIPS_BREAK_KDB_VAL << MIPS_BREAK_VAL_SHIFT))
|
|
|
|
#define MIPS_BREAK_SSTEP (MIPS_BREAK_INSTR | \
|
|
|
|
(MIPS_BREAK_SSTEP_VAL << MIPS_BREAK_VAL_SHIFT))
|
|
|
|
#define MIPS_BREAK_BRKPT (MIPS_BREAK_INSTR | \
|
|
|
|
(MIPS_BREAK_BRKPT_VAL << MIPS_BREAK_VAL_SHIFT))
|
|
|
|
#define MIPS_BREAK_SOVER (MIPS_BREAK_INSTR | \
|
|
|
|
(MIPS_BREAK_SOVER_VAL << MIPS_BREAK_VAL_SHIFT))
|
2010-07-13 17:24:30 +00:00
|
|
|
#define MIPS_BREAK_DDB (MIPS_BREAK_INSTR | \
|
|
|
|
(MIPS_BREAK_DDB_VAL << MIPS_BREAK_VAL_SHIFT))
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Mininum and maximum cache sizes.
|
|
|
|
*/
|
|
|
|
#define MIPS_MIN_CACHE_SIZE (16 * 1024)
|
|
|
|
#define MIPS_MAX_CACHE_SIZE (256 * 1024)
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_MAX_PCACHE_SIZE (32 * 1024) /* max. primary cache size */
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* The floating point version and status registers.
|
|
|
|
*/
|
|
|
|
#define MIPS_FPU_ID $0
|
|
|
|
#define MIPS_FPU_CSR $31
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The floating point coprocessor status register bits.
|
|
|
|
*/
|
|
|
|
#define MIPS_FPU_ROUNDING_BITS 0x00000003
|
|
|
|
#define MIPS_FPU_ROUND_RN 0x00000000
|
|
|
|
#define MIPS_FPU_ROUND_RZ 0x00000001
|
|
|
|
#define MIPS_FPU_ROUND_RP 0x00000002
|
|
|
|
#define MIPS_FPU_ROUND_RM 0x00000003
|
|
|
|
#define MIPS_FPU_STICKY_BITS 0x0000007c
|
|
|
|
#define MIPS_FPU_STICKY_INEXACT 0x00000004
|
|
|
|
#define MIPS_FPU_STICKY_UNDERFLOW 0x00000008
|
|
|
|
#define MIPS_FPU_STICKY_OVERFLOW 0x00000010
|
|
|
|
#define MIPS_FPU_STICKY_DIV0 0x00000020
|
|
|
|
#define MIPS_FPU_STICKY_INVALID 0x00000040
|
|
|
|
#define MIPS_FPU_ENABLE_BITS 0x00000f80
|
|
|
|
#define MIPS_FPU_ENABLE_INEXACT 0x00000080
|
|
|
|
#define MIPS_FPU_ENABLE_UNDERFLOW 0x00000100
|
|
|
|
#define MIPS_FPU_ENABLE_OVERFLOW 0x00000200
|
|
|
|
#define MIPS_FPU_ENABLE_DIV0 0x00000400
|
|
|
|
#define MIPS_FPU_ENABLE_INVALID 0x00000800
|
|
|
|
#define MIPS_FPU_EXCEPTION_BITS 0x0003f000
|
|
|
|
#define MIPS_FPU_EXCEPTION_INEXACT 0x00001000
|
|
|
|
#define MIPS_FPU_EXCEPTION_UNDERFLOW 0x00002000
|
|
|
|
#define MIPS_FPU_EXCEPTION_OVERFLOW 0x00004000
|
|
|
|
#define MIPS_FPU_EXCEPTION_DIV0 0x00008000
|
|
|
|
#define MIPS_FPU_EXCEPTION_INVALID 0x00010000
|
|
|
|
#define MIPS_FPU_EXCEPTION_UNIMPL 0x00020000
|
|
|
|
#define MIPS_FPU_COND_BIT 0x00800000
|
|
|
|
#define MIPS_FPU_FLUSH_BIT 0x01000000 /* r4k, MBZ on r3k */
|
2012-03-06 19:01:32 +00:00
|
|
|
#define MIPS_FPC_MBZ_BITS 0xfe7c0000
|
FreeBSD/mips port. The FreeBSD/mips port targets mips32, mips64,
mips32r2 and mips64r2 (and close relatives) processors. There
presently is support for ADMtek ADM5120, A mips 4Kc in a malta board,
the RB533 routerboard (based on IDT RC32434) and some preliminary
support for sibtye/broadcom designs. Other hardware support will be
forthcomcing.
This port boots multiuser under gxemul emulating the malta board and
also bootstraps on the hardware whose support is forthcoming...
Oleksandr Tymoshenko, Wojciech Koszek, Warner Losh, Olivier Houchard,
Randall Stewert and others that have contributed to the mips2 and/or
mips2-jnpr perforce branches. Juniper contirbuted a generic mips port
late in the life cycle of the misp2 branch. Warner Losh merged the
mips2 and Juniper code bases, and others list above have worked for
the past several months to get to multiuser.
In addition, the mips2 work owe a debt to the trail blazing efforts of
the original mips branch in perforce done by Juli Mallett.
2008-04-13 07:27:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Constants to determine if have a floating point instruction.
|
|
|
|
*/
|
|
|
|
#define MIPS_OPCODE_SHIFT 26
|
|
|
|
#define MIPS_OPCODE_C1 0x11
|
|
|
|
|
|
|
|
#endif /* _MIPS_CPUREGS_H_ */
|