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 + -
显示快捷键?