orcus
|
ARM940. More...
#include <stdint.h>
Functions | |
void | arm940ClockOff () |
Pause execution on the ARM940T. More... | |
void | arm940ClockOn () |
Resume execution on the ARM940T. More... | |
void | arm940Halt () |
Halt the ARM940T. More... | |
bool | arm940HasClock () |
Check if the ARM940T has a clock signal. More... | |
int | arm940Init (int memoryBank) |
Initialise ARM940T. More... | |
bool | arm940IsThis () |
Check if executing on the ARM940T. More... | |
void | arm940Run () |
Start execution on the ARM940T. More... | |
bool | arm940Running () |
Check if the ARM940T is running. More... | |
uint32_t | exportPointer (void *ptr) |
Export a pointer to the other CPU. More... | |
void * | importPointer (uint32_t addr) |
Import a pointer from the other CPU. More... | |
Variables | |
volatile uint16_t * | arm920Data |
Pointer to start of 16x 16-bit shared data registers. More... | |
volatile uint16_t * | arm940Data |
Pointer to start of 16x 16-bit shared data registers. More... | |
void arm940ClockOff | ( | ) |
Pause execution on the ARM940T by disabling its clock.
void arm940ClockOn | ( | ) |
Enable the clock on the ARM940T to resume execution at the same point it was at when the clock was disabled.
void arm940Halt | ( | ) |
Halt the ARM940T and hold it in RESET state.
bool arm940HasClock | ( | ) |
Check if the ARM940T has a clock signal, to see if execution is paused.
int arm940Init | ( | int | memoryBank | ) |
Initialise the ARM940T second CPU and configure the base address (in 16M increments) in physical memory which will appear as 0x0 from the perspective of the ARM940T.
This leaves the ARM940T in RESET state, and enables the clock.
Valid base addresses are 16M, 32M and 48M (banks 1, 2 and 3 respectively) to prevent overlapping with the ARM920T vector table (always stored at 0x0 in physical memory). It is possible to set both CPUs to start at 0x0 physical but in this case they will share a RESET vector and will execute the same code so it is highly discouraged unless you have an unusual use case in mind, and is not supported with this function.
Further documentation can be found on the Orcus wiki regarding using the ARM940T.
memoryBank | Memory bank to use as start of ARM940T address range (1 - 3) |
bool arm940IsThis | ( | ) |
Check if this call is being executed on the ARM940T.
void arm940Run | ( | ) |
Start execution on the ARM940T from its RESET vector entry (0x0) by releasing it from RESET state.
bool arm940Running | ( | ) |
Check if the ARM940T is running.
uint32_t exportPointer | ( | void * | ptr | ) |
Export a pointer to the address space of the other CPU.
ptr | Pointer to export |
void * importPointer | ( | uint32_t | addr | ) |
Import a pointer from the other CPU into the address space of the CPU we are running on.
addr | Address to import from other CPU |
|
extern |
Pointer to start of 16x 16-bit shared data registers. These can be written to from either CPU, but can only trigger an interrupt on the ARM920T.
|
extern |
Pointer to start of 16x 16-bit shared data registers. These can be written to from either CPU, but can only trigger an interrupt on the ARM940T.