Privileged routines manipulate privileged hardware registers.
1 – MFPR
The MFPR function returns an unsigned value that is the value of
a VAX internal processor register.
Syntax:
MFPR( ipr_register_expression )
The 'ipr_register_expression' parameter is an expression
compatible with the UNSIGNED type.
The HP Pascal compiler generates user-mode code. HP Pascal does
not explicitly support the running of VSI Pascal generated code
in kernel mode. However, if the following rules are observed,
then the generated code has a good chance of working as expected
in elevated access modes:
o All code must be compiled with the /NOCHECK qualifier or
[CHECK(NONE)] attribute. The HP Pascal on OpenVMS VAX
run-time signaling method relies on trying to execute the
HALT instruction. In user-mode, this causes an exception
that is a signal to the HP Pascal run-time library. In
kernel-mode on an OpenVMS VAX system, this simply HALTs the
machine.
o Avoid all routine calls which translate into Run-Time
Library calls. These include all I/O routines, several
arithmetic routines, several string routines, etc.
2 – MTPR
The MTPR procedure assigns a value into a VAX internal processor
register.
Syntax:
MTPR( ipr_register_expression, source_expression );
The 'ipr_register_expression' and 'source_expression' parameters
are expressions compatible with the unsigned type. HP Pascal
stores the value specified by 'source-expression' into the
internal processor register specified by
'ipr-register-expression'.
The HP Pascal compiler generates user-mode code. HP Pascal does
not explicitly support the running of HP Pascal generated code
in kernel mode. However, if the following rules are observed,
then the generated code has a good chance of working as expected
in elevated access modes:
o All code must be compiled with the /NOCHECK qualifier or
[CHECK(NONE)] attribute. The HP Pascal for OpenVMS VAX
systems run-time signaling method relies on trying to
execute the HALT instruction. In user-mode, this causes an
exception which is a signal to the HP Pascal run-time
library. In kernel-mode on an OpenVMS VAX system, this
simply HALTs the machine.
o Avoid all routine calls which translate into Run-Time
Library calls. These include all I/O routines, several
arithmetic routines, several string routines, etc.