Merge branch 'master' of git+ssh://amsterdam.csail.mit.edu/home/am0/6.828/xv6

This commit is contained in:
Frans Kaashoek 2009-10-07 17:42:25 -04:00
commit aaf63e62d7
4 changed files with 28 additions and 9 deletions

View file

@ -1,9 +1,5 @@
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
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

View file

@ -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)
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
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

View file

@ -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))
} }
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))
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){

View file

@ -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)
{ {