/*[ c_page.h Paging Support. --------------- LOCAL CHAR SccsID[]="@(#)c_page.h 1.7 02/28/95"; ]*/ /* Page Access Types. */ #define PG_R 0x0 /* Read */ #define PG_W 0x1 /* Write */ /* Supervisor Memory Access Check Functions. Will Check Access as per Supervisor (taking #PF if reqd.), 'A/D' bits will be set in the Page Entries, no other action occurs. Normally these routines will be followed by vir_.. calls. */ IMPORT IU32 spr_chk_byte IPT2( IU32, lin_addr, ISM32, access_type ); IMPORT VOID spr_chk_dword IPT2( IU32, lin_addr, ISM32, access_type ); IMPORT VOID spr_chk_word IPT2( IU32, lin_addr, ISM32, access_type ); /* User Memory Access Check Functions. Will Check Access as per User (taking #PF if reqd.), 'A/D' bits will be set in the Page Entries, no other action occurs. Normally these routines will be followed by vir_.. calls. */ IMPORT IU32 usr_chk_byte IPT2( IU32, lin_addr, ISM32, access_type ); IMPORT IU32 usr_chk_dword IPT2( IU32, lin_addr, ISM32, access_type ); IMPORT IU32 usr_chk_word IPT2( IU32, lin_addr, ISM32, access_type ); /* Supervisor Memory Access Functions. Will Check Access as per Supervisor (taking #PF if reqd.), 'A/D' bits will be set in the Page Entries, Map Address and Perform Read or Write. */ IMPORT IU8 spr_read_byte IPT1( IU32, lin_addr ); IMPORT IU32 spr_read_dword IPT1( IU32, lin_addr ); IMPORT IU16 spr_read_word IPT1( IU32, lin_addr ); IMPORT VOID spr_write_byte IPT2( IU32, lin_addr, IU8, data ); IMPORT VOID spr_write_dword IPT2( IU32, lin_addr, IU32, data ); IMPORT VOID spr_write_word IPT2( IU32, lin_addr, IU16, data ); /* Virtual Memory Access Functions. No Checks are made (assumed already done), just Perform Read or Write. This is also the point at which data breakpoints are checked. */ #define NO_PHYSICAL_MAPPING 0 /* Indicates no physical address is available, the linear address will be re-mapped. */ IMPORT IU8 vir_read_byte IPT2( IU32, lin_addr, IU32, phy_addr ); IMPORT IU32 vir_read_dword IPT2( IU32, lin_addr, IU32, phy_addr ); IMPORT IU16 vir_read_word IPT2( IU32, lin_addr, IU32, phy_addr ); IMPORT VOID vir_write_byte IPT3( IU32, lin_addr, IU32, phy_addr, IU8, data ); IMPORT VOID vir_write_dword IPT3( IU32, lin_addr, IU32, phy_addr, IU32, data ); IMPORT VOID vir_write_word IPT3( IU32, lin_addr, IU32, phy_addr, IU16, data ); #ifdef PIG IMPORT VOID cannot_vir_write_byte IPT3( IU32, lin_addr, IU32, phy_addr, IU8, valid_mask ); IMPORT VOID cannot_vir_write_dword IPT3( IU32, lin_addr, IU32, phy_addr, IU32, valid_mask ); IMPORT VOID cannot_vir_write_word IPT3( IU32, lin_addr, IU32, phy_addr, IU16, valid_mask ); #endif /* PIG */ extern void vir_write_bytes IPT4(LIN_ADDR, lin_addr,PHY_ADDR, phy_addr, IU8 *, data, IU32, num_bytes); extern void vir_read_bytes IPT4(IU8 *, destbuff, LIN_ADDR, lin_addr, PHY_ADDR, phy_addr, IU32, num_bytes);