This commit is contained in:
Freya Murphy 2024-10-07 19:33:05 -04:00
parent 83d2c4fa37
commit d373d2f398
Signed by: freya
GPG key ID: 744AB800E383AE52
3 changed files with 21 additions and 10 deletions

View file

@ -3,16 +3,16 @@
#include <inc/mmu.h>
#include <inc/memlayout.h>
# Shift Right Logical
# Shift Right Logical
#define SRL(val, shamt) (((val) >> (shamt)) & ~(-1 << (32 - (shamt))))
###################################################################
# The kernel (this code) is linked at address ~(KERNBASE + 1 Meg),
# The kernel (this code) is linked at address ~(KERNBASE + 1 Meg),
# but the bootloader loads it at address ~1 Meg.
#
#
# RELOC(x) maps a symbol x from its link address to its actual
# location in physical memory (its load address).
# location in physical memory (its load address).
###################################################################
#define RELOC(x) ((x) - KERNBASE)
@ -91,6 +91,6 @@ spin: jmp spin
.globl bootstack
bootstack:
.space KSTKSIZE
.globl bootstacktop
.globl bootstacktop
bootstacktop:

View file

@ -57,6 +57,19 @@ mon_kerninfo(int argc, char **argv, struct Trapframe *tf)
int
mon_backtrace(int argc, char **argv, struct Trapframe *tf)
{
uint32_t *bp = (uint32_t *) read_ebp();
uint32_t ip;
cprintf("Stack backtrace:\n");
do {
ip = * (bp + 1);
cprintf("ebp %08x eip %08x args", bp, ip);
for (int i = 2; i < 7; i++)
cprintf(" %08x", * (bp + i));
cprintf("\n");
} while ((bp = (uint32_t *) *bp));
// Your code here.
return 0;
}

View file

@ -205,11 +205,9 @@ vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap)
// (unsigned) octal
case 'o':
// Replace this with your code.
putch('X', putdat);
putch('X', putdat);
putch('X', putdat);
break;
num = getuint(&ap, lflag);
base = 8;
goto number;
// pointer
case 'p':