fetypes.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #define WIN32_OR_WIN64
00008
00009
#ifdef WIN32_OR_WIN64
00010 #define LX "%I64x"
00011 #define LD "%I64d"
00012
#else
00013
#define LX "%Lx"
00014
#define LD "%Ld"
00015
#endif
00016
00017
00018
00019
00020
00021
#ifndef WIN32_OR_WIN64
00022
#define CONST_FORMAT(num) num ## LL
00023
#else
00024 #define CONST_FORMAT(num) ((EM_uint64_t)(num))
00025
#endif
00026
00027
#ifndef _EM_TYPES_H
00028
#define _EM_TYPES_H
00029
00030
00031
00032 #define STATUS_EMULATION_FAULT 0x0E0010000
00033 #define STATUS_EMULATION_TRAP 0x0E0020000
00034
00035
00036 #define LITTLE_ENDIAN
00037
00038 #define MAX_REAL_GR_INDEX 1
00039 #define MAX_REAL_FR_INDEX 128
00040
00041 #define EM_NUM_PR 64
00042 #define EM_NUM_MEM 1
00043
00044
00045
#ifndef INLINE
00046
#define INLINE
00047
#endif
00048
00049
#if !(defined(BIG_ENDIAN) || defined(LITTLE_ENDIAN))
00050
#error Endianness not established; define BIG_ENDIAN or LITTLE_ENDIAN
00051
#endif
00052
00053
00054
00055
00056
00057
00058
00059 typedef int EM_int_t;
00060 typedef unsigned int EM_uint_t;
00061
00062 typedef short EM_short_t;
00063 typedef unsigned short EM_ushort_t;
00064
00065 typedef unsigned int EM_boolean_t;
00066
00067
#ifdef WIN32_OR_WIN64
00068 typedef __int64
EM_int64_t;
00069 typedef unsigned __int64
EM_uint64_t;
00070
00071
#else
00072
00073
00074
#ifndef unix
00075
typedef long long EM_int64_t;
00076
typedef unsigned long long EM_uint64_t;
00077
#else
00078
00079
typedef long EM_int64_t;
00080
typedef unsigned long EM_uint64_t;
00081
#endif
00082
00083
#endif
00084
00085
00086
00087
00088
00089 typedef void (*
FP_EXCP_FAULT)(
void*,
EM_uint_t);
00090 typedef void (*
FP_EXCP_TRAP)(
void*,
EM_uint_t);
00091 typedef void (*
FP_EXCP_SPEC)(
void*,
EM_uint_t,
EM_uint64_t);
00092
00093
00094 typedef struct uint128_struct {
00095
#ifdef BIG_ENDIAN
00096
EM_uint64_t hi;
00097
EM_uint64_t lo;
00098
#endif
00099
#ifdef LITTLE_ENDIAN
00100 EM_uint64_t lo;
00101 EM_uint64_t hi;
00102
#endif
00103
}
EM_uint128_t;
00104
00105 typedef struct uint256_struct {
00106
#ifdef BIG_ENDIAN
00107
EM_uint64_t hh;
00108
EM_uint64_t hl;
00109
EM_uint64_t lh;
00110
EM_uint64_t ll;
00111
#endif
00112
#ifdef LITTLE_ENDIAN
00113 EM_uint64_t ll;
00114 EM_uint64_t lh;
00115 EM_uint64_t hl;
00116 EM_uint64_t hh;
00117
#endif
00118
}
EM_uint256_t;
00119
00120
00121
00122
00123
00124 typedef enum {
00125
pr_00 = 0,
pr_01 = 1,
pr_02 = 2,
pr_03 = 3,
00126
pr_04 = 4,
pr_05 = 5,
pr_06 = 6,
pr_07 = 7,
00127
pr_08 = 8,
pr_09 = 9,
pr_10 = 10,
pr_11 = 11,
00128
pr_12 = 12,
pr_13 = 13,
pr_14 = 14,
pr_15 = 15,
00129
00130
pr_16 = 16,
pr_17 = 17,
pr_18 = 18,
pr_19 = 19,
00131
pr_20 = 20,
pr_21 = 21,
pr_22 = 22,
pr_23 = 23,
00132
pr_24 = 24,
pr_25 = 25,
pr_26 = 26,
pr_27 = 27,
00133
pr_28 = 28,
pr_29 = 29,
pr_30 = 30,
pr_31 = 31,
00134
pr_32 = 32,
pr_33 = 33,
pr_34 = 34,
pr_35 = 35,
00135
pr_36 = 36,
pr_37 = 37,
pr_38 = 38,
pr_39 = 39,
00136
pr_40 = 40,
pr_41 = 41,
pr_42 = 42,
pr_43 = 43,
00137
pr_44 = 44,
pr_45 = 45,
pr_46 = 46,
pr_47 = 47,
00138
pr_48 = 48,
pr_49 = 49,
pr_50 = 50,
pr_51 = 51,
00139
pr_52 = 52,
pr_53 = 53,
pr_54 = 54,
pr_55 = 55,
00140
pr_56 = 56,
pr_57 = 57,
pr_58 = 58,
pr_59 = 59,
00141
pr_60 = 60,
pr_61 = 61,
pr_62 = 62,
pr_63 = 63
00142 }
EM_pred_reg_specifier;
00143
00144 typedef enum {
00145
gr_000 = 0,
gr_001 = 1,
gr_002 = 2,
gr_003 = 3,
00146
gr_004 = 4,
gr_005 = 5,
gr_006 = 6,
gr_007 = 7,
00147
gr_008 = 8,
gr_009 = 9,
gr_010 = 10,
gr_011 = 11,
00148
gr_012 = 12,
gr_013 = 13,
gr_014 = 14,
gr_015 = 15,
00149
gr_016 = 16,
gr_017 = 17,
gr_018 = 18,
gr_019 = 19,
00150
gr_020 = 20,
gr_021 = 21,
gr_022 = 22,
gr_023 = 23,
00151
gr_024 = 24,
gr_025 = 25,
gr_026 = 26,
gr_027 = 27,
00152
gr_028 = 28,
gr_029 = 29,
gr_030 = 30,
gr_031 = 31,
00153
00154
gr_032 = 32,
gr_033 = 33,
gr_034 = 34,
gr_035 = 35,
00155
gr_036 = 36,
gr_037 = 37,
gr_038 = 38,
gr_039 = 39,
00156
gr_040 = 40,
gr_041 = 41,
gr_042 = 42,
gr_043 = 43,
00157
gr_044 = 44,
gr_045 = 45,
gr_046 = 46,
gr_047 = 47,
00158
gr_048 = 48,
gr_049 = 49,
gr_050 = 50,
gr_051 = 51,
00159
gr_052 = 52,
gr_053 = 53,
gr_054 = 54,
gr_055 = 55,
00160
gr_056 = 56,
gr_057 = 57,
gr_058 = 58,
gr_059 = 59,
00161
gr_060 = 60,
gr_061 = 61,
gr_062 = 62,
gr_063 = 63,
00162
gr_064 = 64,
gr_065 = 65,
gr_066 = 66,
gr_067 = 67,
00163
gr_068 = 68,
gr_069 = 69,
gr_070 = 70,
gr_071 = 71,
00164
gr_072 = 72,
gr_073 = 73,
gr_074 = 74,
gr_075 = 75,
00165
gr_076 = 76,
gr_077 = 77,
gr_078 = 78,
gr_079 = 79,
00166
gr_080 = 80,
gr_081 = 81,
gr_082 = 82,
gr_083 = 83,
00167
gr_084 = 84,
gr_085 = 85,
gr_086 = 86,
gr_087 = 87,
00168
gr_088 = 88,
gr_089 = 89,
gr_090 = 90,
gr_091 = 91,
00169
gr_092 = 92,
gr_093 = 93,
gr_094 = 94,
gr_095 = 95,
00170
gr_096 = 96,
gr_097 = 97,
gr_098 = 98,
gr_099 = 99,
00171
gr_100 = 100,
gr_101 = 101,
gr_102 = 102,
gr_103 = 103,
00172
gr_104 = 104,
gr_105 = 105,
gr_106 = 106,
gr_107 = 107,
00173
gr_108 = 108,
gr_109 = 109,
gr_110 = 110,
gr_111 = 111,
00174
gr_112 = 112,
gr_113 = 113,
gr_114 = 114,
gr_115 = 115,
00175
gr_116 = 116,
gr_117 = 117,
gr_118 = 118,
gr_119 = 119,
00176
gr_120 = 120,
gr_121 = 121,
gr_122 = 122,
gr_123 = 123,
00177
gr_124 = 124,
gr_125 = 125,
gr_126 = 126,
gr_127 = 127
00178 }
EM_general_register_specifier;
00179
00180
00181 typedef enum {
00182
fr_000 = 0,
fr_001 = 1,
fr_002 = 2,
fr_003 = 3,
00183
fr_004 = 4,
fr_005 = 5,
fr_006 = 6,
fr_007 = 7,
00184
fr_008 = 8,
fr_009 = 9,
fr_010 = 10,
fr_011 = 11,
00185
fr_012 = 12,
fr_013 = 13,
fr_014 = 14,
fr_015 = 15,
00186
fr_016 = 16,
fr_017 = 17,
fr_018 = 18,
fr_019 = 19,
00187
fr_020 = 20,
fr_021 = 21,
fr_022 = 22,
fr_023 = 23,
00188
fr_024 = 24,
fr_025 = 25,
fr_026 = 26,
fr_027 = 27,
00189
fr_028 = 28,
fr_029 = 29,
fr_030 = 30,
fr_031 = 31,
00190
00191
fr_032 = 32,
fr_033 = 33,
fr_034 = 34,
fr_035 = 35,
00192
fr_036 = 36,
fr_037 = 37,
fr_038 = 38,
fr_039 = 39,
00193
fr_040 = 40,
fr_041 = 41,
fr_042 = 42,
fr_043 = 43,
00194
fr_044 = 44,
fr_045 = 45,
fr_046 = 46,
fr_047 = 47,
00195
fr_048 = 48,
fr_049 = 49,
fr_050 = 50,
fr_051 = 51,
00196
fr_052 = 52,
fr_053 = 53,
fr_054 = 54,
fr_055 = 55,
00197
fr_056 = 56,
fr_057 = 57,
fr_058 = 58,
fr_059 = 59,
00198
fr_060 = 60,
fr_061 = 61,
fr_062 = 62,
fr_063 = 63,
00199
fr_064 = 64,
fr_065 = 65,
fr_066 = 66,
fr_067 = 67,
00200
fr_068 = 68,
fr_069 = 69,
fr_070 = 70,
fr_071 = 71,
00201
fr_072 = 72,
fr_073 = 73,
fr_074 = 74,
fr_075 = 75,
00202
fr_076 = 76,
fr_077 = 77,
fr_078 = 78,
fr_079 = 79,
00203
fr_080 = 80,
fr_081 = 81,
fr_082 = 82,
fr_083 = 83,
00204
fr_084 = 84,
fr_085 = 85,
fr_086 = 86,
fr_087 = 87,
00205
fr_088 = 88,
fr_089 = 89,
fr_090 = 90,
fr_091 = 91,
00206
fr_092 = 92,
fr_093 = 93,
fr_094 = 94,
fr_095 = 95,
00207
fr_096 = 96,
fr_097 = 97,
fr_098 = 98,
fr_099 = 99,
00208
fr_100 = 100,
fr_101 = 101,
fr_102 = 102,
fr_103 = 103,
00209
fr_104 = 104,
fr_105 = 105,
fr_106 = 106,
fr_107 = 107,
00210
fr_108 = 108,
fr_109 = 109,
fr_110 = 110,
fr_111 = 111,
00211
fr_112 = 112,
fr_113 = 113,
fr_114 = 114,
fr_115 = 115,
00212
fr_116 = 116,
fr_117 = 117,
fr_118 = 118,
fr_119 = 119,
00213
fr_120 = 120,
fr_121 = 121,
fr_122 = 122,
fr_123 = 123,
00214
fr_124 = 124,
fr_125 = 125,
fr_126 = 126,
fr_127 = 127
00215 }
EM_fp_reg_specifier;
00216
00217 typedef enum {
00218
mem_real_form = 0,
00219
mem_integer_form = 1
00220 }
EM_mem_fr_format_type;
00221
00222
00223 typedef enum {
00224
pc_s = 0,
00225
pc_d = 2,
00226
pc_sf = 3,
00227
pc_none = 4,
00228
pc_simd = 5
00229 }
EM_opcode_pc_type;
00230
00231 typedef enum {
00232
sfS0 = 0,
00233
sfS1 = 1,
00234
sfS2 = 2,
00235
sfS3 = 3,
00236
sf_none = 4
00237 }
EM_opcode_sf_type;
00238
00239 typedef enum {
00240
fctypeUNC = 0,
00241
ctype_or = 1,
00242
ctype_and = 2,
00243
ctype_or_andcm = 3,
00244
ctype_orcm = 4,
00245
ctype_andcm = 5,
00246
ctype_and_orcm = 6,
00247
ctype_none = 7
00248 }
EM_opcode_ctype_type;
00249
00250 typedef enum {
00251
crel_eq = 0,
00252
crel_ne = 1,
00253
crel_lt = 2,
00254
crel_le = 3,
00255
crel_gt = 4,
00256
crel_ge = 5,
00257
crel_ltu = 6,
00258
crel_leu = 7,
00259
crel_gtu = 8,
00260
crel_geu = 9
00261 }
EM_opcode_crel_type;
00262
00263
00264 typedef enum {
00265
fcrel_nm = 0,
00266
fcrel_m = 1
00267 }
EM_opcode_fcrel_type;
00268
00269 typedef enum {
00270
frelEQ = 0,
00271
frelLT = 1,
00272
frelLE = 2,
00273
frelUNORD = 3,
00274
frelNEQ = 4,
00275
frelNLT = 5,
00276
frelNLE = 6,
00277
frelORD = 7,
00278
frelGT = 8,
00279
frelGE = 9,
00280
frelNGT = 10,
00281
frelNGE = 11
00282 }
EM_opcode_frel_type;
00283
00284 typedef enum {
00285
sf_single = 0,
00286
SF_PC_RESERVED = 1,
00287
sf_double = 2,
00288
sf_double_extended = 3
00289 }
EM_sf_pc_type;
00290
00291 typedef enum {
00292
rc_rn = 0,
00293
rc_rm = 1,
00294
rc_rp = 2,
00295
rc_rz = 3
00296 }
EM_sf_rc_type;
00297
00298 typedef enum {
00299
ar_fpsr = 0
00300 }
EM_ar_index;
00301
00302 typedef enum {
00303
high = 1,
00304
low = 0
00305 }
EM_simd_hilo;
00306
00307 typedef enum {
00308
op_fcmp = 0,
00309
op_fpcmp = 1,
00310
op_fcvt_fx = 2,
00311
op_fpcvt_fx = 3,
00312
op_fcvt_fxu = 4,
00313
op_fpcvt_fxu = 5,
00314
op_fma = 6,
00315
op_fpma = 7,
00316
op_fminmax = 8,
00317
op_fpminmax = 9,
00318
op_fms_fnma = 10,
00319
op_fpms_fpnma = 11,
00320
op_frcpa = 12,
00321
op_fprcpa = 13,
00322
op_frsqrta = 14,
00323
op_fprsqrta = 15,
00324
op_fnorm = 16,
00325
op_fsetc = 17
00326 }
EM_opcode_type;
00327
00328
00329 typedef struct EM_limits_check_fprcpa_struct {
00330 EM_uint_t hi_fr3;
00331 EM_uint_t hi_fr2_or_quot;
00332 EM_uint_t lo_fr3;
00333 EM_uint_t lo_fr2_or_quot;
00334 }
EM_limits_check_fprcpa;
00335
00336 typedef struct EM_limits_check_fprsqrta_struct {
00337 EM_uint_t hi;
00338 EM_uint_t lo;
00339 }
EM_limits_check_fprsqrta;
00340
00341
00342
00343
00344
00345
00346 typedef struct trap_control_struct {
00347 EM_uint_t vd:1;
00348 EM_uint_t dd:1;
00349 EM_uint_t zd:1;
00350 EM_uint_t od:1;
00351 EM_uint_t ud:1;
00352 EM_uint_t id:1;
00353 }
EM_trap_control_type;
00354
00355 typedef enum {
00356
ss_single_24 = 24,
00357
ss_double_53 = 53,
00358
ss_double_extended_64 = 64
00359 }
EM_significand_size_type;
00360
00361 typedef enum {
00362
es_eight_bits = 8,
00363
es_eleven_bits = 11,
00364
es_fifteen_bits = 15,
00365
es_seventeen_bits = 17
00366 }
EM_exponent_size_type;
00367
00368 typedef struct controls_struct {
00369 EM_uint_t ftz:1;
00370 EM_uint_t wre:1;
00371 EM_sf_pc_type pc;
00372 EM_sf_rc_type rc;
00373 EM_uint_t td:1;
00374 }
EM_controls_type;
00375
00376 typedef struct flags_struct {
00377 EM_uint_t v:1;
00378 EM_uint_t d:1;
00379 EM_uint_t z:1;
00380 EM_uint_t o:1;
00381 EM_uint_t un:1;
00382 EM_uint_t i:1;
00383 }
EM_flags_type;
00384
00385 typedef struct tmp_fp_env_struct {
00386 long dummy;
00387 EM_trap_control_type controls;
00388 EM_significand_size_type ss;
00389 EM_exponent_size_type es;
00390
00391 EM_sf_rc_type rc;
00392 EM_uint_t ftz:1;
00393
00394 EM_flags_type flags;
00395 EM_flags_type hi_flags;
00396 EM_flags_type lo_flags;
00397
00398 EM_uint_t ebc:1;
00399 EM_uint_t fpa:1;
00400 EM_uint_t hi_fpa:1;
00401 EM_uint_t lo_fpa:1;
00402 EM_uint_t mdl:1;
00403 EM_uint_t mdh:1;
00404 EM_uint_t simd:1;
00405
00406 struct em_faults_struct {
00407 EM_uint_t v:1;
00408 EM_uint_t d:1;
00409 EM_uint_t z:1;
00410 EM_uint_t swa:1;
00411 }
em_faults;
00412 struct hi_faults_struct {
00413 EM_uint_t v:1;
00414 EM_uint_t d:1;
00415 EM_uint_t z:1;
00416 EM_uint_t swa:1;
00417 }
hi_faults;
00418 struct lo_faults_struct {
00419 EM_uint_t v:1;
00420 EM_uint_t d:1;
00421 EM_uint_t z:1;
00422 EM_uint_t swa:1;
00423 }
lo_faults;
00424
00425 struct em_traps_struct {
00426 EM_uint_t o:1;
00427 EM_uint_t un:1;
00428 EM_uint_t i:1;
00429 }
em_traps;
00430 struct hi_traps_struct {
00431 EM_uint_t o:1;
00432 EM_uint_t un:1;
00433 EM_uint_t i:1;
00434 }
hi_traps;
00435 struct lo_traps_struct {
00436 EM_uint_t o:1;
00437 EM_uint_t un:1;
00438 EM_uint_t i:1;
00439 }
lo_traps;
00440 }
EM_tmp_fp_env_type;
00441
00442 typedef struct fp_dp_struct {
00443 EM_uint_t sticky:1;
00444 EM_uint128_t significand;
00445 EM_uint_t exponent:19;
00446 EM_uint_t sign:1;
00447 }
EM_fp_dp_type;
00448
00449
00450
00451
00452
00453 typedef struct gr_reg_struct {
00454 EM_uint64_t value;
00455 EM_uint_t nat:1;
00456 }
EM_gr_reg_type;
00457
00458 typedef struct fp_reg_struct {
00459 EM_uint64_t significand;
00460 EM_uint_t exponent:17;
00461 EM_uint_t sign:1;
00462 }
EM_fp_reg_type;
00463
00464 typedef struct pair_fp_reg_struct {
00465 EM_fp_reg_type hi;
00466 EM_fp_reg_type lo;
00467 }
EM_pair_fp_reg_type;
00468
00469 typedef struct sf_struct {
00470 EM_controls_type controls;
00471 EM_flags_type flags;
00472 }
EM_sf_type;
00473
00474 typedef struct cfm_struct {
00475
#ifdef BIG_ENDIAN
00476
EM_uint_t reserved :26;
00477
EM_uint_t rrb_pr : 6;
00478
EM_uint_t sof : 7;
00479
EM_uint_t sol : 7;
00480
EM_uint_t sor : 4;
00481
EM_uint_t rrb_gr : 7;
00482
EM_uint_t rrb_fr : 7;
00483
#endif
00484
#ifdef LITTLE_ENDIAN
00485 EM_uint_t rrb_fr : 7;
00486 EM_uint_t rrb_gr : 7;
00487 EM_uint_t sor : 4;
00488 EM_uint_t sol : 7;
00489 EM_uint_t sof : 7;
00490 EM_uint_t rrb_pr : 6;
00491 EM_uint_t reserved :26;
00492
#endif
00493
}
EM_cfm_type;
00494
00495 typedef struct fpsr_struct {
00496
#ifdef BIG_ENDIAN
00497
EM_uint_t reserved : 6;
00498
EM_uint_t sf3_flags_i : 1;
00499
EM_uint_t sf3_flags_u : 1;
00500
EM_uint_t sf3_flags_o : 1;
00501
EM_uint_t sf3_flags_z : 1;
00502
EM_uint_t sf3_flags_d : 1;
00503
EM_uint_t sf3_flags_v : 1;
00504
EM_uint_t sf3_controls_td : 1;
00505
EM_uint_t sf3_controls_rc : 2;
00506
EM_uint_t sf3_controls_pc : 2;
00507
EM_uint_t sf3_controls_wre : 1;
00508
EM_uint_t sf3_controls_ftz : 1;
00509
EM_uint_t sf2_flags_i : 1;
00510
EM_uint_t sf2_flags_u : 1;
00511
EM_uint_t sf2_flags_o : 1;
00512
EM_uint_t sf2_flags_z : 1;
00513
EM_uint_t sf2_flags_d : 1;
00514
EM_uint_t sf2_flags_v : 1;
00515
EM_uint_t sf2_controls_td : 1;
00516
EM_uint_t sf2_controls_rc : 2;
00517
EM_uint_t sf2_controls_pc : 2;
00518
EM_uint_t sf2_controls_wre : 1;
00519
EM_uint_t sf2_controls_ftz : 1;
00520
EM_uint_t sf1_flags_i : 1;
00521
EM_uint_t sf1_flags_u : 1;
00522
EM_uint_t sf1_flags_o : 1;
00523
EM_uint_t sf1_flags_z : 1;
00524
EM_uint_t sf1_flags_d : 1;
00525
EM_uint_t sf1_flags_v : 1;
00526
EM_uint_t sf1_controls_td : 1;
00527
EM_uint_t sf1_controls_rc : 2;
00528
EM_uint_t sf1_controls_pc : 2;
00529
EM_uint_t sf1_controls_wre : 1;
00530
EM_uint_t sf1_controls_ftz : 1;
00531
EM_uint_t sf0_flags_i : 1;
00532
EM_uint_t sf0_flags_u : 1;
00533
EM_uint_t sf0_flags_o : 1;
00534
EM_uint_t sf0_flags_z : 1;
00535
EM_uint_t sf0_flags_d : 1;
00536
EM_uint_t sf0_flags_v : 1;
00537
EM_uint_t sf0_controls_td : 1;
00538
EM_uint_t sf0_controls_rc : 2;
00539
EM_uint_t sf0_controls_pc : 2;
00540
EM_uint_t sf0_controls_wre : 1;
00541
EM_uint_t sf0_controls_ftz : 1;
00542
EM_uint_t traps_id : 1;
00543
EM_uint_t traps_ud : 1;
00544
EM_uint_t traps_od : 1;
00545
EM_uint_t traps_zd : 1;
00546
EM_uint_t traps_dd : 1;
00547
EM_uint_t traps_vd : 1;
00548
#endif
00549
#ifdef LITTLE_ENDIAN
00550 EM_uint_t traps_vd : 1;
00551 EM_uint_t traps_dd : 1;
00552 EM_uint_t traps_zd : 1;
00553 EM_uint_t traps_od : 1;
00554 EM_uint_t traps_ud : 1;
00555 EM_uint_t traps_id : 1;
00556 EM_uint_t sf0_controls_ftz : 1;
00557 EM_uint_t sf0_controls_wre : 1;
00558 EM_uint_t sf0_controls_pc : 2;
00559 EM_uint_t sf0_controls_rc : 2;
00560 EM_uint_t sf0_controls_td : 1;
00561 EM_uint_t sf0_flags_v : 1;
00562 EM_uint_t sf0_flags_d : 1;
00563 EM_uint_t sf0_flags_z : 1;
00564 EM_uint_t sf0_flags_o : 1;
00565 EM_uint_t sf0_flags_u : 1;
00566 EM_uint_t sf0_flags_i : 1;
00567 EM_uint_t sf1_controls_ftz : 1;
00568 EM_uint_t sf1_controls_wre : 1;
00569 EM_uint_t sf1_controls_pc : 2;
00570 EM_uint_t sf1_controls_rc : 2;
00571 EM_uint_t sf1_controls_td : 1;
00572 EM_uint_t sf1_flags_v : 1;
00573 EM_uint_t sf1_flags_d : 1;
00574 EM_uint_t sf1_flags_z : 1;
00575 EM_uint_t sf1_flags_o : 1;
00576 EM_uint_t sf1_flags_u : 1;
00577 EM_uint_t sf1_flags_i : 1;
00578 EM_uint_t sf2_controls_ftz : 1;
00579 EM_uint_t sf2_controls_wre : 1;
00580 EM_uint_t sf2_controls_pc : 2;
00581 EM_uint_t sf2_controls_rc : 2;
00582 EM_uint_t sf2_controls_td : 1;
00583 EM_uint_t sf2_flags_v : 1;
00584 EM_uint_t sf2_flags_d : 1;
00585 EM_uint_t sf2_flags_z : 1;
00586 EM_uint_t sf2_flags_o : 1;
00587 EM_uint_t sf2_flags_u : 1;
00588 EM_uint_t sf2_flags_i : 1;
00589 EM_uint_t sf3_controls_ftz : 1;
00590 EM_uint_t sf3_controls_wre : 1;
00591 EM_uint_t sf3_controls_pc : 2;
00592 EM_uint_t sf3_controls_rc : 2;
00593 EM_uint_t sf3_controls_td : 1;
00594 EM_uint_t sf3_flags_v : 1;
00595 EM_uint_t sf3_flags_d : 1;
00596 EM_uint_t sf3_flags_z : 1;
00597 EM_uint_t sf3_flags_o : 1;
00598 EM_uint_t sf3_flags_u : 1;
00599 EM_uint_t sf3_flags_i : 1;
00600 EM_uint_t reserved : 6;
00601
#endif
00602
}
EM_fpsr_type;
00603
00604
00605 typedef struct psr_struct {
00606
#ifdef BIG_ENDIAN
00607
EM_uint_t reserved_field_4:19;
00608
EM_uint_t bn:1;
00609
EM_uint_t ed:1;
00610
EM_uint_t ri:2;
00611
EM_uint_t ss:1;
00612
EM_uint_t dd:1;
00613
EM_uint_t da:1;
00614
EM_uint_t id:1;
00615
EM_uint_t it:1;
00616
EM_uint_t mc:1;
00617
EM_uint_t is:1;
00618
EM_uint_t cpl:2;
00619
EM_uint_t reserved_field_3:4;
00620
EM_uint_t rt:1;
00621
EM_uint_t tb:1;
00622
EM_uint_t lp:1;
00623
EM_uint_t db:1;
00624
EM_uint_t si:1;
00625
EM_uint_t di:1;
00626
EM_uint_t pp:1;
00627
EM_uint_t sp:1;
00628
EM_uint_t dfh:1;
00629
EM_uint_t dfl:1;
00630
EM_uint_t dt:1;
00631
EM_uint_t reserved_field_2:1;
00632
EM_uint_t pk:1;
00633
EM_uint_t i:1;
00634
EM_uint_t ic:1;
00635
EM_uint_t reserved_field_1:7;
00636
EM_uint_t mfh:1;
00637
EM_uint_t mfl:1;
00638
EM_uint_t ac:1;
00639
EM_uint_t up:1;
00640
EM_uint_t be:1;
00641
EM_uint_t or:1;
00642
#endif
00643
#ifdef LITTLE_ENDIAN
00644 EM_uint_t or:1;
00645 EM_uint_t be:1;
00646 EM_uint_t up:1;
00647 EM_uint_t ac:1;
00648 EM_uint_t mfl:1;
00649 EM_uint_t mfh:1;
00650 EM_uint_t reserved_field_1:7;
00651 EM_uint_t ic:1;
00652 EM_uint_t i:1;
00653 EM_uint_t pk:1;
00654 EM_uint_t reserved_field_2:1;
00655 EM_uint_t dt:1;
00656 EM_uint_t dfl:1;
00657 EM_uint_t dfh:1;
00658 EM_uint_t sp:1;
00659 EM_uint_t pp:1;
00660 EM_uint_t di:1;
00661 EM_uint_t si:1;
00662 EM_uint_t db:1;
00663 EM_uint_t lp:1;
00664 EM_uint_t tb:1;
00665 EM_uint_t rt:1;
00666 EM_uint_t reserved_field_3:4;
00667 EM_uint_t cpl:2;
00668 EM_uint_t is:1;
00669 EM_uint_t mc:1;
00670 EM_uint_t it:1;
00671 EM_uint_t id:1;
00672 EM_uint_t da:1;
00673 EM_uint_t dd:1;
00674 EM_uint_t ss:1;
00675 EM_uint_t ri:2;
00676 EM_uint_t ed:1;
00677 EM_uint_t bn:1;
00678 EM_uint_t reserved_field_4:19;
00679
#endif
00680
}
EM_psr_type;
00681
00682 typedef union ar_union {
00683 EM_fpsr_type fpsr;
00684 EM_uint64_t uint_value;
00685 }
EM_ar_type;
00686
00687
00688
00689
00690
00691 typedef union memory_union {
00692 struct int_8_struct {
00693 EM_int_t ivalue:8;
00694 }
int_8;
00695 struct int_16_struct {
00696 EM_int_t ivalue:16;
00697 }
int_16;
00698 struct int_32_struct {
00699 EM_int_t ivalue:32;
00700 }
int_32;
00701 struct int_64_struct {
00702 EM_int64_t ivalue;
00703 }
int_64;
00704 struct uint_8_struct {
00705 EM_uint_t uvalue:8;
00706 }
uint_8;
00707 struct uint_16_struct {
00708 EM_uint_t uvalue:16;
00709 }
uint_16;
00710 struct uint_32_struct {
00711 EM_uint_t uvalue:32;
00712 }
uint_32;
00713 struct uint_64_struct {
00714 EM_uint64_t uvalue;
00715 }
uint_64;
00716 struct c_float_struct {
00717 float fvalue;
00718 }
c_float;
00719 struct c_double_struct {
00720 double fvalue;
00721 }
c_double;
00722 struct c_long_double_struct {
00723 long double fvalue;
00724 }
c_long_double;
00725
00726 struct fp_single_struct {
00727
#ifdef BIG_ENDIAN
00728
EM_uint_t sign:1;
00729
EM_uint_t exponent:8;
00730
EM_uint_t significand:23;
00731
#endif
00732
#ifdef LITTLE_ENDIAN
00733 EM_uint_t significand:23;
00734 EM_uint_t exponent:8;
00735 EM_uint_t sign:1;
00736
#endif
00737
}
fp_single;
00738
00739 struct fp_double_struct {
00740
#ifdef BIG_ENDIAN
00741
EM_uint_t sign:1;
00742
EM_uint_t exponent:11;
00743
EM_uint_t significand_hi:20;
00744
EM_uint_t significand_lo:32;
00745
#endif
00746
#ifdef LITTLE_ENDIAN
00747 EM_uint_t significand_lo:32;
00748 EM_uint_t significand_hi:20;
00749 EM_uint_t exponent:11;
00750 EM_uint_t sign:1;
00751
00752
#endif
00753
}
fp_double;
00754
00755 struct fp_double_extended_struct {
00756
#ifdef BIG_ENDIAN
00757
EM_uint_t sign:1;
00758
EM_uint_t exponent:15;
00759
EM_ushort_t significand[4];
00760
#endif
00761
#ifdef LITTLE_ENDIAN
00762 EM_ushort_t significand[4];
00763 EM_uint_t exponent:15;
00764 EM_uint_t sign:1;
00765
#endif
00766
}
fp_double_extended;
00767
00768 struct fp_spill_fill_struct {
00769
#ifdef BIG_ENDIAN
00770
EM_uint_t reserved2:32;
00771
EM_uint_t reserved1:14;
00772
EM_uint_t sign:1;
00773
EM_uint_t exponent:17;
00774
EM_uint64_t significand;
00775
#endif
00776
#ifdef LITTLE_ENDIAN
00777 EM_uint64_t significand;
00778 EM_uint_t exponent:17;
00779 EM_uint_t sign:1;
00780 EM_uint_t reserved1:14;
00781 EM_uint_t reserved2:32;
00782
#endif
00783
}
fp_spill_fill;
00784
00785
00786 struct uint_32_pair_struct {
00787
#ifdef BIG_ENDIAN
00788
EM_uint_t hi:32;
00789
EM_uint_t lo:32;
00790
#endif
00791
#ifdef LITTLE_ENDIAN
00792 EM_uint_t lo:32;
00793 EM_uint_t hi:32;
00794
#endif
00795
}
uint_32_pair;
00796 struct uint_64_pair_struct {
00797
#ifdef BIG_ENDIAN
00798
EM_uint64_t hi;
00799
EM_uint64_t lo;
00800
#endif
00801
#ifdef LITTLE_ENDIAN
00802 EM_uint64_t lo;
00803 EM_uint64_t hi;
00804
#endif
00805
}
uint_64_pair;
00806
00807 }
EM_memory_type;
00808
00809 typedef struct EM_form_struct {
00810 EM_boolean_t advanced_form;
00811 EM_boolean_t clear_form;
00812 EM_boolean_t double_form;
00813 EM_boolean_t exponent_form;
00814
00815 EM_boolean_t fp82_floating_form;
00816 EM_boolean_t fcheck_branch_implemented;
00817 EM_boolean_t general_form;
00818 EM_boolean_t data_form;
00819 EM_boolean_t control_form;
00820 EM_boolean_t high_form;
00821 EM_boolean_t high_unsigned_form;
00822
00823 EM_boolean_t low_form;
00824 EM_boolean_t mix_l_form;
00825 EM_boolean_t mix_r_form;
00826 EM_boolean_t mix_lr_form;
00827
00828 EM_boolean_t neg_sign_form;
00829 EM_boolean_t no_clear_form;
00830 EM_boolean_t pack_form;
00831
00832 EM_boolean_t no_base_update_form;
00833 EM_boolean_t immediate_base_update_form;
00834 EM_boolean_t register_base_update_form;
00835
00836 EM_boolean_t sign_form;
00837 EM_boolean_t sign_exp_form;
00838 EM_boolean_t signed_form;
00839 EM_boolean_t significand_form;
00840 EM_boolean_t single_form;
00841 EM_boolean_t spill_form;
00842 EM_boolean_t swap_form;
00843 EM_boolean_t swap_nl_form;
00844 EM_boolean_t swap_nr_form;
00845 EM_boolean_t sxt_l_form;
00846 EM_boolean_t sxt_r_form;
00847
00848 EM_boolean_t trunc_form;
00849 EM_boolean_t unsigned_form;
00850 }
EM_form_type;
00851
00852 typedef void (*EM_EXCP_FAULT)(
void*,
EM_uint_t);
00853 typedef void (*EM_EXCP_TRAP)(
void*,
EM_uint_t);
00854 typedef void (*
EM_EXCP_SPEC)(
void*,
EM_uint_t,
EM_uint64_t);
00855
00856
00857 typedef struct EM_state_struct {
00858 EM_psr_type state_PSR;
00859 EM_uint64_t state_IP;
00860 EM_ar_type state_AR[1];
00861 EM_fp_reg_type state_FR[
MAX_REAL_FR_INDEX];
00862 EM_gr_reg_type state_GR[
MAX_REAL_GR_INDEX];
00863 EM_boolean_t state_PR[
EM_NUM_PR];
00864 EM_memory_type state_MEM[
EM_NUM_MEM];
00865 EM_form_type state_form;
00866 EM_uint_t state_MERCED_RTL;
00867 EM_EXCP_FAULT state_fp82_fp_exception_fault;
00868 EM_EXCP_TRAP state_fp82_fp_exception_trap;
00869 void *
state_user_context;
00870 EM_uint_t trap_type;
00871 }
EM_state_type;
00872
00873
00874
#endif
00875
Generated on Sat May 15 19:40:00 2004 for test by
1.3.7