//
// Created by nigel on 17/02/23.
//
#pragma  once
#include "../terminal/kterm.h"
class processor {
public:
    static void initialize();

    // Based on information from https://en.wikichip.org/wiki/x86/amx#Detection
    enum  AMX_TYPE{
        AMX_BF16 = (0x1 << 22),
        AMX_TILE = (0x1 << 24),
        AMX_INT8 = (0x1 << 25)
    };
    static bool hasAMXExtension();
    static bool has32bitPagingSupport();
    static bool hasPageSupport();
    static bool gigabytePages();

    static bool hasPAEExtension();
    static void enable_protectedMode();

    static uint32_t GetEFLAGS();
    static uint32_t GetCR0();
    static uint32_t GetCR2();
    static uint32_t GetCR3();
    static uint32_t GetCR4();

private:
    static uint32_t cap_page;
    static uint32_t cap_page1;
    static uint32_t cap_page7;


};