#[macro_export]
macro_rules! trace_fetch {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::fetch", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_decode {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::decode", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_rename {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::rename", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_issue {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::issue", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_execute {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::execute", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_mem {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::mem", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_writeback {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::writeback", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_commit {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::commit", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_branch {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::branch", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_trap {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::trap", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_csr {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::csr", $($arg)*)
}
};
}
#[macro_export]
macro_rules! trace_fwd {
($guard:expr; $($arg:tt)*) => {
if $guard {
::tracing::trace!(target: "rvsim::fwd", $($arg)*)
}
};
}
#[derive(Debug)]
pub struct Hex(pub u64);
impl std::fmt::Display for Hex {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:#018x}", self.0)
}
}
#[derive(Debug)]
pub struct Hex32(pub u32);
impl std::fmt::Display for Hex32 {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:#010x}", self.0)
}
}