#ident "$Header: /proj/irix6.5.7m/isms/irix/lib/klib/include/RCS/hwregcmd.h,v 1.2 1999/05/18 07:11:56 zs Exp $" /* * Common definitions for hw register commands (hubreg, dirmem, ...) * Mostly taken from stand/arcs/tools/hwreg/main.c * some added for icrash. */ #include #include #include #include #include #include extern hwreg_set_t hwreg_hub; extern hwreg_set_t hwreg_router; extern hwreg_set_t hwreg_xbow; extern hwreg_set_t hwreg_c0; extern hwreg_set_t hwreg_dir; #define MB 0x100000ULL typedef __uint64_t i64; extern int opt_base; extern i64 opt_calias; extern char opt_addr[80]; extern int opt_nmode; extern int opt_hub; extern int opt_router; extern int opt_xbow; extern int opt_c0; extern int opt_dir; extern int opt_list; extern int opt_node; extern int opt_node_given; extern int opt_short; extern int opt_sn00; extern int opt_bit; extern int opt_premium; extern i64 opt_syn; extern int opt_syn_given; extern i64 winsize; /* 256 MB if N-mode, 512 MB if M-mode */ extern FILE *ofp; #define P0(x) fprintf(ofp, x) #define P1(x,par) fprintf(ofp, x, par) #define P2(x,par1,par2) fprintf(ofp, x, par1, par2) #define REGION(a) ((a) & 0xffffff0000000000) #define ADD_REGION(a, r) (a |= (r)) #define NODE(a) (int) (opt_nmode ? \ (a) >> 31 & 0x1ff : \ (a) >> 32 & 0xff) #define ADD_NODE(a, n) (opt_nmode ? \ (a |= (i64) (n) << 31) : \ (a |= (i64) (n) << 32)) #define REM_NODE(a) (opt_nmode ? \ (a &= ~((i64) 0xff << 31)) : \ (a &= ~((i64) 0xff << 32))) #define NODEOFF(a) (opt_nmode ? \ ((a) & (1ULL << 31) - 1) : \ ((a) & (1ULL << 32) - 1)) #define PHYSADDR(a) ((a) & (1ULL << 40) - 1) #define BANK(a) (int) ((a) >> 29 & (opt_nmode ? 7 : 3)) #define BANKOFF(a) ((a) & (1ULL << 29) - 1) #define BWIN(a) (int) (opt_nmode ? \ (a) >> 28 & 7 : \ (a) >> 29 & 7) #define ADD_BWIN(a, w) (opt_nmode ? \ (a |= (i64) (w) << 28) : \ (a |= (i64) (w) << 29)) #define SWIN(a) (int) ((a) >> 24 & 0xf) #define ADD_SWIN(a, w) (a |= (i64) (w) << 24) #define REMOTE_BIT(a) (int) ((a) >> 23 & 1) #define ADD_REMOTE_BIT(a) (a |= 1ULL << 23) #define HUBDIV_PI 0 #define HUBDIV_MD 1 #define HUBDIV_IO 2 #define HUBDIV_NI 3 #define HUBOFF(a) ((a) & 0x7fffff) #define HUBDIV(a) (HUBOFF(a) >> 21) #define HUBDIVOFF(a) ((a) & 0x1fffff) #define PDIR_STATUS(lo) ((lo & MD_PDIR_STATE_MASK) >> 13) #define SDIR_STATUS(lo) ((lo & MD_SDIR_STATE_MASK) >> 7) #define P_BIT_VEC(hi, lo) (((hi & MD_PDIR_VECLSB_MASK) >> 10 ) | \ (((lo & MD_PDIR_VECMSB_MASK) >> 22 ) << 38)) #define S_BIT_VEC(hi, lo) (((hi & MD_SDIR_VECLSB_MASK) >> 5 ) | \ ((lo & MD_SDIR_VECMSB_MASK))) #define P_ONECNT(lo) ((lo & MD_PDIR_ONECNT_MASK) >> 16)