Vhex-kernel/include/kernel/context.h

68 lines
1.2 KiB
C

#ifndef __KERNEL_CONTEXT_H__
# define __KERNEL_CONTEXT_H__
#include <stddef.h>
#include <stdint.h>
typedef struct fx9860_context_s
{
struct {
uint16_t control;
uint16_t autofix;
uint16_t scan_mode;
uint16_t scan_state;
uint16_t interrupt;
uint16_t scan_wait;
uint16_t scan_interval;
uint16_t kyoutdr;
uint16_t kyindr;
} keyboard;
struct {
uint16_t ipra;
uint16_t iprb;
uint16_t iprc;
uint16_t iprd;
uint16_t ipre;
uint16_t iprf;
uint16_t iprg;
uint16_t iprh;
uint16_t ipri;
uint16_t iprj;
uint16_t iprk;
uint16_t iprl;
} intc;
struct {
uint32_t stbcr;
uint32_t mstpcr0;
uint32_t mstpcr1;
uint32_t mstpcr2;
} power;
struct {
uint8_t tstr;
struct {
uint32_t tcor;
uint32_t tcnt;
uint16_t tcr;
} timer[3];
} tmu;
uint32_t vbr;
//TODO: SR SSR SPC GBR MACL MACH
} fx9860_context_t;
typedef struct common_context_s
{
uint32_t reg[16];
uint32_t gbr;
uint32_t macl;
uint32_t mach;
uint32_t ssr;
uint32_t spc;
uint32_t pr;
} common_context_t;
// Context primitive.
extern void fx9860_context_save(fx9860_context_t *context);
extern void fx9860_context_restore(fx9860_context_t *context);
#endif /*__KERNEL_CONTEXT_H__*/