LLDB mainline
AppleArm64ExceptionClass.h
Go to the documentation of this file.
1//===-- AppleArm64ExceptionClass.h ------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_TARGET_APPLEARM64EXCEPTIONCLASS_H
10#define LLDB_TARGET_APPLEARM64EXCEPTIONCLASS_H
11
12#include <cstdint>
13
14namespace lldb_private {
15
16enum class AppleArm64ExceptionClass : unsigned {
17#define APPLE_ARM64_EXCEPTION_CLASS(Name, Code) Name = Code,
18#include "AppleArm64ExceptionClass.def"
19};
20
21/// Get the Apple ARM64 exception class encoded within \p esr.
23 /*
24 * Exception Syndrome Register
25 *
26 * 31 26 25 24 0
27 * +------+--+------------------+
28 * | EC |IL| ISS |
29 * +------+--+------------------+
30 *
31 * EC - Exception Class
32 * IL - Instruction Length
33 * ISS - Instruction Specific Syndrome
34 */
35 return static_cast<AppleArm64ExceptionClass>(esr >> 26);
36}
37
38inline const char *toString(AppleArm64ExceptionClass EC) {
39 switch (EC) {
40#define APPLE_ARM64_EXCEPTION_CLASS(Name, Code) \
41 case AppleArm64ExceptionClass::Name: \
42 return #Name;
43#include "AppleArm64ExceptionClass.def"
44 }
45 return "Unknown Exception Class";
46}
47
48} // namespace lldb_private
49
50#endif // LLDB_TARGET_APPLEARM64EXCEPTIONCLASS_H
A class that represents a running process on the host machine.
AppleArm64ExceptionClass getAppleArm64ExceptionClass(uint32_t esr)
Get the Apple ARM64 exception class encoded within esr.
const char * toString(AppleArm64ExceptionClass EC)