Vystem 0.2
This commit is contained in:
39
shelter/lib/include/irq/tss.h
Normal file
39
shelter/lib/include/irq/tss.h
Normal file
@@ -0,0 +1,39 @@
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
#ifndef SH_LIB_TSS_H
|
||||
#define SH_LIB_TSS_H
|
||||
#include "std/status.h"
|
||||
#include "std/type.h"
|
||||
#include "std/malloc.h"
|
||||
#include "std/mem.h"
|
||||
// TSS structure
|
||||
#pragma pack(1)
|
||||
typedef struct {
|
||||
sh_uint32 reserved0;
|
||||
sh_uint64 rsp0;
|
||||
sh_uint64 rsp1;
|
||||
sh_uint64 rsp2;
|
||||
sh_uint64 reserved1;
|
||||
sh_uint64 ist1;
|
||||
sh_uint64 ist2;
|
||||
sh_uint64 ist3;
|
||||
sh_uint64 ist4;
|
||||
sh_uint64 ist5;
|
||||
sh_uint64 ist6;
|
||||
sh_uint64 ist7;
|
||||
sh_uint64 reserved2;
|
||||
sh_uint16 reserved3;
|
||||
sh_uint16 iomap_base;
|
||||
} sh_tss_TSS;
|
||||
#pragma pack()
|
||||
// TR structure
|
||||
#pragma pack(1)
|
||||
typedef struct {
|
||||
sh_uint16 limit;
|
||||
sh_uint64 base;
|
||||
} sh_tss_TR;
|
||||
#pragma pack()
|
||||
// Fill TSS structure for any CPU core and allocate stacks
|
||||
SH_STATUS sh_tss_fill_tss(sh_tss_TSS *tss);
|
||||
// Fill and load TR
|
||||
SH_STATUS sh_tss_load_tr(sh_tss_TSS *tss);
|
||||
#endif
|
||||
Reference in New Issue
Block a user