From 4bd01b7fe94d81c670420e77ed7bd3cbc3e6caeb Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Sat, 26 Feb 2022 00:58:06 +0330 Subject: Kernel: Add support for SA_SIGINFO We currently don't really populate most of the fields, but that can wait :^) --- Kernel/Arch/mcontext.h | 15 ++++++++++++ Kernel/Arch/x86/mcontext.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 Kernel/Arch/mcontext.h create mode 100644 Kernel/Arch/x86/mcontext.h (limited to 'Kernel/Arch') diff --git a/Kernel/Arch/mcontext.h b/Kernel/Arch/mcontext.h new file mode 100644 index 0000000000..ee62f487bd --- /dev/null +++ b/Kernel/Arch/mcontext.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2022, the SerenityOS developers. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +#if ARCH(X86_64) || ARCH(I386) +# include +#elif ARCH(AARCH64) +# error "Unknown architecture" +#endif diff --git a/Kernel/Arch/x86/mcontext.h b/Kernel/Arch/x86/mcontext.h new file mode 100644 index 0000000000..a01376ef98 --- /dev/null +++ b/Kernel/Arch/x86/mcontext.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2022, the SerenityOS developers. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct __attribute__((packed)) __mcontext { +#if ARCH(I386) + uint32_t eax; + uint32_t ecx; + uint32_t edx; + uint32_t ebx; + uint32_t esp; + uint32_t ebp; + uint32_t esi; + uint32_t edi; + uint32_t eip; + uint32_t eflags; +#else + uint64_t rax; + uint64_t rcx; + uint64_t rdx; + uint64_t rbx; + uint64_t rsp; + uint64_t rbp; + uint64_t rsi; + uint64_t rdi; + uint64_t rip; + uint64_t r8; + uint64_t r9; + uint64_t r10; + uint64_t r11; + uint64_t r12; + uint64_t r13; + uint64_t r14; + uint64_t r15; + uint64_t rflags; +#endif + uint32_t cs; + uint32_t ss; + uint32_t ds; + uint32_t es; + uint32_t fs; + uint32_t gs; +}; + +#ifdef __cplusplus +} +#endif -- cgit v1.2.3