use deepsize2::DeepSizeOf;
use serde::{Deserialize, Serialize};
use crate::events::{
memory::{MemoryLocalEvent, MemoryReadRecord, MemoryWriteRecord},
PageProtLocalEvent, PageProtRecord,
};
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf)]
pub struct U256xU2048MulPageProtRecords {
pub read_a_page_prot_records: Vec<PageProtRecord>,
pub read_b_page_prot_records: Vec<PageProtRecord>,
pub write_lo_page_prot_records: Vec<PageProtRecord>,
pub write_hi_page_prot_records: Vec<PageProtRecord>,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf)]
pub struct U256xU2048MulEvent {
pub clk: u64,
pub a_ptr: u64,
pub a: Vec<u64>,
pub b_ptr: u64,
pub b: Vec<u64>,
pub lo_ptr: u64,
pub lo_ptr_memory: MemoryReadRecord,
pub lo: Vec<u64>,
pub hi_ptr: u64,
pub hi_ptr_memory: MemoryReadRecord,
pub hi: Vec<u64>,
pub a_memory_records: Vec<MemoryReadRecord>,
pub b_memory_records: Vec<MemoryReadRecord>,
pub lo_memory_records: Vec<MemoryWriteRecord>,
pub hi_memory_records: Vec<MemoryWriteRecord>,
pub local_mem_access: Vec<MemoryLocalEvent>,
pub page_prot_records: U256xU2048MulPageProtRecords,
pub local_page_prot_access: Vec<PageProtLocalEvent>,
}