mirror of
https://github.com/n64dev/cen64.git
synced 2025-04-02 10:31:54 -04:00
Replaced all references to simulation with emulation Updated copyright year Updated .gitignore to reduce chances of random files being uploaded to the repo Added .gitattributes to normalize all text files, and to ignore binary files (which includes the logo and the NEC PDF)
65 lines
1.5 KiB
C
65 lines
1.5 KiB
C
//
|
|
// bus/controller.h: System bus controller.
|
|
//
|
|
// CEN64: Cycle-Accurate Nintendo 64 Emulator.
|
|
// Copyright (C) 2015, Tyler J. Stachecki.
|
|
//
|
|
// This file is subject to the terms and conditions defined in
|
|
// 'LICENSE', which is part of this source code package.
|
|
//
|
|
|
|
#ifndef __bus_controller_h__
|
|
#define __bus_controller_h__
|
|
#include "common.h"
|
|
#include "bus/memorymap.h"
|
|
#include <setjmp.h>
|
|
|
|
struct ai_controller;
|
|
struct dd_controller;
|
|
struct pi_controller;
|
|
struct ri_controller;
|
|
struct si_controller;
|
|
struct vi_controller;
|
|
|
|
struct rdp;
|
|
struct rsp;
|
|
struct vr4300;
|
|
|
|
struct bus_controller {
|
|
struct ai_controller *ai;
|
|
struct dd_controller *dd;
|
|
struct pi_controller *pi;
|
|
struct ri_controller *ri;
|
|
struct si_controller *si;
|
|
struct vi_controller *vi;
|
|
|
|
struct rdp *rdp;
|
|
struct rsp *rsp;
|
|
struct vr4300 *vr4300;
|
|
|
|
// For resolving physical address ranges to devices.
|
|
struct memory_map map;
|
|
|
|
// Allows to to pop back out into device_run during simulation.
|
|
// Kind of a hack to put this in with the device "bus", but at
|
|
// least everyone gets access to it this way.
|
|
jmp_buf unwind_data;
|
|
};
|
|
|
|
cen64_cold int bus_init(struct bus_controller *bus);
|
|
|
|
// General-purpose accesssor functions.
|
|
cen64_flatten cen64_hot int bus_read_word(void *component,
|
|
uint32_t address, uint32_t *word);
|
|
|
|
cen64_flatten cen64_hot int bus_write_word(void *component,
|
|
uint32_t address, uint32_t word, uint32_t dqm);
|
|
|
|
// For asserting and deasserting RCP interrupts.
|
|
enum rcp_interrupt_mask;
|
|
|
|
int raise_rcp_interrupt(struct bus_controller *bus,
|
|
enum rcp_interrupt_mask mask);
|
|
|
|
#endif
|
|
|