/* * * LIB - virtual address definitions [not in Starlet] */ #ifndef _VADEF_H #define _VADEF_H /* virtual address fields */ #define VA$V_BYTE 0 #define VA$M_BYTE 0x000001FF #define VA$S_BYTE 9 #define VA$V_PVPN 9 #define VA$M_PVPN 0x3FFFFE00 #define VA$S_PVPN 21 #define VA$V_P1 30 #define VA$M_P1 0x40000000 #define VA$S_P1 1 #define VA$V_SVPN 9 #define VA$M_SVPN 0x7FFFFE00 #define VA$S_SVPN 22 #define VA$V_SYSTEM 31 #define VA$M_SYSTEM 0x80000000 #define VA$S_SYSTEM 1 #define VA$V_VPG 9 #define VA$M_VPG 0xFFFFFE00 #define VA$S_VPG 23 #define VA$V_VPN 9 #define VA$M_VPN 0x3FFFFE00 #define VA$S_VPN 21 #define VA$S_VADEF 4 /* note: this structure is more elaborate than the one in $VADEF */ union vadef { void *va$a_pointer; unsigned long va$a_address; struct { unsigned va$v_byte : 9; /* byte vield */ unsigned va$v_pvpn : 21; /* process virtual page number */ unsigned va$v_p1 : 1; /* P1 space */ unsigned : 1; } va$r_process_address; struct { unsigned va$v_byte : 9; /* byte offset */ unsigned va$v_svpn : 22; /* system virtual page number */ unsigned va$v_system : 1; /* system space */ } va$r_system_address; struct { unsigned va$v_byte : 9; /* byte offset */ unsigned va$v_vpg : 23; /* virtual page, including P1 & S */ } va$r_general_address; /* Use of VA$x_VPN in EXTV/EXTZV/INSV instructions should be replaced */ /* with either VA$x_SVPN or VA$x_PVPN, depending on whether the virtual */ /* address is a System or Process virtual address, respectively. */ struct { unsigned va$v_byte : 9; /* byte offset */ unsigned va$v_vpn : 21; /* virtual page number; use PVPN or SVPN! */ unsigned : 2; } va$r_unspecified_address; }; #endif /*_VADEF_H*/