use deepsize2::DeepSizeOf;
use serde::{Deserialize, Serialize};
use crate::events::{
MemoryLocalEvent, MemoryReadRecord, MemoryWriteRecord, PageProtLocalEvent, PageProtRecord,
};
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf)]
pub struct ShaExtendMemoryRecords {
pub w_i_minus_15_reads: MemoryReadRecord,
pub w_i_minus_2_reads: MemoryReadRecord,
pub w_i_minus_16_reads: MemoryReadRecord,
pub w_i_minus_7_reads: MemoryReadRecord,
pub w_i_write: MemoryWriteRecord,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf)]
pub struct ShaExtendPageProtRecords {
pub initial_page_prot_records: Vec<PageProtRecord>,
pub extension_page_prot_records: Vec<PageProtRecord>,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf)]
pub struct ShaExtendEvent {
pub clk: u64,
pub w_ptr: u64,
pub memory_records: Vec<ShaExtendMemoryRecords>,
pub page_prot_records: ShaExtendPageProtRecords,
pub local_mem_access: Vec<MemoryLocalEvent>,
pub local_page_prot_access: Vec<PageProtLocalEvent>,
}