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

203 lines
6.1 KiB
C

/* archSimnt.h - i86 VxSim specific header */
/*
* Copyright (c) 1997-2008,2010-2011 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.
*/
/*
modification history
--------------------
02q,07feb11,rlp Enabled system mode agent for LP64.
02p,27oct10,zl defined _WRS_ARCH_DEFERS_KERNEL_UNLOCK (WIND00227404
and WIND00232955).
02o,16sep10,gls added VX_OBJ_ALIGN_SIZE
02n,13sep10,elp fixed STACK_ALIGN_SIZE.
02m,29jul10,pad Moved extern C statement after include statements.
02m,26may10,dbt Fixed idle mode if no power management is enabled.
02l,01feb10,elp 64 bits support: added _WRS_MMU_HAS_BLOCK_INFO_API.
02k,27aug08,jpb Renamed VSB header file
02j,24jun08,jpb Added include path for kernel configurations options set in
vsb. Renamed _WRS_VX_SMP to _WRS_CONFIG_SMP.
02i,13mar08,rlp Removed obsolete _WRS_ARCH_HAS_DBG_IPI macro.
02h,15aug07,mmi add _WRS_ARCH_HAS_CPU_PWR_MGMT
02g,14may07,elp added _WRS_MMU_HAS_MAP_STATE_API
02f,04may07,zl updated portable library build configuration.
02e,25apr07,kk move VX_MAX_SMP_CPUS to here
02d,05apr07,rlp Added _WRS_ARCH_HAS_DBG_IPI macro.
02c,07mar07,jmg Added include for vxPortableP.h
02b,14feb07,elp added SIMNT SMP support.
02a,13dec06,kk removed references to _WRS_BASE6_SCHEDULER and
_WRS_ARCH_HAS_RESCHEDULE_STACK, no longer needed
01z,08dec06,elp removed _WRS_HAS_RESCHEDULE_STACK.
01y,27jul06,elp Added WRS_ARCH_HAS_RESCHEDULE_STACK, _WRS_VX_NO_GLOBAL_ERRNO.
01x,12apr05,kk removed _WRS_OBJLIB_SUPPORT_VERIFY_TRAP macro (SPR# 106486)
01w,31mar05,elp added _ARCH_SUPPORTS_PROTECT_INTERRUPT_STACK macro
01v,27aug04,dbt Added _WRS_OBJLIB_SUPPORT_VERIFY_TRAP.
01u,18may04,tam removed _WRS_KERNEL_TEXT_START_ADRS definition
01t,18may04,jmp fixed _WRS_FRAMEP_FROM_JMP_BUF macro.
01s,15may04,zl fixed _WRS_FRAMEP_FROM_JMP_BUF()
01r,14may04,jmp removed obsolete stuff.
01q,23mar04,jmp added support for portable trcLib.
added macros for getting frame and return PC from a jmp_buf.
01p,09feb04,aeg moved _WRS_PAL_COPROC_LIB to archSimntCommon.h
01o,04dec03,dbt Added support for DIAB compiler.
01n,02dec03,dbt Updated power management support.
01m,25nov03,pes Move definition of _BYTE_ORDER to arch<Arch>Common.h.
01l,14nov03,job Moved blib stuff to archSimntCommon.h
01k,13nov03,pes Add include of common header
01j,23sep03,dbt Use new B6 scheduler.
01i,18aug03,dbt Added PAL support for VxSim.
01h,22jul03,kam removed define of WV_INSTRUMENTATION
01g,28may03,jmp removed X86_EXT structure.
01f,22apr03,dbt Added _WRS_ARCH_IS_SIMULATOR definition.
01e,27mar03,jmp added X86_EXT. no longer include ntcontext.h
01d,13mar01,sn SPR 73723 - define supported toolchains
01c,21sep01,jmp only include ntcontext.h if _ASMLANGUAGE not defined
(SPR# 34669).
01b,29jul98,ms added WV_INSTRUMENTATION
01a,03sep97,cym written
*/
#ifndef __INCarchSimnth
#define __INCarchSimnth
#include <vsbConfig.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Begin PAL */
#define _ALLOC_ALIGN_SIZE 8 /* 8-byte alignment */
#ifdef _WRS_CONFIG_LP64
/* 16-bytes alignment for sse and sse2 instructions */
#define _STACK_ALIGN_SIZE 16
#else
#define _STACK_ALIGN_SIZE 8 /* 8-byte alignment */
#endif /* _WRS_CONFIG_LP64 */
/*
* VX_OBJ_ALIGN_SIZE is the default allocation boundary for kernel objects.
* This is used for both statically and dynamically allocated objects.
*/
#define VX_OBJ_ALIGN_SIZE 8 /* 8-byte alignment */
#define _DYNAMIC_BUS_SIZING FALSE /* no dynamic bus sizing */
#ifdef _WRS_CONFIG_LP64
/* 64-bit Virt and Physical addresses */
#define _WRS_PHYS_ADDR_IS_64_BITS
#define _TYPE_PHYS_ADDR typedef unsigned long PHYS_ADDR
#define _TYPE_VX_PHYS_ADDR typedef unsigned long _Vx_PHYS_ADDR
#endif /* _WRS_CONFIG_LP64 */
#define _WRS_ARCH_IS_SIMULATOR /* This is a simulator */
#define _WRS_VX_NO_GLOBAL_ERRNO /* no longer save errno on ctx switch */
#define _WRS_ARCH_HAS_IDLE_TASK
#define _WRS_ARCH_HAS_NEW_KERNEL_LOCK
#define _WRS_ARCH_SUPPORTS_VX_CPU_STATE_INIT
/* defer kernel unlock to windLoadContext() */
#define _WRS_ARCH_DEFERS_KERNEL_UNLOCK
/* specify that arch supports cpu power management framework */
#define _WRS_ARCH_HAS_CPU_PWR_MGMT
#define _ARCH_SUPPORTS_GCC /* GCC compiler is supported on this arch. */
#define _ARCH_SUPPORTS_DCC /* DCC compiler is supported on this arch. */
/* Used in usrDepend.c and usrKernelStack.c */
#define _ARCH_SUPPORTS_PROTECT_INTERRUPT_STACK
/* moved here from h/private/javaLibP.h */
#define JAVA_C_SYM_PREFIX ""
#ifndef _ASMLANGUAGE
/* macros for getting frame and return PC from a jmp_buf */
#define _WRS_FRAMEP_FROM_JMP_BUF(env) ((char *) (env)[0].reg.reg_fp)
#define _WRS_RET_PC_FROM_JMP_BUF(env) ((INSTR *) (env)[0].reg.reg_pc)
#endif /* _ASMLANGUAGE */
/* from loadElfLib.c */
#define _WRS_USE_ELF_LOAD_FORMAT
/* from xdr_float.c */
#define FLOAT_NORM
/* from schedLib.c */
#define _WRS_VXLIB_SUPPORT
#ifdef _WRS_CONFIG_SMP
#define _WRS_ENABLE_IDLE_INTS intCpuUnlock (0)
#else
/*
* There is no need to unlock interrupts in UP VxSim in order to enter
* idle mode unless power management is not enabled.
*/
#define _WRS_ENABLE_IDLE_INTS \
if (_func_cpuPwrIdleEnter == NULL) intCpuUnlock (0)
#endif /* _WRS_CONFIG_SMP */
#undef VX_MAX_SMP_CPUS
#define VX_MAX_SMP_CPUS 32 /* maximum processors in SMP configuration */
/* from spyLib.c */
#define _WRS_SPY_TASK_SIZE 10000
/* arch support new MMU APIs */
#define _WRS_MMU_HAS_MAP_STATE_API
#define _WRS_MMU_HAS_SPL_TRANSLATE_API
#define _WRS_MMU_HAS_BLOCK_INFO_API
/* End PAL */
#ifdef __cplusplus
}
#endif
#if (CPU==SIMLINUX)
#include "arch/simlinux/archSimlinuxCommon.h"
#elif (CPU==SIMNT)
#include "arch/simnt/archSimntCommon.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
* Since on host side ULONG is always a 32 bits on Windows, we use VXSIM_ULONG
* instead. VXSIM_ULONG follows ILP32 and LP64 models
*/
#ifndef _ASMLANGUAGE
typedef unsigned long VXSIM_ULONG;
#endif /* _ASMLANGUAGE */
#ifdef __cplusplus
}
#endif
#endif /* __INCarchSimnth */