|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] PAE, Elf headers, and Extended CR3 registers
Folks --
I'm trying to figure out why it makes sense to assume that if the elf
header notes are present and they indicate the use of PAE then an
extended CR3 register is present.
/*
* If we have ELF notes then PAE=yes implies that we must support
* the extended cr3 syntax. Otherwise we need to find the
* [extended-cr3] syntax in the __xen_guest string.
*/
dsi->pae_kernel = PAEKERN_no;
if ( dsi->__elfnote_section )
{
p = xen_elfnote_string(dsi, XEN_ELFNOTE_PAE_MODE);
if ( p != NULL && strncmp(p, "yes", 3) == 0 )
dsi->pae_kernel = PAEKERN_extended_cr3;
}
else
{
p = xen_guest_lookup(dsi, XEN_ELFNOTE_PAE_MODE);
if ( p != NULL && strncmp(p, "yes", 3) == 0 )
{
dsi->pae_kernel = PAEKERN_yes;
if ( !strncmp(p+4, "[extended-cr3]", 14) )
dsi->pae_kernel = PAEKERN_extended_cr3;
}
}
Can someone explain why the assumption declared in the comment and
the first if () clause makes sense?
I would have expected the above to have been written as:
dsi->pae_kernel = PAEKERN_no;
p = NULL;
if ( dsi->__elfnote_section )
{
p = xen_elfnote_string(dsi, XEN_ELFNOTE_PAE_MODE);
}
else
{
p = xen_guest_lookup(dsi, XEN_ELFNOTE_PAE_MODE);
}
if ( p != NULL && strncmp(p, "yes", 3) == 0 )
{
dsi->pae_kernel = PAEKERN_yes;
if ( !strncmp(p+4, "[extended-cr3]", 14) )
dsi->pae_kernel = PAEKERN_extended_cr3;
}
This would ignore whether the "yes" came from the elf note or the
guest string.
-- Randy
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] PAE, Elf headers, and Extended CR3 registers,
Randy Thelen <=
|
|
|
|
|