#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "cpu.h"
#include "devices.h"
#include "machine.h"
#include "memory.h"
#include "misc.h"
#include "timer.h"
#include "thirdparty/mc146818reg.h"
Go to the source code of this file.
Classes | |
struct | mc_data |
Macros | |
#define | to_bcd(x) ( ((x)/10) * 16 + ((x)%10) ) |
#define | from_bcd(x) ( ((x)>>4) * 10 + ((x)&15) ) |
#define | MC146818_TICK_SHIFT 14 |
#define | N_REGISTERS 1024 |
#define | NETBSD_HACK_INIT 0 |
#define | NETBSD_HACK_FIRST_1 1 |
#define | NETBSD_HACK_FIRST_2 2 |
#define | NETBSD_HACK_SECOND_1 3 |
#define | NETBSD_HACK_SECOND_2 4 |
#define | NETBSD_HACK_DONE 5 |
Functions | |
DEVICE_TICK (mc146818) | |
DEVICE_ACCESS (mc146818_jazz) | |
DEVICE_ACCESS (mc146818) | |
void | dev_mc146818_init (struct machine *machine, struct memory *mem, uint64_t baseaddr, char *irq_path, int access_style, int addrdiv) |
#define from_bcd | ( | x | ) | ( ((x)>>4) * 10 + ((x)&15) ) |
Definition at line 57 of file dev_mc146818.cc.
#define MC146818_TICK_SHIFT 14 |
Definition at line 61 of file dev_mc146818.cc.
#define N_REGISTERS 1024 |
Definition at line 65 of file dev_mc146818.cc.
#define NETBSD_HACK_DONE 5 |
Definition at line 101 of file dev_mc146818.cc.
#define NETBSD_HACK_FIRST_1 1 |
Definition at line 97 of file dev_mc146818.cc.
#define NETBSD_HACK_FIRST_2 2 |
Definition at line 98 of file dev_mc146818.cc.
#define NETBSD_HACK_INIT 0 |
Definition at line 96 of file dev_mc146818.cc.
#define NETBSD_HACK_SECOND_1 3 |
Definition at line 99 of file dev_mc146818.cc.
#define NETBSD_HACK_SECOND_2 4 |
Definition at line 100 of file dev_mc146818.cc.
#define to_bcd | ( | x | ) | ( ((x)/10) * 16 + ((x)%10) ) |
Definition at line 56 of file dev_mc146818.cc.
void dev_mc146818_init | ( | struct machine * | machine, |
struct memory * | mem, | ||
uint64_t | baseaddr, | ||
char * | irq_path, | ||
int | access_style, | ||
int | addrdiv | ||
) |
Definition at line 587 of file dev_mc146818.cc.
References mc_data::access_style, mc_data::addrdiv, CHECK_ALLOCATION, dev_mc146818_access(), DEV_MC146818_LENGTH, DM_DEFAULT, INTERRUPT_CONNECT, mc_data::irq, MACHINE_PREP, machine::machine_type, MC146818_ARC_JAZZ, MC146818_CATS, MC146818_DEC, MC146818_PC_CMOS, MC146818_PMPPC, MC146818_SGI, memory_device_register(), NETBSD_HACK_DONE, mc_data::reg, mc_data::ugly_netbsd_prep_hack_done, mc_data::uip_threshold, and mc_data::use_bcd.
Referenced by DEVINIT(), and MACHINE_SETUP().
DEVICE_ACCESS | ( | mc146818 | ) |
Definition at line 277 of file dev_mc146818.cc.
References mc_data::access_style, mc_data::addrdiv, data, debug, fatal(), if(), mc_data::interrupt_hz, mc_data::last_addr, MC146818_ALGOR, MC146818_ARC_JAZZ, MC146818_ARC_NEC, MC146818_CATS, MC146818_DEC, MC146818_PC_CMOS, MC146818_PMPPC, MC146818_SGI, MC_BASE_1_MHz, MC_BASE_32_KHz, MC_BASE_4_MHz, MC_RATE_1, MC_RATE_1024_Hz, MC_RATE_128_Hz, MC_RATE_16_Hz, MC_RATE_2, MC_RATE_2048_Hz, MC_RATE_256_Hz, MC_RATE_2_Hz, MC_RATE_32_Hz, MC_RATE_4096_Hz, MC_RATE_4_Hz, MC_RATE_512_Hz, MC_RATE_64_Hz, MC_RATE_8192_Hz, MC_RATE_8_Hz, MC_RATE_NONE, MC_REGA, MC_REGA_DVMASK, MC_REGA_RSMASK, MC_REGA_UIP, MC_REGB, MC_REGC, MC_REGC_IRQF, MC_REGC_PF, MC_REGC_UF, MC_REGD, MC_REGD_VRT, MEM_WRITE, mc_data::n_seconds_elapsed, mc_data::old_interrupt_hz, mc_data::previous_second, mc_data::reg, mc_data::timebase_hz, mc_data::timer, timer_add(), mc_data::uip_threshold, and mc_data::use_bcd.
DEVICE_ACCESS | ( | mc146818_jazz | ) |
Definition at line 152 of file dev_mc146818.cc.
References data, fatal(), mc_data::last_addr, and MEM_WRITE.
DEVICE_TICK | ( | mc146818 | ) |
Definition at line 115 of file dev_mc146818.cc.
References INTERRUPT_ASSERT, mc_data::irq, MC_REGB, MC_REGB_PIE, MC_REGC, MC_REGC_AF, MC_REGC_IRQF, MC_REGC_PF, MC_REGC_UF, mc_data::pending_timer_interrupts, and mc_data::reg.