Jump to content

XP running on a 486 cpu


Dietmar

Recommended Posts


just tested with my NM27 IA32 package, some DLLs has CX8 so it can't run on 486:

D3DCompiler_43.dll ::
100ac750:       0f c7 0a                cmpxchg8b (%edx)

mozjs.dll ::
1026832e:       f0 0f c7 0e             lock cmpxchg8b (%esi)
10268367:       f0 0f c7 0e             lock cmpxchg8b (%esi)

msvcr120.dll ::
10075087:       f0 0f c7 0f             lock cmpxchg8b (%edi)

vcomp120.dll ::
10007483:       f0 0f c7 0e             lock cmpxchg8b (%esi)
10007631:       f0 0f c7 0e             lock cmpxchg8b (%esi)
1000a60f:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a674:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a6e2:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a75c:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a7d6:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a847:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a8ac:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a911:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a97e:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000a9f2:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000aa66:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000ac31:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000aca7:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000ad1d:       f0 0f c7 0f             lock cmpxchg8b (%edi)
1000ad93:       f0 0f c7 0f             lock cmpxchg8b (%edi)

xul.dll ::
10230f1e:       f0 0f c7 0e             lock cmpxchg8b (%esi)
10230f57:       f0 0f c7 0e             lock cmpxchg8b (%esi)
10230f87:       f0 0f c7 0e             lock cmpxchg8b (%esi)

 

Link to comment
Share on other sites

Posted (edited)

@user57

Until now I do not succeed to set up a Windbg session on my 486 board for XP SP3.

May be, that the address of the COM1 port does not match?

And I start to think, that not the CPUID of the 486 cpu is the reason for crash

Dietmar

Edited by Dietmar
Link to comment
Share on other sites

4 hours ago, Dietmar said:

@roytam1

Thanks, I will check

Dietmar

EDIT: No one from this files is on my XP SP3 install.

MSVCR120 and VCOMP120 are from MSVC 2013 runtime (I already patched CMOV from MSVCR120 here)

D3DCompiler_43 is from DirectX 9 runtime

others are just compiled from source with MSVC2013, but I can't find a way to tell compiler NOT to compile with CMPXCHG8B.

Link to comment
Share on other sites

this is a good time to talk about the CPUID command

that command returns info about the processor 
it stores that information in EAX, EBX, ECX, and EDX

very interesting for WINXP might be the PSE flag and the PAE flag

with this interesting result as we always have it around somewhere "32 bits or wires are the limit for 32 bits"

that guy actually wrote it like this:
"Summary of 32-bit paging":
"This allows a maximum RAM configuration of 252 bytes, or 4 petabytes (about 4.5×1015 bytes)."

and it tells us win2k actually used up these methods "Windows 2000 Datacenter Memory Limit 32 GB RAM"

https://en.wikipedia.org/wiki/Physical_Address_Extension
https://en.wikipedia.org/wiki/PSE-36
https://en.m.wikipedia.org/wiki/Page_Size_Extension
we might can but OS, CPU and BUS/RAM have to do so


but back to the cpuid command

it has information what commands can be used or what "technology" is available for this cpu

this includes if it can make that cmpxchg8b command

in EDX MMX (flag 23), cx8(flag 8 = cmpxchg8b), (pse(page size extension) flag 3), pae ((physical address extension)flag 6) , in ECX (AVX (28), sse4.2 , sse4.1, sse3) and so on

the operating system useally should know if that command in invalid

if it just continue it might use SSE or the MMX commands, what should cause a BSOD


so rather be safe and store them up with a CPU result you actually made with a cpuid command script from a old CPU (a script for cpuid is easy to write and around in web)
maybe from a late 486 cpu (what we can google that those are to be said to have the cpuid command)
then you know for sure what those CPU actually gave back as result 
(the few flags maybe if that cmpxchg8b was avaiable you can just delete up)

then you fill up either the registers or where windows store that information, then the OS/WINXP can react to that information, if WINXP actually dont have a reaction, if the command was not correctly reconized, failed, ect

Link to comment
Share on other sites

Posted (edited)

@roytam1

Windbg session in that x86 box?

1.) Very early Bsod 0x0000005D, (unknown processor), no running bar of XP.

2.) My serial connection does not work for this board.

May be, because it does not use the standard configuration 0x3F8, IRQ 4 for the COM1 port.

Dietmar

Edited by Dietmar
Link to comment
Share on other sites

16 minutes ago, Dietmar said:

@roytam1

Windbg session in that x86 box?

1.) Very early Bsod 0x0000005D, (unknown processor), no running bar of XP.

2.) My serial connection does not work for this board.

May be, because it does not use the standard configuration 0x3F8, IRQ 4 for the COM1 port.

Dietmar

yeah it seems to be (1) here. I patched out 0F 89 CC DB 00 00 to 90 90 90 90 90 90 and it shows XP running bar now.

and it works here!

image.png?ex=662cc0db&is=661a4bdb&hm=d4f

Edited by roytam1
Link to comment
Share on other sites

48 minutes ago, Dietmar said:

PS: Boot time to desktop is about 2 min.

Via F8 you have to enable VGA modus.

emulated GD5446 and PCNet-III works fine here.

since its harddisk image is on a 10000rpm WD VelociRaptor drive, it boots quite fast, within 1 minute.

 

BTW can you patch out D3DCompiler_43.dll's cmpxchg8b?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...