2002-01-28 10:52:38 +00:00
|
|
|
/* FEATURES.H (c) Copyright Jan Jaeger, 2000-2002 */
|
2001-02-23 20:49:19 +00:00
|
|
|
/* Architecture-dependent macro definitions */
|
|
|
|
|
|
2001-10-08 22:44:10 +00:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
|
#include <config.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
2001-02-23 20:49:19 +00:00
|
|
|
/*-------------------------------------------------------------------*/
|
|
|
|
|
/* S/370, ESA/390 and ESAME features implemented */
|
|
|
|
|
/*-------------------------------------------------------------------*/
|
|
|
|
|
#if !defined(FEATCHK_CHECK_DONE)
|
|
|
|
|
#include "featall.h"
|
|
|
|
|
#include "feat370.h"
|
|
|
|
|
#include "feat390.h"
|
|
|
|
|
#include "feat900.h"
|
|
|
|
|
#define FEATCHK_CHECK_ALL
|
|
|
|
|
#include "featchk.h"
|
|
|
|
|
#undef FEATCHK_CHECK_ALL
|
|
|
|
|
#define FEATCHK_CHECK_DONE
|
|
|
|
|
#endif /*!defined(FEATCHK_CHECK_DONE)*/
|
|
|
|
|
|
2001-12-28 09:00:31 +00:00
|
|
|
#undef __GEN_ARCH
|
|
|
|
|
#if defined(_GEN_ARCH)
|
|
|
|
|
#define __GEN_ARCH _GEN_ARCH
|
|
|
|
|
#else
|
|
|
|
|
#define __GEN_ARCH _ARCHMODE1
|
|
|
|
|
#endif
|
|
|
|
|
|
2001-02-23 20:49:19 +00:00
|
|
|
#include "featall.h"
|
2001-12-28 09:00:31 +00:00
|
|
|
#if __GEN_ARCH == 370
|
2001-02-23 20:49:19 +00:00
|
|
|
#include "feat370.h"
|
2001-12-28 09:00:31 +00:00
|
|
|
#elif __GEN_ARCH == 390
|
2001-02-23 20:49:19 +00:00
|
|
|
#include "feat390.h"
|
2001-12-28 09:00:31 +00:00
|
|
|
#elif __GEN_ARCH == 900
|
2001-02-23 20:49:19 +00:00
|
|
|
#include "feat900.h"
|
2001-12-28 09:00:31 +00:00
|
|
|
#else
|
|
|
|
|
#error Unable to determine Architecture Mode
|
2001-02-23 20:49:19 +00:00
|
|
|
#endif
|
2001-12-28 09:00:31 +00:00
|
|
|
|
|
|
|
|
|
2001-02-23 20:49:19 +00:00
|
|
|
#include "featchk.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#undef ARCH_MODE
|
|
|
|
|
#undef APPLY_PREFIXING
|
|
|
|
|
#undef AMASK
|
|
|
|
|
#undef ADDRESS_MAXWRAP
|
|
|
|
|
#undef REAL_MODE
|
2001-12-16 22:15:40 +00:00
|
|
|
#undef PER_MODE
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef ASF_ENABLED
|
|
|
|
|
#undef ASTE_AS_DESIGNATOR
|
|
|
|
|
#undef ASTE_LT_DESIGNATOR
|
|
|
|
|
#undef SAEVENT_BIT
|
|
|
|
|
#undef SSEVENT_BIT
|
|
|
|
|
#undef SSGROUP_BIT
|
2001-03-18 22:59:51 +00:00
|
|
|
#undef LSED_UET_HDR
|
|
|
|
|
#undef LSED_UET_TLR
|
|
|
|
|
#undef LSED_UET_BAKR
|
|
|
|
|
#undef LSED_UET_PC
|
2001-05-21 19:25:48 +00:00
|
|
|
#undef CR12_BRTRACE
|
|
|
|
|
#undef CR12_TRACEEA
|
2001-04-08 19:04:48 +00:00
|
|
|
#undef CHM_GPR2_RESV
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef DEF_INST
|
|
|
|
|
#undef ARCH_DEP
|
|
|
|
|
#undef PSA
|
2001-04-04 20:17:09 +00:00
|
|
|
#undef PSA_SIZE
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef IA
|
|
|
|
|
#undef PX
|
|
|
|
|
#undef CR
|
|
|
|
|
#undef GR
|
2001-03-06 18:04:21 +00:00
|
|
|
#undef GR_A
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef MONCODE
|
|
|
|
|
#undef TEA
|
|
|
|
|
#undef DXC
|
|
|
|
|
#undef ET
|
2001-03-06 18:04:21 +00:00
|
|
|
#undef PX_MASK
|
|
|
|
|
#undef RSTOLD
|
|
|
|
|
#undef RSTNEW
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef RADR
|
2001-03-06 18:04:21 +00:00
|
|
|
#undef F_RADR
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef VADR
|
2001-03-06 18:04:21 +00:00
|
|
|
#undef F_VADR
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef GREG
|
2001-03-06 18:04:21 +00:00
|
|
|
#undef F_GREG
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef CREG
|
2001-03-06 18:04:21 +00:00
|
|
|
#undef F_CREG
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef AREG
|
2001-03-06 18:04:21 +00:00
|
|
|
#undef F_AREG
|
2001-02-23 20:49:19 +00:00
|
|
|
#undef STORE_W
|
|
|
|
|
#undef FETCH_W
|
|
|
|
|
#undef VI
|
|
|
|
|
#undef AI
|
|
|
|
|
#if defined(OPTION_AEA_BUFFER)
|
|
|
|
|
#undef AE
|
|
|
|
|
#undef VE
|
|
|
|
|
#endif /*defined(OPTION_AEA_BUFFER)*/
|
2001-03-06 18:04:21 +00:00
|
|
|
#undef SIEBK
|
2001-06-16 12:32:17 +00:00
|
|
|
#undef TLB_STD
|
|
|
|
|
#undef TLB_VADDR
|
|
|
|
|
#undef TLB_PTE
|
2001-02-23 20:49:19 +00:00
|
|
|
|
2001-07-09 12:16:37 +00:00
|
|
|
#if !defined(NO_ATTR_REGPARM) && !defined(PROFILE_CPU)
|
2001-03-15 04:23:24 +00:00
|
|
|
#define ATTR_REGPARM(n) __attribute__ ((regparm(n)))
|
|
|
|
|
#else
|
|
|
|
|
#define ATTR_REGPARM(n) /* nothing */
|
|
|
|
|
#endif
|
|
|
|
|
|
2001-12-28 09:00:31 +00:00
|
|
|
#if __GEN_ARCH == 370
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#define ARCH_MODE ARCH_370
|
|
|
|
|
|
|
|
|
|
#define DEF_INST(_name) \
|
2001-03-15 04:23:24 +00:00
|
|
|
ATTR_REGPARM(3) void s370_ ## _name (BYTE inst[], int execflag, REGS *regs)
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#define ARCH_DEP(_name) \
|
|
|
|
|
s370_ ## _name
|
|
|
|
|
|
|
|
|
|
#define APPLY_PREFIXING(addr,pfx) \
|
2002-07-14 09:21:25 +00:00
|
|
|
(((U32)((addr)&0x7FFFF000)==(U32)0)?((addr)&0xFFF)|pfx:\
|
|
|
|
|
((U32)((addr)&0x7FFFF000)==(U32)pfx)?(addr)&0xFFF:(addr))
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#define AMASK AMASK_L
|
|
|
|
|
|
|
|
|
|
#define ADDRESS_MAXWRAP(_register_context) \
|
|
|
|
|
(AMASK24)
|
|
|
|
|
|
|
|
|
|
#define REAL_MODE(p) \
|
|
|
|
|
((p)->ecmode==0 || ((p)->sysmask & PSW_DATMODE)==0)
|
|
|
|
|
|
2001-12-28 09:00:31 +00:00
|
|
|
#if defined(_FEATURE_SIE)
|
2001-12-16 22:15:40 +00:00
|
|
|
#define PER_MODE(_regs) \
|
|
|
|
|
( ((_regs)->psw.ecmode && ((_regs)->psw.sysmask & PSW_PERMODE)) \
|
|
|
|
|
| ((_regs)->sie_state && ((_regs)->siebk->m & SIE_M_GPE)) )
|
2001-12-28 09:00:31 +00:00
|
|
|
#else
|
|
|
|
|
#define PER_MODE(_regs) \
|
|
|
|
|
((_regs)->psw.ecmode && ((_regs)->psw.sysmask & PSW_PERMODE))
|
|
|
|
|
#endif
|
2001-12-16 22:15:40 +00:00
|
|
|
|
2001-02-23 20:49:19 +00:00
|
|
|
#define ASF_ENABLED(_regs) 0 /* ASF is never enabled for S/370 */
|
|
|
|
|
|
|
|
|
|
#define ASTE_AS_DESIGNATOR(_aste) \
|
|
|
|
|
((_aste)[2])
|
|
|
|
|
|
|
|
|
|
#define ASTE_LT_DESIGNATOR(_aste) \
|
|
|
|
|
((_aste)[3])
|
|
|
|
|
|
|
|
|
|
#define SAEVENT_BIT STD_SAEVENT
|
|
|
|
|
#define SSEVENT_BIT STD_SSEVENT
|
|
|
|
|
#define SSGROUP_BIT STD_GROUP
|
|
|
|
|
|
|
|
|
|
#define PSA PSA_3XX
|
2001-04-04 20:17:09 +00:00
|
|
|
#define PSA_SIZE 4096
|
2001-02-23 20:49:19 +00:00
|
|
|
#define IA IA_L
|
|
|
|
|
#define PX PX_L
|
|
|
|
|
#define CR(_r) CR_L(_r)
|
|
|
|
|
#define GR(_r) GR_L(_r)
|
|
|
|
|
#define GR_A(_r, _regs) ((_regs)->GR_L((_r)))
|
|
|
|
|
#define MONCODE MC_L
|
|
|
|
|
#define TEA EA_L
|
|
|
|
|
#define DXC tea
|
|
|
|
|
#define ET ET_L
|
2001-03-06 18:04:21 +00:00
|
|
|
#define PX_MASK 0x7FFFF000
|
|
|
|
|
#define RSTOLD iplccw1
|
|
|
|
|
#define RSTNEW iplpsw
|
2001-02-23 20:49:19 +00:00
|
|
|
#if !defined(_FEATURE_ZSIE)
|
|
|
|
|
#define RADR U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_RADR "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#else
|
|
|
|
|
#define RADR U64
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_RADR "%16.16llX"
|
2001-02-23 20:49:19 +00:00
|
|
|
#endif
|
|
|
|
|
#define VADR U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_VADR "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define GREG U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_GREG "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define CREG U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_CREG "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define AREG U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_AREG "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define STORE_W STORE_FW
|
|
|
|
|
#define FETCH_W FETCH_FW
|
|
|
|
|
#define VI VI_L
|
|
|
|
|
#define AI AI_L
|
|
|
|
|
#if defined(OPTION_AEA_BUFFER)
|
|
|
|
|
#define AE(_r) AE_L(_r)
|
|
|
|
|
#define VE(_r) VE_L(_r)
|
|
|
|
|
#endif /*defined(OPTION_AEA_BUFFER)*/
|
|
|
|
|
#define SIEBK SIE1BK
|
2001-06-16 12:32:17 +00:00
|
|
|
#define TLB_STD TLB_STD_L
|
|
|
|
|
#define TLB_VADDR TLB_VADDR_L
|
|
|
|
|
#define TLB_PTE TLB_PTE_L
|
2001-02-23 20:49:19 +00:00
|
|
|
|
2001-12-28 09:00:31 +00:00
|
|
|
#elif __GEN_ARCH == 390
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#define ARCH_MODE ARCH_390
|
|
|
|
|
|
|
|
|
|
#define DEF_INST(_name) \
|
2001-03-15 04:23:24 +00:00
|
|
|
ATTR_REGPARM(3) void s390_ ## _name (BYTE inst[], int execflag, REGS *regs)
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#define ARCH_DEP(_name) \
|
|
|
|
|
s390_ ## _name
|
|
|
|
|
|
|
|
|
|
#define APPLY_PREFIXING(addr,pfx) \
|
|
|
|
|
((((addr)&0x7FFFF000)==0)?((addr)&0xFFF)|pfx:\
|
|
|
|
|
(((addr)&0x7FFFF000)==pfx)?(addr)&0xFFF:(addr))
|
|
|
|
|
|
|
|
|
|
#define AMASK AMASK_L
|
|
|
|
|
|
|
|
|
|
#define ADDRESS_MAXWRAP(_register_context) \
|
|
|
|
|
((_register_context)->psw.AMASK)
|
|
|
|
|
|
|
|
|
|
#define REAL_MODE(p) \
|
|
|
|
|
(((p)->sysmask & PSW_DATMODE)==0)
|
|
|
|
|
|
2001-12-28 09:00:31 +00:00
|
|
|
#if defined(_FEATURE_SIE)
|
2001-12-16 22:15:40 +00:00
|
|
|
#define PER_MODE(_regs) \
|
|
|
|
|
( ((_regs)->psw.sysmask & PSW_PERMODE) \
|
|
|
|
|
| ((_regs)->sie_state && ((_regs)->siebk->m & SIE_M_GPE)) )
|
2001-12-28 09:00:31 +00:00
|
|
|
#else
|
|
|
|
|
#define PER_MODE(_regs) \
|
|
|
|
|
((_regs)->psw.sysmask & PSW_PERMODE)
|
|
|
|
|
#endif
|
2001-12-16 22:15:40 +00:00
|
|
|
|
2001-02-23 20:49:19 +00:00
|
|
|
#define ASF_ENABLED(_regs) ((_regs)->CR(0) & CR0_ASF)
|
|
|
|
|
|
|
|
|
|
#define ASTE_AS_DESIGNATOR(_aste) \
|
|
|
|
|
((_aste)[2])
|
|
|
|
|
|
|
|
|
|
#define ASTE_LT_DESIGNATOR(_aste) \
|
|
|
|
|
((_aste)[3])
|
|
|
|
|
|
|
|
|
|
#define SAEVENT_BIT STD_SAEVENT
|
|
|
|
|
#define SSEVENT_BIT STD_SSEVENT
|
|
|
|
|
#define SSGROUP_BIT STD_GROUP
|
|
|
|
|
|
2001-03-18 22:59:51 +00:00
|
|
|
#define LSED_UET_HDR S_LSED_UET_HDR
|
|
|
|
|
#define LSED_UET_TLR S_LSED_UET_TLR
|
|
|
|
|
#define LSED_UET_BAKR S_LSED_UET_BAKR
|
|
|
|
|
#define LSED_UET_PC S_LSED_UET_PC
|
2001-05-21 19:25:48 +00:00
|
|
|
#define CR12_BRTRACE S_CR12_BRTRACE
|
|
|
|
|
#define CR12_TRACEEA S_CR12_TRACEEA
|
2001-03-18 22:59:51 +00:00
|
|
|
|
2001-04-08 19:04:48 +00:00
|
|
|
#define CHM_GPR2_RESV S_CHM_GPR2_RESV
|
|
|
|
|
|
2001-02-23 20:49:19 +00:00
|
|
|
#define PSA PSA_3XX
|
2001-04-04 20:17:09 +00:00
|
|
|
#define PSA_SIZE 4096
|
2001-02-23 20:49:19 +00:00
|
|
|
#define IA IA_L
|
|
|
|
|
#define PX PX_L
|
|
|
|
|
#define CR(_r) CR_L(_r)
|
|
|
|
|
#define GR(_r) GR_L(_r)
|
|
|
|
|
#define GR_A(_r, _regs) ((_regs)->GR_L((_r)))
|
|
|
|
|
#define MONCODE MC_L
|
|
|
|
|
#define TEA EA_L
|
|
|
|
|
#define DXC tea
|
|
|
|
|
#define ET ET_L
|
2001-03-06 18:04:21 +00:00
|
|
|
#define PX_MASK 0x7FFFF000
|
|
|
|
|
#define RSTNEW iplpsw
|
|
|
|
|
#define RSTOLD iplccw1
|
2001-02-23 20:49:19 +00:00
|
|
|
#if !defined(_FEATURE_ZSIE)
|
|
|
|
|
#define RADR U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_RADR "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#else
|
|
|
|
|
#define RADR U64
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_RADR "%16.16llX"
|
2001-02-23 20:49:19 +00:00
|
|
|
#endif
|
|
|
|
|
#define VADR U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_VADR "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define GREG U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_GREG "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define CREG U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_CREG "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define AREG U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_AREG "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define STORE_W STORE_FW
|
|
|
|
|
#define FETCH_W FETCH_FW
|
|
|
|
|
#define VI VI_L
|
|
|
|
|
#define AI AI_L
|
|
|
|
|
#if defined(OPTION_AEA_BUFFER)
|
|
|
|
|
#define AE(_r) AE_L(_r)
|
|
|
|
|
#define VE(_r) VE_L(_r)
|
|
|
|
|
#endif /*defined(OPTION_AEA_BUFFER)*/
|
|
|
|
|
#define SIEBK SIE1BK
|
2001-06-16 12:32:17 +00:00
|
|
|
#define TLB_STD TLB_STD_L
|
|
|
|
|
#define TLB_VADDR TLB_VADDR_L
|
|
|
|
|
#define TLB_PTE TLB_PTE_L
|
2001-02-23 20:49:19 +00:00
|
|
|
|
2001-12-28 09:00:31 +00:00
|
|
|
#elif __GEN_ARCH == 900
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#define ARCH_MODE ARCH_900
|
|
|
|
|
|
|
|
|
|
#define APPLY_PREFIXING(addr,pfx) \
|
|
|
|
|
((((addr)&0xFFFFFFFFFFFFE000ULL)==0)?((addr)&0x1FFF)|pfx:\
|
|
|
|
|
(((addr)&0xFFFFFFFFFFFFE000ULL)==pfx)?(addr)&0x1FFF:(addr))
|
|
|
|
|
|
|
|
|
|
#define AMASK AMASK_G
|
|
|
|
|
|
|
|
|
|
#define ADDRESS_MAXWRAP(_register_context) \
|
|
|
|
|
((_register_context)->psw.AMASK)
|
|
|
|
|
|
|
|
|
|
#define REAL_MODE(p) \
|
|
|
|
|
(((p)->sysmask & PSW_DATMODE)==0)
|
|
|
|
|
|
2001-12-28 09:00:31 +00:00
|
|
|
#if defined(_FEATURE_SIE)
|
2001-12-16 22:15:40 +00:00
|
|
|
#define PER_MODE(_regs) \
|
|
|
|
|
( ((_regs)->psw.sysmask & PSW_PERMODE) \
|
|
|
|
|
| ((_regs)->sie_state && ((_regs)->siebk->m & SIE_M_GPE)) )
|
2001-12-28 09:00:31 +00:00
|
|
|
#else
|
|
|
|
|
#define PER_MODE(_regs) \
|
|
|
|
|
((_regs)->psw.sysmask & PSW_PERMODE)
|
|
|
|
|
#endif
|
2001-12-16 22:15:40 +00:00
|
|
|
|
2001-02-23 20:49:19 +00:00
|
|
|
#define ASF_ENABLED(_regs) 1 /* ASF is always enabled for ESAME */
|
|
|
|
|
|
|
|
|
|
#define ASTE_AS_DESIGNATOR(_aste) \
|
|
|
|
|
(((U64)((_aste)[2])<<32)|(U64)((_aste)[3]))
|
|
|
|
|
|
|
|
|
|
#define ASTE_LT_DESIGNATOR(_aste) \
|
|
|
|
|
((_aste)[6])
|
|
|
|
|
|
|
|
|
|
#define SAEVENT_BIT ASCE_S
|
|
|
|
|
#define SSEVENT_BIT ASCE_X
|
|
|
|
|
#define SSGROUP_BIT ASCE_G
|
|
|
|
|
|
2001-03-18 22:59:51 +00:00
|
|
|
#define LSED_UET_HDR Z_LSED_UET_HDR
|
|
|
|
|
#define LSED_UET_TLR Z_LSED_UET_TLR
|
|
|
|
|
#define LSED_UET_BAKR Z_LSED_UET_BAKR
|
|
|
|
|
#define LSED_UET_PC Z_LSED_UET_PC
|
2001-05-21 19:25:48 +00:00
|
|
|
#define CR12_BRTRACE Z_CR12_BRTRACE
|
|
|
|
|
#define CR12_TRACEEA Z_CR12_TRACEEA
|
2001-03-18 22:59:51 +00:00
|
|
|
|
2001-04-08 19:04:48 +00:00
|
|
|
#define CHM_GPR2_RESV Z_CHM_GPR2_RESV
|
|
|
|
|
|
2001-02-23 20:49:19 +00:00
|
|
|
#define DEF_INST(_name) \
|
2001-03-15 04:23:24 +00:00
|
|
|
ATTR_REGPARM(3) void z900_ ## _name (BYTE inst[], int execflag, REGS *regs)
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#define ARCH_DEP(_name) \
|
|
|
|
|
z900_ ## _name
|
|
|
|
|
|
|
|
|
|
#define PSA PSA_900
|
2001-04-04 20:17:09 +00:00
|
|
|
#define PSA_SIZE 8192
|
2001-02-23 20:49:19 +00:00
|
|
|
#define IA IA_G
|
2001-05-31 16:01:20 +00:00
|
|
|
#define PX PX_L
|
2001-02-23 20:49:19 +00:00
|
|
|
#define CR(_r) CR_G(_r)
|
|
|
|
|
#define GR(_r) GR_G(_r)
|
|
|
|
|
#define GR_A(_r, _regs) ((_regs)->psw.amode64 ? (_regs)->GR_G((_r)) : (_regs)->GR_L((_r)))
|
|
|
|
|
#define MONCODE MC_G
|
|
|
|
|
#define TEA EA_G
|
|
|
|
|
#define DXC dataexc
|
|
|
|
|
#define ET ET_G
|
2001-03-06 18:04:21 +00:00
|
|
|
#define PX_MASK 0x7FFFE000
|
|
|
|
|
#define RSTOLD rstold
|
|
|
|
|
#define RSTNEW rstnew
|
2001-02-23 20:49:19 +00:00
|
|
|
#define RADR U64
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_RADR "%16.16llX"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define VADR U64
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_VADR "%16.16llX"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define GREG U64
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_GREG "%16.16llX"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define CREG U64
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_CREG "%16.16llX"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define AREG U32
|
2001-03-06 18:04:21 +00:00
|
|
|
#define F_AREG "%8.8X"
|
2001-02-23 20:49:19 +00:00
|
|
|
#define STORE_W STORE_DW
|
|
|
|
|
#define FETCH_W FETCH_DW
|
|
|
|
|
#define VI VI_G
|
|
|
|
|
#define AI AI_G
|
|
|
|
|
#if defined(OPTION_AEA_BUFFER)
|
|
|
|
|
#define AE(_r) AE_G(_r)
|
|
|
|
|
#define VE(_r) VE_G(_r)
|
|
|
|
|
#endif /*defined(OPTION_AEA_BUFFER)*/
|
|
|
|
|
#define SIEBK SIE2BK
|
2001-06-16 12:32:17 +00:00
|
|
|
#define TLB_STD TLB_STD_G
|
|
|
|
|
#define TLB_VADDR TLB_VADDR_G
|
|
|
|
|
#define TLB_PTE TLB_PTE_G
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
2001-12-28 09:00:31 +00:00
|
|
|
#warning __GEN_ARCH must be 370, 390, 900 or undefined
|
2001-02-23 20:49:19 +00:00
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#undef PAGEFRAME_PAGESIZE
|
|
|
|
|
#undef PAGEFRAME_PAGESHIFT
|
|
|
|
|
#undef PAGEFRAME_BYTEMASK
|
|
|
|
|
#undef PAGEFRAME_PAGEMASK
|
2001-12-11 13:12:56 +00:00
|
|
|
#undef MAXADDRESS
|
2001-02-23 20:49:19 +00:00
|
|
|
#if defined(FEATURE_ESAME)
|
|
|
|
|
#define PAGEFRAME_PAGESIZE 4096
|
|
|
|
|
#define PAGEFRAME_PAGESHIFT 12
|
|
|
|
|
#define PAGEFRAME_BYTEMASK 0x00000FFF
|
|
|
|
|
#define PAGEFRAME_PAGEMASK 0xFFFFFFFFFFFFF000ULL
|
2001-12-11 13:12:56 +00:00
|
|
|
#define MAXADDRESS 0xFFFFFFFFFFFFFFFFULL
|
2001-02-23 20:49:19 +00:00
|
|
|
#elif defined(FEATURE_S390_DAT)
|
|
|
|
|
#define PAGEFRAME_PAGESIZE 4096
|
|
|
|
|
#define PAGEFRAME_PAGESHIFT 12
|
|
|
|
|
#define PAGEFRAME_BYTEMASK 0x00000FFF
|
|
|
|
|
#define PAGEFRAME_PAGEMASK 0x7FFFF000
|
2001-12-11 13:12:56 +00:00
|
|
|
#define MAXADDRESS 0x7FFFFFFF
|
2001-02-23 20:49:19 +00:00
|
|
|
#else /* S/370 */
|
|
|
|
|
#define PAGEFRAME_PAGESIZE 2048
|
|
|
|
|
#define PAGEFRAME_PAGESHIFT 11
|
|
|
|
|
#define PAGEFRAME_BYTEMASK 0x000007FF
|
|
|
|
|
#define PAGEFRAME_PAGEMASK 0x7FFFF800
|
2001-12-11 13:12:56 +00:00
|
|
|
#define MAXADDRESS 0x00FFFFFF
|
2001-02-23 20:49:19 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if !defined(_FEATURE_2K_STORAGE_KEYS)
|
|
|
|
|
#define STORAGE_KEY_UNITSIZE 4096
|
|
|
|
|
#else
|
|
|
|
|
#define STORAGE_KEY_UNITSIZE 2048
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#undef STORAGE_KEY
|
|
|
|
|
#undef STORAGE_KEY_PAGESHIFT
|
|
|
|
|
#undef STORAGE_KEY_PAGESIZE
|
|
|
|
|
#undef STORAGE_KEY_PAGEMASK
|
|
|
|
|
#undef STORAGE_KEY_BYTEMASK
|
|
|
|
|
#ifdef FEATURE_4K_STORAGE_KEYS
|
|
|
|
|
#if defined(_FEATURE_2K_STORAGE_KEYS)
|
|
|
|
|
#define STORAGE_KEY_PAGESHIFT 11
|
|
|
|
|
#else
|
|
|
|
|
#define STORAGE_KEY_PAGESHIFT 12
|
|
|
|
|
#endif
|
|
|
|
|
#define STORAGE_KEY_PAGESIZE 4096
|
|
|
|
|
#if defined(FEATURE_ESAME)
|
|
|
|
|
#define STORAGE_KEY_PAGEMASK 0xFFFFFFFFFFFFF000ULL
|
|
|
|
|
#else
|
|
|
|
|
#define STORAGE_KEY_PAGEMASK 0x7FFFF000
|
|
|
|
|
#endif
|
|
|
|
|
#define STORAGE_KEY_BYTEMASK 0x00000FFF
|
|
|
|
|
#else
|
|
|
|
|
#define STORAGE_KEY_PAGESHIFT 11
|
|
|
|
|
#define STORAGE_KEY_PAGESIZE 2048
|
|
|
|
|
#define STORAGE_KEY_PAGEMASK 0x7FFFF800
|
|
|
|
|
#define STORAGE_KEY_BYTEMASK 0x000007FF
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define STORAGE_KEY(_addr) \
|
|
|
|
|
sysblk.storkeys[(_addr)>>STORAGE_KEY_PAGESHIFT]
|
|
|
|
|
|
|
|
|
|
#if defined(_FEATURE_2K_STORAGE_KEYS)
|
|
|
|
|
#define STORAGE_KEY1(_addr) \
|
|
|
|
|
sysblk.storkeys[((_addr)>>STORAGE_KEY_PAGESHIFT)&~1]
|
|
|
|
|
#define STORAGE_KEY2(_addr) \
|
|
|
|
|
sysblk.storkeys[((_addr)>>STORAGE_KEY_PAGESHIFT)|1]
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define XSTORE_INCREMENT_SIZE 0x00100000
|
|
|
|
|
#define XSTORE_PAGESHIFT 12
|
|
|
|
|
#define XSTORE_PAGESIZE 4096
|
|
|
|
|
#undef XSTORE_PAGEMASK
|
|
|
|
|
#if defined(FEATURE_ESAME) || defined(_FEATURE_ZSIE)
|
|
|
|
|
#define XSTORE_PAGEMASK 0xFFFFFFFFFFFFF000ULL
|
|
|
|
|
#else
|
|
|
|
|
#define XSTORE_PAGEMASK 0x7FFFF000
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* end of FEATURES.H */
|