47 lines
1.1 KiB
C
47 lines
1.1 KiB
C
/*******************************************************************************/
|
|
/* COS2000 - Compatible Operating System - LGPL v3 - Hordé Nicolas */
|
|
/* */
|
|
#include "interrupts.h"
|
|
|
|
typedef struct cpuinfo
|
|
{
|
|
u8 vendor[13];
|
|
u8 names[32];
|
|
u8 detectedname[256];
|
|
u8 techs[256];
|
|
u8 stepping;
|
|
u8 models;
|
|
u8 family;
|
|
u8 types;
|
|
u8 emodels;
|
|
u8 efamily;
|
|
u8 apicid;
|
|
u8 count;
|
|
u8 linesize;
|
|
u8 brandid;
|
|
bool mmx;
|
|
bool mmx2;
|
|
bool sse;
|
|
bool sse2;
|
|
bool sse3;
|
|
bool fpu;
|
|
bool now3d;
|
|
bool now3d2;
|
|
bool htt;
|
|
bool apic;
|
|
bool bits64;
|
|
bool syscall;
|
|
bool msr;
|
|
bool sse4a;
|
|
bool vmx;
|
|
bool sse41;
|
|
bool sse42;
|
|
bool apic2;
|
|
} cpuinfo __attribute__ ((packed));
|
|
|
|
bool cansetflag(u32 flag);
|
|
void cpuid(u32 op, u32 * eax, u32 * ebx, u32 * ecx, u32 * edx);
|
|
u8 getcpuinfos(cpuinfo * inf);
|
|
void show_cpu(regs * stack);
|
|
void cpuerror(const u8 * src, const regs * stack, bool returnto);
|