forked from Lephenixnoir/gint
Lephe
1c7b1350b4
* Removed .pretext sections since the TLB is now entirely dynamic; left only .text.entry for the start symbol. * Reworked the main files of src/core to move the INTC to its own driver and let the kernel handle only VBR space and CPU (now: VBR & CPUOPM). * Moved src/core/gint.c to src/core/kernel.c and centralized all driver loops that save or restore context for more robustness. This leaves the callbacks of cpu_setVBR() (formerly gint_setvbr()) pretty short. * Coalesced gint_switch_out() and gint_switch_in() into a single function callback for cpu_setVBR(). * Added an abstraction of interrupt signals as an enumerated value so that drivers no longer hardcode the IPR and IMR numbers and bits, sometimes even with isSH3() due to differences in the SH7705. * Changed the interrupt blocking method in cpu_setVBR() from SR.BL=1 to SR.IMASK=15 so that TLB misses are still handled. This removes the need for callback functions to be GMAPPED. * Moved gint_osmenu() and its utilities to a new file src/core/osmenu.c.
30 lines
621 B
C
30 lines
621 B
C
//---
|
|
// core:vbr - VBR-related functions and linker script symbols
|
|
//---
|
|
|
|
#ifndef GINT_CORE_VBR
|
|
#define GINT_CORE_VBR
|
|
|
|
#include <gint/defs/types.h>
|
|
|
|
/* VBR addresses from the linker script */
|
|
#ifdef FX9860G
|
|
extern char gint_vbr_fx9860g[];
|
|
#endif
|
|
#ifdef FXCG50
|
|
extern char gint_vbr_fxcg50[];
|
|
extern char gint_vbr_fxcg20[];
|
|
#endif
|
|
|
|
/* The kernel's interrupt and exception handlers' entry points */
|
|
void gint_exch(void);
|
|
void gint_tlbh(void);
|
|
void gint_inth_7705(void);
|
|
void gint_inth_7305(void);
|
|
|
|
/* Size of exception and TLB handlers */
|
|
extern char gint_exch_size;
|
|
extern char gint_tlbh_size;
|
|
|
|
#endif /* GINT_CORE_VBR */
|