qemu-ppc
[Top][All Lists]
Advanced

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

Re: [Qemu-ppc] Windows NT 4.0 for PowerPC


From: Răzvan Corneliu C.R. VILT
Subject: Re: [Qemu-ppc] Windows NT 4.0 for PowerPC
Date: Mon, 31 Jul 2017 13:05:36 +0300

Hi Mark,

There are headers for the MZ-PE loader format available in GPL'ed sources. You can also see the veneer.exe file included in the ppc builds. There are some special notes in the CHRP spec about it that I reproduced below. The OpenBios build needs to include MBR, ISO9660 and FAT support next to the existing filesystems. Personally, I'd rather have the loader written in forth, since that would make it loadable as a bootinfo.txt on existing powerpc firmwares, but I'm not picky.  The QEMU provided VGA cards that are supported are the cirrus54xx, but I'd have to investigate which HAL actually emulates the x86 bios to POST the VGA card.

Andrei Warkentin already wrote a minimal/functional loader based on OPAL/SkiBoot and created a DTS that maps to the Sandal HAL (IBM 6015) using the arc-identifier root property. The vrdebug property is a bitmask that makes it more and more verbose.

Veneer knows only 601, 603, 604, 603e and 604e CPUs. It checks for MP support if the CPU is 604 rev>0x304 or 604e.

The PPC HAL knows the following arc-identifiers: IBM-6015, IBM-6020, IBM-6040, IBM-6042, IBM-6070, IBM-VICT, IBM-7043, IBM-7442, IBM-Harley, IBM-Jona, IBM-Zapatos, IBM-7042 or entries that start with "IBM PPS Model 7043" or "IBM PPS Model 7442".

The PPC HAL is aware of the 0x0001,0x0003,0x0004,0x0006,0x0007,0x0008,0x0009,0x0014 PVR, so 601, 603(multiple), 604 (multiple) AND 620 are also on the list.

I believe that a 604+ based PCI machine with a PCI Cirrus adaptor should work. OpenBios needs to support for MBR, ISO9660, VFAT, MZ-PE and settings PNP IDs for not-pci resources in the OF tree.

Let me know if I can help. I can dive quite deep in the NT internals.

Cheers,
Răzvan

11.4.1. CHRP PE Program-image Format Support
When the PE File Format is recognized, the Windows NT Veneer is loaded with the following environment:

• Open Firmware shall ensure that virtual address space from 0x80000000 to 0x81000000 (2GB to 2GB+16MB) is available and that any other virtual address space has not been mapped into the physical address space from 0 to 0x1000000 (0 to 16MB). If necessary, Open Firmware shall also modify the real-base configuration vari- able in such a way as to ensure that the Open Firmware image itself is not loaded into any part of the 0 to 0x1000000 physical address space.
• For CHRP Systems with greater than 256MB’s of physical memory, a suggested Open Firmware Image loading address is at the top of the first 256MB bank.
• For CHRP Systems with equal to or less than 256MB’s, a suggested Open Firmware Image loading address is at the top of physical memory.
• Open Firmware shall zero the first 256 bytes (0 to 0x100) of physical memory.
• Open Firmware shall set the little-endian? configuration variable to little endian mode. Open Firmware shall set the real-mode? configuration variable to virtual address mode.
11.4.1.1. Windows NT Veneer Implementation
The current NT Veneer implementation calls the MMU node’s standard map method through the Client Interface to map virtual address 0x80000000 to physical address 0. CHRP System’s intention is to continue using NT calling the standard map method to map virtual memory to physical memory.

reply via email to

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