2019-05-15 20:06:45 +02:00
|
|
|
// The OS/K Team licenses this file to you under the MIT license.
|
|
|
|
// See the LICENSE file in the project root for more information.
|
2019-05-15 19:26:40 +02:00
|
|
|
|
2019-06-21 22:19:55 +02:00
|
|
|
#include <pc/device.h>
|
2019-05-15 19:26:40 +02:00
|
|
|
|
2019-06-16 12:48:30 +02:00
|
|
|
reg_t arch_r[] =
|
2019-05-15 19:26:40 +02:00
|
|
|
{
|
2019-09-08 19:04:07 +02:00
|
|
|
{ "eax", GPR }, { "ebx", GPR }, { "ecx", GPR }, { "edx", GPR },
|
|
|
|
{ "esi", GPR }, { "edi", GPR }, { "ax0", GPR }, { "ax1", GPR },
|
2019-07-22 13:18:13 +02:00
|
|
|
{ "ax2", GPR }, { "ax3", GPR }, { "ax4", GPR }, { "ax5", GPR },
|
2019-07-04 20:33:49 +02:00
|
|
|
|
2019-09-08 19:04:07 +02:00
|
|
|
{ "nx0", GPR }, { "nx1", GPR }, { "nx2", GPR }, { "nx3", GPR },
|
|
|
|
{ "nx4", GPR }, { "nx5", GPR }, { "nx6", GPR }, { "nx7", GPR },
|
|
|
|
{ "nx8", GPR }, { "grp", GPR }, { "trp", GPR }, { "srp", SYS },
|
2019-08-14 20:23:05 +02:00
|
|
|
|
|
|
|
{ "tmp", GPR }, { "rad", GPR }, { "cr0", SYS }, { "cr1", SYS },
|
|
|
|
{ "rip", GPR }, { "rbp", GPR }, { "rsp", GPR }, { "zero", GPR },
|
2019-05-15 19:26:40 +02:00
|
|
|
};
|
|
|
|
|
2019-07-01 00:45:08 +02:00
|
|
|
static_assert(sizeof(arch_r)/sizeof(reg_t) == NREGS, "");
|
|
|
|
|
2019-07-17 22:25:50 +02:00
|
|
|
#define TRACE logerr
|
|
|
|
|
2019-08-03 19:01:12 +02:00
|
|
|
void dumpregs()
|
2019-05-29 16:57:22 +02:00
|
|
|
{
|
2019-07-17 22:25:50 +02:00
|
|
|
TRACE("Current RFRAME index: #%lu", rfs_current_idx);
|
2019-05-30 12:44:56 +02:00
|
|
|
|
2019-08-05 16:06:37 +02:00
|
|
|
TRACE("\n\nEnviron #1:");
|
2019-09-08 19:04:07 +02:00
|
|
|
TRACE("\nepc=0x%-16lX eip=0x%-16lX", ctx->cur_pc, R(EIP));
|
2019-08-14 20:23:05 +02:00
|
|
|
TRACE("\ncr0=0x%-16lX cr1=0x%-16lX", R(CR0), R(CR1));
|
2019-08-05 16:06:37 +02:00
|
|
|
|
|
|
|
TRACE("\n\nEnviron #2:");
|
2019-09-08 19:04:07 +02:00
|
|
|
TRACE("\nesp=0x%-16lX ebp=0x%-16lX ins=0d%-16lu", R(ESP), R(EBP), ctx->ninstrs);
|
2019-08-05 16:06:37 +02:00
|
|
|
TRACE("\ngrp=0x%-16lX trp=0x%-16lX srp=0x%-16lX", R(GRP), R(TRP), R(SRP));
|
2019-07-01 00:45:08 +02:00
|
|
|
|
2019-07-17 22:25:50 +02:00
|
|
|
TRACE("\n\nArgument:");
|
|
|
|
TRACE("\nax0=0x%-16lX ax1=0x%-16lX ax2=0x%-16lX", R(AX0), R(AX1), R(AX2));
|
|
|
|
TRACE("\nax3=0x%-16lX ax4=0x%-16lX ax5=0x%-16lX", R(AX3), R(AX4), R(AX5));
|
2019-06-23 21:12:25 +02:00
|
|
|
|
2019-07-17 22:25:50 +02:00
|
|
|
TRACE("\n\nVolatile:");
|
2019-09-08 19:04:07 +02:00
|
|
|
TRACE("\neax=0x%-16lX ebx=0x%-16lX ecx=0x%-16lX", R(EAX), R(EBX), R(ECX));
|
|
|
|
TRACE("\nedx=0x%-16lX esi=0x%-16lX edi=0x%-16lX", R(EDX), R(ESI), R(EDI));
|
2019-06-23 21:12:25 +02:00
|
|
|
|
2019-07-17 22:25:50 +02:00
|
|
|
TRACE("\n\nPersistent:");
|
2019-09-08 19:04:07 +02:00
|
|
|
TRACE("\nnx0=0x%-16lX nx1=0x%-16lX nx2=0x%-16lX", R(NX0), R(NX1), R(NX2));
|
|
|
|
TRACE("\nnx3=0x%-16lX nx4=0x%-16lX nx5=0x%-16lX", R(NX3), R(NX4), R(NX5));
|
|
|
|
TRACE("\nnx6=0x%-16lX nx7=0x%-16lX nx8=0x%-16lX", R(NX6), R(NX7), R(NX8));
|
2019-06-14 13:34:24 +02:00
|
|
|
|
2019-07-17 22:25:50 +02:00
|
|
|
TRACE("\n");
|
2019-06-18 22:56:41 +02:00
|
|
|
|
2019-09-08 19:04:07 +02:00
|
|
|
assert(R(EZX) == 0);
|
2019-05-29 16:57:22 +02:00
|
|
|
}
|
|
|
|
|