576 #define F13_ARG13 AS_REGISTER(FloatRegister, F13) |
576 #define F13_ARG13 AS_REGISTER(FloatRegister, F13) |
577 #endif |
577 #endif |
578 |
578 |
579 // Register declarations to be used in frame manager assembly code. |
579 // Register declarations to be used in frame manager assembly code. |
580 // Use only non-volatile registers in order to keep values across C-calls. |
580 // Use only non-volatile registers in order to keep values across C-calls. |
581 #ifdef CC_INTERP |
|
582 REGISTER_DECLARATION(Register, R14_state, R14); // address of new cInterpreter. |
|
583 REGISTER_DECLARATION(Register, R15_prev_state, R15); // address of old cInterpreter |
|
584 #else // CC_INTERP |
|
585 REGISTER_DECLARATION(Register, R14_bcp, R14); |
581 REGISTER_DECLARATION(Register, R14_bcp, R14); |
586 REGISTER_DECLARATION(Register, R15_esp, R15); |
582 REGISTER_DECLARATION(Register, R15_esp, R15); |
587 REGISTER_DECLARATION(FloatRegister, F15_ftos, F15); |
583 REGISTER_DECLARATION(FloatRegister, F15_ftos, F15); |
588 #endif // CC_INTERP |
|
589 REGISTER_DECLARATION(Register, R16_thread, R16); // address of current thread |
584 REGISTER_DECLARATION(Register, R16_thread, R16); // address of current thread |
590 REGISTER_DECLARATION(Register, R17_tos, R17); // address of Java tos (prepushed). |
585 REGISTER_DECLARATION(Register, R17_tos, R17); // address of Java tos (prepushed). |
591 REGISTER_DECLARATION(Register, R18_locals, R18); // address of first param slot (receiver). |
586 REGISTER_DECLARATION(Register, R18_locals, R18); // address of first param slot (receiver). |
592 REGISTER_DECLARATION(Register, R19_method, R19); // address of current method |
587 REGISTER_DECLARATION(Register, R19_method, R19); // address of current method |
593 #ifndef DONT_USE_REGISTER_DEFINES |
588 #ifndef DONT_USE_REGISTER_DEFINES |
594 #ifdef CC_INTERP |
|
595 #define R14_state AS_REGISTER(Register, R14) |
|
596 #define R15_prev_state AS_REGISTER(Register, R15) |
|
597 #else // CC_INTERP |
|
598 #define R14_bcp AS_REGISTER(Register, R14) |
589 #define R14_bcp AS_REGISTER(Register, R14) |
599 #define R15_esp AS_REGISTER(Register, R15) |
590 #define R15_esp AS_REGISTER(Register, R15) |
600 #define F15_ftos AS_REGISTER(FloatRegister, F15) |
591 #define F15_ftos AS_REGISTER(FloatRegister, F15) |
601 #endif // CC_INTERP |
|
602 #define R16_thread AS_REGISTER(Register, R16) |
592 #define R16_thread AS_REGISTER(Register, R16) |
603 #define R17_tos AS_REGISTER(Register, R17) |
593 #define R17_tos AS_REGISTER(Register, R17) |
604 #define R18_locals AS_REGISTER(Register, R18) |
594 #define R18_locals AS_REGISTER(Register, R18) |
605 #define R19_method AS_REGISTER(Register, R19) |
595 #define R19_method AS_REGISTER(Register, R19) |
606 #define R21_sender_SP AS_REGISTER(Register, R21) |
596 #define R21_sender_SP AS_REGISTER(Register, R21) |
617 REGISTER_DECLARATION(Register, R25_tmp5, R25); |
607 REGISTER_DECLARATION(Register, R25_tmp5, R25); |
618 REGISTER_DECLARATION(Register, R26_tmp6, R26); |
608 REGISTER_DECLARATION(Register, R26_tmp6, R26); |
619 REGISTER_DECLARATION(Register, R27_tmp7, R27); |
609 REGISTER_DECLARATION(Register, R27_tmp7, R27); |
620 REGISTER_DECLARATION(Register, R28_tmp8, R28); |
610 REGISTER_DECLARATION(Register, R28_tmp8, R28); |
621 REGISTER_DECLARATION(Register, R29_tmp9, R29); |
611 REGISTER_DECLARATION(Register, R29_tmp9, R29); |
622 #ifndef CC_INTERP |
|
623 REGISTER_DECLARATION(Register, R24_dispatch_addr, R24); |
612 REGISTER_DECLARATION(Register, R24_dispatch_addr, R24); |
624 REGISTER_DECLARATION(Register, R25_templateTableBase, R25); |
613 REGISTER_DECLARATION(Register, R25_templateTableBase, R25); |
625 REGISTER_DECLARATION(Register, R26_monitor, R26); |
614 REGISTER_DECLARATION(Register, R26_monitor, R26); |
626 REGISTER_DECLARATION(Register, R27_constPoolCache, R27); |
615 REGISTER_DECLARATION(Register, R27_constPoolCache, R27); |
627 REGISTER_DECLARATION(Register, R28_mdx, R28); |
616 REGISTER_DECLARATION(Register, R28_mdx, R28); |
628 #endif // CC_INTERP |
|
629 |
617 |
630 #ifndef DONT_USE_REGISTER_DEFINES |
618 #ifndef DONT_USE_REGISTER_DEFINES |
631 #define R21_tmp1 AS_REGISTER(Register, R21) |
619 #define R21_tmp1 AS_REGISTER(Register, R21) |
632 #define R22_tmp2 AS_REGISTER(Register, R22) |
620 #define R22_tmp2 AS_REGISTER(Register, R22) |
633 #define R23_tmp3 AS_REGISTER(Register, R23) |
621 #define R23_tmp3 AS_REGISTER(Register, R23) |
635 #define R25_tmp5 AS_REGISTER(Register, R25) |
623 #define R25_tmp5 AS_REGISTER(Register, R25) |
636 #define R26_tmp6 AS_REGISTER(Register, R26) |
624 #define R26_tmp6 AS_REGISTER(Register, R26) |
637 #define R27_tmp7 AS_REGISTER(Register, R27) |
625 #define R27_tmp7 AS_REGISTER(Register, R27) |
638 #define R28_tmp8 AS_REGISTER(Register, R28) |
626 #define R28_tmp8 AS_REGISTER(Register, R28) |
639 #define R29_tmp9 AS_REGISTER(Register, R29) |
627 #define R29_tmp9 AS_REGISTER(Register, R29) |
640 #ifndef CC_INTERP |
|
641 // Lmonitors : monitor pointer |
628 // Lmonitors : monitor pointer |
642 // LcpoolCache: constant pool cache |
629 // LcpoolCache: constant pool cache |
643 // mdx: method data index |
630 // mdx: method data index |
644 #define R24_dispatch_addr AS_REGISTER(Register, R24) |
631 #define R24_dispatch_addr AS_REGISTER(Register, R24) |
645 #define R25_templateTableBase AS_REGISTER(Register, R25) |
632 #define R25_templateTableBase AS_REGISTER(Register, R25) |
647 #define R27_constPoolCache AS_REGISTER(Register, R27) |
634 #define R27_constPoolCache AS_REGISTER(Register, R27) |
648 #define R28_mdx AS_REGISTER(Register, R28) |
635 #define R28_mdx AS_REGISTER(Register, R28) |
649 #endif |
636 #endif |
650 |
637 |
651 #define CCR4_is_synced AS_REGISTER(ConditionRegister, CCR4) |
638 #define CCR4_is_synced AS_REGISTER(ConditionRegister, CCR4) |
652 #endif |
|
653 |
639 |
654 // Scratch registers are volatile. |
640 // Scratch registers are volatile. |
655 REGISTER_DECLARATION(Register, R11_scratch1, R11); |
641 REGISTER_DECLARATION(Register, R11_scratch1, R11); |
656 REGISTER_DECLARATION(Register, R12_scratch2, R12); |
642 REGISTER_DECLARATION(Register, R12_scratch2, R12); |
657 #ifndef DONT_USE_REGISTER_DEFINES |
643 #ifndef DONT_USE_REGISTER_DEFINES |