[Info-vax] x86S Specification
Arne Vajhøj
arne at vajhoej.dk
Sun Nov 3 19:22:29 EST 2024
On 11/3/2024 11:38 AM, Camiel Vanderhoeven wrote:
> Arne Vajhøj wrote:
>> On 11/3/2024 9:06 AM, Camiel Vanderhoeven wrote:
>>> Arne Vajhøj wrote:
>>>> x86-64 in long mode only support 2 modes in PTE's, so
>>>> VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
>>>> S, E and K in ring 0.
>>>
>>> Not exactly.
>>>
>>> Ring 3 is used for Exec, Super, and User
>>>
>>> Ring 0 is used for kernel and for transitions between modes (SWIS)
>>>
>>> Running Exec and Super in ring 0 would blow away the separation
>>> (which, I might add, is there more for stability than for security,
>>> before I unintentionally re-start that debate)
>>
>> You are more afraid that DCL or RMS would step on VMS than
>> applications would step on DCL or RMS?
>
> No, certainly not. That is why we have a separate set of page tables for
> each mode. For instance, a page that has kernel write / exec read
> protections is represented by the following PTEs in these 4 sets of page
> tables:
>
> kernel mode: S(upervisor) W(riteable)
> exec mode: U(ser) R(eadable)
> super mode: not present
> user mode: not present
The more I think about the more fascinating it sounds.
So if I write a C program with:
char __align(13) buf[8192];
and the C code call SYS$SETPRT with PRT$C_UREW on that, then
it works like.
logical/application level:
1 page of 8 KB with:
logK : write
logE : write
logS : read
logU : read
physical/hardware level:
2 pages of 4 KB each in four different page tables:
logK => page table with: physK : write, physU : ? (should not matter)
logE => page table with: physK : write, physU : write
logS => page table with: physK : write, physU : read
logU => page table with: physK : write, physU : read
??
Arne
More information about the Info-vax
mailing list