mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-06 19:19:44 +03:00
398d271a46
About half of the Processor code is common across architectures, so let's share it with a templated base class. Also, other code that can be shared in some ways, like FPUState and TrapFrame functions, is adjusted here. Functions which cannot be shared trivially (without internal refactoring) are left alone for now.
28 lines
701 B
C++
28 lines
701 B
C++
/*
|
|
* Copyright (c) 2023, kleines Filmröllchen <filmroellchen@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Platform.h>
|
|
#include <AK/Types.h>
|
|
#include <Kernel/Arch/x86_64/SIMDState.h>
|
|
|
|
VALIDATE_IS_X86()
|
|
|
|
namespace Kernel {
|
|
|
|
struct [[gnu::aligned(64), gnu::packed]] FPUState {
|
|
SIMD::LegacyRegion legacy_region;
|
|
SIMD::Header xsave_header;
|
|
|
|
// FIXME: This should be dynamically allocated! For now, we only save the `YMM` registers here,
|
|
// so this will do for now. The size of the area is queried via CPUID(EAX=0dh, ECX=2):EAX.
|
|
// https://www.intel.com/content/dam/develop/external/us/en/documents/36945
|
|
u8 ext_save_area[256];
|
|
};
|
|
|
|
}
|