cpr doesn't even nearly work if built with gcc
the CPR code contains code in cpr_wakecode.s which is much like the CPU boot code in general. Unfortunately, because of brokenness in the Sun assembler, a lot of this code is written backwards and/or inside out, as far as data size prefixes.
Even more unfortunately, the GCC code was not written (though it is during actual boot, of course).
Even more unfortunately, the condition used to identify GNU as is incorrect, so we assembler the Studio code, which then doesn't work.
Using the real MP boot as an inspiration, someone should write a version of cpr_wakecode that is no longer inside out, and which thus may work with GCC.
To do this, they should also correct the macro used to spot GNU as, which they can also crib from the real mp boot.
searching the source base for "Vulcan" (the version of studio which broke the assembler), will find all relevant code.