summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2022-08-09 14:17:46 -0400
committerRobert Morris <[email protected]>2022-08-09 14:17:46 -0400
commit27a669ef25c11e452bf2bbe01341adb36176ab73 (patch)
tree0f478e5048d0600b5d0dec8c1eebcd5632e3a9a7 /kernel
parentaf9abaca0543e392812fcde1138e68892b6c70bc (diff)
downloadxv6-labs-27a669ef25c11e452bf2bbe01341adb36176ab73.tar.gz
xv6-labs-27a669ef25c11e452bf2bbe01341adb36176ab73.tar.bz2
xv6-labs-27a669ef25c11e452bf2bbe01341adb36176ab73.zip
comment nits
Diffstat (limited to 'kernel')
-rw-r--r--kernel/entry.S10
-rw-r--r--kernel/kernelvec.S23
-rw-r--r--kernel/riscv.h4
-rw-r--r--kernel/start.c5
4 files changed, 23 insertions, 19 deletions
diff --git a/kernel/entry.S b/kernel/entry.S
index 90fdbac..5ab365e 100644
--- a/kernel/entry.S
+++ b/kernel/entry.S
@@ -1,21 +1,21 @@
- # qemu -kernel loads the kernel at 0x80000000
- # and causes each CPU to jump there.
+ # qemu -kernel loads the kernel at 0x80000000
+ # and causes each hart (i.e. CPU) to jump there.
# kernel.ld causes the following code to
# be placed at 0x80000000.
.section .text
.global _entry
_entry:
- # set up a stack for C.
+ # set up a stack for C.
# stack0 is declared in start.c,
# with a 4096-byte stack per CPU.
# sp = stack0 + (hartid * 4096)
la sp, stack0
li a0, 1024*4
- csrr a1, mhartid
+ csrr a1, mhartid
addi a1, a1, 1
mul a0, a0, a1
add sp, sp, a0
- # jump to start() in start.c
+ # jump to start() in start.c
call start
spin:
j spin
diff --git a/kernel/kernelvec.S b/kernel/kernelvec.S
index f42a364..fb31b32 100644
--- a/kernel/kernelvec.S
+++ b/kernel/kernelvec.S
@@ -1,17 +1,19 @@
- #
+ #
# interrupts and exceptions while in supervisor
# mode come here.
#
- # push all registers, call kerneltrap(), restore, return.
+ # the current stack is a kernel stack.
+ # push all registers, call kerneltrap().
+ # when kerneltrap() returns, restore registers, return.
#
.globl kerneltrap
.globl kernelvec
.align 4
kernelvec:
- // make room to save registers.
+ # make room to save registers.
addi sp, sp, -256
- // save the registers.
+ # save the registers.
sd ra, 0(sp)
sd sp, 8(sp)
sd gp, 16(sp)
@@ -44,14 +46,14 @@ kernelvec:
sd t5, 232(sp)
sd t6, 240(sp)
- // call the C trap handler in trap.c
+ # call the C trap handler in trap.c
call kerneltrap
- // restore registers.
+ # restore registers.
ld ra, 0(sp)
ld sp, 8(sp)
ld gp, 16(sp)
- // not this, in case we moved CPUs: ld tp, 24(sp)
+ # not tp (contains hartid), in case we moved CPUs
ld t0, 32(sp)
ld t1, 40(sp)
ld t2, 48(sp)
@@ -82,7 +84,7 @@ kernelvec:
addi sp, sp, 256
- // return to whatever we were doing in the kernel.
+ # return to whatever we were doing in the kernel.
sret
#
@@ -109,8 +111,9 @@ timervec:
add a3, a3, a2
sd a3, 0(a1)
- # raise a supervisor software interrupt.
- li a1, 2
+ # arrange for a supervisor software interrupt
+ # after this handler returns.
+ li a1, 2
csrw sip, a1
ld a3, 16(a0)
diff --git a/kernel/riscv.h b/kernel/riscv.h
index 645a775..20a01db 100644
--- a/kernel/riscv.h
+++ b/kernel/riscv.h
@@ -295,7 +295,7 @@ r_sp()
return x;
}
-// read and write tp, the thread pointer, which holds
+// read and write tp, the thread pointer, which xv6 uses to hold
// this core's hartid (core number), the index into cpus[].
static inline uint64
r_tp()
@@ -342,7 +342,7 @@ typedef uint64 *pagetable_t; // 512 PTEs
#define PTE_R (1L << 1)
#define PTE_W (1L << 2)
#define PTE_X (1L << 3)
-#define PTE_U (1L << 4) // 1 -> user can access
+#define PTE_U (1L << 4) // user can access
// shift a physical address to the right place for a PTE.
#define PA2PTE(pa) ((((uint64)pa) >> 12) << 10)
diff --git a/kernel/start.c b/kernel/start.c
index 938e837..e16f18a 100644
--- a/kernel/start.c
+++ b/kernel/start.c
@@ -54,8 +54,9 @@ start()
asm volatile("mret");
}
-// set up to receive timer interrupts in machine mode,
-// which arrive at timervec in kernelvec.S,
+// arrange to receive timer interrupts.
+// they will arrive in machine mode at
+// at timervec in kernelvec.S,
// which turns them into software interrupts for
// devintr() in trap.c.
void