21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
24 */
25
26 #ifndef CPU_PPC_STUBROUTINES_PPC_HPP
27 #define CPU_PPC_STUBROUTINES_PPC_HPP
28
29 // This file holds the platform specific parts of the StubRoutines
30 // definition. See stubRoutines.hpp for a description on how to
31 // extend it.
32
33 static bool returns_to_call_stub(address return_pc) { return return_pc == _call_stub_return_address; }
34
35 enum platform_dependent_constants {
36 code_size1 = 20000, // simply increase if too small (assembler will crash if too small)
37 code_size2 = 24000 // simply increase if too small (assembler will crash if too small)
38 };
39
40 // CRC32 Intrinsics.
41 #define CRC32_COLUMN_SIZE 256
42 #define CRC32_BYFOUR
43 #ifdef CRC32_BYFOUR
44 #define CRC32_TABLES 8
45 #else
46 #define CRC32_TABLES 1
47 #endif
48
49 #define REVERSE_CRC32_POLY 0xEDB88320
50 #define REVERSE_CRC32C_POLY 0x82F63B78
51 #define INVERSE_REVERSE_CRC32_POLY 0x1aab14226ull
52 #define INVERSE_REVERSE_CRC32C_POLY 0x105fd79bdull
53 #define CRC32_UNROLL_FACTOR 2048
54 #define CRC32_UNROLL_FACTOR2 8
55
56
57 class ppc64 {
58 friend class StubGenerator;
59
60 private:
61
62 // CRC32 Intrinsics.
63 static juint _crc_table[CRC32_TABLES][CRC32_COLUMN_SIZE];
64 static juint _crc32c_table[CRC32_TABLES][CRC32_COLUMN_SIZE];
65 static juint *_crc_constants;
66 static juint *_crc32c_constants;
67
68 public:
69
70 // CRC32 Intrinsics.
71 static address crc_constants() { return (address)_crc_constants; }
72 static address crc32c_constants() { return (address)_crc32c_constants; }
73 static juint* generate_crc_constants(juint reverse_poly);
74 };
75
76 #endif // CPU_PPC_STUBROUTINES_PPC_HPP
|
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
24 */
25
26 #ifndef CPU_PPC_STUBROUTINES_PPC_HPP
27 #define CPU_PPC_STUBROUTINES_PPC_HPP
28
29 // This file holds the platform specific parts of the StubRoutines
30 // definition. See stubRoutines.hpp for a description on how to
31 // extend it.
32
33 static bool returns_to_call_stub(address return_pc) { return return_pc == _call_stub_return_address; }
34
35 enum platform_dependent_constants {
36 code_size1 = 20000, // simply increase if too small (assembler will crash if too small)
37 code_size2 = 24000 // simply increase if too small (assembler will crash if too small)
38 };
39
40 // CRC32 Intrinsics.
41 #define CRC32_TABLE_SIZE (4 * 256)
42 #define REVERSE_CRC32_POLY 0xEDB88320
43 #define REVERSE_CRC32C_POLY 0x82F63B78
44 #define INVERSE_REVERSE_CRC32_POLY 0x1aab14226ull
45 #define INVERSE_REVERSE_CRC32C_POLY 0x105fd79bdull
46 #define CRC32_UNROLL_FACTOR 2048
47 #define CRC32_UNROLL_FACTOR2 8
48
49 static address generate_crc_constants(juint reverse_poly);
50
51 #endif // CPU_PPC_STUBROUTINES_PPC_HPP
|