mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-06 15:01:28 +12:00
SPU debugger: Add atomic status and tag update channels information
This commit is contained in:
parent
d7842b7de2
commit
f29589e5cf
2 changed files with 37 additions and 2 deletions
|
@ -36,7 +36,7 @@ enum MFC : u8
|
||||||
};
|
};
|
||||||
|
|
||||||
// Atomic Status Update
|
// Atomic Status Update
|
||||||
enum : u32
|
enum mfc_atomic_status : u32
|
||||||
{
|
{
|
||||||
MFC_PUTLLC_SUCCESS = 0,
|
MFC_PUTLLC_SUCCESS = 0,
|
||||||
MFC_PUTLLC_FAILURE = 1, // reservation was lost
|
MFC_PUTLLC_FAILURE = 1, // reservation was lost
|
||||||
|
@ -45,7 +45,7 @@ enum : u32
|
||||||
};
|
};
|
||||||
|
|
||||||
// MFC Write Tag Status Update Request Channel (ch23) operations
|
// MFC Write Tag Status Update Request Channel (ch23) operations
|
||||||
enum : u32
|
enum mfc_tag_update : u32
|
||||||
{
|
{
|
||||||
MFC_TAG_UPDATE_IMMEDIATE = 0,
|
MFC_TAG_UPDATE_IMMEDIATE = 0,
|
||||||
MFC_TAG_UPDATE_ANY = 1,
|
MFC_TAG_UPDATE_ANY = 1,
|
||||||
|
|
|
@ -25,6 +25,39 @@
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void fmt_class_string<mfc_atomic_status>::format(std::string& out, u64 arg)
|
||||||
|
{
|
||||||
|
format_enum(out, arg, [](mfc_atomic_status arg)
|
||||||
|
{
|
||||||
|
switch (arg)
|
||||||
|
{
|
||||||
|
case MFC_PUTLLC_SUCCESS: return "PUTLLC";
|
||||||
|
case MFC_PUTLLC_FAILURE: return "PUTLLC-FAIL";
|
||||||
|
case MFC_PUTLLUC_SUCCESS: return "PUTLLUC";
|
||||||
|
case MFC_GETLLAR_SUCCESS: return "GETLLAR";
|
||||||
|
}
|
||||||
|
|
||||||
|
return unknown;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void fmt_class_string<mfc_tag_update>::format(std::string& out, u64 arg)
|
||||||
|
{
|
||||||
|
format_enum(out, arg, [](mfc_tag_update arg)
|
||||||
|
{
|
||||||
|
switch (arg)
|
||||||
|
{
|
||||||
|
case MFC_TAG_UPDATE_IMMEDIATE: return "empty";
|
||||||
|
case MFC_TAG_UPDATE_ANY: return "ANY";
|
||||||
|
case MFC_TAG_UPDATE_ALL: return "ALL";
|
||||||
|
}
|
||||||
|
|
||||||
|
return unknown;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Verify AVX availability for TSX transactions
|
// Verify AVX availability for TSX transactions
|
||||||
static const bool s_tsx_avx = utils::has_avx();
|
static const bool s_tsx_avx = utils::has_avx();
|
||||||
|
|
||||||
|
@ -815,12 +848,14 @@ std::string spu_thread::dump_regs() const
|
||||||
fmt::append(ret, "Stall Stat: %s\n", ch_stall_stat);
|
fmt::append(ret, "Stall Stat: %s\n", ch_stall_stat);
|
||||||
fmt::append(ret, "Stall Mask: 0x%x\n", ch_stall_mask);
|
fmt::append(ret, "Stall Mask: 0x%x\n", ch_stall_mask);
|
||||||
fmt::append(ret, "Tag Stat: %s\n", ch_tag_stat);
|
fmt::append(ret, "Tag Stat: %s\n", ch_tag_stat);
|
||||||
|
fmt::append(ret, "Tag Update: %s\n", mfc_tag_update{ch_tag_upd});
|
||||||
|
|
||||||
if (const u32 addr = raddr)
|
if (const u32 addr = raddr)
|
||||||
fmt::append(ret, "Reservation Addr: 0x%x\n", addr);
|
fmt::append(ret, "Reservation Addr: 0x%x\n", addr);
|
||||||
else
|
else
|
||||||
fmt::append(ret, "Reservation Addr: none\n");
|
fmt::append(ret, "Reservation Addr: none\n");
|
||||||
|
|
||||||
|
fmt::append(ret, "Atomic Stat: %s\n", ch_atomic_stat); // TODO: use mfc_atomic_status formatting
|
||||||
fmt::append(ret, "Interrupts Enabled: %s\n", interrupts_enabled.load());
|
fmt::append(ret, "Interrupts Enabled: %s\n", interrupts_enabled.load());
|
||||||
fmt::append(ret, "Inbound Mailbox: %s\n", ch_in_mbox);
|
fmt::append(ret, "Inbound Mailbox: %s\n", ch_in_mbox);
|
||||||
fmt::append(ret, "Out Mailbox: %s\n", ch_out_mbox);
|
fmt::append(ret, "Out Mailbox: %s\n", ch_out_mbox);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue