comparison src/cpu/ppc/vm/register_ppc.hpp @ 17804:fd1b9f02cc91

8036976: PPC64: implement the template interpreter Reviewed-by: kvn, coleenp Contributed-by: axel.siebenborn@sap.com, martin.doerr@sap.com
author goetz
date Mon, 10 Mar 2014 12:58:02 +0100
parents 67fa91961822
children 92aa6797d639
comparison
equal deleted inserted replaced
17803:31e80afe3fed 17804:fd1b9f02cc91
1 /* 1 /*
2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
3 * Copyright 2012, 2013 SAP AG. All rights reserved. 3 * Copyright 2012, 2014 SAP AG. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * 5 *
6 * This code is free software; you can redistribute it and/or modify it 6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as 7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
577 #define F13_ARG13 AS_REGISTER(FloatRegister, F13) 577 #define F13_ARG13 AS_REGISTER(FloatRegister, F13)
578 #endif 578 #endif
579 579
580 // Register declarations to be used in frame manager assembly code. 580 // Register declarations to be used in frame manager assembly code.
581 // Use only non-volatile registers in order to keep values across C-calls. 581 // Use only non-volatile registers in order to keep values across C-calls.
582 #ifdef CC_INTERP
582 REGISTER_DECLARATION(Register, R14_state, R14); // address of new cInterpreter. 583 REGISTER_DECLARATION(Register, R14_state, R14); // address of new cInterpreter.
583 REGISTER_DECLARATION(Register, R15_prev_state, R15); // address of old cInterpreter 584 REGISTER_DECLARATION(Register, R15_prev_state, R15); // address of old cInterpreter
585 #else // CC_INTERP
586 REGISTER_DECLARATION(Register, R14_bcp, R14);
587 REGISTER_DECLARATION(Register, R15_esp, R15);
588 REGISTER_DECLARATION(FloatRegister, F15_ftos, F15);
589 #endif // CC_INTERP
584 REGISTER_DECLARATION(Register, R16_thread, R16); // address of current thread 590 REGISTER_DECLARATION(Register, R16_thread, R16); // address of current thread
585 REGISTER_DECLARATION(Register, R17_tos, R17); // address of Java tos (prepushed). 591 REGISTER_DECLARATION(Register, R17_tos, R17); // address of Java tos (prepushed).
586 REGISTER_DECLARATION(Register, R18_locals, R18); // address of first param slot (receiver). 592 REGISTER_DECLARATION(Register, R18_locals, R18); // address of first param slot (receiver).
587 REGISTER_DECLARATION(Register, R19_method, R19); // address of current method 593 REGISTER_DECLARATION(Register, R19_method, R19); // address of current method
588 #ifndef DONT_USE_REGISTER_DEFINES 594 #ifndef DONT_USE_REGISTER_DEFINES
595 #ifdef CC_INTERP
589 #define R14_state AS_REGISTER(Register, R14) 596 #define R14_state AS_REGISTER(Register, R14)
590 #define R15_prev_state AS_REGISTER(Register, R15) 597 #define R15_prev_state AS_REGISTER(Register, R15)
598 #else // CC_INTERP
599 #define R14_bcp AS_REGISTER(Register, R14)
600 #define R15_esp AS_REGISTER(Register, R15)
601 #define F15_ftos AS_REGISTER(FloatRegister, F15)
602 #endif // CC_INTERP
591 #define R16_thread AS_REGISTER(Register, R16) 603 #define R16_thread AS_REGISTER(Register, R16)
592 #define R17_tos AS_REGISTER(Register, R17) 604 #define R17_tos AS_REGISTER(Register, R17)
593 #define R18_locals AS_REGISTER(Register, R18) 605 #define R18_locals AS_REGISTER(Register, R18)
594 #define R19_method AS_REGISTER(Register, R19) 606 #define R19_method AS_REGISTER(Register, R19)
595 #define R21_sender_SP AS_REGISTER(Register, R21) 607 #define R21_sender_SP AS_REGISTER(Register, R21)
606 REGISTER_DECLARATION(Register, R25_tmp5, R25); 618 REGISTER_DECLARATION(Register, R25_tmp5, R25);
607 REGISTER_DECLARATION(Register, R26_tmp6, R26); 619 REGISTER_DECLARATION(Register, R26_tmp6, R26);
608 REGISTER_DECLARATION(Register, R27_tmp7, R27); 620 REGISTER_DECLARATION(Register, R27_tmp7, R27);
609 REGISTER_DECLARATION(Register, R28_tmp8, R28); 621 REGISTER_DECLARATION(Register, R28_tmp8, R28);
610 REGISTER_DECLARATION(Register, R29_tmp9, R29); 622 REGISTER_DECLARATION(Register, R29_tmp9, R29);
623 #ifndef CC_INTERP
624 REGISTER_DECLARATION(Register, R24_dispatch_addr, R24);
625 REGISTER_DECLARATION(Register, R25_templateTableBase, R25);
626 REGISTER_DECLARATION(Register, R26_monitor, R26);
627 REGISTER_DECLARATION(Register, R27_constPoolCache, R27);
628 REGISTER_DECLARATION(Register, R28_mdx, R28);
629 #endif // CC_INTERP
630
611 #ifndef DONT_USE_REGISTER_DEFINES 631 #ifndef DONT_USE_REGISTER_DEFINES
612 #define R21_tmp1 AS_REGISTER(Register, R21) 632 #define R21_tmp1 AS_REGISTER(Register, R21)
613 #define R22_tmp2 AS_REGISTER(Register, R22) 633 #define R22_tmp2 AS_REGISTER(Register, R22)
614 #define R23_tmp3 AS_REGISTER(Register, R23) 634 #define R23_tmp3 AS_REGISTER(Register, R23)
615 #define R24_tmp4 AS_REGISTER(Register, R24) 635 #define R24_tmp4 AS_REGISTER(Register, R24)
616 #define R25_tmp5 AS_REGISTER(Register, R25) 636 #define R25_tmp5 AS_REGISTER(Register, R25)
617 #define R26_tmp6 AS_REGISTER(Register, R26) 637 #define R26_tmp6 AS_REGISTER(Register, R26)
618 #define R27_tmp7 AS_REGISTER(Register, R27) 638 #define R27_tmp7 AS_REGISTER(Register, R27)
619 #define R28_tmp8 AS_REGISTER(Register, R28) 639 #define R28_tmp8 AS_REGISTER(Register, R28)
620 #define R29_tmp9 AS_REGISTER(Register, R29) 640 #define R29_tmp9 AS_REGISTER(Register, R29)
641 #ifndef CC_INTERP
642 // Lmonitors : monitor pointer
643 // LcpoolCache: constant pool cache
644 // mdx: method data index
645 #define R24_dispatch_addr AS_REGISTER(Register, R24)
646 #define R25_templateTableBase AS_REGISTER(Register, R25)
647 #define R26_monitor AS_REGISTER(Register, R26)
648 #define R27_constPoolCache AS_REGISTER(Register, R27)
649 #define R28_mdx AS_REGISTER(Register, R28)
650 #endif
621 651
622 #define CCR4_is_synced AS_REGISTER(ConditionRegister, CCR4) 652 #define CCR4_is_synced AS_REGISTER(ConditionRegister, CCR4)
623 #endif 653 #endif
624 654
625 // Scratch registers are volatile. 655 // Scratch registers are volatile.