1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 05:27:45 +00:00

Kernel: Split SmapDisabler so header is platform independent

A new header file has been created in the Arch/ folder while the
implementation has been moved into a CPP living in the X86 folder.
This commit is contained in:
James Mintram 2021-10-14 22:53:48 +01:00 committed by Linus Groh
parent f4fb637914
commit 0fbeac6011
12 changed files with 76 additions and 39 deletions

View file

@ -0,0 +1,25 @@
/*
* Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <Kernel/Arch/SmapDisabler.h>
#include <Kernel/Arch/x86/ASM_wrapper.h>
namespace Kernel {
SmapDisabler::SmapDisabler()
: m_flags(cpu_flags())
{
stac();
}
SmapDisabler::~SmapDisabler()
{
if (!(m_flags & 0x40000))
clac();
}
}

View file

@ -1,31 +0,0 @@
/*
* Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <Kernel/Arch/x86/ASM_wrapper.h>
namespace Kernel {
class SmapDisabler {
public:
ALWAYS_INLINE SmapDisabler()
: m_flags(cpu_flags())
{
stac();
}
ALWAYS_INLINE ~SmapDisabler()
{
if (!(m_flags & 0x40000))
clac();
}
private:
const FlatPtr m_flags;
};
}