1 /* Copyright (C) 2021-2024 Free Software Foundation, Inc.
4 This file is part of GNU Binutils.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, 51 Franklin Street - Fifth Floor, Boston,
19 MA 02110-1301, USA. */
25 * Apropos Backtracking Scheme definitions.
26 * Class: com_sun_forte_st_mpmt_timeline_HWCEvent
29 /* ABS failure codes */
32 ABS_NULL
= 0x00, /* undefined/disabled/inactive */
33 ABS_UNSUPPORTED
= 0x01, /* inappropriate HWC event type */
34 ABS_BLOCKED
= 0x02, /* runtime backtrack blocker reached */
35 ABS_INCOMPLETE
= 0x03, /* runtime backtrack limit reached */
36 ABS_REG_LOSS
= 0x04, /* address register contaminated */
37 ABS_INVALID_EA
= 0x05, /* invalid effective address value */
38 ABS_NO_CTI_INFO
= 0x10, /* no AnalyzerInfo for validation */
39 ABS_INFO_FAILED
= 0x20, /* info failed to validate backtrack */
40 ABS_CTI_TARGET
= 0x30, /* CTI target invalidated backtrack */
41 ABS_CODE_RANGE
= 0xFF /* reserved ABS code range in Vaddr */
49 extern const char *ABS_RT_CODES
[NUM_ABS_RT_CODES
];
50 extern char *ABS_PP_CODES
[NUM_ABS_PP_CODES
];
52 /* libcollector will mark HWC overflow values that appear to be invalid */
53 /* dbe should check HWC values for errors */
54 #define HWCVAL_ERR_FLAG (1ULL<<63)
55 #define HWCVAL_SET_ERR(ctr) ((ctr) | HWCVAL_ERR_FLAG)
56 #define HWCVAL_HAS_ERR(ctr) (((ctr) & HWCVAL_ERR_FLAG) != 0)
57 #define HWCVAL_CLR_ERR(ctr) ((ctr) & ~HWCVAL_ERR_FLAG)
59 #define ABS_GET_RT_CODE(EA) ((EA) & 0x0FLL)
60 #define ABS_GET_PP_CODE(EA) (((EA) & 0xF0LL) / 0xF)