Hi gem5-users,

I recently found that when running some relatively new kernels, the boot
process fails at very early stage.
After tracking the instructions, it seemed the reason is m5 doesn't allow
the stack segment register (%ss) to be zero.
However, the following may suggest %ss being zero at system start-up:
1. According to AMD x86_64 spec, %ss=0 is not tolerable only when submode !=
64bit_mode or CPL=3.
2. Linux kernel has been updated to load 0 to %ss at start-up, as shown here
https://patchwork.kernel.org/patch/62837/

Hence, I modified gem5../src/arch/x86/isa/microops/regop.isa :

===============================================================
1340,1342c1340,1343
<                     if ((m5reg.submode != SixtyFourBitMode ||
<                                 m5reg.cpl == 3) ||
<                             !(desc.s == 1 &&
---
>                     if ( (m5reg.submode==SixtyFourBitMode && m5reg.cpl<3)
) {
>                         //ok
>                     } else {
>                       if ( !(desc.s == 1 &&
1347a1349
>             }
===============================================================

After this, booting with a newer kernel (eg. 2.6.38) can go a lot further.

Please share any comments on this.

Thanks,
Feng
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to