Line data Source code
1 1 : /* 2 : * Copyright (c) 2020 Intel Corporation. 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : /** 8 : * @file 9 : * @brief IA-32 specific gdbstub interface header 10 : */ 11 : 12 : #ifndef ZEPHYR_INCLUDE_ARCH_X86_GDBSTUB_SYS_H_ 13 : #define ZEPHYR_INCLUDE_ARCH_X86_GDBSTUB_SYS_H_ 14 : 15 : #ifndef _ASMLANGUAGE 16 : 17 : #include <stdint.h> 18 : #include <zephyr/toolchain.h> 19 : 20 : /** 21 : * @brief Number of register used by gdbstub in IA-32 22 : */ 23 1 : #define GDB_STUB_NUM_REGISTERS 16 24 : 25 : /** 26 : * @brief GDB interruption context 27 : * 28 : * The exception stack frame contents used by gdbstub. The contents 29 : * of this struct are used to display information about the current 30 : * cpu state. 31 : */ 32 : 33 1 : struct gdb_interrupt_ctx { 34 0 : uint32_t ss; 35 0 : uint32_t gs; 36 0 : uint32_t fs; 37 0 : uint32_t es; 38 0 : uint32_t ds; 39 0 : uint32_t edi; 40 0 : uint32_t esi; 41 0 : uint32_t ebp; 42 0 : uint32_t esp; 43 0 : uint32_t ebx; 44 0 : uint32_t edx; 45 0 : uint32_t ecx; 46 0 : uint32_t eax; 47 0 : uint32_t vector; 48 0 : uint32_t error_code; 49 0 : uint32_t eip; 50 0 : uint32_t cs; 51 0 : uint32_t eflags; 52 : } __packed; 53 : 54 : /** 55 : * @brief IA-32 register used in gdbstub 56 : */ 57 : 58 0 : enum GDB_REGISTER { 59 : GDB_EAX, 60 : GDB_ECX, 61 : GDB_EDX, 62 : GDB_EBX, 63 : GDB_ESP, 64 : GDB_EBP, 65 : GDB_ESI, 66 : GDB_EDI, 67 : GDB_PC, 68 : GDB_EFLAGS, 69 : GDB_CS, 70 : GDB_SS, 71 : GDB_DS, 72 : GDB_ES, 73 : GDB_FS, 74 : GDB_GS, 75 : GDB_ORIG_EAX = 41, 76 : }; 77 : 78 : struct gdb_ctx { 79 : unsigned int exception; 80 : unsigned int registers[GDB_STUB_NUM_REGISTERS]; 81 : }; 82 : 83 : #endif /* _ASMLANGUAGE */ 84 : 85 : #endif /* ZEPHYR_INCLUDE_ARCH_X86_GDBSTUB_SYS_H_ */