#include <stdio.h>
#include <stdlib.h>
#include <string.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/if_mecreg.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_mec_data |
struct | sgi_ust_data |
struct | sgi_mte_data |
Macros | |
#define | CRIME_TICKSHIFT 14 |
#define | CRIME_SPEED_MUL_FACTOR 1 |
#define | CRIME_SPEED_DIV_FACTOR 1 |
#define | DEV_CRIME_LENGTH 0x1000 |
#define | DEV_MACE_LENGTH 0x100 |
#define | MEC_TICK_SHIFT 14 |
#define | MAX_TX_PACKET_LEN 1700 |
#define | N_RX_ADDRESSES 16 |
#define | ZERO_CHUNK_LEN 4096 |
Functions | |
void | crime_interrupt_assert (struct interrupt *interrupt) |
void | crime_interrupt_deassert (struct interrupt *interrupt) |
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_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_TICK (sgi_mec) | |
DEVICE_ACCESS (sgi_mec) | |
void | dev_sgi_mec_init (struct machine *machine, struct memory *mem, uint64_t baseaddr, char *irq_path, unsigned char *macaddr) |
DEVICE_ACCESS (sgi_ust) | |
void | dev_sgi_ust_init (struct memory *mem, uint64_t baseaddr) |
DEVICE_ACCESS (sgi_mte) | |
void | dev_sgi_mte_init (struct memory *mem, uint64_t baseaddr) |
#define CRIME_SPEED_DIV_FACTOR 1 |
Definition at line 60 of file dev_sgi_ip32.cc.
Referenced by DEVICE_TICK().
#define CRIME_SPEED_MUL_FACTOR 1 |
Definition at line 59 of file dev_sgi_ip32.cc.
Referenced by DEVICE_TICK().
#define CRIME_TICKSHIFT 14 |
Definition at line 58 of file dev_sgi_ip32.cc.
Referenced by dev_crime_init(), and DEVICE_TICK().
#define DEV_CRIME_LENGTH 0x1000 |
Definition at line 67 of file dev_sgi_ip32.cc.
Referenced by dev_crime_init().
#define DEV_MACE_LENGTH 0x100 |
Definition at line 311 of file dev_sgi_ip32.cc.
Referenced by DEVINIT().
#define MAX_TX_PACKET_LEN 1700 |
Definition at line 587 of file dev_sgi_ip32.cc.
#define MEC_TICK_SHIFT 14 |
Definition at line 585 of file dev_sgi_ip32.cc.
#define N_RX_ADDRESSES 16 |
Definition at line 588 of file dev_sgi_ip32.cc.
#define ZERO_CHUNK_LEN 4096 |
Definition at line 1177 of file dev_sgi_ip32.cc.
Referenced by DEVICE_ACCESS().
void crime_interrupt_assert | ( | struct interrupt * | interrupt | ) |
Definition at line 79 of file dev_sgi_ip32.cc.
References CRIME_INTMASK, CRIME_INTSTAT, interrupt::extra, INTERRUPT_ASSERT, crime_data::irq, interrupt::line, and crime_data::reg.
Referenced by dev_crime_init().
void crime_interrupt_deassert | ( | struct interrupt * | interrupt | ) |
Definition at line 98 of file dev_sgi_ip32.cc.
References CRIME_INTMASK, CRIME_INTSTAT, interrupt::extra, INTERRUPT_DEASSERT, crime_data::irq, interrupt::line, and crime_data::reg.
Referenced by dev_crime_init().
void dev_crime_init | ( | struct machine * | machine, |
struct memory * | mem, | ||
uint64_t | baseaddr, | ||
char * | irq_path, | ||
int | use_fb | ||
) |
Definition at line 268 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 545 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_mec_init | ( | struct machine * | machine, |
struct memory * | mem, | ||
uint64_t | baseaddr, | ||
char * | irq_path, | ||
unsigned char * | macaddr | ||
) |
Definition at line 1075 of file dev_sgi_ip32.cc.
References CHECK_ALLOCATION, INTERRUPT_CONNECT, sgi_mec_data::irq, and sgi_mec_data::macaddr.
Referenced by MACHINE_SETUP().
void dev_sgi_mte_init | ( | struct memory * | mem, |
uint64_t | baseaddr | ||
) |
Definition at line 1424 of file dev_sgi_ip32.cc.
References CHECK_ALLOCATION, dev_sgi_mte_access(), DEV_SGI_MTE_LENGTH, DM_DEFAULT, and memory_device_register().
Referenced by MACHINE_SETUP().
void dev_sgi_ust_init | ( | struct memory * | mem, |
uint64_t | baseaddr | ||
) |
Definition at line 1152 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 156 of file dev_sgi_ip32.cc.
References machine::cpus, CRIME_CONTROL, CRIME_INTMASK, CRIME_INTSTAT, CRIME_TIME, CRM_MEM_BANK_CTRL0, CRM_MEM_BANK_CTRL1, data, debug, fatal(), INTERRUPT_ASSERT, INTERRUPT_DEASSERT, crime_data::irq, cpu::machine, MEM_READ, MEM_WRITE, memory_readmax64(), machine::ncpus, crime_data::reg, cpu::running, and crime_data::use_fb.
DEVICE_ACCESS | ( | mace | ) |
Definition at line 365 of file dev_sgi_ip32.cc.
References data, debug, fatal(), INTERRUPT_ASSERT, INTERRUPT_DEASSERT, mace_data::irq_misc, mace_data::irq_periph, MACE_ISA_INT_MASK, MACE_ISA_INT_STATUS, MEM_READ, MEM_WRITE, and mace_data::reg.
DEVICE_ACCESS | ( | macepci | ) |
Definition at line 479 of file dev_sgi_ip32.cc.
References bus_pci_data_access(), bus_pci_decompose_1(), bus_pci_setaddr(), data, debug, MEM_READ, MEM_WRITE, memory_readmax64(), memory_writemax64(), and macepci_data::pci_data.
DEVICE_ACCESS | ( | sgi_mec | ) |
Definition at line 916 of file dev_sgi_ip32.cc.
References data, MEC_INT_STATUS, MEC_MAC_CONTROL, MEC_TX_RING_PTR, MEC_TX_RING_WRITE_PTR, MEM_WRITE, memory_readmax64(), and sgi_mec_data::reg.
DEVICE_ACCESS | ( | sgi_ust | ) |
Definition at line 1113 of file dev_sgi_ip32.cc.
References data, debug, MEM_READ, MEM_WRITE, memory_readmax64(), memory_writemax64(), and sgi_ust_data::reg.
DEVICE_ACCESS | ( | sgi_mte | ) |
Definition at line 1184 of file dev_sgi_ip32.cc.
References addr, data, debug, fatal(), cpu::mem, MEM_READ, MEM_WRITE, memory_readmax64(), cpu::memory_rw, memory_writemax64(), NO_EXCEPTIONS, op, PHYSICAL, sgi_mte_data::reg, and ZERO_CHUNK_LEN.
DEVICE_TICK | ( | crime | ) |
Definition at line 132 of file dev_sgi_ip32.cc.
References CRIME_SPEED_DIV_FACTOR, CRIME_SPEED_MUL_FACTOR, CRIME_TICKSHIFT, CRIME_TIME, and crime_data::reg.
DEVICE_TICK | ( | sgi_mec | ) |
Definition at line 892 of file dev_sgi_ip32.cc.
DEVINIT | ( | mace | ) |
Definition at line 421 of file dev_sgi_ip32.cc.
References devinit::addr, CHECK_ALLOCATION, 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(), MACE_PERIPH_MISC, MACE_PERIPH_SERIAL, 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 323 of file dev_sgi_ip32.cc.
References interrupt::extra, INTERRUPT_ASSERT, mace_data::irq_misc, mace_data::irq_periph, interrupt::line, MACE_ISA_INT_MASK, MACE_ISA_INT_STATUS, and mace_data::reg.
Referenced by DEVINIT().
void mace_interrupt_deassert | ( | struct interrupt * | interrupt | ) |
Definition at line 343 of file dev_sgi_ip32.cc.
References interrupt::extra, INTERRUPT_DEASSERT, mace_data::irq_misc, mace_data::irq_periph, interrupt::line, MACE_ISA_INT_MASK, MACE_ISA_INT_STATUS, and mace_data::reg.
Referenced by DEVINIT().