Merge branch 'master' of git+ssh://amsterdam.csail.mit.edu/home/am0/6.828/xv6
This commit is contained in:
commit
aaf63e62d7
4 changed files with 28 additions and 9 deletions
|
@ -1,9 +1,5 @@
|
|||
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
|
||||
# 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
|
||||
|
@ -26,3 +22,6 @@ end
|
|||
|
||||
echo + target remote localhost:1234\n
|
||||
target remote localhost:1234
|
||||
|
||||
echo + symbol-file kernel\n
|
||||
symbol-file kernel
|
||||
|
|
12
Makefile
12
Makefile
|
@ -39,7 +39,7 @@ OBJCOPY = $(TOOLPREFIX)objcopy
|
|||
OBJDUMP = $(TOOLPREFIX)objdump
|
||||
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)
|
||||
ASFLAGS = -m32
|
||||
ASFLAGS = -m32 -gdwarf-2
|
||||
# FreeBSD ld wants ``elf_i386_fbsd''
|
||||
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
|
||||
|
||||
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)
|
||||
|
||||
.gdbinit: .gdbinit.tmpl
|
||||
|
@ -153,7 +153,11 @@ qemutty: fs.img xv6.img
|
|||
|
||||
qemu-gdb: fs.img xv6.img .gdbinit
|
||||
@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
|
||||
# prepare dist for students
|
||||
|
|
11
console.c
11
console.c
|
@ -163,7 +163,12 @@ consputc(int c)
|
|||
;
|
||||
}
|
||||
|
||||
uartputc(c);
|
||||
if (c == BACKSPACE) {
|
||||
uartputc('\b');
|
||||
uartputc(' ');
|
||||
uartputc('\b');
|
||||
} else
|
||||
uartputc(c);
|
||||
cgaputc(c);
|
||||
}
|
||||
|
||||
|
@ -198,6 +203,7 @@ consoleintr(int (*getc)(void))
|
|||
}
|
||||
break;
|
||||
case C('H'): // Backspace
|
||||
case '\x7f':
|
||||
if(input.e != input.w){
|
||||
input.e--;
|
||||
consputc(BACKSPACE);
|
||||
|
@ -205,6 +211,9 @@ consoleintr(int (*getc)(void))
|
|||
break;
|
||||
default:
|
||||
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;
|
||||
consputc(c);
|
||||
if(c == '\n' || c == C('D') || input.e == input.r+INPUT_BUF){
|
||||
|
|
7
string.c
7
string.c
|
@ -44,6 +44,13 @@ memmove(void *dst, const void *src, uint n)
|
|||
return dst;
|
||||
}
|
||||
|
||||
// memcpy exists to placate GCC. Use memmove.
|
||||
void*
|
||||
memcpy(void *dst, const void *src, uint n)
|
||||
{
|
||||
return memmove(dst, src, n);
|
||||
}
|
||||
|
||||
int
|
||||
strncmp(const char *p, const char *q, uint n)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue