Sorry I don't see reply in time because I am not on the TO or CC list.

On 08/14/2018 04:36 PM, Vladimir 'phcoder' Serbinenko wrote:
> 
> 
> вт, 14 авг. 2018 г., 9:11 Cao jin <caoj.f...@cn.fujitsu.com
> <mailto:caoj.f...@cn.fujitsu.com>>:
> 
>     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.
> 

Yes, I think so.

> 
>     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
> 

I see.

Thanks very much for your explanation, Vladimir:)

-- 
Sincerely,
Cao jin



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

Reply via email to