idt79rc233x.h
来自「eCos操作系统源码」· C头文件 代码 · 共 575 行 · 第 1/2 页
H
575 行
#ifndef CYGONCE_HAL_IDT79RC233X_H#define CYGONCE_HAL_IDT79RC233X_H//==========================================================================//// idt79rc233x.h//// IDT 79RC233x platform definitions////==========================================================================//####ECOSGPLCOPYRIGHTBEGIN####// -------------------------------------------// This file is part of eCos, the Embedded Configurable Operating System.// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.//// eCos is free software; you can redistribute it and/or modify it under// the terms of the GNU General Public License as published by the Free// Software Foundation; either version 2 or (at your option) any later version.//// eCos is distributed in the hope that it will be useful, but WITHOUT ANY// WARRANTY; without even the implied warranty of MERCHANTABILITY or// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License// for more details.//// You should have received a copy of the GNU General Public License along// with eCos; if not, write to the Free Software Foundation, Inc.,// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.//// As a special exception, if other files instantiate templates or use macros// or inline functions from this file, or you compile this file and link it// with other works to produce a work based on this file, this file does not// by itself cause the resulting work to be covered by the GNU General Public// License. However the source code for this file must still be made available// in accordance with section (3) of the GNU General Public License.//// This exception does not invalidate any other reasons why a work based on// this file might be covered by the GNU General Public License.//// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.// at http://sources.redhat.com/ecos/ecos-license/// -------------------------------------------//####ECOSGPLCOPYRIGHTEND####//==========================================================================//#####DESCRIPTIONBEGIN####//// Author(s): Tim Michals// Contributors: nickg// Date: 2003-02-13// Purpose: IDT 79RC233x platform definitions// Description: // Usage: //####DESCRIPTIONEND####//==========================================================================#define K0BASE 0x80000000#define K0SIZE 0x20000000#define K1BASE 0xA0000000#define K1SIZE 0x20000000#define K2BASE 0xC0000000#define K2SIZE 0x40000000/** Exception vectors*/#define T_VEC K0BASE /* tlbmiss vector */#define C_VEC (K1BASE+0x100) /* cache exception vector */#define E_VEC (K0BASE+0x180) /* exception vector */#define R_VEC (K1BASE+0x1fc00000) /* reset vector *//* * Address conversion macros */#define K0_TO_K1(x) ((unsigned)(x)|0xA0000000) /* kseg0 to kseg1 */#define K1_TO_K0(x) ((unsigned)(x)&0x9FFFFFFF) /* kseg1 to kseg0 */#define K0_TO_PHYS(x) ((unsigned)(x)&0x1FFFFFFF) /* kseg0 to physical */#define K1_TO_PHYS(x) ((unsigned)(x)&0x1FFFFFFF) /* kseg1 to physical */#define PHYS_TO_K0(x) ((unsigned)(x)|0x80000000) /* physical to kseg0 */#define PHYS_TO_K1(x) ((unsigned)(x)|0xA0000000) /* physical to kseg1 *//** Address predicates*/#define IS_KSEG0(x) ((unsigned)(x) >= K0BASE && (unsigned)(x) < K1BASE)#define IS_KSEG1(x) ((unsigned)(x) >= K1BASE && (unsigned)(x) < K2BASE)#define IS_KUSEG(x) ((unsigned)(x) < K0BASE)/** Cache size constants*/#define MINCACHE +(1*1024) /* leading plus for mas's benefit */#define MAXCACHE +(256*1024) /* leading plus for mas's benefit *//** Cache alignment macros** NOTE: These definitions may migrate to vxWorks.h in a future release.*/#define CACHE_ROUND_UP(x) ROUND_UP(x, _CACHE_ALIGN_SIZE)#define CACHE_ROUND_DOWN(x) ROUND_DOWN(x, _CACHE_ALIGN_SIZE)/** Cause bit definitions*/#define CAUSE_BD 0x80000000 /* Branch delay slot */#define CAUSE_CEMASK 0x30000000 /* coprocessor error */#define CAUSE_CESHIFT 28#define CAUSE_IP8 0x00008000 /* External level 8 pending */#define CAUSE_IP7 0x00004000 /* External level 7 pending */#define CAUSE_IP6 0x00002000 /* External level 6 pending */#define CAUSE_IP5 0x00001000 /* External level 5 pending */#define CAUSE_IP4 0x00000800 /* External level 4 pending */#define CAUSE_IP3 0x00000400 /* External level 3 pending */#define CAUSE_SW2 0x00000200 /* Software level 2 pending */#define CAUSE_SW1 0x00000100 /* Software level 1 pending */#define CAUSE_IPMASK 0x0000FF00 /* Pending interrupt mask */#define CAUSE_IPSHIFT 8#define CAUSE_EXCMASK 0x0000007C /* Cause code bits */#define CAUSE_EXCSHIFT 2/** Status definition bits*/#define SR_CUMASK 0xf0000000 /* coproc usable bits */#define SR_CU3 0x80000000 /* Coprocessor 3 usable */#define SR_CU2 0x40000000 /* Coprocessor 2 usable */#define SR_CU1 0x20000000 /* Coprocessor 1 usable */#define SR_CU0 0x10000000 /* Coprocessor 0 usable */#define SR_NBL 0x08000000 /* Enables Non Blocking Load */#define SR_RE 0x02000000 /* Reverse endian in user mode */#define SR_DL 0x01000000 /* Data Cache Lock Enable */ #define SR_IL 0x00800000 /* Instruction Cache Lock Enable */#define SR_BEV 0x00400000 /* use boot exception vectors */#define SR_SR 0x00100000 /* soft reset occurred */#define SR_CE 0x00020000 /* use ECC reg */#define SR_DE 0x00010000 /* disable cache errors */#define SR_IMASK 0x0000ff00 /* Interrupt mask */#define SR_IMASK8 0x00000000 /* mask level 8 */#define SR_IMASK7 0x00008000 /* mask level 7 */#define SR_IMASK6 0x0000c000 /* mask level 6 */#define SR_IMASK5 0x0000e000 /* mask level 5 */#define SR_IMASK4 0x0000f000 /* mask level 4 */#define SR_IMASK3 0x0000f800 /* mask level 3 */#define SR_IMASK2 0x0000fc00 /* mask level 2 */#define SR_IMASK1 0x0000fe00 /* mask level 1 */#define SR_IMASK0 0x0000ff00 /* mask level 0 */#define SR_IBIT8 0x00008000 /* bit level 8 */#define SR_IBIT7 0x00004000 /* bit level 7 */#define SR_IBIT6 0x00002000 /* bit level 6 */#define SR_IBIT5 0x00001000 /* bit level 5 */#define SR_IBIT4 0x00000800 /* bit level 4 */#define SR_IBIT3 0x00000400 /* bit level 3 */#define SR_IBIT2 0x00000200 /* bit level 2 */#define SR_IBIT1 0x00000100 /* bit level 1 */#define SR_KSU_K 0x00000000 /* kernel mode */#define SR_KSU_U 0x00000010 /* user mode */#define SR_ERL 0x00000004 /* Error Level */#define SR_EXL 0x00000002 /* Exception Level */#define SR_IE 0x00000001 /* interrupt enable, 1 => enable */#define SR_IMASKSHIFT 8/** tlb definitions*/#define TLB_ENTRIES 16#define TLBLO_PFNMASK 0x03ffffc0#define TLBLO_PFNSHIFT 6#define TLBLO_CMASK 0x00000038#define TLBLO_NC 0x00000010 /* uncached */#define TLBLO_NONC 0x00000018 /* cacheable non-coherent */#define TLBLO_D 0x4 /* writeable */#define TLBLO_V 0x2 /* valid bit */#define TLBLO_G 0x1 /* global bit */#define TLBHI_VPN2MASK 0xffffe000#define TLBHI_VPN2SHIFT 13#define TLBHI_PIDMASK 0xff#define TLBHI_PIDSHIFT 0#define TLBHI_NPID 256#define TLBINX_PROBE 0x80000000#define TLBINX_INXMASK 0x0000003f#define TLBINX_INXSHIFT 0#define TLBRAND_RANDMASK 0x0000000f#define TLBRAND_RANDSHIFT 0#define TLBCTXT_BASEMASK 0xff800000#define TLBCTXT_BASESHIFT 23#define TLBCTXT_VPN2MASK 0x007ffff0#define TLBCTXT_VPN2SHIFT 4/* * RC32364 Config Register */#define CFG_ICE 0x80000000 /* In Circuit Emulator existence */#define CFG_ECMASK 0x70000000 /* System Clock Ratio */#define CFG_ECBY2 0x00000000 /* divide by 2 */#define CFG_ECBY3 0x10000000 /* divide by 3 */#define CFG_ECBY4 0x20000000 /* divide by 4 */#define CFG_NBL 0x00800000 /* Non Blocking load */#define CFG_BE 0x00008000 /* Big Endian */#define CFG_ICMASK 0x00000e00 /* Instruction cache size */#define CFG_ICSHIFT 9#define CFG_DCMASK 0x000001c0 /* Data cache size */#define CFG_DCSHIFT 6#define CFG_IB 0x00000020 /* Instruction cache block size */#define CFG_DB 0x00000010 /* Data cache block size */#define CFG_K0MASK 0x00000007 /* KSEG0 coherency algorithm *//* * Primary cache mode */#define CFG_C_UNCACHED 2#define CFG_C_NONCOHERENT 3/* * Primary Cache TagLo */#define TAG_PTAG_MASK 0x7fffff00 /* Primary Tag */#define TAG_PTAG_SHIFT 0x00000008#define TAG_PSTATE_MASK 0x000000c0 /* Primary Cache State */#define TAG_PSTATE_SHIFT 0x00000006#define TAG_LOCK_BIT 0x00000004 /* Cache line lock bit */#define TAG_LOCK_BIT_SHIFT 0x00000002#define TAG_FIFO_REFILL 0x00000002 /* Fifo refill */#define TAG_FIFO_REFILL_SHIFT 0x00000001#define TAG_PARITY_MASK 0x00000001 /* Primary Tag Parity */#define TAG_PARITY_SHIFT 0x00000000/* * CacheErr register */#define CACHEERR_TYPE 0x80000000 /* reference type: 0=Instr, 1=Data */#define CACHEERR_LEVEL 0x40000000 /* cache level: 0=Primary, 1=reserved */#define CACHEERR_DATA 0x20000000 /* data field: 0=No error, 1=Error */#define CACHEERR_TAG 0x10000000 /* tag field: 0=No error, 1=Error */#define CACHEERR_BOTH 0x02000000 /* Data & Instruction error: 0=No, 1=Yes */#define CACHEERR_SIDX_MASK 0x003ffff8 /* PADDR(21..3) */#define CACHEERR_SIDX_SHIFT 3#define CACHEERR_PIDX_MASK 0x00000003 /* VADDR(13..12) */#define CACHEERR_PIDX_SHIFT 12 /* * Cache operations */#define Index_Invalidate_I 0x0 /* 0 0 */#define Index_Writeback_Inv_D 0x1 /* 0 1 */#define Index_Load_Tag_I 0x4 /* 1 0 */#define Index_Load_Tag_D 0x5 /* 1 1 */#define Index_Store_Tag_I 0x8 /* 2 0 */#define Index_Store_Tag_D 0x9 /* 2 1 */#define Create_Dirty_Exc_D 0xD /* 3 1 */#define Hit_Invalidate_I 0x10 /* 4 0 */#define Hit_Invalidate_D 0x11 /* 4 1 */#define Hit_Writeback_Inv_D 0x15 /* 5 1 */#define Fill_I 0x14 /* 5 0 */#define Hit_Writeback_D 0x19 /* 6 1 */#define Hit_Writeback_I 0x18 /* 6 0 *//** Coprocessor 0 operations*/#define C0_READI 0x1 /* read ITLB entry addressed by C0_INDEX */#define C0_WRITEI 0x2 /* write ITLB entry addressed by C0_INDEX */#define C0_WRITER 0x6 /* write ITLB entry addressed by C0_RAND */#define C0_PROBE 0x8 /* probe for ITLB entry addressed by TLBHI */#define C0_ERET 0x18 /* restore for exception */#define FP_EXC_MASK (FP_EXC_I|FP_EXC_U|FP_EXC_O|FP_EXC_Z|FP_EXC_V|FP_EXC_E)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?