the ISA is somewhat similar to a PowerPC with four condition code registers and two return address registers separated from the main 32-entry register file
using more registers than just 1 for return addresses can avoid having to save it to the stack in some specific situations
critical_code
call func0
call func1
j (ra1) The second level routine returns using ra1
j (ra0) The first level routine returns using ra0
Just why someone and IBM need to spend precious silicon to implement two RA separated from the register file (which not only costs two extra latches but also costs extra instructions to manage it) rather than a simpler solution like in RISC-V?
Oh, and regarding "precious silicon", only on extremely small
Oh, and regarding "precious silicon", only on extremely small
Dunno, but what I learned from the IBM Red and Green books is that in an Superscalar-design like PowerPC, if you add a register this may be duplicated for the number of active pipelines, and for sure it adds more circuits for the management, so I have the feeling that it's not a thing you can put in the basket for free unless it's really useful for something.