summaryrefslogblamecommitdiffstats
path: root/include/arch/processor.h
blob: 871e5c7e8b5faa3b8aaf724042ab183bfed3c722 (plain) (tree)






































                                                 
#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