- mfpvr r14 /* check if ppc64 */
- li r15, 4
- srw r14, r14, r15 /* >> 4 */
srwi 14,14,4
but you actually want to shift 16, not 4.
- cmplwi r14, 0x33
- blt 1f
- cmplwi r14, 0x7033
- bge 1f
This is too simplistic. Here's something that detects whether the CPU is currently in 64-bit mode, without using 64-bit-only instructions:
lis 3,0x4000 add 3,3,3 addc 3,3,3 adde 3,3,3 cmplwi 3,0 beq 64bit bne 32bit
Anyway, can't you always align to 128 bytes, and create one frame for the 64-bit ABI? Or do you really want to save those few bytes...
Segher