mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
3.2 KiB
226 lines
3.2 KiB
/*[
|
|
|
|
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);
|