55 lines
1.7 KiB
C
55 lines
1.7 KiB
C
|
|
#include <stdio.h>
|
||
|
|
#include <types.h>
|
||
|
|
|
||
|
|
#include <kernel/ksh_debug.h>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
void print_all_regs(void)
|
||
|
|
{
|
||
|
|
uint32_t eax, ebx, ecx, edx, esi, edi, esp, ebp, eip;
|
||
|
|
uint16_t cs, ds, es, ss;
|
||
|
|
|
||
|
|
asm volatile ("mov %%eax, %0" : "=r"(eax));
|
||
|
|
asm volatile ("mov %%ebx, %0" : "=r"(ebx));
|
||
|
|
asm volatile ("mov %%ecx, %0" : "=r"(ecx));
|
||
|
|
asm volatile ("mov %%edx, %0" : "=r"(edx));
|
||
|
|
asm volatile ("mov %%esi, %0" : "=r"(esi));
|
||
|
|
asm volatile ("mov %%edi, %0" : "=r"(edi));
|
||
|
|
asm volatile ("mov %%esp, %0" : "=r"(esp));
|
||
|
|
asm volatile ("mov %%ebp, %0" : "=r"(ebp));
|
||
|
|
|
||
|
|
asm volatile (
|
||
|
|
"call 1f\n"
|
||
|
|
"1: pop %0\n"
|
||
|
|
: "=r"(eip)
|
||
|
|
);
|
||
|
|
|
||
|
|
asm volatile ("mov %%cs, %0" : "=r"(cs));
|
||
|
|
asm volatile ("mov %%ds, %0" : "=r"(ds));
|
||
|
|
asm volatile ("mov %%es, %0" : "=r"(es));
|
||
|
|
asm volatile ("mov %%ss, %0" : "=r"(ss));
|
||
|
|
|
||
|
|
printf("EAX -> 0x%x EBX -> 0x%x ECX -> 0x%x EDX -> 0x%x\n", eax, ebx, ecx, edx);
|
||
|
|
printf("ESI -> 0x%x EDI -> 0x%x ESP -> 0x%x EBP -> 0x%x\n", esi, edi, esp, ebp);
|
||
|
|
printf("EIP (maybe) -> 0x%x\n", eip);
|
||
|
|
printf("CS -> 0x%04x DS -> 0x%04x ES -> 0x%04x SS -> 0x%04x\n", cs, ds, es, ss);
|
||
|
|
}
|
||
|
|
|
||
|
|
void print_gprs(void)
|
||
|
|
{
|
||
|
|
uint32_t eax, ebx, ecx, edx, esi, edi, esp, ebp;
|
||
|
|
|
||
|
|
asm volatile ("mov %%eax, %0" : "=r"(eax));
|
||
|
|
asm volatile ("mov %%ebx, %0" : "=r"(ebx));
|
||
|
|
asm volatile ("mov %%ecx, %0" : "=r"(ecx));
|
||
|
|
asm volatile ("mov %%edx, %0" : "=r"(edx));
|
||
|
|
asm volatile ("mov %%esi, %0" : "=r"(esi));
|
||
|
|
asm volatile ("mov %%edi, %0" : "=r"(edi));
|
||
|
|
asm volatile ("mov %%esp, %0" : "=r"(esp));
|
||
|
|
asm volatile ("mov %%ebp, %0" : "=r"(ebp));
|
||
|
|
|
||
|
|
printf("EAX -> 0x%x EBX -> 0x%x ECX -> 0x%x EDX -> 0x%x\n", eax, ebx, ecx, edx);
|
||
|
|
printf("ESI -> 0x%x EDI -> 0x%x ESP -> 0x%x EBP -> 0x%x\n", esi, edi, esp, ebp);
|
||
|
|
}
|