diff options
Diffstat (limited to 'include/arch/processor.h')
-rw-r--r-- | include/arch/processor.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/include/arch/processor.h b/include/arch/processor.h new file mode 100644 index 0000000..871e5c7 --- /dev/null +++ b/include/arch/processor.h @@ -0,0 +1,39 @@ +#ifndef _JOVE_ARCH_PROCESSOR_H +#define _JOVE_ARCH_PROCESSOR_H 1 + +#ifdef __x86_64__ +#include "x86_64/processor.h" +#endif + +#include "memory.h" +#include "tasking.h" +#include "klib/spinlock.h" + +#define _EXRTAB_C (PAGE_SIZE / sizeof(uintptr_t)) + +typedef struct processor +{ + ARCH_SPECIFIC_PROCESSOR_MEMBERS; + unsigned int id; + unsigned int isr_depth; + page_directory_t *pd; + tcb_t *tcb; + + uintptr_t exrtab[_EXRTAB_C]; + size_t ert_i; +} processor_t; + +extern processor_t *proc_bsp; + +void processor_setup(processor_t *proc); + +processor_t *processor_list(void); + +processor_t *processor_current(void); +page_directory_t *pd_current(void); +tcb_t *tcb_current(void); + +void _exrtab_push(void *v); +void *_exrtab_pop(void); + +#endif |