[Info-vax] Virtual memory 101 (was Re: Android development...)

JF Mezei jfmezei.spamnot at vaxination.ca
Tue Sep 23 19:41:54 EDT 2014


On 14-09-23 18:33, Stephen Hoffman wrote:

> <http://h71000.www7.hp.com/openvms/journal/v8/ssi.html>

##
When an executive image with an inner mode service is loaded, the
corresponding transfer routine is modified to contain an instruction
that loads a service-specific value into R0 and either a CALL_PALCHMK or
a CALL_PAL CHME instruction.
##

When my application issues the call/branch instruction, it doesn't have
the power to execute a CALL_PAL-CHMK instruction. Yet, the next
instruction to execute (which resides in the system service transfer
routine) has that power.

So what happens between my application's "callbranch" instruction and
the first instruction in the system service transfer routine that causes
CALL_PALCHMK instruction to magically be permitted ?


For IA64, this appears documented:
##
On I64 platforms, the mechanism for changing to an inner access mode is
to execute an epc instruction on a page with a special protection code.
Such a page is called a promote page. A set of virtually adjacent
promote pages is called a promote area. Routines in the promote area
change access mode and transfer control to the system service dispatcher.
##

So, the systen service transfer routine is located in a page that has a
bit set that enables the ability to change to inner mode.

How does it work on Alpha/VAX ?  Are there also memory pages that are
created with special privileges that enable certain assembler
instructions when they are executed from within those pages ? Or is
there another mechanism ?





More information about the Info-vax mailing list