No longer using the rsp from the entry to the kernel, but instead switching rsp at task-switching time in assembly. This currently breaks fork()
26 lines
648 B
C
26 lines
648 B
C
#pragma once
|
|
/// \file debug.h
|
|
/// Debugging utilities
|
|
|
|
#include <stdint.h>
|
|
|
|
extern "C" {
|
|
uintptr_t get_rsp();
|
|
uintptr_t get_rip();
|
|
uintptr_t get_frame(int frame);
|
|
uintptr_t get_gsbase();
|
|
void _halt();
|
|
}
|
|
|
|
extern size_t __counter_syscall_enter;
|
|
extern size_t __counter_syscall_sysret;
|
|
|
|
void print_regs(const cpu_state ®s);
|
|
void print_stack(const cpu_state ®s);
|
|
void print_stacktrace(int skip);
|
|
|
|
#define print_regL(name, value) cons->printf(" %s: %016lx", name, (value));
|
|
#define print_regM(name, value) cons->printf(" %s: %016lx", name, (value));
|
|
#define print_regR(name, value) cons->printf(" %s: %016lx\n", name, (value));
|
|
|