summaryrefslogtreecommitdiff
path: root/gprofng/src/ABS.h
diff options
context:
space:
mode:
Diffstat (limited to 'gprofng/src/ABS.h')
-rw-r--r--gprofng/src/ABS.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/gprofng/src/ABS.h b/gprofng/src/ABS.h
new file mode 100644
index 00000000000..a5bcbea16b6
--- /dev/null
+++ b/gprofng/src/ABS.h
@@ -0,0 +1,62 @@
+/* Copyright (C) 2021 Free Software Foundation, Inc.
+ Contributed by Oracle.
+
+ This file is part of GNU Binutils.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#ifndef _ABS_H
+#define _ABS_H
+
+/*
+ * Apropos Backtracking Scheme definitions.
+ * Class: com_sun_forte_st_mpmt_timeline_HWCEvent
+ */
+
+/* ABS failure codes */
+typedef enum
+{
+ ABS_NULL = 0x00, /* undefined/disabled/inactive */
+ ABS_UNSUPPORTED = 0x01, /* inappropriate HWC event type */
+ ABS_BLOCKED = 0x02, /* runtime backtrack blocker reached */
+ ABS_INCOMPLETE = 0x03, /* runtime backtrack limit reached */
+ ABS_REG_LOSS = 0x04, /* address register contaminated */
+ ABS_INVALID_EA = 0x05, /* invalid effective address value */
+ ABS_NO_CTI_INFO = 0x10, /* no AnalyzerInfo for validation */
+ ABS_INFO_FAILED = 0x20, /* info failed to validate backtrack */
+ ABS_CTI_TARGET = 0x30, /* CTI target invalidated backtrack */
+ ABS_CODE_RANGE = 0xFF /* reserved ABS code range in Vaddr */
+} ABS_code;
+
+enum {
+ NUM_ABS_RT_CODES = 7,
+ NUM_ABS_PP_CODES = 5
+};
+
+extern const char *ABS_RT_CODES[NUM_ABS_RT_CODES];
+extern char *ABS_PP_CODES[NUM_ABS_PP_CODES];
+
+/* libcollector will mark HWC overflow values that appear to be invalid */
+/* dbe should check HWC values for errors */
+#define HWCVAL_ERR_FLAG (1ULL<<63)
+#define HWCVAL_SET_ERR(ctr) ((ctr) | HWCVAL_ERR_FLAG)
+#define HWCVAL_HAS_ERR(ctr) ((ctr) & HWCVAL_ERR_FLAG ? 1 : 0)
+#define HWCVAL_CLR_ERR(ctr) ((ctr) & ~HWCVAL_ERR_FLAG)
+
+#define ABS_GET_RT_CODE(EA) ((EA) & 0x0FLL)
+#define ABS_GET_PP_CODE(EA) (((EA) & 0xF0LL) / 0xF)
+
+#endif /* _ABS_H */