NeKernel dev
Loading...
Searching...
No Matches
Processor.h
Go to the documentation of this file.
1/* ========================================
2
3 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5 Purpose: POWER processor header.
6
7======================================== */
8
9#pragma once
10
11#include <NeKit/Config.h>
12#include <NeKit/Utils.h>
13
14#define rtl_nop_op() asm volatile("mr 0, 0")
15#define kHalPPCAlignment __attribute__((aligned(4)))
16
17namespace Kernel::HAL {
18typedef UIntPtr Reg;
19
21struct PACKED StackFrame final {
22 Reg R8{0};
23 Reg R9{0};
24 Reg R10{0};
25 Reg R11{0};
26 Reg R12{0};
27 Reg R13{0};
28 Reg R14{0};
29 Reg R15{0};
30 Reg SP{0};
31 Reg IP{0};
32};
33
35
36inline void rt_halt() {
37 while (true) {
38 NoOp(); // no oop.
39 }
40}
41
42inline void rt_cli() {
43 NoOp(); // no oop
44}
45} // namespace Kernel::HAL
46
49
53 Kernel::UInt8 esel, Kernel::UInt8 tsize, Kernel::UInt8 iprot);
54
58
#define PACKED
#define EXTERN_C
Kernel::Bool hal_set_tlb(Kernel::UInt8 tlb, Kernel::UInt32 epn, Kernel::UInt64 rpn, Kernel::UInt8 perms, Kernel::UInt8 wimge, Kernel::UInt8 ts, Kernel::UInt8 esel, Kernel::UInt8 tsize, Kernel::UInt8 iprot)
Set TLB.
Definition HalVirtualMemory.cc:25
Kernel::Void hal_write_tlb(Kernel::UInt32 mas0, Kernel::UInt32 mas1, Kernel::UInt32 mas2, Kernel::UInt32 mas3, Kernel::UInt32 mas7)
Write TLB.
Definition HalVirtualMemory.cc:15
EXTERN_C Kernel::Void hal_flush_tlb()
Flush TLB.
Definition HalVirtualMemory.cc:44
EXTERN_C Kernel::Void int_handle_pf(Kernel::UIntPtr sp)
Handle page fault.
Definition HalCoreInterruptHandler.cc:42
EXTERN_C Kernel::Void int_handle_math(Kernel::UIntPtr sp)
Handle math fault.
Definition HalCoreInterruptHandler.cc:70
Hardware Abstraction Layer.
Definition ArchKit.h:62
UIntPtr Reg
Definition Processor.h:18
StackFrame * StackFramePtr
Definition Processor.h:34
Void rt_halt()
Definition HalProcessor.cc:70
Void rt_cli()
Definition HalProcessor.cc:74
void Void
Definition Config.h:87
__UINT8_TYPE__ UInt8
Definition Config.h:55
__UINT32_TYPE__ UInt32
Definition Config.h:44
__UINTPTR_TYPE__ UIntPtr
Definition Config.h:62
__UINT64_TYPE__ UInt64
Definition Config.h:48
bool Bool
Definition Config.h:50
Stack frame (as retrieved from assembly.).
Definition Processor.h:21
Reg R9
Definition Processor.h:23
Reg R15
Definition Processor.h:29
Reg R11
Definition Processor.h:25
Reg R8
Definition Processor.h:22
Reg R13
Definition Processor.h:27
Reg IP
Definition Processor.h:31
Reg SP
Definition Processor.h:30
Reg R10
Definition Processor.h:24
Reg R12
Definition Processor.h:26
Reg R14
Definition Processor.h:28