Hi,

I've been playing around with my port to Win2K.
The kernel mode stuff now initialises correctly
but causes a reboot in __host2mon in nexus.S.

What I'm seeing is that in the code :-

  movl %esi, %cr3  /* Set monitor CR3 */
  movl %eax, %cr0  /* Set monitor CR0 */
  movl %edx, %cr4  /* Set monitor CR4 */
  movl %esi, %cr3  /* Set monitor CR3 */

the reboot occurs at the point where CR4 is loaded.

The values it's trying to load are :-
        mon_cr0 = 0x80000033
        mon_cr3 = 0x1257000
        mon_cr4 = 0x4 (TSD)

And the relevant host (Win2K) values are :-
        host_cr0 = 0x8001003b
        host_cr3 = 0x2ce3000
        host_cr4 = 0x6d1 (VME PSE MCE PGE OSFXSR OSXMMEXCPT)

I can get past this by changing the mon_cr4 value to match
Win2K's (or by using 0x91, 0x95 etc.).  Something later
causes another reboot but I'm trying to understand this
problem first.  By experimentation, it seems like my
Pentium III doesn't like VME and PSE being switched off
simultaneously (but I'm no expert here!).  Clues anybody?

Mike.

Reply via email to