Skip to content

Commit fd41b4c

Browse files
New features have been added to the CPU driver.
1 parent a30f7d8 commit fd41b4c

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

Drivers/Cpu/cpu.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
11
#include "cpu.h"
2+
#include "../Vga/vga.h"
23

34
uint32_t cpuinfo_data(uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx, uint32_t function_id) {
45
__asm__ __volatile__ ("cpuid": "=a"(*eax), "=b"(*ebx), "=c"(*ecx), "=d"(*edx): "a"(function_id));
56
}
67

8+
void get_sys_cpuinfo(const char *mode) {
9+
if (mode[0] == 'B') {
10+
sys_cpuinfo_t cpuinfo;
11+
uint32_t *p = (uint32_t*)cpuinfo.sys_cpu_brand;
12+
13+
for (uint32_t i = 0; i < 3; i++) {
14+
cpuinfo_data(&p[i*4], &p[i*4+1], &p[i*4+2], &p[i*4+3], 0x80000002 + i);
15+
}
16+
cpuinfo.sys_cpu_brand[48] = '\0';
17+
vga_print_scr("CPU Brand: ");
18+
vga_print_scr_nw(cpuinfo.sys_cpu_brand);
19+
}
20+
}
21+
722
void cpu_status(const char *mode) {
823
if (mode[0] == 'S') {
924
__asm__ __volatile__ ("hlt");

Drivers/Cpu/cpu.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ typedef struct {
2626
} sys_cpuinfo_t;
2727

2828
uint32_t cpuinfo_data(uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx, uint32_t function_id);
29+
void get_sys_cpuinfo(const char *mode);
2930
void cpu_status(const char *mode);
3031

3132
#define CPU_DRIVER_NAME "OpenKernel CPU Driver"
32-
#define CPU_DRIVER_VER "0.1"
33+
#define CPU_DRIVER_VER "0.2"
3334
#define CPU_DRIVER_DESC "A simple CPU Driver for OpenKernel"
3435
#define CPU_DRIVER_KRNL_VER "2.0"
3536

36-
#endif
37+
#endif

0 commit comments

Comments
 (0)