Interest in Reviving PowerPC Support – Testing on iBook G3 and PowerMac G5

There is an option for ld that should control this:

separate-code
noseparate-code
Create separate code “PT_LOAD” segment header in the object. This specifies a memory segment that should contain only instructions and must be in wholly disjoint pages from any other data. Don’t create separate code “PT_LOAD” segment if noseparate-code is used.

So maybe the default value changed. If having two segments is important for you , make sure to pass -zseparate-code to ld or -Wl,-zseparate-code to gcc when linking.

Words cannot express how excited I am with each new post in this thread. Thank you all! If there’s anything I can ever do to help, I have tons of Apple PPC machines from all generations laying around.

8 Likes

We actually already use those options and some related ones for Clang, since LLD creates multiple segments by default, and the bootloader ELF loader can’t handle that: ArchitectureRules (revision c8cd427e30891a040746e5020b5a2203f07398bd) - OpenGrok cross reference for /haiku/build/jam/ArchitectureRules

With noseparate-code and no-rosegment, we still get 2 LOAD segments under Clang. Without them, if memory serves, I believe we’d get 4: RX, R, RW (data), RW (empty/zeroes). So I think there might be something else going on here. We shouldn’t get an RWX section no matter what.

Seeing this there might be new PowerPC hardware coming out that could help as well, the Mirari Board:
https://mirari.vitasys.nl/

Some Amiga folks are behind it, but hey it should be more accessible PowerPC hardware and more modern as well.

1 Like

There is also the Power Progress community, working on an open source PPC desktop and laptop. Power Progress Community - Promotion and dissemination of Open Source Hardware and Software (focused but not limited to PowerPC and OpenPower architectures)

1 Like

The issue I see with all this is that there is nobody working on new PPC CPUs. For instance the mirari plans to use CPUs from NXP. Who is not going to build new PPC CPUs, they switched to ARM for new designs (https://community.nxp.com/t5/QorIQ/Does-PowePC-QorIQ-line-have-a-future/m-p/943780?profile.language=en)
Sure they will provide PPC CPUs until ~2035, but today CPUs built on a 28nm process are far outdated, what will it look like in 5 years?
I am afraid for the future of Power systems :confused:

Hi @Sergione78,

I’ve been gifted a PowerMac G5 (2 cpus); So now I have a machine I can directly test with and compare. exciting!

Unfortunately the gpu seems broken, I can’t get any video output (which is the condition the previous owner described it as)… or maybe the mainboard battery. Ordered a replacement for it, but not yet for the video card since I’m not quite sure how to diagnose it.

Previous owner said it has 512mb of ram, but there was actually 3,5GB inside. Though the 256+256 pair alone failed the Ram test, so removing that one.

Edit: I actually have a nvidia fx5600eq agp card, but it is not clear to me if there is any way to make this work in the mac

I have a late G5 and a very end of line G4 here, however two and a half decades of poking at code has not given me the skills to figure out much of anything that’d be much use.

Should probably check they both work actually… The G4 I know was in working state when retired, and basically maxed out in terms of RAM (2GB) and I think the biggest, spinning, IDE drive it can support too; plus I added a Mac compatible USB2 card. It was very, very briefly my Logic workstation

Hi,
from what you describe it really sounds more like a GPU issue than the logic board or PRAM battery. If the RAM pairs all check out fine, the G5 should still boot even with less memory installed, so the missing video output is very likely tied to the graphics card.

About the FX5600EQ: that’s most likely a Quadro variant. The problem is that PowerMac G5s only work with cards that have a Mac-compatible firmware. If the card is still in PC firmware, the machine won’t give you video output (and in some cases it won’t even finish booting).

There are two ways forward:

  • Flash the card with a Mac ROM. This usually requires either an external EEPROM programmer, or a PC with the right tools (nvflash). However, sometimes the Mac ROM is larger than the stock EEPROM on the PC card. In that case, you need to replace the chip with a bigger one before flashing.
  • Get a Mac-ready AGP card (for example Radeon 9600/9800, or even an Nvidia 6800 Ultra DDL if you find one). That’s usually the quickest way to get a working video output without extra hassle.

There are lots of resources online that describe these steps in detail – for example this thread on Reddit: How to convert a standard PC GPU to a Mac GPU.

So yes, the FX5600EQ can work, but only after you flash it with the right firmware – and possibly swap the EEPROM if it’s too small. Without that step, you’ll just keep getting a black screen

1 Like

What does a mac compatible firmware entail? Is this related to how openfirmware wants to talk to the gpu?
(How would I obtain one for the nvidia gpu? was there ever a mac compatible model?)
I’m a bit suprised that there is no form of free firmware extending the openfirmware to try and provide support for additional things, if i understood correctly openfirmware is written in forth, so should be extendable.

Actually, as you rightly pointed out, the Mac firmware allows the card to communicate with OF. Since I don’t know your configuration, I can’t tell you which card is the best for your G5 (AGP or PCIe?). In any case, you can find a lot of material online.

1 Like

PC video cards come with a flash rom containing x86 code for early initialisation and providing the VESA BIOS extensions (plugging into entry points that allow to intercept the x86 INT instruction).

On Macintosh and also Sun Sparc machines, this is replaced by forth bytecode that interfaces with openfnrmware or openboot (it’s not clear if the same bytecode can be used in both cases).

This contains code for early initialization of the card, which is harder to do and less documented than writing a driver. In some cases, drivers will reinitialize the card well enough that the bios/openfirmware interface is not needed and the OS will still get a working display. But if you want to see the openfirmware prompt, that isn’t an option.

So, you have to find a flash dump from a card using the same gpu as yours but that was equiphed with the forth bytecode flash rather than the x86 one. And hope the other parts of the videocard are similar enough.

Have a look here: Wikidownloads2 - The Mac Elite

I have flashed pc Nvidia cards to work in power macs before, so it does indeed work, also I seen to recall using unmodified pc graphics cards, the trick was sure nothing was displayed at boot but as soon as the operating system took over the graphics bios was irrelevant.

Now that I think about it I also have a pair of G5 powermacs, and a good version of that GPU. In my experience the G5 suffered from bad solder joints, I think this was around the time apple started to migrate to lead free solder. Both my G5s suffer from some ailment due to solder joint failures

Thanks for the pointers!

My G5 has an agp slot that needs a gpu, no pciE. It seems the gpu I have never had any openfirmware compatible firmware, so I guess I will have to find one instead. :slight_smile:

I just bought an iMac G5 for testing MorphOS, can i help testing?

1 Like

I’m excited about the Mirari board myself https://mirari.vitasys.nl/

I would love to have Haiku on PPC for historic reasons, but i do not think PPC is the future.

A Haiku for Raspberry Pi would be much more interesting

1 Like

Yes, I definitely want a Raspberry Pi machine running Haiku.

reseated the gpu, now have video output, but no OS. I am hoping to get something installed soonish.

For the Haiku port there is one big question though, the G5 has a 64bit processor, but the older machines are all 32bit. Should the Haiku port then target 64bit for G5 and 32bit for the rest or rather 32bit for all of them? Are there other mac computers with a 64bit poc processor? I think even the wii u one is 32bit.

edit: now have a working macos. neat.