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
|
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
|
||||||
|
|
12
Makefile
12
Makefile
|
@ -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
|
||||||
|
|
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);
|
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){
|
||||||
|
|
7
string.c
7
string.c
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue