mirror of
https://github.com/86Box/86Box.git
synced 2026-02-23 18:08:20 -07:00
Fixed SMM, overhauled the emulation of the VIA northbridges, and added the Via Apollo VP3.
This commit is contained in:
@@ -65,6 +65,7 @@ extern const device_t sis_85c50x_device;
|
||||
#endif
|
||||
|
||||
/* VIA */
|
||||
extern const device_t via_vp3_device;
|
||||
extern const device_t via_mvp3_device;
|
||||
extern const device_t via_apro_device;
|
||||
|
||||
|
||||
@@ -130,6 +130,8 @@ extern void ide_pri_disable(void);
|
||||
extern void ide_sec_enable(void);
|
||||
extern void ide_sec_disable(void);
|
||||
|
||||
extern void ide_board_set_force_ata3(int board, int force_ata3);
|
||||
|
||||
extern double ide_atapi_get_period(uint8_t channel);
|
||||
extern void ide_set_callback(uint8_t channel, double callback);
|
||||
|
||||
|
||||
@@ -101,6 +101,7 @@ extern int keyboard_ismsexit(void);
|
||||
extern void keyboard_at_adddata_keyboard_raw(uint8_t val);
|
||||
extern void keyboard_at_adddata_mouse(uint8_t val);
|
||||
extern void keyboard_at_set_mouse(void (*mouse_write)(uint8_t val,void *), void *);
|
||||
extern void keyboard_at_set_a20_key(int state);
|
||||
extern uint8_t keyboard_at_get_mouse_scan(void);
|
||||
extern void keyboard_at_set_mouse_scan(uint8_t val);
|
||||
extern void keyboard_at_reset(void);
|
||||
|
||||
@@ -263,6 +263,7 @@ extern int machine_at_endeavor_init(const machine_t *);
|
||||
extern int machine_at_zappa_init(const machine_t *);
|
||||
extern int machine_at_mb500n_init(const machine_t *);
|
||||
extern int machine_at_president_init(const machine_t *);
|
||||
extern int machine_at_apollo_init(const machine_t *);
|
||||
#if defined(DEV_BRANCH) && defined(USE_VECTRA54)
|
||||
extern int machine_at_vectra54_init(const machine_t *);
|
||||
#endif
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
#define MEM_READ_INTERNAL 0x10
|
||||
#define MEM_READ_EXTERNAL 0x20
|
||||
#define MEM_READ_DISABLED 0x30
|
||||
#define MEM_READ_NORMAL 0x40 /* SMM only - means use the non-SMM state */
|
||||
#define MEM_READ_EXTERNAL_EX 0x50 /* External but with internal exec - needed by the VIA Apollo Pro */
|
||||
#define MEM_READ_ROMCS 0x60 /* EXTERNAL type + ROMC flag */
|
||||
#define MEM_READ_EXTANY 0x70 /* Any EXTERNAL type */
|
||||
#define MEM_READ_MASK 0xf0
|
||||
@@ -43,16 +45,21 @@
|
||||
#define MEM_WRITE_INTERNAL 0x01
|
||||
#define MEM_WRITE_EXTERNAL 0x02
|
||||
#define MEM_WRITE_DISABLED 0x03
|
||||
#define MEM_WRITE_NORMAL 0x04 /* SMM only - means use the non-SMM state */
|
||||
#define MEM_WRITE_ROMCS 0x06 /* EXTERNAL type + ROMC flag */
|
||||
#define MEM_WRITE_EXTANY 0x07 /* Any EXTERNAL type */
|
||||
#define MEM_WRITE_MASK 0x0f
|
||||
|
||||
#define MEM_STATE_SMM_SHIFT 8
|
||||
|
||||
/* #define's for memory granularity, currently 16k, but may
|
||||
change in the future - 4k works, less does not because of
|
||||
internal 4k pages. */
|
||||
#ifdef DEFAULT_GRANULARITY
|
||||
#define MEM_GRANULARITY_BITS 14
|
||||
#define MEM_GRANULARITY_SIZE (1 << MEM_GRANULARITY_BITS)
|
||||
#define MEM_GRANULARITY_HBOUND (MEM_GRANULARITY_SIZE - 2)
|
||||
#define MEM_GRANULARITY_QBOUND (MEM_GRANULARITY_SIZE - 4)
|
||||
#define MEM_GRANULARITY_MASK (MEM_GRANULARITY_SIZE - 1)
|
||||
#define MEM_GRANULARITY_HMASK ((1 << (MEM_GRANULARITY_BITS - 1)) - 1)
|
||||
#define MEM_GRANULARITY_QMASK ((1 << (MEM_GRANULARITY_BITS - 2)) - 1)
|
||||
@@ -61,6 +68,8 @@
|
||||
#else
|
||||
#define MEM_GRANULARITY_BITS 12
|
||||
#define MEM_GRANULARITY_SIZE (1 << MEM_GRANULARITY_BITS)
|
||||
#define MEM_GRANULARITY_HBOUND (MEM_GRANULARITY_SIZE - 2)
|
||||
#define MEM_GRANULARITY_QBOUND (MEM_GRANULARITY_SIZE - 4)
|
||||
#define MEM_GRANULARITY_MASK (MEM_GRANULARITY_SIZE - 1)
|
||||
#define MEM_GRANULARITY_HMASK ((1 << (MEM_GRANULARITY_BITS - 1)) - 1)
|
||||
#define MEM_GRANULARITY_QMASK ((1 << (MEM_GRANULARITY_BITS - 2)) - 1)
|
||||
@@ -260,9 +269,12 @@ extern void mem_mapping_set_addr(mem_mapping_t *,
|
||||
extern void mem_mapping_set_exec(mem_mapping_t *, uint8_t *exec);
|
||||
extern void mem_mapping_disable(mem_mapping_t *);
|
||||
extern void mem_mapping_enable(mem_mapping_t *);
|
||||
extern void mem_mapping_recalc(uint64_t base, uint64_t size);
|
||||
|
||||
extern void mem_set_mem_state_common(int smm, uint32_t base, uint32_t size, int state);
|
||||
|
||||
extern void mem_set_mem_state(uint32_t base, uint32_t size, int state);
|
||||
extern void mem_restore_mem_state(uint32_t base, uint32_t size);
|
||||
extern void mem_set_mem_state_smm(uint32_t base, uint32_t size, int state);
|
||||
|
||||
extern uint8_t mem_readb_phys(uint32_t addr);
|
||||
extern uint16_t mem_readw_phys(uint32_t addr);
|
||||
@@ -311,6 +323,7 @@ extern void mem_add_upper_bios(void);
|
||||
extern void mem_add_bios(void);
|
||||
|
||||
extern void mem_init(void);
|
||||
|
||||
extern void mem_reset(void);
|
||||
extern void mem_remap_top(int kb);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user