58 // CTR Loop counter (volatile) |
58 // CTR Loop counter (volatile) |
59 // XER Fixed point exception register (volatile) |
59 // XER Fixed point exception register (volatile) |
60 // FPSCR Floating point status and control register (volatile) |
60 // FPSCR Floating point status and control register (volatile) |
61 // |
61 // |
62 // CR0-CR1 Condition code fields (volatile) |
62 // CR0-CR1 Condition code fields (volatile) |
63 // CR2-CCR4 Condition code fields (nonvolatile) |
63 // CR2-CR4 Condition code fields (nonvolatile) |
64 // CCR5-CCR7 Condition code fields (volatile) |
64 // CR5-CR7 Condition code fields (volatile) |
65 // |
65 // |
66 // ---------------------------------------------- |
66 // ---------------------------------------------- |
67 // On processors with the VMX feature: |
67 // On processors with the VMX feature: |
68 // v0-v1 Volatile scratch registers |
68 // v0-v1 Volatile scratch registers |
69 // v2-v13 Volatile vector parameters registers |
69 // v2-v13 Volatile vector parameters registers |
529 REGISTER_DECLARATION(Register, R6_ARG4, R6); // volatile |
529 REGISTER_DECLARATION(Register, R6_ARG4, R6); // volatile |
530 REGISTER_DECLARATION(Register, R7_ARG5, R7); // volatile |
530 REGISTER_DECLARATION(Register, R7_ARG5, R7); // volatile |
531 REGISTER_DECLARATION(Register, R8_ARG6, R8); // volatile |
531 REGISTER_DECLARATION(Register, R8_ARG6, R8); // volatile |
532 REGISTER_DECLARATION(Register, R9_ARG7, R9); // volatile |
532 REGISTER_DECLARATION(Register, R9_ARG7, R9); // volatile |
533 REGISTER_DECLARATION(Register, R10_ARG8, R10); // volatile |
533 REGISTER_DECLARATION(Register, R10_ARG8, R10); // volatile |
534 REGISTER_DECLARATION(FloatRegister, FO_SCRATCH, F0); // volatile |
534 REGISTER_DECLARATION(FloatRegister, F0_SCRATCH, F0); // volatile |
535 REGISTER_DECLARATION(FloatRegister, F1_RET, F1); // volatile |
535 REGISTER_DECLARATION(FloatRegister, F1_RET, F1); // volatile |
536 REGISTER_DECLARATION(FloatRegister, F1_ARG1, F1); // volatile |
536 REGISTER_DECLARATION(FloatRegister, F1_ARG1, F1); // volatile |
537 REGISTER_DECLARATION(FloatRegister, F2_ARG2, F2); // volatile |
537 REGISTER_DECLARATION(FloatRegister, F2_ARG2, F2); // volatile |
538 REGISTER_DECLARATION(FloatRegister, F3_ARG3, F3); // volatile |
538 REGISTER_DECLARATION(FloatRegister, F3_ARG3, F3); // volatile |
539 REGISTER_DECLARATION(FloatRegister, F4_ARG4, F4); // volatile |
539 REGISTER_DECLARATION(FloatRegister, F4_ARG4, F4); // volatile |
558 #define R6_ARG4 AS_REGISTER(Register, R6) |
558 #define R6_ARG4 AS_REGISTER(Register, R6) |
559 #define R7_ARG5 AS_REGISTER(Register, R7) |
559 #define R7_ARG5 AS_REGISTER(Register, R7) |
560 #define R8_ARG6 AS_REGISTER(Register, R8) |
560 #define R8_ARG6 AS_REGISTER(Register, R8) |
561 #define R9_ARG7 AS_REGISTER(Register, R9) |
561 #define R9_ARG7 AS_REGISTER(Register, R9) |
562 #define R10_ARG8 AS_REGISTER(Register, R10) |
562 #define R10_ARG8 AS_REGISTER(Register, R10) |
563 #define FO_SCRATCH AS_REGISTER(FloatRegister, F0) |
563 #define F0_SCRATCH AS_REGISTER(FloatRegister, F0) |
564 #define F1_RET AS_REGISTER(FloatRegister, F1) |
564 #define F1_RET AS_REGISTER(FloatRegister, F1) |
565 #define F1_ARG1 AS_REGISTER(FloatRegister, F1) |
565 #define F1_ARG1 AS_REGISTER(FloatRegister, F1) |
566 #define F2_ARG2 AS_REGISTER(FloatRegister, F2) |
566 #define F2_ARG2 AS_REGISTER(FloatRegister, F2) |
567 #define F3_ARG3 AS_REGISTER(FloatRegister, F3) |
567 #define F3_ARG3 AS_REGISTER(FloatRegister, F3) |
568 #define F4_ARG4 AS_REGISTER(FloatRegister, F4) |
568 #define F4_ARG4 AS_REGISTER(FloatRegister, F4) |
606 REGISTER_DECLARATION(Register, R25_tmp5, R25); |
606 REGISTER_DECLARATION(Register, R25_tmp5, R25); |
607 REGISTER_DECLARATION(Register, R26_tmp6, R26); |
607 REGISTER_DECLARATION(Register, R26_tmp6, R26); |
608 REGISTER_DECLARATION(Register, R27_tmp7, R27); |
608 REGISTER_DECLARATION(Register, R27_tmp7, R27); |
609 REGISTER_DECLARATION(Register, R28_tmp8, R28); |
609 REGISTER_DECLARATION(Register, R28_tmp8, R28); |
610 REGISTER_DECLARATION(Register, R29_tmp9, R29); |
610 REGISTER_DECLARATION(Register, R29_tmp9, R29); |
611 REGISTER_DECLARATION(Register, R30_polling_page, R30); |
|
612 #ifndef DONT_USE_REGISTER_DEFINES |
611 #ifndef DONT_USE_REGISTER_DEFINES |
613 #define R21_tmp1 AS_REGISTER(Register, R21) |
612 #define R21_tmp1 AS_REGISTER(Register, R21) |
614 #define R22_tmp2 AS_REGISTER(Register, R22) |
613 #define R22_tmp2 AS_REGISTER(Register, R22) |
615 #define R23_tmp3 AS_REGISTER(Register, R23) |
614 #define R23_tmp3 AS_REGISTER(Register, R23) |
616 #define R24_tmp4 AS_REGISTER(Register, R24) |
615 #define R24_tmp4 AS_REGISTER(Register, R24) |
617 #define R25_tmp5 AS_REGISTER(Register, R25) |
616 #define R25_tmp5 AS_REGISTER(Register, R25) |
618 #define R26_tmp6 AS_REGISTER(Register, R26) |
617 #define R26_tmp6 AS_REGISTER(Register, R26) |
619 #define R27_tmp7 AS_REGISTER(Register, R27) |
618 #define R27_tmp7 AS_REGISTER(Register, R27) |
620 #define R28_tmp8 AS_REGISTER(Register, R28) |
619 #define R28_tmp8 AS_REGISTER(Register, R28) |
621 #define R29_tmp9 AS_REGISTER(Register, R29) |
620 #define R29_tmp9 AS_REGISTER(Register, R29) |
622 #define R30_polling_page AS_REGISTER(Register, R30) |
|
623 |
621 |
624 #define CCR4_is_synced AS_REGISTER(ConditionRegister, CCR4) |
622 #define CCR4_is_synced AS_REGISTER(ConditionRegister, CCR4) |
625 #endif |
623 #endif |
626 |
624 |
627 // Scratch registers are volatile. |
625 // Scratch registers are volatile. |