#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include "bus_pci.h"
#include "console.h"
#include "cpu.h"
#include "device.h"
#include "devices.h"
#include "emul.h"
#include "machine.h"
#include "memory.h"
#include "misc.h"
#include "net.h"
#include "thirdparty/crimereg.h"
#include "thirdparty/sgi_macereg.h"
Go to the source code of this file.
Classes | |
struct | macepci_data |
struct | crime_data |
struct | mace_data |
struct | sgi_ust_data |
Macros | |
#define | CRIME_TICKSHIFT 14 |
#define | DEV_CRIME_LENGTH 0x280 |
#define | DEV_MACE_LENGTH 0x100 |
Functions | |
void | mips_pc_to_pointers (struct cpu *) |
void | mips32_pc_to_pointers (struct cpu *) |
void | crime_interrupt_reassert (struct crime_data *d) |
void | crime_interrupt_assert (struct interrupt *interrupt) |
void | crime_interrupt_deassert (struct interrupt *interrupt) |
void | crime_update_crime_time (struct crime_data *d) |
DEVICE_TICK (crime) | |
DEVICE_ACCESS (crime) | |
void | dev_crime_init (struct machine *machine, struct memory *mem, uint64_t baseaddr, char *irq_path, int use_fb) |
void | mace_interrupt_reassert (struct mace_data *d) |
void | mace_interrupt_assert (struct interrupt *interrupt) |
void | mace_interrupt_deassert (struct interrupt *interrupt) |
DEVICE_ACCESS (mace) | |
DEVINIT (mace) | |
DEVICE_ACCESS (macepci) | |
struct pci_data * | dev_macepci_init (struct machine *machine, struct memory *mem, uint64_t baseaddr, char *irq_path) |
DEVICE_ACCESS (sgi_ust) | |
void | dev_sgi_ust_init (struct memory *mem, uint64_t baseaddr) |
#define CRIME_TICKSHIFT 14 |
Definition at line 68 of file dev_sgi_ip32.cc.
#define DEV_CRIME_LENGTH 0x280 |
Definition at line 75 of file dev_sgi_ip32.cc.
#define DEV_MACE_LENGTH 0x100 |
Definition at line 447 of file dev_sgi_ip32.cc.
void crime_interrupt_assert | ( | struct interrupt * | interrupt | ) |
Definition at line 124 of file dev_sgi_ip32.cc.
References CRIME_HARDINT, crime_interrupt_reassert(), interrupt::extra, interrupt::line, and crime_data::reg.
Referenced by dev_crime_init().
void crime_interrupt_deassert | ( | struct interrupt * | interrupt | ) |
Definition at line 131 of file dev_sgi_ip32.cc.
References CRIME_HARDINT, crime_interrupt_reassert(), interrupt::extra, interrupt::line, and crime_data::reg.
Referenced by dev_crime_init().
void crime_interrupt_reassert | ( | struct crime_data * | d | ) |
Definition at line 92 of file dev_sgi_ip32.cc.
References CRIME_HARDINT, CRIME_INTMASK, CRIME_INTSTAT, CRIME_SOFTINT, INTERRUPT_ASSERT, INTERRUPT_DEASSERT, crime_data::irq, crime_data::prev_asserted, and crime_data::reg.
Referenced by crime_interrupt_assert(), crime_interrupt_deassert(), DEVICE_ACCESS(), and DEVICE_TICK().
void crime_update_crime_time | ( | struct crime_data * | d | ) |
Definition at line 140 of file dev_sgi_ip32.cc.
References CRIME_TIME, fatal(), crime_data::last_microseconds, and crime_data::reg.
Referenced by DEVICE_ACCESS(), and DEVICE_TICK().
void dev_crime_init | ( | struct machine * | machine, |
struct memory * | mem, | ||
uint64_t | baseaddr, | ||
char * | irq_path, | ||
int | use_fb | ||
) |
Definition at line 404 of file dev_sgi_ip32.cc.
References CHECK_ALLOCATION, crime_interrupt_assert(), crime_interrupt_deassert(), CRIME_TICKSHIFT, DEV_CRIME_LENGTH, device_add(), DM_DEFAULT, interrupt::extra, interrupt::interrupt_assert, INTERRUPT_CONNECT, interrupt::interrupt_deassert, interrupt_handler_register(), crime_data::irq, interrupt::line, machine_add_tickfunction(), memory_device_register(), interrupt::name, and crime_data::use_fb.
Referenced by MACHINE_SETUP().
struct pci_data* dev_macepci_init | ( | struct machine * | machine, |
struct memory * | mem, | ||
uint64_t | baseaddr, | ||
char * | irq_path | ||
) |
Definition at line 789 of file dev_sgi_ip32.cc.
References bus_pci_init(), CHECK_ALLOCATION, dev_macepci_access(), DEV_MACEPCI_LENGTH, DM_DEFAULT, memory_device_register(), and macepci_data::pci_data.
Referenced by MACHINE_SETUP().
void dev_sgi_ust_init | ( | struct memory * | mem, |
uint64_t | baseaddr | ||
) |
Definition at line 864 of file dev_sgi_ip32.cc.
References CHECK_ALLOCATION, dev_sgi_ust_access(), DEV_SGI_UST_LENGTH, DM_DEFAULT, and memory_device_register().
Referenced by MACHINE_SETUP().
DEVICE_ACCESS | ( | crime | ) |
Definition at line 187 of file dev_sgi_ip32.cc.
References cpu::cd, machine::cpus, CRIME_CONTROL, CRIME_CONTROL_DOG_ENABLE, CRIME_CONTROL_ENDIANESS, CRIME_CONTROL_HARD_RESET, CRIME_DOG, CRIME_HARDINT, crime_interrupt_reassert(), CRIME_INTMASK, CRIME_INTSTAT, CRIME_MEM_BANK_CTRL0, CRIME_REV, CRIME_SOFTINT, CRIME_TIME, crime_update_crime_time(), data, debug, fatal(), mips_cpu::gpr, cpu::is_32bit, cpu::machine, MEM_READ, MEM_WRITE, memory_readmax64(), memory_writemax64(), cpu::mips, mips32_pc_to_pointers(), MIPS_GPR_RA, mips_pc_to_pointers(), machine::ncpus, cpu::pc, machine::physical_ram_in_mb, crime_data::reg, cpu::running, and crime_data::use_fb.
DEVICE_ACCESS | ( | mace | ) |
Definition at line 529 of file dev_sgi_ip32.cc.
References data, debug, fatal(), mace_interrupt_reassert(), MACE_ISA_FLASH_NIC_REG, MACE_ISA_INT_MASK, MACE_ISA_INT_STATUS, MACE_ISA_LED_GREEN, MACE_ISA_LED_RED, MACE_ISA_PWD_CLEAR, MACE_ISA_RINGBASE, MEM_READ, MEM_WRITE, and mace_data::reg.
DEVICE_ACCESS | ( | macepci | ) |
Definition at line 697 of file dev_sgi_ip32.cc.
References bus_pci_data_access(), bus_pci_decompose_1(), bus_pci_setaddr(), data, fatal(), MEM_READ, MEM_WRITE, memory_readmax64(), memory_writemax64(), and macepci_data::pci_data.
DEVICE_ACCESS | ( | sgi_ust | ) |
Definition at line 825 of file dev_sgi_ip32.cc.
References data, debug, MEM_READ, MEM_WRITE, memory_readmax64(), memory_writemax64(), and sgi_ust_data::reg.
DEVICE_TICK | ( | crime | ) |
Definition at line 178 of file dev_sgi_ip32.cc.
References crime_interrupt_reassert(), and crime_update_crime_time().
DEVINIT | ( | mace | ) |
Definition at line 640 of file dev_sgi_ip32.cc.
References devinit::addr, CHECK_ALLOCATION, CRIME_INT_PERIPH_MISC, CRIME_INT_PERIPH_SERIAL, DEV_MACE_LENGTH, DM_DEFAULT, interrupt::extra, interrupt::interrupt_assert, INTERRUPT_CONNECT, interrupt::interrupt_deassert, interrupt_handler_register(), devinit::interrupt_path, mace_data::irq_misc, mace_data::irq_periph, interrupt::line, mace_interrupt_assert(), mace_interrupt_deassert(), devinit::machine, machine::memory, memory_device_register(), devinit::name, interrupt::name, and devinit::return_ptr.
void mace_interrupt_assert | ( | struct interrupt * | interrupt | ) |
Definition at line 503 of file dev_sgi_ip32.cc.
References interrupt::extra, interrupt::line, mace_interrupt_reassert(), MACE_ISA_INT_STATUS, and mace_data::reg.
Referenced by DEVINIT().
void mace_interrupt_deassert | ( | struct interrupt * | interrupt | ) |
Definition at line 515 of file dev_sgi_ip32.cc.
References interrupt::extra, interrupt::line, mace_interrupt_reassert(), MACE_ISA_INT_STATUS, and mace_data::reg.
Referenced by DEVINIT().
void mace_interrupt_reassert | ( | struct mace_data * | d | ) |
Definition at line 457 of file dev_sgi_ip32.cc.
References INTERRUPT_ASSERT, INTERRUPT_DEASSERT, mace_data::irq_misc, mace_data::irq_periph, MACE_ISA_INT_MASK, MACE_ISA_INT_STATUS, mace_data::prev_assert_misc, mace_data::prev_assert_periph, and mace_data::reg.
Referenced by DEVICE_ACCESS(), mace_interrupt_assert(), and mace_interrupt_deassert().
void mips32_pc_to_pointers | ( | struct cpu * | ) |
Referenced by DEVICE_ACCESS().
void mips_pc_to_pointers | ( | struct cpu * | ) |
Referenced by DEVICE_ACCESS().