diff --git a/base-hw/src/core/kernel/irq.cc b/base-hw/src/core/kernel/irq.cc index fd22e6ded5..2e6edb430f 100644 --- a/base-hw/src/core/kernel/irq.cc +++ b/base-hw/src/core/kernel/irq.cc @@ -12,9 +12,9 @@ */ /* core includes */ +#include #include #include -#include using namespace Kernel; @@ -22,4 +22,4 @@ namespace Kernel { Pic * pic(); } void Irq::_disable() const { pic()->mask(_id()); } -void Irq::_enable() const { pic()->unmask(_id(), Processor_driver::id()); } +void Irq::_enable() const { pic()->unmask(_id(), Processor::id()); } diff --git a/base-hw/src/core/kernel/kernel.cc b/base-hw/src/core/kernel/kernel.cc index 6371e9a408..f9cd266cac 100644 --- a/base-hw/src/core/kernel/kernel.cc +++ b/base-hw/src/core/kernel/kernel.cc @@ -183,7 +183,7 @@ extern "C" void init_kernel_uniprocessor() multiprocessor(); /* go multiprocessor mode */ - Processor_driver::start_secondary_processors(&_start_secondary_processors); + Processor::start_secondary_processors(&_start_secondary_processors); } /** @@ -199,16 +199,16 @@ extern "C" void init_kernel_multiprocessor() ***********************************************************************/ /* synchronize data view of all processors */ - Processor_driver::flush_data_caches(); - Processor_driver::invalidate_instruction_caches(); - Processor_driver::invalidate_control_flow_predictions(); - Processor_driver::data_synchronization_barrier(); + Processor::flush_data_caches(); + Processor::invalidate_instruction_caches(); + Processor::invalidate_control_flow_predictions(); + Processor::data_synchronization_barrier(); /* initialize processor in physical mode */ - Processor_driver::init_phys_kernel(); + Processor::init_phys_kernel(); /* switch to core address space */ - Processor_driver::init_virt_kernel(core_tlb_base, core_pd_id); + Processor::init_virt_kernel(core_tlb_base, core_pd_id); /************************************ ** Now it's safe to use 'cmpxchg' ** @@ -236,11 +236,11 @@ extern "C" void init_kernel_multiprocessor() /* initialize interrupt controller */ pic()->init_processor_local(); - unsigned const processor_id = Processor_driver::id(); + unsigned const processor_id = Processor::id(); pic()->unmask(Timer::interrupt_id(processor_id), processor_id); /* as primary processor create the core main thread */ - if (Processor_driver::primary_id() == processor_id) + if (Processor::primary_id() == processor_id) { /* get stack memory that fullfills the constraints for core stacks */ enum { @@ -278,7 +278,7 @@ extern "C" void init_kernel_multiprocessor() extern "C" void kernel() { data_lock().lock(); - unsigned const processor_id = Processor_driver::id(); + unsigned const processor_id = Processor::id(); Processor * const processor = multiprocessor()->select(processor_id); Processor_scheduler * const scheduler = processor->scheduler(); scheduler->head()->exception(processor_id); diff --git a/base-hw/src/core/kernel/multiprocessor.h b/base-hw/src/core/kernel/multiprocessor.h index 6d0442578b..626437559a 100644 --- a/base-hw/src/core/kernel/multiprocessor.h +++ b/base-hw/src/core/kernel/multiprocessor.h @@ -19,6 +19,7 @@ /* core includes */ #include +#include namespace Kernel { @@ -67,9 +68,7 @@ class Kernel::Idle_thread : public Thread */ static void _main() { - while (1) { - Processor_driver::wait_for_interrupt(); - } + while (1) { Processor_driver::wait_for_interrupt(); } } public: @@ -89,7 +88,7 @@ class Kernel::Idle_thread : public Thread } }; -class Kernel::Processor +class Kernel::Processor : public Processor_driver { private: @@ -146,7 +145,7 @@ class Kernel::Multiprocessor */ Processor * primary() const { - return (Processor *)_data[Processor_driver::primary_id()]; + return (Processor *)_data[Processor::primary_id()]; } }; diff --git a/base-hw/src/core/kernel/pd.h b/base-hw/src/core/kernel/pd.h index 34e1bab1eb..abf914f1d3 100644 --- a/base-hw/src/core/kernel/pd.h +++ b/base-hw/src/core/kernel/pd.h @@ -20,8 +20,8 @@ /* core includes */ #include #include +#include #include -#include #include /* structure of the mode transition */ @@ -150,7 +150,7 @@ class Kernel::Mode_transition_control enum { SIZE_LOG2 = Tlb::MIN_PAGE_SIZE_LOG2, SIZE = 1 << SIZE_LOG2, - VIRT_BASE = Processor_driver::EXCEPTION_ENTRY, + VIRT_BASE = Processor::EXCEPTION_ENTRY, VIRT_END = VIRT_BASE + SIZE, ALIGNM_LOG2 = SIZE_LOG2, }; @@ -160,7 +160,7 @@ class Kernel::Mode_transition_control * * \param c CPU context for kernel mode entry */ - Mode_transition_control(Processor_driver::Context * const c) + Mode_transition_control(Processor::Context * const c) : _virt_user_entry(VIRT_BASE + ((addr_t)&_mt_user_entry_pic - (addr_t)&_mt_begin)) @@ -175,11 +175,11 @@ class Kernel::Mode_transition_control addr_t const kc_begin = (addr_t)&_mt_master_context_begin; addr_t const kc_end = (addr_t)&_mt_master_context_end; size_t const kc_size = kc_end - kc_begin; - assert(sizeof(Processor_driver::Context) <= kc_size); + assert(sizeof(Processor::Context) <= kc_size); /* fetch kernel-mode context */ Genode::memcpy(&_mt_master_context_begin, c, - sizeof(Processor_driver::Context)); + sizeof(Processor::Context)); } /** @@ -204,7 +204,7 @@ class Kernel::Mode_transition_control * \param context targeted userland context * \param processor_id kernel name of targeted processor */ - void continue_user(Processor_driver::Context * const context, + void continue_user(Processor::Context * const context, unsigned const processor_id) { _continue_client(context, processor_id, _virt_user_entry); @@ -275,7 +275,7 @@ class Kernel::Pd : public Object /** * Let the CPU context 'c' join the PD */ - void admit(Processor_driver::Context * const c) + void admit(Processor::Context * const c) { c->protection_domain(id()); c->tlb(tlb()->base()); diff --git a/base-hw/src/core/kernel/thread.cc b/base-hw/src/core/kernel/thread.cc index 7534d7821e..207dff0358 100644 --- a/base-hw/src/core/kernel/thread.cc +++ b/base-hw/src/core/kernel/thread.cc @@ -311,7 +311,7 @@ void Thread::_call_bin_pd() tlb->~Tlb(); /* clean up buffers of memory management */ - Processor_driver::flush_tlb_by_pid(pd->id()); + Processor::flush_tlb_by_pid(pd->id()); user_arg_0(0); } @@ -424,7 +424,7 @@ void Thread::_call_resume_thread() void Thread_event::_signal_acknowledged() { - Processor_driver::tlb_insertions(); + Processor::tlb_insertions(); _thread->_resume(); } @@ -596,7 +596,7 @@ void Thread::_call_access_thread_regs() void Thread::_call_update_pd() { assert(_core()); - Processor_driver::flush_tlb_by_pid(user_arg_1()); + Processor::flush_tlb_by_pid(user_arg_1()); } @@ -605,8 +605,8 @@ void Thread::_call_update_region() assert(_core()); /* FIXME we don't handle instruction caches by now */ - Processor_driver::flush_data_cache_by_virt_region((addr_t)user_arg_1(), - (size_t)user_arg_2()); + Processor::flush_data_cache_by_virt_region((addr_t)user_arg_1(), + (size_t)user_arg_2()); } diff --git a/base-hw/src/core/kernel/thread.h b/base-hw/src/core/kernel/thread.h index 688a4a448f..9a831e0db8 100644 --- a/base-hw/src/core/kernel/thread.h +++ b/base-hw/src/core/kernel/thread.h @@ -19,8 +19,8 @@ #include #include #include -#include #include +#include namespace Kernel { diff --git a/base-hw/src/core/kernel/vm.h b/base-hw/src/core/kernel/vm.h index a70a7d77a2..4558580307 100644 --- a/base-hw/src/core/kernel/vm.h +++ b/base-hw/src/core/kernel/vm.h @@ -23,7 +23,6 @@ #include #include #include -#include namespace Kernel { @@ -90,7 +89,7 @@ class Kernel::Vm : public Object, _interrupt(processor_id); return; case Genode::Cpu_state::DATA_ABORT: - _state->dfar = Processor_driver::Dfar::read(); + _state->dfar = Processor::Dfar::read(); default: Execution_context::_unschedule(); _context->submit(1);