Error in explaining canonical addresses

All about the OSDev Wiki. Discussions about the organization and general structure of articles and how to use the wiki. Request changes here if you don't know how to use the wiki.
Post Reply
User avatar
mrjbom
Member
Member
Posts: 301
Joined: Sun Jul 21, 2019 7:34 am

Error in explaining canonical addresses

Post by mrjbom »

Here wiki says
For systems supporting 48-bit virtual address spaces, the upper 16 bits must be the same
But Intel's documentation states that the upper 16 bits must be a copy of bit 47, meaning the upper 17 bits must be the same.

Am I correct in understanding that wiki is mistaken in this case?
nullplan
Member
Member
Posts: 1744
Joined: Wed Aug 30, 2017 8:24 am

Re: Error in explaining canonical addresses

Post by nullplan »

Correct, the upper 16 bits must be a sign extension of the lower 48. And of course, with the advent of LA57, there needs to be a caveat that it might just be the top 7 bits that need to be an extension of the lower 57.
Carpe diem!
User avatar
zaval
Member
Member
Posts: 651
Joined: Fri Feb 17, 2017 4:01 pm
Location: Ukraine, Bachmut
Contact:

Re: Error in explaining canonical addresses

Post by zaval »

wiki means what Intel and Amd mean, and they mean the upper 16 bits must be the same ... as the bit 47. combining that bit with them and talking about 17 bits would be confusing, since bit 47 is the used part of the address, it makes up an index into the top table, whereas sign extended bits aren't part of that process, they are just "stuffing" bits.
ANT - NT-like OS for x64 and arm64.
efify - UEFI for a couple of boards (mips and arm). suspended due to lost of all the target park boards (russians destroyed our town).
Post Reply