First commit - define CPU, COP0 and COP1 registers

This commit is contained in:
2022-01-03 11:06:22 -05:00
commit e3b16f9d4a
6 changed files with 97 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target

7
Cargo.lock generated Normal file
View File

@@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "rultra64"
version = "0.1.0"

8
Cargo.toml Normal file
View File

@@ -0,0 +1,8 @@
[package]
name = "rultra64"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

3
src/bin/main.rs Normal file
View File

@@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}

1
src/lib.rs Normal file
View File

@@ -0,0 +1 @@
pub mod registers;

77
src/registers.rs Normal file
View File

@@ -0,0 +1,77 @@
pub struct Register<T: PartialOrd + Copy>(T);
pub struct CPURegisters {
zero: Register<u64>,
at: Register<u64>,
v0: Register<u64>,
v1: Register<u64>,
a0: Register<u64>,
a1: Register<u64>,
a2: Register<u64>,
a3: Register<u64>,
t0: Register<u64>,
t1: Register<u64>,
t2: Register<u64>,
t3: Register<u64>,
t4: Register<u64>,
t5: Register<u64>,
t6: Register<u64>,
t7: Register<u64>,
s0: Register<u64>,
s1: Register<u64>,
s2: Register<u64>,
s3: Register<u64>,
s4: Register<u64>,
s5: Register<u64>,
s6: Register<u64>,
s7: Register<u64>,
t8: Register<u64>,
t9: Register<u64>,
k0: Register<u64>,
k1: Register<u64>,
gp: Register<u64>,
sp: Register<u64>,
s8: Register<u64>,
ra: Register<u64>,
program_counter: Register<u64>,
}
pub struct COP0Registers {
index: Register<u32>,
random: Register<u32>,
entry_lo_0: Register<u64>,
entry_lo_1: Register<u64>,
context: Register<u64>,
page_mask: Register<u32>,
wired: Register<u32>,
r7: Register<u64>,
bad_v_addr: Register<u64>,
count: Register<u32>,
entry_hi: Register<u64>,
compare: Register<u32>,
status: Register<u32>,
cause: Register<u32>,
epc: Register<u64>,
prid: Register<u32>,
config: Register<u32>,
ll_addr: Register<u32>,
watch_lo: Register<u32>,
watch_hi: Register<u32>,
x_context: Register<u64>,
r21: Register<u64>,
r22: Register<u64>,
r23: Register<u64>,
r24: Register<u64>,
r25: Register<u64>,
parity_error: Register<u32>,
cache_error: Register<u32>,
tag_lo: Register<u32>,
tag_hi: Register<u32>,
error_epc: Register<u64>,
r31: Register<u64>,
}
pub struct COP1Registers {
registers: [Register<f32>; 32],
}