// The OS/K Team licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #include "arch.h" void dumpmem(ctx_t *ctx, ulong start, ulong size) { uint i; for (i = 0; i < size/sizeof(ushort); i++) { if (i % 4 == 0) { if (i > 0) { if (i % 8 == 0) log("\n"); else log(" "); } log("[0x%08lX]=0x", start + i * 2); } log("%04hX", ctx->mp[addr2real(start) + i]); } log("\n"); } void dumpfwstack(ctx_t *ctx) { //log("\nFirmware stack:\n"); //dumpmem(ctx, FWSTACK - 128, 128 + 64); } void d_log(ctx_t *ctx, char *fmt, ...) { va_list ap; va_start(ap, fmt); if (ctx->disf) { vfprintf(ctx->disf, fmt, ap); fflush(ctx->disf); } else vlog(fmt, ap); va_end(ap); } void dumpinstr(ctx_t *ctx, ulong rip, uint rep, ushort c, acc_t *p1, acc_t *p2) { acc_t *p = 0; instr_t *i = &ctx->i[c]; d_log(ctx, "0x%08lX: %s%s", rip, (rep ? "rep " : ""), i->name); if (i->prm1 != NOPRM) p = p1; lp: if (p != 0) { if (p->mem) d_log(ctx, " %c:[", getmempref(p->mlen)); else d_log(ctx, " "); if (p->type == A_REG) d_log(ctx, "%s", ctx->r[p->val].name); else d_log(ctx, "%c:0x%lX", getmempref(p->ilen), p->val); if (p->mem) { if (p->off) d_log(ctx, "+%hd", p->off); d_log(ctx, "]"); } if (p == p1 && i->prm2 != NOPRM) { p = p2; d_log(ctx, ","); goto lp; } } d_log(ctx, "\n"); }