Files
m241Neelima/vxworks-6.9/target/h/arch/mips/archMipsCommon.h
T
2026-07-30 11:19:44 +05:30

119 lines
3.6 KiB
C

/* archMipsCommon.h - common Mips architecture specific header */
/*
* Copyright (c) 2003-2004, 2006-2007, 2012 Wind River Systems, Inc.
*
* The right to copy, distribute, modify or otherwise make use
* of this software may be licensed only pursuant to the terms
* of an applicable Wind River license agreement.
*/
/*
* This file has been developed or significantly modified by the
* MIPS Center of Excellence Dedicated Engineering Staff.
* This notice is as per the MIPS Center of Excellence Master Partner
* Agreement, do not remove this notice without checking first with
* WR/Platforms MIPS Center of Excellence engineering management.
*/
/*
modification history
--------------------
01o,21mar12,jpb Updated for POSIX namespace isolation conformance (part of
defect Defect WIND000307800).
01n,09aug07,pad _VX_CPU_MIPS_64BIT and _VX_CPU_MIPS_32BIT were not defined
when _POSIX_C_SOURCE was defined by the applications. This is
now fixed.
01m,11jul07,zl added _WRS_CPU_HAS_CLZ_INSTR.
01l,04may07,zl updated portable library build configuration.
01k,21feb07,pes Add support for new MIPS lib structure.
01j,26jun06,jpb Updated for POSIX namespace conformance.
Changed C preprocessor macro CPU to _VX_CPU.
01i,02feb06,mil Updated for POSIX namespace conformance.
01h,30sep04,pes added define of _WRS_NO_BITS_PHYS_ADDR
01g,01oct04,tam moved definition of _TYPE_PHYS_ADDR to the kernel
architecture scpecific header
01f,17sep04,pes moved _TYPE_PHYS_ADDDR and _WRS_PHYS_ADDR_IS_64_BITS here
from archMips.h
01e,22mar04,zl moved trcLib_PORTABLE, _RType and INSTR definitions here.
01d,17mar04,pes Enable Coprocessor Abstraction
01c,25nov03,pes Moved definition of _BYTE_ORDER to archMipsCommon.h.
01b,12nov03,job Moved some blib stuff from archMips.h
01a,11nov03,pes written.
*/
#ifndef __INCarchMipsCommonh
#define __INCarchMipsCommonh
#ifdef __cplusplus
extern "C" {
#endif
#if defined(MIPSEB) || defined(__MIPSEB__)
#undef _BYTE_ORDER
#define _BYTE_ORDER _BIG_ENDIAN
#elif defined(MIPSEL) || defined(__MIPSEL__)
#undef _BYTE_ORDER
#define _BYTE_ORDER _LITTLE_ENDIAN
#else
#warning "One of MIPSEL or MIPSEB must be defined"
#endif
#define _WRS_PAL_COPROC_LIB /* enable coprocessor abstraction */
/* from bLib.c */
#define _WRS_BLIB_ALIGNMENT 3 /* quad byte alignment mask */
/*
* CLZ instruction (used for ffsMsb and ffsLsb) not supported
* by MIPSI2 and MIPSI3
*
* IMPORTANT: this must be conditional on ISA level, and not variant level
*/
#if (_VX_CPU != _VX_MIPSI2) && (_VX_CPU != _VX_MIPSI3)
#define _WRS_CPU_HAS_CLZ_INSTR
#endif /* !_VX_MIPSI2 && !_VX_MIPSI3 */
/* 32/64 bit */
#define _VX_CPU_MIPS_32BIT ((_VX_CPU==_VX_MIPS32) || \
(_VX_CPU==_VX_MIPSI2) || \
(_VX_CPU==_VX_MIPSI32) || \
(_VX_CPU==_VX_MIPSI32R2))
#define _VX_CPU_MIPS_64BIT ((_VX_CPU==_VX_MIPS64) || \
(_VX_CPU==_VX_MIPSI3) || \
(_VX_CPU==_VX_MIPSI64) || \
(_VX_CPU==_VX_MIPSI64R2))
#ifndef _ASMLANGUAGE
typedef unsigned long _Vx_INSTR; /* 32 bit word-aligned instructions */
#if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) && \
!defined(_POSIX_AEP_RT_CONTROLLER_C_SOURCE)
typedef _Vx_INSTR INSTR;
#endif /* !_POSIX_xxx_SOURCE */
#if (_VX_CPU_MIPS_32BIT)
typedef unsigned long _RType; /* registers are 32 bits */
#elif (_VX_CPU_MIPS_64BIT)
typedef unsigned long long _RType; /* registers are 64 bits */
#else /* _VX_CPU_MIPSxxBIT */
#error "Invalid CPU value"
#endif /* _VX_CPU */
#endif /* !_ASMLANGUAGE */
#define _WRS_NO_BITS_PHYS_ADDR 64
#ifdef __cplusplus
}
#endif
#endif /* __INCarchMipsCommonh */