Skip to content
Snippets Groups Projects
Commit aaf63e62 authored by Frans Kaashoek's avatar Frans Kaashoek
Browse files
parents ab777a9a 2c536bff
No related branches found
No related tags found
No related merge requests found
set $lastcs = -1 set $lastcs = -1
# This fails on Darwin because the default gdb has no ELF support
# echo + symbol-file obj/kern/kernel\n
# symbol-file obj/kern/kernel
define hook-stop define hook-stop
# There doesn't seem to be a good way to detect if we're in 16- or # There doesn't seem to be a good way to detect if we're in 16- or
# 32-bit mode, but in 32-bit mode we always run with CS == 8 in the # 32-bit mode, but in 32-bit mode we always run with CS == 8 in the
...@@ -26,3 +22,6 @@ end ...@@ -26,3 +22,6 @@ end
echo + target remote localhost:1234\n echo + target remote localhost:1234\n
target remote localhost:1234 target remote localhost:1234
echo + symbol-file kernel\n
symbol-file kernel
...@@ -39,7 +39,7 @@ OBJCOPY = $(TOOLPREFIX)objcopy ...@@ -39,7 +39,7 @@ OBJCOPY = $(TOOLPREFIX)objcopy
OBJDUMP = $(TOOLPREFIX)objdump OBJDUMP = $(TOOLPREFIX)objdump
CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32
CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector) CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector)
ASFLAGS = -m32 ASFLAGS = -m32 -gdwarf-2
# FreeBSD ld wants ``elf_i386_fbsd'' # FreeBSD ld wants ``elf_i386_fbsd''
LDFLAGS += -m $(shell $(LD) -V | grep elf_i386 2>/dev/null) LDFLAGS += -m $(shell $(LD) -V | grep elf_i386 2>/dev/null)
...@@ -143,9 +143,9 @@ GDBPORT = $(shell expr `id -u` % 5000 + 25000) ...@@ -143,9 +143,9 @@ GDBPORT = $(shell expr `id -u` % 5000 + 25000)
QEMUOPTS = -smp 2 -hdb fs.img xv6.img QEMUOPTS = -smp 2 -hdb fs.img xv6.img
qemu: fs.img xv6.img qemu: fs.img xv6.img
qemu -parallel mon:stdio $(QEMUOPTS) qemu -serial mon:stdio $(QEMUOPTS)
qemutty: fs.img xv6.img qemu-nox: fs.img xv6.img
qemu -nographic $(QEMUOPTS) qemu -nographic $(QEMUOPTS)
.gdbinit: .gdbinit.tmpl .gdbinit: .gdbinit.tmpl
...@@ -153,7 +153,11 @@ qemutty: fs.img xv6.img ...@@ -153,7 +153,11 @@ qemutty: fs.img xv6.img
qemu-gdb: fs.img xv6.img .gdbinit qemu-gdb: fs.img xv6.img .gdbinit
@echo "*** Now run 'gdb'." 1>&2 @echo "*** Now run 'gdb'." 1>&2
qemu -parallel mon:stdio $(QEMUOPTS) -s -S -p $(GDBPORT) qemu -serial mon:stdio $(QEMUOPTS) -s -S -p $(GDBPORT)
qemu-gdb-nox: fs.img xv6.img .gdbinit
@echo "*** Now run 'gdb'." 1>&2
qemu -nographic $(QEMUOPTS) -s -S -p $(GDBPORT)
# CUT HERE # CUT HERE
# prepare dist for students # prepare dist for students
......
...@@ -163,7 +163,12 @@ consputc(int c) ...@@ -163,7 +163,12 @@ consputc(int c)
; ;
} }
uartputc(c); if (c == BACKSPACE) {
uartputc('\b');
uartputc(' ');
uartputc('\b');
} else
uartputc(c);
cgaputc(c); cgaputc(c);
} }
...@@ -198,6 +203,7 @@ consoleintr(int (*getc)(void)) ...@@ -198,6 +203,7 @@ consoleintr(int (*getc)(void))
} }
break; break;
case C('H'): // Backspace case C('H'): // Backspace
case '\x7f':
if(input.e != input.w){ if(input.e != input.w){
input.e--; input.e--;
consputc(BACKSPACE); consputc(BACKSPACE);
...@@ -205,6 +211,9 @@ consoleintr(int (*getc)(void)) ...@@ -205,6 +211,9 @@ consoleintr(int (*getc)(void))
break; break;
default: default:
if(c != 0 && input.e-input.r < INPUT_BUF){ if(c != 0 && input.e-input.r < INPUT_BUF){
// The serial port produces 0x13, not 0x10
if(c == '\r')
c = '\n';
input.buf[input.e++ % INPUT_BUF] = c; input.buf[input.e++ % INPUT_BUF] = c;
consputc(c); consputc(c);
if(c == '\n' || c == C('D') || input.e == input.r+INPUT_BUF){ if(c == '\n' || c == C('D') || input.e == input.r+INPUT_BUF){
......
...@@ -44,6 +44,13 @@ memmove(void *dst, const void *src, uint n) ...@@ -44,6 +44,13 @@ memmove(void *dst, const void *src, uint n)
return dst; return dst;
} }
// memcpy exists to placate GCC. Use memmove.
void*
memcpy(void *dst, const void *src, uint n)
{
return memmove(dst, src, n);
}
int int
strncmp(const char *p, const char *q, uint n) strncmp(const char *p, const char *q, uint n)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment