grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: questions about relocator16.S


From: Vladimir 'phcoder' Serbinenko
Subject: Re: questions about relocator16.S
Date: Tue, 14 Aug 2018 10:36:55 +0200



вт, 14 авг. 2018 г., 9:11 Cao jin <address@hidden>:
Hi,

  I am learning these code, and now have 2 questions:

1. at the bottom of relocator_common.S, there is:

LOCAL(jump_vector):
        /* Jump location. Is filled by the code */
        .long   0
        .long   CODE_SEGMENT

Since it is offset & segment selector value, why is not ".word
CODE_SEGMENT", is there any subtle difference?
i386 is little endian, so effectively it just reserves 2 bytes more and fills them with zeros.

2. in relocator16.S, after "RELOAD_GDT", the other segment registers are
updated two times with DATA_SEGMENT & PSEUDO_REAL_DSEG, they are pretty
close, there is no memory read/write between them, so why we need the
updates with DATA_SEGMENT?
It's derived from older code that may have had accesses there. But it was tested on many CPUs and changing it risks triggering obscure bug in an obscure CPU

--
Sincerely,
Cao jin



_______________________________________________
Grub-devel mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/grub-devel

reply via email to

[Prev in Thread] Current Thread [Next in Thread]