⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbmips.h

📁 microwindows移植到S3C44B0的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*  *********************************************************************    *  SB1250 Board Support Package    *      *  MIPS64 CPU definitions			File: sbmips.h    *     *  This module contains constants and macros specific to the    *  SB1 MIPS64 core.    *      *  Author:  Mitch Lichtenberg (mitch@sibyte.com)    *      *********************************************************************      *    *  Copyright 2000,2001    *  Broadcom Corporation. All rights reserved.    *      *  This program 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 of     *  the License, or (at your option) any later version.    *    *  This program 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 this program; if not, write to the Free Software    *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,     *  MA 02111-1307 USA    ********************************************************************* */#ifndef _SB_MIPS_H#define _SB_MIPS_H/*  *********************************************************************    *  Configure language    ********************************************************************* */#if defined(__ASSEMBLY__)#define _ATYPE_#define _ATYPE32_#define _ATYPE64_#else#define _ATYPE_		(__SIZE_TYPE__)#define _ATYPE32_	(int)#define _ATYPE64_	(long long)#endif/*  *********************************************************************    *  Bitfield macros    ********************************************************************* *//* * Make a mask for 1 bit at position 'n' */#define _MM_MAKEMASK1(n) (1 << (n))/* * Make a mask for 'v' bits at position 'n' */#define _MM_MAKEMASK(v,n) (((1<<(v))-1) << (n))/* * Make a value at 'v' at bit position 'n' */#define _MM_MAKEVALUE(v,n) ((v) << (n))/* * Retrieve a value from 'v' at bit position 'n' with 'm' mask bits */#define _MM_GETVALUE(v,n,m) (((v) & (m)) >> (n))/*  *********************************************************************    *  32-bit MIPS Address Spaces    ********************************************************************* */#ifdef __ASSEMBLY__#define _ACAST32_#define _ACAST64_#else#define _ACAST32_	_ATYPE_ _ATYPE32_	/* widen if necessary */#define _ACAST64_		_ATYPE64_	/* do _not_ narrow */#endif/* 32-bit address map */#define UBASE		0x00000000		/* user+ mapped */#define USIZE		0x80000000#define K0BASE 		(_ACAST32_ 0x80000000)	/* kernel unmapped cached */#define K0SIZE 		0x20000000#define K1BASE 		(_ACAST32_ 0xa0000000)	/* kernel unmapped uncached */#define K1SIZE 		0x20000000#define KSBASE 		(_ACAST32_ 0xc0000000)	/* supervisor+ mapped */#define KSSIZE 		0x20000000#define K3BASE 		(_ACAST32_ 0xe0000000)	/* kernel mapped */#define K3SIZE 		0x20000000/* 64-bit address map additions to the above (sign-extended) ranges */#define XUBASE		(_ACAST64_ 0x0000000080000000)	/* user+ mapped */#define XUSIZE		(_ACAST64_ 0x00000FFF80000000)#define XSSEGBASE       (_ACAST64_ 0x4000000000000000)	/* supervisor+ mapped */#define XSSEGSIZE	(_ACAST64_ 0x0000100000000000)#define XKPHYSBASE      (_ACAST64_ 0x8000000000000000)	/* kernel unmapped */#define XKPHYSSIZE	(_ACAST64_ 0x0000100000000000)#define XKSEGBASE       (_ACAST64_ 0xC000000000000000)	/* kernel mapped */#define XKSEGSIZE	(_ACAST64_ 0x00000FFF80000000)#define GEN_VECT 	(_ACAST32_ 0x80000080)#define UTLB_VECT 	(_ACAST32_ 0x80000000)/*  *********************************************************************    *  Address space coercion macros    ********************************************************************* */#define PHYS_TO_K0(pa)	(K0BASE | (pa))#define PHYS_TO_K1(pa)	(K1BASE | (pa))#define K0_TO_PHYS(va)	((va) & (K0SIZE-1))#define K1_TO_PHYS(va)	((va) & (K1SIZE-1))#define K0_TO_K1(va)	((va) | K1SIZE)#define K1_TO_K0(va)	((va) & ~K1SIZE)#define PHYS_TO_XK1(p) (_ACAST64_ (0xffffffffa0000000 | (p)))#define XK1_TO_PHYS(p) ((p) & (K1SIZE-1))#define PHYS_TO_XKPHYS(cca,p) (_SB_MAKEMASK1(63) | (_SB_MAKE64(cca) << 59) | (p))#define PHYS_TO_XKSEG_UNCACHED(p)  PHYS_TO_XKPHYS(K_CALG_UNCACHED,(p))#define PHYS_TO_XKSEG_CACHED(p)    PHYS_TO_XKPHYS(K_CALG_COH_SHAREABLE,(p))#define XKPHYS_TO_PHYS(p) ((p) & _SB_MAKEMASK(0,59))#if !defined(__ASSEMBLY__)#define mips_wbflush()  __asm__ __volatile__ ("sync" : : : "memory")#define	ISK0SEG(va)	((va) >= K0BASE && (va) <= (K0BASE + K0SIZE - 1))#define	ISK1SEG(va)	((va) >= K1BASE && (va) <= (K1BASE + K1SIZE - 1))#endif/*  *********************************************************************    *  Register aliases    ********************************************************************* */#if defined(__ASSEMBLY__)#define zero		$0#define	AT		$1		/* assembler temporaries */#define	v0		$2		/* value holders */#define	v1		$3#define	a0		$4		/* arguments */#define	a1		$5#define	a2		$6#define	a3		$7#define	t0		$8		/* temporaries */#define	t1		$9#define	t2		$10#define	t3		$11#define	t4		$12#define	t5		$13#define	t6		$14#define	t7		$15#define ta0		$12#define ta1		$13#define ta2		$14#define ta3		$15#define	s0		$16		/* saved registers */#define	s1		$17#define	s2		$18#define	s3		$19#define	s4		$20#define	s5		$21#define	s6		$22#define	s7		$23#define	t8		$24		/* temporaries */#define	t9		$25#define	k0		$26		/* kernel registers */#define	k1		$27#define	gp		$28		/* global pointer */#define	sp		$29		/* stack pointer */#define	s8		$30		/* saved register */#define	fp		$30		/* frame pointer */#define	ra		$31		/* return address */#endif/*  *********************************************************************    *  CP0 Registers     ********************************************************************* */#if defined(__ASSEMBLY__)#define C0_INX		$0		/* CP0: TLB Index */#define C0_RAND		$1		/* CP0: TLB Random */#define C0_TLBLO0	$2		/* CP0: TLB EntryLo0 */#define C0_TLBLO	C0_TLBLO0	/* CP0: TLB EntryLo0 */#define C0_TLBLO1	$3		/* CP0: TLB EntryLo1 */#define C0_CTEXT	$4		/* CP0: Context */#define C0_PGMASK	$5		/* CP0: TLB PageMask */#define C0_WIRED	$6		/* CP0: TLB Wired */#define C0_BADVADDR	$8		/* CP0: Bad Virtual Address */#define C0_COUNT 	$9		/* CP0: Count */#define C0_TLBHI	$10		/* CP0: TLB EntryHi */#define C0_COMPARE	$11		/* CP0: Compare */#define C0_SR		$12		/* CP0: Processor Status */#define C0_STATUS	C0_SR		/* CP0: Processor Status */#define C0_CAUSE	$13		/* CP0: Exception Cause */#define C0_EPC		$14		/* CP0: Exception PC */#define C0_PRID		$15		/* CP0: Processor Revision Indentifier */#define C0_CONFIG	$16		/* CP0: Config */#define C0_LLADDR	$17		/* CP0: LLAddr */#define C0_WATCHLO	$18		/* CP0: WatchpointLo */#define C0_WATCHHI	$19		/* CP0: WatchpointHi */#define C0_XCTEXT	$20		/* CP0: XContext */#define C0_ECC		$26		/* CP0: ECC */#define C0_CACHEERR	$27		/* CP0: CacheErr */#define C0_TAGLO	$28		/* CP0: TagLo */#define C0_TAGHI	$29		/* CP0: TagHi */#define C0_ERREPC	$30		/* CP0: ErrorEPC */#else#define C0_INX		0		/* CP0: TLB Index */#define C0_RAND		1		/* CP0: TLB Random */#define C0_TLBLO0	2		/* CP0: TLB EntryLo0 */#define C0_TLBLO	C0_TLBLO0	/* CP0: TLB EntryLo0 */#define C0_TLBLO1	3		/* CP0: TLB EntryLo1 */#define C0_CTEXT	4		/* CP0: Context */#define C0_PGMASK	5		/* CP0: TLB PageMask */#define C0_WIRED	6		/* CP0: TLB Wired */#define C0_BADVADDR	8		/* CP0: Bad Virtual Address */#define C0_COUNT 	9		/* CP0: Count */#define C0_TLBHI	10		/* CP0: TLB EntryHi */#define C0_COMPARE	11		/* CP0: Compare */#define C0_SR		12		/* CP0: Processor Status */#define C0_STATUS	C0_SR		/* CP0: Processor Status */#define C0_CAUSE	13		/* CP0: Exception Cause */#define C0_EPC		14		/* CP0: Exception PC */#define C0_PRID		15		/* CP0: Processor Revision Indentifier */#define C0_CONFIG	16		/* CP0: Config */#define C0_LLADDR	17		/* CP0: LLAddr */#define C0_WATCHLO	18		/* CP0: WatchpointLo */#define C0_WATCHHI	19		/* CP0: WatchpointHi */#define C0_XCTEXT	20		/* CP0: XContext */#define C0_ECC		26		/* CP0: ECC */#define C0_CACHEERR	27		/* CP0: CacheErr */#define C0_TAGLO	28		/* CP0: TagLo */#define C0_TAGHI	29		/* CP0: TagHi */#define C0_ERREPC	30		/* CP0: ErrorEPC */#endif/*  *********************************************************************    *  CP1 (floating point) control registers    ********************************************************************* */#define FPA_IRR		0		/* CP1: Implementation/Revision */#define FPA_CSR		31		/* CP1: Control/Status *//*  *********************************************************************    *  Macros for generating assembly language routines    ********************************************************************* */#if defined(__ASSEMBLY__)/* global leaf function (does not call other functions) */#define LEAF(name)		\  	.globl	name;		\  	.ent	name;		\name:/* global alternate entry to (local or global) leaf function */#define XLEAF(name)		\  	.globl	name;		\  	.aent	name;		\name:/* end of a global function */#define END(name)		\  	.size	name,.-name;	\  	.end	name/* local leaf function (does not call other functions) */#define SLEAF(name)		\  	.ent	name;		\name:/* local alternate entry to (local or global) leaf function */#define SXLEAF(name)		\  	.aent	name;		\name:/* end of a local function */#define SEND(name)		\  	END(name)/* define & export a symbol */#define EXPORT(name)		\  	.globl name;		\name:/* import a symbol */#define	IMPORT(name, size)	\	.extern	name,size/* define a zero-fill common block (BSS if not overridden) with a global name */#define COMM(name,size)		\	.comm	name,size/* define a zero-fill common block (BSS if not overridden) with a local name */#define LCOMM(name,size)		\  	.lcomm	name,size#endif/* Floating-Point Control register bits */#define CSR_C		0x00800000#define CSR_EXC		0x0003f000#define CSR_EE		0x00020000#define CSR_EV		0x00010000#define CSR_EZ		0x00008000#define CSR_EO		0x00004000#define CSR_EU		0x00002000#define CSR_EI		0x00001000#define CSR_TV		0x00000800#define CSR_TZ		0x00000400#define CSR_TO		0x00000200#define CSR_TU		0x00000100#define CSR_TI		0x00000080#define CSR_SV		0x00000040#define CSR_SZ		0x00000020#define CSR_SO		0x00000010

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -