mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-28 21:54:40 +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.
37 lines
2.0 KiB
Plaintext
37 lines
2.0 KiB
Plaintext
/*
|
|
* Copyright (c) 2023, kleines Filmröllchen <filmroellchen@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <Kernel/Arch/Processor.h>
|
|
|
|
// This header instantiates all functions of ProcessorBase that are architecture-specific.
|
|
namespace Kernel {
|
|
template bool ProcessorBase<Processor>::is_smp_enabled();
|
|
template void ProcessorBase<Processor>::idle_begin() const;
|
|
template void ProcessorBase<Processor>::idle_end() const;
|
|
template void ProcessorBase<Processor>::smp_enable();
|
|
template void ProcessorBase<Processor>::flush_tlb_local(VirtualAddress vaddr, size_t page_count);
|
|
template void ProcessorBase<Processor>::flush_entire_tlb_local();
|
|
template void ProcessorBase<Processor>::flush_tlb(Memory::PageDirectory const*, VirtualAddress, size_t);
|
|
template void ProcessorBase<Processor>::early_initialize(u32 cpu);
|
|
template void ProcessorBase<Processor>::initialize(u32 cpu);
|
|
template void ProcessorBase<Processor>::halt();
|
|
template void ProcessorBase<Processor>::exit_trap(TrapFrame& trap);
|
|
template u32 ProcessorBase<Processor>::clear_critical();
|
|
template bool ProcessorBase<Processor>::are_interrupts_enabled();
|
|
template void ProcessorBase<Processor>::wait_for_interrupt() const;
|
|
template Processor& ProcessorBase<Processor>::by_id(u32 id);
|
|
template StringView ProcessorBase<Processor>::platform_string();
|
|
template void ProcessorBase<Processor>::set_thread_specific_data(VirtualAddress thread_specific_data);
|
|
template void ProcessorBase<Processor>::initialize_context_switching(Thread& initial_thread);
|
|
template void ProcessorBase<Processor>::switch_context(Thread*& from_thread, Thread*& to_thread);
|
|
template void ProcessorBase<Processor>::assume_context(Thread& thread, InterruptsState new_interrupts_state);
|
|
template FlatPtr ProcessorBase<Processor>::init_context(Thread& thread, bool leave_crit);
|
|
template ErrorOr<Vector<FlatPtr, 32>> ProcessorBase<Processor>::capture_stack_trace(Thread& thread, size_t max_frames);
|
|
template u32 ProcessorBase<Processor>::smp_wake_n_idle_processors(u32 wake_count);
|
|
}
|