Added cpuid.
This commit is contained in:
parent
7db4e9cf35
commit
3628eeb97c
|
@ -1,7 +1,9 @@
|
|||
global flush_gdt
|
||||
global flush_tlb
|
||||
global get_cpuid
|
||||
;Functions preserve the registers rbx, rsp, rbp, r12, r13, r14, and 15
|
||||
;rax, rdi, rsi, rdx, rcx, r8, r9, r10, r11 are scratch registers.
|
||||
;function parameter: rdi,rsi,rdx,rcx,r8,r9
|
||||
|
||||
[SECTION .text]
|
||||
[BITS 64]
|
||||
|
@ -34,4 +36,20 @@ ret
|
|||
flush_tlb:
|
||||
mov rax,cr3
|
||||
mov cr3,rax
|
||||
ret
|
||||
ret
|
||||
|
||||
|
||||
;void get_cpuid(int64_t* rax, int64_t* rbx, int64_t* rcx, int64_t* rdx)
|
||||
get_cpuid:
|
||||
mov rax,[rdi]
|
||||
push rcx
|
||||
mov rcx,[rdx]
|
||||
cpuid
|
||||
mov [rdi],rax
|
||||
mov [rsi],rbx
|
||||
mov [rdx],rcx
|
||||
pop rcx
|
||||
mov [rcx],rdx
|
||||
ret
|
||||
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ extern char kernel_start[];
|
|||
extern char kernel_end[];
|
||||
extern void NATIVE64 HLT_CPU(void);
|
||||
extern void NATIVE64 BOCHS_MAGIC_BREAKPOINT();
|
||||
extern void NATIVE64 flush_gdt(gdt_ptr_t *gdt_ptr, uint64_t code_slct, uint64_t data_slct);
|
||||
void NATIVE64 kmain(multiboot_info_t *multiboot_info)
|
||||
{
|
||||
text_pos = get_pos(3, 0);
|
||||
|
|
|
@ -79,6 +79,12 @@ typedef struct __attribute__ ((packed))
|
|||
void*NATIVE64 kmalloc(size_t const size);
|
||||
void NATIVE64 kfree(void* ptr);
|
||||
|
||||
extern void NATIVE64 flush_gdt(gdt_ptr_t *gdt_ptr, uint64_t code_slct, uint64_t data_slct);
|
||||
|
||||
extern void NATIVE64 flush_tlb();
|
||||
|
||||
extern void NATIVE64 get_cpuid(int64_t * eax, int64_t * ebx, int64_t* ecx, int64_t* edx);
|
||||
|
||||
void NATIVE64 write_segment_descriptor(void *const gdt, uint32_t const base, uint32_t const limit, uint64_t const attr);
|
||||
|
||||
//extern void NATIVE64 hk_load_gdt(gdt_ptr_t const *const ptr, uint16_t const sel_code, uint16_t const sel_data);
|
||||
|
|
Loading…
Reference in New Issue