From 49684ab687cf9fa8d6180aea5a5ca66705330f12 Mon Sep 17 00:00:00 2001
From: yzw <2000013168@stu.pku.edu.cn>
Date: Sun, 22 Dec 2024 06:41:26 +0800
Subject: [PATCH] os lab12

---
 fs.img                |   Bin 268435456 -> 268435456 bytes
 kernel/include/defs.h |     1 +
 kernel/include/proc.h |     5 +-
 kernel/proc.c         |   138 +
 kernel/proc.o         |   Bin 155400 -> 178352 bytes
 kernel/syscall.o      |   Bin 49176 -> 51312 bytes
 kernel/sysfile.o      |   Bin 110840 -> 113712 bytes
 kernel/sysproc.o      |   Bin 46456 -> 53096 bytes
 target/kernel         |   Bin 279632 -> 285688 bytes
 target/kernel.asm     | 14444 +++++++++++++++++++++-------------------
 target/kernel.sym     |   262 +-
 11 files changed, 7756 insertions(+), 7094 deletions(-)

diff --git a/fs.img b/fs.img
index f5213a52b1e6e44785593f473f8d11737c7e40ab..941a9bfcd8543732f2ef3b4ab4352c5bcb91c954 100644
GIT binary patch
delta 3590736
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
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4
zG^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF
z(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+Gy
zNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*
zAq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYM
zhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV2
z8q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7
zX-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHU
zq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZ
zkcKp*Aq{CrLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{Cr
zLmJYMhBTxh4QWV28q$!4G^8O7X-GpF(vXHUq#+GyNJARZkcKp*Aq{CrLmJYMhBTxh
z4QWV28q$!4G^8O7X-LEWue~}b0sw#j0Ct*+riB__@(5xpF&o;@hBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
z4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@
zHngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq
z+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c
zXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&
zp$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%A
zhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c
z8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)
zZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJ
zw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?
z(1td&p$%<lLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<l
zLmS%AhBmaJ4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`cXhR#?(1td&p$%<lLmS%AhBmaJ
i4Q*&c8`{u@HngD)ZD>Oq+R%nJw4n`c_<F;x*^C3sjz?zz

delta 3003190
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
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBoLKkd*l0RR9D0-*lqniy>n%-|0ZFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
u0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0Rslsf%_D|5UUsf

diff --git a/kernel/include/defs.h b/kernel/include/defs.h
index 1c2e250..6d17679 100644
--- a/kernel/include/defs.h
+++ b/kernel/include/defs.h
@@ -135,6 +135,7 @@ int             either_copyout(int user_dst, uint64 dst, void *src, uint64 len);
 int             either_copyin(void *dst, int user_src, uint64 src, uint64 len);
 void            procdump(void);
 void            test_proc_init(int);
+int             wait4(int, uint64, int);
 
 // swtch.S
 void            swtch(struct context*, struct context*);
diff --git a/kernel/include/proc.h b/kernel/include/proc.h
index 94812bc..46bf989 100644
--- a/kernel/include/proc.h
+++ b/kernel/include/proc.h
@@ -92,4 +92,7 @@ void            procdump(void);
 uint64          procnum(void);
 void            test_proc_init(int);
 
-#endif
\ No newline at end of file
+int             clone(int);
+int             wait4(int, uint64, int);
+
+#endif
diff --git a/kernel/proc.c b/kernel/proc.c
index 1700926..2f0fd8e 100644
--- a/kernel/proc.c
+++ b/kernel/proc.c
@@ -792,3 +792,141 @@ procnum(void)
   return num;
 }
 
+static int check_for_children(struct proc *p);
+static struct proc* find_zombie_child(struct proc *p, int *pid, int *status, uint64 addr);
+static void copy_open_files(struct proc *np, struct proc *p);
+
+int
+wait4(int pid, uint64 addr, int options)
+{
+  if (pid == -1) {
+    return wait(addr);
+  }
+
+  struct proc *p = myproc();
+  struct proc *np;
+  int havekids, status;
+
+  // 持有 p->lock 以避免子进程退出时的唤醒丢失
+  acquire(&p->lock);
+
+  for (;;) {
+    havekids = check_for_children(p);
+    if (!havekids || p->killed) {
+      release(&p->lock);
+      return -1;
+    }
+
+    np = find_zombie_child(p, &pid, &status, addr);
+    if (np != NULL) {
+      freeproc(np);
+      release(&np->lock);
+      release(&p->lock);
+      return pid;
+    }
+
+    // 等待子进程退出
+    sleep(p, &p->lock);  //DOC: wait-sleep
+  }
+}
+
+// 辅助函数:检查进程是否有子进程
+static int check_for_children(struct proc *p) {
+  int havekids = 0;
+  for (struct proc *np = proc; np < &proc[NPROC]; np++) {
+    if (np->parent == p) {
+      havekids = 1;
+      break;
+    }
+  }
+  return havekids;
+}
+
+// 辅助函数:查找并处理僵尸子进程
+static struct proc* find_zombie_child(struct proc *p, int *pid, int *status, uint64 addr) {
+  for (struct proc *np = proc; np < &proc[NPROC]; np++) {
+    if (np->parent == p) {
+      acquire(&np->lock);
+      if (np->state == ZOMBIE) {
+        *pid = np->pid;
+        *status = np->xstate << 8;
+        if (addr != 0 && copyout2(addr, (char *)status, sizeof(*status)) < 0) {
+          release(&np->lock);
+          return NULL;
+        }
+        return np;
+      }
+      release(&np->lock);
+    }
+  }
+  return NULL;
+}
+
+int
+clone(int stack)
+{
+  int pid;
+  struct proc *np;
+  struct proc *p = myproc();
+
+  if (stack < 0 || stack > p->sz)
+    return -1;
+
+  // 分配新进程
+  if ((np = allocproc()) == NULL) {
+    return -1;
+  }
+
+  // 从父进程复制用户内存到子进程
+  if (uvmcopy(p->pagetable, np->pagetable, np->kpagetable, p->sz) < 0) {
+    freeproc(np);
+    release(&np->lock);
+    return -1;
+  }
+  np->sz = p->sz;
+
+  // 设置父进程
+  np->parent = p;
+
+  // 从父进程复制跟踪掩码
+  np->tmask = p->tmask;
+
+  // 从父进程复制保存的用户寄存器
+  *(np->trapframe) = *(p->trapframe);
+
+  // 使 fork 在子进程中返回 0
+  np->trapframe->a0 = 0;
+
+  // 设置子进程的堆栈指针
+  if (stack > 0) np->trapframe->sp = stack;
+
+  // 增加打开文件描述符的引用计数
+  copy_open_files(np, p);
+
+  // 复制当前工作目录
+  np->cwd = edup(p->cwd);
+
+  // 复制进程名
+  safestrcpy(np->name, p->name, sizeof(p->name));
+
+  // 获取子进程的 PID
+  pid = np->pid;
+
+  // 设置子进程状态为可运行
+  np->state = RUNNABLE;
+
+  // 释放进程锁
+  release(&np->lock);
+
+  return pid;
+}
+
+// 辅助函数:从父进程复制打开文件描述符到子进程
+static void copy_open_files(struct proc *np, struct proc *p) {
+  for (int i = 0; i < NOFILE; i++) {
+    if (p->ofile[i]) {
+      np->ofile[i] = filedup(p->ofile[i]);
+    }
+  }
+}
+
diff --git a/kernel/proc.o b/kernel/proc.o
index 6a667a2c35d65bfd543e423785b50868c9e6f388..ca15055a43a09b0c7ffb422ce9600f7f14f1681b 100644
GIT binary patch
literal 178352
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
A6951J

literal 155400
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

diff --git a/kernel/syscall.o b/kernel/syscall.o
index 14db7628871253a305fb006dd27fee51f0da3b5d..7f13717b50900bbd5b94da38322cb180844d6416 100644
GIT binary patch
literal 51312
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
O9!yNxrbQK^toy%hq=8%j

literal 49176
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%0D0I{rRgbx+CbHV^x1*;B%64|9K@-
z*r5D(8RT;7mA@YNcPaPh-Att|%Ad&~m)oZNt3mu1DSs~Tzg+qDK)+M@PXhm&m0uO?
zm#-<G8u)xid4Aw?ukxP<e7Ew3fIs1Q9IXrZQ_AlQ_;czrA>gk#UXuBlnwI}b^-l-=
z^S1hT20rgA_n$j6g?a9lK}l4eK`vLUd}hFhI37o51bl?@^8;S4{IY;gP<~6mD;zJ2
z!uyIdRPV3fGnEcgenqe!=P3`*Cr2so4)h;aeoDZXCHSmV?yui7@vL#YEV?Y%FYT%i
z@7r%QpJ05R>3B&Lo+r;!z9G}3%Y9mX-VNfvLV0*!`da1T`~Ho}!~4cxcDyXYb3b^w
zQ}yBZHQ!YpZtpI~OQP`p+ivCGWOK<st~|V6eM-6iJesNWyyJ27aL^AgD-XYy`J?(&
z1p5D0eni0EPw+{(6Gj|`*E9VcFLTdV&O|A{Jyd?BJ1#RN2dGbV(C&fC!|^}a@sjAI
zKwqo;ynxSApZNiw>v&o8(||8heI`PmJ63skep~K%Nfdq`msb8-;P0OP6UF`+MAS%I
zg8v4`%lh0mJ4^Nc{zt~>Jmq13e#-HZs52PPmn*+L;Ga|eTEK5qE|c+lEw?!yN8$MV
zhVt;f%H58aMN5M5aG&bK_lw=i!|nZv<0X;5zRra73+1N=aXzd3k$}Ib{^94-SCzk%
zv39vP9WRRx4)*Umst?c4{;^bX6rMMV+z-4;qP(CV1}m=!_z1`2=+>a!a^>Os-2~;~
z`(uUUeZLQyrTTusexIv+R=|%`9^ME3xbias{W9g@_n|A5Zw>Tol!yJ+s{Hw&AG(!?
z=ff?^!{cJB^6>tfJa}A|z+A{@lvlb@ka@XMd3YcDTIGjjq%L=Z^4S6ZlJdg?{x#+E
z1O83rM+W@6%ESBN_bOi!=pR;oOu!#ietf`xrhHkzf2Dj?z+X@v9>2d=J|yVsH<X9>
zb^oS3eE)i1d3oTIDnuZ06rN9H0<+_9A)%#I`QM2lyRY)_^U-MKzYg>hmHYeFnZl{c
z-_IbIo31<@a)&Ap&nJf~zcbignC1FM2L&yFkLbg^KK%AHijEThL0QztB=BXzhe+`2
zw2qC(#sqy=0^gFr&lL`T+mAMWFHX>3rFt80cD!Dfpua7Fe?xujyfH?%?{4LGeKK45
z!wEi*s^0da`TShDo!>0ZXO!FZ<jv~;VuJtc3H-kk_y-BRP<~dIZNCpm;QJ@=i3z+q
zfghZ}=O*yQ34D11Z%p8A34CJ$#}7KQ_0NR~{IUdoZ36#d0>3?h-<`l8NZ^kp@TU{_
z%L)8X3EY1ECBJsk-|<x}sw|JjZHg)u%~?Em!O_Q5nxv}-RRQ^*<y9=I6+E{RFI9M{
z#!HR7AOli09WOKRGEH8pA+13{4RSN(f1UhCIfRg)_FQL+wYk7^Q9c*Kxu`L>$~Wj*
zta43Oxms1OnrmpTYgm4a=k%^>m8<I_m|N|mb#<#<U3ngdI9Izit6ihju5PufTkYz)
znCH6i=gQCiL|=otjZLdJtX-L2y;^>fhREg|JHN_>A{kp3j2~uVwaGHRUQ2UZld90T
z)Pb`ku$BaINrI3hK}?b$C`k~NB(6V@s#YF}=(#$%-a)xG;Q9vZ>Q<$8u7`xXK0>NK
z)#~GV3S8T9y@hoR&h;49)z9^sth;_gs(!BTu&$d}qkc6SUyb_JXnZy5SEJiotNm50
zezh83t#z6D)v8~u`qipmt@_of-!$ug^_!-C)6{R8`b|^6Y3eu4`p-Icni@}2<LPQV
zU5%%!@pLtopYggKHC>ITtMPO-o~eG*Emhwc>N`VyXQ=NC^_`)<Gt_s6`p!__8R|Df
z{p!@OPW|fCuTK5y)UQtc>eR1J{p!@OPW@)8-%RzJseUunZ>IXqRKJ<(H`6+_(u8VQ
zRjH0um1<d4sh(ApYF1T=+Vkt(UY<YCc6L=I8d-GgaXor8R$uR4=iyb#(3~W2I^LhI
zBthH9`%{)AJ?&y!r4`haR=gQl{XD!LzsQY7N#H4oZeo=?=%gOjrJe<as1Tf2yODPM
zA~&!k@e$bQsj9@fSRhQXKq6J0F;Z+kQiOpN>iT+jf~=qC5~1$cMvCo`CN#0m={c3S
zbBMHs0%=RbG#7V9k&Uyx;@TE9+(eB;+CV7+kwm)FzxH&8Gp=_IQbVO0IwD6!Gw^lY
z>EZZAc2=lzLCmjrXNCFmTq2dUV|B-(Ph{u$-nH{pmFpr27g!ocg66D4VIdpm>pHE3
z4?};(#&4Ywne-l@B!0)cqy6|r?jRTFUEHBAW`0+?Gm4b?>Mmp{^PA@xx<$6pz53y(
zK92a1d~@E>^^t_9-RrCC?r|F=X6otf+(}oUH*u$0=^!t0CvsWyW$tt?YrdX4nM*wl
z-M8n4zidIBJq5u(5<xBydLF_M{LC9agT})iGS6DTa~^sgzkugL^gQ{&KPbXI|3H7E
zufNrXf999``ZNP6b2gIVm;0j0{IVT?p9_`T0}YVrc~XP>u|J6a8(qlh!yAy5->T!8
z5y)m9FM(gggSdw!AfwNO@L7pL{w5dl{`cs}`5&|+hsOjUb-z4!Mea{@A=mSxdH3)H
z5dVY)<T5|acTb}L(!bS(EPk%94{+dL?)UuFE@<!s4W#Y?8+IoNGk)wd3qG>g_prET
z_H)oc<w1@<ai3IoX&y<r=7&pqpXQO+{S(Z4ew4V~CkeTI{tWpNts8Q?zY%h~zk%QP
z-cRkW&^+RNfcPrSqaR+T&*px<q@RE6ZV{^PEYkm;^gD?Axj!C!f%vPWx7fn|w?0Sz
zKc;n&{7m!U{2k)2mBZ(C^0)gK=%2?`;}X?`-0tVV=TGEg_lME$6Xa8_8tC63y`S&a
zx8GK)W{BwjOnUo1E9{5URfGNbAhmmza_q;4h;LO6AD)|Zy>hh6`_b+<hWts=^W3es
z$e)jwK{-AM^v{z%>t1ahGUDes4<l8N_#Y;{{k~(eF!q_Qdhnl;-tOzd|3>1o$^Soy
z+k9r|cN6!|?Uv_73i}c9<J2eY&lSosemEYR{|x^}$mbM_=f}j`68udvRx&o`jUk;N
z|92syOP;3C^LO9IL%rNaaSQan&^!|3p}xOrp#P=jkr)s47zbFOf6C?ji}6rDR5j55
z7wL_MdW#d?_ctArsD}NA1)S$(RyykW|B!wa@xK#aNBkY)9mM%N-0j5QBmE`B`MZN_
zh`&PmJBYtY{BGhO5Z^^ypIzt3<HTbfV?eeqfO3f2{c50G;x>N+D3ACh8Uql|3EV|I
zpY*$l7Z87ncp-7ycR-nk+{ub+knnds=MXQ}yhx%~i1#OcYc5K?ojm@fXIbUGH};(8
zOs*qdLi$VeWC~>GK$zV@d@$)>AwGmSkLRa*qUk-Je?`1f^RRe^_$uPh66f)3@0BR-
zApLWs=kfeJ@k>bm8{#~kUm$)5>3>U{$McKCcai>g#2+XA5^)~SFB9kS{0ea%&%Y<m
z<M|K7c|5;LoX7KP#CbfwPMpW{ABppL{u6N?&u<Xt@%(4vJf7bq&g1zn#CbfwMV!a;
zUy1X0=I@etJpYaKHlA^KzfF9A=E47mIIcgifb(})b{!7>4g|XFt0~66UE=|bQ9e%6
z_cV{h_(aLGev)e7|GwstOw~O22bxDROY`6^SY4k>+&uwQ*N-G_-{}AyO+43`d9a*#
z9`PpPDdL^P^NF8EoPSerA@M@eUrD@(_>IK-5r2?)F>yOb0re+t#~={T#kDa8K9Ka*
zS3o7i$7&vl9pjRXK0<sj>22O1kX_qDKaKRIq@P86DDefv%ZS_cJkUPG+etr+xc_~L
zA3DQ{-$?oq#P1@`dixs=D7Mcg*sjM&&%b5(74eaphu%KB0qsxRuBm_yAa3vVK%<D4
z;y{!IsGRsz;-iTlN_-6QwZv^-!*>Jmairfyoaf$ON_;%&zeIcj@vjn}Nc?W%d|W(1
zoR5oliQAY&{PtHkU_FWaZ9WpvLBz-E^$E~q;)fESLi{1U&<En<>kPea0q5iKLgL&%
zR}tsA3O5nw{c;C!JJzJB=m*3rDb7cTR}p`acs23&h}RJBr`J(HwZw-J=l&l@ocpJW
zxSbOazn@R%$20F=KX1<S>C~>D2j}?=;^&Zm9r5#t&m`{WyLq33iC;$gLx^8P+|FHy
z|Hs4+CH*gn+dT^C{X8<?F8_9;e*sE8pG`i)m1DSH4}mUKq@P3jLrH&=i6xy+`g+ng
z5uZ!^RO0@(gWl{+;`2!F=R^7U=M(qyo;>Hdqkevq=XTCV3w|Dx=L^Zl&sXyNNa7Ds
zJVz0Kg7_lh&l3L_aX-(<`!6Q`SJEF%-2Z7suU|rZfL@RReVq6R;>Qp_kod90tB4;*
z+|T#%?ecFT7LxvW(k~@`0`WBQWyD*FpGbT&@#VzNBYqO`ONp-_{(0gj6aO;tPZ0k$
z@s-5yBfg3_=FwmQN)vycxLr#?_a^ZM(&G`?Sb+R*UfpVR5b-9`A4z--@fF0^5^qwD
z<9Z$OR^_;^ZqC9d2KqC|{}j@nM|?f;9mHFR?^KR>T8ZDR9PzYe;fROzcagtcn~5aa
zMZAN29-?+nCH`N;JBhzUyo>l>h<6h&?T6O=e%wHOq;hQUM&jd?V|!1_!m+)qKb(9v
zk$w^RY|g^r!}>J&oKE_)h;Jc&5plcL70YNR@dp8P`I2&2oJl@kC;eH(zoQ)eaCR1s
z_*wrG@;`_4&k+A4@!wFpTZ#XX_%`D266gEd1$YpvEZC3dk{*A32@Cjcm-8<N5x<f6
z4C3dJ&jR9)kbaeNNY5vIGwClNeyVcx=k_cd{mJ_6<bNUQuO_~O_$|aQBK{TPe17;A
z@lTQd2g=cJpC<m0a>Rde7LNE?{}lOuhV;K7ehKlHsNGA6zeW5q;w5@R9O!c5wZyL=
zeyDP6*OkQQDaUqQm4#!wSige&uO|H|#IGUVPVIh{_*T+?j`*iZe=YGVl_SobSvcZk
z{a4BV^Q8YS@h=enA+>uQ@gEbvp7=Aw@0Yf1d71ogApIMpzmfRc%CTKHW#QN^))(lF
zEl7Dh4<>#y`IHm?BJrujZy|md@h=gds~qF!R^qFPf0_7c<Z~PGb4dRc;@g#@AHJG}
zqaRp*HTiQt+(7(m<a0amuM_`1@!N^trySdR2l2;<e}niR$>&bug9eI$Eb#dz@!`s`
zz2C~hvAwLHpn6EZP5MgW-yuGY+P#aohUwzDn|PV{VnLjI{V>{5&%aChj}T{{8s(7Q
zBQN+HHCPVziSuWldgAP3_bn06_o&?yNdJA}tBL=B_$kDHNPHvldx@V#d>8Q@#P1`1
z8F8Gq@vMI=pHJXlB+l=H-y+Wb-zU!g|B=9dLi~P;^XUZs0&$MV?)jttIUc*04$kr9
zX<H%hPn`YtBMu*1#uCT-o$t*LKA1}U0n*PP&OURLBf&VlP2Wcske+?)Gi(^YeRczX
zQ0pSrM)JY?n#F0?{LnMEYiV$PpS5eJ(BG~xLLYcy3Hc4gAJRN@b}ogUxt(*sIUeg1
z@Q2Cg$K;RqN88?CB=BDo=lAQ^iSzsHUy1*R<|PEbp_=R_Zr|Y|&L0uC`@`Um5Z@0#
z79_SUSRYUPKS^If{88feyd4xjMtlzGe?r{mfuQ(t;x^v{{0ZVK$>&MpcE1|MKPBEp
z`kxWsLj32%&rjeN6TemTwtqjHz;7Ua6Zzjkoa3?k+bFg%BiYEF6B6<tlg}^7{}&1T
z*TgxV*NJmHe<jY_D?b8r3yPT+5@-Km#G$vv{v;oKo+5q_>Hmv(4RKs=SpOfEz~>Wx
zntVQ<z)vLpE7Gq`;O)fi9D;4zLY(8@Mx5inIDub9{27Yph6Mg);vD~73H)B-9KU}K
zjXw_{PFwtQXgq(G_^-)_+kJ_+o$KKBXX4M1&;JmAo_H$HM}Tqi8{+mH9&lX0*?1UE
zdgkTC?c5IMsl?geo(~rK*OQ+8k0kyA#kn+rpG=(N(XRy}Sm1rxmO+|9Jp8@+aOLA9
z<?q>z<2sr3V^k08uWBC2c+G=<P4h@5X&(IRnnzNrdGOmck7TCi!EMe7&|$>Cp?M^8
ziQh?l0r77V{}^$*CImW$__sBW#IA=C&v%Hg&^-8E#M8v@CccLFcZshjeh={u;@=~_
zfw*0}0-a9$2bxE6uI91d^`n9#S18B+)JwNs9Q%{?cD)U~ex!DK<IuCuEw0qh*Ran-
zK*phG9~&F+FM&`O<IuB@^*Qu5wo%16^z3sl3T1(Qu*>-u<IuCuZq-0vs(B>Fp=X~b
zR0I7`%_A`mJ^R?_1?cUwA@s(fXP@7qP!{NIE)CX=L(e|1p->j+hq;`8F%CWZ{8cs3
z+p!O19D4S#IX2LbfKV6X(6dhg4is6S-`C~*i*e}LXAtT4BfW9x*=GdlN0Qz+^z1W+
z^!t<EIP~mu5b4WFZyb8|sUbbK*%sr_mm8FHCh5m!;n1_sY|`W0ZHsZ}*=Hf?4>Yl)
z#-V4QV@QuOTa1IT&xxd;U}8y)L(e`dNssp!TZ}`?KI=$t_eN01IP~n(L3(=+g5Egv
z?6aBl2SKQdap>7+E9objSW@HAv(FCFPa(Z==-KCT(pQk)IP~mep8+vOrjp(`^z38z
zFrlv`y>aN-$FA|9uO+>4=-J1vNuZxjdgIWukKI#(eg^4{L(e|;*%|se(i?}Kee5$M
z^mdJbYQ~{wANx!M{lO6GVjOz*`7Q0QLrg5Gap>9SPo$qkdgIWu&)cLwl=Q}-XP-F7
zix9tEJAoL7o_%a?HuN8bP#5FSvyaV%hJLnckr;=beMaPX5%l#w>t2mRKb!a%($CAn
zp=X~-q(6f6#-V4Q8qzNyy>aN-$9|tOM)*R~8;72K=8^xAq&E&d`z$8?QKUBxJ^P$M
z`bDHS4n6zWeGkO{G141{o_*~1FVKIS^v0oQpEio;SkfDZo_*|j)bKx!^v0oQpR>t-
zDd~+v&pz8pe>~}pL(e`o&k*sPKzifQv(L5Ue-i19L(e`pk^W@T8;72KzD)X0klr}-
z>|@VQL;NdAZyb8|vHL~PuOhv1=-KB%iYHBa<It}n{s`$;XW`JZ&*P+TAiZ(u+2<M3
zH<I2s^z8Fn(l?RbIP~oE8tK=N-Z=E^^A_n(A-!?v+2>u-w~^jB^z4($^`bG7w3FUA
z^z1W$^c|!(4n6zW{8jj$N_ykavya_>gWl$@qndH(*=Ib(vk^jFj6=^p6{O!}Vo8ld
z&px%J-%NVr(6f(!zO}!mKArT&p=Y1D<iCaV#-V4QMWjE2^v0oQpJPaWCh3hs&ps!S
z{w&fPhn{^JNPjlzjYH2q>q)<j^v0oQpDxm$M|$JXv(IMIpHF(@(6i50(qBM&<IuCu
zMWo+OdgIWu&lRM<ko3l(XP=#<-$8og(6f&{mm9~+MWi<lJ^Or({69r{<IuCucS!$f
z(i?}KeeNgy#iTb5J^MUH`p=NwIP~oEOVVFLdgIWu&-0|el=Q}-XP;L{e;MhGL(e{T
z-x&RWIq8i<&pv-A|0_su9D4T2$@3!kUrBo7(6di5>8~Qaap>8nl=N4V-Z=E^GlKNj
zklr}->@$Y+pC!F<=-Foy=|4w$<IuBDHR-P<y>aN-XFBPBNP6SYv(He~;A7Igq#v&N
z97zj^mur5Uqz7c-6NRyUx@x9LI)wDbYlZbAZr9RbJWEuAct(+andT8sbrz0zSa0w3
zh^LD5#u3kG;^%5UjK|Jth^L11cB~<uxmh^kVg0SDK|FIvZyfQU%$5f=6UMV!IpR6o
z#F9R)dBk&c7LIsW|B`CZ=3>$tM?CY1zpME$9`{9xlp!A5caRoBC=22_(dGP$am2&=
z15}TAY+s{>al~^BfG)MF596s*j(C=vSW>(1hj`Xy;fROz$5A|MNpBqStRQalF~WH4
z{u|<HCcWKfLp<GCIO1Xb7K*2Z^u`g-dg3;(1O3^Rg+t#;-0p*g@n5g)BK{4ezg0Qn
z|6~@9_*uV8^@!&j(i=xSrxE{|>XGpI%D&4+JX=Zsyy_9p=d*Cc!}@nrkMq+`(i=Ze
z*tx``imuJA-Raemc6a)8o#i^4TGADG#9vg=nC?zT6|1|tqKeLTtUz8>Ax~FwBF}Wi
z6$=(+UsBQ1F3&PD?jARYhfqli^ytA}#ZsZAxvLv3BOcXtrrXvw^=5edp!wjjNh$?i
z>DC+CTU(pjWNX^myPGPGSiE#fS9iK$eJ|rRo#|F_>1^(5*jSP7?(S?}y+NMO#69+J
z<;$fOc1?azd$z9cz>cRSSasiF<VpE#(jfbWewe!kg|dv4|7fQWE3(-8;CRV{>*WoK
z++v^CZQW8GMz-qiQN#1!t&jIAc=CH3%<Xf2YtW#@Z+M>85BtUb{*`SfJh5nZ_!W7b
ztqdtI+w~+>t_`98u#c>L^TjzDl5qQ%X+v)WJJ#w;6}RA?S+@OmtDa1(AJ9JPT77H3
zQCPP2?RNzKto@Y<?Qhy71+sAaxSk2yKSP-93+QdB8{%_w2O9BdsKq%j+x9Qe55tvZ
zz8<!}zx)r|-!3flM2#)wc$M!cgB=rUam^Sq)VpjfUgbST_oH9ytHm{Tw)i*c1=Bft
z5s3Ip<bN3d9m2A;|K0>CkfqWmJ+GnmD^ilJ{kQevd6m{g`-A0w*#3jULQhngG7+!x
zox?xbe!N#@Yk!$uj9;^lvvKF2QptwxKQ0XIhugVsvajd=u8_~;)nc{uSIWZrd3q82
z%}iC7vwD`kno$2Pt*>G9xL7?)-_rU$0?qtZ>xbOx87~qLGL*fd^#=tfHtRpDpC^^G
z_5T~+@QT?fpJM-ykpEWS&L8_oeK|xryejkhc8$+#(o+z|iuE8wr<F&Rx@EU+$NsYR
ol8D3hi-ZS<sH^vOlS`tvA)qB}f3TEgt6zDSuQV~J5UfW32g$<voB#j-

diff --git a/kernel/sysfile.o b/kernel/sysfile.o
index d81e9da22f8b4304bc6b0b633ebd04179dfe95b4..2823fe3354425d185bc840b74520eb5c463a6fff 100644
GIT binary patch
literal 113712
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

delta 26934
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

diff --git a/kernel/sysproc.o b/kernel/sysproc.o
index dee6c050132785f4eb52aede56a94a0e08ca2146..d758ecbc6a1bdd2df72d3bb2f12ea2b48842b630 100644
GIT binary patch
literal 53096
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

literal 46456
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
T1)0iU#w&)VS6!0&^vnMbuj`e*

diff --git a/target/kernel b/target/kernel
index f0fe64c28abe1efa42965dcea0e79c9e5552eef9..76f58bfa25e4f0dd92d2ed893efa97ae52de8d62 100644
GIT binary patch
delta 88841
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%0Ah)59;6%m!3go_~rh};BJq{>0GR#B-}
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

delta 82817
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

diff --git a/target/kernel.asm b/target/kernel.asm
index 6c7dd22..b3b4d71 100644
--- a/target/kernel.asm
+++ b/target/kernel.asm
@@ -8,7 +8,7 @@ Disassembly of section .text:
     80200000:	00150293          	addi	t0,a0,1
     80200004:	02ba                	slli	t0,t0,0xe
     80200006:	0000c117          	auipc	sp,0xc
-    8020000a:	a7a13103          	ld	sp,-1414(sp) # 8020ba80 <_GLOBAL_OFFSET_TABLE_+0x50>
+    8020000a:	cea13103          	ld	sp,-790(sp) # 8020bcf0 <_GLOBAL_OFFSET_TABLE_+0x50>
     8020000e:	9116                	add	sp,sp,t0
     80200010:	1d5000ef          	jal	ra,802009e4 <main>
 
@@ -88,7 +88,7 @@ printint(int xx, int base, int sign)
     consputc(buf[i]);
     80200092:	fff4c503          	lbu	a0,-1(s1)
     80200096:	00007097          	auipc	ra,0x7
-    8020009a:	be4080e7          	jalr	-1052(ra) # 80206c7a <consputc>
+    8020009a:	f34080e7          	jalr	-204(ra) # 80206fca <consputc>
   while(--i >= 0)
     8020009e:	14fd                	addi	s1,s1,-1
     802000a0:	ff2499e3          	bne	s1,s2,80200092 <printint+0x7c>
@@ -120,7 +120,7 @@ void printstring(const char* s) {
         consputc(*s++);
     802000ca:	0485                	addi	s1,s1,1
     802000cc:	00007097          	auipc	ra,0x7
-    802000d0:	bae080e7          	jalr	-1106(ra) # 80206c7a <consputc>
+    802000d0:	efe080e7          	jalr	-258(ra) # 80206fca <consputc>
     while (*s)
     802000d4:	0004c503          	lbu	a0,0(s1)
     802000d8:	f96d                	bnez	a0,802000ca <printstring+0x12>
@@ -287,7 +287,7 @@ r_fp()
     8020021c:	f2c080e7          	jalr	-212(ra) # 80200144 <panic>
       consputc(c);
     80200220:	00007097          	auipc	ra,0x7
-    80200224:	a5a080e7          	jalr	-1446(ra) # 80206c7a <consputc>
+    80200224:	daa080e7          	jalr	-598(ra) # 80206fca <consputc>
   for(i = 0; (c = fmt[i] & 0xff) != 0; i++){
     80200228:	2985                	addiw	s3,s3,1
     8020022a:	013a07b3          	add	a5,s4,s3
@@ -341,18 +341,18 @@ r_fp()
   consputc('0');
     802002ae:	03000513          	li	a0,48
     802002b2:	00007097          	auipc	ra,0x7
-    802002b6:	9c8080e7          	jalr	-1592(ra) # 80206c7a <consputc>
+    802002b6:	d18080e7          	jalr	-744(ra) # 80206fca <consputc>
   consputc('x');
     802002ba:	07800513          	li	a0,120
     802002be:	00007097          	auipc	ra,0x7
-    802002c2:	9bc080e7          	jalr	-1604(ra) # 80206c7a <consputc>
+    802002c2:	d0c080e7          	jalr	-756(ra) # 80206fca <consputc>
     802002c6:	84ea                	mv	s1,s10
     consputc(digits[x >> (sizeof(uint64) * 8 - 4)]);
     802002c8:	03c95793          	srli	a5,s2,0x3c
     802002cc:	97da                	add	a5,a5,s6
     802002ce:	0007c503          	lbu	a0,0(a5)
     802002d2:	00007097          	auipc	ra,0x7
-    802002d6:	9a8080e7          	jalr	-1624(ra) # 80206c7a <consputc>
+    802002d6:	cf8080e7          	jalr	-776(ra) # 80206fca <consputc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
     802002da:	0912                	slli	s2,s2,0x4
     802002dc:	34fd                	addiw	s1,s1,-1
@@ -369,7 +369,7 @@ r_fp()
     802002f6:	d90d                	beqz	a0,80200228 <printf+0x9a>
         consputc(*s);
     802002f8:	00007097          	auipc	ra,0x7
-    802002fc:	982080e7          	jalr	-1662(ra) # 80206c7a <consputc>
+    802002fc:	cd2080e7          	jalr	-814(ra) # 80206fca <consputc>
       for(; *s; s++)
     80200300:	0485                	addi	s1,s1,1
     80200302:	0004c503          	lbu	a0,0(s1)
@@ -384,17 +384,17 @@ r_fp()
       consputc('%');
     80200318:	8556                	mv	a0,s5
     8020031a:	00007097          	auipc	ra,0x7
-    8020031e:	960080e7          	jalr	-1696(ra) # 80206c7a <consputc>
+    8020031e:	cb0080e7          	jalr	-848(ra) # 80206fca <consputc>
       break;
     80200322:	b719                	j	80200228 <printf+0x9a>
       consputc('%');
     80200324:	8556                	mv	a0,s5
     80200326:	00007097          	auipc	ra,0x7
-    8020032a:	954080e7          	jalr	-1708(ra) # 80206c7a <consputc>
+    8020032a:	ca4080e7          	jalr	-860(ra) # 80206fca <consputc>
       consputc(c);
     8020032e:	8526                	mv	a0,s1
     80200330:	00007097          	auipc	ra,0x7
-    80200334:	94a080e7          	jalr	-1718(ra) # 80206c7a <consputc>
+    80200334:	c9a080e7          	jalr	-870(ra) # 80206fca <consputc>
       break;
     80200338:	bdc5                	j	80200228 <printf+0x9a>
   if(locking)
@@ -527,8 +527,8 @@ kfree(void *pa)
     8020044c:	03451793          	slli	a5,a0,0x34
     80200450:	e3ad                	bnez	a5,802004b2 <kfree+0x72>
     80200452:	84aa                	mv	s1,a0
-    80200454:	0000b797          	auipc	a5,0xb
-    80200458:	6047b783          	ld	a5,1540(a5) # 8020ba58 <_GLOBAL_OFFSET_TABLE_+0x28>
+    80200454:	0000c797          	auipc	a5,0xc
+    80200458:	8747b783          	ld	a5,-1932(a5) # 8020bcc8 <_GLOBAL_OFFSET_TABLE_+0x28>
     8020045c:	04f56b63          	bltu	a0,a5,802004b2 <kfree+0x72>
     80200460:	40300793          	li	a5,1027
     80200464:	07d6                	slli	a5,a5,0x15
@@ -640,7 +640,7 @@ kfree(void *pa)
     8020053a:	40300593          	li	a1,1027
     8020053e:	05d6                	slli	a1,a1,0x15
     80200540:	0000b517          	auipc	a0,0xb
-    80200544:	51853503          	ld	a0,1304(a0) # 8020ba58 <_GLOBAL_OFFSET_TABLE_+0x28>
+    80200544:	78853503          	ld	a0,1928(a0) # 8020bcc8 <_GLOBAL_OFFSET_TABLE_+0x28>
     80200548:	00000097          	auipc	ra,0x0
     8020054c:	f7a080e7          	jalr	-134(ra) # 802004c2 <freerange>
 }
@@ -1443,10 +1443,10 @@ main(unsigned long hartid, unsigned long dtb_pa)
     80200a0a:	0de080e7          	jalr	222(ra) # 80200ae4 <kvminithart>
     trapinithart();
     80200a0e:	00002097          	auipc	ra,0x2
-    80200a12:	cbc080e7          	jalr	-836(ra) # 802026ca <trapinithart>
+    80200a12:	f10080e7          	jalr	-240(ra) # 8020291e <trapinithart>
     plicinithart();  // ask PLIC for device interrupts
     80200a16:	00006097          	auipc	ra,0x6
-    80200a1a:	022080e7          	jalr	34(ra) # 80206a38 <plicinithart>
+    80200a1a:	372080e7          	jalr	882(ra) # 80206d88 <plicinithart>
     printf("hart 1 init done\n");
     80200a1e:	00009517          	auipc	a0,0x9
     80200a22:	9d250513          	addi	a0,a0,-1582 # 802093f0 <digits+0x70>
@@ -1458,7 +1458,7 @@ main(unsigned long hartid, unsigned long dtb_pa)
     80200a32:	592080e7          	jalr	1426(ra) # 80201fc0 <scheduler>
     consoleinit();
     80200a36:	00006097          	auipc	ra,0x6
-    80200a3a:	414080e7          	jalr	1044(ra) # 80206e4a <consoleinit>
+    80200a3a:	764080e7          	jalr	1892(ra) # 8020719a <consoleinit>
     printfinit();   // init a lock for printf 
     80200a3e:	00000097          	auipc	ra,0x0
     80200a42:	930080e7          	jalr	-1744(ra) # 8020036e <printfinit>
@@ -1475,29 +1475,29 @@ main(unsigned long hartid, unsigned long dtb_pa)
     80200a5e:	00000097          	auipc	ra,0x0
     80200a62:	086080e7          	jalr	134(ra) # 80200ae4 <kvminithart>
     timerinit();     // init a lock for timer
-    80200a66:	00004097          	auipc	ra,0x4
-    80200a6a:	588080e7          	jalr	1416(ra) # 80204fee <timerinit>
+    80200a66:	00005097          	auipc	ra,0x5
+    80200a6a:	8d8080e7          	jalr	-1832(ra) # 8020533e <timerinit>
     trapinithart();  // install kernel trap vector, including interrupt handler
     80200a6e:	00002097          	auipc	ra,0x2
-    80200a72:	c5c080e7          	jalr	-932(ra) # 802026ca <trapinithart>
+    80200a72:	eb0080e7          	jalr	-336(ra) # 8020291e <trapinithart>
     procinit();
     80200a76:	00001097          	auipc	ra,0x1
     80200a7a:	f24080e7          	jalr	-220(ra) # 8020199a <procinit>
     plicinit();
     80200a7e:	00006097          	auipc	ra,0x6
-    80200a82:	fa2080e7          	jalr	-94(ra) # 80206a20 <plicinit>
+    80200a82:	2f2080e7          	jalr	754(ra) # 80206d70 <plicinit>
     plicinithart();
     80200a86:	00006097          	auipc	ra,0x6
-    80200a8a:	fb2080e7          	jalr	-78(ra) # 80206a38 <plicinithart>
+    80200a8a:	302080e7          	jalr	770(ra) # 80206d88 <plicinithart>
     disk_init();
-    80200a8e:	00004097          	auipc	ra,0x4
-    80200a92:	5fc080e7          	jalr	1532(ra) # 8020508a <disk_init>
+    80200a8e:	00005097          	auipc	ra,0x5
+    80200a92:	94c080e7          	jalr	-1716(ra) # 802053da <disk_init>
     binit();         // buffer cache
     80200a96:	00003097          	auipc	ra,0x3
-    80200a9a:	88c080e7          	jalr	-1908(ra) # 80203322 <binit>
+    80200a9a:	ba8080e7          	jalr	-1112(ra) # 8020363e <binit>
     fileinit();      // file table
     80200a9e:	00003097          	auipc	ra,0x3
-    80200aa2:	c90080e7          	jalr	-880(ra) # 8020372e <fileinit>
+    80200aa2:	fac080e7          	jalr	-84(ra) # 80203a4a <fileinit>
     userinit();      // first user process
     80200aa6:	00001097          	auipc	ra,0x1
     80200aaa:	2a4080e7          	jalr	676(ra) # 80201d4a <userinit>
@@ -1959,7 +1959,7 @@ mappages(pagetable_t pagetable, uint64 va, uint64 size, uint64 pa, int perm)
     80200dc0:	f3a080e7          	jalr	-198(ra) # 80200cf6 <kvmmap>
   kvmmap(KERNBASE, KERNBASE, (uint64)etext - KERNBASE, PTE_R | PTE_X);
     80200dc4:	0000b497          	auipc	s1,0xb
-    80200dc8:	c8c4b483          	ld	s1,-884(s1) # 8020ba50 <_GLOBAL_OFFSET_TABLE_+0x20>
+    80200dc8:	efc4b483          	ld	s1,-260(s1) # 8020bcc0 <_GLOBAL_OFFSET_TABLE_+0x20>
     80200dcc:	46a9                	li	a3,10
     80200dce:	bff00613          	li	a2,-1025
     80200dd2:	0656                	slli	a2,a2,0x15
@@ -1982,7 +1982,7 @@ mappages(pagetable_t pagetable, uint64 va, uint64 size, uint64 pa, int perm)
     80200dfc:	46a9                	li	a3,10
     80200dfe:	6605                	lui	a2,0x1
     80200e00:	0000b597          	auipc	a1,0xb
-    80200e04:	c385b583          	ld	a1,-968(a1) # 8020ba38 <_GLOBAL_OFFSET_TABLE_+0x8>
+    80200e04:	ea85b583          	ld	a1,-344(a1) # 8020bca8 <_GLOBAL_OFFSET_TABLE_+0x8>
     80200e08:	04000537          	lui	a0,0x4000
     80200e0c:	157d                	addi	a0,a0,-1 # 3ffffff <_entry-0x7c200001>
     80200e0e:	0532                	slli	a0,a0,0xc
@@ -3777,7 +3777,7 @@ myproc(void) {
     80201a96:	eb91                	bnez	a5,80201aaa <forkret+0x36>
   usertrapret();
     80201a98:	00001097          	auipc	ra,0x1
-    80201a9c:	c6e080e7          	jalr	-914(ra) # 80202706 <usertrapret>
+    80201a9c:	ec2080e7          	jalr	-318(ra) # 8020295a <usertrapret>
 }
     80201aa0:	60e2                	ld	ra,24(sp)
     80201aa2:	6442                	ld	s0,16(sp)
@@ -3789,7 +3789,7 @@ myproc(void) {
     80201aae:	5407ab23          	sw	zero,1366(a5) # 8020a000 <first.1>
     fat32_init();
     80201ab2:	00004097          	auipc	ra,0x4
-    80201ab6:	cc2080e7          	jalr	-830(ra) # 80205774 <fat32_init>
+    80201ab6:	012080e7          	jalr	18(ra) # 80205ac4 <fat32_init>
     myproc()->cwd = ename("/");
     80201aba:	00000097          	auipc	ra,0x0
     80201abe:	f82080e7          	jalr	-126(ra) # 80201a3c <myproc>
@@ -3797,7 +3797,7 @@ myproc(void) {
     80201ac4:	00008517          	auipc	a0,0x8
     80201ac8:	b6c50513          	addi	a0,a0,-1172 # 80209630 <digits+0x2b0>
     80201acc:	00005097          	auipc	ra,0x5
-    80201ad0:	f1a080e7          	jalr	-230(ra) # 802069e6 <ename>
+    80201ad0:	26a080e7          	jalr	618(ra) # 80206d36 <ename>
     80201ad4:	14a4bc23          	sd	a0,344(s1)
     80201ad8:	b7c1                	j	80201a98 <forkret+0x24>
 
@@ -3853,7 +3853,7 @@ allocpid() {
   if(mappages(pagetable, TRAMPOLINE, PGSIZE,
     80201b3a:	4729                	li	a4,10
     80201b3c:	0000a697          	auipc	a3,0xa
-    80201b40:	efc6b683          	ld	a3,-260(a3) # 8020ba38 <_GLOBAL_OFFSET_TABLE_+0x8>
+    80201b40:	16c6b683          	ld	a3,364(a3) # 8020bca8 <_GLOBAL_OFFSET_TABLE_+0x8>
     80201b44:	6605                	lui	a2,0x1
     80201b46:	040005b7          	lui	a1,0x4000
     80201b4a:	15fd                	addi	a1,a1,-1 # 3ffffff <_entry-0x7c200001>
@@ -4298,13 +4298,13 @@ release(&p->lock);
     80201efc:	d97d                	beqz	a0,80201ef2 <fork+0xb0>
       np->ofile[i] = filedup(p->ofile[i]);
     80201efe:	00002097          	auipc	ra,0x2
-    80201f02:	8f2080e7          	jalr	-1806(ra) # 802037f0 <filedup>
+    80201f02:	c0e080e7          	jalr	-1010(ra) # 80203b0c <filedup>
     80201f06:	00a93023          	sd	a0,0(s2)
     80201f0a:	b7e5                	j	80201ef2 <fork+0xb0>
   np->cwd = edup(p->cwd);
     80201f0c:	158ab503          	ld	a0,344(s5)
     80201f10:	00004097          	auipc	ra,0x4
-    80201f14:	0d0080e7          	jalr	208(ra) # 80205fe0 <edup>
+    80201f14:	420080e7          	jalr	1056(ra) # 80206330 <edup>
     80201f18:	14aa3c23          	sd	a0,344(s4)
   safestrcpy(np->name, p->name, sizeof(p->name));
     80201f1c:	4641                	li	a2,16
@@ -4421,7 +4421,7 @@ release(&p->lock);
     80202006:	1a7e                	slli	s4,s4,0x3f
         w_satp(MAKE_SATP(kernel_pagetable));
     80202008:	0000ab97          	auipc	s7,0xa
-    8020200c:	a70bbb83          	ld	s7,-1424(s7) # 8020ba78 <_GLOBAL_OFFSET_TABLE_+0x48>
+    8020200c:	ce0bbb83          	ld	s7,-800(s7) # 8020bce8 <_GLOBAL_OFFSET_TABLE_+0x48>
     80202010:	a8a5                	j	80202088 <scheduler+0xc8>
       release(&p->lock);
     80202012:	8526                	mv	a0,s1
@@ -4453,8 +4453,8 @@ release(&p->lock);
         swtch(&c->context, &p->context);
     8020204c:	06848593          	addi	a1,s1,104
     80202050:	855a                	mv	a0,s6
-    80202052:	00000097          	auipc	ra,0x0
-    80202056:	60e080e7          	jalr	1550(ra) # 80202660 <swtch>
+    80202052:	00001097          	auipc	ra,0x1
+    80202056:	862080e7          	jalr	-1950(ra) # 802028b4 <swtch>
         w_satp(MAKE_SATP(kernel_pagetable));
     8020205a:	000bb783          	ld	a5,0(s7)
     8020205e:	83b1                	srli	a5,a5,0xc
@@ -4552,7 +4552,7 @@ release(&p->lock);
     80202118:	95be                	add	a1,a1,a5
     8020211a:	06848513          	addi	a0,s1,104
     8020211e:	00000097          	auipc	ra,0x0
-    80202122:	542080e7          	jalr	1346(ra) # 80202660 <swtch>
+    80202122:	796080e7          	jalr	1942(ra) # 802028b4 <swtch>
     80202126:	8792                	mv	a5,tp
   mycpu()->intena = intena;
     80202128:	2781                	sext.w	a5,a5
@@ -4615,8 +4615,8 @@ release(&p->lock);
     802021b8:	ffffe097          	auipc	ra,0xffffe
     802021bc:	f8c080e7          	jalr	-116(ra) # 80200144 <panic>
       fileclose(f);
-    802021c0:	00001097          	auipc	ra,0x1
-    802021c4:	682080e7          	jalr	1666(ra) # 80203842 <fileclose>
+    802021c0:	00002097          	auipc	ra,0x2
+    802021c4:	99e080e7          	jalr	-1634(ra) # 80203b5e <fileclose>
       p->ofile[fd] = 0;
     802021c8:	0004b023          	sd	zero,0(s1)
   for(int fd = 0; fd < NOFILE; fd++){
@@ -4629,7 +4629,7 @@ release(&p->lock);
   eput(p->cwd);
     802021d8:	1589b503          	ld	a0,344(s3)
     802021dc:	00004097          	auipc	ra,0x4
-    802021e0:	0e6080e7          	jalr	230(ra) # 802062c2 <eput>
+    802021e0:	436080e7          	jalr	1078(ra) # 80206612 <eput>
   p->cwd = 0;
     802021e4:	1409bc23          	sd	zero,344(s3)
   acquire(&initproc->lock);
@@ -5242,9750 +5242,10260 @@ procnum(void)
     8020265c:	0141                	addi	sp,sp,16
     8020265e:	8082                	ret
 
-0000000080202660 <swtch>:
-    80202660:	00153023          	sd	ra,0(a0)
-    80202664:	00253423          	sd	sp,8(a0)
-    80202668:	e900                	sd	s0,16(a0)
-    8020266a:	ed04                	sd	s1,24(a0)
-    8020266c:	03253023          	sd	s2,32(a0)
-    80202670:	03353423          	sd	s3,40(a0)
-    80202674:	03453823          	sd	s4,48(a0)
-    80202678:	03553c23          	sd	s5,56(a0)
-    8020267c:	05653023          	sd	s6,64(a0)
-    80202680:	05753423          	sd	s7,72(a0)
-    80202684:	05853823          	sd	s8,80(a0)
-    80202688:	05953c23          	sd	s9,88(a0)
-    8020268c:	07a53023          	sd	s10,96(a0)
-    80202690:	07b53423          	sd	s11,104(a0)
-    80202694:	0005b083          	ld	ra,0(a1)
-    80202698:	0085b103          	ld	sp,8(a1)
-    8020269c:	6980                	ld	s0,16(a1)
-    8020269e:	6d84                	ld	s1,24(a1)
-    802026a0:	0205b903          	ld	s2,32(a1)
-    802026a4:	0285b983          	ld	s3,40(a1)
-    802026a8:	0305ba03          	ld	s4,48(a1)
-    802026ac:	0385ba83          	ld	s5,56(a1)
-    802026b0:	0405bb03          	ld	s6,64(a1)
-    802026b4:	0485bb83          	ld	s7,72(a1)
-    802026b8:	0505bc03          	ld	s8,80(a1)
-    802026bc:	0585bc83          	ld	s9,88(a1)
-    802026c0:	0605bd03          	ld	s10,96(a1)
-    802026c4:	0685bd83          	ld	s11,104(a1)
-    802026c8:	8082                	ret
-
-00000000802026ca <trapinithart>:
+0000000080202660 <wait4>:
+static struct proc* find_zombie_child(struct proc *p, int *pid, int *status, uint64 addr);
+static void copy_open_files(struct proc *np, struct proc *p);
+
+int
+wait4(int pid, uint64 addr, int options)
+{
+    80202660:	711d                	addi	sp,sp,-96
+    80202662:	ec86                	sd	ra,88(sp)
+    80202664:	e8a2                	sd	s0,80(sp)
+    80202666:	e4a6                	sd	s1,72(sp)
+    80202668:	e0ca                	sd	s2,64(sp)
+    8020266a:	fc4e                	sd	s3,56(sp)
+    8020266c:	f852                	sd	s4,48(sp)
+    8020266e:	f456                	sd	s5,40(sp)
+    80202670:	f05a                	sd	s6,32(sp)
+    80202672:	ec5e                	sd	s7,24(sp)
+    80202674:	1080                	addi	s0,sp,96
+    80202676:	8aae                	mv	s5,a1
+  if (pid == -1) {
+    80202678:	57fd                	li	a5,-1
+    8020267a:	02f50363          	beq	a0,a5,802026a0 <wait4+0x40>
+    return wait(addr);
+  }
+
+  struct proc *p = myproc();
+    8020267e:	fffff097          	auipc	ra,0xfffff
+    80202682:	3be080e7          	jalr	958(ra) # 80201a3c <myproc>
+    80202686:	892a                	mv	s2,a0
+  struct proc *np;
+  int havekids, status;
+
+  // 持有 p->lock 以避免子进程退出时的唤醒丢失
+  acquire(&p->lock);
+    80202688:	ffffe097          	auipc	ra,0xffffe
+    8020268c:	03e080e7          	jalr	62(ra) # 802006c6 <acquire>
+}
+
+// 辅助函数:检查进程是否有子进程
+static int check_for_children(struct proc *p) {
+  int havekids = 0;
+  for (struct proc *np = proc; np < &proc[NPROC]; np++) {
+    80202690:	00016997          	auipc	s3,0x16
+    80202694:	46098993          	addi	s3,s3,1120 # 80218af0 <bcache>
+// 辅助函数:查找并处理僵尸子进程
+static struct proc* find_zombie_child(struct proc *p, int *pid, int *status, uint64 addr) {
+  for (struct proc *np = proc; np < &proc[NPROC]; np++) {
+    if (np->parent == p) {
+      acquire(&np->lock);
+      if (np->state == ZOMBIE) {
+    80202698:	4a11                	li	s4,4
+        *pid = np->pid;
+        *status = np->xstate << 8;
+        if (addr != 0 && copyout2(addr, (char *)status, sizeof(*status)) < 0) {
+    8020269a:	fac40b13          	addi	s6,s0,-84
+    8020269e:	a0ad                	j	80202708 <wait4+0xa8>
+    return wait(addr);
+    802026a0:	852e                	mv	a0,a1
+    802026a2:	00000097          	auipc	ra,0x0
+    802026a6:	c98080e7          	jalr	-872(ra) # 8020233a <wait>
+    802026aa:	8baa                	mv	s7,a0
+    802026ac:	a8bd                	j	8020272a <wait4+0xca>
+        *pid = np->pid;
+    802026ae:	0384ab83          	lw	s7,56(s1)
+        *status = np->xstate << 8;
+    802026b2:	58dc                	lw	a5,52(s1)
+    802026b4:	0087979b          	slliw	a5,a5,0x8
+    802026b8:	faf42623          	sw	a5,-84(s0)
+        if (addr != 0 && copyout2(addr, (char *)status, sizeof(*status)) < 0) {
+    802026bc:	020a9263          	bnez	s5,802026e0 <wait4+0x80>
+      freeproc(np);
+    802026c0:	8526                	mv	a0,s1
+    802026c2:	fffff097          	auipc	ra,0xfffff
+    802026c6:	54c080e7          	jalr	1356(ra) # 80201c0e <freeproc>
+      release(&np->lock);
+    802026ca:	8526                	mv	a0,s1
+    802026cc:	ffffe097          	auipc	ra,0xffffe
+    802026d0:	04e080e7          	jalr	78(ra) # 8020071a <release>
+      release(&p->lock);
+    802026d4:	854a                	mv	a0,s2
+    802026d6:	ffffe097          	auipc	ra,0xffffe
+    802026da:	044080e7          	jalr	68(ra) # 8020071a <release>
+      return pid;
+    802026de:	a0b1                	j	8020272a <wait4+0xca>
+        if (addr != 0 && copyout2(addr, (char *)status, sizeof(*status)) < 0) {
+    802026e0:	8652                	mv	a2,s4
+    802026e2:	85da                	mv	a1,s6
+    802026e4:	8556                	mv	a0,s5
+    802026e6:	fffff097          	auipc	ra,0xfffff
+    802026ea:	c8c080e7          	jalr	-884(ra) # 80201372 <copyout2>
+    802026ee:	fc0559e3          	bgez	a0,802026c0 <wait4+0x60>
+          release(&np->lock);
+    802026f2:	8526                	mv	a0,s1
+    802026f4:	ffffe097          	auipc	ra,0xffffe
+    802026f8:	026080e7          	jalr	38(ra) # 8020071a <release>
+    sleep(p, &p->lock);  //DOC: wait-sleep
+    802026fc:	85ca                	mv	a1,s2
+    802026fe:	854a                	mv	a0,s2
+    80202700:	00000097          	auipc	ra,0x0
+    80202704:	bbc080e7          	jalr	-1092(ra) # 802022bc <sleep>
+  for (struct proc *np = proc; np < &proc[NPROC]; np++) {
+    80202708:	00012797          	auipc	a5,0x12
+    8020270c:	a7878793          	addi	a5,a5,-1416 # 80214180 <proc>
+    if (np->parent == p) {
+    80202710:	7398                	ld	a4,32(a5)
+    80202712:	04e90d63          	beq	s2,a4,8020276c <wait4+0x10c>
+  for (struct proc *np = proc; np < &proc[NPROC]; np++) {
+    80202716:	17878793          	addi	a5,a5,376
+    8020271a:	ff379be3          	bne	a5,s3,80202710 <wait4+0xb0>
+      release(&p->lock);
+    8020271e:	854a                	mv	a0,s2
+    80202720:	ffffe097          	auipc	ra,0xffffe
+    80202724:	ffa080e7          	jalr	-6(ra) # 8020071a <release>
+      return -1;
+    80202728:	5bfd                	li	s7,-1
+}
+    8020272a:	855e                	mv	a0,s7
+    8020272c:	60e6                	ld	ra,88(sp)
+    8020272e:	6446                	ld	s0,80(sp)
+    80202730:	64a6                	ld	s1,72(sp)
+    80202732:	6906                	ld	s2,64(sp)
+    80202734:	79e2                	ld	s3,56(sp)
+    80202736:	7a42                	ld	s4,48(sp)
+    80202738:	7aa2                	ld	s5,40(sp)
+    8020273a:	7b02                	ld	s6,32(sp)
+    8020273c:	6be2                	ld	s7,24(sp)
+    8020273e:	6125                	addi	sp,sp,96
+    80202740:	8082                	ret
+  for (struct proc *np = proc; np < &proc[NPROC]; np++) {
+    80202742:	17848493          	addi	s1,s1,376
+    80202746:	fb348be3          	beq	s1,s3,802026fc <wait4+0x9c>
+    if (np->parent == p) {
+    8020274a:	709c                	ld	a5,32(s1)
+    8020274c:	fef91be3          	bne	s2,a5,80202742 <wait4+0xe2>
+      acquire(&np->lock);
+    80202750:	8526                	mv	a0,s1
+    80202752:	ffffe097          	auipc	ra,0xffffe
+    80202756:	f74080e7          	jalr	-140(ra) # 802006c6 <acquire>
+      if (np->state == ZOMBIE) {
+    8020275a:	4c9c                	lw	a5,24(s1)
+    8020275c:	f54789e3          	beq	a5,s4,802026ae <wait4+0x4e>
+          return NULL;
+        }
+        return np;
+      }
+      release(&np->lock);
+    80202760:	8526                	mv	a0,s1
+    80202762:	ffffe097          	auipc	ra,0xffffe
+    80202766:	fb8080e7          	jalr	-72(ra) # 8020071a <release>
+    8020276a:	bfe1                	j	80202742 <wait4+0xe2>
+    if (!havekids || p->killed) {
+    8020276c:	03092783          	lw	a5,48(s2)
+    80202770:	f7dd                	bnez	a5,8020271e <wait4+0xbe>
+  for (struct proc *np = proc; np < &proc[NPROC]; np++) {
+    80202772:	00012497          	auipc	s1,0x12
+    80202776:	a0e48493          	addi	s1,s1,-1522 # 80214180 <proc>
+    8020277a:	bfc1                	j	8020274a <wait4+0xea>
+
+000000008020277c <clone>:
+  return NULL;
+}
+
+int
+clone(int stack)
+{
+    8020277c:	7139                	addi	sp,sp,-64
+    8020277e:	fc06                	sd	ra,56(sp)
+    80202780:	f822                	sd	s0,48(sp)
+    80202782:	f426                	sd	s1,40(sp)
+    80202784:	f04a                	sd	s2,32(sp)
+    80202786:	ec4e                	sd	s3,24(sp)
+    80202788:	e852                	sd	s4,16(sp)
+    8020278a:	e456                	sd	s5,8(sp)
+    8020278c:	0080                	addi	s0,sp,64
+    8020278e:	84aa                	mv	s1,a0
+  int pid;
+  struct proc *np;
+  struct proc *p = myproc();
+    80202790:	fffff097          	auipc	ra,0xfffff
+    80202794:	2ac080e7          	jalr	684(ra) # 80201a3c <myproc>
+
+  if (stack < 0 || stack > p->sz)
+    80202798:	1004c863          	bltz	s1,802028a8 <clone+0x12c>
+    8020279c:	8aaa                	mv	s5,a0
+    8020279e:	653c                	ld	a5,72(a0)
+    802027a0:	1097e663          	bltu	a5,s1,802028ac <clone+0x130>
+    return -1;
+
+  // 分配新进程
+  if ((np = allocproc()) == NULL) {
+    802027a4:	fffff097          	auipc	ra,0xfffff
+    802027a8:	4d4080e7          	jalr	1236(ra) # 80201c78 <allocproc>
+    802027ac:	89aa                	mv	s3,a0
+    802027ae:	10050163          	beqz	a0,802028b0 <clone+0x134>
+    return -1;
+  }
+
+  // 从父进程复制用户内存到子进程
+  if (uvmcopy(p->pagetable, np->pagetable, np->kpagetable, p->sz) < 0) {
+    802027b2:	048ab683          	ld	a3,72(s5)
+    802027b6:	6d30                	ld	a2,88(a0)
+    802027b8:	692c                	ld	a1,80(a0)
+    802027ba:	050ab503          	ld	a0,80(s5)
+    802027be:	fffff097          	auipc	ra,0xfffff
+    802027c2:	9e8080e7          	jalr	-1560(ra) # 802011a6 <uvmcopy>
+    802027c6:	06054363          	bltz	a0,8020282c <clone+0xb0>
+    freeproc(np);
+    release(&np->lock);
+    return -1;
+  }
+  np->sz = p->sz;
+    802027ca:	048ab783          	ld	a5,72(s5)
+    802027ce:	04f9b423          	sd	a5,72(s3)
+
+  // 设置父进程
+  np->parent = p;
+    802027d2:	0359b023          	sd	s5,32(s3)
+
+  // 从父进程复制跟踪掩码
+  np->tmask = p->tmask;
+    802027d6:	170aa783          	lw	a5,368(s5)
+    802027da:	16f9a823          	sw	a5,368(s3)
+
+  // 从父进程复制保存的用户寄存器
+  *(np->trapframe) = *(p->trapframe);
+    802027de:	060ab683          	ld	a3,96(s5)
+    802027e2:	87b6                	mv	a5,a3
+    802027e4:	0609b703          	ld	a4,96(s3)
+    802027e8:	12068693          	addi	a3,a3,288
+    802027ec:	0007b803          	ld	a6,0(a5)
+    802027f0:	6788                	ld	a0,8(a5)
+    802027f2:	6b8c                	ld	a1,16(a5)
+    802027f4:	6f90                	ld	a2,24(a5)
+    802027f6:	01073023          	sd	a6,0(a4)
+    802027fa:	e708                	sd	a0,8(a4)
+    802027fc:	eb0c                	sd	a1,16(a4)
+    802027fe:	ef10                	sd	a2,24(a4)
+    80202800:	02078793          	addi	a5,a5,32
+    80202804:	02070713          	addi	a4,a4,32
+    80202808:	fed792e3          	bne	a5,a3,802027ec <clone+0x70>
+
+  // 使 fork 在子进程中返回 0
+  np->trapframe->a0 = 0;
+    8020280c:	0609b783          	ld	a5,96(s3)
+    80202810:	0607b823          	sd	zero,112(a5)
+
+  // 设置子进程的堆栈指针
+  if (stack > 0) np->trapframe->sp = stack;
+    80202814:	00905563          	blez	s1,8020281e <clone+0xa2>
+    80202818:	0609b783          	ld	a5,96(s3)
+    8020281c:	fb84                	sd	s1,48(a5)
+  return pid;
+}
+
+// 辅助函数:从父进程复制打开文件描述符到子进程
+static void copy_open_files(struct proc *np, struct proc *p) {
+  for (int i = 0; i < NOFILE; i++) {
+    8020281e:	0d8a8493          	addi	s1,s5,216
+    80202822:	0d898913          	addi	s2,s3,216
+    80202826:	158a8a13          	addi	s4,s5,344
+    8020282a:	a03d                	j	80202858 <clone+0xdc>
+    freeproc(np);
+    8020282c:	854e                	mv	a0,s3
+    8020282e:	fffff097          	auipc	ra,0xfffff
+    80202832:	3e0080e7          	jalr	992(ra) # 80201c0e <freeproc>
+    release(&np->lock);
+    80202836:	854e                	mv	a0,s3
+    80202838:	ffffe097          	auipc	ra,0xffffe
+    8020283c:	ee2080e7          	jalr	-286(ra) # 8020071a <release>
+    return -1;
+    80202840:	54fd                	li	s1,-1
+    80202842:	a889                	j	80202894 <clone+0x118>
+    if (p->ofile[i]) {
+      np->ofile[i] = filedup(p->ofile[i]);
+    80202844:	00001097          	auipc	ra,0x1
+    80202848:	2c8080e7          	jalr	712(ra) # 80203b0c <filedup>
+    8020284c:	00a93023          	sd	a0,0(s2)
+  for (int i = 0; i < NOFILE; i++) {
+    80202850:	04a1                	addi	s1,s1,8
+    80202852:	0921                	addi	s2,s2,8
+    80202854:	01448563          	beq	s1,s4,8020285e <clone+0xe2>
+    if (p->ofile[i]) {
+    80202858:	6088                	ld	a0,0(s1)
+    8020285a:	f56d                	bnez	a0,80202844 <clone+0xc8>
+    8020285c:	bfd5                	j	80202850 <clone+0xd4>
+  np->cwd = edup(p->cwd);
+    8020285e:	158ab503          	ld	a0,344(s5)
+    80202862:	00004097          	auipc	ra,0x4
+    80202866:	ace080e7          	jalr	-1330(ra) # 80206330 <edup>
+    8020286a:	14a9bc23          	sd	a0,344(s3)
+  safestrcpy(np->name, p->name, sizeof(p->name));
+    8020286e:	4641                	li	a2,16
+    80202870:	160a8593          	addi	a1,s5,352
+    80202874:	16098513          	addi	a0,s3,352
+    80202878:	ffffe097          	auipc	ra,0xffffe
+    8020287c:	03c080e7          	jalr	60(ra) # 802008b4 <safestrcpy>
+  pid = np->pid;
+    80202880:	0389a483          	lw	s1,56(s3)
+  np->state = RUNNABLE;
+    80202884:	4789                	li	a5,2
+    80202886:	00f9ac23          	sw	a5,24(s3)
+  release(&np->lock);
+    8020288a:	854e                	mv	a0,s3
+    8020288c:	ffffe097          	auipc	ra,0xffffe
+    80202890:	e8e080e7          	jalr	-370(ra) # 8020071a <release>
+}
+    80202894:	8526                	mv	a0,s1
+    80202896:	70e2                	ld	ra,56(sp)
+    80202898:	7442                	ld	s0,48(sp)
+    8020289a:	74a2                	ld	s1,40(sp)
+    8020289c:	7902                	ld	s2,32(sp)
+    8020289e:	69e2                	ld	s3,24(sp)
+    802028a0:	6a42                	ld	s4,16(sp)
+    802028a2:	6aa2                	ld	s5,8(sp)
+    802028a4:	6121                	addi	sp,sp,64
+    802028a6:	8082                	ret
+    return -1;
+    802028a8:	54fd                	li	s1,-1
+    802028aa:	b7ed                	j	80202894 <clone+0x118>
+    802028ac:	54fd                	li	s1,-1
+    802028ae:	b7dd                	j	80202894 <clone+0x118>
+    return -1;
+    802028b0:	54fd                	li	s1,-1
+    802028b2:	b7cd                	j	80202894 <clone+0x118>
+
+00000000802028b4 <swtch>:
+    802028b4:	00153023          	sd	ra,0(a0)
+    802028b8:	00253423          	sd	sp,8(a0)
+    802028bc:	e900                	sd	s0,16(a0)
+    802028be:	ed04                	sd	s1,24(a0)
+    802028c0:	03253023          	sd	s2,32(a0)
+    802028c4:	03353423          	sd	s3,40(a0)
+    802028c8:	03453823          	sd	s4,48(a0)
+    802028cc:	03553c23          	sd	s5,56(a0)
+    802028d0:	05653023          	sd	s6,64(a0)
+    802028d4:	05753423          	sd	s7,72(a0)
+    802028d8:	05853823          	sd	s8,80(a0)
+    802028dc:	05953c23          	sd	s9,88(a0)
+    802028e0:	07a53023          	sd	s10,96(a0)
+    802028e4:	07b53423          	sd	s11,104(a0)
+    802028e8:	0005b083          	ld	ra,0(a1)
+    802028ec:	0085b103          	ld	sp,8(a1)
+    802028f0:	6980                	ld	s0,16(a1)
+    802028f2:	6d84                	ld	s1,24(a1)
+    802028f4:	0205b903          	ld	s2,32(a1)
+    802028f8:	0285b983          	ld	s3,40(a1)
+    802028fc:	0305ba03          	ld	s4,48(a1)
+    80202900:	0385ba83          	ld	s5,56(a1)
+    80202904:	0405bb03          	ld	s6,64(a1)
+    80202908:	0485bb83          	ld	s7,72(a1)
+    8020290c:	0505bc03          	ld	s8,80(a1)
+    80202910:	0585bc83          	ld	s9,88(a1)
+    80202914:	0605bd03          	ld	s10,96(a1)
+    80202918:	0685bd83          	ld	s11,104(a1)
+    8020291c:	8082                	ret
+
+000000008020291e <trapinithart>:
 // }
 
 // set up to take exceptions and traps while in the kernel.
 void
 trapinithart(void)
 {
-    802026ca:	1141                	addi	sp,sp,-16
-    802026cc:	e406                	sd	ra,8(sp)
-    802026ce:	e022                	sd	s0,0(sp)
-    802026d0:	0800                	addi	s0,sp,16
+    8020291e:	1141                	addi	sp,sp,-16
+    80202920:	e406                	sd	ra,8(sp)
+    80202922:	e022                	sd	s0,0(sp)
+    80202924:	0800                	addi	s0,sp,16
   asm volatile("csrw stvec, %0" : : "r" (x));
-    802026d2:	00009797          	auipc	a5,0x9
-    802026d6:	3767b783          	ld	a5,886(a5) # 8020ba48 <_GLOBAL_OFFSET_TABLE_+0x18>
-    802026da:	10579073          	csrw	stvec,a5
+    80202926:	00009797          	auipc	a5,0x9
+    8020292a:	3927b783          	ld	a5,914(a5) # 8020bcb8 <_GLOBAL_OFFSET_TABLE_+0x18>
+    8020292e:	10579073          	csrw	stvec,a5
   asm volatile("csrr %0, sstatus" : "=r" (x) );
-    802026de:	100027f3          	csrr	a5,sstatus
+    80202932:	100027f3          	csrr	a5,sstatus
   w_stvec((uint64)kernelvec);
   w_sstatus(r_sstatus() | SSTATUS_SIE);
-    802026e2:	0027e793          	ori	a5,a5,2
+    80202936:	0027e793          	ori	a5,a5,2
   asm volatile("csrw sstatus, %0" : : "r" (x));
-    802026e6:	10079073          	csrw	sstatus,a5
+    8020293a:	10079073          	csrw	sstatus,a5
   asm volatile("csrr %0, sie" : "=r" (x) );
-    802026ea:	104027f3          	csrr	a5,sie
+    8020293e:	104027f3          	csrr	a5,sie
   // enable supervisor-mode timer interrupts.
   w_sie(r_sie() | SIE_SEIE | SIE_SSIE | SIE_STIE);
-    802026ee:	2227e793          	ori	a5,a5,546
+    80202942:	2227e793          	ori	a5,a5,546
   asm volatile("csrw sie, %0" : : "r" (x));
-    802026f2:	10479073          	csrw	sie,a5
+    80202946:	10479073          	csrw	sie,a5
   set_next_timeout();
-    802026f6:	00003097          	auipc	ra,0x3
-    802026fa:	920080e7          	jalr	-1760(ra) # 80205016 <set_next_timeout>
+    8020294a:	00003097          	auipc	ra,0x3
+    8020294e:	a1c080e7          	jalr	-1508(ra) # 80205366 <set_next_timeout>
   #ifdef DEBUG
   printf("trapinithart\n");
   #endif
 }
-    802026fe:	60a2                	ld	ra,8(sp)
-    80202700:	6402                	ld	s0,0(sp)
-    80202702:	0141                	addi	sp,sp,16
-    80202704:	8082                	ret
+    80202952:	60a2                	ld	ra,8(sp)
+    80202954:	6402                	ld	s0,0(sp)
+    80202956:	0141                	addi	sp,sp,16
+    80202958:	8082                	ret
 
-0000000080202706 <usertrapret>:
+000000008020295a <usertrapret>:
 //
 // return to user space
 //
 void
 usertrapret(void)
 {
-    80202706:	1141                	addi	sp,sp,-16
-    80202708:	e406                	sd	ra,8(sp)
-    8020270a:	e022                	sd	s0,0(sp)
-    8020270c:	0800                	addi	s0,sp,16
+    8020295a:	1141                	addi	sp,sp,-16
+    8020295c:	e406                	sd	ra,8(sp)
+    8020295e:	e022                	sd	s0,0(sp)
+    80202960:	0800                	addi	s0,sp,16
   struct proc *p = myproc();
-    8020270e:	fffff097          	auipc	ra,0xfffff
-    80202712:	32e080e7          	jalr	814(ra) # 80201a3c <myproc>
+    80202962:	fffff097          	auipc	ra,0xfffff
+    80202966:	0da080e7          	jalr	218(ra) # 80201a3c <myproc>
   asm volatile("csrr %0, sstatus" : "=r" (x) );
-    80202716:	100027f3          	csrr	a5,sstatus
+    8020296a:	100027f3          	csrr	a5,sstatus
   w_sstatus(r_sstatus() & ~SSTATUS_SIE);
-    8020271a:	9bf5                	andi	a5,a5,-3
+    8020296e:	9bf5                	andi	a5,a5,-3
   asm volatile("csrw sstatus, %0" : : "r" (x));
-    8020271c:	10079073          	csrw	sstatus,a5
+    80202970:	10079073          	csrw	sstatus,a5
   // kerneltrap() to usertrap(), so turn off interrupts until
   // we're back in user space, where usertrap() is correct.
   intr_off();
 
   // send syscalls, interrupts, and exceptions to trampoline.S
   w_stvec(TRAMPOLINE + (uservec - trampoline));
-    80202720:	00009697          	auipc	a3,0x9
-    80202724:	3186b683          	ld	a3,792(a3) # 8020ba38 <_GLOBAL_OFFSET_TABLE_+0x8>
-    80202728:	00009717          	auipc	a4,0x9
-    8020272c:	34073703          	ld	a4,832(a4) # 8020ba68 <_GLOBAL_OFFSET_TABLE_+0x38>
-    80202730:	8f15                	sub	a4,a4,a3
-    80202732:	040007b7          	lui	a5,0x4000
-    80202736:	17fd                	addi	a5,a5,-1 # 3ffffff <_entry-0x7c200001>
-    80202738:	07b2                	slli	a5,a5,0xc
-    8020273a:	973e                	add	a4,a4,a5
+    80202974:	00009697          	auipc	a3,0x9
+    80202978:	3346b683          	ld	a3,820(a3) # 8020bca8 <_GLOBAL_OFFSET_TABLE_+0x8>
+    8020297c:	00009717          	auipc	a4,0x9
+    80202980:	35c73703          	ld	a4,860(a4) # 8020bcd8 <_GLOBAL_OFFSET_TABLE_+0x38>
+    80202984:	8f15                	sub	a4,a4,a3
+    80202986:	040007b7          	lui	a5,0x4000
+    8020298a:	17fd                	addi	a5,a5,-1 # 3ffffff <_entry-0x7c200001>
+    8020298c:	07b2                	slli	a5,a5,0xc
+    8020298e:	973e                	add	a4,a4,a5
   asm volatile("csrw stvec, %0" : : "r" (x));
-    8020273c:	10571073          	csrw	stvec,a4
+    80202990:	10571073          	csrw	stvec,a4
 
   // set up trapframe values that uservec will need when
   // the process next re-enters the kernel.
   p->trapframe->kernel_satp = r_satp();         // kernel page table
-    80202740:	7138                	ld	a4,96(a0)
+    80202994:	7138                	ld	a4,96(a0)
   asm volatile("csrr %0, satp" : "=r" (x) );
-    80202742:	18002673          	csrr	a2,satp
-    80202746:	e310                	sd	a2,0(a4)
+    80202996:	18002673          	csrr	a2,satp
+    8020299a:	e310                	sd	a2,0(a4)
   p->trapframe->kernel_sp = p->kstack + PGSIZE; // process's kernel stack
-    80202748:	7130                	ld	a2,96(a0)
-    8020274a:	6138                	ld	a4,64(a0)
-    8020274c:	6585                	lui	a1,0x1
-    8020274e:	972e                	add	a4,a4,a1
-    80202750:	e618                	sd	a4,8(a2)
+    8020299c:	7130                	ld	a2,96(a0)
+    8020299e:	6138                	ld	a4,64(a0)
+    802029a0:	6585                	lui	a1,0x1
+    802029a2:	972e                	add	a4,a4,a1
+    802029a4:	e618                	sd	a4,8(a2)
   p->trapframe->kernel_trap = (uint64)usertrap;
-    80202752:	7138                	ld	a4,96(a0)
-    80202754:	00000617          	auipc	a2,0x0
-    80202758:	0f460613          	addi	a2,a2,244 # 80202848 <usertrap>
-    8020275c:	eb10                	sd	a2,16(a4)
+    802029a6:	7138                	ld	a4,96(a0)
+    802029a8:	00000617          	auipc	a2,0x0
+    802029ac:	0f460613          	addi	a2,a2,244 # 80202a9c <usertrap>
+    802029b0:	eb10                	sd	a2,16(a4)
   p->trapframe->kernel_hartid = r_tp();         // hartid for cpuid()
-    8020275e:	7138                	ld	a4,96(a0)
+    802029b2:	7138                	ld	a4,96(a0)
   asm volatile("mv %0, tp" : "=r" (x) );
-    80202760:	8612                	mv	a2,tp
-    80202762:	f310                	sd	a2,32(a4)
+    802029b4:	8612                	mv	a2,tp
+    802029b6:	f310                	sd	a2,32(a4)
   asm volatile("csrr %0, sstatus" : "=r" (x) );
-    80202764:	10002773          	csrr	a4,sstatus
+    802029b8:	10002773          	csrr	a4,sstatus
   // set up the registers that trampoline.S's sret will use
   // to get to user space.
   
   // set S Previous Privilege mode to User.
   unsigned long x = r_sstatus();
   x &= ~SSTATUS_SPP; // clear SPP to 0 for user mode
-    80202768:	eff77713          	andi	a4,a4,-257
+    802029bc:	eff77713          	andi	a4,a4,-257
   x |= SSTATUS_SPIE; // enable interrupts in user mode
-    8020276c:	02076713          	ori	a4,a4,32
+    802029c0:	02076713          	ori	a4,a4,32
   asm volatile("csrw sstatus, %0" : : "r" (x));
-    80202770:	10071073          	csrw	sstatus,a4
+    802029c4:	10071073          	csrw	sstatus,a4
   w_sstatus(x);
 
   // set S Exception Program Counter to the saved user pc.
   w_sepc(p->trapframe->epc);
-    80202774:	7138                	ld	a4,96(a0)
+    802029c8:	7138                	ld	a4,96(a0)
   asm volatile("csrw sepc, %0" : : "r" (x));
-    80202776:	6f18                	ld	a4,24(a4)
-    80202778:	14171073          	csrw	sepc,a4
+    802029ca:	6f18                	ld	a4,24(a4)
+    802029cc:	14171073          	csrw	sepc,a4
 
   // tell trampoline.S the user page table to switch to.
   // printf("[usertrapret]p->pagetable: %p\n", p->pagetable);
   uint64 satp = MAKE_SATP(p->pagetable);
-    8020277c:	692c                	ld	a1,80(a0)
-    8020277e:	81b1                	srli	a1,a1,0xc
+    802029d0:	692c                	ld	a1,80(a0)
+    802029d2:	81b1                	srli	a1,a1,0xc
 
   // jump to trampoline.S at the top of memory, which 
   // switches to the user page table, restores user registers,
   // and switches to user mode with sret.
   uint64 fn = TRAMPOLINE + (userret - trampoline);
-    80202780:	00009717          	auipc	a4,0x9
-    80202784:	2c073703          	ld	a4,704(a4) # 8020ba40 <_GLOBAL_OFFSET_TABLE_+0x10>
-    80202788:	8f15                	sub	a4,a4,a3
-    8020278a:	97ba                	add	a5,a5,a4
+    802029d4:	00009717          	auipc	a4,0x9
+    802029d8:	2dc73703          	ld	a4,732(a4) # 8020bcb0 <_GLOBAL_OFFSET_TABLE_+0x10>
+    802029dc:	8f15                	sub	a4,a4,a3
+    802029de:	97ba                	add	a5,a5,a4
   ((void (*)(uint64,uint64))fn)(TRAPFRAME, satp);
-    8020278c:	577d                	li	a4,-1
-    8020278e:	177e                	slli	a4,a4,0x3f
-    80202790:	8dd9                	or	a1,a1,a4
-    80202792:	02000537          	lui	a0,0x2000
-    80202796:	157d                	addi	a0,a0,-1 # 1ffffff <_entry-0x7e200001>
-    80202798:	0536                	slli	a0,a0,0xd
-    8020279a:	9782                	jalr	a5
-}
-    8020279c:	60a2                	ld	ra,8(sp)
-    8020279e:	6402                	ld	s0,0(sp)
-    802027a0:	0141                	addi	sp,sp,16
-    802027a2:	8082                	ret
-
-00000000802027a4 <devintr>:
+    802029e0:	577d                	li	a4,-1
+    802029e2:	177e                	slli	a4,a4,0x3f
+    802029e4:	8dd9                	or	a1,a1,a4
+    802029e6:	02000537          	lui	a0,0x2000
+    802029ea:	157d                	addi	a0,a0,-1 # 1ffffff <_entry-0x7e200001>
+    802029ec:	0536                	slli	a0,a0,0xd
+    802029ee:	9782                	jalr	a5
+}
+    802029f0:	60a2                	ld	ra,8(sp)
+    802029f2:	6402                	ld	s0,0(sp)
+    802029f4:	0141                	addi	sp,sp,16
+    802029f6:	8082                	ret
+
+00000000802029f8 <devintr>:
 // Check if it's an external/software interrupt, 
 // and handle it. 
 // returns  2 if timer interrupt, 
 //          1 if other device, 
 //          0 if not recognized. 
 int devintr(void) {
-    802027a4:	1101                	addi	sp,sp,-32
-    802027a6:	ec06                	sd	ra,24(sp)
-    802027a8:	e822                	sd	s0,16(sp)
-    802027aa:	e426                	sd	s1,8(sp)
-    802027ac:	1000                	addi	s0,sp,32
+    802029f8:	1101                	addi	sp,sp,-32
+    802029fa:	ec06                	sd	ra,24(sp)
+    802029fc:	e822                	sd	s0,16(sp)
+    802029fe:	e426                	sd	s1,8(sp)
+    80202a00:	1000                	addi	s0,sp,32
   asm volatile("csrr %0, scause" : "=r" (x) );
-    802027ae:	14202773          	csrr	a4,scause
+    80202a02:	14202773          	csrr	a4,scause
 	uint64 scause = r_scause();
 
 	#ifdef QEMU 
 	// handle external interrupt 
 	if ((0x8000000000000000L & scause) && 9 == (scause & 0xff)) 
-    802027b2:	00074d63          	bltz	a4,802027cc <devintr+0x28>
+    80202a06:	00074d63          	bltz	a4,80202a20 <devintr+0x28>
 		sbi_set_mie();
 		#endif 
 
 		return 1;
 	}
 	else if (0x8000000000000005L == scause) {
-    802027b6:	57fd                	li	a5,-1
-    802027b8:	17fe                	slli	a5,a5,0x3f
-    802027ba:	0795                	addi	a5,a5,5
+    80202a0a:	57fd                	li	a5,-1
+    80202a0c:	17fe                	slli	a5,a5,0x3f
+    80202a0e:	0795                	addi	a5,a5,5
 		timer_tick();
 		return 2;
 	}
 	else { return 0;}
-    802027bc:	4501                	li	a0,0
+    80202a10:	4501                	li	a0,0
 	else if (0x8000000000000005L == scause) {
-    802027be:	06f70f63          	beq	a4,a5,8020283c <devintr+0x98>
+    80202a12:	06f70f63          	beq	a4,a5,80202a90 <devintr+0x98>
 }
-    802027c2:	60e2                	ld	ra,24(sp)
-    802027c4:	6442                	ld	s0,16(sp)
-    802027c6:	64a2                	ld	s1,8(sp)
-    802027c8:	6105                	addi	sp,sp,32
-    802027ca:	8082                	ret
+    80202a16:	60e2                	ld	ra,24(sp)
+    80202a18:	6442                	ld	s0,16(sp)
+    80202a1a:	64a2                	ld	s1,8(sp)
+    80202a1c:	6105                	addi	sp,sp,32
+    80202a1e:	8082                	ret
 	if ((0x8000000000000000L & scause) && 9 == (scause & 0xff)) 
-    802027cc:	0ff77793          	zext.b	a5,a4
-    802027d0:	46a5                	li	a3,9
-    802027d2:	fed792e3          	bne	a5,a3,802027b6 <devintr+0x12>
+    80202a20:	0ff77793          	zext.b	a5,a4
+    80202a24:	46a5                	li	a3,9
+    80202a26:	fed792e3          	bne	a5,a3,80202a0a <devintr+0x12>
 		int irq = plic_claim();
-    802027d6:	00004097          	auipc	ra,0x4
-    802027da:	2a4080e7          	jalr	676(ra) # 80206a7a <plic_claim>
-    802027de:	84aa                	mv	s1,a0
+    80202a2a:	00004097          	auipc	ra,0x4
+    80202a2e:	3a0080e7          	jalr	928(ra) # 80206dca <plic_claim>
+    80202a32:	84aa                	mv	s1,a0
 		if (UART_IRQ == irq) {
-    802027e0:	47a9                	li	a5,10
-    802027e2:	02f50163          	beq	a0,a5,80202804 <devintr+0x60>
+    80202a34:	47a9                	li	a5,10
+    80202a36:	02f50163          	beq	a0,a5,80202a58 <devintr+0x60>
 		else if (DISK_IRQ == irq) {
-    802027e6:	4785                	li	a5,1
-    802027e8:	04f50563          	beq	a0,a5,80202832 <devintr+0x8e>
+    80202a3a:	4785                	li	a5,1
+    80202a3c:	04f50563          	beq	a0,a5,80202a86 <devintr+0x8e>
 		return 1;
-    802027ec:	4505                	li	a0,1
+    80202a40:	4505                	li	a0,1
 		else if (irq) {
-    802027ee:	d8f1                	beqz	s1,802027c2 <devintr+0x1e>
+    80202a42:	d8f1                	beqz	s1,80202a16 <devintr+0x1e>
 			printf("unexpected interrupt irq = %d\n", irq);
-    802027f0:	85a6                	mv	a1,s1
-    802027f2:	00007517          	auipc	a0,0x7
-    802027f6:	f0e50513          	addi	a0,a0,-242 # 80209700 <digits+0x380>
-    802027fa:	ffffe097          	auipc	ra,0xffffe
-    802027fe:	994080e7          	jalr	-1644(ra) # 8020018e <printf>
-    80202802:	a821                	j	8020281a <devintr+0x76>
+    80202a44:	85a6                	mv	a1,s1
+    80202a46:	00007517          	auipc	a0,0x7
+    80202a4a:	cba50513          	addi	a0,a0,-838 # 80209700 <digits+0x380>
+    80202a4e:	ffffd097          	auipc	ra,0xffffd
+    80202a52:	740080e7          	jalr	1856(ra) # 8020018e <printf>
+    80202a56:	a821                	j	80202a6e <devintr+0x76>
 	return SBI_CALL_0(SBI_CONSOLE_GETCHAR);
-    80202804:	4501                	li	a0,0
-    80202806:	4581                	li	a1,0
-    80202808:	4601                	li	a2,0
-    8020280a:	4681                	li	a3,0
-    8020280c:	4889                	li	a7,2
-    8020280e:	00000073          	ecall
-    80202812:	2501                	sext.w	a0,a0
+    80202a58:	4501                	li	a0,0
+    80202a5a:	4581                	li	a1,0
+    80202a5c:	4601                	li	a2,0
+    80202a5e:	4681                	li	a3,0
+    80202a60:	4889                	li	a7,2
+    80202a62:	00000073          	ecall
+    80202a66:	2501                	sext.w	a0,a0
 			if (-1 != c) {
-    80202814:	57fd                	li	a5,-1
-    80202816:	00f51963          	bne	a0,a5,80202828 <devintr+0x84>
+    80202a68:	57fd                	li	a5,-1
+    80202a6a:	00f51963          	bne	a0,a5,80202a7c <devintr+0x84>
 		if (irq) { plic_complete(irq);}
-    8020281a:	8526                	mv	a0,s1
-    8020281c:	00004097          	auipc	ra,0x4
-    80202820:	288080e7          	jalr	648(ra) # 80206aa4 <plic_complete>
+    80202a6e:	8526                	mv	a0,s1
+    80202a70:	00004097          	auipc	ra,0x4
+    80202a74:	384080e7          	jalr	900(ra) # 80206df4 <plic_complete>
 		return 1;
-    80202824:	4505                	li	a0,1
-    80202826:	bf71                	j	802027c2 <devintr+0x1e>
+    80202a78:	4505                	li	a0,1
+    80202a7a:	bf71                	j	80202a16 <devintr+0x1e>
 				consoleintr(c);
-    80202828:	00004097          	auipc	ra,0x4
-    8020282c:	490080e7          	jalr	1168(ra) # 80206cb8 <consoleintr>
-    80202830:	b7ed                	j	8020281a <devintr+0x76>
+    80202a7c:	00004097          	auipc	ra,0x4
+    80202a80:	58c080e7          	jalr	1420(ra) # 80207008 <consoleintr>
+    80202a84:	b7ed                	j	80202a6e <devintr+0x76>
 			disk_intr();
-    80202832:	00003097          	auipc	ra,0x3
-    80202836:	8a4080e7          	jalr	-1884(ra) # 802050d6 <disk_intr>
-    8020283a:	b7c5                	j	8020281a <devintr+0x76>
+    80202a86:	00003097          	auipc	ra,0x3
+    80202a8a:	9a0080e7          	jalr	-1632(ra) # 80205426 <disk_intr>
+    80202a8e:	b7c5                	j	80202a6e <devintr+0x76>
 		timer_tick();
-    8020283c:	00003097          	auipc	ra,0x3
-    80202840:	800080e7          	jalr	-2048(ra) # 8020503c <timer_tick>
+    80202a90:	00003097          	auipc	ra,0x3
+    80202a94:	8fc080e7          	jalr	-1796(ra) # 8020538c <timer_tick>
 		return 2;
-    80202844:	4509                	li	a0,2
-    80202846:	bfb5                	j	802027c2 <devintr+0x1e>
+    80202a98:	4509                	li	a0,2
+    80202a9a:	bfb5                	j	80202a16 <devintr+0x1e>
 
-0000000080202848 <usertrap>:
+0000000080202a9c <usertrap>:
 {
-    80202848:	1101                	addi	sp,sp,-32
-    8020284a:	ec06                	sd	ra,24(sp)
-    8020284c:	e822                	sd	s0,16(sp)
-    8020284e:	e426                	sd	s1,8(sp)
-    80202850:	e04a                	sd	s2,0(sp)
-    80202852:	1000                	addi	s0,sp,32
+    80202a9c:	1101                	addi	sp,sp,-32
+    80202a9e:	ec06                	sd	ra,24(sp)
+    80202aa0:	e822                	sd	s0,16(sp)
+    80202aa2:	e426                	sd	s1,8(sp)
+    80202aa4:	e04a                	sd	s2,0(sp)
+    80202aa6:	1000                	addi	s0,sp,32
   asm volatile("csrr %0, sstatus" : "=r" (x) );
-    80202854:	100027f3          	csrr	a5,sstatus
+    80202aa8:	100027f3          	csrr	a5,sstatus
   if((r_sstatus() & SSTATUS_SPP) != 0)
-    80202858:	1007f793          	andi	a5,a5,256
-    8020285c:	e3ad                	bnez	a5,802028be <usertrap+0x76>
+    80202aac:	1007f793          	andi	a5,a5,256
+    80202ab0:	e3ad                	bnez	a5,80202b12 <usertrap+0x76>
   asm volatile("csrw stvec, %0" : : "r" (x));
-    8020285e:	00009797          	auipc	a5,0x9
-    80202862:	1ea7b783          	ld	a5,490(a5) # 8020ba48 <_GLOBAL_OFFSET_TABLE_+0x18>
-    80202866:	10579073          	csrw	stvec,a5
+    80202ab2:	00009797          	auipc	a5,0x9
+    80202ab6:	2067b783          	ld	a5,518(a5) # 8020bcb8 <_GLOBAL_OFFSET_TABLE_+0x18>
+    80202aba:	10579073          	csrw	stvec,a5
   struct proc *p = myproc();
-    8020286a:	fffff097          	auipc	ra,0xfffff
-    8020286e:	1d2080e7          	jalr	466(ra) # 80201a3c <myproc>
-    80202872:	84aa                	mv	s1,a0
+    80202abe:	fffff097          	auipc	ra,0xfffff
+    80202ac2:	f7e080e7          	jalr	-130(ra) # 80201a3c <myproc>
+    80202ac6:	84aa                	mv	s1,a0
   p->trapframe->epc = r_sepc();
-    80202874:	713c                	ld	a5,96(a0)
+    80202ac8:	713c                	ld	a5,96(a0)
   asm volatile("csrr %0, sepc" : "=r" (x) );
-    80202876:	14102773          	csrr	a4,sepc
-    8020287a:	ef98                	sd	a4,24(a5)
+    80202aca:	14102773          	csrr	a4,sepc
+    80202ace:	ef98                	sd	a4,24(a5)
   asm volatile("csrr %0, scause" : "=r" (x) );
-    8020287c:	14202773          	csrr	a4,scause
+    80202ad0:	14202773          	csrr	a4,scause
   if(r_scause() == 8){
-    80202880:	47a1                	li	a5,8
-    80202882:	04f71c63          	bne	a4,a5,802028da <usertrap+0x92>
+    80202ad4:	47a1                	li	a5,8
+    80202ad6:	04f71c63          	bne	a4,a5,80202b2e <usertrap+0x92>
     if(p->killed)
-    80202886:	591c                	lw	a5,48(a0)
-    80202888:	e3b9                	bnez	a5,802028ce <usertrap+0x86>
+    80202ada:	591c                	lw	a5,48(a0)
+    80202adc:	e3b9                	bnez	a5,80202b22 <usertrap+0x86>
     p->trapframe->epc += 4;
-    8020288a:	70b8                	ld	a4,96(s1)
-    8020288c:	6f1c                	ld	a5,24(a4)
-    8020288e:	0791                	addi	a5,a5,4
-    80202890:	ef1c                	sd	a5,24(a4)
+    80202ade:	70b8                	ld	a4,96(s1)
+    80202ae0:	6f1c                	ld	a5,24(a4)
+    80202ae2:	0791                	addi	a5,a5,4
+    80202ae4:	ef1c                	sd	a5,24(a4)
   asm volatile("csrr %0, sstatus" : "=r" (x) );
-    80202892:	100027f3          	csrr	a5,sstatus
+    80202ae6:	100027f3          	csrr	a5,sstatus
   w_sstatus(r_sstatus() | SSTATUS_SIE);
-    80202896:	0027e793          	ori	a5,a5,2
+    80202aea:	0027e793          	ori	a5,a5,2
   asm volatile("csrw sstatus, %0" : : "r" (x));
-    8020289a:	10079073          	csrw	sstatus,a5
+    80202aee:	10079073          	csrw	sstatus,a5
     syscall();
-    8020289e:	00000097          	auipc	ra,0x0
-    802028a2:	5d4080e7          	jalr	1492(ra) # 80202e72 <syscall>
+    80202af2:	00000097          	auipc	ra,0x0
+    80202af6:	5d4080e7          	jalr	1492(ra) # 802030c6 <syscall>
   if(p->killed)
-    802028a6:	589c                	lw	a5,48(s1)
-    802028a8:	ebd1                	bnez	a5,8020293c <usertrap+0xf4>
+    80202afa:	589c                	lw	a5,48(s1)
+    80202afc:	ebd1                	bnez	a5,80202b90 <usertrap+0xf4>
   usertrapret();
-    802028aa:	00000097          	auipc	ra,0x0
-    802028ae:	e5c080e7          	jalr	-420(ra) # 80202706 <usertrapret>
-}
-    802028b2:	60e2                	ld	ra,24(sp)
-    802028b4:	6442                	ld	s0,16(sp)
-    802028b6:	64a2                	ld	s1,8(sp)
-    802028b8:	6902                	ld	s2,0(sp)
-    802028ba:	6105                	addi	sp,sp,32
-    802028bc:	8082                	ret
+    80202afe:	00000097          	auipc	ra,0x0
+    80202b02:	e5c080e7          	jalr	-420(ra) # 8020295a <usertrapret>
+}
+    80202b06:	60e2                	ld	ra,24(sp)
+    80202b08:	6442                	ld	s0,16(sp)
+    80202b0a:	64a2                	ld	s1,8(sp)
+    80202b0c:	6902                	ld	s2,0(sp)
+    80202b0e:	6105                	addi	sp,sp,32
+    80202b10:	8082                	ret
     panic("usertrap: not from user mode");
-    802028be:	00007517          	auipc	a0,0x7
-    802028c2:	e6250513          	addi	a0,a0,-414 # 80209720 <digits+0x3a0>
-    802028c6:	ffffe097          	auipc	ra,0xffffe
-    802028ca:	87e080e7          	jalr	-1922(ra) # 80200144 <panic>
+    80202b12:	00007517          	auipc	a0,0x7
+    80202b16:	c0e50513          	addi	a0,a0,-1010 # 80209720 <digits+0x3a0>
+    80202b1a:	ffffd097          	auipc	ra,0xffffd
+    80202b1e:	62a080e7          	jalr	1578(ra) # 80200144 <panic>
       exit(-1);
-    802028ce:	557d                	li	a0,-1
-    802028d0:	00000097          	auipc	ra,0x0
-    802028d4:	8b0080e7          	jalr	-1872(ra) # 80202180 <exit>
-    802028d8:	bf4d                	j	8020288a <usertrap+0x42>
+    80202b22:	557d                	li	a0,-1
+    80202b24:	fffff097          	auipc	ra,0xfffff
+    80202b28:	65c080e7          	jalr	1628(ra) # 80202180 <exit>
+    80202b2c:	bf4d                	j	80202ade <usertrap+0x42>
   else if((which_dev = devintr()) != 0){
-    802028da:	00000097          	auipc	ra,0x0
-    802028de:	eca080e7          	jalr	-310(ra) # 802027a4 <devintr>
-    802028e2:	892a                	mv	s2,a0
-    802028e4:	c501                	beqz	a0,802028ec <usertrap+0xa4>
+    80202b2e:	00000097          	auipc	ra,0x0
+    80202b32:	eca080e7          	jalr	-310(ra) # 802029f8 <devintr>
+    80202b36:	892a                	mv	s2,a0
+    80202b38:	c501                	beqz	a0,80202b40 <usertrap+0xa4>
   if(p->killed)
-    802028e6:	589c                	lw	a5,48(s1)
-    802028e8:	c3b1                	beqz	a5,8020292c <usertrap+0xe4>
-    802028ea:	a825                	j	80202922 <usertrap+0xda>
+    80202b3a:	589c                	lw	a5,48(s1)
+    80202b3c:	c3b1                	beqz	a5,80202b80 <usertrap+0xe4>
+    80202b3e:	a825                	j	80202b76 <usertrap+0xda>
   asm volatile("csrr %0, scause" : "=r" (x) );
-    802028ec:	142025f3          	csrr	a1,scause
+    80202b40:	142025f3          	csrr	a1,scause
     printf("\nusertrap(): unexpected scause %p pid=%d %s\n", r_scause(), p->pid, p->name);
-    802028f0:	16048693          	addi	a3,s1,352
-    802028f4:	5c90                	lw	a2,56(s1)
-    802028f6:	00007517          	auipc	a0,0x7
-    802028fa:	e4a50513          	addi	a0,a0,-438 # 80209740 <digits+0x3c0>
-    802028fe:	ffffe097          	auipc	ra,0xffffe
-    80202902:	890080e7          	jalr	-1904(ra) # 8020018e <printf>
+    80202b44:	16048693          	addi	a3,s1,352
+    80202b48:	5c90                	lw	a2,56(s1)
+    80202b4a:	00007517          	auipc	a0,0x7
+    80202b4e:	bf650513          	addi	a0,a0,-1034 # 80209740 <digits+0x3c0>
+    80202b52:	ffffd097          	auipc	ra,0xffffd
+    80202b56:	63c080e7          	jalr	1596(ra) # 8020018e <printf>
   asm volatile("csrr %0, sepc" : "=r" (x) );
-    80202906:	141025f3          	csrr	a1,sepc
+    80202b5a:	141025f3          	csrr	a1,sepc
   asm volatile("csrr %0, stval" : "=r" (x) );
-    8020290a:	14302673          	csrr	a2,stval
+    80202b5e:	14302673          	csrr	a2,stval
     printf("            sepc=%p stval=%p\n", r_sepc(), r_stval());
-    8020290e:	00007517          	auipc	a0,0x7
-    80202912:	e6250513          	addi	a0,a0,-414 # 80209770 <digits+0x3f0>
-    80202916:	ffffe097          	auipc	ra,0xffffe
-    8020291a:	878080e7          	jalr	-1928(ra) # 8020018e <printf>
+    80202b62:	00007517          	auipc	a0,0x7
+    80202b66:	c0e50513          	addi	a0,a0,-1010 # 80209770 <digits+0x3f0>
+    80202b6a:	ffffd097          	auipc	ra,0xffffd
+    80202b6e:	624080e7          	jalr	1572(ra) # 8020018e <printf>
     p->killed = 1;
-    8020291e:	4785                	li	a5,1
-    80202920:	d89c                	sw	a5,48(s1)
+    80202b72:	4785                	li	a5,1
+    80202b74:	d89c                	sw	a5,48(s1)
     exit(-1);
-    80202922:	557d                	li	a0,-1
-    80202924:	00000097          	auipc	ra,0x0
-    80202928:	85c080e7          	jalr	-1956(ra) # 80202180 <exit>
+    80202b76:	557d                	li	a0,-1
+    80202b78:	fffff097          	auipc	ra,0xfffff
+    80202b7c:	608080e7          	jalr	1544(ra) # 80202180 <exit>
   if(which_dev == 2)
-    8020292c:	4789                	li	a5,2
-    8020292e:	f6f91ee3          	bne	s2,a5,802028aa <usertrap+0x62>
+    80202b80:	4789                	li	a5,2
+    80202b82:	f6f91ee3          	bne	s2,a5,80202afe <usertrap+0x62>
     yield();
-    80202932:	00000097          	auipc	ra,0x0
-    80202936:	94e080e7          	jalr	-1714(ra) # 80202280 <yield>
-    8020293a:	bf85                	j	802028aa <usertrap+0x62>
+    80202b86:	fffff097          	auipc	ra,0xfffff
+    80202b8a:	6fa080e7          	jalr	1786(ra) # 80202280 <yield>
+    80202b8e:	bf85                	j	80202afe <usertrap+0x62>
   int which_dev = 0;
-    8020293c:	4901                	li	s2,0
-    8020293e:	b7d5                	j	80202922 <usertrap+0xda>
+    80202b90:	4901                	li	s2,0
+    80202b92:	b7d5                	j	80202b76 <usertrap+0xda>
 
-0000000080202940 <kerneltrap>:
+0000000080202b94 <kerneltrap>:
 kerneltrap() {
-    80202940:	7179                	addi	sp,sp,-48
-    80202942:	f406                	sd	ra,40(sp)
-    80202944:	f022                	sd	s0,32(sp)
-    80202946:	ec26                	sd	s1,24(sp)
-    80202948:	e84a                	sd	s2,16(sp)
-    8020294a:	e44e                	sd	s3,8(sp)
-    8020294c:	1800                	addi	s0,sp,48
+    80202b94:	7179                	addi	sp,sp,-48
+    80202b96:	f406                	sd	ra,40(sp)
+    80202b98:	f022                	sd	s0,32(sp)
+    80202b9a:	ec26                	sd	s1,24(sp)
+    80202b9c:	e84a                	sd	s2,16(sp)
+    80202b9e:	e44e                	sd	s3,8(sp)
+    80202ba0:	1800                	addi	s0,sp,48
   asm volatile("csrr %0, sepc" : "=r" (x) );
-    8020294e:	14102973          	csrr	s2,sepc
+    80202ba2:	14102973          	csrr	s2,sepc
   asm volatile("csrr %0, sstatus" : "=r" (x) );
-    80202952:	100024f3          	csrr	s1,sstatus
+    80202ba6:	100024f3          	csrr	s1,sstatus
   asm volatile("csrr %0, scause" : "=r" (x) );
-    80202956:	142029f3          	csrr	s3,scause
+    80202baa:	142029f3          	csrr	s3,scause
   if((sstatus & SSTATUS_SPP) == 0)
-    8020295a:	1004f793          	andi	a5,s1,256
-    8020295e:	cb85                	beqz	a5,8020298e <kerneltrap+0x4e>
+    80202bae:	1004f793          	andi	a5,s1,256
+    80202bb2:	cb85                	beqz	a5,80202be2 <kerneltrap+0x4e>
   asm volatile("csrr %0, sstatus" : "=r" (x) );
-    80202960:	100027f3          	csrr	a5,sstatus
+    80202bb4:	100027f3          	csrr	a5,sstatus
   return (x & SSTATUS_SIE) != 0;
-    80202964:	8b89                	andi	a5,a5,2
+    80202bb8:	8b89                	andi	a5,a5,2
   if(intr_get() != 0)
-    80202966:	ef85                	bnez	a5,8020299e <kerneltrap+0x5e>
+    80202bba:	ef85                	bnez	a5,80202bf2 <kerneltrap+0x5e>
   if((which_dev = devintr()) == 0){
-    80202968:	00000097          	auipc	ra,0x0
-    8020296c:	e3c080e7          	jalr	-452(ra) # 802027a4 <devintr>
-    80202970:	cd1d                	beqz	a0,802029ae <kerneltrap+0x6e>
+    80202bbc:	00000097          	auipc	ra,0x0
+    80202bc0:	e3c080e7          	jalr	-452(ra) # 802029f8 <devintr>
+    80202bc4:	cd1d                	beqz	a0,80202c02 <kerneltrap+0x6e>
   if(which_dev == 2 && myproc() != 0 && myproc()->state == RUNNING) {
-    80202972:	4789                	li	a5,2
-    80202974:	08f50b63          	beq	a0,a5,80202a0a <kerneltrap+0xca>
+    80202bc6:	4789                	li	a5,2
+    80202bc8:	08f50b63          	beq	a0,a5,80202c5e <kerneltrap+0xca>
   asm volatile("csrw sepc, %0" : : "r" (x));
-    80202978:	14191073          	csrw	sepc,s2
+    80202bcc:	14191073          	csrw	sepc,s2
   asm volatile("csrw sstatus, %0" : : "r" (x));
-    8020297c:	10049073          	csrw	sstatus,s1
-}
-    80202980:	70a2                	ld	ra,40(sp)
-    80202982:	7402                	ld	s0,32(sp)
-    80202984:	64e2                	ld	s1,24(sp)
-    80202986:	6942                	ld	s2,16(sp)
-    80202988:	69a2                	ld	s3,8(sp)
-    8020298a:	6145                	addi	sp,sp,48
-    8020298c:	8082                	ret
+    80202bd0:	10049073          	csrw	sstatus,s1
+}
+    80202bd4:	70a2                	ld	ra,40(sp)
+    80202bd6:	7402                	ld	s0,32(sp)
+    80202bd8:	64e2                	ld	s1,24(sp)
+    80202bda:	6942                	ld	s2,16(sp)
+    80202bdc:	69a2                	ld	s3,8(sp)
+    80202bde:	6145                	addi	sp,sp,48
+    80202be0:	8082                	ret
     panic("kerneltrap: not from supervisor mode");
-    8020298e:	00007517          	auipc	a0,0x7
-    80202992:	e0250513          	addi	a0,a0,-510 # 80209790 <digits+0x410>
-    80202996:	ffffd097          	auipc	ra,0xffffd
-    8020299a:	7ae080e7          	jalr	1966(ra) # 80200144 <panic>
+    80202be2:	00007517          	auipc	a0,0x7
+    80202be6:	bae50513          	addi	a0,a0,-1106 # 80209790 <digits+0x410>
+    80202bea:	ffffd097          	auipc	ra,0xffffd
+    80202bee:	55a080e7          	jalr	1370(ra) # 80200144 <panic>
     panic("kerneltrap: interrupts enabled");
-    8020299e:	00007517          	auipc	a0,0x7
-    802029a2:	e1a50513          	addi	a0,a0,-486 # 802097b8 <digits+0x438>
-    802029a6:	ffffd097          	auipc	ra,0xffffd
-    802029aa:	79e080e7          	jalr	1950(ra) # 80200144 <panic>
+    80202bf2:	00007517          	auipc	a0,0x7
+    80202bf6:	bc650513          	addi	a0,a0,-1082 # 802097b8 <digits+0x438>
+    80202bfa:	ffffd097          	auipc	ra,0xffffd
+    80202bfe:	54a080e7          	jalr	1354(ra) # 80200144 <panic>
     printf("\nscause %p\n", scause);
-    802029ae:	85ce                	mv	a1,s3
-    802029b0:	00007517          	auipc	a0,0x7
-    802029b4:	e2850513          	addi	a0,a0,-472 # 802097d8 <digits+0x458>
-    802029b8:	ffffd097          	auipc	ra,0xffffd
-    802029bc:	7d6080e7          	jalr	2006(ra) # 8020018e <printf>
+    80202c02:	85ce                	mv	a1,s3
+    80202c04:	00007517          	auipc	a0,0x7
+    80202c08:	bd450513          	addi	a0,a0,-1068 # 802097d8 <digits+0x458>
+    80202c0c:	ffffd097          	auipc	ra,0xffffd
+    80202c10:	582080e7          	jalr	1410(ra) # 8020018e <printf>
   asm volatile("csrr %0, sepc" : "=r" (x) );
-    802029c0:	141025f3          	csrr	a1,sepc
+    80202c14:	141025f3          	csrr	a1,sepc
   asm volatile("csrr %0, stval" : "=r" (x) );
-    802029c4:	14302673          	csrr	a2,stval
+    80202c18:	14302673          	csrr	a2,stval
   asm volatile("mv %0, tp" : "=r" (x) );
-    802029c8:	8692                	mv	a3,tp
+    80202c1c:	8692                	mv	a3,tp
     printf("sepc=%p stval=%p hart=%d\n", r_sepc(), r_stval(), r_tp());
-    802029ca:	00007517          	auipc	a0,0x7
-    802029ce:	e1e50513          	addi	a0,a0,-482 # 802097e8 <digits+0x468>
-    802029d2:	ffffd097          	auipc	ra,0xffffd
-    802029d6:	7bc080e7          	jalr	1980(ra) # 8020018e <printf>
+    80202c1e:	00007517          	auipc	a0,0x7
+    80202c22:	bca50513          	addi	a0,a0,-1078 # 802097e8 <digits+0x468>
+    80202c26:	ffffd097          	auipc	ra,0xffffd
+    80202c2a:	568080e7          	jalr	1384(ra) # 8020018e <printf>
     struct proc *p = myproc();
-    802029da:	fffff097          	auipc	ra,0xfffff
-    802029de:	062080e7          	jalr	98(ra) # 80201a3c <myproc>
+    80202c2e:	fffff097          	auipc	ra,0xfffff
+    80202c32:	e0e080e7          	jalr	-498(ra) # 80201a3c <myproc>
     if (p != 0) {
-    802029e2:	cd01                	beqz	a0,802029fa <kerneltrap+0xba>
+    80202c36:	cd01                	beqz	a0,80202c4e <kerneltrap+0xba>
       printf("pid: %d, name: %s\n", p->pid, p->name);
-    802029e4:	16050613          	addi	a2,a0,352
-    802029e8:	5d0c                	lw	a1,56(a0)
-    802029ea:	00007517          	auipc	a0,0x7
-    802029ee:	e1e50513          	addi	a0,a0,-482 # 80209808 <digits+0x488>
-    802029f2:	ffffd097          	auipc	ra,0xffffd
-    802029f6:	79c080e7          	jalr	1948(ra) # 8020018e <printf>
+    80202c38:	16050613          	addi	a2,a0,352
+    80202c3c:	5d0c                	lw	a1,56(a0)
+    80202c3e:	00007517          	auipc	a0,0x7
+    80202c42:	bca50513          	addi	a0,a0,-1078 # 80209808 <digits+0x488>
+    80202c46:	ffffd097          	auipc	ra,0xffffd
+    80202c4a:	548080e7          	jalr	1352(ra) # 8020018e <printf>
     panic("kerneltrap");
-    802029fa:	00007517          	auipc	a0,0x7
-    802029fe:	e2650513          	addi	a0,a0,-474 # 80209820 <digits+0x4a0>
-    80202a02:	ffffd097          	auipc	ra,0xffffd
-    80202a06:	742080e7          	jalr	1858(ra) # 80200144 <panic>
+    80202c4e:	00007517          	auipc	a0,0x7
+    80202c52:	bd250513          	addi	a0,a0,-1070 # 80209820 <digits+0x4a0>
+    80202c56:	ffffd097          	auipc	ra,0xffffd
+    80202c5a:	4ee080e7          	jalr	1262(ra) # 80200144 <panic>
   if(which_dev == 2 && myproc() != 0 && myproc()->state == RUNNING) {
-    80202a0a:	fffff097          	auipc	ra,0xfffff
-    80202a0e:	032080e7          	jalr	50(ra) # 80201a3c <myproc>
-    80202a12:	d13d                	beqz	a0,80202978 <kerneltrap+0x38>
-    80202a14:	fffff097          	auipc	ra,0xfffff
-    80202a18:	028080e7          	jalr	40(ra) # 80201a3c <myproc>
-    80202a1c:	4d18                	lw	a4,24(a0)
-    80202a1e:	478d                	li	a5,3
-    80202a20:	f4f71ce3          	bne	a4,a5,80202978 <kerneltrap+0x38>
+    80202c5e:	fffff097          	auipc	ra,0xfffff
+    80202c62:	dde080e7          	jalr	-546(ra) # 80201a3c <myproc>
+    80202c66:	d13d                	beqz	a0,80202bcc <kerneltrap+0x38>
+    80202c68:	fffff097          	auipc	ra,0xfffff
+    80202c6c:	dd4080e7          	jalr	-556(ra) # 80201a3c <myproc>
+    80202c70:	4d18                	lw	a4,24(a0)
+    80202c72:	478d                	li	a5,3
+    80202c74:	f4f71ce3          	bne	a4,a5,80202bcc <kerneltrap+0x38>
     yield();
-    80202a24:	00000097          	auipc	ra,0x0
-    80202a28:	85c080e7          	jalr	-1956(ra) # 80202280 <yield>
-    80202a2c:	b7b1                	j	80202978 <kerneltrap+0x38>
+    80202c78:	fffff097          	auipc	ra,0xfffff
+    80202c7c:	608080e7          	jalr	1544(ra) # 80202280 <yield>
+    80202c80:	b7b1                	j	80202bcc <kerneltrap+0x38>
 
-0000000080202a2e <trapframedump>:
+0000000080202c82 <trapframedump>:
 
 void trapframedump(struct trapframe *tf)
 {
-    80202a2e:	1101                	addi	sp,sp,-32
-    80202a30:	ec06                	sd	ra,24(sp)
-    80202a32:	e822                	sd	s0,16(sp)
-    80202a34:	e426                	sd	s1,8(sp)
-    80202a36:	1000                	addi	s0,sp,32
-    80202a38:	84aa                	mv	s1,a0
+    80202c82:	1101                	addi	sp,sp,-32
+    80202c84:	ec06                	sd	ra,24(sp)
+    80202c86:	e822                	sd	s0,16(sp)
+    80202c88:	e426                	sd	s1,8(sp)
+    80202c8a:	1000                	addi	s0,sp,32
+    80202c8c:	84aa                	mv	s1,a0
   printf("a0: %p\t", tf->a0);
-    80202a3a:	792c                	ld	a1,112(a0)
-    80202a3c:	00007517          	auipc	a0,0x7
-    80202a40:	df450513          	addi	a0,a0,-524 # 80209830 <digits+0x4b0>
-    80202a44:	ffffd097          	auipc	ra,0xffffd
-    80202a48:	74a080e7          	jalr	1866(ra) # 8020018e <printf>
+    80202c8e:	792c                	ld	a1,112(a0)
+    80202c90:	00007517          	auipc	a0,0x7
+    80202c94:	ba050513          	addi	a0,a0,-1120 # 80209830 <digits+0x4b0>
+    80202c98:	ffffd097          	auipc	ra,0xffffd
+    80202c9c:	4f6080e7          	jalr	1270(ra) # 8020018e <printf>
   printf("a1: %p\t", tf->a1);
-    80202a4c:	7cac                	ld	a1,120(s1)
-    80202a4e:	00007517          	auipc	a0,0x7
-    80202a52:	dea50513          	addi	a0,a0,-534 # 80209838 <digits+0x4b8>
-    80202a56:	ffffd097          	auipc	ra,0xffffd
-    80202a5a:	738080e7          	jalr	1848(ra) # 8020018e <printf>
+    80202ca0:	7cac                	ld	a1,120(s1)
+    80202ca2:	00007517          	auipc	a0,0x7
+    80202ca6:	b9650513          	addi	a0,a0,-1130 # 80209838 <digits+0x4b8>
+    80202caa:	ffffd097          	auipc	ra,0xffffd
+    80202cae:	4e4080e7          	jalr	1252(ra) # 8020018e <printf>
   printf("a2: %p\t", tf->a2);
-    80202a5e:	60cc                	ld	a1,128(s1)
-    80202a60:	00007517          	auipc	a0,0x7
-    80202a64:	de050513          	addi	a0,a0,-544 # 80209840 <digits+0x4c0>
-    80202a68:	ffffd097          	auipc	ra,0xffffd
-    80202a6c:	726080e7          	jalr	1830(ra) # 8020018e <printf>
+    80202cb2:	60cc                	ld	a1,128(s1)
+    80202cb4:	00007517          	auipc	a0,0x7
+    80202cb8:	b8c50513          	addi	a0,a0,-1140 # 80209840 <digits+0x4c0>
+    80202cbc:	ffffd097          	auipc	ra,0xffffd
+    80202cc0:	4d2080e7          	jalr	1234(ra) # 8020018e <printf>
   printf("a3: %p\n", tf->a3);
-    80202a70:	64cc                	ld	a1,136(s1)
-    80202a72:	00007517          	auipc	a0,0x7
-    80202a76:	dd650513          	addi	a0,a0,-554 # 80209848 <digits+0x4c8>
-    80202a7a:	ffffd097          	auipc	ra,0xffffd
-    80202a7e:	714080e7          	jalr	1812(ra) # 8020018e <printf>
+    80202cc4:	64cc                	ld	a1,136(s1)
+    80202cc6:	00007517          	auipc	a0,0x7
+    80202cca:	b8250513          	addi	a0,a0,-1150 # 80209848 <digits+0x4c8>
+    80202cce:	ffffd097          	auipc	ra,0xffffd
+    80202cd2:	4c0080e7          	jalr	1216(ra) # 8020018e <printf>
   printf("a4: %p\t", tf->a4);
-    80202a82:	68cc                	ld	a1,144(s1)
-    80202a84:	00007517          	auipc	a0,0x7
-    80202a88:	dcc50513          	addi	a0,a0,-564 # 80209850 <digits+0x4d0>
-    80202a8c:	ffffd097          	auipc	ra,0xffffd
-    80202a90:	702080e7          	jalr	1794(ra) # 8020018e <printf>
+    80202cd6:	68cc                	ld	a1,144(s1)
+    80202cd8:	00007517          	auipc	a0,0x7
+    80202cdc:	b7850513          	addi	a0,a0,-1160 # 80209850 <digits+0x4d0>
+    80202ce0:	ffffd097          	auipc	ra,0xffffd
+    80202ce4:	4ae080e7          	jalr	1198(ra) # 8020018e <printf>
   printf("a5: %p\t", tf->a5);
-    80202a94:	6ccc                	ld	a1,152(s1)
-    80202a96:	00007517          	auipc	a0,0x7
-    80202a9a:	dc250513          	addi	a0,a0,-574 # 80209858 <digits+0x4d8>
-    80202a9e:	ffffd097          	auipc	ra,0xffffd
-    80202aa2:	6f0080e7          	jalr	1776(ra) # 8020018e <printf>
+    80202ce8:	6ccc                	ld	a1,152(s1)
+    80202cea:	00007517          	auipc	a0,0x7
+    80202cee:	b6e50513          	addi	a0,a0,-1170 # 80209858 <digits+0x4d8>
+    80202cf2:	ffffd097          	auipc	ra,0xffffd
+    80202cf6:	49c080e7          	jalr	1180(ra) # 8020018e <printf>
   printf("a6: %p\t", tf->a6);
-    80202aa6:	70cc                	ld	a1,160(s1)
-    80202aa8:	00007517          	auipc	a0,0x7
-    80202aac:	db850513          	addi	a0,a0,-584 # 80209860 <digits+0x4e0>
-    80202ab0:	ffffd097          	auipc	ra,0xffffd
-    80202ab4:	6de080e7          	jalr	1758(ra) # 8020018e <printf>
+    80202cfa:	70cc                	ld	a1,160(s1)
+    80202cfc:	00007517          	auipc	a0,0x7
+    80202d00:	b6450513          	addi	a0,a0,-1180 # 80209860 <digits+0x4e0>
+    80202d04:	ffffd097          	auipc	ra,0xffffd
+    80202d08:	48a080e7          	jalr	1162(ra) # 8020018e <printf>
   printf("a7: %p\n", tf->a7);
-    80202ab8:	74cc                	ld	a1,168(s1)
-    80202aba:	00007517          	auipc	a0,0x7
-    80202abe:	dae50513          	addi	a0,a0,-594 # 80209868 <digits+0x4e8>
-    80202ac2:	ffffd097          	auipc	ra,0xffffd
-    80202ac6:	6cc080e7          	jalr	1740(ra) # 8020018e <printf>
+    80202d0c:	74cc                	ld	a1,168(s1)
+    80202d0e:	00007517          	auipc	a0,0x7
+    80202d12:	b5a50513          	addi	a0,a0,-1190 # 80209868 <digits+0x4e8>
+    80202d16:	ffffd097          	auipc	ra,0xffffd
+    80202d1a:	478080e7          	jalr	1144(ra) # 8020018e <printf>
   printf("t0: %p\t", tf->t0);
-    80202aca:	64ac                	ld	a1,72(s1)
-    80202acc:	00007517          	auipc	a0,0x7
-    80202ad0:	da450513          	addi	a0,a0,-604 # 80209870 <digits+0x4f0>
-    80202ad4:	ffffd097          	auipc	ra,0xffffd
-    80202ad8:	6ba080e7          	jalr	1722(ra) # 8020018e <printf>
+    80202d1e:	64ac                	ld	a1,72(s1)
+    80202d20:	00007517          	auipc	a0,0x7
+    80202d24:	b5050513          	addi	a0,a0,-1200 # 80209870 <digits+0x4f0>
+    80202d28:	ffffd097          	auipc	ra,0xffffd
+    80202d2c:	466080e7          	jalr	1126(ra) # 8020018e <printf>
   printf("t1: %p\t", tf->t1);
-    80202adc:	68ac                	ld	a1,80(s1)
-    80202ade:	00007517          	auipc	a0,0x7
-    80202ae2:	d9a50513          	addi	a0,a0,-614 # 80209878 <digits+0x4f8>
-    80202ae6:	ffffd097          	auipc	ra,0xffffd
-    80202aea:	6a8080e7          	jalr	1704(ra) # 8020018e <printf>
+    80202d30:	68ac                	ld	a1,80(s1)
+    80202d32:	00007517          	auipc	a0,0x7
+    80202d36:	b4650513          	addi	a0,a0,-1210 # 80209878 <digits+0x4f8>
+    80202d3a:	ffffd097          	auipc	ra,0xffffd
+    80202d3e:	454080e7          	jalr	1108(ra) # 8020018e <printf>
   printf("t2: %p\t", tf->t2);
-    80202aee:	6cac                	ld	a1,88(s1)
-    80202af0:	00007517          	auipc	a0,0x7
-    80202af4:	d9050513          	addi	a0,a0,-624 # 80209880 <digits+0x500>
-    80202af8:	ffffd097          	auipc	ra,0xffffd
-    80202afc:	696080e7          	jalr	1686(ra) # 8020018e <printf>
+    80202d42:	6cac                	ld	a1,88(s1)
+    80202d44:	00007517          	auipc	a0,0x7
+    80202d48:	b3c50513          	addi	a0,a0,-1220 # 80209880 <digits+0x500>
+    80202d4c:	ffffd097          	auipc	ra,0xffffd
+    80202d50:	442080e7          	jalr	1090(ra) # 8020018e <printf>
   printf("t3: %p\n", tf->t3);
-    80202b00:	1004b583          	ld	a1,256(s1)
-    80202b04:	00007517          	auipc	a0,0x7
-    80202b08:	d8450513          	addi	a0,a0,-636 # 80209888 <digits+0x508>
-    80202b0c:	ffffd097          	auipc	ra,0xffffd
-    80202b10:	682080e7          	jalr	1666(ra) # 8020018e <printf>
+    80202d54:	1004b583          	ld	a1,256(s1)
+    80202d58:	00007517          	auipc	a0,0x7
+    80202d5c:	b3050513          	addi	a0,a0,-1232 # 80209888 <digits+0x508>
+    80202d60:	ffffd097          	auipc	ra,0xffffd
+    80202d64:	42e080e7          	jalr	1070(ra) # 8020018e <printf>
   printf("t4: %p\t", tf->t4);
-    80202b14:	1084b583          	ld	a1,264(s1)
-    80202b18:	00007517          	auipc	a0,0x7
-    80202b1c:	d7850513          	addi	a0,a0,-648 # 80209890 <digits+0x510>
-    80202b20:	ffffd097          	auipc	ra,0xffffd
-    80202b24:	66e080e7          	jalr	1646(ra) # 8020018e <printf>
+    80202d68:	1084b583          	ld	a1,264(s1)
+    80202d6c:	00007517          	auipc	a0,0x7
+    80202d70:	b2450513          	addi	a0,a0,-1244 # 80209890 <digits+0x510>
+    80202d74:	ffffd097          	auipc	ra,0xffffd
+    80202d78:	41a080e7          	jalr	1050(ra) # 8020018e <printf>
   printf("t5: %p\t", tf->t5);
-    80202b28:	1104b583          	ld	a1,272(s1)
-    80202b2c:	00007517          	auipc	a0,0x7
-    80202b30:	d6c50513          	addi	a0,a0,-660 # 80209898 <digits+0x518>
-    80202b34:	ffffd097          	auipc	ra,0xffffd
-    80202b38:	65a080e7          	jalr	1626(ra) # 8020018e <printf>
+    80202d7c:	1104b583          	ld	a1,272(s1)
+    80202d80:	00007517          	auipc	a0,0x7
+    80202d84:	b1850513          	addi	a0,a0,-1256 # 80209898 <digits+0x518>
+    80202d88:	ffffd097          	auipc	ra,0xffffd
+    80202d8c:	406080e7          	jalr	1030(ra) # 8020018e <printf>
   printf("t6: %p\t", tf->t6);
-    80202b3c:	1184b583          	ld	a1,280(s1)
-    80202b40:	00007517          	auipc	a0,0x7
-    80202b44:	d6050513          	addi	a0,a0,-672 # 802098a0 <digits+0x520>
-    80202b48:	ffffd097          	auipc	ra,0xffffd
-    80202b4c:	646080e7          	jalr	1606(ra) # 8020018e <printf>
+    80202d90:	1184b583          	ld	a1,280(s1)
+    80202d94:	00007517          	auipc	a0,0x7
+    80202d98:	b0c50513          	addi	a0,a0,-1268 # 802098a0 <digits+0x520>
+    80202d9c:	ffffd097          	auipc	ra,0xffffd
+    80202da0:	3f2080e7          	jalr	1010(ra) # 8020018e <printf>
   printf("s0: %p\n", tf->s0);
-    80202b50:	70ac                	ld	a1,96(s1)
-    80202b52:	00007517          	auipc	a0,0x7
-    80202b56:	d5650513          	addi	a0,a0,-682 # 802098a8 <digits+0x528>
-    80202b5a:	ffffd097          	auipc	ra,0xffffd
-    80202b5e:	634080e7          	jalr	1588(ra) # 8020018e <printf>
+    80202da4:	70ac                	ld	a1,96(s1)
+    80202da6:	00007517          	auipc	a0,0x7
+    80202daa:	b0250513          	addi	a0,a0,-1278 # 802098a8 <digits+0x528>
+    80202dae:	ffffd097          	auipc	ra,0xffffd
+    80202db2:	3e0080e7          	jalr	992(ra) # 8020018e <printf>
   printf("s1: %p\t", tf->s1);
-    80202b62:	74ac                	ld	a1,104(s1)
-    80202b64:	00007517          	auipc	a0,0x7
-    80202b68:	d4c50513          	addi	a0,a0,-692 # 802098b0 <digits+0x530>
-    80202b6c:	ffffd097          	auipc	ra,0xffffd
-    80202b70:	622080e7          	jalr	1570(ra) # 8020018e <printf>
+    80202db6:	74ac                	ld	a1,104(s1)
+    80202db8:	00007517          	auipc	a0,0x7
+    80202dbc:	af850513          	addi	a0,a0,-1288 # 802098b0 <digits+0x530>
+    80202dc0:	ffffd097          	auipc	ra,0xffffd
+    80202dc4:	3ce080e7          	jalr	974(ra) # 8020018e <printf>
   printf("s2: %p\t", tf->s2);
-    80202b74:	78cc                	ld	a1,176(s1)
-    80202b76:	00007517          	auipc	a0,0x7
-    80202b7a:	d4250513          	addi	a0,a0,-702 # 802098b8 <digits+0x538>
-    80202b7e:	ffffd097          	auipc	ra,0xffffd
-    80202b82:	610080e7          	jalr	1552(ra) # 8020018e <printf>
+    80202dc8:	78cc                	ld	a1,176(s1)
+    80202dca:	00007517          	auipc	a0,0x7
+    80202dce:	aee50513          	addi	a0,a0,-1298 # 802098b8 <digits+0x538>
+    80202dd2:	ffffd097          	auipc	ra,0xffffd
+    80202dd6:	3bc080e7          	jalr	956(ra) # 8020018e <printf>
   printf("s3: %p\t", tf->s3);
-    80202b86:	7ccc                	ld	a1,184(s1)
-    80202b88:	00007517          	auipc	a0,0x7
-    80202b8c:	d3850513          	addi	a0,a0,-712 # 802098c0 <digits+0x540>
-    80202b90:	ffffd097          	auipc	ra,0xffffd
-    80202b94:	5fe080e7          	jalr	1534(ra) # 8020018e <printf>
+    80202dda:	7ccc                	ld	a1,184(s1)
+    80202ddc:	00007517          	auipc	a0,0x7
+    80202de0:	ae450513          	addi	a0,a0,-1308 # 802098c0 <digits+0x540>
+    80202de4:	ffffd097          	auipc	ra,0xffffd
+    80202de8:	3aa080e7          	jalr	938(ra) # 8020018e <printf>
   printf("s4: %p\n", tf->s4);
-    80202b98:	60ec                	ld	a1,192(s1)
-    80202b9a:	00007517          	auipc	a0,0x7
-    80202b9e:	d2e50513          	addi	a0,a0,-722 # 802098c8 <digits+0x548>
-    80202ba2:	ffffd097          	auipc	ra,0xffffd
-    80202ba6:	5ec080e7          	jalr	1516(ra) # 8020018e <printf>
+    80202dec:	60ec                	ld	a1,192(s1)
+    80202dee:	00007517          	auipc	a0,0x7
+    80202df2:	ada50513          	addi	a0,a0,-1318 # 802098c8 <digits+0x548>
+    80202df6:	ffffd097          	auipc	ra,0xffffd
+    80202dfa:	398080e7          	jalr	920(ra) # 8020018e <printf>
   printf("s5: %p\t", tf->s5);
-    80202baa:	64ec                	ld	a1,200(s1)
-    80202bac:	00007517          	auipc	a0,0x7
-    80202bb0:	d2450513          	addi	a0,a0,-732 # 802098d0 <digits+0x550>
-    80202bb4:	ffffd097          	auipc	ra,0xffffd
-    80202bb8:	5da080e7          	jalr	1498(ra) # 8020018e <printf>
+    80202dfe:	64ec                	ld	a1,200(s1)
+    80202e00:	00007517          	auipc	a0,0x7
+    80202e04:	ad050513          	addi	a0,a0,-1328 # 802098d0 <digits+0x550>
+    80202e08:	ffffd097          	auipc	ra,0xffffd
+    80202e0c:	386080e7          	jalr	902(ra) # 8020018e <printf>
   printf("s6: %p\t", tf->s6);
-    80202bbc:	68ec                	ld	a1,208(s1)
-    80202bbe:	00007517          	auipc	a0,0x7
-    80202bc2:	d1a50513          	addi	a0,a0,-742 # 802098d8 <digits+0x558>
-    80202bc6:	ffffd097          	auipc	ra,0xffffd
-    80202bca:	5c8080e7          	jalr	1480(ra) # 8020018e <printf>
+    80202e10:	68ec                	ld	a1,208(s1)
+    80202e12:	00007517          	auipc	a0,0x7
+    80202e16:	ac650513          	addi	a0,a0,-1338 # 802098d8 <digits+0x558>
+    80202e1a:	ffffd097          	auipc	ra,0xffffd
+    80202e1e:	374080e7          	jalr	884(ra) # 8020018e <printf>
   printf("s7: %p\t", tf->s7);
-    80202bce:	6cec                	ld	a1,216(s1)
-    80202bd0:	00007517          	auipc	a0,0x7
-    80202bd4:	d1050513          	addi	a0,a0,-752 # 802098e0 <digits+0x560>
-    80202bd8:	ffffd097          	auipc	ra,0xffffd
-    80202bdc:	5b6080e7          	jalr	1462(ra) # 8020018e <printf>
+    80202e22:	6cec                	ld	a1,216(s1)
+    80202e24:	00007517          	auipc	a0,0x7
+    80202e28:	abc50513          	addi	a0,a0,-1348 # 802098e0 <digits+0x560>
+    80202e2c:	ffffd097          	auipc	ra,0xffffd
+    80202e30:	362080e7          	jalr	866(ra) # 8020018e <printf>
   printf("s8: %p\n", tf->s8);
-    80202be0:	70ec                	ld	a1,224(s1)
-    80202be2:	00007517          	auipc	a0,0x7
-    80202be6:	d0650513          	addi	a0,a0,-762 # 802098e8 <digits+0x568>
-    80202bea:	ffffd097          	auipc	ra,0xffffd
-    80202bee:	5a4080e7          	jalr	1444(ra) # 8020018e <printf>
+    80202e34:	70ec                	ld	a1,224(s1)
+    80202e36:	00007517          	auipc	a0,0x7
+    80202e3a:	ab250513          	addi	a0,a0,-1358 # 802098e8 <digits+0x568>
+    80202e3e:	ffffd097          	auipc	ra,0xffffd
+    80202e42:	350080e7          	jalr	848(ra) # 8020018e <printf>
   printf("s9: %p\t", tf->s9);
-    80202bf2:	74ec                	ld	a1,232(s1)
-    80202bf4:	00007517          	auipc	a0,0x7
-    80202bf8:	cfc50513          	addi	a0,a0,-772 # 802098f0 <digits+0x570>
-    80202bfc:	ffffd097          	auipc	ra,0xffffd
-    80202c00:	592080e7          	jalr	1426(ra) # 8020018e <printf>
+    80202e46:	74ec                	ld	a1,232(s1)
+    80202e48:	00007517          	auipc	a0,0x7
+    80202e4c:	aa850513          	addi	a0,a0,-1368 # 802098f0 <digits+0x570>
+    80202e50:	ffffd097          	auipc	ra,0xffffd
+    80202e54:	33e080e7          	jalr	830(ra) # 8020018e <printf>
   printf("s10: %p\t", tf->s10);
-    80202c04:	78ec                	ld	a1,240(s1)
-    80202c06:	00007517          	auipc	a0,0x7
-    80202c0a:	cf250513          	addi	a0,a0,-782 # 802098f8 <digits+0x578>
-    80202c0e:	ffffd097          	auipc	ra,0xffffd
-    80202c12:	580080e7          	jalr	1408(ra) # 8020018e <printf>
+    80202e58:	78ec                	ld	a1,240(s1)
+    80202e5a:	00007517          	auipc	a0,0x7
+    80202e5e:	a9e50513          	addi	a0,a0,-1378 # 802098f8 <digits+0x578>
+    80202e62:	ffffd097          	auipc	ra,0xffffd
+    80202e66:	32c080e7          	jalr	812(ra) # 8020018e <printf>
   printf("s11: %p\t", tf->s11);
-    80202c16:	7cec                	ld	a1,248(s1)
-    80202c18:	00007517          	auipc	a0,0x7
-    80202c1c:	cf050513          	addi	a0,a0,-784 # 80209908 <digits+0x588>
-    80202c20:	ffffd097          	auipc	ra,0xffffd
-    80202c24:	56e080e7          	jalr	1390(ra) # 8020018e <printf>
+    80202e6a:	7cec                	ld	a1,248(s1)
+    80202e6c:	00007517          	auipc	a0,0x7
+    80202e70:	a9c50513          	addi	a0,a0,-1380 # 80209908 <digits+0x588>
+    80202e74:	ffffd097          	auipc	ra,0xffffd
+    80202e78:	31a080e7          	jalr	794(ra) # 8020018e <printf>
   printf("ra: %p\n", tf->ra);
-    80202c28:	748c                	ld	a1,40(s1)
-    80202c2a:	00007517          	auipc	a0,0x7
-    80202c2e:	9e650513          	addi	a0,a0,-1562 # 80209610 <digits+0x290>
-    80202c32:	ffffd097          	auipc	ra,0xffffd
-    80202c36:	55c080e7          	jalr	1372(ra) # 8020018e <printf>
+    80202e7c:	748c                	ld	a1,40(s1)
+    80202e7e:	00006517          	auipc	a0,0x6
+    80202e82:	79250513          	addi	a0,a0,1938 # 80209610 <digits+0x290>
+    80202e86:	ffffd097          	auipc	ra,0xffffd
+    80202e8a:	308080e7          	jalr	776(ra) # 8020018e <printf>
   printf("sp: %p\t", tf->sp);
-    80202c3a:	788c                	ld	a1,48(s1)
-    80202c3c:	00007517          	auipc	a0,0x7
-    80202c40:	cdc50513          	addi	a0,a0,-804 # 80209918 <digits+0x598>
-    80202c44:	ffffd097          	auipc	ra,0xffffd
-    80202c48:	54a080e7          	jalr	1354(ra) # 8020018e <printf>
+    80202e8e:	788c                	ld	a1,48(s1)
+    80202e90:	00007517          	auipc	a0,0x7
+    80202e94:	a8850513          	addi	a0,a0,-1400 # 80209918 <digits+0x598>
+    80202e98:	ffffd097          	auipc	ra,0xffffd
+    80202e9c:	2f6080e7          	jalr	758(ra) # 8020018e <printf>
   printf("gp: %p\t", tf->gp);
-    80202c4c:	7c8c                	ld	a1,56(s1)
-    80202c4e:	00007517          	auipc	a0,0x7
-    80202c52:	cd250513          	addi	a0,a0,-814 # 80209920 <digits+0x5a0>
-    80202c56:	ffffd097          	auipc	ra,0xffffd
-    80202c5a:	538080e7          	jalr	1336(ra) # 8020018e <printf>
+    80202ea0:	7c8c                	ld	a1,56(s1)
+    80202ea2:	00007517          	auipc	a0,0x7
+    80202ea6:	a7e50513          	addi	a0,a0,-1410 # 80209920 <digits+0x5a0>
+    80202eaa:	ffffd097          	auipc	ra,0xffffd
+    80202eae:	2e4080e7          	jalr	740(ra) # 8020018e <printf>
   printf("tp: %p\t", tf->tp);
-    80202c5e:	60ac                	ld	a1,64(s1)
-    80202c60:	00007517          	auipc	a0,0x7
-    80202c64:	cc850513          	addi	a0,a0,-824 # 80209928 <digits+0x5a8>
-    80202c68:	ffffd097          	auipc	ra,0xffffd
-    80202c6c:	526080e7          	jalr	1318(ra) # 8020018e <printf>
+    80202eb2:	60ac                	ld	a1,64(s1)
+    80202eb4:	00007517          	auipc	a0,0x7
+    80202eb8:	a7450513          	addi	a0,a0,-1420 # 80209928 <digits+0x5a8>
+    80202ebc:	ffffd097          	auipc	ra,0xffffd
+    80202ec0:	2d2080e7          	jalr	722(ra) # 8020018e <printf>
   printf("epc: %p\n", tf->epc);
-    80202c70:	6c8c                	ld	a1,24(s1)
-    80202c72:	00007517          	auipc	a0,0x7
-    80202c76:	cbe50513          	addi	a0,a0,-834 # 80209930 <digits+0x5b0>
-    80202c7a:	ffffd097          	auipc	ra,0xffffd
-    80202c7e:	514080e7          	jalr	1300(ra) # 8020018e <printf>
-}
-    80202c82:	60e2                	ld	ra,24(sp)
-    80202c84:	6442                	ld	s0,16(sp)
-    80202c86:	64a2                	ld	s1,8(sp)
-    80202c88:	6105                	addi	sp,sp,32
-    80202c8a:	8082                	ret
-
-0000000080202c8c <argraw>:
+    80202ec4:	6c8c                	ld	a1,24(s1)
+    80202ec6:	00007517          	auipc	a0,0x7
+    80202eca:	a6a50513          	addi	a0,a0,-1430 # 80209930 <digits+0x5b0>
+    80202ece:	ffffd097          	auipc	ra,0xffffd
+    80202ed2:	2c0080e7          	jalr	704(ra) # 8020018e <printf>
+}
+    80202ed6:	60e2                	ld	ra,24(sp)
+    80202ed8:	6442                	ld	s0,16(sp)
+    80202eda:	64a2                	ld	s1,8(sp)
+    80202edc:	6105                	addi	sp,sp,32
+    80202ede:	8082                	ret
+
+0000000080202ee0 <argraw>:
   return strlen(buf);
 }
 
 static uint64
 argraw(int n)
 {
-    80202c8c:	1101                	addi	sp,sp,-32
-    80202c8e:	ec06                	sd	ra,24(sp)
-    80202c90:	e822                	sd	s0,16(sp)
-    80202c92:	e426                	sd	s1,8(sp)
-    80202c94:	1000                	addi	s0,sp,32
-    80202c96:	84aa                	mv	s1,a0
+    80202ee0:	1101                	addi	sp,sp,-32
+    80202ee2:	ec06                	sd	ra,24(sp)
+    80202ee4:	e822                	sd	s0,16(sp)
+    80202ee6:	e426                	sd	s1,8(sp)
+    80202ee8:	1000                	addi	s0,sp,32
+    80202eea:	84aa                	mv	s1,a0
   struct proc *p = myproc();
-    80202c98:	fffff097          	auipc	ra,0xfffff
-    80202c9c:	da4080e7          	jalr	-604(ra) # 80201a3c <myproc>
+    80202eec:	fffff097          	auipc	ra,0xfffff
+    80202ef0:	b50080e7          	jalr	-1200(ra) # 80201a3c <myproc>
   switch (n) {
-    80202ca0:	4795                	li	a5,5
-    80202ca2:	0497e163          	bltu	a5,s1,80202ce4 <argraw+0x58>
-    80202ca6:	048a                	slli	s1,s1,0x2
-    80202ca8:	00007717          	auipc	a4,0x7
-    80202cac:	e0870713          	addi	a4,a4,-504 # 80209ab0 <digits+0x730>
-    80202cb0:	94ba                	add	s1,s1,a4
-    80202cb2:	409c                	lw	a5,0(s1)
-    80202cb4:	97ba                	add	a5,a5,a4
-    80202cb6:	8782                	jr	a5
+    80202ef4:	4795                	li	a5,5
+    80202ef6:	0497e163          	bltu	a5,s1,80202f38 <argraw+0x58>
+    80202efa:	048a                	slli	s1,s1,0x2
+    80202efc:	00007717          	auipc	a4,0x7
+    80202f00:	bec70713          	addi	a4,a4,-1044 # 80209ae8 <digits+0x768>
+    80202f04:	94ba                	add	s1,s1,a4
+    80202f06:	409c                	lw	a5,0(s1)
+    80202f08:	97ba                	add	a5,a5,a4
+    80202f0a:	8782                	jr	a5
   case 0:
     return p->trapframe->a0;
-    80202cb8:	713c                	ld	a5,96(a0)
-    80202cba:	7ba8                	ld	a0,112(a5)
+    80202f0c:	713c                	ld	a5,96(a0)
+    80202f0e:	7ba8                	ld	a0,112(a5)
   case 5:
     return p->trapframe->a5;
   }
   panic("argraw");
   return -1;
 }
-    80202cbc:	60e2                	ld	ra,24(sp)
-    80202cbe:	6442                	ld	s0,16(sp)
-    80202cc0:	64a2                	ld	s1,8(sp)
-    80202cc2:	6105                	addi	sp,sp,32
-    80202cc4:	8082                	ret
+    80202f10:	60e2                	ld	ra,24(sp)
+    80202f12:	6442                	ld	s0,16(sp)
+    80202f14:	64a2                	ld	s1,8(sp)
+    80202f16:	6105                	addi	sp,sp,32
+    80202f18:	8082                	ret
     return p->trapframe->a1;
-    80202cc6:	713c                	ld	a5,96(a0)
-    80202cc8:	7fa8                	ld	a0,120(a5)
-    80202cca:	bfcd                	j	80202cbc <argraw+0x30>
+    80202f1a:	713c                	ld	a5,96(a0)
+    80202f1c:	7fa8                	ld	a0,120(a5)
+    80202f1e:	bfcd                	j	80202f10 <argraw+0x30>
     return p->trapframe->a2;
-    80202ccc:	713c                	ld	a5,96(a0)
-    80202cce:	63c8                	ld	a0,128(a5)
-    80202cd0:	b7f5                	j	80202cbc <argraw+0x30>
+    80202f20:	713c                	ld	a5,96(a0)
+    80202f22:	63c8                	ld	a0,128(a5)
+    80202f24:	b7f5                	j	80202f10 <argraw+0x30>
     return p->trapframe->a3;
-    80202cd2:	713c                	ld	a5,96(a0)
-    80202cd4:	67c8                	ld	a0,136(a5)
-    80202cd6:	b7dd                	j	80202cbc <argraw+0x30>
+    80202f26:	713c                	ld	a5,96(a0)
+    80202f28:	67c8                	ld	a0,136(a5)
+    80202f2a:	b7dd                	j	80202f10 <argraw+0x30>
     return p->trapframe->a4;
-    80202cd8:	713c                	ld	a5,96(a0)
-    80202cda:	6bc8                	ld	a0,144(a5)
-    80202cdc:	b7c5                	j	80202cbc <argraw+0x30>
+    80202f2c:	713c                	ld	a5,96(a0)
+    80202f2e:	6bc8                	ld	a0,144(a5)
+    80202f30:	b7c5                	j	80202f10 <argraw+0x30>
     return p->trapframe->a5;
-    80202cde:	713c                	ld	a5,96(a0)
-    80202ce0:	6fc8                	ld	a0,152(a5)
-    80202ce2:	bfe9                	j	80202cbc <argraw+0x30>
+    80202f32:	713c                	ld	a5,96(a0)
+    80202f34:	6fc8                	ld	a0,152(a5)
+    80202f36:	bfe9                	j	80202f10 <argraw+0x30>
   panic("argraw");
-    80202ce4:	00007517          	auipc	a0,0x7
-    80202ce8:	c5c50513          	addi	a0,a0,-932 # 80209940 <digits+0x5c0>
-    80202cec:	ffffd097          	auipc	ra,0xffffd
-    80202cf0:	458080e7          	jalr	1112(ra) # 80200144 <panic>
+    80202f38:	00007517          	auipc	a0,0x7
+    80202f3c:	a0850513          	addi	a0,a0,-1528 # 80209940 <digits+0x5c0>
+    80202f40:	ffffd097          	auipc	ra,0xffffd
+    80202f44:	204080e7          	jalr	516(ra) # 80200144 <panic>
 
-0000000080202cf4 <sys_sysinfo>:
+0000000080202f48 <sys_sysinfo>:
     return 0;
 }
 
 uint64
 sys_sysinfo(void)
 {
-    80202cf4:	7179                	addi	sp,sp,-48
-    80202cf6:	f406                	sd	ra,40(sp)
-    80202cf8:	f022                	sd	s0,32(sp)
-    80202cfa:	ec26                	sd	s1,24(sp)
-    80202cfc:	1800                	addi	s0,sp,48
+    80202f48:	7179                	addi	sp,sp,-48
+    80202f4a:	f406                	sd	ra,40(sp)
+    80202f4c:	f022                	sd	s0,32(sp)
+    80202f4e:	ec26                	sd	s1,24(sp)
+    80202f50:	1800                	addi	s0,sp,48
   *ip = argraw(n);
-    80202cfe:	4501                	li	a0,0
-    80202d00:	00000097          	auipc	ra,0x0
-    80202d04:	f8c080e7          	jalr	-116(ra) # 80202c8c <argraw>
-    80202d08:	84aa                	mv	s1,a0
+    80202f52:	4501                	li	a0,0
+    80202f54:	00000097          	auipc	ra,0x0
+    80202f58:	f8c080e7          	jalr	-116(ra) # 80202ee0 <argraw>
+    80202f5c:	84aa                	mv	s1,a0
   if (argaddr(0, &addr) < 0) {
     return -1;
   }
 
   struct sysinfo info;
   info.freemem = freemem_amount();
-    80202d0a:	ffffe097          	auipc	ra,0xffffe
-    80202d0e:	8b6080e7          	jalr	-1866(ra) # 802005c0 <freemem_amount>
-    80202d12:	fca43823          	sd	a0,-48(s0)
+    80202f5e:	ffffd097          	auipc	ra,0xffffd
+    80202f62:	662080e7          	jalr	1634(ra) # 802005c0 <freemem_amount>
+    80202f66:	fca43823          	sd	a0,-48(s0)
   info.nproc = procnum();
-    80202d16:	00000097          	auipc	ra,0x0
-    80202d1a:	91a080e7          	jalr	-1766(ra) # 80202630 <procnum>
-    80202d1e:	fca43c23          	sd	a0,-40(s0)
+    80202f6a:	fffff097          	auipc	ra,0xfffff
+    80202f6e:	6c6080e7          	jalr	1734(ra) # 80202630 <procnum>
+    80202f72:	fca43c23          	sd	a0,-40(s0)
 
   // if (copyout(p->pagetable, addr, (char *)&info, sizeof(info)) < 0) {
   if (copyout2(addr, (char *)&info, sizeof(info)) < 0) {
-    80202d22:	4641                	li	a2,16
-    80202d24:	fd040593          	addi	a1,s0,-48
-    80202d28:	8526                	mv	a0,s1
-    80202d2a:	ffffe097          	auipc	ra,0xffffe
-    80202d2e:	648080e7          	jalr	1608(ra) # 80201372 <copyout2>
+    80202f76:	4641                	li	a2,16
+    80202f78:	fd040593          	addi	a1,s0,-48
+    80202f7c:	8526                	mv	a0,s1
+    80202f7e:	ffffe097          	auipc	ra,0xffffe
+    80202f82:	3f4080e7          	jalr	1012(ra) # 80201372 <copyout2>
     return -1;
   }
 
   return 0;
 }
-    80202d32:	957d                	srai	a0,a0,0x3f
-    80202d34:	70a2                	ld	ra,40(sp)
-    80202d36:	7402                	ld	s0,32(sp)
-    80202d38:	64e2                	ld	s1,24(sp)
-    80202d3a:	6145                	addi	sp,sp,48
-    80202d3c:	8082                	ret
-
-0000000080202d3e <fetchaddr>:
-{
-    80202d3e:	1101                	addi	sp,sp,-32
-    80202d40:	ec06                	sd	ra,24(sp)
-    80202d42:	e822                	sd	s0,16(sp)
-    80202d44:	e426                	sd	s1,8(sp)
-    80202d46:	e04a                	sd	s2,0(sp)
-    80202d48:	1000                	addi	s0,sp,32
-    80202d4a:	84aa                	mv	s1,a0
-    80202d4c:	892e                	mv	s2,a1
+    80202f86:	957d                	srai	a0,a0,0x3f
+    80202f88:	70a2                	ld	ra,40(sp)
+    80202f8a:	7402                	ld	s0,32(sp)
+    80202f8c:	64e2                	ld	s1,24(sp)
+    80202f8e:	6145                	addi	sp,sp,48
+    80202f90:	8082                	ret
+
+0000000080202f92 <fetchaddr>:
+{
+    80202f92:	1101                	addi	sp,sp,-32
+    80202f94:	ec06                	sd	ra,24(sp)
+    80202f96:	e822                	sd	s0,16(sp)
+    80202f98:	e426                	sd	s1,8(sp)
+    80202f9a:	e04a                	sd	s2,0(sp)
+    80202f9c:	1000                	addi	s0,sp,32
+    80202f9e:	84aa                	mv	s1,a0
+    80202fa0:	892e                	mv	s2,a1
   struct proc *p = myproc();
-    80202d4e:	fffff097          	auipc	ra,0xfffff
-    80202d52:	cee080e7          	jalr	-786(ra) # 80201a3c <myproc>
+    80202fa2:	fffff097          	auipc	ra,0xfffff
+    80202fa6:	a9a080e7          	jalr	-1382(ra) # 80201a3c <myproc>
   if(addr >= p->sz || addr+sizeof(uint64) > p->sz)
-    80202d56:	653c                	ld	a5,72(a0)
-    80202d58:	02f4f763          	bgeu	s1,a5,80202d86 <fetchaddr+0x48>
-    80202d5c:	00848713          	addi	a4,s1,8
-    80202d60:	02e7e563          	bltu	a5,a4,80202d8a <fetchaddr+0x4c>
+    80202faa:	653c                	ld	a5,72(a0)
+    80202fac:	02f4f763          	bgeu	s1,a5,80202fda <fetchaddr+0x48>
+    80202fb0:	00848713          	addi	a4,s1,8
+    80202fb4:	02e7e563          	bltu	a5,a4,80202fde <fetchaddr+0x4c>
   if(copyin2((char *)ip, addr, sizeof(*ip)) != 0)
-    80202d64:	4621                	li	a2,8
-    80202d66:	85a6                	mv	a1,s1
-    80202d68:	854a                	mv	a0,s2
-    80202d6a:	ffffe097          	auipc	ra,0xffffe
-    80202d6e:	6e8080e7          	jalr	1768(ra) # 80201452 <copyin2>
-    80202d72:	00a03533          	snez	a0,a0
-    80202d76:	40a00533          	neg	a0,a0
-}
-    80202d7a:	60e2                	ld	ra,24(sp)
-    80202d7c:	6442                	ld	s0,16(sp)
-    80202d7e:	64a2                	ld	s1,8(sp)
-    80202d80:	6902                	ld	s2,0(sp)
-    80202d82:	6105                	addi	sp,sp,32
-    80202d84:	8082                	ret
+    80202fb8:	4621                	li	a2,8
+    80202fba:	85a6                	mv	a1,s1
+    80202fbc:	854a                	mv	a0,s2
+    80202fbe:	ffffe097          	auipc	ra,0xffffe
+    80202fc2:	494080e7          	jalr	1172(ra) # 80201452 <copyin2>
+    80202fc6:	00a03533          	snez	a0,a0
+    80202fca:	40a00533          	neg	a0,a0
+}
+    80202fce:	60e2                	ld	ra,24(sp)
+    80202fd0:	6442                	ld	s0,16(sp)
+    80202fd2:	64a2                	ld	s1,8(sp)
+    80202fd4:	6902                	ld	s2,0(sp)
+    80202fd6:	6105                	addi	sp,sp,32
+    80202fd8:	8082                	ret
     return -1;
-    80202d86:	557d                	li	a0,-1
-    80202d88:	bfcd                	j	80202d7a <fetchaddr+0x3c>
-    80202d8a:	557d                	li	a0,-1
-    80202d8c:	b7fd                	j	80202d7a <fetchaddr+0x3c>
-
-0000000080202d8e <fetchstr>:
-{
-    80202d8e:	1101                	addi	sp,sp,-32
-    80202d90:	ec06                	sd	ra,24(sp)
-    80202d92:	e822                	sd	s0,16(sp)
-    80202d94:	e426                	sd	s1,8(sp)
-    80202d96:	1000                	addi	s0,sp,32
-    80202d98:	84ae                	mv	s1,a1
+    80202fda:	557d                	li	a0,-1
+    80202fdc:	bfcd                	j	80202fce <fetchaddr+0x3c>
+    80202fde:	557d                	li	a0,-1
+    80202fe0:	b7fd                	j	80202fce <fetchaddr+0x3c>
+
+0000000080202fe2 <fetchstr>:
+{
+    80202fe2:	1101                	addi	sp,sp,-32
+    80202fe4:	ec06                	sd	ra,24(sp)
+    80202fe6:	e822                	sd	s0,16(sp)
+    80202fe8:	e426                	sd	s1,8(sp)
+    80202fea:	1000                	addi	s0,sp,32
+    80202fec:	84ae                	mv	s1,a1
   int err = copyinstr2(buf, addr, max);
-    80202d9a:	85aa                	mv	a1,a0
-    80202d9c:	8526                	mv	a0,s1
-    80202d9e:	ffffe097          	auipc	ra,0xffffe
-    80202da2:	7b6080e7          	jalr	1974(ra) # 80201554 <copyinstr2>
+    80202fee:	85aa                	mv	a1,a0
+    80202ff0:	8526                	mv	a0,s1
+    80202ff2:	ffffe097          	auipc	ra,0xffffe
+    80202ff6:	562080e7          	jalr	1378(ra) # 80201554 <copyinstr2>
   if(err < 0)
-    80202da6:	00054763          	bltz	a0,80202db4 <fetchstr+0x26>
+    80202ffa:	00054763          	bltz	a0,80203008 <fetchstr+0x26>
   return strlen(buf);
-    80202daa:	8526                	mv	a0,s1
-    80202dac:	ffffe097          	auipc	ra,0xffffe
-    80202db0:	b3a080e7          	jalr	-1222(ra) # 802008e6 <strlen>
-}
-    80202db4:	60e2                	ld	ra,24(sp)
-    80202db6:	6442                	ld	s0,16(sp)
-    80202db8:	64a2                	ld	s1,8(sp)
-    80202dba:	6105                	addi	sp,sp,32
-    80202dbc:	8082                	ret
-
-0000000080202dbe <argint>:
-{
-    80202dbe:	1101                	addi	sp,sp,-32
-    80202dc0:	ec06                	sd	ra,24(sp)
-    80202dc2:	e822                	sd	s0,16(sp)
-    80202dc4:	e426                	sd	s1,8(sp)
-    80202dc6:	1000                	addi	s0,sp,32
-    80202dc8:	84ae                	mv	s1,a1
+    80202ffe:	8526                	mv	a0,s1
+    80203000:	ffffe097          	auipc	ra,0xffffe
+    80203004:	8e6080e7          	jalr	-1818(ra) # 802008e6 <strlen>
+}
+    80203008:	60e2                	ld	ra,24(sp)
+    8020300a:	6442                	ld	s0,16(sp)
+    8020300c:	64a2                	ld	s1,8(sp)
+    8020300e:	6105                	addi	sp,sp,32
+    80203010:	8082                	ret
+
+0000000080203012 <argint>:
+{
+    80203012:	1101                	addi	sp,sp,-32
+    80203014:	ec06                	sd	ra,24(sp)
+    80203016:	e822                	sd	s0,16(sp)
+    80203018:	e426                	sd	s1,8(sp)
+    8020301a:	1000                	addi	s0,sp,32
+    8020301c:	84ae                	mv	s1,a1
   *ip = argraw(n);
-    80202dca:	00000097          	auipc	ra,0x0
-    80202dce:	ec2080e7          	jalr	-318(ra) # 80202c8c <argraw>
-    80202dd2:	c088                	sw	a0,0(s1)
-}
-    80202dd4:	4501                	li	a0,0
-    80202dd6:	60e2                	ld	ra,24(sp)
-    80202dd8:	6442                	ld	s0,16(sp)
-    80202dda:	64a2                	ld	s1,8(sp)
-    80202ddc:	6105                	addi	sp,sp,32
-    80202dde:	8082                	ret
-
-0000000080202de0 <sys_test_proc>:
+    8020301e:	00000097          	auipc	ra,0x0
+    80203022:	ec2080e7          	jalr	-318(ra) # 80202ee0 <argraw>
+    80203026:	c088                	sw	a0,0(s1)
+}
+    80203028:	4501                	li	a0,0
+    8020302a:	60e2                	ld	ra,24(sp)
+    8020302c:	6442                	ld	s0,16(sp)
+    8020302e:	64a2                	ld	s1,8(sp)
+    80203030:	6105                	addi	sp,sp,32
+    80203032:	8082                	ret
+
+0000000080203034 <sys_test_proc>:
 sys_test_proc(void) {
-    80202de0:	1101                	addi	sp,sp,-32
-    80202de2:	ec06                	sd	ra,24(sp)
-    80202de4:	e822                	sd	s0,16(sp)
-    80202de6:	1000                	addi	s0,sp,32
+    80203034:	1101                	addi	sp,sp,-32
+    80203036:	ec06                	sd	ra,24(sp)
+    80203038:	e822                	sd	s0,16(sp)
+    8020303a:	1000                	addi	s0,sp,32
     argint(0, &n);
-    80202de8:	fec40593          	addi	a1,s0,-20
-    80202dec:	4501                	li	a0,0
-    80202dee:	00000097          	auipc	ra,0x0
-    80202df2:	fd0080e7          	jalr	-48(ra) # 80202dbe <argint>
+    8020303c:	fec40593          	addi	a1,s0,-20
+    80203040:	4501                	li	a0,0
+    80203042:	00000097          	auipc	ra,0x0
+    80203046:	fd0080e7          	jalr	-48(ra) # 80203012 <argint>
     printf("hello world from proc %d, hart %d, arg %d\n", myproc()->pid, r_tp(), n);
-    80202df6:	fffff097          	auipc	ra,0xfffff
-    80202dfa:	c46080e7          	jalr	-954(ra) # 80201a3c <myproc>
-    80202dfe:	8612                	mv	a2,tp
-    80202e00:	fec42683          	lw	a3,-20(s0)
-    80202e04:	5d0c                	lw	a1,56(a0)
-    80202e06:	00007517          	auipc	a0,0x7
-    80202e0a:	b4250513          	addi	a0,a0,-1214 # 80209948 <digits+0x5c8>
-    80202e0e:	ffffd097          	auipc	ra,0xffffd
-    80202e12:	380080e7          	jalr	896(ra) # 8020018e <printf>
-}
-    80202e16:	4501                	li	a0,0
-    80202e18:	60e2                	ld	ra,24(sp)
-    80202e1a:	6442                	ld	s0,16(sp)
-    80202e1c:	6105                	addi	sp,sp,32
-    80202e1e:	8082                	ret
-
-0000000080202e20 <argaddr>:
-{
-    80202e20:	1101                	addi	sp,sp,-32
-    80202e22:	ec06                	sd	ra,24(sp)
-    80202e24:	e822                	sd	s0,16(sp)
-    80202e26:	e426                	sd	s1,8(sp)
-    80202e28:	1000                	addi	s0,sp,32
-    80202e2a:	84ae                	mv	s1,a1
+    8020304a:	fffff097          	auipc	ra,0xfffff
+    8020304e:	9f2080e7          	jalr	-1550(ra) # 80201a3c <myproc>
+    80203052:	8612                	mv	a2,tp
+    80203054:	fec42683          	lw	a3,-20(s0)
+    80203058:	5d0c                	lw	a1,56(a0)
+    8020305a:	00007517          	auipc	a0,0x7
+    8020305e:	8ee50513          	addi	a0,a0,-1810 # 80209948 <digits+0x5c8>
+    80203062:	ffffd097          	auipc	ra,0xffffd
+    80203066:	12c080e7          	jalr	300(ra) # 8020018e <printf>
+}
+    8020306a:	4501                	li	a0,0
+    8020306c:	60e2                	ld	ra,24(sp)
+    8020306e:	6442                	ld	s0,16(sp)
+    80203070:	6105                	addi	sp,sp,32
+    80203072:	8082                	ret
+
+0000000080203074 <argaddr>:
+{
+    80203074:	1101                	addi	sp,sp,-32
+    80203076:	ec06                	sd	ra,24(sp)
+    80203078:	e822                	sd	s0,16(sp)
+    8020307a:	e426                	sd	s1,8(sp)
+    8020307c:	1000                	addi	s0,sp,32
+    8020307e:	84ae                	mv	s1,a1
   *ip = argraw(n);
-    80202e2c:	00000097          	auipc	ra,0x0
-    80202e30:	e60080e7          	jalr	-416(ra) # 80202c8c <argraw>
-    80202e34:	e088                	sd	a0,0(s1)
-}
-    80202e36:	4501                	li	a0,0
-    80202e38:	60e2                	ld	ra,24(sp)
-    80202e3a:	6442                	ld	s0,16(sp)
-    80202e3c:	64a2                	ld	s1,8(sp)
-    80202e3e:	6105                	addi	sp,sp,32
-    80202e40:	8082                	ret
-
-0000000080202e42 <argstr>:
-{
-    80202e42:	1101                	addi	sp,sp,-32
-    80202e44:	ec06                	sd	ra,24(sp)
-    80202e46:	e822                	sd	s0,16(sp)
-    80202e48:	e426                	sd	s1,8(sp)
-    80202e4a:	e04a                	sd	s2,0(sp)
-    80202e4c:	1000                	addi	s0,sp,32
-    80202e4e:	84ae                	mv	s1,a1
-    80202e50:	8932                	mv	s2,a2
+    80203080:	00000097          	auipc	ra,0x0
+    80203084:	e60080e7          	jalr	-416(ra) # 80202ee0 <argraw>
+    80203088:	e088                	sd	a0,0(s1)
+}
+    8020308a:	4501                	li	a0,0
+    8020308c:	60e2                	ld	ra,24(sp)
+    8020308e:	6442                	ld	s0,16(sp)
+    80203090:	64a2                	ld	s1,8(sp)
+    80203092:	6105                	addi	sp,sp,32
+    80203094:	8082                	ret
+
+0000000080203096 <argstr>:
+{
+    80203096:	1101                	addi	sp,sp,-32
+    80203098:	ec06                	sd	ra,24(sp)
+    8020309a:	e822                	sd	s0,16(sp)
+    8020309c:	e426                	sd	s1,8(sp)
+    8020309e:	e04a                	sd	s2,0(sp)
+    802030a0:	1000                	addi	s0,sp,32
+    802030a2:	84ae                	mv	s1,a1
+    802030a4:	8932                	mv	s2,a2
   *ip = argraw(n);
-    80202e52:	00000097          	auipc	ra,0x0
-    80202e56:	e3a080e7          	jalr	-454(ra) # 80202c8c <argraw>
+    802030a6:	00000097          	auipc	ra,0x0
+    802030aa:	e3a080e7          	jalr	-454(ra) # 80202ee0 <argraw>
   return fetchstr(addr, buf, max);
-    80202e5a:	864a                	mv	a2,s2
-    80202e5c:	85a6                	mv	a1,s1
-    80202e5e:	00000097          	auipc	ra,0x0
-    80202e62:	f30080e7          	jalr	-208(ra) # 80202d8e <fetchstr>
-}
-    80202e66:	60e2                	ld	ra,24(sp)
-    80202e68:	6442                	ld	s0,16(sp)
-    80202e6a:	64a2                	ld	s1,8(sp)
-    80202e6c:	6902                	ld	s2,0(sp)
-    80202e6e:	6105                	addi	sp,sp,32
-    80202e70:	8082                	ret
-
-0000000080202e72 <syscall>:
-{
-    80202e72:	7179                	addi	sp,sp,-48
-    80202e74:	f406                	sd	ra,40(sp)
-    80202e76:	f022                	sd	s0,32(sp)
-    80202e78:	ec26                	sd	s1,24(sp)
-    80202e7a:	e84a                	sd	s2,16(sp)
-    80202e7c:	e44e                	sd	s3,8(sp)
-    80202e7e:	1800                	addi	s0,sp,48
+    802030ae:	864a                	mv	a2,s2
+    802030b0:	85a6                	mv	a1,s1
+    802030b2:	00000097          	auipc	ra,0x0
+    802030b6:	f30080e7          	jalr	-208(ra) # 80202fe2 <fetchstr>
+}
+    802030ba:	60e2                	ld	ra,24(sp)
+    802030bc:	6442                	ld	s0,16(sp)
+    802030be:	64a2                	ld	s1,8(sp)
+    802030c0:	6902                	ld	s2,0(sp)
+    802030c2:	6105                	addi	sp,sp,32
+    802030c4:	8082                	ret
+
+00000000802030c6 <syscall>:
+{
+    802030c6:	7179                	addi	sp,sp,-48
+    802030c8:	f406                	sd	ra,40(sp)
+    802030ca:	f022                	sd	s0,32(sp)
+    802030cc:	ec26                	sd	s1,24(sp)
+    802030ce:	e84a                	sd	s2,16(sp)
+    802030d0:	e44e                	sd	s3,8(sp)
+    802030d2:	1800                	addi	s0,sp,48
   struct proc *p = myproc();
-    80202e80:	fffff097          	auipc	ra,0xfffff
-    80202e84:	bbc080e7          	jalr	-1092(ra) # 80201a3c <myproc>
-    80202e88:	84aa                	mv	s1,a0
+    802030d4:	fffff097          	auipc	ra,0xfffff
+    802030d8:	968080e7          	jalr	-1688(ra) # 80201a3c <myproc>
+    802030dc:	84aa                	mv	s1,a0
   num = p->trapframe->a7;
-    80202e8a:	06053903          	ld	s2,96(a0)
-    80202e8e:	0a893783          	ld	a5,168(s2)
-    80202e92:	0007899b          	sext.w	s3,a5
+    802030de:	06053903          	ld	s2,96(a0)
+    802030e2:	0a893783          	ld	a5,168(s2)
+    802030e6:	0007899b          	sext.w	s3,a5
   if(num > 0 && num < NELEM(syscalls) && syscalls[num]) {
-    80202e96:	37fd                	addiw	a5,a5,-1
-    80202e98:	0dc00713          	li	a4,220
-    80202e9c:	04f76763          	bltu	a4,a5,80202eea <syscall+0x78>
-    80202ea0:	00399713          	slli	a4,s3,0x3
-    80202ea4:	00008797          	auipc	a5,0x8
-    80202ea8:	d9478793          	addi	a5,a5,-620 # 8020ac38 <syscalls>
-    80202eac:	97ba                	add	a5,a5,a4
-    80202eae:	639c                	ld	a5,0(a5)
-    80202eb0:	cf8d                	beqz	a5,80202eea <syscall+0x78>
+    802030ea:	37fd                	addiw	a5,a5,-1
+    802030ec:	10300713          	li	a4,259
+    802030f0:	04f76763          	bltu	a4,a5,8020313e <syscall+0x78>
+    802030f4:	00399713          	slli	a4,s3,0x3
+    802030f8:	00008797          	auipc	a5,0x8
+    802030fc:	b4078793          	addi	a5,a5,-1216 # 8020ac38 <syscalls>
+    80203100:	97ba                	add	a5,a5,a4
+    80203102:	639c                	ld	a5,0(a5)
+    80203104:	cf8d                	beqz	a5,8020313e <syscall+0x78>
     p->trapframe->a0 = syscalls[num]();
-    80202eb2:	9782                	jalr	a5
-    80202eb4:	06a93823          	sd	a0,112(s2)
+    80203106:	9782                	jalr	a5
+    80203108:	06a93823          	sd	a0,112(s2)
     if ((p->tmask & (1 << num)) != 0) {
-    80202eb8:	1704a783          	lw	a5,368(s1)
-    80202ebc:	4137d7bb          	sraw	a5,a5,s3
-    80202ec0:	8b85                	andi	a5,a5,1
-    80202ec2:	c3b9                	beqz	a5,80202f08 <syscall+0x96>
+    8020310c:	1704a783          	lw	a5,368(s1)
+    80203110:	4137d7bb          	sraw	a5,a5,s3
+    80203114:	8b85                	andi	a5,a5,1
+    80203116:	c3b9                	beqz	a5,8020315c <syscall+0x96>
       printf("pid %d: %s -> %d\n", p->pid, sysnames[num], p->trapframe->a0);
-    80202ec4:	70b8                	ld	a4,96(s1)
-    80202ec6:	098e                	slli	s3,s3,0x3
-    80202ec8:	00008797          	auipc	a5,0x8
-    80202ecc:	46078793          	addi	a5,a5,1120 # 8020b328 <sysnames>
-    80202ed0:	97ce                	add	a5,a5,s3
-    80202ed2:	7b34                	ld	a3,112(a4)
-    80202ed4:	6390                	ld	a2,0(a5)
-    80202ed6:	5c8c                	lw	a1,56(s1)
-    80202ed8:	00007517          	auipc	a0,0x7
-    80202edc:	aa050513          	addi	a0,a0,-1376 # 80209978 <digits+0x5f8>
-    80202ee0:	ffffd097          	auipc	ra,0xffffd
-    80202ee4:	2ae080e7          	jalr	686(ra) # 8020018e <printf>
-    80202ee8:	a005                	j	80202f08 <syscall+0x96>
+    80203118:	70b8                	ld	a4,96(s1)
+    8020311a:	098e                	slli	s3,s3,0x3
+    8020311c:	00008797          	auipc	a5,0x8
+    80203120:	34478793          	addi	a5,a5,836 # 8020b460 <sysnames>
+    80203124:	97ce                	add	a5,a5,s3
+    80203126:	7b34                	ld	a3,112(a4)
+    80203128:	6390                	ld	a2,0(a5)
+    8020312a:	5c8c                	lw	a1,56(s1)
+    8020312c:	00007517          	auipc	a0,0x7
+    80203130:	84c50513          	addi	a0,a0,-1972 # 80209978 <digits+0x5f8>
+    80203134:	ffffd097          	auipc	ra,0xffffd
+    80203138:	05a080e7          	jalr	90(ra) # 8020018e <printf>
+    8020313c:	a005                	j	8020315c <syscall+0x96>
     printf("pid %d %s: unknown sys call %d\n",
-    80202eea:	86ce                	mv	a3,s3
-    80202eec:	16048613          	addi	a2,s1,352
-    80202ef0:	5c8c                	lw	a1,56(s1)
-    80202ef2:	00007517          	auipc	a0,0x7
-    80202ef6:	a9e50513          	addi	a0,a0,-1378 # 80209990 <digits+0x610>
-    80202efa:	ffffd097          	auipc	ra,0xffffd
-    80202efe:	294080e7          	jalr	660(ra) # 8020018e <printf>
+    8020313e:	86ce                	mv	a3,s3
+    80203140:	16048613          	addi	a2,s1,352
+    80203144:	5c8c                	lw	a1,56(s1)
+    80203146:	00007517          	auipc	a0,0x7
+    8020314a:	84a50513          	addi	a0,a0,-1974 # 80209990 <digits+0x610>
+    8020314e:	ffffd097          	auipc	ra,0xffffd
+    80203152:	040080e7          	jalr	64(ra) # 8020018e <printf>
     p->trapframe->a0 = -1;
-    80202f02:	70bc                	ld	a5,96(s1)
-    80202f04:	577d                	li	a4,-1
-    80202f06:	fbb8                	sd	a4,112(a5)
+    80203156:	70bc                	ld	a5,96(s1)
+    80203158:	577d                	li	a4,-1
+    8020315a:	fbb8                	sd	a4,112(a5)
 }
-    80202f08:	70a2                	ld	ra,40(sp)
-    80202f0a:	7402                	ld	s0,32(sp)
-    80202f0c:	64e2                	ld	s1,24(sp)
-    80202f0e:	6942                	ld	s2,16(sp)
-    80202f10:	69a2                	ld	s3,8(sp)
-    80202f12:	6145                	addi	sp,sp,48
-    80202f14:	8082                	ret
+    8020315c:	70a2                	ld	ra,40(sp)
+    8020315e:	7402                	ld	s0,32(sp)
+    80203160:	64e2                	ld	s1,24(sp)
+    80203162:	6942                	ld	s2,16(sp)
+    80203164:	69a2                	ld	s3,8(sp)
+    80203166:	6145                	addi	sp,sp,48
+    80203168:	8082                	ret
 
-0000000080202f16 <sys_exec>:
+000000008020316a <sys_exec>:
 
 extern int exec(char *path, char **argv);
 
 uint64
 sys_exec(void)
 {
-    80202f16:	d9010113          	addi	sp,sp,-624
-    80202f1a:	26113423          	sd	ra,616(sp)
-    80202f1e:	26813023          	sd	s0,608(sp)
-    80202f22:	24913c23          	sd	s1,600(sp)
-    80202f26:	25213823          	sd	s2,592(sp)
-    80202f2a:	25313423          	sd	s3,584(sp)
-    80202f2e:	25413023          	sd	s4,576(sp)
-    80202f32:	23513c23          	sd	s5,568(sp)
-    80202f36:	23613823          	sd	s6,560(sp)
-    80202f3a:	23713423          	sd	s7,552(sp)
-    80202f3e:	1c80                	addi	s0,sp,624
+    8020316a:	d9010113          	addi	sp,sp,-624
+    8020316e:	26113423          	sd	ra,616(sp)
+    80203172:	26813023          	sd	s0,608(sp)
+    80203176:	24913c23          	sd	s1,600(sp)
+    8020317a:	25213823          	sd	s2,592(sp)
+    8020317e:	25313423          	sd	s3,584(sp)
+    80203182:	25413023          	sd	s4,576(sp)
+    80203186:	23513c23          	sd	s5,568(sp)
+    8020318a:	23613823          	sd	s6,560(sp)
+    8020318e:	23713423          	sd	s7,552(sp)
+    80203192:	1c80                	addi	s0,sp,624
   char path[FAT32_MAX_PATH], *argv[MAXARG];
   int i;
   uint64 uargv, uarg;
 
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || argaddr(1, &uargv) < 0){
-    80202f40:	10400613          	li	a2,260
-    80202f44:	ea840593          	addi	a1,s0,-344
-    80202f48:	4501                	li	a0,0
-    80202f4a:	00000097          	auipc	ra,0x0
-    80202f4e:	ef8080e7          	jalr	-264(ra) # 80202e42 <argstr>
+    80203194:	10400613          	li	a2,260
+    80203198:	ea840593          	addi	a1,s0,-344
+    8020319c:	4501                	li	a0,0
+    8020319e:	00000097          	auipc	ra,0x0
+    802031a2:	ef8080e7          	jalr	-264(ra) # 80203096 <argstr>
     return -1;
-    80202f52:	597d                	li	s2,-1
+    802031a6:	597d                	li	s2,-1
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || argaddr(1, &uargv) < 0){
-    80202f54:	0c054c63          	bltz	a0,8020302c <sys_exec+0x116>
-    80202f58:	da040593          	addi	a1,s0,-608
-    80202f5c:	4505                	li	a0,1
-    80202f5e:	00000097          	auipc	ra,0x0
-    80202f62:	ec2080e7          	jalr	-318(ra) # 80202e20 <argaddr>
-    80202f66:	0c054363          	bltz	a0,8020302c <sys_exec+0x116>
+    802031a8:	0c054c63          	bltz	a0,80203280 <sys_exec+0x116>
+    802031ac:	da040593          	addi	a1,s0,-608
+    802031b0:	4505                	li	a0,1
+    802031b2:	00000097          	auipc	ra,0x0
+    802031b6:	ec2080e7          	jalr	-318(ra) # 80203074 <argaddr>
+    802031ba:	0c054363          	bltz	a0,80203280 <sys_exec+0x116>
   }
   memset(argv, 0, sizeof(argv));
-    80202f6a:	da840a13          	addi	s4,s0,-600
-    80202f6e:	10000613          	li	a2,256
-    80202f72:	4581                	li	a1,0
-    80202f74:	8552                	mv	a0,s4
-    80202f76:	ffffd097          	auipc	ra,0xffffd
-    80202f7a:	7ec080e7          	jalr	2028(ra) # 80200762 <memset>
+    802031be:	da840a13          	addi	s4,s0,-600
+    802031c2:	10000613          	li	a2,256
+    802031c6:	4581                	li	a1,0
+    802031c8:	8552                	mv	a0,s4
+    802031ca:	ffffd097          	auipc	ra,0xffffd
+    802031ce:	598080e7          	jalr	1432(ra) # 80200762 <memset>
   for(i=0;; i++){
     if(i >= NELEM(argv)){
-    80202f7e:	84d2                	mv	s1,s4
+    802031d2:	84d2                	mv	s1,s4
   memset(argv, 0, sizeof(argv));
-    80202f80:	89d2                	mv	s3,s4
-    80202f82:	4901                	li	s2,0
+    802031d4:	89d2                	mv	s3,s4
+    802031d6:	4901                	li	s2,0
       goto bad;
     }
     if(fetchaddr(uargv+sizeof(uint64)*i, (uint64*)&uarg) < 0){
-    80202f84:	d9840a93          	addi	s5,s0,-616
+    802031d8:	d9840a93          	addi	s5,s0,-616
     if(i >= NELEM(argv)){
-    80202f88:	02000b13          	li	s6,32
-    80202f8c:	00090b9b          	sext.w	s7,s2
+    802031dc:	02000b13          	li	s6,32
+    802031e0:	00090b9b          	sext.w	s7,s2
     if(fetchaddr(uargv+sizeof(uint64)*i, (uint64*)&uarg) < 0){
-    80202f90:	00391513          	slli	a0,s2,0x3
-    80202f94:	85d6                	mv	a1,s5
-    80202f96:	da043783          	ld	a5,-608(s0)
-    80202f9a:	953e                	add	a0,a0,a5
-    80202f9c:	00000097          	auipc	ra,0x0
-    80202fa0:	da2080e7          	jalr	-606(ra) # 80202d3e <fetchaddr>
-    80202fa4:	02054a63          	bltz	a0,80202fd8 <sys_exec+0xc2>
+    802031e4:	00391513          	slli	a0,s2,0x3
+    802031e8:	85d6                	mv	a1,s5
+    802031ea:	da043783          	ld	a5,-608(s0)
+    802031ee:	953e                	add	a0,a0,a5
+    802031f0:	00000097          	auipc	ra,0x0
+    802031f4:	da2080e7          	jalr	-606(ra) # 80202f92 <fetchaddr>
+    802031f8:	02054a63          	bltz	a0,8020322c <sys_exec+0xc2>
       goto bad;
     }
     if(uarg == 0){
-    80202fa8:	d9843783          	ld	a5,-616(s0)
-    80202fac:	c3b9                	beqz	a5,80202ff2 <sys_exec+0xdc>
+    802031fc:	d9843783          	ld	a5,-616(s0)
+    80203200:	c3b9                	beqz	a5,80203246 <sys_exec+0xdc>
       argv[i] = 0;
       break;
     }
     argv[i] = kalloc();
-    80202fae:	ffffd097          	auipc	ra,0xffffd
-    80202fb2:	5ac080e7          	jalr	1452(ra) # 8020055a <kalloc>
-    80202fb6:	85aa                	mv	a1,a0
-    80202fb8:	00a9b023          	sd	a0,0(s3)
+    80203202:	ffffd097          	auipc	ra,0xffffd
+    80203206:	358080e7          	jalr	856(ra) # 8020055a <kalloc>
+    8020320a:	85aa                	mv	a1,a0
+    8020320c:	00a9b023          	sd	a0,0(s3)
     if(argv[i] == 0)
-    80202fbc:	cd11                	beqz	a0,80202fd8 <sys_exec+0xc2>
+    80203210:	cd11                	beqz	a0,8020322c <sys_exec+0xc2>
       goto bad;
     if(fetchstr(uarg, argv[i], PGSIZE) < 0)
-    80202fbe:	6605                	lui	a2,0x1
-    80202fc0:	d9843503          	ld	a0,-616(s0)
-    80202fc4:	00000097          	auipc	ra,0x0
-    80202fc8:	dca080e7          	jalr	-566(ra) # 80202d8e <fetchstr>
-    80202fcc:	00054663          	bltz	a0,80202fd8 <sys_exec+0xc2>
+    80203212:	6605                	lui	a2,0x1
+    80203214:	d9843503          	ld	a0,-616(s0)
+    80203218:	00000097          	auipc	ra,0x0
+    8020321c:	dca080e7          	jalr	-566(ra) # 80202fe2 <fetchstr>
+    80203220:	00054663          	bltz	a0,8020322c <sys_exec+0xc2>
     if(i >= NELEM(argv)){
-    80202fd0:	0905                	addi	s2,s2,1
-    80202fd2:	09a1                	addi	s3,s3,8
-    80202fd4:	fb691ce3          	bne	s2,s6,80202f8c <sys_exec+0x76>
+    80203224:	0905                	addi	s2,s2,1
+    80203226:	09a1                	addi	s3,s3,8
+    80203228:	fb691ce3          	bne	s2,s6,802031e0 <sys_exec+0x76>
     kfree(argv[i]);
 
   return ret;
 
  bad:
   for(i = 0; i < NELEM(argv) && argv[i] != 0; i++)
-    80202fd8:	100a0a13          	addi	s4,s4,256
-    80202fdc:	6088                	ld	a0,0(s1)
-    80202fde:	c531                	beqz	a0,8020302a <sys_exec+0x114>
+    8020322c:	100a0a13          	addi	s4,s4,256
+    80203230:	6088                	ld	a0,0(s1)
+    80203232:	c531                	beqz	a0,8020327e <sys_exec+0x114>
     kfree(argv[i]);
-    80202fe0:	ffffd097          	auipc	ra,0xffffd
-    80202fe4:	460080e7          	jalr	1120(ra) # 80200440 <kfree>
+    80203234:	ffffd097          	auipc	ra,0xffffd
+    80203238:	20c080e7          	jalr	524(ra) # 80200440 <kfree>
   for(i = 0; i < NELEM(argv) && argv[i] != 0; i++)
-    80202fe8:	04a1                	addi	s1,s1,8
-    80202fea:	ff4499e3          	bne	s1,s4,80202fdc <sys_exec+0xc6>
+    8020323c:	04a1                	addi	s1,s1,8
+    8020323e:	ff4499e3          	bne	s1,s4,80203230 <sys_exec+0xc6>
   return -1;
-    80202fee:	597d                	li	s2,-1
-    80202ff0:	a835                	j	8020302c <sys_exec+0x116>
+    80203242:	597d                	li	s2,-1
+    80203244:	a835                	j	80203280 <sys_exec+0x116>
       argv[i] = 0;
-    80202ff2:	0b8e                	slli	s7,s7,0x3
-    80202ff4:	fb0b8793          	addi	a5,s7,-80
-    80202ff8:	00878bb3          	add	s7,a5,s0
-    80202ffc:	de0bbc23          	sd	zero,-520(s7)
+    80203246:	0b8e                	slli	s7,s7,0x3
+    80203248:	fb0b8793          	addi	a5,s7,-80
+    8020324c:	00878bb3          	add	s7,a5,s0
+    80203250:	de0bbc23          	sd	zero,-520(s7)
   int ret = exec(path, argv);
-    80203000:	da840593          	addi	a1,s0,-600
-    80203004:	ea840513          	addi	a0,s0,-344
-    80203008:	00001097          	auipc	ra,0x1
-    8020300c:	ee0080e7          	jalr	-288(ra) # 80203ee8 <exec>
-    80203010:	892a                	mv	s2,a0
+    80203254:	da840593          	addi	a1,s0,-600
+    80203258:	ea840513          	addi	a0,s0,-344
+    8020325c:	00001097          	auipc	ra,0x1
+    80203260:	fa8080e7          	jalr	-88(ra) # 80204204 <exec>
+    80203264:	892a                	mv	s2,a0
   for(i = 0; i < NELEM(argv) && argv[i] != 0; i++)
-    80203012:	100a0a13          	addi	s4,s4,256
-    80203016:	6088                	ld	a0,0(s1)
-    80203018:	c911                	beqz	a0,8020302c <sys_exec+0x116>
+    80203266:	100a0a13          	addi	s4,s4,256
+    8020326a:	6088                	ld	a0,0(s1)
+    8020326c:	c911                	beqz	a0,80203280 <sys_exec+0x116>
     kfree(argv[i]);
-    8020301a:	ffffd097          	auipc	ra,0xffffd
-    8020301e:	426080e7          	jalr	1062(ra) # 80200440 <kfree>
+    8020326e:	ffffd097          	auipc	ra,0xffffd
+    80203272:	1d2080e7          	jalr	466(ra) # 80200440 <kfree>
   for(i = 0; i < NELEM(argv) && argv[i] != 0; i++)
-    80203022:	04a1                	addi	s1,s1,8
-    80203024:	ff4499e3          	bne	s1,s4,80203016 <sys_exec+0x100>
-    80203028:	a011                	j	8020302c <sys_exec+0x116>
+    80203276:	04a1                	addi	s1,s1,8
+    80203278:	ff4499e3          	bne	s1,s4,8020326a <sys_exec+0x100>
+    8020327c:	a011                	j	80203280 <sys_exec+0x116>
   return -1;
-    8020302a:	597d                	li	s2,-1
-}
-    8020302c:	854a                	mv	a0,s2
-    8020302e:	26813083          	ld	ra,616(sp)
-    80203032:	26013403          	ld	s0,608(sp)
-    80203036:	25813483          	ld	s1,600(sp)
-    8020303a:	25013903          	ld	s2,592(sp)
-    8020303e:	24813983          	ld	s3,584(sp)
-    80203042:	24013a03          	ld	s4,576(sp)
-    80203046:	23813a83          	ld	s5,568(sp)
-    8020304a:	23013b03          	ld	s6,560(sp)
-    8020304e:	22813b83          	ld	s7,552(sp)
-    80203052:	27010113          	addi	sp,sp,624
-    80203056:	8082                	ret
-
-0000000080203058 <sys_exit>:
+    8020327e:	597d                	li	s2,-1
+}
+    80203280:	854a                	mv	a0,s2
+    80203282:	26813083          	ld	ra,616(sp)
+    80203286:	26013403          	ld	s0,608(sp)
+    8020328a:	25813483          	ld	s1,600(sp)
+    8020328e:	25013903          	ld	s2,592(sp)
+    80203292:	24813983          	ld	s3,584(sp)
+    80203296:	24013a03          	ld	s4,576(sp)
+    8020329a:	23813a83          	ld	s5,568(sp)
+    8020329e:	23013b03          	ld	s6,560(sp)
+    802032a2:	22813b83          	ld	s7,552(sp)
+    802032a6:	27010113          	addi	sp,sp,624
+    802032aa:	8082                	ret
+
+00000000802032ac <sys_exit>:
 
 uint64
 sys_exit(void)
 {
-    80203058:	1101                	addi	sp,sp,-32
-    8020305a:	ec06                	sd	ra,24(sp)
-    8020305c:	e822                	sd	s0,16(sp)
-    8020305e:	1000                	addi	s0,sp,32
+    802032ac:	1101                	addi	sp,sp,-32
+    802032ae:	ec06                	sd	ra,24(sp)
+    802032b0:	e822                	sd	s0,16(sp)
+    802032b2:	1000                	addi	s0,sp,32
   int n;
   if(argint(0, &n) < 0)
-    80203060:	fec40593          	addi	a1,s0,-20
-    80203064:	4501                	li	a0,0
-    80203066:	00000097          	auipc	ra,0x0
-    8020306a:	d58080e7          	jalr	-680(ra) # 80202dbe <argint>
+    802032b4:	fec40593          	addi	a1,s0,-20
+    802032b8:	4501                	li	a0,0
+    802032ba:	00000097          	auipc	ra,0x0
+    802032be:	d58080e7          	jalr	-680(ra) # 80203012 <argint>
     return -1;
-    8020306e:	57fd                	li	a5,-1
+    802032c2:	57fd                	li	a5,-1
   if(argint(0, &n) < 0)
-    80203070:	00054963          	bltz	a0,80203082 <sys_exit+0x2a>
+    802032c4:	00054963          	bltz	a0,802032d6 <sys_exit+0x2a>
   exit(n);
-    80203074:	fec42503          	lw	a0,-20(s0)
-    80203078:	fffff097          	auipc	ra,0xfffff
-    8020307c:	108080e7          	jalr	264(ra) # 80202180 <exit>
+    802032c8:	fec42503          	lw	a0,-20(s0)
+    802032cc:	fffff097          	auipc	ra,0xfffff
+    802032d0:	eb4080e7          	jalr	-332(ra) # 80202180 <exit>
   return 0;  // not reached
-    80203080:	4781                	li	a5,0
+    802032d4:	4781                	li	a5,0
 }
-    80203082:	853e                	mv	a0,a5
-    80203084:	60e2                	ld	ra,24(sp)
-    80203086:	6442                	ld	s0,16(sp)
-    80203088:	6105                	addi	sp,sp,32
-    8020308a:	8082                	ret
+    802032d6:	853e                	mv	a0,a5
+    802032d8:	60e2                	ld	ra,24(sp)
+    802032da:	6442                	ld	s0,16(sp)
+    802032dc:	6105                	addi	sp,sp,32
+    802032de:	8082                	ret
 
-000000008020308c <sys_getpid>:
+00000000802032e0 <sys_getpid>:
 
 uint64
 sys_getpid(void)
 {
-    8020308c:	1141                	addi	sp,sp,-16
-    8020308e:	e406                	sd	ra,8(sp)
-    80203090:	e022                	sd	s0,0(sp)
-    80203092:	0800                	addi	s0,sp,16
+    802032e0:	1141                	addi	sp,sp,-16
+    802032e2:	e406                	sd	ra,8(sp)
+    802032e4:	e022                	sd	s0,0(sp)
+    802032e6:	0800                	addi	s0,sp,16
   return myproc()->pid;
-    80203094:	fffff097          	auipc	ra,0xfffff
-    80203098:	9a8080e7          	jalr	-1624(ra) # 80201a3c <myproc>
+    802032e8:	ffffe097          	auipc	ra,0xffffe
+    802032ec:	754080e7          	jalr	1876(ra) # 80201a3c <myproc>
 }
-    8020309c:	5d08                	lw	a0,56(a0)
-    8020309e:	60a2                	ld	ra,8(sp)
-    802030a0:	6402                	ld	s0,0(sp)
-    802030a2:	0141                	addi	sp,sp,16
-    802030a4:	8082                	ret
+    802032f0:	5d08                	lw	a0,56(a0)
+    802032f2:	60a2                	ld	ra,8(sp)
+    802032f4:	6402                	ld	s0,0(sp)
+    802032f6:	0141                	addi	sp,sp,16
+    802032f8:	8082                	ret
 
-00000000802030a6 <sys_getppid>:
+00000000802032fa <sys_getppid>:
 
 uint64
 sys_getppid(void)
 {
-    802030a6:	1141                	addi	sp,sp,-16
-    802030a8:	e406                	sd	ra,8(sp)
-    802030aa:	e022                	sd	s0,0(sp)
-    802030ac:	0800                	addi	s0,sp,16
+    802032fa:	1141                	addi	sp,sp,-16
+    802032fc:	e406                	sd	ra,8(sp)
+    802032fe:	e022                	sd	s0,0(sp)
+    80203300:	0800                	addi	s0,sp,16
   return myproc()->parent->pid;
-    802030ae:	fffff097          	auipc	ra,0xfffff
-    802030b2:	98e080e7          	jalr	-1650(ra) # 80201a3c <myproc>
-    802030b6:	711c                	ld	a5,32(a0)
+    80203302:	ffffe097          	auipc	ra,0xffffe
+    80203306:	73a080e7          	jalr	1850(ra) # 80201a3c <myproc>
+    8020330a:	711c                	ld	a5,32(a0)
 }
-    802030b8:	5f88                	lw	a0,56(a5)
-    802030ba:	60a2                	ld	ra,8(sp)
-    802030bc:	6402                	ld	s0,0(sp)
-    802030be:	0141                	addi	sp,sp,16
-    802030c0:	8082                	ret
+    8020330c:	5f88                	lw	a0,56(a5)
+    8020330e:	60a2                	ld	ra,8(sp)
+    80203310:	6402                	ld	s0,0(sp)
+    80203312:	0141                	addi	sp,sp,16
+    80203314:	8082                	ret
 
-00000000802030c2 <sys_fork>:
+0000000080203316 <sys_fork>:
 
 uint64
 sys_fork(void)
 {
-    802030c2:	1141                	addi	sp,sp,-16
-    802030c4:	e406                	sd	ra,8(sp)
-    802030c6:	e022                	sd	s0,0(sp)
-    802030c8:	0800                	addi	s0,sp,16
+    80203316:	1141                	addi	sp,sp,-16
+    80203318:	e406                	sd	ra,8(sp)
+    8020331a:	e022                	sd	s0,0(sp)
+    8020331c:	0800                	addi	s0,sp,16
   return fork();
-    802030ca:	fffff097          	auipc	ra,0xfffff
-    802030ce:	d78080e7          	jalr	-648(ra) # 80201e42 <fork>
+    8020331e:	fffff097          	auipc	ra,0xfffff
+    80203322:	b24080e7          	jalr	-1244(ra) # 80201e42 <fork>
 }
-    802030d2:	60a2                	ld	ra,8(sp)
-    802030d4:	6402                	ld	s0,0(sp)
-    802030d6:	0141                	addi	sp,sp,16
-    802030d8:	8082                	ret
+    80203326:	60a2                	ld	ra,8(sp)
+    80203328:	6402                	ld	s0,0(sp)
+    8020332a:	0141                	addi	sp,sp,16
+    8020332c:	8082                	ret
 
-00000000802030da <sys_wait>:
+000000008020332e <sys_wait>:
 
 uint64
 sys_wait(void)
 {
-    802030da:	1101                	addi	sp,sp,-32
-    802030dc:	ec06                	sd	ra,24(sp)
-    802030de:	e822                	sd	s0,16(sp)
-    802030e0:	1000                	addi	s0,sp,32
+    8020332e:	1101                	addi	sp,sp,-32
+    80203330:	ec06                	sd	ra,24(sp)
+    80203332:	e822                	sd	s0,16(sp)
+    80203334:	1000                	addi	s0,sp,32
   uint64 p;
   if(argaddr(0, &p) < 0)
-    802030e2:	fe840593          	addi	a1,s0,-24
-    802030e6:	4501                	li	a0,0
-    802030e8:	00000097          	auipc	ra,0x0
-    802030ec:	d38080e7          	jalr	-712(ra) # 80202e20 <argaddr>
-    802030f0:	87aa                	mv	a5,a0
+    80203336:	fe840593          	addi	a1,s0,-24
+    8020333a:	4501                	li	a0,0
+    8020333c:	00000097          	auipc	ra,0x0
+    80203340:	d38080e7          	jalr	-712(ra) # 80203074 <argaddr>
+    80203344:	87aa                	mv	a5,a0
     return -1;
-    802030f2:	557d                	li	a0,-1
+    80203346:	557d                	li	a0,-1
   if(argaddr(0, &p) < 0)
-    802030f4:	0007c863          	bltz	a5,80203104 <sys_wait+0x2a>
+    80203348:	0007c863          	bltz	a5,80203358 <sys_wait+0x2a>
   return wait(p);
-    802030f8:	fe843503          	ld	a0,-24(s0)
-    802030fc:	fffff097          	auipc	ra,0xfffff
-    80203100:	23e080e7          	jalr	574(ra) # 8020233a <wait>
+    8020334c:	fe843503          	ld	a0,-24(s0)
+    80203350:	fffff097          	auipc	ra,0xfffff
+    80203354:	fea080e7          	jalr	-22(ra) # 8020233a <wait>
 }
-    80203104:	60e2                	ld	ra,24(sp)
-    80203106:	6442                	ld	s0,16(sp)
-    80203108:	6105                	addi	sp,sp,32
-    8020310a:	8082                	ret
+    80203358:	60e2                	ld	ra,24(sp)
+    8020335a:	6442                	ld	s0,16(sp)
+    8020335c:	6105                	addi	sp,sp,32
+    8020335e:	8082                	ret
 
-000000008020310c <sys_sbrk>:
+0000000080203360 <sys_sbrk>:
 
 uint64
 sys_sbrk(void)
 {
-    8020310c:	7179                	addi	sp,sp,-48
-    8020310e:	f406                	sd	ra,40(sp)
-    80203110:	f022                	sd	s0,32(sp)
-    80203112:	ec26                	sd	s1,24(sp)
-    80203114:	1800                	addi	s0,sp,48
+    80203360:	7179                	addi	sp,sp,-48
+    80203362:	f406                	sd	ra,40(sp)
+    80203364:	f022                	sd	s0,32(sp)
+    80203366:	ec26                	sd	s1,24(sp)
+    80203368:	1800                	addi	s0,sp,48
   int addr;
   int n;
 
   if(argint(0, &n) < 0)
-    80203116:	fdc40593          	addi	a1,s0,-36
-    8020311a:	4501                	li	a0,0
-    8020311c:	00000097          	auipc	ra,0x0
-    80203120:	ca2080e7          	jalr	-862(ra) # 80202dbe <argint>
-    80203124:	87aa                	mv	a5,a0
+    8020336a:	fdc40593          	addi	a1,s0,-36
+    8020336e:	4501                	li	a0,0
+    80203370:	00000097          	auipc	ra,0x0
+    80203374:	ca2080e7          	jalr	-862(ra) # 80203012 <argint>
+    80203378:	87aa                	mv	a5,a0
     return -1;
-    80203126:	557d                	li	a0,-1
+    8020337a:	557d                	li	a0,-1
   if(argint(0, &n) < 0)
-    80203128:	0207c063          	bltz	a5,80203148 <sys_sbrk+0x3c>
+    8020337c:	0207c063          	bltz	a5,8020339c <sys_sbrk+0x3c>
   addr = myproc()->sz;
-    8020312c:	fffff097          	auipc	ra,0xfffff
-    80203130:	910080e7          	jalr	-1776(ra) # 80201a3c <myproc>
-    80203134:	4524                	lw	s1,72(a0)
+    80203380:	ffffe097          	auipc	ra,0xffffe
+    80203384:	6bc080e7          	jalr	1724(ra) # 80201a3c <myproc>
+    80203388:	4524                	lw	s1,72(a0)
   if(growproc(n) < 0)
-    80203136:	fdc42503          	lw	a0,-36(s0)
-    8020313a:	fffff097          	auipc	ra,0xfffff
-    8020313e:	c8c080e7          	jalr	-884(ra) # 80201dc6 <growproc>
-    80203142:	00054863          	bltz	a0,80203152 <sys_sbrk+0x46>
+    8020338a:	fdc42503          	lw	a0,-36(s0)
+    8020338e:	fffff097          	auipc	ra,0xfffff
+    80203392:	a38080e7          	jalr	-1480(ra) # 80201dc6 <growproc>
+    80203396:	00054863          	bltz	a0,802033a6 <sys_sbrk+0x46>
     return -1;
   return addr;
-    80203146:	8526                	mv	a0,s1
+    8020339a:	8526                	mv	a0,s1
 }
-    80203148:	70a2                	ld	ra,40(sp)
-    8020314a:	7402                	ld	s0,32(sp)
-    8020314c:	64e2                	ld	s1,24(sp)
-    8020314e:	6145                	addi	sp,sp,48
-    80203150:	8082                	ret
+    8020339c:	70a2                	ld	ra,40(sp)
+    8020339e:	7402                	ld	s0,32(sp)
+    802033a0:	64e2                	ld	s1,24(sp)
+    802033a2:	6145                	addi	sp,sp,48
+    802033a4:	8082                	ret
     return -1;
-    80203152:	557d                	li	a0,-1
-    80203154:	bfd5                	j	80203148 <sys_sbrk+0x3c>
+    802033a6:	557d                	li	a0,-1
+    802033a8:	bfd5                	j	8020339c <sys_sbrk+0x3c>
 
-0000000080203156 <sys_brk>:
+00000000802033aa <sys_brk>:
 
 uint64
 sys_brk(void)
 {
-    80203156:	7179                	addi	sp,sp,-48
-    80203158:	f406                	sd	ra,40(sp)
-    8020315a:	f022                	sd	s0,32(sp)
-    8020315c:	ec26                	sd	s1,24(sp)
-    8020315e:	1800                	addi	s0,sp,48
+    802033aa:	7179                	addi	sp,sp,-48
+    802033ac:	f406                	sd	ra,40(sp)
+    802033ae:	f022                	sd	s0,32(sp)
+    802033b0:	ec26                	sd	s1,24(sp)
+    802033b2:	1800                	addi	s0,sp,48
   int current_addr;
   int new_size;
 
   // 获取新的堆大小
   if (argint(0, &new_size) < 0) {
-    80203160:	fdc40593          	addi	a1,s0,-36
-    80203164:	4501                	li	a0,0
-    80203166:	00000097          	auipc	ra,0x0
-    8020316a:	c58080e7          	jalr	-936(ra) # 80202dbe <argint>
-    8020316e:	87aa                	mv	a5,a0
+    802033b4:	fdc40593          	addi	a1,s0,-36
+    802033b8:	4501                	li	a0,0
+    802033ba:	00000097          	auipc	ra,0x0
+    802033be:	c58080e7          	jalr	-936(ra) # 80203012 <argint>
+    802033c2:	87aa                	mv	a5,a0
     return -1; // 如果获取失败,返回错误码 -1
-    80203170:	557d                	li	a0,-1
+    802033c4:	557d                	li	a0,-1
   if (argint(0, &new_size) < 0) {
-    80203172:	0007cb63          	bltz	a5,80203188 <sys_brk+0x32>
+    802033c6:	0007cb63          	bltz	a5,802033dc <sys_brk+0x32>
   }
 
   // 获取当前进程的堆地址
   current_addr = myproc()->sz;
-    80203176:	fffff097          	auipc	ra,0xfffff
-    8020317a:	8c6080e7          	jalr	-1850(ra) # 80201a3c <myproc>
-    8020317e:	4524                	lw	s1,72(a0)
+    802033ca:	ffffe097          	auipc	ra,0xffffe
+    802033ce:	672080e7          	jalr	1650(ra) # 80201a3c <myproc>
+    802033d2:	4524                	lw	s1,72(a0)
 
   // 如果请求的堆大小为 0,返回当前堆地址
   if (new_size == 0) {
-    80203180:	fdc42503          	lw	a0,-36(s0)
-    80203184:	e519                	bnez	a0,80203192 <sys_brk+0x3c>
+    802033d4:	fdc42503          	lw	a0,-36(s0)
+    802033d8:	e519                	bnez	a0,802033e6 <sys_brk+0x3c>
     return current_addr;
-    80203186:	8526                	mv	a0,s1
+    802033da:	8526                	mv	a0,s1
     return -1; // 如果调整失败,返回错误码 -1
   }
 
   // 返回新的堆地址
   return current_addr;
 }
-    80203188:	70a2                	ld	ra,40(sp)
-    8020318a:	7402                	ld	s0,32(sp)
-    8020318c:	64e2                	ld	s1,24(sp)
-    8020318e:	6145                	addi	sp,sp,48
-    80203190:	8082                	ret
+    802033dc:	70a2                	ld	ra,40(sp)
+    802033de:	7402                	ld	s0,32(sp)
+    802033e0:	64e2                	ld	s1,24(sp)
+    802033e2:	6145                	addi	sp,sp,48
+    802033e4:	8082                	ret
   if (growproc(new_size - current_addr) < 0) {
-    80203192:	9d05                	subw	a0,a0,s1
-    80203194:	fffff097          	auipc	ra,0xfffff
-    80203198:	c32080e7          	jalr	-974(ra) # 80201dc6 <growproc>
-    8020319c:	00054463          	bltz	a0,802031a4 <sys_brk+0x4e>
+    802033e6:	9d05                	subw	a0,a0,s1
+    802033e8:	fffff097          	auipc	ra,0xfffff
+    802033ec:	9de080e7          	jalr	-1570(ra) # 80201dc6 <growproc>
+    802033f0:	00054463          	bltz	a0,802033f8 <sys_brk+0x4e>
   return current_addr;
-    802031a0:	8526                	mv	a0,s1
-    802031a2:	b7dd                	j	80203188 <sys_brk+0x32>
+    802033f4:	8526                	mv	a0,s1
+    802033f6:	b7dd                	j	802033dc <sys_brk+0x32>
     return -1; // 如果调整失败,返回错误码 -1
-    802031a4:	557d                	li	a0,-1
-    802031a6:	b7cd                	j	80203188 <sys_brk+0x32>
+    802033f8:	557d                	li	a0,-1
+    802033fa:	b7cd                	j	802033dc <sys_brk+0x32>
 
-00000000802031a8 <sys_sleep>:
+00000000802033fc <sys_sleep>:
 
 uint64
 sys_sleep(void)
 {
-    802031a8:	7139                	addi	sp,sp,-64
-    802031aa:	fc06                	sd	ra,56(sp)
-    802031ac:	f822                	sd	s0,48(sp)
-    802031ae:	f426                	sd	s1,40(sp)
-    802031b0:	f04a                	sd	s2,32(sp)
-    802031b2:	ec4e                	sd	s3,24(sp)
-    802031b4:	0080                	addi	s0,sp,64
+    802033fc:	7139                	addi	sp,sp,-64
+    802033fe:	fc06                	sd	ra,56(sp)
+    80203400:	f822                	sd	s0,48(sp)
+    80203402:	f426                	sd	s1,40(sp)
+    80203404:	f04a                	sd	s2,32(sp)
+    80203406:	ec4e                	sd	s3,24(sp)
+    80203408:	0080                	addi	s0,sp,64
   int n;
   uint ticks0;
 
   if(argint(0, &n) < 0)
-    802031b6:	fcc40593          	addi	a1,s0,-52
-    802031ba:	4501                	li	a0,0
-    802031bc:	00000097          	auipc	ra,0x0
-    802031c0:	c02080e7          	jalr	-1022(ra) # 80202dbe <argint>
+    8020340a:	fcc40593          	addi	a1,s0,-52
+    8020340e:	4501                	li	a0,0
+    80203410:	00000097          	auipc	ra,0x0
+    80203414:	c02080e7          	jalr	-1022(ra) # 80203012 <argint>
     return -1;
-    802031c4:	57fd                	li	a5,-1
+    80203418:	57fd                	li	a5,-1
   if(argint(0, &n) < 0)
-    802031c6:	06054763          	bltz	a0,80203234 <sys_sleep+0x8c>
+    8020341a:	06054763          	bltz	a0,80203488 <sys_sleep+0x8c>
   acquire(&tickslock);
-    802031ca:	00009517          	auipc	a0,0x9
-    802031ce:	89653503          	ld	a0,-1898(a0) # 8020ba60 <_GLOBAL_OFFSET_TABLE_+0x30>
-    802031d2:	ffffd097          	auipc	ra,0xffffd
-    802031d6:	4f4080e7          	jalr	1268(ra) # 802006c6 <acquire>
+    8020341e:	00009517          	auipc	a0,0x9
+    80203422:	8b253503          	ld	a0,-1870(a0) # 8020bcd0 <_GLOBAL_OFFSET_TABLE_+0x30>
+    80203426:	ffffd097          	auipc	ra,0xffffd
+    8020342a:	2a0080e7          	jalr	672(ra) # 802006c6 <acquire>
   ticks0 = ticks;
-    802031da:	00009797          	auipc	a5,0x9
-    802031de:	8967b783          	ld	a5,-1898(a5) # 8020ba70 <_GLOBAL_OFFSET_TABLE_+0x40>
-    802031e2:	0007a903          	lw	s2,0(a5)
+    8020342e:	00009797          	auipc	a5,0x9
+    80203432:	8b27b783          	ld	a5,-1870(a5) # 8020bce0 <_GLOBAL_OFFSET_TABLE_+0x40>
+    80203436:	0007a903          	lw	s2,0(a5)
   while(ticks - ticks0 < n){
-    802031e6:	fcc42783          	lw	a5,-52(s0)
-    802031ea:	cf85                	beqz	a5,80203222 <sys_sleep+0x7a>
+    8020343a:	fcc42783          	lw	a5,-52(s0)
+    8020343e:	cf85                	beqz	a5,80203476 <sys_sleep+0x7a>
     if(myproc()->killed){
       release(&tickslock);
       return -1;
     }
     sleep(&ticks, &tickslock);
-    802031ec:	00009997          	auipc	s3,0x9
-    802031f0:	8749b983          	ld	s3,-1932(s3) # 8020ba60 <_GLOBAL_OFFSET_TABLE_+0x30>
-    802031f4:	00009497          	auipc	s1,0x9
-    802031f8:	87c4b483          	ld	s1,-1924(s1) # 8020ba70 <_GLOBAL_OFFSET_TABLE_+0x40>
+    80203440:	00009997          	auipc	s3,0x9
+    80203444:	8909b983          	ld	s3,-1904(s3) # 8020bcd0 <_GLOBAL_OFFSET_TABLE_+0x30>
+    80203448:	00009497          	auipc	s1,0x9
+    8020344c:	8984b483          	ld	s1,-1896(s1) # 8020bce0 <_GLOBAL_OFFSET_TABLE_+0x40>
     if(myproc()->killed){
-    802031fc:	fffff097          	auipc	ra,0xfffff
-    80203200:	840080e7          	jalr	-1984(ra) # 80201a3c <myproc>
-    80203204:	591c                	lw	a5,48(a0)
-    80203206:	ef9d                	bnez	a5,80203244 <sys_sleep+0x9c>
+    80203450:	ffffe097          	auipc	ra,0xffffe
+    80203454:	5ec080e7          	jalr	1516(ra) # 80201a3c <myproc>
+    80203458:	591c                	lw	a5,48(a0)
+    8020345a:	ef9d                	bnez	a5,80203498 <sys_sleep+0x9c>
     sleep(&ticks, &tickslock);
-    80203208:	85ce                	mv	a1,s3
-    8020320a:	8526                	mv	a0,s1
-    8020320c:	fffff097          	auipc	ra,0xfffff
-    80203210:	0b0080e7          	jalr	176(ra) # 802022bc <sleep>
+    8020345c:	85ce                	mv	a1,s3
+    8020345e:	8526                	mv	a0,s1
+    80203460:	fffff097          	auipc	ra,0xfffff
+    80203464:	e5c080e7          	jalr	-420(ra) # 802022bc <sleep>
   while(ticks - ticks0 < n){
-    80203214:	409c                	lw	a5,0(s1)
-    80203216:	412787bb          	subw	a5,a5,s2
-    8020321a:	fcc42703          	lw	a4,-52(s0)
-    8020321e:	fce7efe3          	bltu	a5,a4,802031fc <sys_sleep+0x54>
+    80203468:	409c                	lw	a5,0(s1)
+    8020346a:	412787bb          	subw	a5,a5,s2
+    8020346e:	fcc42703          	lw	a4,-52(s0)
+    80203472:	fce7efe3          	bltu	a5,a4,80203450 <sys_sleep+0x54>
   }
   release(&tickslock);
-    80203222:	00009517          	auipc	a0,0x9
-    80203226:	83e53503          	ld	a0,-1986(a0) # 8020ba60 <_GLOBAL_OFFSET_TABLE_+0x30>
-    8020322a:	ffffd097          	auipc	ra,0xffffd
-    8020322e:	4f0080e7          	jalr	1264(ra) # 8020071a <release>
+    80203476:	00009517          	auipc	a0,0x9
+    8020347a:	85a53503          	ld	a0,-1958(a0) # 8020bcd0 <_GLOBAL_OFFSET_TABLE_+0x30>
+    8020347e:	ffffd097          	auipc	ra,0xffffd
+    80203482:	29c080e7          	jalr	668(ra) # 8020071a <release>
   return 0;
-    80203232:	4781                	li	a5,0
-}
-    80203234:	853e                	mv	a0,a5
-    80203236:	70e2                	ld	ra,56(sp)
-    80203238:	7442                	ld	s0,48(sp)
-    8020323a:	74a2                	ld	s1,40(sp)
-    8020323c:	7902                	ld	s2,32(sp)
-    8020323e:	69e2                	ld	s3,24(sp)
-    80203240:	6121                	addi	sp,sp,64
-    80203242:	8082                	ret
+    80203486:	4781                	li	a5,0
+}
+    80203488:	853e                	mv	a0,a5
+    8020348a:	70e2                	ld	ra,56(sp)
+    8020348c:	7442                	ld	s0,48(sp)
+    8020348e:	74a2                	ld	s1,40(sp)
+    80203490:	7902                	ld	s2,32(sp)
+    80203492:	69e2                	ld	s3,24(sp)
+    80203494:	6121                	addi	sp,sp,64
+    80203496:	8082                	ret
       release(&tickslock);
-    80203244:	00009517          	auipc	a0,0x9
-    80203248:	81c53503          	ld	a0,-2020(a0) # 8020ba60 <_GLOBAL_OFFSET_TABLE_+0x30>
-    8020324c:	ffffd097          	auipc	ra,0xffffd
-    80203250:	4ce080e7          	jalr	1230(ra) # 8020071a <release>
+    80203498:	00009517          	auipc	a0,0x9
+    8020349c:	83853503          	ld	a0,-1992(a0) # 8020bcd0 <_GLOBAL_OFFSET_TABLE_+0x30>
+    802034a0:	ffffd097          	auipc	ra,0xffffd
+    802034a4:	27a080e7          	jalr	634(ra) # 8020071a <release>
       return -1;
-    80203254:	57fd                	li	a5,-1
-    80203256:	bff9                	j	80203234 <sys_sleep+0x8c>
+    802034a8:	57fd                	li	a5,-1
+    802034aa:	bff9                	j	80203488 <sys_sleep+0x8c>
 
-0000000080203258 <sys_kill>:
+00000000802034ac <sys_kill>:
 
 uint64
 sys_kill(void)
 {
-    80203258:	1101                	addi	sp,sp,-32
-    8020325a:	ec06                	sd	ra,24(sp)
-    8020325c:	e822                	sd	s0,16(sp)
-    8020325e:	1000                	addi	s0,sp,32
+    802034ac:	1101                	addi	sp,sp,-32
+    802034ae:	ec06                	sd	ra,24(sp)
+    802034b0:	e822                	sd	s0,16(sp)
+    802034b2:	1000                	addi	s0,sp,32
   int pid;
 
   if(argint(0, &pid) < 0)
-    80203260:	fec40593          	addi	a1,s0,-20
-    80203264:	4501                	li	a0,0
-    80203266:	00000097          	auipc	ra,0x0
-    8020326a:	b58080e7          	jalr	-1192(ra) # 80202dbe <argint>
-    8020326e:	87aa                	mv	a5,a0
+    802034b4:	fec40593          	addi	a1,s0,-20
+    802034b8:	4501                	li	a0,0
+    802034ba:	00000097          	auipc	ra,0x0
+    802034be:	b58080e7          	jalr	-1192(ra) # 80203012 <argint>
+    802034c2:	87aa                	mv	a5,a0
     return -1;
-    80203270:	557d                	li	a0,-1
+    802034c4:	557d                	li	a0,-1
   if(argint(0, &pid) < 0)
-    80203272:	0007c863          	bltz	a5,80203282 <sys_kill+0x2a>
+    802034c6:	0007c863          	bltz	a5,802034d6 <sys_kill+0x2a>
   return kill(pid);
-    80203276:	fec42503          	lw	a0,-20(s0)
-    8020327a:	fffff097          	auipc	ra,0xfffff
-    8020327e:	228080e7          	jalr	552(ra) # 802024a2 <kill>
+    802034ca:	fec42503          	lw	a0,-20(s0)
+    802034ce:	fffff097          	auipc	ra,0xfffff
+    802034d2:	fd4080e7          	jalr	-44(ra) # 802024a2 <kill>
 }
-    80203282:	60e2                	ld	ra,24(sp)
-    80203284:	6442                	ld	s0,16(sp)
-    80203286:	6105                	addi	sp,sp,32
-    80203288:	8082                	ret
+    802034d6:	60e2                	ld	ra,24(sp)
+    802034d8:	6442                	ld	s0,16(sp)
+    802034da:	6105                	addi	sp,sp,32
+    802034dc:	8082                	ret
 
-000000008020328a <sys_uptime>:
+00000000802034de <sys_uptime>:
 
 // return how many clock tick interrupts have occurred
 // since start.
 uint64
 sys_uptime(void)
 {
-    8020328a:	1101                	addi	sp,sp,-32
-    8020328c:	ec06                	sd	ra,24(sp)
-    8020328e:	e822                	sd	s0,16(sp)
-    80203290:	e426                	sd	s1,8(sp)
-    80203292:	1000                	addi	s0,sp,32
+    802034de:	1101                	addi	sp,sp,-32
+    802034e0:	ec06                	sd	ra,24(sp)
+    802034e2:	e822                	sd	s0,16(sp)
+    802034e4:	e426                	sd	s1,8(sp)
+    802034e6:	1000                	addi	s0,sp,32
   uint xticks;
 
   acquire(&tickslock);
-    80203294:	00008517          	auipc	a0,0x8
-    80203298:	7cc53503          	ld	a0,1996(a0) # 8020ba60 <_GLOBAL_OFFSET_TABLE_+0x30>
-    8020329c:	ffffd097          	auipc	ra,0xffffd
-    802032a0:	42a080e7          	jalr	1066(ra) # 802006c6 <acquire>
+    802034e8:	00008517          	auipc	a0,0x8
+    802034ec:	7e853503          	ld	a0,2024(a0) # 8020bcd0 <_GLOBAL_OFFSET_TABLE_+0x30>
+    802034f0:	ffffd097          	auipc	ra,0xffffd
+    802034f4:	1d6080e7          	jalr	470(ra) # 802006c6 <acquire>
   xticks = ticks;
-    802032a4:	00008797          	auipc	a5,0x8
-    802032a8:	7cc7b783          	ld	a5,1996(a5) # 8020ba70 <_GLOBAL_OFFSET_TABLE_+0x40>
-    802032ac:	4384                	lw	s1,0(a5)
+    802034f8:	00008797          	auipc	a5,0x8
+    802034fc:	7e87b783          	ld	a5,2024(a5) # 8020bce0 <_GLOBAL_OFFSET_TABLE_+0x40>
+    80203500:	4384                	lw	s1,0(a5)
   release(&tickslock);
-    802032ae:	00008517          	auipc	a0,0x8
-    802032b2:	7b253503          	ld	a0,1970(a0) # 8020ba60 <_GLOBAL_OFFSET_TABLE_+0x30>
-    802032b6:	ffffd097          	auipc	ra,0xffffd
-    802032ba:	464080e7          	jalr	1124(ra) # 8020071a <release>
+    80203502:	00008517          	auipc	a0,0x8
+    80203506:	7ce53503          	ld	a0,1998(a0) # 8020bcd0 <_GLOBAL_OFFSET_TABLE_+0x30>
+    8020350a:	ffffd097          	auipc	ra,0xffffd
+    8020350e:	210080e7          	jalr	528(ra) # 8020071a <release>
   return xticks;
 }
-    802032be:	02049513          	slli	a0,s1,0x20
-    802032c2:	9101                	srli	a0,a0,0x20
-    802032c4:	60e2                	ld	ra,24(sp)
-    802032c6:	6442                	ld	s0,16(sp)
-    802032c8:	64a2                	ld	s1,8(sp)
-    802032ca:	6105                	addi	sp,sp,32
-    802032cc:	8082                	ret
+    80203512:	02049513          	slli	a0,s1,0x20
+    80203516:	9101                	srli	a0,a0,0x20
+    80203518:	60e2                	ld	ra,24(sp)
+    8020351a:	6442                	ld	s0,16(sp)
+    8020351c:	64a2                	ld	s1,8(sp)
+    8020351e:	6105                	addi	sp,sp,32
+    80203520:	8082                	ret
 
-00000000802032ce <sys_trace>:
+0000000080203522 <sys_times>:
+
+uint64
+sys_times(void)
+{
+    80203522:	1141                	addi	sp,sp,-16
+    80203524:	e406                	sd	ra,8(sp)
+    80203526:	e022                	sd	s0,0(sp)
+    80203528:	0800                	addi	s0,sp,16
+  return sys_uptime();
+    8020352a:	00000097          	auipc	ra,0x0
+    8020352e:	fb4080e7          	jalr	-76(ra) # 802034de <sys_uptime>
+}//diaoyong sys_uptime();
+    80203532:	60a2                	ld	ra,8(sp)
+    80203534:	6402                	ld	s0,0(sp)
+    80203536:	0141                	addi	sp,sp,16
+    80203538:	8082                	ret
+
+000000008020353a <sys_trace>:
 
 uint64
 sys_trace(void)
 {
-    802032ce:	1101                	addi	sp,sp,-32
-    802032d0:	ec06                	sd	ra,24(sp)
-    802032d2:	e822                	sd	s0,16(sp)
-    802032d4:	1000                	addi	s0,sp,32
+    8020353a:	1101                	addi	sp,sp,-32
+    8020353c:	ec06                	sd	ra,24(sp)
+    8020353e:	e822                	sd	s0,16(sp)
+    80203540:	1000                	addi	s0,sp,32
   int mask;
   if(argint(0, &mask) < 0) {
-    802032d6:	fec40593          	addi	a1,s0,-20
-    802032da:	4501                	li	a0,0
-    802032dc:	00000097          	auipc	ra,0x0
-    802032e0:	ae2080e7          	jalr	-1310(ra) # 80202dbe <argint>
+    80203542:	fec40593          	addi	a1,s0,-20
+    80203546:	4501                	li	a0,0
+    80203548:	00000097          	auipc	ra,0x0
+    8020354c:	aca080e7          	jalr	-1334(ra) # 80203012 <argint>
     return -1;
-    802032e4:	57fd                	li	a5,-1
+    80203550:	57fd                	li	a5,-1
   if(argint(0, &mask) < 0) {
-    802032e6:	00054b63          	bltz	a0,802032fc <sys_trace+0x2e>
+    80203552:	00054b63          	bltz	a0,80203568 <sys_trace+0x2e>
   }
   myproc()->tmask = mask;
-    802032ea:	ffffe097          	auipc	ra,0xffffe
-    802032ee:	752080e7          	jalr	1874(ra) # 80201a3c <myproc>
-    802032f2:	fec42783          	lw	a5,-20(s0)
-    802032f6:	16f52823          	sw	a5,368(a0)
+    80203556:	ffffe097          	auipc	ra,0xffffe
+    8020355a:	4e6080e7          	jalr	1254(ra) # 80201a3c <myproc>
+    8020355e:	fec42783          	lw	a5,-20(s0)
+    80203562:	16f52823          	sw	a5,368(a0)
   return 0;
-    802032fa:	4781                	li	a5,0
+    80203566:	4781                	li	a5,0
 }
-    802032fc:	853e                	mv	a0,a5
-    802032fe:	60e2                	ld	ra,24(sp)
-    80203300:	6442                	ld	s0,16(sp)
-    80203302:	6105                	addi	sp,sp,32
-    80203304:	8082                	ret
+    80203568:	853e                	mv	a0,a5
+    8020356a:	60e2                	ld	ra,24(sp)
+    8020356c:	6442                	ld	s0,16(sp)
+    8020356e:	6105                	addi	sp,sp,32
+    80203570:	8082                	ret
 
-0000000080203306 <sys_shutdown>:
+0000000080203572 <sys_shutdown>:
 
 uint64 
 sys_shutdown(void) {
-    80203306:	1141                	addi	sp,sp,-16
-    80203308:	e422                	sd	s0,8(sp)
-    8020330a:	0800                	addi	s0,sp,16
+    80203572:	1141                	addi	sp,sp,-16
+    80203574:	e422                	sd	s0,8(sp)
+    80203576:	0800                	addi	s0,sp,16
 	SBI_CALL_0(SBI_SHUTDOWN);
-    8020330c:	4501                	li	a0,0
-    8020330e:	4581                	li	a1,0
-    80203310:	4601                	li	a2,0
-    80203312:	4681                	li	a3,0
-    80203314:	48a1                	li	a7,8
-    80203316:	00000073          	ecall
+    80203578:	4501                	li	a0,0
+    8020357a:	4581                	li	a1,0
+    8020357c:	4601                	li	a2,0
+    8020357e:	4681                	li	a3,0
+    80203580:	48a1                	li	a7,8
+    80203582:	00000073          	ecall
   sbi_shutdown();
   return 0;
 }
-    8020331a:	4501                	li	a0,0
-    8020331c:	6422                	ld	s0,8(sp)
-    8020331e:	0141                	addi	sp,sp,16
-    80203320:	8082                	ret
+    80203586:	4501                	li	a0,0
+    80203588:	6422                	ld	s0,8(sp)
+    8020358a:	0141                	addi	sp,sp,16
+    8020358c:	8082                	ret
+
+000000008020358e <sys_clone>:
+
+uint64
+sys_clone(void)
+{
+    8020358e:	1101                	addi	sp,sp,-32
+    80203590:	ec06                	sd	ra,24(sp)
+    80203592:	e822                	sd	s0,16(sp)
+    80203594:	1000                	addi	s0,sp,32
+  int stack_address;  
+
+  // 从用户空间获取栈地址参数
+  if (argint(1, &stack_address) < 0)
+    80203596:	fec40593          	addi	a1,s0,-20
+    8020359a:	4505                	li	a0,1
+    8020359c:	00000097          	auipc	ra,0x0
+    802035a0:	a76080e7          	jalr	-1418(ra) # 80203012 <argint>
+    802035a4:	87aa                	mv	a5,a0
+    return -1;  // 如果获取参数失败,返回 -1
+    802035a6:	557d                	li	a0,-1
+  if (argint(1, &stack_address) < 0)
+    802035a8:	0007c863          	bltz	a5,802035b8 <sys_clone+0x2a>
+
+  // 调用 clone 函数并返回其结果
+  return clone(stack_address);
+    802035ac:	fec42503          	lw	a0,-20(s0)
+    802035b0:	fffff097          	auipc	ra,0xfffff
+    802035b4:	1cc080e7          	jalr	460(ra) # 8020277c <clone>
+}
+    802035b8:	60e2                	ld	ra,24(sp)
+    802035ba:	6442                	ld	s0,16(sp)
+    802035bc:	6105                	addi	sp,sp,32
+    802035be:	8082                	ret
+
+00000000802035c0 <sys_wait4>:
 
-0000000080203322 <binit>:
+uint64
+sys_wait4(void)
+{
+    802035c0:	1101                	addi	sp,sp,-32
+    802035c2:	ec06                	sd	ra,24(sp)
+    802035c4:	e822                	sd	s0,16(sp)
+    802035c6:	1000                	addi	s0,sp,32
+  uint64 status_addr;
+  int pid, opts;
+  
+  // 从用户空间获取参数
+  if (argint(0, &pid) < 0 || argaddr(1, &status_addr) < 0 || argint(2, &opts) < 0)
+    802035c8:	fe440593          	addi	a1,s0,-28
+    802035cc:	4501                	li	a0,0
+    802035ce:	00000097          	auipc	ra,0x0
+    802035d2:	a44080e7          	jalr	-1468(ra) # 80203012 <argint>
+    return -1;  // 如果获取参数失败,返回 -1
+    802035d6:	57fd                	li	a5,-1
+  if (argint(0, &pid) < 0 || argaddr(1, &status_addr) < 0 || argint(2, &opts) < 0)
+    802035d8:	04054163          	bltz	a0,8020361a <sys_wait4+0x5a>
+    802035dc:	fe840593          	addi	a1,s0,-24
+    802035e0:	4505                	li	a0,1
+    802035e2:	00000097          	auipc	ra,0x0
+    802035e6:	a92080e7          	jalr	-1390(ra) # 80203074 <argaddr>
+    return -1;  // 如果获取参数失败,返回 -1
+    802035ea:	57fd                	li	a5,-1
+  if (argint(0, &pid) < 0 || argaddr(1, &status_addr) < 0 || argint(2, &opts) < 0)
+    802035ec:	02054763          	bltz	a0,8020361a <sys_wait4+0x5a>
+    802035f0:	fe040593          	addi	a1,s0,-32
+    802035f4:	4509                	li	a0,2
+    802035f6:	00000097          	auipc	ra,0x0
+    802035fa:	a1c080e7          	jalr	-1508(ra) # 80203012 <argint>
+    return -1;  // 如果获取参数失败,返回 -1
+    802035fe:	57fd                	li	a5,-1
+  if (argint(0, &pid) < 0 || argaddr(1, &status_addr) < 0 || argint(2, &opts) < 0)
+    80203600:	00054d63          	bltz	a0,8020361a <sys_wait4+0x5a>
+  
+  // 调用 wait4 函数并返回其结果
+  return wait4(pid, status_addr, opts);
+    80203604:	fe042603          	lw	a2,-32(s0)
+    80203608:	fe843583          	ld	a1,-24(s0)
+    8020360c:	fe442503          	lw	a0,-28(s0)
+    80203610:	fffff097          	auipc	ra,0xfffff
+    80203614:	050080e7          	jalr	80(ra) # 80202660 <wait4>
+    80203618:	87aa                	mv	a5,a0
+}
+    8020361a:	853e                	mv	a0,a5
+    8020361c:	60e2                	ld	ra,24(sp)
+    8020361e:	6442                	ld	s0,16(sp)
+    80203620:	6105                	addi	sp,sp,32
+    80203622:	8082                	ret
+
+0000000080203624 <sys_yield>:
+
+uint64 
+sys_yield(void) {
+    80203624:	1141                	addi	sp,sp,-16
+    80203626:	e406                	sd	ra,8(sp)
+    80203628:	e022                	sd	s0,0(sp)
+    8020362a:	0800                	addi	s0,sp,16
+  yield();
+    8020362c:	fffff097          	auipc	ra,0xfffff
+    80203630:	c54080e7          	jalr	-940(ra) # 80202280 <yield>
+  return 0;
+}
+    80203634:	4501                	li	a0,0
+    80203636:	60a2                	ld	ra,8(sp)
+    80203638:	6402                	ld	s0,0(sp)
+    8020363a:	0141                	addi	sp,sp,16
+    8020363c:	8082                	ret
+
+000000008020363e <binit>:
   struct buf head;
 } bcache;
 
 void
 binit(void)
 {
-    80203322:	7139                	addi	sp,sp,-64
-    80203324:	fc06                	sd	ra,56(sp)
-    80203326:	f822                	sd	s0,48(sp)
-    80203328:	f426                	sd	s1,40(sp)
-    8020332a:	f04a                	sd	s2,32(sp)
-    8020332c:	ec4e                	sd	s3,24(sp)
-    8020332e:	e852                	sd	s4,16(sp)
-    80203330:	e456                	sd	s5,8(sp)
-    80203332:	0080                	addi	s0,sp,64
+    8020363e:	7139                	addi	sp,sp,-64
+    80203640:	fc06                	sd	ra,56(sp)
+    80203642:	f822                	sd	s0,48(sp)
+    80203644:	f426                	sd	s1,40(sp)
+    80203646:	f04a                	sd	s2,32(sp)
+    80203648:	ec4e                	sd	s3,24(sp)
+    8020364a:	e852                	sd	s4,16(sp)
+    8020364c:	e456                	sd	s5,8(sp)
+    8020364e:	0080                	addi	s0,sp,64
   struct buf *b;
 
   initlock(&bcache.lock, "bcache");
-    80203334:	00006597          	auipc	a1,0x6
-    80203338:	79458593          	addi	a1,a1,1940 # 80209ac8 <digits+0x748>
-    8020333c:	00015517          	auipc	a0,0x15
-    80203340:	7b450513          	addi	a0,a0,1972 # 80218af0 <bcache>
-    80203344:	ffffd097          	auipc	ra,0xffffd
-    80203348:	33e080e7          	jalr	830(ra) # 80200682 <initlock>
+    80203650:	00006597          	auipc	a1,0x6
+    80203654:	4b058593          	addi	a1,a1,1200 # 80209b00 <digits+0x780>
+    80203658:	00015517          	auipc	a0,0x15
+    8020365c:	49850513          	addi	a0,a0,1176 # 80218af0 <bcache>
+    80203660:	ffffd097          	auipc	ra,0xffffd
+    80203664:	022080e7          	jalr	34(ra) # 80200682 <initlock>
 
   // Create linked list of buffers
   bcache.head.prev = &bcache.head;
-    8020334c:	00019797          	auipc	a5,0x19
-    80203350:	7a478793          	addi	a5,a5,1956 # 8021caf0 <bcache+0x4000>
-    80203354:	0001a717          	auipc	a4,0x1a
-    80203358:	e0470713          	addi	a4,a4,-508 # 8021d158 <bcache+0x4668>
-    8020335c:	6ae7b823          	sd	a4,1712(a5)
+    80203668:	00019797          	auipc	a5,0x19
+    8020366c:	48878793          	addi	a5,a5,1160 # 8021caf0 <bcache+0x4000>
+    80203670:	0001a717          	auipc	a4,0x1a
+    80203674:	ae870713          	addi	a4,a4,-1304 # 8021d158 <bcache+0x4668>
+    80203678:	6ae7b823          	sd	a4,1712(a5)
   bcache.head.next = &bcache.head;
-    80203360:	6ae7bc23          	sd	a4,1720(a5)
+    8020367c:	6ae7bc23          	sd	a4,1720(a5)
   for(b = bcache.buf; b < bcache.buf+NBUF; b++){
-    80203364:	00015497          	auipc	s1,0x15
-    80203368:	7a448493          	addi	s1,s1,1956 # 80218b08 <bcache+0x18>
+    80203680:	00015497          	auipc	s1,0x15
+    80203684:	48848493          	addi	s1,s1,1160 # 80218b08 <bcache+0x18>
     b->refcnt = 0;
     b->sectorno = ~0;
-    8020336c:	5a7d                	li	s4,-1
+    80203688:	5a7d                	li	s4,-1
     b->dev = ~0;
     b->next = bcache.head.next;
-    8020336e:	893e                	mv	s2,a5
+    8020368a:	893e                	mv	s2,a5
     b->prev = &bcache.head;
-    80203370:	89ba                	mv	s3,a4
+    8020368c:	89ba                	mv	s3,a4
     initsleeplock(&b->lock, "buffer");
-    80203372:	00006a97          	auipc	s5,0x6
-    80203376:	75ea8a93          	addi	s5,s5,1886 # 80209ad0 <digits+0x750>
+    8020368e:	00006a97          	auipc	s5,0x6
+    80203692:	47aa8a93          	addi	s5,s5,1146 # 80209b08 <digits+0x788>
     b->refcnt = 0;
-    8020337a:	0404a023          	sw	zero,64(s1)
+    80203696:	0404a023          	sw	zero,64(s1)
     b->sectorno = ~0;
-    8020337e:	0144a623          	sw	s4,12(s1)
+    8020369a:	0144a623          	sw	s4,12(s1)
     b->dev = ~0;
-    80203382:	0144a423          	sw	s4,8(s1)
+    8020369e:	0144a423          	sw	s4,8(s1)
     b->next = bcache.head.next;
-    80203386:	6b893783          	ld	a5,1720(s2)
-    8020338a:	e8bc                	sd	a5,80(s1)
+    802036a2:	6b893783          	ld	a5,1720(s2)
+    802036a6:	e8bc                	sd	a5,80(s1)
     b->prev = &bcache.head;
-    8020338c:	0534b423          	sd	s3,72(s1)
+    802036a8:	0534b423          	sd	s3,72(s1)
     initsleeplock(&b->lock, "buffer");
-    80203390:	85d6                	mv	a1,s5
-    80203392:	01048513          	addi	a0,s1,16
-    80203396:	00000097          	auipc	ra,0x0
-    8020339a:	26e080e7          	jalr	622(ra) # 80203604 <initsleeplock>
+    802036ac:	85d6                	mv	a1,s5
+    802036ae:	01048513          	addi	a0,s1,16
+    802036b2:	00000097          	auipc	ra,0x0
+    802036b6:	26e080e7          	jalr	622(ra) # 80203920 <initsleeplock>
     bcache.head.next->prev = b;
-    8020339e:	6b893783          	ld	a5,1720(s2)
-    802033a2:	e7a4                	sd	s1,72(a5)
+    802036ba:	6b893783          	ld	a5,1720(s2)
+    802036be:	e7a4                	sd	s1,72(a5)
     bcache.head.next = b;
-    802033a4:	6a993c23          	sd	s1,1720(s2)
+    802036c0:	6a993c23          	sd	s1,1720(s2)
   for(b = bcache.buf; b < bcache.buf+NBUF; b++){
-    802033a8:	25848493          	addi	s1,s1,600
-    802033ac:	fd3497e3          	bne	s1,s3,8020337a <binit+0x58>
+    802036c4:	25848493          	addi	s1,s1,600
+    802036c8:	fd3497e3          	bne	s1,s3,80203696 <binit+0x58>
   }
   #ifdef DEBUG
   printf("binit\n");
   #endif
 }
-    802033b0:	70e2                	ld	ra,56(sp)
-    802033b2:	7442                	ld	s0,48(sp)
-    802033b4:	74a2                	ld	s1,40(sp)
-    802033b6:	7902                	ld	s2,32(sp)
-    802033b8:	69e2                	ld	s3,24(sp)
-    802033ba:	6a42                	ld	s4,16(sp)
-    802033bc:	6aa2                	ld	s5,8(sp)
-    802033be:	6121                	addi	sp,sp,64
-    802033c0:	8082                	ret
-
-00000000802033c2 <bread>:
+    802036cc:	70e2                	ld	ra,56(sp)
+    802036ce:	7442                	ld	s0,48(sp)
+    802036d0:	74a2                	ld	s1,40(sp)
+    802036d2:	7902                	ld	s2,32(sp)
+    802036d4:	69e2                	ld	s3,24(sp)
+    802036d6:	6a42                	ld	s4,16(sp)
+    802036d8:	6aa2                	ld	s5,8(sp)
+    802036da:	6121                	addi	sp,sp,64
+    802036dc:	8082                	ret
+
+00000000802036de <bread>:
   panic("bget: no buffers");
 }
 
 // Return a locked buf with the contents of the indicated block.
 struct buf* 
 bread(uint dev, uint sectorno) {
-    802033c2:	7179                	addi	sp,sp,-48
-    802033c4:	f406                	sd	ra,40(sp)
-    802033c6:	f022                	sd	s0,32(sp)
-    802033c8:	ec26                	sd	s1,24(sp)
-    802033ca:	e84a                	sd	s2,16(sp)
-    802033cc:	e44e                	sd	s3,8(sp)
-    802033ce:	1800                	addi	s0,sp,48
-    802033d0:	892a                	mv	s2,a0
-    802033d2:	89ae                	mv	s3,a1
+    802036de:	7179                	addi	sp,sp,-48
+    802036e0:	f406                	sd	ra,40(sp)
+    802036e2:	f022                	sd	s0,32(sp)
+    802036e4:	ec26                	sd	s1,24(sp)
+    802036e6:	e84a                	sd	s2,16(sp)
+    802036e8:	e44e                	sd	s3,8(sp)
+    802036ea:	1800                	addi	s0,sp,48
+    802036ec:	892a                	mv	s2,a0
+    802036ee:	89ae                	mv	s3,a1
   acquire(&bcache.lock);
-    802033d4:	00015517          	auipc	a0,0x15
-    802033d8:	71c50513          	addi	a0,a0,1820 # 80218af0 <bcache>
-    802033dc:	ffffd097          	auipc	ra,0xffffd
-    802033e0:	2ea080e7          	jalr	746(ra) # 802006c6 <acquire>
+    802036f0:	00015517          	auipc	a0,0x15
+    802036f4:	40050513          	addi	a0,a0,1024 # 80218af0 <bcache>
+    802036f8:	ffffd097          	auipc	ra,0xffffd
+    802036fc:	fce080e7          	jalr	-50(ra) # 802006c6 <acquire>
   for(b = bcache.head.next; b != &bcache.head; b = b->next){
-    802033e4:	0001a497          	auipc	s1,0x1a
-    802033e8:	dc44b483          	ld	s1,-572(s1) # 8021d1a8 <bcache+0x46b8>
-    802033ec:	0001a797          	auipc	a5,0x1a
-    802033f0:	d6c78793          	addi	a5,a5,-660 # 8021d158 <bcache+0x4668>
-    802033f4:	02f48f63          	beq	s1,a5,80203432 <bread+0x70>
-    802033f8:	873e                	mv	a4,a5
-    802033fa:	a021                	j	80203402 <bread+0x40>
-    802033fc:	68a4                	ld	s1,80(s1)
-    802033fe:	02e48a63          	beq	s1,a4,80203432 <bread+0x70>
+    80203700:	0001a497          	auipc	s1,0x1a
+    80203704:	aa84b483          	ld	s1,-1368(s1) # 8021d1a8 <bcache+0x46b8>
+    80203708:	0001a797          	auipc	a5,0x1a
+    8020370c:	a5078793          	addi	a5,a5,-1456 # 8021d158 <bcache+0x4668>
+    80203710:	02f48f63          	beq	s1,a5,8020374e <bread+0x70>
+    80203714:	873e                	mv	a4,a5
+    80203716:	a021                	j	8020371e <bread+0x40>
+    80203718:	68a4                	ld	s1,80(s1)
+    8020371a:	02e48a63          	beq	s1,a4,8020374e <bread+0x70>
     if(b->dev == dev && b->sectorno == sectorno){
-    80203402:	449c                	lw	a5,8(s1)
-    80203404:	ff279ce3          	bne	a5,s2,802033fc <bread+0x3a>
-    80203408:	44dc                	lw	a5,12(s1)
-    8020340a:	ff3799e3          	bne	a5,s3,802033fc <bread+0x3a>
+    8020371e:	449c                	lw	a5,8(s1)
+    80203720:	ff279ce3          	bne	a5,s2,80203718 <bread+0x3a>
+    80203724:	44dc                	lw	a5,12(s1)
+    80203726:	ff3799e3          	bne	a5,s3,80203718 <bread+0x3a>
       b->refcnt++;
-    8020340e:	40bc                	lw	a5,64(s1)
-    80203410:	2785                	addiw	a5,a5,1
-    80203412:	c0bc                	sw	a5,64(s1)
+    8020372a:	40bc                	lw	a5,64(s1)
+    8020372c:	2785                	addiw	a5,a5,1
+    8020372e:	c0bc                	sw	a5,64(s1)
       release(&bcache.lock);
-    80203414:	00015517          	auipc	a0,0x15
-    80203418:	6dc50513          	addi	a0,a0,1756 # 80218af0 <bcache>
-    8020341c:	ffffd097          	auipc	ra,0xffffd
-    80203420:	2fe080e7          	jalr	766(ra) # 8020071a <release>
+    80203730:	00015517          	auipc	a0,0x15
+    80203734:	3c050513          	addi	a0,a0,960 # 80218af0 <bcache>
+    80203738:	ffffd097          	auipc	ra,0xffffd
+    8020373c:	fe2080e7          	jalr	-30(ra) # 8020071a <release>
       acquiresleep(&b->lock);
-    80203424:	01048513          	addi	a0,s1,16
-    80203428:	00000097          	auipc	ra,0x0
-    8020342c:	216080e7          	jalr	534(ra) # 8020363e <acquiresleep>
+    80203740:	01048513          	addi	a0,s1,16
+    80203744:	00000097          	auipc	ra,0x0
+    80203748:	216080e7          	jalr	534(ra) # 8020395a <acquiresleep>
       return b;
-    80203430:	a8b9                	j	8020348e <bread+0xcc>
+    8020374c:	a8b9                	j	802037aa <bread+0xcc>
   for(b = bcache.head.prev; b != &bcache.head; b = b->prev){
-    80203432:	0001a497          	auipc	s1,0x1a
-    80203436:	d6e4b483          	ld	s1,-658(s1) # 8021d1a0 <bcache+0x46b0>
-    8020343a:	0001a797          	auipc	a5,0x1a
-    8020343e:	d1e78793          	addi	a5,a5,-738 # 8021d158 <bcache+0x4668>
-    80203442:	00f48863          	beq	s1,a5,80203452 <bread+0x90>
-    80203446:	873e                	mv	a4,a5
+    8020374e:	0001a497          	auipc	s1,0x1a
+    80203752:	a524b483          	ld	s1,-1454(s1) # 8021d1a0 <bcache+0x46b0>
+    80203756:	0001a797          	auipc	a5,0x1a
+    8020375a:	a0278793          	addi	a5,a5,-1534 # 8021d158 <bcache+0x4668>
+    8020375e:	00f48863          	beq	s1,a5,8020376e <bread+0x90>
+    80203762:	873e                	mv	a4,a5
     if(b->refcnt == 0) {
-    80203448:	40bc                	lw	a5,64(s1)
-    8020344a:	cf81                	beqz	a5,80203462 <bread+0xa0>
+    80203764:	40bc                	lw	a5,64(s1)
+    80203766:	cf81                	beqz	a5,8020377e <bread+0xa0>
   for(b = bcache.head.prev; b != &bcache.head; b = b->prev){
-    8020344c:	64a4                	ld	s1,72(s1)
-    8020344e:	fee49de3          	bne	s1,a4,80203448 <bread+0x86>
+    80203768:	64a4                	ld	s1,72(s1)
+    8020376a:	fee49de3          	bne	s1,a4,80203764 <bread+0x86>
   panic("bget: no buffers");
-    80203452:	00006517          	auipc	a0,0x6
-    80203456:	68650513          	addi	a0,a0,1670 # 80209ad8 <digits+0x758>
-    8020345a:	ffffd097          	auipc	ra,0xffffd
-    8020345e:	cea080e7          	jalr	-790(ra) # 80200144 <panic>
+    8020376e:	00006517          	auipc	a0,0x6
+    80203772:	3a250513          	addi	a0,a0,930 # 80209b10 <digits+0x790>
+    80203776:	ffffd097          	auipc	ra,0xffffd
+    8020377a:	9ce080e7          	jalr	-1586(ra) # 80200144 <panic>
       b->dev = dev;
-    80203462:	0124a423          	sw	s2,8(s1)
+    8020377e:	0124a423          	sw	s2,8(s1)
       b->sectorno = sectorno;
-    80203466:	0134a623          	sw	s3,12(s1)
+    80203782:	0134a623          	sw	s3,12(s1)
       b->valid = 0;
-    8020346a:	0004a023          	sw	zero,0(s1)
+    80203786:	0004a023          	sw	zero,0(s1)
       b->refcnt = 1;
-    8020346e:	4785                	li	a5,1
-    80203470:	c0bc                	sw	a5,64(s1)
+    8020378a:	4785                	li	a5,1
+    8020378c:	c0bc                	sw	a5,64(s1)
       release(&bcache.lock);
-    80203472:	00015517          	auipc	a0,0x15
-    80203476:	67e50513          	addi	a0,a0,1662 # 80218af0 <bcache>
-    8020347a:	ffffd097          	auipc	ra,0xffffd
-    8020347e:	2a0080e7          	jalr	672(ra) # 8020071a <release>
+    8020378e:	00015517          	auipc	a0,0x15
+    80203792:	36250513          	addi	a0,a0,866 # 80218af0 <bcache>
+    80203796:	ffffd097          	auipc	ra,0xffffd
+    8020379a:	f84080e7          	jalr	-124(ra) # 8020071a <release>
       acquiresleep(&b->lock);
-    80203482:	01048513          	addi	a0,s1,16
-    80203486:	00000097          	auipc	ra,0x0
-    8020348a:	1b8080e7          	jalr	440(ra) # 8020363e <acquiresleep>
+    8020379e:	01048513          	addi	a0,s1,16
+    802037a2:	00000097          	auipc	ra,0x0
+    802037a6:	1b8080e7          	jalr	440(ra) # 8020395a <acquiresleep>
   struct buf *b;
 
   b = bget(dev, sectorno);
   if (!b->valid) {
-    8020348e:	409c                	lw	a5,0(s1)
-    80203490:	cb89                	beqz	a5,802034a2 <bread+0xe0>
+    802037aa:	409c                	lw	a5,0(s1)
+    802037ac:	cb89                	beqz	a5,802037be <bread+0xe0>
     disk_read(b);
     b->valid = 1;
   }
 
   return b;
 }
-    80203492:	8526                	mv	a0,s1
-    80203494:	70a2                	ld	ra,40(sp)
-    80203496:	7402                	ld	s0,32(sp)
-    80203498:	64e2                	ld	s1,24(sp)
-    8020349a:	6942                	ld	s2,16(sp)
-    8020349c:	69a2                	ld	s3,8(sp)
-    8020349e:	6145                	addi	sp,sp,48
-    802034a0:	8082                	ret
+    802037ae:	8526                	mv	a0,s1
+    802037b0:	70a2                	ld	ra,40(sp)
+    802037b2:	7402                	ld	s0,32(sp)
+    802037b4:	64e2                	ld	s1,24(sp)
+    802037b6:	6942                	ld	s2,16(sp)
+    802037b8:	69a2                	ld	s3,8(sp)
+    802037ba:	6145                	addi	sp,sp,48
+    802037bc:	8082                	ret
     disk_read(b);
-    802034a2:	8526                	mv	a0,s1
-    802034a4:	00002097          	auipc	ra,0x2
-    802034a8:	bfe080e7          	jalr	-1026(ra) # 802050a2 <disk_read>
+    802037be:	8526                	mv	a0,s1
+    802037c0:	00002097          	auipc	ra,0x2
+    802037c4:	c32080e7          	jalr	-974(ra) # 802053f2 <disk_read>
     b->valid = 1;
-    802034ac:	4785                	li	a5,1
-    802034ae:	c09c                	sw	a5,0(s1)
+    802037c8:	4785                	li	a5,1
+    802037ca:	c09c                	sw	a5,0(s1)
   return b;
-    802034b0:	b7cd                	j	80203492 <bread+0xd0>
+    802037cc:	b7cd                	j	802037ae <bread+0xd0>
 
-00000000802034b2 <bwrite>:
+00000000802037ce <bwrite>:
 
 // Write b's contents to disk.  Must be locked.
 void 
 bwrite(struct buf *b) {
-    802034b2:	1101                	addi	sp,sp,-32
-    802034b4:	ec06                	sd	ra,24(sp)
-    802034b6:	e822                	sd	s0,16(sp)
-    802034b8:	e426                	sd	s1,8(sp)
-    802034ba:	1000                	addi	s0,sp,32
-    802034bc:	84aa                	mv	s1,a0
+    802037ce:	1101                	addi	sp,sp,-32
+    802037d0:	ec06                	sd	ra,24(sp)
+    802037d2:	e822                	sd	s0,16(sp)
+    802037d4:	e426                	sd	s1,8(sp)
+    802037d6:	1000                	addi	s0,sp,32
+    802037d8:	84aa                	mv	s1,a0
   if(!holdingsleep(&b->lock))
-    802034be:	0541                	addi	a0,a0,16
-    802034c0:	00000097          	auipc	ra,0x0
-    802034c4:	218080e7          	jalr	536(ra) # 802036d8 <holdingsleep>
-    802034c8:	c919                	beqz	a0,802034de <bwrite+0x2c>
+    802037da:	0541                	addi	a0,a0,16
+    802037dc:	00000097          	auipc	ra,0x0
+    802037e0:	218080e7          	jalr	536(ra) # 802039f4 <holdingsleep>
+    802037e4:	c919                	beqz	a0,802037fa <bwrite+0x2c>
     panic("bwrite");
   disk_write(b);
-    802034ca:	8526                	mv	a0,s1
-    802034cc:	00002097          	auipc	ra,0x2
-    802034d0:	bf0080e7          	jalr	-1040(ra) # 802050bc <disk_write>
-}
-    802034d4:	60e2                	ld	ra,24(sp)
-    802034d6:	6442                	ld	s0,16(sp)
-    802034d8:	64a2                	ld	s1,8(sp)
-    802034da:	6105                	addi	sp,sp,32
-    802034dc:	8082                	ret
+    802037e6:	8526                	mv	a0,s1
+    802037e8:	00002097          	auipc	ra,0x2
+    802037ec:	c24080e7          	jalr	-988(ra) # 8020540c <disk_write>
+}
+    802037f0:	60e2                	ld	ra,24(sp)
+    802037f2:	6442                	ld	s0,16(sp)
+    802037f4:	64a2                	ld	s1,8(sp)
+    802037f6:	6105                	addi	sp,sp,32
+    802037f8:	8082                	ret
     panic("bwrite");
-    802034de:	00006517          	auipc	a0,0x6
-    802034e2:	61250513          	addi	a0,a0,1554 # 80209af0 <digits+0x770>
-    802034e6:	ffffd097          	auipc	ra,0xffffd
-    802034ea:	c5e080e7          	jalr	-930(ra) # 80200144 <panic>
+    802037fa:	00006517          	auipc	a0,0x6
+    802037fe:	32e50513          	addi	a0,a0,814 # 80209b28 <digits+0x7a8>
+    80203802:	ffffd097          	auipc	ra,0xffffd
+    80203806:	942080e7          	jalr	-1726(ra) # 80200144 <panic>
 
-00000000802034ee <brelse>:
+000000008020380a <brelse>:
 
 // Release a locked buffer.
 // Move to the head of the most-recently-used list.
 void
 brelse(struct buf *b)
 {
-    802034ee:	1101                	addi	sp,sp,-32
-    802034f0:	ec06                	sd	ra,24(sp)
-    802034f2:	e822                	sd	s0,16(sp)
-    802034f4:	e426                	sd	s1,8(sp)
-    802034f6:	e04a                	sd	s2,0(sp)
-    802034f8:	1000                	addi	s0,sp,32
-    802034fa:	84aa                	mv	s1,a0
+    8020380a:	1101                	addi	sp,sp,-32
+    8020380c:	ec06                	sd	ra,24(sp)
+    8020380e:	e822                	sd	s0,16(sp)
+    80203810:	e426                	sd	s1,8(sp)
+    80203812:	e04a                	sd	s2,0(sp)
+    80203814:	1000                	addi	s0,sp,32
+    80203816:	84aa                	mv	s1,a0
   if(!holdingsleep(&b->lock))
-    802034fc:	01050913          	addi	s2,a0,16
-    80203500:	854a                	mv	a0,s2
-    80203502:	00000097          	auipc	ra,0x0
-    80203506:	1d6080e7          	jalr	470(ra) # 802036d8 <holdingsleep>
-    8020350a:	c92d                	beqz	a0,8020357c <brelse+0x8e>
+    80203818:	01050913          	addi	s2,a0,16
+    8020381c:	854a                	mv	a0,s2
+    8020381e:	00000097          	auipc	ra,0x0
+    80203822:	1d6080e7          	jalr	470(ra) # 802039f4 <holdingsleep>
+    80203826:	c92d                	beqz	a0,80203898 <brelse+0x8e>
     panic("brelse");
 
   releasesleep(&b->lock);
-    8020350c:	854a                	mv	a0,s2
-    8020350e:	00000097          	auipc	ra,0x0
-    80203512:	186080e7          	jalr	390(ra) # 80203694 <releasesleep>
+    80203828:	854a                	mv	a0,s2
+    8020382a:	00000097          	auipc	ra,0x0
+    8020382e:	186080e7          	jalr	390(ra) # 802039b0 <releasesleep>
 
   acquire(&bcache.lock);
-    80203516:	00015517          	auipc	a0,0x15
-    8020351a:	5da50513          	addi	a0,a0,1498 # 80218af0 <bcache>
-    8020351e:	ffffd097          	auipc	ra,0xffffd
-    80203522:	1a8080e7          	jalr	424(ra) # 802006c6 <acquire>
+    80203832:	00015517          	auipc	a0,0x15
+    80203836:	2be50513          	addi	a0,a0,702 # 80218af0 <bcache>
+    8020383a:	ffffd097          	auipc	ra,0xffffd
+    8020383e:	e8c080e7          	jalr	-372(ra) # 802006c6 <acquire>
   b->refcnt--;
-    80203526:	40bc                	lw	a5,64(s1)
-    80203528:	37fd                	addiw	a5,a5,-1
-    8020352a:	0007871b          	sext.w	a4,a5
-    8020352e:	c0bc                	sw	a5,64(s1)
+    80203842:	40bc                	lw	a5,64(s1)
+    80203844:	37fd                	addiw	a5,a5,-1
+    80203846:	0007871b          	sext.w	a4,a5
+    8020384a:	c0bc                	sw	a5,64(s1)
   if (b->refcnt == 0) {
-    80203530:	eb05                	bnez	a4,80203560 <brelse+0x72>
+    8020384c:	eb05                	bnez	a4,8020387c <brelse+0x72>
     // no one is waiting for it.
     b->next->prev = b->prev;
-    80203532:	68bc                	ld	a5,80(s1)
-    80203534:	64b8                	ld	a4,72(s1)
-    80203536:	e7b8                	sd	a4,72(a5)
+    8020384e:	68bc                	ld	a5,80(s1)
+    80203850:	64b8                	ld	a4,72(s1)
+    80203852:	e7b8                	sd	a4,72(a5)
     b->prev->next = b->next;
-    80203538:	64bc                	ld	a5,72(s1)
-    8020353a:	68b8                	ld	a4,80(s1)
-    8020353c:	ebb8                	sd	a4,80(a5)
+    80203854:	64bc                	ld	a5,72(s1)
+    80203856:	68b8                	ld	a4,80(s1)
+    80203858:	ebb8                	sd	a4,80(a5)
     b->next = bcache.head.next;
-    8020353e:	00019797          	auipc	a5,0x19
-    80203542:	5b278793          	addi	a5,a5,1458 # 8021caf0 <bcache+0x4000>
-    80203546:	6b87b703          	ld	a4,1720(a5)
-    8020354a:	e8b8                	sd	a4,80(s1)
+    8020385a:	00019797          	auipc	a5,0x19
+    8020385e:	29678793          	addi	a5,a5,662 # 8021caf0 <bcache+0x4000>
+    80203862:	6b87b703          	ld	a4,1720(a5)
+    80203866:	e8b8                	sd	a4,80(s1)
     b->prev = &bcache.head;
-    8020354c:	0001a717          	auipc	a4,0x1a
-    80203550:	c0c70713          	addi	a4,a4,-1012 # 8021d158 <bcache+0x4668>
-    80203554:	e4b8                	sd	a4,72(s1)
+    80203868:	0001a717          	auipc	a4,0x1a
+    8020386c:	8f070713          	addi	a4,a4,-1808 # 8021d158 <bcache+0x4668>
+    80203870:	e4b8                	sd	a4,72(s1)
     bcache.head.next->prev = b;
-    80203556:	6b87b703          	ld	a4,1720(a5)
-    8020355a:	e724                	sd	s1,72(a4)
+    80203872:	6b87b703          	ld	a4,1720(a5)
+    80203876:	e724                	sd	s1,72(a4)
     bcache.head.next = b;
-    8020355c:	6a97bc23          	sd	s1,1720(a5)
+    80203878:	6a97bc23          	sd	s1,1720(a5)
   }
   
   release(&bcache.lock);
-    80203560:	00015517          	auipc	a0,0x15
-    80203564:	59050513          	addi	a0,a0,1424 # 80218af0 <bcache>
-    80203568:	ffffd097          	auipc	ra,0xffffd
-    8020356c:	1b2080e7          	jalr	434(ra) # 8020071a <release>
-}
-    80203570:	60e2                	ld	ra,24(sp)
-    80203572:	6442                	ld	s0,16(sp)
-    80203574:	64a2                	ld	s1,8(sp)
-    80203576:	6902                	ld	s2,0(sp)
-    80203578:	6105                	addi	sp,sp,32
-    8020357a:	8082                	ret
+    8020387c:	00015517          	auipc	a0,0x15
+    80203880:	27450513          	addi	a0,a0,628 # 80218af0 <bcache>
+    80203884:	ffffd097          	auipc	ra,0xffffd
+    80203888:	e96080e7          	jalr	-362(ra) # 8020071a <release>
+}
+    8020388c:	60e2                	ld	ra,24(sp)
+    8020388e:	6442                	ld	s0,16(sp)
+    80203890:	64a2                	ld	s1,8(sp)
+    80203892:	6902                	ld	s2,0(sp)
+    80203894:	6105                	addi	sp,sp,32
+    80203896:	8082                	ret
     panic("brelse");
-    8020357c:	00006517          	auipc	a0,0x6
-    80203580:	57c50513          	addi	a0,a0,1404 # 80209af8 <digits+0x778>
-    80203584:	ffffd097          	auipc	ra,0xffffd
-    80203588:	bc0080e7          	jalr	-1088(ra) # 80200144 <panic>
+    80203898:	00006517          	auipc	a0,0x6
+    8020389c:	29850513          	addi	a0,a0,664 # 80209b30 <digits+0x7b0>
+    802038a0:	ffffd097          	auipc	ra,0xffffd
+    802038a4:	8a4080e7          	jalr	-1884(ra) # 80200144 <panic>
 
-000000008020358c <bpin>:
+00000000802038a8 <bpin>:
 
 void
 bpin(struct buf *b) {
-    8020358c:	1101                	addi	sp,sp,-32
-    8020358e:	ec06                	sd	ra,24(sp)
-    80203590:	e822                	sd	s0,16(sp)
-    80203592:	e426                	sd	s1,8(sp)
-    80203594:	1000                	addi	s0,sp,32
-    80203596:	84aa                	mv	s1,a0
+    802038a8:	1101                	addi	sp,sp,-32
+    802038aa:	ec06                	sd	ra,24(sp)
+    802038ac:	e822                	sd	s0,16(sp)
+    802038ae:	e426                	sd	s1,8(sp)
+    802038b0:	1000                	addi	s0,sp,32
+    802038b2:	84aa                	mv	s1,a0
   acquire(&bcache.lock);
-    80203598:	00015517          	auipc	a0,0x15
-    8020359c:	55850513          	addi	a0,a0,1368 # 80218af0 <bcache>
-    802035a0:	ffffd097          	auipc	ra,0xffffd
-    802035a4:	126080e7          	jalr	294(ra) # 802006c6 <acquire>
+    802038b4:	00015517          	auipc	a0,0x15
+    802038b8:	23c50513          	addi	a0,a0,572 # 80218af0 <bcache>
+    802038bc:	ffffd097          	auipc	ra,0xffffd
+    802038c0:	e0a080e7          	jalr	-502(ra) # 802006c6 <acquire>
   b->refcnt++;
-    802035a8:	40bc                	lw	a5,64(s1)
-    802035aa:	2785                	addiw	a5,a5,1
-    802035ac:	c0bc                	sw	a5,64(s1)
+    802038c4:	40bc                	lw	a5,64(s1)
+    802038c6:	2785                	addiw	a5,a5,1
+    802038c8:	c0bc                	sw	a5,64(s1)
   release(&bcache.lock);
-    802035ae:	00015517          	auipc	a0,0x15
-    802035b2:	54250513          	addi	a0,a0,1346 # 80218af0 <bcache>
-    802035b6:	ffffd097          	auipc	ra,0xffffd
-    802035ba:	164080e7          	jalr	356(ra) # 8020071a <release>
+    802038ca:	00015517          	auipc	a0,0x15
+    802038ce:	22650513          	addi	a0,a0,550 # 80218af0 <bcache>
+    802038d2:	ffffd097          	auipc	ra,0xffffd
+    802038d6:	e48080e7          	jalr	-440(ra) # 8020071a <release>
 }
-    802035be:	60e2                	ld	ra,24(sp)
-    802035c0:	6442                	ld	s0,16(sp)
-    802035c2:	64a2                	ld	s1,8(sp)
-    802035c4:	6105                	addi	sp,sp,32
-    802035c6:	8082                	ret
+    802038da:	60e2                	ld	ra,24(sp)
+    802038dc:	6442                	ld	s0,16(sp)
+    802038de:	64a2                	ld	s1,8(sp)
+    802038e0:	6105                	addi	sp,sp,32
+    802038e2:	8082                	ret
 
-00000000802035c8 <bunpin>:
+00000000802038e4 <bunpin>:
 
 void
 bunpin(struct buf *b) {
-    802035c8:	1101                	addi	sp,sp,-32
-    802035ca:	ec06                	sd	ra,24(sp)
-    802035cc:	e822                	sd	s0,16(sp)
-    802035ce:	e426                	sd	s1,8(sp)
-    802035d0:	1000                	addi	s0,sp,32
-    802035d2:	84aa                	mv	s1,a0
+    802038e4:	1101                	addi	sp,sp,-32
+    802038e6:	ec06                	sd	ra,24(sp)
+    802038e8:	e822                	sd	s0,16(sp)
+    802038ea:	e426                	sd	s1,8(sp)
+    802038ec:	1000                	addi	s0,sp,32
+    802038ee:	84aa                	mv	s1,a0
   acquire(&bcache.lock);
-    802035d4:	00015517          	auipc	a0,0x15
-    802035d8:	51c50513          	addi	a0,a0,1308 # 80218af0 <bcache>
-    802035dc:	ffffd097          	auipc	ra,0xffffd
-    802035e0:	0ea080e7          	jalr	234(ra) # 802006c6 <acquire>
+    802038f0:	00015517          	auipc	a0,0x15
+    802038f4:	20050513          	addi	a0,a0,512 # 80218af0 <bcache>
+    802038f8:	ffffd097          	auipc	ra,0xffffd
+    802038fc:	dce080e7          	jalr	-562(ra) # 802006c6 <acquire>
   b->refcnt--;
-    802035e4:	40bc                	lw	a5,64(s1)
-    802035e6:	37fd                	addiw	a5,a5,-1
-    802035e8:	c0bc                	sw	a5,64(s1)
+    80203900:	40bc                	lw	a5,64(s1)
+    80203902:	37fd                	addiw	a5,a5,-1
+    80203904:	c0bc                	sw	a5,64(s1)
   release(&bcache.lock);
-    802035ea:	00015517          	auipc	a0,0x15
-    802035ee:	50650513          	addi	a0,a0,1286 # 80218af0 <bcache>
-    802035f2:	ffffd097          	auipc	ra,0xffffd
-    802035f6:	128080e7          	jalr	296(ra) # 8020071a <release>
-}
-    802035fa:	60e2                	ld	ra,24(sp)
-    802035fc:	6442                	ld	s0,16(sp)
-    802035fe:	64a2                	ld	s1,8(sp)
-    80203600:	6105                	addi	sp,sp,32
-    80203602:	8082                	ret
-
-0000000080203604 <initsleeplock>:
+    80203906:	00015517          	auipc	a0,0x15
+    8020390a:	1ea50513          	addi	a0,a0,490 # 80218af0 <bcache>
+    8020390e:	ffffd097          	auipc	ra,0xffffd
+    80203912:	e0c080e7          	jalr	-500(ra) # 8020071a <release>
+}
+    80203916:	60e2                	ld	ra,24(sp)
+    80203918:	6442                	ld	s0,16(sp)
+    8020391a:	64a2                	ld	s1,8(sp)
+    8020391c:	6105                	addi	sp,sp,32
+    8020391e:	8082                	ret
+
+0000000080203920 <initsleeplock>:
 #include "include/proc.h"
 #include "include/sleeplock.h"
 
 void
 initsleeplock(struct sleeplock *lk, char *name)
 {
-    80203604:	1101                	addi	sp,sp,-32
-    80203606:	ec06                	sd	ra,24(sp)
-    80203608:	e822                	sd	s0,16(sp)
-    8020360a:	e426                	sd	s1,8(sp)
-    8020360c:	e04a                	sd	s2,0(sp)
-    8020360e:	1000                	addi	s0,sp,32
-    80203610:	84aa                	mv	s1,a0
-    80203612:	892e                	mv	s2,a1
+    80203920:	1101                	addi	sp,sp,-32
+    80203922:	ec06                	sd	ra,24(sp)
+    80203924:	e822                	sd	s0,16(sp)
+    80203926:	e426                	sd	s1,8(sp)
+    80203928:	e04a                	sd	s2,0(sp)
+    8020392a:	1000                	addi	s0,sp,32
+    8020392c:	84aa                	mv	s1,a0
+    8020392e:	892e                	mv	s2,a1
   initlock(&lk->lk, "sleep lock");
-    80203614:	00006597          	auipc	a1,0x6
-    80203618:	4ec58593          	addi	a1,a1,1260 # 80209b00 <digits+0x780>
-    8020361c:	0521                	addi	a0,a0,8
-    8020361e:	ffffd097          	auipc	ra,0xffffd
-    80203622:	064080e7          	jalr	100(ra) # 80200682 <initlock>
+    80203930:	00006597          	auipc	a1,0x6
+    80203934:	20858593          	addi	a1,a1,520 # 80209b38 <digits+0x7b8>
+    80203938:	0521                	addi	a0,a0,8
+    8020393a:	ffffd097          	auipc	ra,0xffffd
+    8020393e:	d48080e7          	jalr	-696(ra) # 80200682 <initlock>
   lk->name = name;
-    80203626:	0324b023          	sd	s2,32(s1)
+    80203942:	0324b023          	sd	s2,32(s1)
   lk->locked = 0;
-    8020362a:	0004a023          	sw	zero,0(s1)
+    80203946:	0004a023          	sw	zero,0(s1)
   lk->pid = 0;
-    8020362e:	0204a423          	sw	zero,40(s1)
+    8020394a:	0204a423          	sw	zero,40(s1)
 }
-    80203632:	60e2                	ld	ra,24(sp)
-    80203634:	6442                	ld	s0,16(sp)
-    80203636:	64a2                	ld	s1,8(sp)
-    80203638:	6902                	ld	s2,0(sp)
-    8020363a:	6105                	addi	sp,sp,32
-    8020363c:	8082                	ret
+    8020394e:	60e2                	ld	ra,24(sp)
+    80203950:	6442                	ld	s0,16(sp)
+    80203952:	64a2                	ld	s1,8(sp)
+    80203954:	6902                	ld	s2,0(sp)
+    80203956:	6105                	addi	sp,sp,32
+    80203958:	8082                	ret
 
-000000008020363e <acquiresleep>:
+000000008020395a <acquiresleep>:
 
 void
 acquiresleep(struct sleeplock *lk)
 {
-    8020363e:	1101                	addi	sp,sp,-32
-    80203640:	ec06                	sd	ra,24(sp)
-    80203642:	e822                	sd	s0,16(sp)
-    80203644:	e426                	sd	s1,8(sp)
-    80203646:	e04a                	sd	s2,0(sp)
-    80203648:	1000                	addi	s0,sp,32
-    8020364a:	84aa                	mv	s1,a0
+    8020395a:	1101                	addi	sp,sp,-32
+    8020395c:	ec06                	sd	ra,24(sp)
+    8020395e:	e822                	sd	s0,16(sp)
+    80203960:	e426                	sd	s1,8(sp)
+    80203962:	e04a                	sd	s2,0(sp)
+    80203964:	1000                	addi	s0,sp,32
+    80203966:	84aa                	mv	s1,a0
   acquire(&lk->lk);
-    8020364c:	00850913          	addi	s2,a0,8
-    80203650:	854a                	mv	a0,s2
-    80203652:	ffffd097          	auipc	ra,0xffffd
-    80203656:	074080e7          	jalr	116(ra) # 802006c6 <acquire>
+    80203968:	00850913          	addi	s2,a0,8
+    8020396c:	854a                	mv	a0,s2
+    8020396e:	ffffd097          	auipc	ra,0xffffd
+    80203972:	d58080e7          	jalr	-680(ra) # 802006c6 <acquire>
   while (lk->locked) {
-    8020365a:	409c                	lw	a5,0(s1)
-    8020365c:	cb89                	beqz	a5,8020366e <acquiresleep+0x30>
+    80203976:	409c                	lw	a5,0(s1)
+    80203978:	cb89                	beqz	a5,8020398a <acquiresleep+0x30>
     sleep(lk, &lk->lk);
-    8020365e:	85ca                	mv	a1,s2
-    80203660:	8526                	mv	a0,s1
-    80203662:	fffff097          	auipc	ra,0xfffff
-    80203666:	c5a080e7          	jalr	-934(ra) # 802022bc <sleep>
+    8020397a:	85ca                	mv	a1,s2
+    8020397c:	8526                	mv	a0,s1
+    8020397e:	fffff097          	auipc	ra,0xfffff
+    80203982:	93e080e7          	jalr	-1730(ra) # 802022bc <sleep>
   while (lk->locked) {
-    8020366a:	409c                	lw	a5,0(s1)
-    8020366c:	fbed                	bnez	a5,8020365e <acquiresleep+0x20>
+    80203986:	409c                	lw	a5,0(s1)
+    80203988:	fbed                	bnez	a5,8020397a <acquiresleep+0x20>
   }
   lk->locked = 1;
-    8020366e:	4785                	li	a5,1
-    80203670:	c09c                	sw	a5,0(s1)
+    8020398a:	4785                	li	a5,1
+    8020398c:	c09c                	sw	a5,0(s1)
   lk->pid = myproc()->pid;
-    80203672:	ffffe097          	auipc	ra,0xffffe
-    80203676:	3ca080e7          	jalr	970(ra) # 80201a3c <myproc>
-    8020367a:	5d1c                	lw	a5,56(a0)
-    8020367c:	d49c                	sw	a5,40(s1)
+    8020398e:	ffffe097          	auipc	ra,0xffffe
+    80203992:	0ae080e7          	jalr	174(ra) # 80201a3c <myproc>
+    80203996:	5d1c                	lw	a5,56(a0)
+    80203998:	d49c                	sw	a5,40(s1)
   release(&lk->lk);
-    8020367e:	854a                	mv	a0,s2
-    80203680:	ffffd097          	auipc	ra,0xffffd
-    80203684:	09a080e7          	jalr	154(ra) # 8020071a <release>
+    8020399a:	854a                	mv	a0,s2
+    8020399c:	ffffd097          	auipc	ra,0xffffd
+    802039a0:	d7e080e7          	jalr	-642(ra) # 8020071a <release>
 }
-    80203688:	60e2                	ld	ra,24(sp)
-    8020368a:	6442                	ld	s0,16(sp)
-    8020368c:	64a2                	ld	s1,8(sp)
-    8020368e:	6902                	ld	s2,0(sp)
-    80203690:	6105                	addi	sp,sp,32
-    80203692:	8082                	ret
+    802039a4:	60e2                	ld	ra,24(sp)
+    802039a6:	6442                	ld	s0,16(sp)
+    802039a8:	64a2                	ld	s1,8(sp)
+    802039aa:	6902                	ld	s2,0(sp)
+    802039ac:	6105                	addi	sp,sp,32
+    802039ae:	8082                	ret
 
-0000000080203694 <releasesleep>:
+00000000802039b0 <releasesleep>:
 
 void
 releasesleep(struct sleeplock *lk)
 {
-    80203694:	1101                	addi	sp,sp,-32
-    80203696:	ec06                	sd	ra,24(sp)
-    80203698:	e822                	sd	s0,16(sp)
-    8020369a:	e426                	sd	s1,8(sp)
-    8020369c:	e04a                	sd	s2,0(sp)
-    8020369e:	1000                	addi	s0,sp,32
-    802036a0:	84aa                	mv	s1,a0
+    802039b0:	1101                	addi	sp,sp,-32
+    802039b2:	ec06                	sd	ra,24(sp)
+    802039b4:	e822                	sd	s0,16(sp)
+    802039b6:	e426                	sd	s1,8(sp)
+    802039b8:	e04a                	sd	s2,0(sp)
+    802039ba:	1000                	addi	s0,sp,32
+    802039bc:	84aa                	mv	s1,a0
   acquire(&lk->lk);
-    802036a2:	00850913          	addi	s2,a0,8
-    802036a6:	854a                	mv	a0,s2
-    802036a8:	ffffd097          	auipc	ra,0xffffd
-    802036ac:	01e080e7          	jalr	30(ra) # 802006c6 <acquire>
+    802039be:	00850913          	addi	s2,a0,8
+    802039c2:	854a                	mv	a0,s2
+    802039c4:	ffffd097          	auipc	ra,0xffffd
+    802039c8:	d02080e7          	jalr	-766(ra) # 802006c6 <acquire>
   lk->locked = 0;
-    802036b0:	0004a023          	sw	zero,0(s1)
+    802039cc:	0004a023          	sw	zero,0(s1)
   lk->pid = 0;
-    802036b4:	0204a423          	sw	zero,40(s1)
+    802039d0:	0204a423          	sw	zero,40(s1)
   wakeup(lk);
-    802036b8:	8526                	mv	a0,s1
-    802036ba:	fffff097          	auipc	ra,0xfffff
-    802036be:	d7e080e7          	jalr	-642(ra) # 80202438 <wakeup>
+    802039d4:	8526                	mv	a0,s1
+    802039d6:	fffff097          	auipc	ra,0xfffff
+    802039da:	a62080e7          	jalr	-1438(ra) # 80202438 <wakeup>
   release(&lk->lk);
-    802036c2:	854a                	mv	a0,s2
-    802036c4:	ffffd097          	auipc	ra,0xffffd
-    802036c8:	056080e7          	jalr	86(ra) # 8020071a <release>
+    802039de:	854a                	mv	a0,s2
+    802039e0:	ffffd097          	auipc	ra,0xffffd
+    802039e4:	d3a080e7          	jalr	-710(ra) # 8020071a <release>
 }
-    802036cc:	60e2                	ld	ra,24(sp)
-    802036ce:	6442                	ld	s0,16(sp)
-    802036d0:	64a2                	ld	s1,8(sp)
-    802036d2:	6902                	ld	s2,0(sp)
-    802036d4:	6105                	addi	sp,sp,32
-    802036d6:	8082                	ret
+    802039e8:	60e2                	ld	ra,24(sp)
+    802039ea:	6442                	ld	s0,16(sp)
+    802039ec:	64a2                	ld	s1,8(sp)
+    802039ee:	6902                	ld	s2,0(sp)
+    802039f0:	6105                	addi	sp,sp,32
+    802039f2:	8082                	ret
 
-00000000802036d8 <holdingsleep>:
+00000000802039f4 <holdingsleep>:
 
 int
 holdingsleep(struct sleeplock *lk)
 {
-    802036d8:	7179                	addi	sp,sp,-48
-    802036da:	f406                	sd	ra,40(sp)
-    802036dc:	f022                	sd	s0,32(sp)
-    802036de:	ec26                	sd	s1,24(sp)
-    802036e0:	e84a                	sd	s2,16(sp)
-    802036e2:	e44e                	sd	s3,8(sp)
-    802036e4:	1800                	addi	s0,sp,48
-    802036e6:	84aa                	mv	s1,a0
+    802039f4:	7179                	addi	sp,sp,-48
+    802039f6:	f406                	sd	ra,40(sp)
+    802039f8:	f022                	sd	s0,32(sp)
+    802039fa:	ec26                	sd	s1,24(sp)
+    802039fc:	e84a                	sd	s2,16(sp)
+    802039fe:	e44e                	sd	s3,8(sp)
+    80203a00:	1800                	addi	s0,sp,48
+    80203a02:	84aa                	mv	s1,a0
   int r;
   
   acquire(&lk->lk);
-    802036e8:	00850913          	addi	s2,a0,8
-    802036ec:	854a                	mv	a0,s2
-    802036ee:	ffffd097          	auipc	ra,0xffffd
-    802036f2:	fd8080e7          	jalr	-40(ra) # 802006c6 <acquire>
+    80203a04:	00850913          	addi	s2,a0,8
+    80203a08:	854a                	mv	a0,s2
+    80203a0a:	ffffd097          	auipc	ra,0xffffd
+    80203a0e:	cbc080e7          	jalr	-836(ra) # 802006c6 <acquire>
   r = lk->locked && (lk->pid == myproc()->pid);
-    802036f6:	409c                	lw	a5,0(s1)
-    802036f8:	ef99                	bnez	a5,80203716 <holdingsleep+0x3e>
-    802036fa:	4481                	li	s1,0
+    80203a12:	409c                	lw	a5,0(s1)
+    80203a14:	ef99                	bnez	a5,80203a32 <holdingsleep+0x3e>
+    80203a16:	4481                	li	s1,0
   release(&lk->lk);
-    802036fc:	854a                	mv	a0,s2
-    802036fe:	ffffd097          	auipc	ra,0xffffd
-    80203702:	01c080e7          	jalr	28(ra) # 8020071a <release>
+    80203a18:	854a                	mv	a0,s2
+    80203a1a:	ffffd097          	auipc	ra,0xffffd
+    80203a1e:	d00080e7          	jalr	-768(ra) # 8020071a <release>
   return r;
 }
-    80203706:	8526                	mv	a0,s1
-    80203708:	70a2                	ld	ra,40(sp)
-    8020370a:	7402                	ld	s0,32(sp)
-    8020370c:	64e2                	ld	s1,24(sp)
-    8020370e:	6942                	ld	s2,16(sp)
-    80203710:	69a2                	ld	s3,8(sp)
-    80203712:	6145                	addi	sp,sp,48
-    80203714:	8082                	ret
+    80203a22:	8526                	mv	a0,s1
+    80203a24:	70a2                	ld	ra,40(sp)
+    80203a26:	7402                	ld	s0,32(sp)
+    80203a28:	64e2                	ld	s1,24(sp)
+    80203a2a:	6942                	ld	s2,16(sp)
+    80203a2c:	69a2                	ld	s3,8(sp)
+    80203a2e:	6145                	addi	sp,sp,48
+    80203a30:	8082                	ret
   r = lk->locked && (lk->pid == myproc()->pid);
-    80203716:	0284a983          	lw	s3,40(s1)
-    8020371a:	ffffe097          	auipc	ra,0xffffe
-    8020371e:	322080e7          	jalr	802(ra) # 80201a3c <myproc>
-    80203722:	5d04                	lw	s1,56(a0)
-    80203724:	413484b3          	sub	s1,s1,s3
-    80203728:	0014b493          	seqz	s1,s1
-    8020372c:	bfc1                	j	802036fc <holdingsleep+0x24>
-
-000000008020372e <fileinit>:
+    80203a32:	0284a983          	lw	s3,40(s1)
+    80203a36:	ffffe097          	auipc	ra,0xffffe
+    80203a3a:	006080e7          	jalr	6(ra) # 80201a3c <myproc>
+    80203a3e:	5d04                	lw	s1,56(a0)
+    80203a40:	413484b3          	sub	s1,s1,s3
+    80203a44:	0014b493          	seqz	s1,s1
+    80203a48:	bfc1                	j	80203a18 <holdingsleep+0x24>
+
+0000000080203a4a <fileinit>:
   struct file file[NFILE];
 } ftable;
 
 void
 fileinit(void)
 {
-    8020372e:	1101                	addi	sp,sp,-32
-    80203730:	ec06                	sd	ra,24(sp)
-    80203732:	e822                	sd	s0,16(sp)
-    80203734:	e426                	sd	s1,8(sp)
-    80203736:	e04a                	sd	s2,0(sp)
-    80203738:	1000                	addi	s0,sp,32
+    80203a4a:	1101                	addi	sp,sp,-32
+    80203a4c:	ec06                	sd	ra,24(sp)
+    80203a4e:	e822                	sd	s0,16(sp)
+    80203a50:	e426                	sd	s1,8(sp)
+    80203a52:	e04a                	sd	s2,0(sp)
+    80203a54:	1000                	addi	s0,sp,32
   initlock(&ftable.lock, "ftable");
-    8020373a:	00006597          	auipc	a1,0x6
-    8020373e:	3d658593          	addi	a1,a1,982 # 80209b10 <digits+0x790>
-    80203742:	0001a517          	auipc	a0,0x1a
-    80203746:	d0e50513          	addi	a0,a0,-754 # 8021d450 <ftable>
-    8020374a:	ffffd097          	auipc	ra,0xffffd
-    8020374e:	f38080e7          	jalr	-200(ra) # 80200682 <initlock>
+    80203a56:	00006597          	auipc	a1,0x6
+    80203a5a:	0f258593          	addi	a1,a1,242 # 80209b48 <digits+0x7c8>
+    80203a5e:	0001a517          	auipc	a0,0x1a
+    80203a62:	9f250513          	addi	a0,a0,-1550 # 8021d450 <ftable>
+    80203a66:	ffffd097          	auipc	ra,0xffffd
+    80203a6a:	c1c080e7          	jalr	-996(ra) # 80200682 <initlock>
   struct file *f;
   for(f = ftable.file; f < ftable.file + NFILE; f++){
-    80203752:	0001a497          	auipc	s1,0x1a
-    80203756:	d1648493          	addi	s1,s1,-746 # 8021d468 <ftable+0x18>
-    8020375a:	0001b917          	auipc	s2,0x1b
-    8020375e:	cae90913          	addi	s2,s2,-850 # 8021e408 <tickslock>
+    80203a6e:	0001a497          	auipc	s1,0x1a
+    80203a72:	9fa48493          	addi	s1,s1,-1542 # 8021d468 <ftable+0x18>
+    80203a76:	0001b917          	auipc	s2,0x1b
+    80203a7a:	99290913          	addi	s2,s2,-1646 # 8021e408 <tickslock>
     memset(f, 0, sizeof(struct file));
-    80203762:	02800613          	li	a2,40
-    80203766:	4581                	li	a1,0
-    80203768:	8526                	mv	a0,s1
-    8020376a:	ffffd097          	auipc	ra,0xffffd
-    8020376e:	ff8080e7          	jalr	-8(ra) # 80200762 <memset>
+    80203a7e:	02800613          	li	a2,40
+    80203a82:	4581                	li	a1,0
+    80203a84:	8526                	mv	a0,s1
+    80203a86:	ffffd097          	auipc	ra,0xffffd
+    80203a8a:	cdc080e7          	jalr	-804(ra) # 80200762 <memset>
   for(f = ftable.file; f < ftable.file + NFILE; f++){
-    80203772:	02848493          	addi	s1,s1,40
-    80203776:	ff2496e3          	bne	s1,s2,80203762 <fileinit+0x34>
+    80203a8e:	02848493          	addi	s1,s1,40
+    80203a92:	ff2496e3          	bne	s1,s2,80203a7e <fileinit+0x34>
   }
   #ifdef DEBUG
   printf("fileinit\n");
   #endif
 }
-    8020377a:	60e2                	ld	ra,24(sp)
-    8020377c:	6442                	ld	s0,16(sp)
-    8020377e:	64a2                	ld	s1,8(sp)
-    80203780:	6902                	ld	s2,0(sp)
-    80203782:	6105                	addi	sp,sp,32
-    80203784:	8082                	ret
+    80203a96:	60e2                	ld	ra,24(sp)
+    80203a98:	6442                	ld	s0,16(sp)
+    80203a9a:	64a2                	ld	s1,8(sp)
+    80203a9c:	6902                	ld	s2,0(sp)
+    80203a9e:	6105                	addi	sp,sp,32
+    80203aa0:	8082                	ret
 
-0000000080203786 <filealloc>:
+0000000080203aa2 <filealloc>:
 
 // Allocate a file structure.
 struct file*
 filealloc(void)
 {
-    80203786:	1101                	addi	sp,sp,-32
-    80203788:	ec06                	sd	ra,24(sp)
-    8020378a:	e822                	sd	s0,16(sp)
-    8020378c:	e426                	sd	s1,8(sp)
-    8020378e:	1000                	addi	s0,sp,32
+    80203aa2:	1101                	addi	sp,sp,-32
+    80203aa4:	ec06                	sd	ra,24(sp)
+    80203aa6:	e822                	sd	s0,16(sp)
+    80203aa8:	e426                	sd	s1,8(sp)
+    80203aaa:	1000                	addi	s0,sp,32
   struct file *f;
 
   acquire(&ftable.lock);
-    80203790:	0001a517          	auipc	a0,0x1a
-    80203794:	cc050513          	addi	a0,a0,-832 # 8021d450 <ftable>
-    80203798:	ffffd097          	auipc	ra,0xffffd
-    8020379c:	f2e080e7          	jalr	-210(ra) # 802006c6 <acquire>
+    80203aac:	0001a517          	auipc	a0,0x1a
+    80203ab0:	9a450513          	addi	a0,a0,-1628 # 8021d450 <ftable>
+    80203ab4:	ffffd097          	auipc	ra,0xffffd
+    80203ab8:	c12080e7          	jalr	-1006(ra) # 802006c6 <acquire>
   for(f = ftable.file; f < ftable.file + NFILE; f++){
-    802037a0:	0001a497          	auipc	s1,0x1a
-    802037a4:	cc848493          	addi	s1,s1,-824 # 8021d468 <ftable+0x18>
-    802037a8:	0001b717          	auipc	a4,0x1b
-    802037ac:	c6070713          	addi	a4,a4,-928 # 8021e408 <tickslock>
+    80203abc:	0001a497          	auipc	s1,0x1a
+    80203ac0:	9ac48493          	addi	s1,s1,-1620 # 8021d468 <ftable+0x18>
+    80203ac4:	0001b717          	auipc	a4,0x1b
+    80203ac8:	94470713          	addi	a4,a4,-1724 # 8021e408 <tickslock>
     if(f->ref == 0){
-    802037b0:	40dc                	lw	a5,4(s1)
-    802037b2:	cf99                	beqz	a5,802037d0 <filealloc+0x4a>
+    80203acc:	40dc                	lw	a5,4(s1)
+    80203ace:	cf99                	beqz	a5,80203aec <filealloc+0x4a>
   for(f = ftable.file; f < ftable.file + NFILE; f++){
-    802037b4:	02848493          	addi	s1,s1,40
-    802037b8:	fee49ce3          	bne	s1,a4,802037b0 <filealloc+0x2a>
+    80203ad0:	02848493          	addi	s1,s1,40
+    80203ad4:	fee49ce3          	bne	s1,a4,80203acc <filealloc+0x2a>
       f->ref = 1;
       release(&ftable.lock);
       return f;
     }
   }
   release(&ftable.lock);
-    802037bc:	0001a517          	auipc	a0,0x1a
-    802037c0:	c9450513          	addi	a0,a0,-876 # 8021d450 <ftable>
-    802037c4:	ffffd097          	auipc	ra,0xffffd
-    802037c8:	f56080e7          	jalr	-170(ra) # 8020071a <release>
+    80203ad8:	0001a517          	auipc	a0,0x1a
+    80203adc:	97850513          	addi	a0,a0,-1672 # 8021d450 <ftable>
+    80203ae0:	ffffd097          	auipc	ra,0xffffd
+    80203ae4:	c3a080e7          	jalr	-966(ra) # 8020071a <release>
   return NULL;
-    802037cc:	4481                	li	s1,0
-    802037ce:	a819                	j	802037e4 <filealloc+0x5e>
+    80203ae8:	4481                	li	s1,0
+    80203aea:	a819                	j	80203b00 <filealloc+0x5e>
       f->ref = 1;
-    802037d0:	4785                	li	a5,1
-    802037d2:	c0dc                	sw	a5,4(s1)
+    80203aec:	4785                	li	a5,1
+    80203aee:	c0dc                	sw	a5,4(s1)
       release(&ftable.lock);
-    802037d4:	0001a517          	auipc	a0,0x1a
-    802037d8:	c7c50513          	addi	a0,a0,-900 # 8021d450 <ftable>
-    802037dc:	ffffd097          	auipc	ra,0xffffd
-    802037e0:	f3e080e7          	jalr	-194(ra) # 8020071a <release>
+    80203af0:	0001a517          	auipc	a0,0x1a
+    80203af4:	96050513          	addi	a0,a0,-1696 # 8021d450 <ftable>
+    80203af8:	ffffd097          	auipc	ra,0xffffd
+    80203afc:	c22080e7          	jalr	-990(ra) # 8020071a <release>
 }
-    802037e4:	8526                	mv	a0,s1
-    802037e6:	60e2                	ld	ra,24(sp)
-    802037e8:	6442                	ld	s0,16(sp)
-    802037ea:	64a2                	ld	s1,8(sp)
-    802037ec:	6105                	addi	sp,sp,32
-    802037ee:	8082                	ret
+    80203b00:	8526                	mv	a0,s1
+    80203b02:	60e2                	ld	ra,24(sp)
+    80203b04:	6442                	ld	s0,16(sp)
+    80203b06:	64a2                	ld	s1,8(sp)
+    80203b08:	6105                	addi	sp,sp,32
+    80203b0a:	8082                	ret
 
-00000000802037f0 <filedup>:
+0000000080203b0c <filedup>:
 
 // Increment ref count for file f.
 struct file*
 filedup(struct file *f)
 {
-    802037f0:	1101                	addi	sp,sp,-32
-    802037f2:	ec06                	sd	ra,24(sp)
-    802037f4:	e822                	sd	s0,16(sp)
-    802037f6:	e426                	sd	s1,8(sp)
-    802037f8:	1000                	addi	s0,sp,32
-    802037fa:	84aa                	mv	s1,a0
+    80203b0c:	1101                	addi	sp,sp,-32
+    80203b0e:	ec06                	sd	ra,24(sp)
+    80203b10:	e822                	sd	s0,16(sp)
+    80203b12:	e426                	sd	s1,8(sp)
+    80203b14:	1000                	addi	s0,sp,32
+    80203b16:	84aa                	mv	s1,a0
   acquire(&ftable.lock);
-    802037fc:	0001a517          	auipc	a0,0x1a
-    80203800:	c5450513          	addi	a0,a0,-940 # 8021d450 <ftable>
-    80203804:	ffffd097          	auipc	ra,0xffffd
-    80203808:	ec2080e7          	jalr	-318(ra) # 802006c6 <acquire>
+    80203b18:	0001a517          	auipc	a0,0x1a
+    80203b1c:	93850513          	addi	a0,a0,-1736 # 8021d450 <ftable>
+    80203b20:	ffffd097          	auipc	ra,0xffffd
+    80203b24:	ba6080e7          	jalr	-1114(ra) # 802006c6 <acquire>
   if(f->ref < 1)
-    8020380c:	40dc                	lw	a5,4(s1)
-    8020380e:	02f05263          	blez	a5,80203832 <filedup+0x42>
+    80203b28:	40dc                	lw	a5,4(s1)
+    80203b2a:	02f05263          	blez	a5,80203b4e <filedup+0x42>
     panic("filedup");
   f->ref++;
-    80203812:	2785                	addiw	a5,a5,1
-    80203814:	c0dc                	sw	a5,4(s1)
+    80203b2e:	2785                	addiw	a5,a5,1
+    80203b30:	c0dc                	sw	a5,4(s1)
   release(&ftable.lock);
-    80203816:	0001a517          	auipc	a0,0x1a
-    8020381a:	c3a50513          	addi	a0,a0,-966 # 8021d450 <ftable>
-    8020381e:	ffffd097          	auipc	ra,0xffffd
-    80203822:	efc080e7          	jalr	-260(ra) # 8020071a <release>
+    80203b32:	0001a517          	auipc	a0,0x1a
+    80203b36:	91e50513          	addi	a0,a0,-1762 # 8021d450 <ftable>
+    80203b3a:	ffffd097          	auipc	ra,0xffffd
+    80203b3e:	be0080e7          	jalr	-1056(ra) # 8020071a <release>
   return f;
 }
-    80203826:	8526                	mv	a0,s1
-    80203828:	60e2                	ld	ra,24(sp)
-    8020382a:	6442                	ld	s0,16(sp)
-    8020382c:	64a2                	ld	s1,8(sp)
-    8020382e:	6105                	addi	sp,sp,32
-    80203830:	8082                	ret
+    80203b42:	8526                	mv	a0,s1
+    80203b44:	60e2                	ld	ra,24(sp)
+    80203b46:	6442                	ld	s0,16(sp)
+    80203b48:	64a2                	ld	s1,8(sp)
+    80203b4a:	6105                	addi	sp,sp,32
+    80203b4c:	8082                	ret
     panic("filedup");
-    80203832:	00006517          	auipc	a0,0x6
-    80203836:	2e650513          	addi	a0,a0,742 # 80209b18 <digits+0x798>
-    8020383a:	ffffd097          	auipc	ra,0xffffd
-    8020383e:	90a080e7          	jalr	-1782(ra) # 80200144 <panic>
+    80203b4e:	00006517          	auipc	a0,0x6
+    80203b52:	00250513          	addi	a0,a0,2 # 80209b50 <digits+0x7d0>
+    80203b56:	ffffc097          	auipc	ra,0xffffc
+    80203b5a:	5ee080e7          	jalr	1518(ra) # 80200144 <panic>
 
-0000000080203842 <fileclose>:
+0000000080203b5e <fileclose>:
 
 // Close file f.  (Decrement ref count, close when reaches 0.)
 void
 fileclose(struct file *f)
 {
-    80203842:	7139                	addi	sp,sp,-64
-    80203844:	fc06                	sd	ra,56(sp)
-    80203846:	f822                	sd	s0,48(sp)
-    80203848:	f426                	sd	s1,40(sp)
-    8020384a:	f04a                	sd	s2,32(sp)
-    8020384c:	ec4e                	sd	s3,24(sp)
-    8020384e:	e852                	sd	s4,16(sp)
-    80203850:	e456                	sd	s5,8(sp)
-    80203852:	0080                	addi	s0,sp,64
-    80203854:	84aa                	mv	s1,a0
+    80203b5e:	7139                	addi	sp,sp,-64
+    80203b60:	fc06                	sd	ra,56(sp)
+    80203b62:	f822                	sd	s0,48(sp)
+    80203b64:	f426                	sd	s1,40(sp)
+    80203b66:	f04a                	sd	s2,32(sp)
+    80203b68:	ec4e                	sd	s3,24(sp)
+    80203b6a:	e852                	sd	s4,16(sp)
+    80203b6c:	e456                	sd	s5,8(sp)
+    80203b6e:	0080                	addi	s0,sp,64
+    80203b70:	84aa                	mv	s1,a0
   struct file ff;
 
   acquire(&ftable.lock);
-    80203856:	0001a517          	auipc	a0,0x1a
-    8020385a:	bfa50513          	addi	a0,a0,-1030 # 8021d450 <ftable>
-    8020385e:	ffffd097          	auipc	ra,0xffffd
-    80203862:	e68080e7          	jalr	-408(ra) # 802006c6 <acquire>
+    80203b72:	0001a517          	auipc	a0,0x1a
+    80203b76:	8de50513          	addi	a0,a0,-1826 # 8021d450 <ftable>
+    80203b7a:	ffffd097          	auipc	ra,0xffffd
+    80203b7e:	b4c080e7          	jalr	-1204(ra) # 802006c6 <acquire>
   if(f->ref < 1)
-    80203866:	40dc                	lw	a5,4(s1)
-    80203868:	04f05863          	blez	a5,802038b8 <fileclose+0x76>
+    80203b82:	40dc                	lw	a5,4(s1)
+    80203b84:	04f05863          	blez	a5,80203bd4 <fileclose+0x76>
     panic("fileclose");
   if(--f->ref > 0){
-    8020386c:	37fd                	addiw	a5,a5,-1
-    8020386e:	0007871b          	sext.w	a4,a5
-    80203872:	c0dc                	sw	a5,4(s1)
-    80203874:	04e04a63          	bgtz	a4,802038c8 <fileclose+0x86>
+    80203b88:	37fd                	addiw	a5,a5,-1
+    80203b8a:	0007871b          	sext.w	a4,a5
+    80203b8e:	c0dc                	sw	a5,4(s1)
+    80203b90:	04e04a63          	bgtz	a4,80203be4 <fileclose+0x86>
     release(&ftable.lock);
     return;
   }
   ff = *f;
-    80203878:	0004a903          	lw	s2,0(s1)
-    8020387c:	0094ca03          	lbu	s4,9(s1)
-    80203880:	0104b983          	ld	s3,16(s1)
-    80203884:	0184ba83          	ld	s5,24(s1)
+    80203b94:	0004a903          	lw	s2,0(s1)
+    80203b98:	0094ca03          	lbu	s4,9(s1)
+    80203b9c:	0104b983          	ld	s3,16(s1)
+    80203ba0:	0184ba83          	ld	s5,24(s1)
   f->ref = 0;
-    80203888:	0004a223          	sw	zero,4(s1)
+    80203ba4:	0004a223          	sw	zero,4(s1)
   f->type = FD_NONE;
-    8020388c:	0004a023          	sw	zero,0(s1)
+    80203ba8:	0004a023          	sw	zero,0(s1)
   release(&ftable.lock);
-    80203890:	0001a517          	auipc	a0,0x1a
-    80203894:	bc050513          	addi	a0,a0,-1088 # 8021d450 <ftable>
-    80203898:	ffffd097          	auipc	ra,0xffffd
-    8020389c:	e82080e7          	jalr	-382(ra) # 8020071a <release>
+    80203bac:	0001a517          	auipc	a0,0x1a
+    80203bb0:	8a450513          	addi	a0,a0,-1884 # 8021d450 <ftable>
+    80203bb4:	ffffd097          	auipc	ra,0xffffd
+    80203bb8:	b66080e7          	jalr	-1178(ra) # 8020071a <release>
 
   if(ff.type == FD_PIPE){
-    802038a0:	4785                	li	a5,1
-    802038a2:	04f90463          	beq	s2,a5,802038ea <fileclose+0xa8>
+    80203bbc:	4785                	li	a5,1
+    80203bbe:	04f90463          	beq	s2,a5,80203c06 <fileclose+0xa8>
     pipeclose(ff.pipe, ff.writable);
   } else if(ff.type == FD_ENTRY){
-    802038a6:	4789                	li	a5,2
-    802038a8:	02f91863          	bne	s2,a5,802038d8 <fileclose+0x96>
+    80203bc2:	4789                	li	a5,2
+    80203bc4:	02f91863          	bne	s2,a5,80203bf4 <fileclose+0x96>
     eput(ff.ep);
-    802038ac:	8556                	mv	a0,s5
-    802038ae:	00003097          	auipc	ra,0x3
-    802038b2:	a14080e7          	jalr	-1516(ra) # 802062c2 <eput>
-    802038b6:	a00d                	j	802038d8 <fileclose+0x96>
+    80203bc8:	8556                	mv	a0,s5
+    80203bca:	00003097          	auipc	ra,0x3
+    80203bce:	a48080e7          	jalr	-1464(ra) # 80206612 <eput>
+    80203bd2:	a00d                	j	80203bf4 <fileclose+0x96>
     panic("fileclose");
-    802038b8:	00006517          	auipc	a0,0x6
-    802038bc:	26850513          	addi	a0,a0,616 # 80209b20 <digits+0x7a0>
-    802038c0:	ffffd097          	auipc	ra,0xffffd
-    802038c4:	884080e7          	jalr	-1916(ra) # 80200144 <panic>
+    80203bd4:	00006517          	auipc	a0,0x6
+    80203bd8:	f8450513          	addi	a0,a0,-124 # 80209b58 <digits+0x7d8>
+    80203bdc:	ffffc097          	auipc	ra,0xffffc
+    80203be0:	568080e7          	jalr	1384(ra) # 80200144 <panic>
     release(&ftable.lock);
-    802038c8:	0001a517          	auipc	a0,0x1a
-    802038cc:	b8850513          	addi	a0,a0,-1144 # 8021d450 <ftable>
-    802038d0:	ffffd097          	auipc	ra,0xffffd
-    802038d4:	e4a080e7          	jalr	-438(ra) # 8020071a <release>
+    80203be4:	0001a517          	auipc	a0,0x1a
+    80203be8:	86c50513          	addi	a0,a0,-1940 # 8021d450 <ftable>
+    80203bec:	ffffd097          	auipc	ra,0xffffd
+    80203bf0:	b2e080e7          	jalr	-1234(ra) # 8020071a <release>
   } else if (ff.type == FD_DEVICE) {
 
   }
 }
-    802038d8:	70e2                	ld	ra,56(sp)
-    802038da:	7442                	ld	s0,48(sp)
-    802038dc:	74a2                	ld	s1,40(sp)
-    802038de:	7902                	ld	s2,32(sp)
-    802038e0:	69e2                	ld	s3,24(sp)
-    802038e2:	6a42                	ld	s4,16(sp)
-    802038e4:	6aa2                	ld	s5,8(sp)
-    802038e6:	6121                	addi	sp,sp,64
-    802038e8:	8082                	ret
+    80203bf4:	70e2                	ld	ra,56(sp)
+    80203bf6:	7442                	ld	s0,48(sp)
+    80203bf8:	74a2                	ld	s1,40(sp)
+    80203bfa:	7902                	ld	s2,32(sp)
+    80203bfc:	69e2                	ld	s3,24(sp)
+    80203bfe:	6a42                	ld	s4,16(sp)
+    80203c00:	6aa2                	ld	s5,8(sp)
+    80203c02:	6121                	addi	sp,sp,64
+    80203c04:	8082                	ret
     pipeclose(ff.pipe, ff.writable);
-    802038ea:	85d2                	mv	a1,s4
-    802038ec:	854e                	mv	a0,s3
-    802038ee:	00000097          	auipc	ra,0x0
-    802038f2:	3a0080e7          	jalr	928(ra) # 80203c8e <pipeclose>
-    802038f6:	b7cd                	j	802038d8 <fileclose+0x96>
+    80203c06:	85d2                	mv	a1,s4
+    80203c08:	854e                	mv	a0,s3
+    80203c0a:	00000097          	auipc	ra,0x0
+    80203c0e:	3a0080e7          	jalr	928(ra) # 80203faa <pipeclose>
+    80203c12:	b7cd                	j	80203bf4 <fileclose+0x96>
 
-00000000802038f8 <filestat>:
+0000000080203c14 <filestat>:
 filestat(struct file *f, uint64 addr)
 {
   // struct proc *p = myproc();
   struct stat st;
   
   if(f->type == FD_ENTRY){
-    802038f8:	4118                	lw	a4,0(a0)
-    802038fa:	4789                	li	a5,2
-    802038fc:	04f71e63          	bne	a4,a5,80203958 <filestat+0x60>
-{
-    80203900:	7159                	addi	sp,sp,-112
-    80203902:	f486                	sd	ra,104(sp)
-    80203904:	f0a2                	sd	s0,96(sp)
-    80203906:	eca6                	sd	s1,88(sp)
-    80203908:	e8ca                	sd	s2,80(sp)
-    8020390a:	e4ce                	sd	s3,72(sp)
-    8020390c:	1880                	addi	s0,sp,112
-    8020390e:	84aa                	mv	s1,a0
-    80203910:	892e                	mv	s2,a1
+    80203c14:	4118                	lw	a4,0(a0)
+    80203c16:	4789                	li	a5,2
+    80203c18:	04f71e63          	bne	a4,a5,80203c74 <filestat+0x60>
+{
+    80203c1c:	7159                	addi	sp,sp,-112
+    80203c1e:	f486                	sd	ra,104(sp)
+    80203c20:	f0a2                	sd	s0,96(sp)
+    80203c22:	eca6                	sd	s1,88(sp)
+    80203c24:	e8ca                	sd	s2,80(sp)
+    80203c26:	e4ce                	sd	s3,72(sp)
+    80203c28:	1880                	addi	s0,sp,112
+    80203c2a:	84aa                	mv	s1,a0
+    80203c2c:	892e                	mv	s2,a1
     elock(f->ep);
-    80203912:	6d08                	ld	a0,24(a0)
-    80203914:	00003097          	auipc	ra,0x3
-    80203918:	92a080e7          	jalr	-1750(ra) # 8020623e <elock>
+    80203c2e:	6d08                	ld	a0,24(a0)
+    80203c30:	00003097          	auipc	ra,0x3
+    80203c34:	95e080e7          	jalr	-1698(ra) # 8020658e <elock>
     estat(f->ep, &st);
-    8020391c:	f9840993          	addi	s3,s0,-104
-    80203920:	85ce                	mv	a1,s3
-    80203922:	6c88                	ld	a0,24(s1)
-    80203924:	00003097          	auipc	ra,0x3
-    80203928:	ad6080e7          	jalr	-1322(ra) # 802063fa <estat>
+    80203c38:	f9840993          	addi	s3,s0,-104
+    80203c3c:	85ce                	mv	a1,s3
+    80203c3e:	6c88                	ld	a0,24(s1)
+    80203c40:	00003097          	auipc	ra,0x3
+    80203c44:	b0a080e7          	jalr	-1270(ra) # 8020674a <estat>
     eunlock(f->ep);
-    8020392c:	6c88                	ld	a0,24(s1)
-    8020392e:	00003097          	auipc	ra,0x3
-    80203932:	946080e7          	jalr	-1722(ra) # 80206274 <eunlock>
+    80203c48:	6c88                	ld	a0,24(s1)
+    80203c4a:	00003097          	auipc	ra,0x3
+    80203c4e:	97a080e7          	jalr	-1670(ra) # 802065c4 <eunlock>
     // if(copyout(p->pagetable, addr, (char *)&st, sizeof(st)) < 0)
     if(copyout2(addr, (char *)&st, sizeof(st)) < 0)
-    80203936:	03800613          	li	a2,56
-    8020393a:	85ce                	mv	a1,s3
-    8020393c:	854a                	mv	a0,s2
-    8020393e:	ffffe097          	auipc	ra,0xffffe
-    80203942:	a34080e7          	jalr	-1484(ra) # 80201372 <copyout2>
-    80203946:	41f5551b          	sraiw	a0,a0,0x1f
+    80203c52:	03800613          	li	a2,56
+    80203c56:	85ce                	mv	a1,s3
+    80203c58:	854a                	mv	a0,s2
+    80203c5a:	ffffd097          	auipc	ra,0xffffd
+    80203c5e:	718080e7          	jalr	1816(ra) # 80201372 <copyout2>
+    80203c62:	41f5551b          	sraiw	a0,a0,0x1f
       return -1;
     return 0;
   }
   return -1;
 }
-    8020394a:	70a6                	ld	ra,104(sp)
-    8020394c:	7406                	ld	s0,96(sp)
-    8020394e:	64e6                	ld	s1,88(sp)
-    80203950:	6946                	ld	s2,80(sp)
-    80203952:	69a6                	ld	s3,72(sp)
-    80203954:	6165                	addi	sp,sp,112
-    80203956:	8082                	ret
+    80203c66:	70a6                	ld	ra,104(sp)
+    80203c68:	7406                	ld	s0,96(sp)
+    80203c6a:	64e6                	ld	s1,88(sp)
+    80203c6c:	6946                	ld	s2,80(sp)
+    80203c6e:	69a6                	ld	s3,72(sp)
+    80203c70:	6165                	addi	sp,sp,112
+    80203c72:	8082                	ret
   return -1;
-    80203958:	557d                	li	a0,-1
+    80203c74:	557d                	li	a0,-1
 }
-    8020395a:	8082                	ret
+    80203c76:	8082                	ret
 
-000000008020395c <fileread>:
+0000000080203c78 <fileread>:
 
 // Read from file f.
 // addr is a user virtual address.
 int
 fileread(struct file *f, uint64 addr, int n)
 {
-    8020395c:	7179                	addi	sp,sp,-48
-    8020395e:	f406                	sd	ra,40(sp)
-    80203960:	f022                	sd	s0,32(sp)
-    80203962:	ec26                	sd	s1,24(sp)
-    80203964:	e84a                	sd	s2,16(sp)
-    80203966:	e44e                	sd	s3,8(sp)
-    80203968:	1800                	addi	s0,sp,48
+    80203c78:	7179                	addi	sp,sp,-48
+    80203c7a:	f406                	sd	ra,40(sp)
+    80203c7c:	f022                	sd	s0,32(sp)
+    80203c7e:	ec26                	sd	s1,24(sp)
+    80203c80:	e84a                	sd	s2,16(sp)
+    80203c82:	e44e                	sd	s3,8(sp)
+    80203c84:	1800                	addi	s0,sp,48
   int r = 0;
 
   if(f->readable == 0)
-    8020396a:	00854783          	lbu	a5,8(a0)
-    8020396e:	c3d5                	beqz	a5,80203a12 <fileread+0xb6>
-    80203970:	84aa                	mv	s1,a0
-    80203972:	89ae                	mv	s3,a1
-    80203974:	8932                	mv	s2,a2
+    80203c86:	00854783          	lbu	a5,8(a0)
+    80203c8a:	c3d5                	beqz	a5,80203d2e <fileread+0xb6>
+    80203c8c:	84aa                	mv	s1,a0
+    80203c8e:	89ae                	mv	s3,a1
+    80203c90:	8932                	mv	s2,a2
     return -1;
 
   switch (f->type) {
-    80203976:	411c                	lw	a5,0(a0)
-    80203978:	4709                	li	a4,2
-    8020397a:	06e78263          	beq	a5,a4,802039de <fileread+0x82>
-    8020397e:	470d                	li	a4,3
-    80203980:	02e78b63          	beq	a5,a4,802039b6 <fileread+0x5a>
-    80203984:	4705                	li	a4,1
-    80203986:	00e78a63          	beq	a5,a4,8020399a <fileread+0x3e>
+    80203c92:	411c                	lw	a5,0(a0)
+    80203c94:	4709                	li	a4,2
+    80203c96:	06e78263          	beq	a5,a4,80203cfa <fileread+0x82>
+    80203c9a:	470d                	li	a4,3
+    80203c9c:	02e78b63          	beq	a5,a4,80203cd2 <fileread+0x5a>
+    80203ca0:	4705                	li	a4,1
+    80203ca2:	00e78a63          	beq	a5,a4,80203cb6 <fileread+0x3e>
           if((r = eread(f->ep, 1, addr, f->off, n)) > 0)
             f->off += r;
         eunlock(f->ep);
         break;
     default:
       panic("fileread");
-    8020398a:	00006517          	auipc	a0,0x6
-    8020398e:	1a650513          	addi	a0,a0,422 # 80209b30 <digits+0x7b0>
-    80203992:	ffffc097          	auipc	ra,0xffffc
-    80203996:	7b2080e7          	jalr	1970(ra) # 80200144 <panic>
+    80203ca6:	00006517          	auipc	a0,0x6
+    80203caa:	ec250513          	addi	a0,a0,-318 # 80209b68 <digits+0x7e8>
+    80203cae:	ffffc097          	auipc	ra,0xffffc
+    80203cb2:	496080e7          	jalr	1174(ra) # 80200144 <panic>
         r = piperead(f->pipe, addr, n);
-    8020399a:	6908                	ld	a0,16(a0)
-    8020399c:	00000097          	auipc	ra,0x0
-    802039a0:	466080e7          	jalr	1126(ra) # 80203e02 <piperead>
-    802039a4:	892a                	mv	s2,a0
+    80203cb6:	6908                	ld	a0,16(a0)
+    80203cb8:	00000097          	auipc	ra,0x0
+    80203cbc:	466080e7          	jalr	1126(ra) # 8020411e <piperead>
+    80203cc0:	892a                	mv	s2,a0
   }
 
   return r;
 }
-    802039a6:	854a                	mv	a0,s2
-    802039a8:	70a2                	ld	ra,40(sp)
-    802039aa:	7402                	ld	s0,32(sp)
-    802039ac:	64e2                	ld	s1,24(sp)
-    802039ae:	6942                	ld	s2,16(sp)
-    802039b0:	69a2                	ld	s3,8(sp)
-    802039b2:	6145                	addi	sp,sp,48
-    802039b4:	8082                	ret
+    80203cc2:	854a                	mv	a0,s2
+    80203cc4:	70a2                	ld	ra,40(sp)
+    80203cc6:	7402                	ld	s0,32(sp)
+    80203cc8:	64e2                	ld	s1,24(sp)
+    80203cca:	6942                	ld	s2,16(sp)
+    80203ccc:	69a2                	ld	s3,8(sp)
+    80203cce:	6145                	addi	sp,sp,48
+    80203cd0:	8082                	ret
         if(f->major < 0 || f->major >= NDEV || !devsw[f->major].read)
-    802039b6:	02451783          	lh	a5,36(a0)
-    802039ba:	03079693          	slli	a3,a5,0x30
-    802039be:	92c1                	srli	a3,a3,0x30
-    802039c0:	4725                	li	a4,9
-    802039c2:	04d76a63          	bltu	a4,a3,80203a16 <fileread+0xba>
-    802039c6:	0792                	slli	a5,a5,0x4
-    802039c8:	0001a717          	auipc	a4,0x1a
-    802039cc:	9e870713          	addi	a4,a4,-1560 # 8021d3b0 <devsw>
-    802039d0:	97ba                	add	a5,a5,a4
-    802039d2:	639c                	ld	a5,0(a5)
-    802039d4:	c3b9                	beqz	a5,80203a1a <fileread+0xbe>
+    80203cd2:	02451783          	lh	a5,36(a0)
+    80203cd6:	03079693          	slli	a3,a5,0x30
+    80203cda:	92c1                	srli	a3,a3,0x30
+    80203cdc:	4725                	li	a4,9
+    80203cde:	04d76a63          	bltu	a4,a3,80203d32 <fileread+0xba>
+    80203ce2:	0792                	slli	a5,a5,0x4
+    80203ce4:	00019717          	auipc	a4,0x19
+    80203ce8:	6cc70713          	addi	a4,a4,1740 # 8021d3b0 <devsw>
+    80203cec:	97ba                	add	a5,a5,a4
+    80203cee:	639c                	ld	a5,0(a5)
+    80203cf0:	c3b9                	beqz	a5,80203d36 <fileread+0xbe>
         r = devsw[f->major].read(1, addr, n);
-    802039d6:	4505                	li	a0,1
-    802039d8:	9782                	jalr	a5
-    802039da:	892a                	mv	s2,a0
+    80203cf2:	4505                	li	a0,1
+    80203cf4:	9782                	jalr	a5
+    80203cf6:	892a                	mv	s2,a0
         break;
-    802039dc:	b7e9                	j	802039a6 <fileread+0x4a>
+    80203cf8:	b7e9                	j	80203cc2 <fileread+0x4a>
         elock(f->ep);
-    802039de:	6d08                	ld	a0,24(a0)
-    802039e0:	00003097          	auipc	ra,0x3
-    802039e4:	85e080e7          	jalr	-1954(ra) # 8020623e <elock>
+    80203cfa:	6d08                	ld	a0,24(a0)
+    80203cfc:	00003097          	auipc	ra,0x3
+    80203d00:	892080e7          	jalr	-1902(ra) # 8020658e <elock>
           if((r = eread(f->ep, 1, addr, f->off, n)) > 0)
-    802039e8:	874a                	mv	a4,s2
-    802039ea:	5094                	lw	a3,32(s1)
-    802039ec:	864e                	mv	a2,s3
-    802039ee:	4585                	li	a1,1
-    802039f0:	6c88                	ld	a0,24(s1)
-    802039f2:	00002097          	auipc	ra,0x2
-    802039f6:	f48080e7          	jalr	-184(ra) # 8020593a <eread>
-    802039fa:	892a                	mv	s2,a0
-    802039fc:	00a05563          	blez	a0,80203a06 <fileread+0xaa>
+    80203d04:	874a                	mv	a4,s2
+    80203d06:	5094                	lw	a3,32(s1)
+    80203d08:	864e                	mv	a2,s3
+    80203d0a:	4585                	li	a1,1
+    80203d0c:	6c88                	ld	a0,24(s1)
+    80203d0e:	00002097          	auipc	ra,0x2
+    80203d12:	f7c080e7          	jalr	-132(ra) # 80205c8a <eread>
+    80203d16:	892a                	mv	s2,a0
+    80203d18:	00a05563          	blez	a0,80203d22 <fileread+0xaa>
             f->off += r;
-    80203a00:	509c                	lw	a5,32(s1)
-    80203a02:	9fa9                	addw	a5,a5,a0
-    80203a04:	d09c                	sw	a5,32(s1)
+    80203d1c:	509c                	lw	a5,32(s1)
+    80203d1e:	9fa9                	addw	a5,a5,a0
+    80203d20:	d09c                	sw	a5,32(s1)
         eunlock(f->ep);
-    80203a06:	6c88                	ld	a0,24(s1)
-    80203a08:	00003097          	auipc	ra,0x3
-    80203a0c:	86c080e7          	jalr	-1940(ra) # 80206274 <eunlock>
+    80203d22:	6c88                	ld	a0,24(s1)
+    80203d24:	00003097          	auipc	ra,0x3
+    80203d28:	8a0080e7          	jalr	-1888(ra) # 802065c4 <eunlock>
         break;
-    80203a10:	bf59                	j	802039a6 <fileread+0x4a>
+    80203d2c:	bf59                	j	80203cc2 <fileread+0x4a>
     return -1;
-    80203a12:	597d                	li	s2,-1
-    80203a14:	bf49                	j	802039a6 <fileread+0x4a>
+    80203d2e:	597d                	li	s2,-1
+    80203d30:	bf49                	j	80203cc2 <fileread+0x4a>
           return -1;
-    80203a16:	597d                	li	s2,-1
-    80203a18:	b779                	j	802039a6 <fileread+0x4a>
-    80203a1a:	597d                	li	s2,-1
-    80203a1c:	b769                	j	802039a6 <fileread+0x4a>
+    80203d32:	597d                	li	s2,-1
+    80203d34:	b779                	j	80203cc2 <fileread+0x4a>
+    80203d36:	597d                	li	s2,-1
+    80203d38:	b769                	j	80203cc2 <fileread+0x4a>
 
-0000000080203a1e <filewrite>:
+0000000080203d3a <filewrite>:
 
 // Write to file f.
 // addr is a user virtual address.
 int
 filewrite(struct file *f, uint64 addr, int n)
 {
-    80203a1e:	7179                	addi	sp,sp,-48
-    80203a20:	f406                	sd	ra,40(sp)
-    80203a22:	f022                	sd	s0,32(sp)
-    80203a24:	ec26                	sd	s1,24(sp)
-    80203a26:	e84a                	sd	s2,16(sp)
-    80203a28:	e44e                	sd	s3,8(sp)
-    80203a2a:	e052                	sd	s4,0(sp)
-    80203a2c:	1800                	addi	s0,sp,48
+    80203d3a:	7179                	addi	sp,sp,-48
+    80203d3c:	f406                	sd	ra,40(sp)
+    80203d3e:	f022                	sd	s0,32(sp)
+    80203d40:	ec26                	sd	s1,24(sp)
+    80203d42:	e84a                	sd	s2,16(sp)
+    80203d44:	e44e                	sd	s3,8(sp)
+    80203d46:	e052                	sd	s4,0(sp)
+    80203d48:	1800                	addi	s0,sp,48
   int ret = 0;
 
   if(f->writable == 0)
-    80203a2e:	00954783          	lbu	a5,9(a0)
-    80203a32:	cbc5                	beqz	a5,80203ae2 <filewrite+0xc4>
-    80203a34:	84aa                	mv	s1,a0
-    80203a36:	892e                	mv	s2,a1
-    80203a38:	89b2                	mv	s3,a2
+    80203d4a:	00954783          	lbu	a5,9(a0)
+    80203d4e:	cbc5                	beqz	a5,80203dfe <filewrite+0xc4>
+    80203d50:	84aa                	mv	s1,a0
+    80203d52:	892e                	mv	s2,a1
+    80203d54:	89b2                	mv	s3,a2
     return -1;
 
   if(f->type == FD_PIPE){
-    80203a3a:	411c                	lw	a5,0(a0)
-    80203a3c:	4705                	li	a4,1
-    80203a3e:	04e78963          	beq	a5,a4,80203a90 <filewrite+0x72>
+    80203d56:	411c                	lw	a5,0(a0)
+    80203d58:	4705                	li	a4,1
+    80203d5a:	04e78963          	beq	a5,a4,80203dac <filewrite+0x72>
     ret = pipewrite(f->pipe, addr, n);
   } else if(f->type == FD_DEVICE){
-    80203a42:	470d                	li	a4,3
-    80203a44:	04e78d63          	beq	a5,a4,80203a9e <filewrite+0x80>
+    80203d5e:	470d                	li	a4,3
+    80203d60:	04e78d63          	beq	a5,a4,80203dba <filewrite+0x80>
     if(f->major < 0 || f->major >= NDEV || !devsw[f->major].write)
       return -1;
     ret = devsw[f->major].write(1, addr, n);
   } else if(f->type == FD_ENTRY){
-    80203a48:	4709                	li	a4,2
-    80203a4a:	08e79463          	bne	a5,a4,80203ad2 <filewrite+0xb4>
+    80203d64:	4709                	li	a4,2
+    80203d66:	08e79463          	bne	a5,a4,80203dee <filewrite+0xb4>
     elock(f->ep);
-    80203a4e:	6d08                	ld	a0,24(a0)
-    80203a50:	00002097          	auipc	ra,0x2
-    80203a54:	7ee080e7          	jalr	2030(ra) # 8020623e <elock>
+    80203d6a:	6d08                	ld	a0,24(a0)
+    80203d6c:	00003097          	auipc	ra,0x3
+    80203d70:	822080e7          	jalr	-2014(ra) # 8020658e <elock>
     if (ewrite(f->ep, 1, addr, f->off, n) == n) {
-    80203a58:	00098a1b          	sext.w	s4,s3
-    80203a5c:	8752                	mv	a4,s4
-    80203a5e:	5094                	lw	a3,32(s1)
-    80203a60:	864a                	mv	a2,s2
-    80203a62:	4585                	li	a1,1
-    80203a64:	6c88                	ld	a0,24(s1)
-    80203a66:	00002097          	auipc	ra,0x2
-    80203a6a:	fcc080e7          	jalr	-52(ra) # 80205a32 <ewrite>
+    80203d74:	00098a1b          	sext.w	s4,s3
+    80203d78:	8752                	mv	a4,s4
+    80203d7a:	5094                	lw	a3,32(s1)
+    80203d7c:	864a                	mv	a2,s2
+    80203d7e:	4585                	li	a1,1
+    80203d80:	6c88                	ld	a0,24(s1)
+    80203d82:	00002097          	auipc	ra,0x2
+    80203d86:	000080e7          	jalr	ra # 80205d82 <ewrite>
       ret = n;
       f->off += n;
     } else {
       ret = -1;
-    80203a6e:	597d                	li	s2,-1
+    80203d8a:	597d                	li	s2,-1
     if (ewrite(f->ep, 1, addr, f->off, n) == n) {
-    80203a70:	05350b63          	beq	a0,s3,80203ac6 <filewrite+0xa8>
+    80203d8c:	05350b63          	beq	a0,s3,80203de2 <filewrite+0xa8>
     }
     eunlock(f->ep);
-    80203a74:	6c88                	ld	a0,24(s1)
-    80203a76:	00002097          	auipc	ra,0x2
-    80203a7a:	7fe080e7          	jalr	2046(ra) # 80206274 <eunlock>
+    80203d90:	6c88                	ld	a0,24(s1)
+    80203d92:	00003097          	auipc	ra,0x3
+    80203d96:	832080e7          	jalr	-1998(ra) # 802065c4 <eunlock>
   } else {
     panic("filewrite");
   }
 
   return ret;
 }
-    80203a7e:	854a                	mv	a0,s2
-    80203a80:	70a2                	ld	ra,40(sp)
-    80203a82:	7402                	ld	s0,32(sp)
-    80203a84:	64e2                	ld	s1,24(sp)
-    80203a86:	6942                	ld	s2,16(sp)
-    80203a88:	69a2                	ld	s3,8(sp)
-    80203a8a:	6a02                	ld	s4,0(sp)
-    80203a8c:	6145                	addi	sp,sp,48
-    80203a8e:	8082                	ret
+    80203d9a:	854a                	mv	a0,s2
+    80203d9c:	70a2                	ld	ra,40(sp)
+    80203d9e:	7402                	ld	s0,32(sp)
+    80203da0:	64e2                	ld	s1,24(sp)
+    80203da2:	6942                	ld	s2,16(sp)
+    80203da4:	69a2                	ld	s3,8(sp)
+    80203da6:	6a02                	ld	s4,0(sp)
+    80203da8:	6145                	addi	sp,sp,48
+    80203daa:	8082                	ret
     ret = pipewrite(f->pipe, addr, n);
-    80203a90:	6908                	ld	a0,16(a0)
-    80203a92:	00000097          	auipc	ra,0x0
-    80203a96:	26c080e7          	jalr	620(ra) # 80203cfe <pipewrite>
-    80203a9a:	892a                	mv	s2,a0
-    80203a9c:	b7cd                	j	80203a7e <filewrite+0x60>
+    80203dac:	6908                	ld	a0,16(a0)
+    80203dae:	00000097          	auipc	ra,0x0
+    80203db2:	26c080e7          	jalr	620(ra) # 8020401a <pipewrite>
+    80203db6:	892a                	mv	s2,a0
+    80203db8:	b7cd                	j	80203d9a <filewrite+0x60>
     if(f->major < 0 || f->major >= NDEV || !devsw[f->major].write)
-    80203a9e:	02451783          	lh	a5,36(a0)
-    80203aa2:	03079693          	slli	a3,a5,0x30
-    80203aa6:	92c1                	srli	a3,a3,0x30
-    80203aa8:	4725                	li	a4,9
-    80203aaa:	02d76e63          	bltu	a4,a3,80203ae6 <filewrite+0xc8>
-    80203aae:	0792                	slli	a5,a5,0x4
-    80203ab0:	0001a717          	auipc	a4,0x1a
-    80203ab4:	90070713          	addi	a4,a4,-1792 # 8021d3b0 <devsw>
-    80203ab8:	97ba                	add	a5,a5,a4
-    80203aba:	679c                	ld	a5,8(a5)
-    80203abc:	c79d                	beqz	a5,80203aea <filewrite+0xcc>
+    80203dba:	02451783          	lh	a5,36(a0)
+    80203dbe:	03079693          	slli	a3,a5,0x30
+    80203dc2:	92c1                	srli	a3,a3,0x30
+    80203dc4:	4725                	li	a4,9
+    80203dc6:	02d76e63          	bltu	a4,a3,80203e02 <filewrite+0xc8>
+    80203dca:	0792                	slli	a5,a5,0x4
+    80203dcc:	00019717          	auipc	a4,0x19
+    80203dd0:	5e470713          	addi	a4,a4,1508 # 8021d3b0 <devsw>
+    80203dd4:	97ba                	add	a5,a5,a4
+    80203dd6:	679c                	ld	a5,8(a5)
+    80203dd8:	c79d                	beqz	a5,80203e06 <filewrite+0xcc>
     ret = devsw[f->major].write(1, addr, n);
-    80203abe:	4505                	li	a0,1
-    80203ac0:	9782                	jalr	a5
-    80203ac2:	892a                	mv	s2,a0
-    80203ac4:	bf6d                	j	80203a7e <filewrite+0x60>
+    80203dda:	4505                	li	a0,1
+    80203ddc:	9782                	jalr	a5
+    80203dde:	892a                	mv	s2,a0
+    80203de0:	bf6d                	j	80203d9a <filewrite+0x60>
       f->off += n;
-    80203ac6:	509c                	lw	a5,32(s1)
-    80203ac8:	014787bb          	addw	a5,a5,s4
-    80203acc:	d09c                	sw	a5,32(s1)
+    80203de2:	509c                	lw	a5,32(s1)
+    80203de4:	014787bb          	addw	a5,a5,s4
+    80203de8:	d09c                	sw	a5,32(s1)
       ret = n;
-    80203ace:	894e                	mv	s2,s3
-    80203ad0:	b755                	j	80203a74 <filewrite+0x56>
+    80203dea:	894e                	mv	s2,s3
+    80203dec:	b755                	j	80203d90 <filewrite+0x56>
     panic("filewrite");
-    80203ad2:	00006517          	auipc	a0,0x6
-    80203ad6:	06e50513          	addi	a0,a0,110 # 80209b40 <digits+0x7c0>
-    80203ada:	ffffc097          	auipc	ra,0xffffc
-    80203ade:	66a080e7          	jalr	1642(ra) # 80200144 <panic>
+    80203dee:	00006517          	auipc	a0,0x6
+    80203df2:	d8a50513          	addi	a0,a0,-630 # 80209b78 <digits+0x7f8>
+    80203df6:	ffffc097          	auipc	ra,0xffffc
+    80203dfa:	34e080e7          	jalr	846(ra) # 80200144 <panic>
     return -1;
-    80203ae2:	597d                	li	s2,-1
-    80203ae4:	bf69                	j	80203a7e <filewrite+0x60>
+    80203dfe:	597d                	li	s2,-1
+    80203e00:	bf69                	j	80203d9a <filewrite+0x60>
       return -1;
-    80203ae6:	597d                	li	s2,-1
-    80203ae8:	bf59                	j	80203a7e <filewrite+0x60>
-    80203aea:	597d                	li	s2,-1
-    80203aec:	bf49                	j	80203a7e <filewrite+0x60>
+    80203e02:	597d                	li	s2,-1
+    80203e04:	bf59                	j	80203d9a <filewrite+0x60>
+    80203e06:	597d                	li	s2,-1
+    80203e08:	bf49                	j	80203d9a <filewrite+0x60>
 
-0000000080203aee <dirnext>:
+0000000080203e0a <dirnext>:
 int
 dirnext(struct file *f, uint64 addr)
 {
   // struct proc *p = myproc();
 
   if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY))
-    80203aee:	00854783          	lbu	a5,8(a0)
-    80203af2:	cfdd                	beqz	a5,80203bb0 <dirnext+0xc2>
-{
-    80203af4:	7141                	addi	sp,sp,-496
-    80203af6:	f786                	sd	ra,488(sp)
-    80203af8:	f3a2                	sd	s0,480(sp)
-    80203afa:	efa6                	sd	s1,472(sp)
-    80203afc:	ebca                	sd	s2,464(sp)
-    80203afe:	e7ce                	sd	s3,456(sp)
-    80203b00:	e3d2                	sd	s4,448(sp)
-    80203b02:	ff56                	sd	s5,440(sp)
-    80203b04:	1b80                	addi	s0,sp,496
-    80203b06:	84aa                	mv	s1,a0
-    80203b08:	8aae                	mv	s5,a1
+    80203e0a:	00854783          	lbu	a5,8(a0)
+    80203e0e:	cfdd                	beqz	a5,80203ecc <dirnext+0xc2>
+{
+    80203e10:	7141                	addi	sp,sp,-496
+    80203e12:	f786                	sd	ra,488(sp)
+    80203e14:	f3a2                	sd	s0,480(sp)
+    80203e16:	efa6                	sd	s1,472(sp)
+    80203e18:	ebca                	sd	s2,464(sp)
+    80203e1a:	e7ce                	sd	s3,456(sp)
+    80203e1c:	e3d2                	sd	s4,448(sp)
+    80203e1e:	ff56                	sd	s5,440(sp)
+    80203e20:	1b80                	addi	s0,sp,496
+    80203e22:	84aa                	mv	s1,a0
+    80203e24:	8aae                	mv	s5,a1
   if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY))
-    80203b0a:	6d18                	ld	a4,24(a0)
-    80203b0c:	10074783          	lbu	a5,256(a4)
-    80203b10:	8bc1                	andi	a5,a5,16
+    80203e26:	6d18                	ld	a4,24(a0)
+    80203e28:	10074783          	lbu	a5,256(a4)
+    80203e2c:	8bc1                	andi	a5,a5,16
     return -1;
-    80203b12:	557d                	li	a0,-1
+    80203e2e:	557d                	li	a0,-1
   if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY))
-    80203b14:	eb91                	bnez	a5,80203b28 <dirnext+0x3a>
+    80203e30:	eb91                	bnez	a5,80203e44 <dirnext+0x3a>
   // if(copyout(p->pagetable, addr, (char *)&st, sizeof(st)) < 0)
   if(copyout2(addr, (char *)&st, sizeof(st)) < 0)
     return -1;
 
   return 1;
-    80203b16:	70be                	ld	ra,488(sp)
-    80203b18:	741e                	ld	s0,480(sp)
-    80203b1a:	64fe                	ld	s1,472(sp)
-    80203b1c:	695e                	ld	s2,464(sp)
-    80203b1e:	69be                	ld	s3,456(sp)
-    80203b20:	6a1e                	ld	s4,448(sp)
-    80203b22:	7afa                	ld	s5,440(sp)
-    80203b24:	617d                	addi	sp,sp,496
-    80203b26:	8082                	ret
+    80203e32:	70be                	ld	ra,488(sp)
+    80203e34:	741e                	ld	s0,480(sp)
+    80203e36:	64fe                	ld	s1,472(sp)
+    80203e38:	695e                	ld	s2,464(sp)
+    80203e3a:	69be                	ld	s3,456(sp)
+    80203e3c:	6a1e                	ld	s4,448(sp)
+    80203e3e:	7afa                	ld	s5,440(sp)
+    80203e40:	617d                	addi	sp,sp,496
+    80203e42:	8082                	ret
   int count = 0;
-    80203b28:	e0042e23          	sw	zero,-484(s0)
+    80203e44:	e0042e23          	sw	zero,-484(s0)
   elock(f->ep);
-    80203b2c:	853a                	mv	a0,a4
-    80203b2e:	00002097          	auipc	ra,0x2
-    80203b32:	710080e7          	jalr	1808(ra) # 8020623e <elock>
+    80203e48:	853a                	mv	a0,a4
+    80203e4a:	00002097          	auipc	ra,0x2
+    80203e4e:	744080e7          	jalr	1860(ra) # 8020658e <elock>
   while ((ret = enext(f->ep, &de, f->off, &count)) == 0) {  // skip empty entry
-    80203b36:	e1c40a13          	addi	s4,s0,-484
-    80203b3a:	e5840993          	addi	s3,s0,-424
-    80203b3e:	a801                	j	80203b4e <dirnext+0x60>
+    80203e52:	e1c40a13          	addi	s4,s0,-484
+    80203e56:	e5840993          	addi	s3,s0,-424
+    80203e5a:	a801                	j	80203e6a <dirnext+0x60>
     f->off += count * 32;
-    80203b40:	e1c42783          	lw	a5,-484(s0)
-    80203b44:	0057979b          	slliw	a5,a5,0x5
-    80203b48:	5098                	lw	a4,32(s1)
-    80203b4a:	9fb9                	addw	a5,a5,a4
-    80203b4c:	d09c                	sw	a5,32(s1)
+    80203e5c:	e1c42783          	lw	a5,-484(s0)
+    80203e60:	0057979b          	slliw	a5,a5,0x5
+    80203e64:	5098                	lw	a4,32(s1)
+    80203e66:	9fb9                	addw	a5,a5,a4
+    80203e68:	d09c                	sw	a5,32(s1)
   while ((ret = enext(f->ep, &de, f->off, &count)) == 0) {  // skip empty entry
-    80203b4e:	86d2                	mv	a3,s4
-    80203b50:	5090                	lw	a2,32(s1)
-    80203b52:	85ce                	mv	a1,s3
-    80203b54:	6c88                	ld	a0,24(s1)
-    80203b56:	00003097          	auipc	ra,0x3
-    80203b5a:	8ec080e7          	jalr	-1812(ra) # 80206442 <enext>
-    80203b5e:	892a                	mv	s2,a0
-    80203b60:	d165                	beqz	a0,80203b40 <dirnext+0x52>
+    80203e6a:	86d2                	mv	a3,s4
+    80203e6c:	5090                	lw	a2,32(s1)
+    80203e6e:	85ce                	mv	a1,s3
+    80203e70:	6c88                	ld	a0,24(s1)
+    80203e72:	00003097          	auipc	ra,0x3
+    80203e76:	920080e7          	jalr	-1760(ra) # 80206792 <enext>
+    80203e7a:	892a                	mv	s2,a0
+    80203e7c:	d165                	beqz	a0,80203e5c <dirnext+0x52>
   eunlock(f->ep);
-    80203b62:	6c88                	ld	a0,24(s1)
-    80203b64:	00002097          	auipc	ra,0x2
-    80203b68:	710080e7          	jalr	1808(ra) # 80206274 <eunlock>
+    80203e7e:	6c88                	ld	a0,24(s1)
+    80203e80:	00002097          	auipc	ra,0x2
+    80203e84:	744080e7          	jalr	1860(ra) # 802065c4 <eunlock>
   if (ret == -1)
-    80203b6c:	57fd                	li	a5,-1
+    80203e88:	57fd                	li	a5,-1
     return 0;
-    80203b6e:	4501                	li	a0,0
+    80203e8a:	4501                	li	a0,0
   if (ret == -1)
-    80203b70:	faf903e3          	beq	s2,a5,80203b16 <dirnext+0x28>
+    80203e8c:	faf903e3          	beq	s2,a5,80203e32 <dirnext+0x28>
   f->off += count * 32;
-    80203b74:	e1c42783          	lw	a5,-484(s0)
-    80203b78:	0057979b          	slliw	a5,a5,0x5
-    80203b7c:	5098                	lw	a4,32(s1)
-    80203b7e:	9fb9                	addw	a5,a5,a4
-    80203b80:	d09c                	sw	a5,32(s1)
+    80203e90:	e1c42783          	lw	a5,-484(s0)
+    80203e94:	0057979b          	slliw	a5,a5,0x5
+    80203e98:	5098                	lw	a4,32(s1)
+    80203e9a:	9fb9                	addw	a5,a5,a4
+    80203e9c:	d09c                	sw	a5,32(s1)
   estat(&de, &st);
-    80203b82:	e2040493          	addi	s1,s0,-480
-    80203b86:	85a6                	mv	a1,s1
-    80203b88:	e5840513          	addi	a0,s0,-424
-    80203b8c:	00003097          	auipc	ra,0x3
-    80203b90:	86e080e7          	jalr	-1938(ra) # 802063fa <estat>
+    80203e9e:	e2040493          	addi	s1,s0,-480
+    80203ea2:	85a6                	mv	a1,s1
+    80203ea4:	e5840513          	addi	a0,s0,-424
+    80203ea8:	00003097          	auipc	ra,0x3
+    80203eac:	8a2080e7          	jalr	-1886(ra) # 8020674a <estat>
   if(copyout2(addr, (char *)&st, sizeof(st)) < 0)
-    80203b94:	03800613          	li	a2,56
-    80203b98:	85a6                	mv	a1,s1
-    80203b9a:	8556                	mv	a0,s5
-    80203b9c:	ffffd097          	auipc	ra,0xffffd
-    80203ba0:	7d6080e7          	jalr	2006(ra) # 80201372 <copyout2>
+    80203eb0:	03800613          	li	a2,56
+    80203eb4:	85a6                	mv	a1,s1
+    80203eb6:	8556                	mv	a0,s5
+    80203eb8:	ffffd097          	auipc	ra,0xffffd
+    80203ebc:	4ba080e7          	jalr	1210(ra) # 80201372 <copyout2>
     return -1;
-    80203ba4:	fff54513          	not	a0,a0
-    80203ba8:	957d                	srai	a0,a0,0x3f
-    80203baa:	8909                	andi	a0,a0,2
-    80203bac:	157d                	addi	a0,a0,-1
-    80203bae:	b7a5                	j	80203b16 <dirnext+0x28>
+    80203ec0:	fff54513          	not	a0,a0
+    80203ec4:	957d                	srai	a0,a0,0x3f
+    80203ec6:	8909                	andi	a0,a0,2
+    80203ec8:	157d                	addi	a0,a0,-1
+    80203eca:	b7a5                	j	80203e32 <dirnext+0x28>
     return -1;
-    80203bb0:	557d                	li	a0,-1
-    80203bb2:	8082                	ret
+    80203ecc:	557d                	li	a0,-1
+    80203ece:	8082                	ret
 
-0000000080203bb4 <pipealloc>:
+0000000080203ed0 <pipealloc>:
 #include "include/kalloc.h"
 #include "include/vm.h"
 
 int
 pipealloc(struct file **f0, struct file **f1)
 {
-    80203bb4:	7179                	addi	sp,sp,-48
-    80203bb6:	f406                	sd	ra,40(sp)
-    80203bb8:	f022                	sd	s0,32(sp)
-    80203bba:	ec26                	sd	s1,24(sp)
-    80203bbc:	e84a                	sd	s2,16(sp)
-    80203bbe:	e44e                	sd	s3,8(sp)
-    80203bc0:	e052                	sd	s4,0(sp)
-    80203bc2:	1800                	addi	s0,sp,48
-    80203bc4:	84aa                	mv	s1,a0
-    80203bc6:	8a2e                	mv	s4,a1
+    80203ed0:	7179                	addi	sp,sp,-48
+    80203ed2:	f406                	sd	ra,40(sp)
+    80203ed4:	f022                	sd	s0,32(sp)
+    80203ed6:	ec26                	sd	s1,24(sp)
+    80203ed8:	e84a                	sd	s2,16(sp)
+    80203eda:	e44e                	sd	s3,8(sp)
+    80203edc:	e052                	sd	s4,0(sp)
+    80203ede:	1800                	addi	s0,sp,48
+    80203ee0:	84aa                	mv	s1,a0
+    80203ee2:	8a2e                	mv	s4,a1
   struct pipe *pi;
 
   pi = 0;
   *f0 = *f1 = 0;
-    80203bc8:	0005b023          	sd	zero,0(a1)
-    80203bcc:	00053023          	sd	zero,0(a0)
+    80203ee4:	0005b023          	sd	zero,0(a1)
+    80203ee8:	00053023          	sd	zero,0(a0)
   if((*f0 = filealloc()) == NULL || (*f1 = filealloc()) == NULL)
-    80203bd0:	00000097          	auipc	ra,0x0
-    80203bd4:	bb6080e7          	jalr	-1098(ra) # 80203786 <filealloc>
-    80203bd8:	e088                	sd	a0,0(s1)
-    80203bda:	c551                	beqz	a0,80203c66 <pipealloc+0xb2>
-    80203bdc:	00000097          	auipc	ra,0x0
-    80203be0:	baa080e7          	jalr	-1110(ra) # 80203786 <filealloc>
-    80203be4:	00aa3023          	sd	a0,0(s4)
-    80203be8:	c92d                	beqz	a0,80203c5a <pipealloc+0xa6>
+    80203eec:	00000097          	auipc	ra,0x0
+    80203ef0:	bb6080e7          	jalr	-1098(ra) # 80203aa2 <filealloc>
+    80203ef4:	e088                	sd	a0,0(s1)
+    80203ef6:	c551                	beqz	a0,80203f82 <pipealloc+0xb2>
+    80203ef8:	00000097          	auipc	ra,0x0
+    80203efc:	baa080e7          	jalr	-1110(ra) # 80203aa2 <filealloc>
+    80203f00:	00aa3023          	sd	a0,0(s4)
+    80203f04:	c92d                	beqz	a0,80203f76 <pipealloc+0xa6>
     goto bad;
   if((pi = (struct pipe*)kalloc()) == NULL)
-    80203bea:	ffffd097          	auipc	ra,0xffffd
-    80203bee:	970080e7          	jalr	-1680(ra) # 8020055a <kalloc>
-    80203bf2:	892a                	mv	s2,a0
-    80203bf4:	c125                	beqz	a0,80203c54 <pipealloc+0xa0>
+    80203f06:	ffffc097          	auipc	ra,0xffffc
+    80203f0a:	654080e7          	jalr	1620(ra) # 8020055a <kalloc>
+    80203f0e:	892a                	mv	s2,a0
+    80203f10:	c125                	beqz	a0,80203f70 <pipealloc+0xa0>
     goto bad;
   pi->readopen = 1;
-    80203bf6:	4985                	li	s3,1
-    80203bf8:	23352023          	sw	s3,544(a0)
+    80203f12:	4985                	li	s3,1
+    80203f14:	23352023          	sw	s3,544(a0)
   pi->writeopen = 1;
-    80203bfc:	23352223          	sw	s3,548(a0)
+    80203f18:	23352223          	sw	s3,548(a0)
   pi->nwrite = 0;
-    80203c00:	20052e23          	sw	zero,540(a0)
+    80203f1c:	20052e23          	sw	zero,540(a0)
   pi->nread = 0;
-    80203c04:	20052c23          	sw	zero,536(a0)
+    80203f20:	20052c23          	sw	zero,536(a0)
   initlock(&pi->lock, "pipe");
-    80203c08:	00006597          	auipc	a1,0x6
-    80203c0c:	e4858593          	addi	a1,a1,-440 # 80209a50 <digits+0x6d0>
-    80203c10:	ffffd097          	auipc	ra,0xffffd
-    80203c14:	a72080e7          	jalr	-1422(ra) # 80200682 <initlock>
+    80203f24:	00006597          	auipc	a1,0x6
+    80203f28:	b3458593          	addi	a1,a1,-1228 # 80209a58 <digits+0x6d8>
+    80203f2c:	ffffc097          	auipc	ra,0xffffc
+    80203f30:	756080e7          	jalr	1878(ra) # 80200682 <initlock>
   (*f0)->type = FD_PIPE;
-    80203c18:	609c                	ld	a5,0(s1)
-    80203c1a:	0137a023          	sw	s3,0(a5)
+    80203f34:	609c                	ld	a5,0(s1)
+    80203f36:	0137a023          	sw	s3,0(a5)
   (*f0)->readable = 1;
-    80203c1e:	609c                	ld	a5,0(s1)
-    80203c20:	01378423          	sb	s3,8(a5)
+    80203f3a:	609c                	ld	a5,0(s1)
+    80203f3c:	01378423          	sb	s3,8(a5)
   (*f0)->writable = 0;
-    80203c24:	609c                	ld	a5,0(s1)
-    80203c26:	000784a3          	sb	zero,9(a5)
+    80203f40:	609c                	ld	a5,0(s1)
+    80203f42:	000784a3          	sb	zero,9(a5)
   (*f0)->pipe = pi;
-    80203c2a:	609c                	ld	a5,0(s1)
-    80203c2c:	0127b823          	sd	s2,16(a5)
+    80203f46:	609c                	ld	a5,0(s1)
+    80203f48:	0127b823          	sd	s2,16(a5)
   (*f1)->type = FD_PIPE;
-    80203c30:	000a3783          	ld	a5,0(s4)
-    80203c34:	0137a023          	sw	s3,0(a5)
+    80203f4c:	000a3783          	ld	a5,0(s4)
+    80203f50:	0137a023          	sw	s3,0(a5)
   (*f1)->readable = 0;
-    80203c38:	000a3783          	ld	a5,0(s4)
-    80203c3c:	00078423          	sb	zero,8(a5)
+    80203f54:	000a3783          	ld	a5,0(s4)
+    80203f58:	00078423          	sb	zero,8(a5)
   (*f1)->writable = 1;
-    80203c40:	000a3783          	ld	a5,0(s4)
-    80203c44:	013784a3          	sb	s3,9(a5)
+    80203f5c:	000a3783          	ld	a5,0(s4)
+    80203f60:	013784a3          	sb	s3,9(a5)
   (*f1)->pipe = pi;
-    80203c48:	000a3783          	ld	a5,0(s4)
-    80203c4c:	0127b823          	sd	s2,16(a5)
+    80203f64:	000a3783          	ld	a5,0(s4)
+    80203f68:	0127b823          	sd	s2,16(a5)
   return 0;
-    80203c50:	4501                	li	a0,0
-    80203c52:	a025                	j	80203c7a <pipealloc+0xc6>
+    80203f6c:	4501                	li	a0,0
+    80203f6e:	a025                	j	80203f96 <pipealloc+0xc6>
 
  bad:
   if(pi)
     kfree((char*)pi);
   if(*f0)
-    80203c54:	6088                	ld	a0,0(s1)
-    80203c56:	e501                	bnez	a0,80203c5e <pipealloc+0xaa>
-    80203c58:	a039                	j	80203c66 <pipealloc+0xb2>
-    80203c5a:	6088                	ld	a0,0(s1)
-    80203c5c:	c51d                	beqz	a0,80203c8a <pipealloc+0xd6>
+    80203f70:	6088                	ld	a0,0(s1)
+    80203f72:	e501                	bnez	a0,80203f7a <pipealloc+0xaa>
+    80203f74:	a039                	j	80203f82 <pipealloc+0xb2>
+    80203f76:	6088                	ld	a0,0(s1)
+    80203f78:	c51d                	beqz	a0,80203fa6 <pipealloc+0xd6>
     fileclose(*f0);
-    80203c5e:	00000097          	auipc	ra,0x0
-    80203c62:	be4080e7          	jalr	-1052(ra) # 80203842 <fileclose>
+    80203f7a:	00000097          	auipc	ra,0x0
+    80203f7e:	be4080e7          	jalr	-1052(ra) # 80203b5e <fileclose>
   if(*f1)
-    80203c66:	000a3783          	ld	a5,0(s4)
+    80203f82:	000a3783          	ld	a5,0(s4)
     fileclose(*f1);
   return -1;
-    80203c6a:	557d                	li	a0,-1
+    80203f86:	557d                	li	a0,-1
   if(*f1)
-    80203c6c:	c799                	beqz	a5,80203c7a <pipealloc+0xc6>
+    80203f88:	c799                	beqz	a5,80203f96 <pipealloc+0xc6>
     fileclose(*f1);
-    80203c6e:	853e                	mv	a0,a5
-    80203c70:	00000097          	auipc	ra,0x0
-    80203c74:	bd2080e7          	jalr	-1070(ra) # 80203842 <fileclose>
+    80203f8a:	853e                	mv	a0,a5
+    80203f8c:	00000097          	auipc	ra,0x0
+    80203f90:	bd2080e7          	jalr	-1070(ra) # 80203b5e <fileclose>
   return -1;
-    80203c78:	557d                	li	a0,-1
-}
-    80203c7a:	70a2                	ld	ra,40(sp)
-    80203c7c:	7402                	ld	s0,32(sp)
-    80203c7e:	64e2                	ld	s1,24(sp)
-    80203c80:	6942                	ld	s2,16(sp)
-    80203c82:	69a2                	ld	s3,8(sp)
-    80203c84:	6a02                	ld	s4,0(sp)
-    80203c86:	6145                	addi	sp,sp,48
-    80203c88:	8082                	ret
+    80203f94:	557d                	li	a0,-1
+}
+    80203f96:	70a2                	ld	ra,40(sp)
+    80203f98:	7402                	ld	s0,32(sp)
+    80203f9a:	64e2                	ld	s1,24(sp)
+    80203f9c:	6942                	ld	s2,16(sp)
+    80203f9e:	69a2                	ld	s3,8(sp)
+    80203fa0:	6a02                	ld	s4,0(sp)
+    80203fa2:	6145                	addi	sp,sp,48
+    80203fa4:	8082                	ret
   return -1;
-    80203c8a:	557d                	li	a0,-1
-    80203c8c:	b7fd                	j	80203c7a <pipealloc+0xc6>
+    80203fa6:	557d                	li	a0,-1
+    80203fa8:	b7fd                	j	80203f96 <pipealloc+0xc6>
 
-0000000080203c8e <pipeclose>:
+0000000080203faa <pipeclose>:
 
 void
 pipeclose(struct pipe *pi, int writable)
 {
-    80203c8e:	1101                	addi	sp,sp,-32
-    80203c90:	ec06                	sd	ra,24(sp)
-    80203c92:	e822                	sd	s0,16(sp)
-    80203c94:	e426                	sd	s1,8(sp)
-    80203c96:	e04a                	sd	s2,0(sp)
-    80203c98:	1000                	addi	s0,sp,32
-    80203c9a:	84aa                	mv	s1,a0
-    80203c9c:	892e                	mv	s2,a1
+    80203faa:	1101                	addi	sp,sp,-32
+    80203fac:	ec06                	sd	ra,24(sp)
+    80203fae:	e822                	sd	s0,16(sp)
+    80203fb0:	e426                	sd	s1,8(sp)
+    80203fb2:	e04a                	sd	s2,0(sp)
+    80203fb4:	1000                	addi	s0,sp,32
+    80203fb6:	84aa                	mv	s1,a0
+    80203fb8:	892e                	mv	s2,a1
   acquire(&pi->lock);
-    80203c9e:	ffffd097          	auipc	ra,0xffffd
-    80203ca2:	a28080e7          	jalr	-1496(ra) # 802006c6 <acquire>
+    80203fba:	ffffc097          	auipc	ra,0xffffc
+    80203fbe:	70c080e7          	jalr	1804(ra) # 802006c6 <acquire>
   if(writable){
-    80203ca6:	02090d63          	beqz	s2,80203ce0 <pipeclose+0x52>
+    80203fc2:	02090d63          	beqz	s2,80203ffc <pipeclose+0x52>
     pi->writeopen = 0;
-    80203caa:	2204a223          	sw	zero,548(s1)
+    80203fc6:	2204a223          	sw	zero,548(s1)
     wakeup(&pi->nread);
-    80203cae:	21848513          	addi	a0,s1,536
-    80203cb2:	ffffe097          	auipc	ra,0xffffe
-    80203cb6:	786080e7          	jalr	1926(ra) # 80202438 <wakeup>
+    80203fca:	21848513          	addi	a0,s1,536
+    80203fce:	ffffe097          	auipc	ra,0xffffe
+    80203fd2:	46a080e7          	jalr	1130(ra) # 80202438 <wakeup>
   } else {
     pi->readopen = 0;
     wakeup(&pi->nwrite);
   }
   if(pi->readopen == 0 && pi->writeopen == 0){
-    80203cba:	2204b783          	ld	a5,544(s1)
-    80203cbe:	eb95                	bnez	a5,80203cf2 <pipeclose+0x64>
+    80203fd6:	2204b783          	ld	a5,544(s1)
+    80203fda:	eb95                	bnez	a5,8020400e <pipeclose+0x64>
     release(&pi->lock);
-    80203cc0:	8526                	mv	a0,s1
-    80203cc2:	ffffd097          	auipc	ra,0xffffd
-    80203cc6:	a58080e7          	jalr	-1448(ra) # 8020071a <release>
+    80203fdc:	8526                	mv	a0,s1
+    80203fde:	ffffc097          	auipc	ra,0xffffc
+    80203fe2:	73c080e7          	jalr	1852(ra) # 8020071a <release>
     kfree((char*)pi);
-    80203cca:	8526                	mv	a0,s1
-    80203ccc:	ffffc097          	auipc	ra,0xffffc
-    80203cd0:	774080e7          	jalr	1908(ra) # 80200440 <kfree>
+    80203fe6:	8526                	mv	a0,s1
+    80203fe8:	ffffc097          	auipc	ra,0xffffc
+    80203fec:	458080e7          	jalr	1112(ra) # 80200440 <kfree>
   } else
     release(&pi->lock);
 }
-    80203cd4:	60e2                	ld	ra,24(sp)
-    80203cd6:	6442                	ld	s0,16(sp)
-    80203cd8:	64a2                	ld	s1,8(sp)
-    80203cda:	6902                	ld	s2,0(sp)
-    80203cdc:	6105                	addi	sp,sp,32
-    80203cde:	8082                	ret
+    80203ff0:	60e2                	ld	ra,24(sp)
+    80203ff2:	6442                	ld	s0,16(sp)
+    80203ff4:	64a2                	ld	s1,8(sp)
+    80203ff6:	6902                	ld	s2,0(sp)
+    80203ff8:	6105                	addi	sp,sp,32
+    80203ffa:	8082                	ret
     pi->readopen = 0;
-    80203ce0:	2204a023          	sw	zero,544(s1)
+    80203ffc:	2204a023          	sw	zero,544(s1)
     wakeup(&pi->nwrite);
-    80203ce4:	21c48513          	addi	a0,s1,540
-    80203ce8:	ffffe097          	auipc	ra,0xffffe
-    80203cec:	750080e7          	jalr	1872(ra) # 80202438 <wakeup>
-    80203cf0:	b7e9                	j	80203cba <pipeclose+0x2c>
+    80204000:	21c48513          	addi	a0,s1,540
+    80204004:	ffffe097          	auipc	ra,0xffffe
+    80204008:	434080e7          	jalr	1076(ra) # 80202438 <wakeup>
+    8020400c:	b7e9                	j	80203fd6 <pipeclose+0x2c>
     release(&pi->lock);
-    80203cf2:	8526                	mv	a0,s1
-    80203cf4:	ffffd097          	auipc	ra,0xffffd
-    80203cf8:	a26080e7          	jalr	-1498(ra) # 8020071a <release>
+    8020400e:	8526                	mv	a0,s1
+    80204010:	ffffc097          	auipc	ra,0xffffc
+    80204014:	70a080e7          	jalr	1802(ra) # 8020071a <release>
 }
-    80203cfc:	bfe1                	j	80203cd4 <pipeclose+0x46>
+    80204018:	bfe1                	j	80203ff0 <pipeclose+0x46>
 
-0000000080203cfe <pipewrite>:
+000000008020401a <pipewrite>:
 
 int
 pipewrite(struct pipe *pi, uint64 addr, int n)
 {
-    80203cfe:	7159                	addi	sp,sp,-112
-    80203d00:	f486                	sd	ra,104(sp)
-    80203d02:	f0a2                	sd	s0,96(sp)
-    80203d04:	eca6                	sd	s1,88(sp)
-    80203d06:	e8ca                	sd	s2,80(sp)
-    80203d08:	e4ce                	sd	s3,72(sp)
-    80203d0a:	e0d2                	sd	s4,64(sp)
-    80203d0c:	fc56                	sd	s5,56(sp)
-    80203d0e:	f85a                	sd	s6,48(sp)
-    80203d10:	f45e                	sd	s7,40(sp)
-    80203d12:	f062                	sd	s8,32(sp)
-    80203d14:	ec66                	sd	s9,24(sp)
-    80203d16:	1880                	addi	s0,sp,112
-    80203d18:	84aa                	mv	s1,a0
-    80203d1a:	8b2e                	mv	s6,a1
-    80203d1c:	8ab2                	mv	s5,a2
+    8020401a:	7159                	addi	sp,sp,-112
+    8020401c:	f486                	sd	ra,104(sp)
+    8020401e:	f0a2                	sd	s0,96(sp)
+    80204020:	eca6                	sd	s1,88(sp)
+    80204022:	e8ca                	sd	s2,80(sp)
+    80204024:	e4ce                	sd	s3,72(sp)
+    80204026:	e0d2                	sd	s4,64(sp)
+    80204028:	fc56                	sd	s5,56(sp)
+    8020402a:	f85a                	sd	s6,48(sp)
+    8020402c:	f45e                	sd	s7,40(sp)
+    8020402e:	f062                	sd	s8,32(sp)
+    80204030:	ec66                	sd	s9,24(sp)
+    80204032:	1880                	addi	s0,sp,112
+    80204034:	84aa                	mv	s1,a0
+    80204036:	8b2e                	mv	s6,a1
+    80204038:	8ab2                	mv	s5,a2
   int i;
   char ch;
   struct proc *pr = myproc();
-    80203d1e:	ffffe097          	auipc	ra,0xffffe
-    80203d22:	d1e080e7          	jalr	-738(ra) # 80201a3c <myproc>
-    80203d26:	892a                	mv	s2,a0
+    8020403a:	ffffe097          	auipc	ra,0xffffe
+    8020403e:	a02080e7          	jalr	-1534(ra) # 80201a3c <myproc>
+    80204042:	892a                	mv	s2,a0
 
   acquire(&pi->lock);
-    80203d28:	8526                	mv	a0,s1
-    80203d2a:	ffffd097          	auipc	ra,0xffffd
-    80203d2e:	99c080e7          	jalr	-1636(ra) # 802006c6 <acquire>
+    80204044:	8526                	mv	a0,s1
+    80204046:	ffffc097          	auipc	ra,0xffffc
+    8020404a:	680080e7          	jalr	1664(ra) # 802006c6 <acquire>
   for(i = 0; i < n; i++){
-    80203d32:	09505763          	blez	s5,80203dc0 <pipewrite+0xc2>
-    80203d36:	4b81                	li	s7,0
+    8020404e:	09505763          	blez	s5,802040dc <pipewrite+0xc2>
+    80204052:	4b81                	li	s7,0
     while(pi->nwrite == pi->nread + PIPESIZE){  //DOC: pipewrite-full
       if(pi->readopen == 0 || pr->killed){
         release(&pi->lock);
         return -1;
       }
       wakeup(&pi->nread);
-    80203d38:	21848a13          	addi	s4,s1,536
+    80204054:	21848a13          	addi	s4,s1,536
       sleep(&pi->nwrite, &pi->lock);
-    80203d3c:	21c48993          	addi	s3,s1,540
+    80204058:	21c48993          	addi	s3,s1,540
     }
     // if(copyin(pr->pagetable, &ch, addr + i, 1) == -1)
     if(copyin2(&ch, addr + i, 1) == -1)
-    80203d40:	f9f40c93          	addi	s9,s0,-97
-    80203d44:	5c7d                	li	s8,-1
+    8020405c:	f9f40c93          	addi	s9,s0,-97
+    80204060:	5c7d                	li	s8,-1
     while(pi->nwrite == pi->nread + PIPESIZE){  //DOC: pipewrite-full
-    80203d46:	2184a783          	lw	a5,536(s1)
-    80203d4a:	21c4a703          	lw	a4,540(s1)
-    80203d4e:	2007879b          	addiw	a5,a5,512
-    80203d52:	02f71b63          	bne	a4,a5,80203d88 <pipewrite+0x8a>
+    80204062:	2184a783          	lw	a5,536(s1)
+    80204066:	21c4a703          	lw	a4,540(s1)
+    8020406a:	2007879b          	addiw	a5,a5,512
+    8020406e:	02f71b63          	bne	a4,a5,802040a4 <pipewrite+0x8a>
       if(pi->readopen == 0 || pr->killed){
-    80203d56:	2204a783          	lw	a5,544(s1)
-    80203d5a:	c3c1                	beqz	a5,80203dda <pipewrite+0xdc>
-    80203d5c:	03092783          	lw	a5,48(s2)
-    80203d60:	efad                	bnez	a5,80203dda <pipewrite+0xdc>
+    80204072:	2204a783          	lw	a5,544(s1)
+    80204076:	c3c1                	beqz	a5,802040f6 <pipewrite+0xdc>
+    80204078:	03092783          	lw	a5,48(s2)
+    8020407c:	efad                	bnez	a5,802040f6 <pipewrite+0xdc>
       wakeup(&pi->nread);
-    80203d62:	8552                	mv	a0,s4
-    80203d64:	ffffe097          	auipc	ra,0xffffe
-    80203d68:	6d4080e7          	jalr	1748(ra) # 80202438 <wakeup>
+    8020407e:	8552                	mv	a0,s4
+    80204080:	ffffe097          	auipc	ra,0xffffe
+    80204084:	3b8080e7          	jalr	952(ra) # 80202438 <wakeup>
       sleep(&pi->nwrite, &pi->lock);
-    80203d6c:	85a6                	mv	a1,s1
-    80203d6e:	854e                	mv	a0,s3
-    80203d70:	ffffe097          	auipc	ra,0xffffe
-    80203d74:	54c080e7          	jalr	1356(ra) # 802022bc <sleep>
+    80204088:	85a6                	mv	a1,s1
+    8020408a:	854e                	mv	a0,s3
+    8020408c:	ffffe097          	auipc	ra,0xffffe
+    80204090:	230080e7          	jalr	560(ra) # 802022bc <sleep>
     while(pi->nwrite == pi->nread + PIPESIZE){  //DOC: pipewrite-full
-    80203d78:	2184a783          	lw	a5,536(s1)
-    80203d7c:	21c4a703          	lw	a4,540(s1)
-    80203d80:	2007879b          	addiw	a5,a5,512
-    80203d84:	fcf709e3          	beq	a4,a5,80203d56 <pipewrite+0x58>
+    80204094:	2184a783          	lw	a5,536(s1)
+    80204098:	21c4a703          	lw	a4,540(s1)
+    8020409c:	2007879b          	addiw	a5,a5,512
+    802040a0:	fcf709e3          	beq	a4,a5,80204072 <pipewrite+0x58>
     if(copyin2(&ch, addr + i, 1) == -1)
-    80203d88:	4605                	li	a2,1
-    80203d8a:	85da                	mv	a1,s6
-    80203d8c:	8566                	mv	a0,s9
-    80203d8e:	ffffd097          	auipc	ra,0xffffd
-    80203d92:	6c4080e7          	jalr	1732(ra) # 80201452 <copyin2>
-    80203d96:	03850663          	beq	a0,s8,80203dc2 <pipewrite+0xc4>
+    802040a4:	4605                	li	a2,1
+    802040a6:	85da                	mv	a1,s6
+    802040a8:	8566                	mv	a0,s9
+    802040aa:	ffffd097          	auipc	ra,0xffffd
+    802040ae:	3a8080e7          	jalr	936(ra) # 80201452 <copyin2>
+    802040b2:	03850663          	beq	a0,s8,802040de <pipewrite+0xc4>
       break;
     pi->data[pi->nwrite++ % PIPESIZE] = ch;
-    80203d9a:	21c4a783          	lw	a5,540(s1)
-    80203d9e:	0017871b          	addiw	a4,a5,1
-    80203da2:	20e4ae23          	sw	a4,540(s1)
-    80203da6:	1ff7f793          	andi	a5,a5,511
-    80203daa:	97a6                	add	a5,a5,s1
-    80203dac:	f9f44703          	lbu	a4,-97(s0)
-    80203db0:	00e78c23          	sb	a4,24(a5)
+    802040b6:	21c4a783          	lw	a5,540(s1)
+    802040ba:	0017871b          	addiw	a4,a5,1
+    802040be:	20e4ae23          	sw	a4,540(s1)
+    802040c2:	1ff7f793          	andi	a5,a5,511
+    802040c6:	97a6                	add	a5,a5,s1
+    802040c8:	f9f44703          	lbu	a4,-97(s0)
+    802040cc:	00e78c23          	sb	a4,24(a5)
   for(i = 0; i < n; i++){
-    80203db4:	2b85                	addiw	s7,s7,1
-    80203db6:	0b05                	addi	s6,s6,1
-    80203db8:	f97a97e3          	bne	s5,s7,80203d46 <pipewrite+0x48>
-    80203dbc:	8bd6                	mv	s7,s5
-    80203dbe:	a011                	j	80203dc2 <pipewrite+0xc4>
-    80203dc0:	4b81                	li	s7,0
+    802040d0:	2b85                	addiw	s7,s7,1
+    802040d2:	0b05                	addi	s6,s6,1
+    802040d4:	f97a97e3          	bne	s5,s7,80204062 <pipewrite+0x48>
+    802040d8:	8bd6                	mv	s7,s5
+    802040da:	a011                	j	802040de <pipewrite+0xc4>
+    802040dc:	4b81                	li	s7,0
   }
   wakeup(&pi->nread);
-    80203dc2:	21848513          	addi	a0,s1,536
-    80203dc6:	ffffe097          	auipc	ra,0xffffe
-    80203dca:	672080e7          	jalr	1650(ra) # 80202438 <wakeup>
+    802040de:	21848513          	addi	a0,s1,536
+    802040e2:	ffffe097          	auipc	ra,0xffffe
+    802040e6:	356080e7          	jalr	854(ra) # 80202438 <wakeup>
   release(&pi->lock);
-    80203dce:	8526                	mv	a0,s1
-    80203dd0:	ffffd097          	auipc	ra,0xffffd
-    80203dd4:	94a080e7          	jalr	-1718(ra) # 8020071a <release>
+    802040ea:	8526                	mv	a0,s1
+    802040ec:	ffffc097          	auipc	ra,0xffffc
+    802040f0:	62e080e7          	jalr	1582(ra) # 8020071a <release>
   return i;
-    80203dd8:	a039                	j	80203de6 <pipewrite+0xe8>
+    802040f4:	a039                	j	80204102 <pipewrite+0xe8>
         release(&pi->lock);
-    80203dda:	8526                	mv	a0,s1
-    80203ddc:	ffffd097          	auipc	ra,0xffffd
-    80203de0:	93e080e7          	jalr	-1730(ra) # 8020071a <release>
+    802040f6:	8526                	mv	a0,s1
+    802040f8:	ffffc097          	auipc	ra,0xffffc
+    802040fc:	622080e7          	jalr	1570(ra) # 8020071a <release>
         return -1;
-    80203de4:	5bfd                	li	s7,-1
-}
-    80203de6:	855e                	mv	a0,s7
-    80203de8:	70a6                	ld	ra,104(sp)
-    80203dea:	7406                	ld	s0,96(sp)
-    80203dec:	64e6                	ld	s1,88(sp)
-    80203dee:	6946                	ld	s2,80(sp)
-    80203df0:	69a6                	ld	s3,72(sp)
-    80203df2:	6a06                	ld	s4,64(sp)
-    80203df4:	7ae2                	ld	s5,56(sp)
-    80203df6:	7b42                	ld	s6,48(sp)
-    80203df8:	7ba2                	ld	s7,40(sp)
-    80203dfa:	7c02                	ld	s8,32(sp)
-    80203dfc:	6ce2                	ld	s9,24(sp)
-    80203dfe:	6165                	addi	sp,sp,112
-    80203e00:	8082                	ret
-
-0000000080203e02 <piperead>:
+    80204100:	5bfd                	li	s7,-1
+}
+    80204102:	855e                	mv	a0,s7
+    80204104:	70a6                	ld	ra,104(sp)
+    80204106:	7406                	ld	s0,96(sp)
+    80204108:	64e6                	ld	s1,88(sp)
+    8020410a:	6946                	ld	s2,80(sp)
+    8020410c:	69a6                	ld	s3,72(sp)
+    8020410e:	6a06                	ld	s4,64(sp)
+    80204110:	7ae2                	ld	s5,56(sp)
+    80204112:	7b42                	ld	s6,48(sp)
+    80204114:	7ba2                	ld	s7,40(sp)
+    80204116:	7c02                	ld	s8,32(sp)
+    80204118:	6ce2                	ld	s9,24(sp)
+    8020411a:	6165                	addi	sp,sp,112
+    8020411c:	8082                	ret
+
+000000008020411e <piperead>:
 
 int
 piperead(struct pipe *pi, uint64 addr, int n)
 {
-    80203e02:	715d                	addi	sp,sp,-80
-    80203e04:	e486                	sd	ra,72(sp)
-    80203e06:	e0a2                	sd	s0,64(sp)
-    80203e08:	fc26                	sd	s1,56(sp)
-    80203e0a:	f84a                	sd	s2,48(sp)
-    80203e0c:	f44e                	sd	s3,40(sp)
-    80203e0e:	f052                	sd	s4,32(sp)
-    80203e10:	ec56                	sd	s5,24(sp)
-    80203e12:	e85a                	sd	s6,16(sp)
-    80203e14:	0880                	addi	s0,sp,80
-    80203e16:	84aa                	mv	s1,a0
-    80203e18:	892e                	mv	s2,a1
-    80203e1a:	8a32                	mv	s4,a2
+    8020411e:	715d                	addi	sp,sp,-80
+    80204120:	e486                	sd	ra,72(sp)
+    80204122:	e0a2                	sd	s0,64(sp)
+    80204124:	fc26                	sd	s1,56(sp)
+    80204126:	f84a                	sd	s2,48(sp)
+    80204128:	f44e                	sd	s3,40(sp)
+    8020412a:	f052                	sd	s4,32(sp)
+    8020412c:	ec56                	sd	s5,24(sp)
+    8020412e:	e85a                	sd	s6,16(sp)
+    80204130:	0880                	addi	s0,sp,80
+    80204132:	84aa                	mv	s1,a0
+    80204134:	892e                	mv	s2,a1
+    80204136:	8a32                	mv	s4,a2
   int i;
   struct proc *pr = myproc();
-    80203e1c:	ffffe097          	auipc	ra,0xffffe
-    80203e20:	c20080e7          	jalr	-992(ra) # 80201a3c <myproc>
-    80203e24:	89aa                	mv	s3,a0
+    80204138:	ffffe097          	auipc	ra,0xffffe
+    8020413c:	904080e7          	jalr	-1788(ra) # 80201a3c <myproc>
+    80204140:	89aa                	mv	s3,a0
   char ch;
 
   acquire(&pi->lock);
-    80203e26:	8526                	mv	a0,s1
-    80203e28:	ffffd097          	auipc	ra,0xffffd
-    80203e2c:	89e080e7          	jalr	-1890(ra) # 802006c6 <acquire>
+    80204142:	8526                	mv	a0,s1
+    80204144:	ffffc097          	auipc	ra,0xffffc
+    80204148:	582080e7          	jalr	1410(ra) # 802006c6 <acquire>
   while(pi->nread == pi->nwrite && pi->writeopen){  //DOC: pipe-empty
-    80203e30:	2184a703          	lw	a4,536(s1)
-    80203e34:	21c4a783          	lw	a5,540(s1)
+    8020414c:	2184a703          	lw	a4,536(s1)
+    80204150:	21c4a783          	lw	a5,540(s1)
     if(pr->killed){
       release(&pi->lock);
       return -1;
     }
     sleep(&pi->nread, &pi->lock); //DOC: piperead-sleep
-    80203e38:	21848a93          	addi	s5,s1,536
+    80204154:	21848a93          	addi	s5,s1,536
   while(pi->nread == pi->nwrite && pi->writeopen){  //DOC: pipe-empty
-    80203e3c:	02f71463          	bne	a4,a5,80203e64 <piperead+0x62>
-    80203e40:	2244a783          	lw	a5,548(s1)
-    80203e44:	c385                	beqz	a5,80203e64 <piperead+0x62>
+    80204158:	02f71463          	bne	a4,a5,80204180 <piperead+0x62>
+    8020415c:	2244a783          	lw	a5,548(s1)
+    80204160:	c385                	beqz	a5,80204180 <piperead+0x62>
     if(pr->killed){
-    80203e46:	0309a783          	lw	a5,48(s3)
-    80203e4a:	ebc1                	bnez	a5,80203eda <piperead+0xd8>
+    80204162:	0309a783          	lw	a5,48(s3)
+    80204166:	ebc1                	bnez	a5,802041f6 <piperead+0xd8>
     sleep(&pi->nread, &pi->lock); //DOC: piperead-sleep
-    80203e4c:	85a6                	mv	a1,s1
-    80203e4e:	8556                	mv	a0,s5
-    80203e50:	ffffe097          	auipc	ra,0xffffe
-    80203e54:	46c080e7          	jalr	1132(ra) # 802022bc <sleep>
+    80204168:	85a6                	mv	a1,s1
+    8020416a:	8556                	mv	a0,s5
+    8020416c:	ffffe097          	auipc	ra,0xffffe
+    80204170:	150080e7          	jalr	336(ra) # 802022bc <sleep>
   while(pi->nread == pi->nwrite && pi->writeopen){  //DOC: pipe-empty
-    80203e58:	2184a703          	lw	a4,536(s1)
-    80203e5c:	21c4a783          	lw	a5,540(s1)
-    80203e60:	fef700e3          	beq	a4,a5,80203e40 <piperead+0x3e>
+    80204174:	2184a703          	lw	a4,536(s1)
+    80204178:	21c4a783          	lw	a5,540(s1)
+    8020417c:	fef700e3          	beq	a4,a5,8020415c <piperead+0x3e>
   }
   for(i = 0; i < n; i++){  //DOC: piperead-copy
-    80203e64:	4981                	li	s3,0
+    80204180:	4981                	li	s3,0
     if(pi->nread == pi->nwrite)
       break;
     ch = pi->data[pi->nread++ % PIPESIZE];
     // if(copyout(pr->pagetable, addr + i, &ch, 1) == -1)
     if(copyout2(addr + i, &ch, 1) == -1)
-    80203e66:	fbf40b13          	addi	s6,s0,-65
-    80203e6a:	5afd                	li	s5,-1
+    80204182:	fbf40b13          	addi	s6,s0,-65
+    80204186:	5afd                	li	s5,-1
   for(i = 0; i < n; i++){  //DOC: piperead-copy
-    80203e6c:	05405163          	blez	s4,80203eae <piperead+0xac>
+    80204188:	05405163          	blez	s4,802041ca <piperead+0xac>
     if(pi->nread == pi->nwrite)
-    80203e70:	2184a783          	lw	a5,536(s1)
-    80203e74:	21c4a703          	lw	a4,540(s1)
-    80203e78:	02f70b63          	beq	a4,a5,80203eae <piperead+0xac>
+    8020418c:	2184a783          	lw	a5,536(s1)
+    80204190:	21c4a703          	lw	a4,540(s1)
+    80204194:	02f70b63          	beq	a4,a5,802041ca <piperead+0xac>
     ch = pi->data[pi->nread++ % PIPESIZE];
-    80203e7c:	0017871b          	addiw	a4,a5,1
-    80203e80:	20e4ac23          	sw	a4,536(s1)
-    80203e84:	1ff7f793          	andi	a5,a5,511
-    80203e88:	97a6                	add	a5,a5,s1
-    80203e8a:	0187c783          	lbu	a5,24(a5)
-    80203e8e:	faf40fa3          	sb	a5,-65(s0)
+    80204198:	0017871b          	addiw	a4,a5,1
+    8020419c:	20e4ac23          	sw	a4,536(s1)
+    802041a0:	1ff7f793          	andi	a5,a5,511
+    802041a4:	97a6                	add	a5,a5,s1
+    802041a6:	0187c783          	lbu	a5,24(a5)
+    802041aa:	faf40fa3          	sb	a5,-65(s0)
     if(copyout2(addr + i, &ch, 1) == -1)
-    80203e92:	4605                	li	a2,1
-    80203e94:	85da                	mv	a1,s6
-    80203e96:	854a                	mv	a0,s2
-    80203e98:	ffffd097          	auipc	ra,0xffffd
-    80203e9c:	4da080e7          	jalr	1242(ra) # 80201372 <copyout2>
-    80203ea0:	01550763          	beq	a0,s5,80203eae <piperead+0xac>
+    802041ae:	4605                	li	a2,1
+    802041b0:	85da                	mv	a1,s6
+    802041b2:	854a                	mv	a0,s2
+    802041b4:	ffffd097          	auipc	ra,0xffffd
+    802041b8:	1be080e7          	jalr	446(ra) # 80201372 <copyout2>
+    802041bc:	01550763          	beq	a0,s5,802041ca <piperead+0xac>
   for(i = 0; i < n; i++){  //DOC: piperead-copy
-    80203ea4:	2985                	addiw	s3,s3,1
-    80203ea6:	0905                	addi	s2,s2,1
-    80203ea8:	fd3a14e3          	bne	s4,s3,80203e70 <piperead+0x6e>
-    80203eac:	89d2                	mv	s3,s4
+    802041c0:	2985                	addiw	s3,s3,1
+    802041c2:	0905                	addi	s2,s2,1
+    802041c4:	fd3a14e3          	bne	s4,s3,8020418c <piperead+0x6e>
+    802041c8:	89d2                	mv	s3,s4
       break;
   }
   wakeup(&pi->nwrite);  //DOC: piperead-wakeup
-    80203eae:	21c48513          	addi	a0,s1,540
-    80203eb2:	ffffe097          	auipc	ra,0xffffe
-    80203eb6:	586080e7          	jalr	1414(ra) # 80202438 <wakeup>
+    802041ca:	21c48513          	addi	a0,s1,540
+    802041ce:	ffffe097          	auipc	ra,0xffffe
+    802041d2:	26a080e7          	jalr	618(ra) # 80202438 <wakeup>
   release(&pi->lock);
-    80203eba:	8526                	mv	a0,s1
-    80203ebc:	ffffd097          	auipc	ra,0xffffd
-    80203ec0:	85e080e7          	jalr	-1954(ra) # 8020071a <release>
+    802041d6:	8526                	mv	a0,s1
+    802041d8:	ffffc097          	auipc	ra,0xffffc
+    802041dc:	542080e7          	jalr	1346(ra) # 8020071a <release>
   return i;
 }
-    80203ec4:	854e                	mv	a0,s3
-    80203ec6:	60a6                	ld	ra,72(sp)
-    80203ec8:	6406                	ld	s0,64(sp)
-    80203eca:	74e2                	ld	s1,56(sp)
-    80203ecc:	7942                	ld	s2,48(sp)
-    80203ece:	79a2                	ld	s3,40(sp)
-    80203ed0:	7a02                	ld	s4,32(sp)
-    80203ed2:	6ae2                	ld	s5,24(sp)
-    80203ed4:	6b42                	ld	s6,16(sp)
-    80203ed6:	6161                	addi	sp,sp,80
-    80203ed8:	8082                	ret
+    802041e0:	854e                	mv	a0,s3
+    802041e2:	60a6                	ld	ra,72(sp)
+    802041e4:	6406                	ld	s0,64(sp)
+    802041e6:	74e2                	ld	s1,56(sp)
+    802041e8:	7942                	ld	s2,48(sp)
+    802041ea:	79a2                	ld	s3,40(sp)
+    802041ec:	7a02                	ld	s4,32(sp)
+    802041ee:	6ae2                	ld	s5,24(sp)
+    802041f0:	6b42                	ld	s6,16(sp)
+    802041f2:	6161                	addi	sp,sp,80
+    802041f4:	8082                	ret
       release(&pi->lock);
-    80203eda:	8526                	mv	a0,s1
-    80203edc:	ffffd097          	auipc	ra,0xffffd
-    80203ee0:	83e080e7          	jalr	-1986(ra) # 8020071a <release>
+    802041f6:	8526                	mv	a0,s1
+    802041f8:	ffffc097          	auipc	ra,0xffffc
+    802041fc:	522080e7          	jalr	1314(ra) # 8020071a <release>
       return -1;
-    80203ee4:	59fd                	li	s3,-1
-    80203ee6:	bff9                	j	80203ec4 <piperead+0xc2>
+    80204200:	59fd                	li	s3,-1
+    80204202:	bff9                	j	802041e0 <piperead+0xc2>
 
-0000000080203ee8 <exec>:
+0000000080204204 <exec>:
   return 0;
 }
 
 
 int exec(char *path, char **argv)
 {
-    80203ee8:	dd010113          	addi	sp,sp,-560
-    80203eec:	22113423          	sd	ra,552(sp)
-    80203ef0:	22813023          	sd	s0,544(sp)
-    80203ef4:	20913c23          	sd	s1,536(sp)
-    80203ef8:	21213823          	sd	s2,528(sp)
-    80203efc:	21313423          	sd	s3,520(sp)
-    80203f00:	21413023          	sd	s4,512(sp)
-    80203f04:	ffd6                	sd	s5,504(sp)
-    80203f06:	fbda                	sd	s6,496(sp)
-    80203f08:	f7de                	sd	s7,488(sp)
-    80203f0a:	f3e2                	sd	s8,480(sp)
-    80203f0c:	efe6                	sd	s9,472(sp)
-    80203f0e:	ebea                	sd	s10,464(sp)
-    80203f10:	e7ee                	sd	s11,456(sp)
-    80203f12:	1c00                	addi	s0,sp,560
-    80203f14:	892a                	mv	s2,a0
-    80203f16:	dca43c23          	sd	a0,-552(s0)
-    80203f1a:	deb43423          	sd	a1,-536(s0)
+    80204204:	dd010113          	addi	sp,sp,-560
+    80204208:	22113423          	sd	ra,552(sp)
+    8020420c:	22813023          	sd	s0,544(sp)
+    80204210:	20913c23          	sd	s1,536(sp)
+    80204214:	21213823          	sd	s2,528(sp)
+    80204218:	21313423          	sd	s3,520(sp)
+    8020421c:	21413023          	sd	s4,512(sp)
+    80204220:	ffd6                	sd	s5,504(sp)
+    80204222:	fbda                	sd	s6,496(sp)
+    80204224:	f7de                	sd	s7,488(sp)
+    80204226:	f3e2                	sd	s8,480(sp)
+    80204228:	efe6                	sd	s9,472(sp)
+    8020422a:	ebea                	sd	s10,464(sp)
+    8020422c:	e7ee                	sd	s11,456(sp)
+    8020422e:	1c00                	addi	s0,sp,560
+    80204230:	892a                	mv	s2,a0
+    80204232:	dca43c23          	sd	a0,-552(s0)
+    80204236:	deb43423          	sd	a1,-536(s0)
   struct elfhdr elf;
   struct dirent *ep;
   struct proghdr ph;
   pagetable_t pagetable = 0, oldpagetable;
   pagetable_t kpagetable = 0, oldkpagetable;
   struct proc *p = myproc();
-    80203f1e:	ffffe097          	auipc	ra,0xffffe
-    80203f22:	b1e080e7          	jalr	-1250(ra) # 80201a3c <myproc>
-    80203f26:	84aa                	mv	s1,a0
+    8020423a:	ffffe097          	auipc	ra,0xffffe
+    8020423e:	802080e7          	jalr	-2046(ra) # 80201a3c <myproc>
+    80204242:	84aa                	mv	s1,a0
 
   // Make a copy of p->kpt without old user space, 
   // but with the same kstack we are using now, which can't be changed
   if ((kpagetable = (pagetable_t)kalloc()) == NULL) {
-    80203f28:	ffffc097          	auipc	ra,0xffffc
-    80203f2c:	632080e7          	jalr	1586(ra) # 8020055a <kalloc>
-    80203f30:	2a050863          	beqz	a0,802041e0 <exec+0x2f8>
-    80203f34:	8b2a                	mv	s6,a0
+    80204244:	ffffc097          	auipc	ra,0xffffc
+    80204248:	316080e7          	jalr	790(ra) # 8020055a <kalloc>
+    8020424c:	2a050863          	beqz	a0,802044fc <exec+0x2f8>
+    80204250:	8b2a                	mv	s6,a0
     return -1;
   }
   memmove(kpagetable, p->kpagetable, PGSIZE);
-    80203f36:	6605                	lui	a2,0x1
-    80203f38:	6cac                	ld	a1,88(s1)
-    80203f3a:	ffffd097          	auipc	ra,0xffffd
-    80203f3e:	884080e7          	jalr	-1916(ra) # 802007be <memmove>
+    80204252:	6605                	lui	a2,0x1
+    80204254:	6cac                	ld	a1,88(s1)
+    80204256:	ffffc097          	auipc	ra,0xffffc
+    8020425a:	568080e7          	jalr	1384(ra) # 802007be <memmove>
   for (int i = 0; i < PX(2, MAXUVA); i++) {
     kpagetable[i] = 0;
-    80203f42:	000b3023          	sd	zero,0(s6)
-    80203f46:	000b3423          	sd	zero,8(s6)
+    8020425e:	000b3023          	sd	zero,0(s6)
+    80204262:	000b3423          	sd	zero,8(s6)
   }
 
   if((ep = ename(path)) == NULL) {
-    80203f4a:	854a                	mv	a0,s2
-    80203f4c:	00003097          	auipc	ra,0x3
-    80203f50:	a9a080e7          	jalr	-1382(ra) # 802069e6 <ename>
-    80203f54:	8a2a                	mv	s4,a0
-    80203f56:	3a050e63          	beqz	a0,80204312 <exec+0x42a>
+    80204266:	854a                	mv	a0,s2
+    80204268:	00003097          	auipc	ra,0x3
+    8020426c:	ace080e7          	jalr	-1330(ra) # 80206d36 <ename>
+    80204270:	8a2a                	mv	s4,a0
+    80204272:	3a050e63          	beqz	a0,8020462e <exec+0x42a>
     #ifdef DEBUG
     printf("[exec] %s not found\n", path);
     #endif
     goto bad;
   }
   elock(ep);
-    80203f5a:	00002097          	auipc	ra,0x2
-    80203f5e:	2e4080e7          	jalr	740(ra) # 8020623e <elock>
+    80204276:	00002097          	auipc	ra,0x2
+    8020427a:	318080e7          	jalr	792(ra) # 8020658e <elock>
 
   // Check ELF header
   if(eread(ep, 0, (uint64) &elf, 0, sizeof(elf)) != sizeof(elf))
-    80203f62:	04000713          	li	a4,64
-    80203f66:	4681                	li	a3,0
-    80203f68:	e4840613          	addi	a2,s0,-440
-    80203f6c:	4581                	li	a1,0
-    80203f6e:	8552                	mv	a0,s4
-    80203f70:	00002097          	auipc	ra,0x2
-    80203f74:	9ca080e7          	jalr	-1590(ra) # 8020593a <eread>
-    80203f78:	04000793          	li	a5,64
-    80203f7c:	00f51a63          	bne	a0,a5,80203f90 <exec+0xa8>
+    8020427e:	04000713          	li	a4,64
+    80204282:	4681                	li	a3,0
+    80204284:	e4840613          	addi	a2,s0,-440
+    80204288:	4581                	li	a1,0
+    8020428a:	8552                	mv	a0,s4
+    8020428c:	00002097          	auipc	ra,0x2
+    80204290:	9fe080e7          	jalr	-1538(ra) # 80205c8a <eread>
+    80204294:	04000793          	li	a5,64
+    80204298:	00f51a63          	bne	a0,a5,802042ac <exec+0xa8>
     goto bad;
   if(elf.magic != ELF_MAGIC)
-    80203f80:	e4842703          	lw	a4,-440(s0)
-    80203f84:	464c47b7          	lui	a5,0x464c4
-    80203f88:	57f78793          	addi	a5,a5,1407 # 464c457f <_entry-0x39d3ba81>
-    80203f8c:	00f70963          	beq	a4,a5,80203f9e <exec+0xb6>
+    8020429c:	e4842703          	lw	a4,-440(s0)
+    802042a0:	464c47b7          	lui	a5,0x464c4
+    802042a4:	57f78793          	addi	a5,a5,1407 # 464c457f <_entry-0x39d3ba81>
+    802042a8:	00f70963          	beq	a4,a5,802042ba <exec+0xb6>
   printf("[exec] reach bad\n");
   #endif
   if(pagetable)
     proc_freepagetable(pagetable, sz);
   if(kpagetable)
     kvmfree(kpagetable, 0);
-    80203f90:	4581                	li	a1,0
-    80203f92:	855a                	mv	a0,s6
-    80203f94:	ffffd097          	auipc	ra,0xffffd
-    80203f98:	6de080e7          	jalr	1758(ra) # 80201672 <kvmfree>
+    802042ac:	4581                	li	a1,0
+    802042ae:	855a                	mv	a0,s6
+    802042b0:	ffffd097          	auipc	ra,0xffffd
+    802042b4:	3c2080e7          	jalr	962(ra) # 80201672 <kvmfree>
   if(ep){
-    80203f9c:	a4bd                	j	8020420a <exec+0x322>
+    802042b8:	a4bd                	j	80204526 <exec+0x322>
   if((pagetable = proc_pagetable(p)) == NULL)
-    80203f9e:	8526                	mv	a0,s1
-    80203fa0:	ffffe097          	auipc	ra,0xffffe
-    80203fa4:	b80080e7          	jalr	-1152(ra) # 80201b20 <proc_pagetable>
-    80203fa8:	e0a43423          	sd	a0,-504(s0)
-    80203fac:	d175                	beqz	a0,80203f90 <exec+0xa8>
+    802042ba:	8526                	mv	a0,s1
+    802042bc:	ffffe097          	auipc	ra,0xffffe
+    802042c0:	864080e7          	jalr	-1948(ra) # 80201b20 <proc_pagetable>
+    802042c4:	e0a43423          	sd	a0,-504(s0)
+    802042c8:	d175                	beqz	a0,802042ac <exec+0xa8>
   for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){
-    80203fae:	e6842783          	lw	a5,-408(s0)
-    80203fb2:	e8045703          	lhu	a4,-384(s0)
-    80203fb6:	cb3d                	beqz	a4,8020402c <exec+0x144>
+    802042ca:	e6842783          	lw	a5,-408(s0)
+    802042ce:	e8045703          	lhu	a4,-384(s0)
+    802042d2:	cb3d                	beqz	a4,80204348 <exec+0x144>
   uint64 argc, sz = 0, sp, ustack[MAXARG+1], stackbase;
-    80203fb8:	4481                	li	s1,0
+    802042d4:	4481                	li	s1,0
   for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){
-    80203fba:	e0043023          	sd	zero,-512(s0)
+    802042d6:	e0043023          	sd	zero,-512(s0)
     if(eread(ep, 0, (uint64)&ph, off, sizeof(ph)) != sizeof(ph))
-    80203fbe:	e1040713          	addi	a4,s0,-496
-    80203fc2:	dee43023          	sd	a4,-544(s0)
+    802042da:	e1040713          	addi	a4,s0,-496
+    802042de:	dee43023          	sd	a4,-544(s0)
     if(ph.vaddr % PGSIZE != 0)
-    80203fc6:	6a85                	lui	s5,0x1
-    80203fc8:	fffa8713          	addi	a4,s5,-1 # fff <_entry-0x801ff001>
-    80203fcc:	dce43823          	sd	a4,-560(s0)
+    802042e2:	6a85                	lui	s5,0x1
+    802042e4:	fffa8713          	addi	a4,s5,-1 # fff <_entry-0x801ff001>
+    802042e8:	dce43823          	sd	a4,-560(s0)
   for(i = 0; i < sz; i += PGSIZE){
-    80203fd0:	6d85                	lui	s11,0x1
-    80203fd2:	7d7d                	lui	s10,0xfffff
-    80203fd4:	a4c9                	j	80204296 <exec+0x3ae>
+    802042ec:	6d85                	lui	s11,0x1
+    802042ee:	7d7d                	lui	s10,0xfffff
+    802042f0:	a4c9                	j	802045b2 <exec+0x3ae>
       panic("loadseg: address should exist");
-    80203fd6:	00006517          	auipc	a0,0x6
-    80203fda:	b7a50513          	addi	a0,a0,-1158 # 80209b50 <digits+0x7d0>
-    80203fde:	ffffc097          	auipc	ra,0xffffc
-    80203fe2:	166080e7          	jalr	358(ra) # 80200144 <panic>
+    802042f2:	00006517          	auipc	a0,0x6
+    802042f6:	89650513          	addi	a0,a0,-1898 # 80209b88 <digits+0x808>
+    802042fa:	ffffc097          	auipc	ra,0xffffc
+    802042fe:	e4a080e7          	jalr	-438(ra) # 80200144 <panic>
     if(eread(ep, 0, (uint64)pa, offset+i, n) != n)
-    80203fe6:	874a                	mv	a4,s2
-    80203fe8:	009c86bb          	addw	a3,s9,s1
-    80203fec:	4581                	li	a1,0
-    80203fee:	8552                	mv	a0,s4
-    80203ff0:	00002097          	auipc	ra,0x2
-    80203ff4:	94a080e7          	jalr	-1718(ra) # 8020593a <eread>
-    80203ff8:	2501                	sext.w	a0,a0
-    80203ffa:	1ea91763          	bne	s2,a0,802041e8 <exec+0x300>
+    80204302:	874a                	mv	a4,s2
+    80204304:	009c86bb          	addw	a3,s9,s1
+    80204308:	4581                	li	a1,0
+    8020430a:	8552                	mv	a0,s4
+    8020430c:	00002097          	auipc	ra,0x2
+    80204310:	97e080e7          	jalr	-1666(ra) # 80205c8a <eread>
+    80204314:	2501                	sext.w	a0,a0
+    80204316:	1ea91763          	bne	s2,a0,80204504 <exec+0x300>
   for(i = 0; i < sz; i += PGSIZE){
-    80203ffe:	009d84bb          	addw	s1,s11,s1
-    80204002:	013d09bb          	addw	s3,s10,s3
-    80204006:	2774f863          	bgeu	s1,s7,80204276 <exec+0x38e>
+    8020431a:	009d84bb          	addw	s1,s11,s1
+    8020431e:	013d09bb          	addw	s3,s10,s3
+    80204322:	2774f863          	bgeu	s1,s7,80204592 <exec+0x38e>
     pa = walkaddr(pagetable, va + i);
-    8020400a:	02049593          	slli	a1,s1,0x20
-    8020400e:	9181                	srli	a1,a1,0x20
-    80204010:	95e2                	add	a1,a1,s8
-    80204012:	e0843503          	ld	a0,-504(s0)
-    80204016:	ffffd097          	auipc	ra,0xffffd
-    8020401a:	b98080e7          	jalr	-1128(ra) # 80200bae <walkaddr>
-    8020401e:	862a                	mv	a2,a0
+    80204326:	02049593          	slli	a1,s1,0x20
+    8020432a:	9181                	srli	a1,a1,0x20
+    8020432c:	95e2                	add	a1,a1,s8
+    8020432e:	e0843503          	ld	a0,-504(s0)
+    80204332:	ffffd097          	auipc	ra,0xffffd
+    80204336:	87c080e7          	jalr	-1924(ra) # 80200bae <walkaddr>
+    8020433a:	862a                	mv	a2,a0
     if(pa == NULL)
-    80204020:	d95d                	beqz	a0,80203fd6 <exec+0xee>
+    8020433c:	d95d                	beqz	a0,802042f2 <exec+0xee>
       n = PGSIZE;
-    80204022:	8956                	mv	s2,s5
+    8020433e:	8956                	mv	s2,s5
     if(sz - i < PGSIZE)
-    80204024:	fd59f1e3          	bgeu	s3,s5,80203fe6 <exec+0xfe>
+    80204340:	fd59f1e3          	bgeu	s3,s5,80204302 <exec+0xfe>
       n = sz - i;
-    80204028:	894e                	mv	s2,s3
-    8020402a:	bf75                	j	80203fe6 <exec+0xfe>
+    80204344:	894e                	mv	s2,s3
+    80204346:	bf75                	j	80204302 <exec+0xfe>
   uint64 argc, sz = 0, sp, ustack[MAXARG+1], stackbase;
-    8020402c:	4481                	li	s1,0
+    80204348:	4481                	li	s1,0
   eunlock(ep);
-    8020402e:	8552                	mv	a0,s4
-    80204030:	00002097          	auipc	ra,0x2
-    80204034:	244080e7          	jalr	580(ra) # 80206274 <eunlock>
+    8020434a:	8552                	mv	a0,s4
+    8020434c:	00002097          	auipc	ra,0x2
+    80204350:	278080e7          	jalr	632(ra) # 802065c4 <eunlock>
   eput(ep);
-    80204038:	8552                	mv	a0,s4
-    8020403a:	00002097          	auipc	ra,0x2
-    8020403e:	288080e7          	jalr	648(ra) # 802062c2 <eput>
+    80204354:	8552                	mv	a0,s4
+    80204356:	00002097          	auipc	ra,0x2
+    8020435a:	2bc080e7          	jalr	700(ra) # 80206612 <eput>
   p = myproc();
-    80204042:	ffffe097          	auipc	ra,0xffffe
-    80204046:	9fa080e7          	jalr	-1542(ra) # 80201a3c <myproc>
-    8020404a:	8aaa                	mv	s5,a0
+    8020435e:	ffffd097          	auipc	ra,0xffffd
+    80204362:	6de080e7          	jalr	1758(ra) # 80201a3c <myproc>
+    80204366:	8aaa                	mv	s5,a0
   uint64 oldsz = p->sz;
-    8020404c:	04853d03          	ld	s10,72(a0)
+    80204368:	04853d03          	ld	s10,72(a0)
   sz = PGROUNDUP(sz);
-    80204050:	6785                	lui	a5,0x1
-    80204052:	17fd                	addi	a5,a5,-1 # fff <_entry-0x801ff001>
-    80204054:	97a6                	add	a5,a5,s1
-    80204056:	777d                	lui	a4,0xfffff
-    80204058:	8ff9                	and	a5,a5,a4
-    8020405a:	def43823          	sd	a5,-528(s0)
+    8020436c:	6785                	lui	a5,0x1
+    8020436e:	17fd                	addi	a5,a5,-1 # fff <_entry-0x801ff001>
+    80204370:	97a6                	add	a5,a5,s1
+    80204372:	777d                	lui	a4,0xfffff
+    80204374:	8ff9                	and	a5,a5,a4
+    80204376:	def43823          	sd	a5,-528(s0)
   if((sz1 = uvmalloc(pagetable, kpagetable, sz, sz + 2*PGSIZE)) == 0)
-    8020405e:	6689                	lui	a3,0x2
-    80204060:	96be                	add	a3,a3,a5
-    80204062:	863e                	mv	a2,a5
-    80204064:	85da                	mv	a1,s6
-    80204066:	e0843483          	ld	s1,-504(s0)
-    8020406a:	8526                	mv	a0,s1
-    8020406c:	ffffd097          	auipc	ra,0xffffd
-    80204070:	f9e080e7          	jalr	-98(ra) # 8020100a <uvmalloc>
-    80204074:	8caa                	mv	s9,a0
+    8020437a:	6689                	lui	a3,0x2
+    8020437c:	96be                	add	a3,a3,a5
+    8020437e:	863e                	mv	a2,a5
+    80204380:	85da                	mv	a1,s6
+    80204382:	e0843483          	ld	s1,-504(s0)
+    80204386:	8526                	mv	a0,s1
+    80204388:	ffffd097          	auipc	ra,0xffffd
+    8020438c:	c82080e7          	jalr	-894(ra) # 8020100a <uvmalloc>
+    80204390:	8caa                	mv	s9,a0
   ep = 0;
-    80204076:	4a01                	li	s4,0
+    80204392:	4a01                	li	s4,0
   if((sz1 = uvmalloc(pagetable, kpagetable, sz, sz + 2*PGSIZE)) == 0)
-    80204078:	16050863          	beqz	a0,802041e8 <exec+0x300>
+    80204394:	16050863          	beqz	a0,80204504 <exec+0x300>
   uvmclear(pagetable, sz-2*PGSIZE);
-    8020407c:	75f9                	lui	a1,0xffffe
-    8020407e:	95aa                	add	a1,a1,a0
-    80204080:	8526                	mv	a0,s1
-    80204082:	ffffd097          	auipc	ra,0xffffd
-    80204086:	232080e7          	jalr	562(ra) # 802012b4 <uvmclear>
+    80204398:	75f9                	lui	a1,0xffffe
+    8020439a:	95aa                	add	a1,a1,a0
+    8020439c:	8526                	mv	a0,s1
+    8020439e:	ffffd097          	auipc	ra,0xffffd
+    802043a2:	f16080e7          	jalr	-234(ra) # 802012b4 <uvmclear>
   stackbase = sp - PGSIZE;
-    8020408a:	7bfd                	lui	s7,0xfffff
-    8020408c:	9be6                	add	s7,s7,s9
+    802043a6:	7bfd                	lui	s7,0xfffff
+    802043a8:	9be6                	add	s7,s7,s9
   for(argc = 0; argv[argc]; argc++) {
-    8020408e:	de843783          	ld	a5,-536(s0)
-    80204092:	6388                	ld	a0,0(a5)
-    80204094:	c92d                	beqz	a0,80204106 <exec+0x21e>
-    80204096:	e8840993          	addi	s3,s0,-376
-    8020409a:	f8840c13          	addi	s8,s0,-120
+    802043aa:	de843783          	ld	a5,-536(s0)
+    802043ae:	6388                	ld	a0,0(a5)
+    802043b0:	c92d                	beqz	a0,80204422 <exec+0x21e>
+    802043b2:	e8840993          	addi	s3,s0,-376
+    802043b6:	f8840c13          	addi	s8,s0,-120
   sp = sz;
-    8020409e:	8966                	mv	s2,s9
+    802043ba:	8966                	mv	s2,s9
   for(argc = 0; argv[argc]; argc++) {
-    802040a0:	4481                	li	s1,0
+    802043bc:	4481                	li	s1,0
     sp -= strlen(argv[argc]) + 1;
-    802040a2:	ffffd097          	auipc	ra,0xffffd
-    802040a6:	844080e7          	jalr	-1980(ra) # 802008e6 <strlen>
-    802040aa:	0015079b          	addiw	a5,a0,1
-    802040ae:	40f907b3          	sub	a5,s2,a5
+    802043be:	ffffc097          	auipc	ra,0xffffc
+    802043c2:	528080e7          	jalr	1320(ra) # 802008e6 <strlen>
+    802043c6:	0015079b          	addiw	a5,a0,1
+    802043ca:	40f907b3          	sub	a5,s2,a5
     sp -= sp % 16; // riscv sp must be 16-byte aligned
-    802040b2:	ff07f913          	andi	s2,a5,-16
+    802043ce:	ff07f913          	andi	s2,a5,-16
     if(sp < stackbase)
-    802040b6:	1b796463          	bltu	s2,s7,8020425e <exec+0x376>
+    802043d2:	1b796463          	bltu	s2,s7,8020457a <exec+0x376>
     if(copyout(pagetable, sp, argv[argc], strlen(argv[argc]) + 1) < 0)
-    802040ba:	de843d83          	ld	s11,-536(s0)
-    802040be:	000dba03          	ld	s4,0(s11) # 1000 <_entry-0x801ff000>
-    802040c2:	8552                	mv	a0,s4
-    802040c4:	ffffd097          	auipc	ra,0xffffd
-    802040c8:	822080e7          	jalr	-2014(ra) # 802008e6 <strlen>
-    802040cc:	0015069b          	addiw	a3,a0,1
-    802040d0:	8652                	mv	a2,s4
-    802040d2:	85ca                	mv	a1,s2
-    802040d4:	e0843503          	ld	a0,-504(s0)
-    802040d8:	ffffd097          	auipc	ra,0xffffd
-    802040dc:	20e080e7          	jalr	526(ra) # 802012e6 <copyout>
-    802040e0:	18054363          	bltz	a0,80204266 <exec+0x37e>
+    802043d6:	de843d83          	ld	s11,-536(s0)
+    802043da:	000dba03          	ld	s4,0(s11) # 1000 <_entry-0x801ff000>
+    802043de:	8552                	mv	a0,s4
+    802043e0:	ffffc097          	auipc	ra,0xffffc
+    802043e4:	506080e7          	jalr	1286(ra) # 802008e6 <strlen>
+    802043e8:	0015069b          	addiw	a3,a0,1
+    802043ec:	8652                	mv	a2,s4
+    802043ee:	85ca                	mv	a1,s2
+    802043f0:	e0843503          	ld	a0,-504(s0)
+    802043f4:	ffffd097          	auipc	ra,0xffffd
+    802043f8:	ef2080e7          	jalr	-270(ra) # 802012e6 <copyout>
+    802043fc:	18054363          	bltz	a0,80204582 <exec+0x37e>
     ustack[argc] = sp;
-    802040e4:	0129b023          	sd	s2,0(s3)
+    80204400:	0129b023          	sd	s2,0(s3)
   for(argc = 0; argv[argc]; argc++) {
-    802040e8:	0485                	addi	s1,s1,1
-    802040ea:	008d8793          	addi	a5,s11,8
-    802040ee:	def43423          	sd	a5,-536(s0)
-    802040f2:	008db503          	ld	a0,8(s11)
-    802040f6:	c911                	beqz	a0,8020410a <exec+0x222>
+    80204404:	0485                	addi	s1,s1,1
+    80204406:	008d8793          	addi	a5,s11,8
+    8020440a:	def43423          	sd	a5,-536(s0)
+    8020440e:	008db503          	ld	a0,8(s11)
+    80204412:	c911                	beqz	a0,80204426 <exec+0x222>
     if(argc >= MAXARG)
-    802040f8:	09a1                	addi	s3,s3,8
-    802040fa:	fb3c14e3          	bne	s8,s3,802040a2 <exec+0x1ba>
+    80204414:	09a1                	addi	s3,s3,8
+    80204416:	fb3c14e3          	bne	s8,s3,802043be <exec+0x1ba>
   sz = sz1;
-    802040fe:	df943823          	sd	s9,-528(s0)
+    8020441a:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    80204102:	4a01                	li	s4,0
-    80204104:	a0d5                	j	802041e8 <exec+0x300>
+    8020441e:	4a01                	li	s4,0
+    80204420:	a0d5                	j	80204504 <exec+0x300>
   sp = sz;
-    80204106:	8966                	mv	s2,s9
+    80204422:	8966                	mv	s2,s9
   for(argc = 0; argv[argc]; argc++) {
-    80204108:	4481                	li	s1,0
+    80204424:	4481                	li	s1,0
   ustack[argc] = 0;
-    8020410a:	00349793          	slli	a5,s1,0x3
-    8020410e:	f9078793          	addi	a5,a5,-112
-    80204112:	97a2                	add	a5,a5,s0
-    80204114:	ee07bc23          	sd	zero,-264(a5)
+    80204426:	00349793          	slli	a5,s1,0x3
+    8020442a:	f9078793          	addi	a5,a5,-112
+    8020442e:	97a2                	add	a5,a5,s0
+    80204430:	ee07bc23          	sd	zero,-264(a5)
   sp -= (argc+1) * sizeof(uint64);
-    80204118:	00148693          	addi	a3,s1,1
-    8020411c:	068e                	slli	a3,a3,0x3
-    8020411e:	40d90933          	sub	s2,s2,a3
+    80204434:	00148693          	addi	a3,s1,1
+    80204438:	068e                	slli	a3,a3,0x3
+    8020443a:	40d90933          	sub	s2,s2,a3
   sp -= sp % 16;
-    80204122:	ff097913          	andi	s2,s2,-16
+    8020443e:	ff097913          	andi	s2,s2,-16
   if(sp < stackbase)
-    80204126:	01797663          	bgeu	s2,s7,80204132 <exec+0x24a>
+    80204442:	01797663          	bgeu	s2,s7,8020444e <exec+0x24a>
   sz = sz1;
-    8020412a:	df943823          	sd	s9,-528(s0)
+    80204446:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    8020412e:	4a01                	li	s4,0
-    80204130:	a865                	j	802041e8 <exec+0x300>
+    8020444a:	4a01                	li	s4,0
+    8020444c:	a865                	j	80204504 <exec+0x300>
   if(copyout(pagetable, sp, (char *)ustack, (argc+1)*sizeof(uint64)) < 0)
-    80204132:	e8840613          	addi	a2,s0,-376
-    80204136:	85ca                	mv	a1,s2
-    80204138:	e0843503          	ld	a0,-504(s0)
-    8020413c:	ffffd097          	auipc	ra,0xffffd
-    80204140:	1aa080e7          	jalr	426(ra) # 802012e6 <copyout>
-    80204144:	12054563          	bltz	a0,8020426e <exec+0x386>
+    8020444e:	e8840613          	addi	a2,s0,-376
+    80204452:	85ca                	mv	a1,s2
+    80204454:	e0843503          	ld	a0,-504(s0)
+    80204458:	ffffd097          	auipc	ra,0xffffd
+    8020445c:	e8e080e7          	jalr	-370(ra) # 802012e6 <copyout>
+    80204460:	12054563          	bltz	a0,8020458a <exec+0x386>
   p->trapframe->a1 = sp;
-    80204148:	060ab783          	ld	a5,96(s5)
-    8020414c:	0727bc23          	sd	s2,120(a5)
+    80204464:	060ab783          	ld	a5,96(s5)
+    80204468:	0727bc23          	sd	s2,120(a5)
   for(last=s=path; *s; s++)
-    80204150:	dd843783          	ld	a5,-552(s0)
-    80204154:	0007c703          	lbu	a4,0(a5)
-    80204158:	cf11                	beqz	a4,80204174 <exec+0x28c>
-    8020415a:	0785                	addi	a5,a5,1
+    8020446c:	dd843783          	ld	a5,-552(s0)
+    80204470:	0007c703          	lbu	a4,0(a5)
+    80204474:	cf11                	beqz	a4,80204490 <exec+0x28c>
+    80204476:	0785                	addi	a5,a5,1
     if(*s == '/')
-    8020415c:	02f00693          	li	a3,47
-    80204160:	a039                	j	8020416e <exec+0x286>
+    80204478:	02f00693          	li	a3,47
+    8020447c:	a039                	j	8020448a <exec+0x286>
       last = s+1;
-    80204162:	dcf43c23          	sd	a5,-552(s0)
+    8020447e:	dcf43c23          	sd	a5,-552(s0)
   for(last=s=path; *s; s++)
-    80204166:	0785                	addi	a5,a5,1
-    80204168:	fff7c703          	lbu	a4,-1(a5)
-    8020416c:	c701                	beqz	a4,80204174 <exec+0x28c>
+    80204482:	0785                	addi	a5,a5,1
+    80204484:	fff7c703          	lbu	a4,-1(a5)
+    80204488:	c701                	beqz	a4,80204490 <exec+0x28c>
     if(*s == '/')
-    8020416e:	fed71ce3          	bne	a4,a3,80204166 <exec+0x27e>
-    80204172:	bfc5                	j	80204162 <exec+0x27a>
+    8020448a:	fed71ce3          	bne	a4,a3,80204482 <exec+0x27e>
+    8020448e:	bfc5                	j	8020447e <exec+0x27a>
   safestrcpy(p->name, last, sizeof(p->name));
-    80204174:	4641                	li	a2,16
-    80204176:	dd843583          	ld	a1,-552(s0)
-    8020417a:	160a8513          	addi	a0,s5,352
-    8020417e:	ffffc097          	auipc	ra,0xffffc
-    80204182:	736080e7          	jalr	1846(ra) # 802008b4 <safestrcpy>
+    80204490:	4641                	li	a2,16
+    80204492:	dd843583          	ld	a1,-552(s0)
+    80204496:	160a8513          	addi	a0,s5,352
+    8020449a:	ffffc097          	auipc	ra,0xffffc
+    8020449e:	41a080e7          	jalr	1050(ra) # 802008b4 <safestrcpy>
   oldpagetable = p->pagetable;
-    80204186:	050ab503          	ld	a0,80(s5)
+    802044a2:	050ab503          	ld	a0,80(s5)
   oldkpagetable = p->kpagetable;
-    8020418a:	058ab983          	ld	s3,88(s5)
+    802044a6:	058ab983          	ld	s3,88(s5)
   p->pagetable = pagetable;
-    8020418e:	e0843783          	ld	a5,-504(s0)
-    80204192:	04fab823          	sd	a5,80(s5)
+    802044aa:	e0843783          	ld	a5,-504(s0)
+    802044ae:	04fab823          	sd	a5,80(s5)
   p->kpagetable = kpagetable;
-    80204196:	056abc23          	sd	s6,88(s5)
+    802044b2:	056abc23          	sd	s6,88(s5)
   p->sz = sz;
-    8020419a:	059ab423          	sd	s9,72(s5)
+    802044b6:	059ab423          	sd	s9,72(s5)
   p->trapframe->epc = elf.entry;  // initial program counter = main
-    8020419e:	060ab783          	ld	a5,96(s5)
-    802041a2:	e6043703          	ld	a4,-416(s0)
-    802041a6:	ef98                	sd	a4,24(a5)
+    802044ba:	060ab783          	ld	a5,96(s5)
+    802044be:	e6043703          	ld	a4,-416(s0)
+    802044c2:	ef98                	sd	a4,24(a5)
   p->trapframe->sp = sp; // initial stack pointer
-    802041a8:	060ab783          	ld	a5,96(s5)
-    802041ac:	0327b823          	sd	s2,48(a5)
+    802044c4:	060ab783          	ld	a5,96(s5)
+    802044c8:	0327b823          	sd	s2,48(a5)
   proc_freepagetable(oldpagetable, oldsz);
-    802041b0:	85ea                	mv	a1,s10
-    802041b2:	ffffe097          	auipc	ra,0xffffe
-    802041b6:	a0a080e7          	jalr	-1526(ra) # 80201bbc <proc_freepagetable>
+    802044cc:	85ea                	mv	a1,s10
+    802044ce:	ffffd097          	auipc	ra,0xffffd
+    802044d2:	6ee080e7          	jalr	1774(ra) # 80201bbc <proc_freepagetable>
   w_satp(MAKE_SATP(p->kpagetable));
-    802041ba:	058ab783          	ld	a5,88(s5)
-    802041be:	83b1                	srli	a5,a5,0xc
-    802041c0:	577d                	li	a4,-1
-    802041c2:	177e                	slli	a4,a4,0x3f
-    802041c4:	8fd9                	or	a5,a5,a4
+    802044d6:	058ab783          	ld	a5,88(s5)
+    802044da:	83b1                	srli	a5,a5,0xc
+    802044dc:	577d                	li	a4,-1
+    802044de:	177e                	slli	a4,a4,0x3f
+    802044e0:	8fd9                	or	a5,a5,a4
   asm volatile("csrw satp, %0" : : "r" (x));
-    802041c6:	18079073          	csrw	satp,a5
+    802044e2:	18079073          	csrw	satp,a5
   asm volatile("sfence.vma");
-    802041ca:	12000073          	sfence.vma
+    802044e6:	12000073          	sfence.vma
   kvmfree(oldkpagetable, 0);
-    802041ce:	4581                	li	a1,0
-    802041d0:	854e                	mv	a0,s3
-    802041d2:	ffffd097          	auipc	ra,0xffffd
-    802041d6:	4a0080e7          	jalr	1184(ra) # 80201672 <kvmfree>
+    802044ea:	4581                	li	a1,0
+    802044ec:	854e                	mv	a0,s3
+    802044ee:	ffffd097          	auipc	ra,0xffffd
+    802044f2:	184080e7          	jalr	388(ra) # 80201672 <kvmfree>
   return argc; // this ends up in a0, the first argument to main(argc, argv)
-    802041da:	0004851b          	sext.w	a0,s1
-    802041de:	a089                	j	80204220 <exec+0x338>
+    802044f6:	0004851b          	sext.w	a0,s1
+    802044fa:	a089                	j	8020453c <exec+0x338>
     return -1;
-    802041e0:	557d                	li	a0,-1
-    802041e2:	a83d                	j	80204220 <exec+0x338>
-    802041e4:	de943823          	sd	s1,-528(s0)
+    802044fc:	557d                	li	a0,-1
+    802044fe:	a83d                	j	8020453c <exec+0x338>
+    80204500:	de943823          	sd	s1,-528(s0)
     proc_freepagetable(pagetable, sz);
-    802041e8:	df043583          	ld	a1,-528(s0)
-    802041ec:	e0843503          	ld	a0,-504(s0)
-    802041f0:	ffffe097          	auipc	ra,0xffffe
-    802041f4:	9cc080e7          	jalr	-1588(ra) # 80201bbc <proc_freepagetable>
+    80204504:	df043583          	ld	a1,-528(s0)
+    80204508:	e0843503          	ld	a0,-504(s0)
+    8020450c:	ffffd097          	auipc	ra,0xffffd
+    80204510:	6b0080e7          	jalr	1712(ra) # 80201bbc <proc_freepagetable>
     kvmfree(kpagetable, 0);
-    802041f8:	4581                	li	a1,0
-    802041fa:	855a                	mv	a0,s6
-    802041fc:	ffffd097          	auipc	ra,0xffffd
-    80204200:	476080e7          	jalr	1142(ra) # 80201672 <kvmfree>
+    80204514:	4581                	li	a1,0
+    80204516:	855a                	mv	a0,s6
+    80204518:	ffffd097          	auipc	ra,0xffffd
+    8020451c:	15a080e7          	jalr	346(ra) # 80201672 <kvmfree>
     eunlock(ep);
     eput(ep);
   }
   return -1;
-    80204204:	557d                	li	a0,-1
+    80204520:	557d                	li	a0,-1
   if(ep){
-    80204206:	000a0d63          	beqz	s4,80204220 <exec+0x338>
+    80204522:	000a0d63          	beqz	s4,8020453c <exec+0x338>
     eunlock(ep);
-    8020420a:	8552                	mv	a0,s4
-    8020420c:	00002097          	auipc	ra,0x2
-    80204210:	068080e7          	jalr	104(ra) # 80206274 <eunlock>
+    80204526:	8552                	mv	a0,s4
+    80204528:	00002097          	auipc	ra,0x2
+    8020452c:	09c080e7          	jalr	156(ra) # 802065c4 <eunlock>
     eput(ep);
-    80204214:	8552                	mv	a0,s4
-    80204216:	00002097          	auipc	ra,0x2
-    8020421a:	0ac080e7          	jalr	172(ra) # 802062c2 <eput>
+    80204530:	8552                	mv	a0,s4
+    80204532:	00002097          	auipc	ra,0x2
+    80204536:	0e0080e7          	jalr	224(ra) # 80206612 <eput>
   return -1;
-    8020421e:	557d                	li	a0,-1
-}
-    80204220:	22813083          	ld	ra,552(sp)
-    80204224:	22013403          	ld	s0,544(sp)
-    80204228:	21813483          	ld	s1,536(sp)
-    8020422c:	21013903          	ld	s2,528(sp)
-    80204230:	20813983          	ld	s3,520(sp)
-    80204234:	20013a03          	ld	s4,512(sp)
-    80204238:	7afe                	ld	s5,504(sp)
-    8020423a:	7b5e                	ld	s6,496(sp)
-    8020423c:	7bbe                	ld	s7,488(sp)
-    8020423e:	7c1e                	ld	s8,480(sp)
-    80204240:	6cfe                	ld	s9,472(sp)
-    80204242:	6d5e                	ld	s10,464(sp)
-    80204244:	6dbe                	ld	s11,456(sp)
-    80204246:	23010113          	addi	sp,sp,560
-    8020424a:	8082                	ret
-    8020424c:	de943823          	sd	s1,-528(s0)
-    80204250:	bf61                	j	802041e8 <exec+0x300>
-    80204252:	de943823          	sd	s1,-528(s0)
-    80204256:	bf49                	j	802041e8 <exec+0x300>
-    80204258:	de943823          	sd	s1,-528(s0)
-    8020425c:	b771                	j	802041e8 <exec+0x300>
+    8020453a:	557d                	li	a0,-1
+}
+    8020453c:	22813083          	ld	ra,552(sp)
+    80204540:	22013403          	ld	s0,544(sp)
+    80204544:	21813483          	ld	s1,536(sp)
+    80204548:	21013903          	ld	s2,528(sp)
+    8020454c:	20813983          	ld	s3,520(sp)
+    80204550:	20013a03          	ld	s4,512(sp)
+    80204554:	7afe                	ld	s5,504(sp)
+    80204556:	7b5e                	ld	s6,496(sp)
+    80204558:	7bbe                	ld	s7,488(sp)
+    8020455a:	7c1e                	ld	s8,480(sp)
+    8020455c:	6cfe                	ld	s9,472(sp)
+    8020455e:	6d5e                	ld	s10,464(sp)
+    80204560:	6dbe                	ld	s11,456(sp)
+    80204562:	23010113          	addi	sp,sp,560
+    80204566:	8082                	ret
+    80204568:	de943823          	sd	s1,-528(s0)
+    8020456c:	bf61                	j	80204504 <exec+0x300>
+    8020456e:	de943823          	sd	s1,-528(s0)
+    80204572:	bf49                	j	80204504 <exec+0x300>
+    80204574:	de943823          	sd	s1,-528(s0)
+    80204578:	b771                	j	80204504 <exec+0x300>
   sz = sz1;
-    8020425e:	df943823          	sd	s9,-528(s0)
+    8020457a:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    80204262:	4a01                	li	s4,0
-    80204264:	b751                	j	802041e8 <exec+0x300>
+    8020457e:	4a01                	li	s4,0
+    80204580:	b751                	j	80204504 <exec+0x300>
   sz = sz1;
-    80204266:	df943823          	sd	s9,-528(s0)
+    80204582:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    8020426a:	4a01                	li	s4,0
-    8020426c:	bfb5                	j	802041e8 <exec+0x300>
+    80204586:	4a01                	li	s4,0
+    80204588:	bfb5                	j	80204504 <exec+0x300>
   sz = sz1;
-    8020426e:	df943823          	sd	s9,-528(s0)
+    8020458a:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    80204272:	4a01                	li	s4,0
-    80204274:	bf95                	j	802041e8 <exec+0x300>
+    8020458e:	4a01                	li	s4,0
+    80204590:	bf95                	j	80204504 <exec+0x300>
     if((sz1 = uvmalloc(pagetable, kpagetable, sz, ph.vaddr + ph.memsz)) == 0)
-    80204276:	df043483          	ld	s1,-528(s0)
+    80204592:	df043483          	ld	s1,-528(s0)
   for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){
-    8020427a:	e0043783          	ld	a5,-512(s0)
-    8020427e:	0017869b          	addiw	a3,a5,1
-    80204282:	e0d43023          	sd	a3,-512(s0)
-    80204286:	df843783          	ld	a5,-520(s0)
-    8020428a:	0387879b          	addiw	a5,a5,56
-    8020428e:	e8045703          	lhu	a4,-384(s0)
-    80204292:	d8e6dee3          	bge	a3,a4,8020402e <exec+0x146>
+    80204596:	e0043783          	ld	a5,-512(s0)
+    8020459a:	0017869b          	addiw	a3,a5,1
+    8020459e:	e0d43023          	sd	a3,-512(s0)
+    802045a2:	df843783          	ld	a5,-520(s0)
+    802045a6:	0387879b          	addiw	a5,a5,56
+    802045aa:	e8045703          	lhu	a4,-384(s0)
+    802045ae:	d8e6dee3          	bge	a3,a4,8020434a <exec+0x146>
     if(eread(ep, 0, (uint64)&ph, off, sizeof(ph)) != sizeof(ph))
-    80204296:	2781                	sext.w	a5,a5
-    80204298:	def43c23          	sd	a5,-520(s0)
-    8020429c:	03800713          	li	a4,56
-    802042a0:	86be                	mv	a3,a5
-    802042a2:	de043603          	ld	a2,-544(s0)
-    802042a6:	4581                	li	a1,0
-    802042a8:	8552                	mv	a0,s4
-    802042aa:	00001097          	auipc	ra,0x1
-    802042ae:	690080e7          	jalr	1680(ra) # 8020593a <eread>
-    802042b2:	03800793          	li	a5,56
-    802042b6:	f2f517e3          	bne	a0,a5,802041e4 <exec+0x2fc>
+    802045b2:	2781                	sext.w	a5,a5
+    802045b4:	def43c23          	sd	a5,-520(s0)
+    802045b8:	03800713          	li	a4,56
+    802045bc:	86be                	mv	a3,a5
+    802045be:	de043603          	ld	a2,-544(s0)
+    802045c2:	4581                	li	a1,0
+    802045c4:	8552                	mv	a0,s4
+    802045c6:	00001097          	auipc	ra,0x1
+    802045ca:	6c4080e7          	jalr	1732(ra) # 80205c8a <eread>
+    802045ce:	03800793          	li	a5,56
+    802045d2:	f2f517e3          	bne	a0,a5,80204500 <exec+0x2fc>
     if(ph.type != ELF_PROG_LOAD)
-    802042ba:	e1042783          	lw	a5,-496(s0)
-    802042be:	4705                	li	a4,1
-    802042c0:	fae79de3          	bne	a5,a4,8020427a <exec+0x392>
+    802045d6:	e1042783          	lw	a5,-496(s0)
+    802045da:	4705                	li	a4,1
+    802045dc:	fae79de3          	bne	a5,a4,80204596 <exec+0x392>
     if(ph.memsz < ph.filesz)
-    802042c4:	e3843683          	ld	a3,-456(s0)
-    802042c8:	e3043783          	ld	a5,-464(s0)
-    802042cc:	f8f6e0e3          	bltu	a3,a5,8020424c <exec+0x364>
+    802045e0:	e3843683          	ld	a3,-456(s0)
+    802045e4:	e3043783          	ld	a5,-464(s0)
+    802045e8:	f8f6e0e3          	bltu	a3,a5,80204568 <exec+0x364>
     if(ph.vaddr + ph.memsz < ph.vaddr)
-    802042d0:	e2043783          	ld	a5,-480(s0)
-    802042d4:	96be                	add	a3,a3,a5
-    802042d6:	f6f6eee3          	bltu	a3,a5,80204252 <exec+0x36a>
+    802045ec:	e2043783          	ld	a5,-480(s0)
+    802045f0:	96be                	add	a3,a3,a5
+    802045f2:	f6f6eee3          	bltu	a3,a5,8020456e <exec+0x36a>
     if((sz1 = uvmalloc(pagetable, kpagetable, sz, ph.vaddr + ph.memsz)) == 0)
-    802042da:	8626                	mv	a2,s1
-    802042dc:	85da                	mv	a1,s6
-    802042de:	e0843503          	ld	a0,-504(s0)
-    802042e2:	ffffd097          	auipc	ra,0xffffd
-    802042e6:	d28080e7          	jalr	-728(ra) # 8020100a <uvmalloc>
-    802042ea:	dea43823          	sd	a0,-528(s0)
-    802042ee:	d52d                	beqz	a0,80204258 <exec+0x370>
+    802045f6:	8626                	mv	a2,s1
+    802045f8:	85da                	mv	a1,s6
+    802045fa:	e0843503          	ld	a0,-504(s0)
+    802045fe:	ffffd097          	auipc	ra,0xffffd
+    80204602:	a0c080e7          	jalr	-1524(ra) # 8020100a <uvmalloc>
+    80204606:	dea43823          	sd	a0,-528(s0)
+    8020460a:	d52d                	beqz	a0,80204574 <exec+0x370>
     if(ph.vaddr % PGSIZE != 0)
-    802042f0:	e2043c03          	ld	s8,-480(s0)
-    802042f4:	dd043783          	ld	a5,-560(s0)
-    802042f8:	00fc77b3          	and	a5,s8,a5
-    802042fc:	ee0796e3          	bnez	a5,802041e8 <exec+0x300>
+    8020460c:	e2043c03          	ld	s8,-480(s0)
+    80204610:	dd043783          	ld	a5,-560(s0)
+    80204614:	00fc77b3          	and	a5,s8,a5
+    80204618:	ee0796e3          	bnez	a5,80204504 <exec+0x300>
     if(loadseg(pagetable, ph.vaddr, ep, ph.off, ph.filesz) < 0)
-    80204300:	e1842c83          	lw	s9,-488(s0)
-    80204304:	e3042b83          	lw	s7,-464(s0)
+    8020461c:	e1842c83          	lw	s9,-488(s0)
+    80204620:	e3042b83          	lw	s7,-464(s0)
   for(i = 0; i < sz; i += PGSIZE){
-    80204308:	f60b87e3          	beqz	s7,80204276 <exec+0x38e>
-    8020430c:	89de                	mv	s3,s7
-    8020430e:	4481                	li	s1,0
-    80204310:	b9ed                	j	8020400a <exec+0x122>
+    80204624:	f60b87e3          	beqz	s7,80204592 <exec+0x38e>
+    80204628:	89de                	mv	s3,s7
+    8020462a:	4481                	li	s1,0
+    8020462c:	b9ed                	j	80204326 <exec+0x122>
     kvmfree(kpagetable, 0);
-    80204312:	4581                	li	a1,0
-    80204314:	855a                	mv	a0,s6
-    80204316:	ffffd097          	auipc	ra,0xffffd
-    8020431a:	35c080e7          	jalr	860(ra) # 80201672 <kvmfree>
+    8020462e:	4581                	li	a1,0
+    80204630:	855a                	mv	a0,s6
+    80204632:	ffffd097          	auipc	ra,0xffffd
+    80204636:	040080e7          	jalr	64(ra) # 80201672 <kvmfree>
   return -1;
-    8020431e:	557d                	li	a0,-1
-    80204320:	b701                	j	80204220 <exec+0x338>
+    8020463a:	557d                	li	a0,-1
+    8020463c:	b701                	j	8020453c <exec+0x338>
 
-0000000080204322 <argfd>:
+000000008020463e <argfd>:
 
 // Fetch the nth word-sized system call argument as a file descriptor
 // and return both the descriptor and the corresponding struct file.
 static int
 argfd(int n, int *pfd, struct file **pf)
 {
-    80204322:	7179                	addi	sp,sp,-48
-    80204324:	f406                	sd	ra,40(sp)
-    80204326:	f022                	sd	s0,32(sp)
-    80204328:	ec26                	sd	s1,24(sp)
-    8020432a:	e84a                	sd	s2,16(sp)
-    8020432c:	1800                	addi	s0,sp,48
-    8020432e:	892e                	mv	s2,a1
-    80204330:	84b2                	mv	s1,a2
+    8020463e:	7179                	addi	sp,sp,-48
+    80204640:	f406                	sd	ra,40(sp)
+    80204642:	f022                	sd	s0,32(sp)
+    80204644:	ec26                	sd	s1,24(sp)
+    80204646:	e84a                	sd	s2,16(sp)
+    80204648:	1800                	addi	s0,sp,48
+    8020464a:	892e                	mv	s2,a1
+    8020464c:	84b2                	mv	s1,a2
   int fd;
   struct file *f;
 
   if(argint(n, &fd) < 0)
-    80204332:	fdc40593          	addi	a1,s0,-36
-    80204336:	fffff097          	auipc	ra,0xfffff
-    8020433a:	a88080e7          	jalr	-1400(ra) # 80202dbe <argint>
-    8020433e:	04054063          	bltz	a0,8020437e <argfd+0x5c>
+    8020464e:	fdc40593          	addi	a1,s0,-36
+    80204652:	fffff097          	auipc	ra,0xfffff
+    80204656:	9c0080e7          	jalr	-1600(ra) # 80203012 <argint>
+    8020465a:	04054063          	bltz	a0,8020469a <argfd+0x5c>
     return -1;
   if(fd < 0 || fd >= NOFILE || (f=myproc()->ofile[fd]) == NULL)
-    80204342:	fdc42703          	lw	a4,-36(s0)
-    80204346:	47bd                	li	a5,15
-    80204348:	02e7ed63          	bltu	a5,a4,80204382 <argfd+0x60>
-    8020434c:	ffffd097          	auipc	ra,0xffffd
-    80204350:	6f0080e7          	jalr	1776(ra) # 80201a3c <myproc>
-    80204354:	fdc42703          	lw	a4,-36(s0)
-    80204358:	01a70793          	addi	a5,a4,26 # fffffffffffff01a <ebss_clear+0xffffffff7fdd901a>
-    8020435c:	078e                	slli	a5,a5,0x3
-    8020435e:	953e                	add	a0,a0,a5
-    80204360:	651c                	ld	a5,8(a0)
-    80204362:	c395                	beqz	a5,80204386 <argfd+0x64>
+    8020465e:	fdc42703          	lw	a4,-36(s0)
+    80204662:	47bd                	li	a5,15
+    80204664:	02e7ed63          	bltu	a5,a4,8020469e <argfd+0x60>
+    80204668:	ffffd097          	auipc	ra,0xffffd
+    8020466c:	3d4080e7          	jalr	980(ra) # 80201a3c <myproc>
+    80204670:	fdc42703          	lw	a4,-36(s0)
+    80204674:	01a70793          	addi	a5,a4,26 # fffffffffffff01a <ebss_clear+0xffffffff7fdd901a>
+    80204678:	078e                	slli	a5,a5,0x3
+    8020467a:	953e                	add	a0,a0,a5
+    8020467c:	651c                	ld	a5,8(a0)
+    8020467e:	c395                	beqz	a5,802046a2 <argfd+0x64>
     return -1;
   if(pfd)
-    80204364:	00090463          	beqz	s2,8020436c <argfd+0x4a>
+    80204680:	00090463          	beqz	s2,80204688 <argfd+0x4a>
     *pfd = fd;
-    80204368:	00e92023          	sw	a4,0(s2)
+    80204684:	00e92023          	sw	a4,0(s2)
   if(pf)
     *pf = f;
   return 0;
-    8020436c:	4501                	li	a0,0
+    80204688:	4501                	li	a0,0
   if(pf)
-    8020436e:	c091                	beqz	s1,80204372 <argfd+0x50>
+    8020468a:	c091                	beqz	s1,8020468e <argfd+0x50>
     *pf = f;
-    80204370:	e09c                	sd	a5,0(s1)
-}
-    80204372:	70a2                	ld	ra,40(sp)
-    80204374:	7402                	ld	s0,32(sp)
-    80204376:	64e2                	ld	s1,24(sp)
-    80204378:	6942                	ld	s2,16(sp)
-    8020437a:	6145                	addi	sp,sp,48
-    8020437c:	8082                	ret
+    8020468c:	e09c                	sd	a5,0(s1)
+}
+    8020468e:	70a2                	ld	ra,40(sp)
+    80204690:	7402                	ld	s0,32(sp)
+    80204692:	64e2                	ld	s1,24(sp)
+    80204694:	6942                	ld	s2,16(sp)
+    80204696:	6145                	addi	sp,sp,48
+    80204698:	8082                	ret
     return -1;
-    8020437e:	557d                	li	a0,-1
-    80204380:	bfcd                	j	80204372 <argfd+0x50>
+    8020469a:	557d                	li	a0,-1
+    8020469c:	bfcd                	j	8020468e <argfd+0x50>
     return -1;
-    80204382:	557d                	li	a0,-1
-    80204384:	b7fd                	j	80204372 <argfd+0x50>
-    80204386:	557d                	li	a0,-1
-    80204388:	b7ed                	j	80204372 <argfd+0x50>
+    8020469e:	557d                	li	a0,-1
+    802046a0:	b7fd                	j	8020468e <argfd+0x50>
+    802046a2:	557d                	li	a0,-1
+    802046a4:	b7ed                	j	8020468e <argfd+0x50>
 
-000000008020438a <fdalloc>:
+00000000802046a6 <fdalloc>:
 
 // Allocate a file descriptor for the given file.
 // Takes over file reference from caller on success.
 static int
 fdalloc(struct file *f)
 {
-    8020438a:	1101                	addi	sp,sp,-32
-    8020438c:	ec06                	sd	ra,24(sp)
-    8020438e:	e822                	sd	s0,16(sp)
-    80204390:	e426                	sd	s1,8(sp)
-    80204392:	1000                	addi	s0,sp,32
-    80204394:	84aa                	mv	s1,a0
+    802046a6:	1101                	addi	sp,sp,-32
+    802046a8:	ec06                	sd	ra,24(sp)
+    802046aa:	e822                	sd	s0,16(sp)
+    802046ac:	e426                	sd	s1,8(sp)
+    802046ae:	1000                	addi	s0,sp,32
+    802046b0:	84aa                	mv	s1,a0
   int fd;
   struct proc *p = myproc();
-    80204396:	ffffd097          	auipc	ra,0xffffd
-    8020439a:	6a6080e7          	jalr	1702(ra) # 80201a3c <myproc>
-    8020439e:	862a                	mv	a2,a0
+    802046b2:	ffffd097          	auipc	ra,0xffffd
+    802046b6:	38a080e7          	jalr	906(ra) # 80201a3c <myproc>
+    802046ba:	862a                	mv	a2,a0
 
   for(fd = 0; fd < NOFILE; fd++){
-    802043a0:	0d850793          	addi	a5,a0,216
-    802043a4:	4501                	li	a0,0
-    802043a6:	46c1                	li	a3,16
+    802046bc:	0d850793          	addi	a5,a0,216
+    802046c0:	4501                	li	a0,0
+    802046c2:	46c1                	li	a3,16
     if(p->ofile[fd] == 0){
-    802043a8:	6398                	ld	a4,0(a5)
-    802043aa:	cb19                	beqz	a4,802043c0 <fdalloc+0x36>
+    802046c4:	6398                	ld	a4,0(a5)
+    802046c6:	cb19                	beqz	a4,802046dc <fdalloc+0x36>
   for(fd = 0; fd < NOFILE; fd++){
-    802043ac:	2505                	addiw	a0,a0,1
-    802043ae:	07a1                	addi	a5,a5,8
-    802043b0:	fed51ce3          	bne	a0,a3,802043a8 <fdalloc+0x1e>
+    802046c8:	2505                	addiw	a0,a0,1
+    802046ca:	07a1                	addi	a5,a5,8
+    802046cc:	fed51ce3          	bne	a0,a3,802046c4 <fdalloc+0x1e>
       p->ofile[fd] = f;
       return fd;
     }
   }
   return -1;
-    802043b4:	557d                	li	a0,-1
+    802046d0:	557d                	li	a0,-1
 }
-    802043b6:	60e2                	ld	ra,24(sp)
-    802043b8:	6442                	ld	s0,16(sp)
-    802043ba:	64a2                	ld	s1,8(sp)
-    802043bc:	6105                	addi	sp,sp,32
-    802043be:	8082                	ret
+    802046d2:	60e2                	ld	ra,24(sp)
+    802046d4:	6442                	ld	s0,16(sp)
+    802046d6:	64a2                	ld	s1,8(sp)
+    802046d8:	6105                	addi	sp,sp,32
+    802046da:	8082                	ret
       p->ofile[fd] = f;
-    802043c0:	01a50793          	addi	a5,a0,26
-    802043c4:	078e                	slli	a5,a5,0x3
-    802043c6:	963e                	add	a2,a2,a5
-    802043c8:	e604                	sd	s1,8(a2)
+    802046dc:	01a50793          	addi	a5,a0,26
+    802046e0:	078e                	slli	a5,a5,0x3
+    802046e2:	963e                	add	a2,a2,a5
+    802046e4:	e604                	sd	s1,8(a2)
       return fd;
-    802043ca:	b7f5                	j	802043b6 <fdalloc+0x2c>
+    802046e6:	b7f5                	j	802046d2 <fdalloc+0x2c>
 
-00000000802043cc <create>:
+00000000802046e8 <create>:
   return filestat(f, st);
 }
 
 static struct dirent*
 create(char *path, short type, int mode)
 {
-    802043cc:	7169                	addi	sp,sp,-304
-    802043ce:	f606                	sd	ra,296(sp)
-    802043d0:	f222                	sd	s0,288(sp)
-    802043d2:	ee26                	sd	s1,280(sp)
-    802043d4:	ea4a                	sd	s2,272(sp)
-    802043d6:	e64e                	sd	s3,264(sp)
-    802043d8:	1a00                	addi	s0,sp,304
-    802043da:	892e                	mv	s2,a1
+    802046e8:	7169                	addi	sp,sp,-304
+    802046ea:	f606                	sd	ra,296(sp)
+    802046ec:	f222                	sd	s0,288(sp)
+    802046ee:	ee26                	sd	s1,280(sp)
+    802046f0:	ea4a                	sd	s2,272(sp)
+    802046f2:	e64e                	sd	s3,264(sp)
+    802046f4:	1a00                	addi	s0,sp,304
+    802046f6:	892e                	mv	s2,a1
   struct dirent *ep, *dp;
   char name[FAT32_MAX_FILENAME + 1];
 
   if((dp = enameparent(path, name)) == NULL)
-    802043dc:	ed040593          	addi	a1,s0,-304
-    802043e0:	00002097          	auipc	ra,0x2
-    802043e4:	624080e7          	jalr	1572(ra) # 80206a04 <enameparent>
-    802043e8:	84aa                	mv	s1,a0
-    802043ea:	c945                	beqz	a0,8020449a <create+0xce>
+    802046f8:	ed040593          	addi	a1,s0,-304
+    802046fc:	00002097          	auipc	ra,0x2
+    80204700:	658080e7          	jalr	1624(ra) # 80206d54 <enameparent>
+    80204704:	84aa                	mv	s1,a0
+    80204706:	c945                	beqz	a0,802047b6 <create+0xce>
     mode = ATTR_READ_ONLY;
   } else {
     mode = 0;  
   }
 
   elock(dp);
-    802043ec:	00002097          	auipc	ra,0x2
-    802043f0:	e52080e7          	jalr	-430(ra) # 8020623e <elock>
+    80204708:	00002097          	auipc	ra,0x2
+    8020470c:	e86080e7          	jalr	-378(ra) # 8020658e <elock>
   if (type == T_DIR) {
-    802043f4:	fff90613          	addi	a2,s2,-1
-    802043f8:	00163613          	seqz	a2,a2
+    80204710:	fff90613          	addi	a2,s2,-1
+    80204714:	00163613          	seqz	a2,a2
   if ((ep = ealloc(dp, name, mode)) == NULL) {
-    802043fc:	0046161b          	slliw	a2,a2,0x4
-    80204400:	ed040593          	addi	a1,s0,-304
-    80204404:	8526                	mv	a0,s1
-    80204406:	00002097          	auipc	ra,0x2
-    8020440a:	324080e7          	jalr	804(ra) # 8020672a <ealloc>
-    8020440e:	89aa                	mv	s3,a0
-    80204410:	c529                	beqz	a0,8020445a <create+0x8e>
+    80204718:	0046161b          	slliw	a2,a2,0x4
+    8020471c:	ed040593          	addi	a1,s0,-304
+    80204720:	8526                	mv	a0,s1
+    80204722:	00002097          	auipc	ra,0x2
+    80204726:	358080e7          	jalr	856(ra) # 80206a7a <ealloc>
+    8020472a:	89aa                	mv	s3,a0
+    8020472c:	c529                	beqz	a0,80204776 <create+0x8e>
     eunlock(dp);
     eput(dp);
     return NULL;
   }
   
   if ((type == T_DIR && !(ep->attribute & ATTR_DIRECTORY)) ||
-    80204412:	0009079b          	sext.w	a5,s2
-    80204416:	4705                	li	a4,1
-    80204418:	04e78c63          	beq	a5,a4,80204470 <create+0xa4>
-    8020441c:	2901                	sext.w	s2,s2
-    8020441e:	4789                	li	a5,2
-    80204420:	00f91663          	bne	s2,a5,8020442c <create+0x60>
+    8020472e:	0009079b          	sext.w	a5,s2
+    80204732:	4705                	li	a4,1
+    80204734:	04e78c63          	beq	a5,a4,8020478c <create+0xa4>
+    80204738:	2901                	sext.w	s2,s2
+    8020473a:	4789                	li	a5,2
+    8020473c:	00f91663          	bne	s2,a5,80204748 <create+0x60>
       (type == T_FILE && (ep->attribute & ATTR_DIRECTORY))) {
-    80204424:	10054783          	lbu	a5,256(a0)
-    80204428:	8bc1                	andi	a5,a5,16
-    8020442a:	e7b9                	bnez	a5,80204478 <create+0xac>
+    80204740:	10054783          	lbu	a5,256(a0)
+    80204744:	8bc1                	andi	a5,a5,16
+    80204746:	e7b9                	bnez	a5,80204794 <create+0xac>
     eput(ep);
     eput(dp);
     return NULL;
   }
 
   eunlock(dp);
-    8020442c:	8526                	mv	a0,s1
-    8020442e:	00002097          	auipc	ra,0x2
-    80204432:	e46080e7          	jalr	-442(ra) # 80206274 <eunlock>
+    80204748:	8526                	mv	a0,s1
+    8020474a:	00002097          	auipc	ra,0x2
+    8020474e:	e7a080e7          	jalr	-390(ra) # 802065c4 <eunlock>
   eput(dp);
-    80204436:	8526                	mv	a0,s1
-    80204438:	00002097          	auipc	ra,0x2
-    8020443c:	e8a080e7          	jalr	-374(ra) # 802062c2 <eput>
+    80204752:	8526                	mv	a0,s1
+    80204754:	00002097          	auipc	ra,0x2
+    80204758:	ebe080e7          	jalr	-322(ra) # 80206612 <eput>
 
   elock(ep);
-    80204440:	854e                	mv	a0,s3
-    80204442:	00002097          	auipc	ra,0x2
-    80204446:	dfc080e7          	jalr	-516(ra) # 8020623e <elock>
+    8020475c:	854e                	mv	a0,s3
+    8020475e:	00002097          	auipc	ra,0x2
+    80204762:	e30080e7          	jalr	-464(ra) # 8020658e <elock>
   return ep;
 }
-    8020444a:	854e                	mv	a0,s3
-    8020444c:	70b2                	ld	ra,296(sp)
-    8020444e:	7412                	ld	s0,288(sp)
-    80204450:	64f2                	ld	s1,280(sp)
-    80204452:	6952                	ld	s2,272(sp)
-    80204454:	69b2                	ld	s3,264(sp)
-    80204456:	6155                	addi	sp,sp,304
-    80204458:	8082                	ret
+    80204766:	854e                	mv	a0,s3
+    80204768:	70b2                	ld	ra,296(sp)
+    8020476a:	7412                	ld	s0,288(sp)
+    8020476c:	64f2                	ld	s1,280(sp)
+    8020476e:	6952                	ld	s2,272(sp)
+    80204770:	69b2                	ld	s3,264(sp)
+    80204772:	6155                	addi	sp,sp,304
+    80204774:	8082                	ret
     eunlock(dp);
-    8020445a:	8526                	mv	a0,s1
-    8020445c:	00002097          	auipc	ra,0x2
-    80204460:	e18080e7          	jalr	-488(ra) # 80206274 <eunlock>
+    80204776:	8526                	mv	a0,s1
+    80204778:	00002097          	auipc	ra,0x2
+    8020477c:	e4c080e7          	jalr	-436(ra) # 802065c4 <eunlock>
     eput(dp);
-    80204464:	8526                	mv	a0,s1
-    80204466:	00002097          	auipc	ra,0x2
-    8020446a:	e5c080e7          	jalr	-420(ra) # 802062c2 <eput>
+    80204780:	8526                	mv	a0,s1
+    80204782:	00002097          	auipc	ra,0x2
+    80204786:	e90080e7          	jalr	-368(ra) # 80206612 <eput>
     return NULL;
-    8020446e:	bff1                	j	8020444a <create+0x7e>
+    8020478a:	bff1                	j	80204766 <create+0x7e>
   if ((type == T_DIR && !(ep->attribute & ATTR_DIRECTORY)) ||
-    80204470:	10054783          	lbu	a5,256(a0)
-    80204474:	8bc1                	andi	a5,a5,16
-    80204476:	fbdd                	bnez	a5,8020442c <create+0x60>
+    8020478c:	10054783          	lbu	a5,256(a0)
+    80204790:	8bc1                	andi	a5,a5,16
+    80204792:	fbdd                	bnez	a5,80204748 <create+0x60>
     eunlock(dp);
-    80204478:	8526                	mv	a0,s1
-    8020447a:	00002097          	auipc	ra,0x2
-    8020447e:	dfa080e7          	jalr	-518(ra) # 80206274 <eunlock>
+    80204794:	8526                	mv	a0,s1
+    80204796:	00002097          	auipc	ra,0x2
+    8020479a:	e2e080e7          	jalr	-466(ra) # 802065c4 <eunlock>
     eput(ep);
-    80204482:	854e                	mv	a0,s3
-    80204484:	00002097          	auipc	ra,0x2
-    80204488:	e3e080e7          	jalr	-450(ra) # 802062c2 <eput>
+    8020479e:	854e                	mv	a0,s3
+    802047a0:	00002097          	auipc	ra,0x2
+    802047a4:	e72080e7          	jalr	-398(ra) # 80206612 <eput>
     eput(dp);
-    8020448c:	8526                	mv	a0,s1
-    8020448e:	00002097          	auipc	ra,0x2
-    80204492:	e34080e7          	jalr	-460(ra) # 802062c2 <eput>
+    802047a8:	8526                	mv	a0,s1
+    802047aa:	00002097          	auipc	ra,0x2
+    802047ae:	e68080e7          	jalr	-408(ra) # 80206612 <eput>
     return NULL;
-    80204496:	4981                	li	s3,0
-    80204498:	bf4d                	j	8020444a <create+0x7e>
+    802047b2:	4981                	li	s3,0
+    802047b4:	bf4d                	j	80204766 <create+0x7e>
     return NULL;
-    8020449a:	89aa                	mv	s3,a0
-    8020449c:	b77d                	j	8020444a <create+0x7e>
+    802047b6:	89aa                	mv	s3,a0
+    802047b8:	b77d                	j	80204766 <create+0x7e>
 
-000000008020449e <sys_dup>:
+00000000802047ba <sys_dup>:
 {
-    8020449e:	7179                	addi	sp,sp,-48
-    802044a0:	f406                	sd	ra,40(sp)
-    802044a2:	f022                	sd	s0,32(sp)
-    802044a4:	ec26                	sd	s1,24(sp)
-    802044a6:	e84a                	sd	s2,16(sp)
-    802044a8:	1800                	addi	s0,sp,48
+    802047ba:	7179                	addi	sp,sp,-48
+    802047bc:	f406                	sd	ra,40(sp)
+    802047be:	f022                	sd	s0,32(sp)
+    802047c0:	ec26                	sd	s1,24(sp)
+    802047c2:	e84a                	sd	s2,16(sp)
+    802047c4:	1800                	addi	s0,sp,48
   if(argfd(0, 0, &f) < 0)
-    802044aa:	fd840613          	addi	a2,s0,-40
-    802044ae:	4581                	li	a1,0
-    802044b0:	4501                	li	a0,0
-    802044b2:	00000097          	auipc	ra,0x0
-    802044b6:	e70080e7          	jalr	-400(ra) # 80204322 <argfd>
+    802047c6:	fd840613          	addi	a2,s0,-40
+    802047ca:	4581                	li	a1,0
+    802047cc:	4501                	li	a0,0
+    802047ce:	00000097          	auipc	ra,0x0
+    802047d2:	e70080e7          	jalr	-400(ra) # 8020463e <argfd>
     return -1;
-    802044ba:	57fd                	li	a5,-1
+    802047d6:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0)
-    802044bc:	02054363          	bltz	a0,802044e2 <sys_dup+0x44>
+    802047d8:	02054363          	bltz	a0,802047fe <sys_dup+0x44>
   if((fd=fdalloc(f)) < 0)
-    802044c0:	fd843903          	ld	s2,-40(s0)
-    802044c4:	854a                	mv	a0,s2
-    802044c6:	00000097          	auipc	ra,0x0
-    802044ca:	ec4080e7          	jalr	-316(ra) # 8020438a <fdalloc>
-    802044ce:	84aa                	mv	s1,a0
+    802047dc:	fd843903          	ld	s2,-40(s0)
+    802047e0:	854a                	mv	a0,s2
+    802047e2:	00000097          	auipc	ra,0x0
+    802047e6:	ec4080e7          	jalr	-316(ra) # 802046a6 <fdalloc>
+    802047ea:	84aa                	mv	s1,a0
     return -1;
-    802044d0:	57fd                	li	a5,-1
+    802047ec:	57fd                	li	a5,-1
   if((fd=fdalloc(f)) < 0)
-    802044d2:	00054863          	bltz	a0,802044e2 <sys_dup+0x44>
+    802047ee:	00054863          	bltz	a0,802047fe <sys_dup+0x44>
   filedup(f);
-    802044d6:	854a                	mv	a0,s2
-    802044d8:	fffff097          	auipc	ra,0xfffff
-    802044dc:	318080e7          	jalr	792(ra) # 802037f0 <filedup>
+    802047f2:	854a                	mv	a0,s2
+    802047f4:	fffff097          	auipc	ra,0xfffff
+    802047f8:	318080e7          	jalr	792(ra) # 80203b0c <filedup>
   return fd;
-    802044e0:	87a6                	mv	a5,s1
-}
-    802044e2:	853e                	mv	a0,a5
-    802044e4:	70a2                	ld	ra,40(sp)
-    802044e6:	7402                	ld	s0,32(sp)
-    802044e8:	64e2                	ld	s1,24(sp)
-    802044ea:	6942                	ld	s2,16(sp)
-    802044ec:	6145                	addi	sp,sp,48
-    802044ee:	8082                	ret
-
-00000000802044f0 <sys_dup3>:
-{
-    802044f0:	7179                	addi	sp,sp,-48
-    802044f2:	f406                	sd	ra,40(sp)
-    802044f4:	f022                	sd	s0,32(sp)
-    802044f6:	ec26                	sd	s1,24(sp)
-    802044f8:	1800                	addi	s0,sp,48
+    802047fc:	87a6                	mv	a5,s1
+}
+    802047fe:	853e                	mv	a0,a5
+    80204800:	70a2                	ld	ra,40(sp)
+    80204802:	7402                	ld	s0,32(sp)
+    80204804:	64e2                	ld	s1,24(sp)
+    80204806:	6942                	ld	s2,16(sp)
+    80204808:	6145                	addi	sp,sp,48
+    8020480a:	8082                	ret
+
+000000008020480c <sys_dup3>:
+{
+    8020480c:	7179                	addi	sp,sp,-48
+    8020480e:	f406                	sd	ra,40(sp)
+    80204810:	f022                	sd	s0,32(sp)
+    80204812:	ec26                	sd	s1,24(sp)
+    80204814:	1800                	addi	s0,sp,48
   if (argfd(0, 0, &file_ptr) < 0 || argint(1, &fd) < 0) {
-    802044fa:	fd840613          	addi	a2,s0,-40
-    802044fe:	4581                	li	a1,0
-    80204500:	4501                	li	a0,0
-    80204502:	00000097          	auipc	ra,0x0
-    80204506:	e20080e7          	jalr	-480(ra) # 80204322 <argfd>
+    80204816:	fd840613          	addi	a2,s0,-40
+    8020481a:	4581                	li	a1,0
+    8020481c:	4501                	li	a0,0
+    8020481e:	00000097          	auipc	ra,0x0
+    80204822:	e20080e7          	jalr	-480(ra) # 8020463e <argfd>
     return -1; // 如果获取失败,返回错误码 -1
-    8020450a:	57fd                	li	a5,-1
+    80204826:	57fd                	li	a5,-1
   if (argfd(0, 0, &file_ptr) < 0 || argint(1, &fd) < 0) {
-    8020450c:	04054f63          	bltz	a0,8020456a <sys_dup3+0x7a>
-    80204510:	fd440593          	addi	a1,s0,-44
-    80204514:	4505                	li	a0,1
-    80204516:	fffff097          	auipc	ra,0xfffff
-    8020451a:	8a8080e7          	jalr	-1880(ra) # 80202dbe <argint>
-    8020451e:	04054c63          	bltz	a0,80204576 <sys_dup3+0x86>
+    80204828:	04054f63          	bltz	a0,80204886 <sys_dup3+0x7a>
+    8020482c:	fd440593          	addi	a1,s0,-44
+    80204830:	4505                	li	a0,1
+    80204832:	ffffe097          	auipc	ra,0xffffe
+    80204836:	7e0080e7          	jalr	2016(ra) # 80203012 <argint>
+    8020483a:	04054c63          	bltz	a0,80204892 <sys_dup3+0x86>
   if (fd < 0 || fd >= NOFILE) {
-    80204522:	fd442683          	lw	a3,-44(s0)
-    80204526:	473d                	li	a4,15
+    8020483e:	fd442683          	lw	a3,-44(s0)
+    80204842:	473d                	li	a4,15
     return -1; // 如果文件描述符无效,返回错误码 -1
-    80204528:	57fd                	li	a5,-1
+    80204844:	57fd                	li	a5,-1
   if (fd < 0 || fd >= NOFILE) {
-    8020452a:	04d76063          	bltu	a4,a3,8020456a <sys_dup3+0x7a>
+    80204846:	04d76063          	bltu	a4,a3,80204886 <sys_dup3+0x7a>
   struct proc *current_proc = myproc();
-    8020452e:	ffffd097          	auipc	ra,0xffffd
-    80204532:	50e080e7          	jalr	1294(ra) # 80201a3c <myproc>
-    80204536:	84aa                	mv	s1,a0
+    8020484a:	ffffd097          	auipc	ra,0xffffd
+    8020484e:	1f2080e7          	jalr	498(ra) # 80201a3c <myproc>
+    80204852:	84aa                	mv	s1,a0
   if (current_proc->ofile[fd]) {
-    80204538:	fd442783          	lw	a5,-44(s0)
-    8020453c:	07e9                	addi	a5,a5,26
-    8020453e:	078e                	slli	a5,a5,0x3
-    80204540:	97aa                	add	a5,a5,a0
-    80204542:	6788                	ld	a0,8(a5)
-    80204544:	c509                	beqz	a0,8020454e <sys_dup3+0x5e>
+    80204854:	fd442783          	lw	a5,-44(s0)
+    80204858:	07e9                	addi	a5,a5,26
+    8020485a:	078e                	slli	a5,a5,0x3
+    8020485c:	97aa                	add	a5,a5,a0
+    8020485e:	6788                	ld	a0,8(a5)
+    80204860:	c509                	beqz	a0,8020486a <sys_dup3+0x5e>
     fileclose(current_proc->ofile[fd]);
-    80204546:	fffff097          	auipc	ra,0xfffff
-    8020454a:	2fc080e7          	jalr	764(ra) # 80203842 <fileclose>
+    80204862:	fffff097          	auipc	ra,0xfffff
+    80204866:	2fc080e7          	jalr	764(ra) # 80203b5e <fileclose>
   current_proc->ofile[fd] = file_ptr;
-    8020454e:	fd843503          	ld	a0,-40(s0)
-    80204552:	fd442783          	lw	a5,-44(s0)
-    80204556:	07e9                	addi	a5,a5,26
-    80204558:	078e                	slli	a5,a5,0x3
-    8020455a:	94be                	add	s1,s1,a5
-    8020455c:	e488                	sd	a0,8(s1)
+    8020486a:	fd843503          	ld	a0,-40(s0)
+    8020486e:	fd442783          	lw	a5,-44(s0)
+    80204872:	07e9                	addi	a5,a5,26
+    80204874:	078e                	slli	a5,a5,0x3
+    80204876:	94be                	add	s1,s1,a5
+    80204878:	e488                	sd	a0,8(s1)
   filedup(file_ptr);
-    8020455e:	fffff097          	auipc	ra,0xfffff
-    80204562:	292080e7          	jalr	658(ra) # 802037f0 <filedup>
+    8020487a:	fffff097          	auipc	ra,0xfffff
+    8020487e:	292080e7          	jalr	658(ra) # 80203b0c <filedup>
   return fd;
-    80204566:	fd442783          	lw	a5,-44(s0)
-}
-    8020456a:	853e                	mv	a0,a5
-    8020456c:	70a2                	ld	ra,40(sp)
-    8020456e:	7402                	ld	s0,32(sp)
-    80204570:	64e2                	ld	s1,24(sp)
-    80204572:	6145                	addi	sp,sp,48
-    80204574:	8082                	ret
+    80204882:	fd442783          	lw	a5,-44(s0)
+}
+    80204886:	853e                	mv	a0,a5
+    80204888:	70a2                	ld	ra,40(sp)
+    8020488a:	7402                	ld	s0,32(sp)
+    8020488c:	64e2                	ld	s1,24(sp)
+    8020488e:	6145                	addi	sp,sp,48
+    80204890:	8082                	ret
     return -1; // 如果获取失败,返回错误码 -1
-    80204576:	57fd                	li	a5,-1
-    80204578:	bfcd                	j	8020456a <sys_dup3+0x7a>
+    80204892:	57fd                	li	a5,-1
+    80204894:	bfcd                	j	80204886 <sys_dup3+0x7a>
 
-000000008020457a <sys_read>:
+0000000080204896 <sys_read>:
 {
-    8020457a:	7179                	addi	sp,sp,-48
-    8020457c:	f406                	sd	ra,40(sp)
-    8020457e:	f022                	sd	s0,32(sp)
-    80204580:	1800                	addi	s0,sp,48
+    80204896:	7179                	addi	sp,sp,-48
+    80204898:	f406                	sd	ra,40(sp)
+    8020489a:	f022                	sd	s0,32(sp)
+    8020489c:	1800                	addi	s0,sp,48
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    80204582:	fe840613          	addi	a2,s0,-24
-    80204586:	4581                	li	a1,0
-    80204588:	4501                	li	a0,0
-    8020458a:	00000097          	auipc	ra,0x0
-    8020458e:	d98080e7          	jalr	-616(ra) # 80204322 <argfd>
+    8020489e:	fe840613          	addi	a2,s0,-24
+    802048a2:	4581                	li	a1,0
+    802048a4:	4501                	li	a0,0
+    802048a6:	00000097          	auipc	ra,0x0
+    802048aa:	d98080e7          	jalr	-616(ra) # 8020463e <argfd>
     return -1;
-    80204592:	57fd                	li	a5,-1
+    802048ae:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    80204594:	04054163          	bltz	a0,802045d6 <sys_read+0x5c>
-    80204598:	fe440593          	addi	a1,s0,-28
-    8020459c:	4509                	li	a0,2
-    8020459e:	fffff097          	auipc	ra,0xfffff
-    802045a2:	820080e7          	jalr	-2016(ra) # 80202dbe <argint>
+    802048b0:	04054163          	bltz	a0,802048f2 <sys_read+0x5c>
+    802048b4:	fe440593          	addi	a1,s0,-28
+    802048b8:	4509                	li	a0,2
+    802048ba:	ffffe097          	auipc	ra,0xffffe
+    802048be:	758080e7          	jalr	1880(ra) # 80203012 <argint>
     return -1;
-    802045a6:	57fd                	li	a5,-1
+    802048c2:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    802045a8:	02054763          	bltz	a0,802045d6 <sys_read+0x5c>
-    802045ac:	fd840593          	addi	a1,s0,-40
-    802045b0:	4505                	li	a0,1
-    802045b2:	fffff097          	auipc	ra,0xfffff
-    802045b6:	86e080e7          	jalr	-1938(ra) # 80202e20 <argaddr>
+    802048c4:	02054763          	bltz	a0,802048f2 <sys_read+0x5c>
+    802048c8:	fd840593          	addi	a1,s0,-40
+    802048cc:	4505                	li	a0,1
+    802048ce:	ffffe097          	auipc	ra,0xffffe
+    802048d2:	7a6080e7          	jalr	1958(ra) # 80203074 <argaddr>
     return -1;
-    802045ba:	57fd                	li	a5,-1
+    802048d6:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    802045bc:	00054d63          	bltz	a0,802045d6 <sys_read+0x5c>
+    802048d8:	00054d63          	bltz	a0,802048f2 <sys_read+0x5c>
   return fileread(f, p, n);
-    802045c0:	fe442603          	lw	a2,-28(s0)
-    802045c4:	fd843583          	ld	a1,-40(s0)
-    802045c8:	fe843503          	ld	a0,-24(s0)
-    802045cc:	fffff097          	auipc	ra,0xfffff
-    802045d0:	390080e7          	jalr	912(ra) # 8020395c <fileread>
-    802045d4:	87aa                	mv	a5,a0
-}
-    802045d6:	853e                	mv	a0,a5
-    802045d8:	70a2                	ld	ra,40(sp)
-    802045da:	7402                	ld	s0,32(sp)
-    802045dc:	6145                	addi	sp,sp,48
-    802045de:	8082                	ret
-
-00000000802045e0 <sys_write>:
-{
-    802045e0:	7179                	addi	sp,sp,-48
-    802045e2:	f406                	sd	ra,40(sp)
-    802045e4:	f022                	sd	s0,32(sp)
-    802045e6:	1800                	addi	s0,sp,48
+    802048dc:	fe442603          	lw	a2,-28(s0)
+    802048e0:	fd843583          	ld	a1,-40(s0)
+    802048e4:	fe843503          	ld	a0,-24(s0)
+    802048e8:	fffff097          	auipc	ra,0xfffff
+    802048ec:	390080e7          	jalr	912(ra) # 80203c78 <fileread>
+    802048f0:	87aa                	mv	a5,a0
+}
+    802048f2:	853e                	mv	a0,a5
+    802048f4:	70a2                	ld	ra,40(sp)
+    802048f6:	7402                	ld	s0,32(sp)
+    802048f8:	6145                	addi	sp,sp,48
+    802048fa:	8082                	ret
+
+00000000802048fc <sys_write>:
+{
+    802048fc:	7179                	addi	sp,sp,-48
+    802048fe:	f406                	sd	ra,40(sp)
+    80204900:	f022                	sd	s0,32(sp)
+    80204902:	1800                	addi	s0,sp,48
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    802045e8:	fe840613          	addi	a2,s0,-24
-    802045ec:	4581                	li	a1,0
-    802045ee:	4501                	li	a0,0
-    802045f0:	00000097          	auipc	ra,0x0
-    802045f4:	d32080e7          	jalr	-718(ra) # 80204322 <argfd>
+    80204904:	fe840613          	addi	a2,s0,-24
+    80204908:	4581                	li	a1,0
+    8020490a:	4501                	li	a0,0
+    8020490c:	00000097          	auipc	ra,0x0
+    80204910:	d32080e7          	jalr	-718(ra) # 8020463e <argfd>
     return -1;
-    802045f8:	57fd                	li	a5,-1
+    80204914:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    802045fa:	04054163          	bltz	a0,8020463c <sys_write+0x5c>
-    802045fe:	fe440593          	addi	a1,s0,-28
-    80204602:	4509                	li	a0,2
-    80204604:	ffffe097          	auipc	ra,0xffffe
-    80204608:	7ba080e7          	jalr	1978(ra) # 80202dbe <argint>
+    80204916:	04054163          	bltz	a0,80204958 <sys_write+0x5c>
+    8020491a:	fe440593          	addi	a1,s0,-28
+    8020491e:	4509                	li	a0,2
+    80204920:	ffffe097          	auipc	ra,0xffffe
+    80204924:	6f2080e7          	jalr	1778(ra) # 80203012 <argint>
     return -1;
-    8020460c:	57fd                	li	a5,-1
+    80204928:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    8020460e:	02054763          	bltz	a0,8020463c <sys_write+0x5c>
-    80204612:	fd840593          	addi	a1,s0,-40
-    80204616:	4505                	li	a0,1
-    80204618:	fffff097          	auipc	ra,0xfffff
-    8020461c:	808080e7          	jalr	-2040(ra) # 80202e20 <argaddr>
+    8020492a:	02054763          	bltz	a0,80204958 <sys_write+0x5c>
+    8020492e:	fd840593          	addi	a1,s0,-40
+    80204932:	4505                	li	a0,1
+    80204934:	ffffe097          	auipc	ra,0xffffe
+    80204938:	740080e7          	jalr	1856(ra) # 80203074 <argaddr>
     return -1;
-    80204620:	57fd                	li	a5,-1
+    8020493c:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    80204622:	00054d63          	bltz	a0,8020463c <sys_write+0x5c>
+    8020493e:	00054d63          	bltz	a0,80204958 <sys_write+0x5c>
   return filewrite(f, p, n);
-    80204626:	fe442603          	lw	a2,-28(s0)
-    8020462a:	fd843583          	ld	a1,-40(s0)
-    8020462e:	fe843503          	ld	a0,-24(s0)
-    80204632:	fffff097          	auipc	ra,0xfffff
-    80204636:	3ec080e7          	jalr	1004(ra) # 80203a1e <filewrite>
-    8020463a:	87aa                	mv	a5,a0
-}
-    8020463c:	853e                	mv	a0,a5
-    8020463e:	70a2                	ld	ra,40(sp)
-    80204640:	7402                	ld	s0,32(sp)
-    80204642:	6145                	addi	sp,sp,48
-    80204644:	8082                	ret
-
-0000000080204646 <sys_close>:
-{
-    80204646:	1101                	addi	sp,sp,-32
-    80204648:	ec06                	sd	ra,24(sp)
-    8020464a:	e822                	sd	s0,16(sp)
-    8020464c:	1000                	addi	s0,sp,32
+    80204942:	fe442603          	lw	a2,-28(s0)
+    80204946:	fd843583          	ld	a1,-40(s0)
+    8020494a:	fe843503          	ld	a0,-24(s0)
+    8020494e:	fffff097          	auipc	ra,0xfffff
+    80204952:	3ec080e7          	jalr	1004(ra) # 80203d3a <filewrite>
+    80204956:	87aa                	mv	a5,a0
+}
+    80204958:	853e                	mv	a0,a5
+    8020495a:	70a2                	ld	ra,40(sp)
+    8020495c:	7402                	ld	s0,32(sp)
+    8020495e:	6145                	addi	sp,sp,48
+    80204960:	8082                	ret
+
+0000000080204962 <sys_close>:
+{
+    80204962:	1101                	addi	sp,sp,-32
+    80204964:	ec06                	sd	ra,24(sp)
+    80204966:	e822                	sd	s0,16(sp)
+    80204968:	1000                	addi	s0,sp,32
   if(argfd(0, &fd, &f) < 0)
-    8020464e:	fe040613          	addi	a2,s0,-32
-    80204652:	fec40593          	addi	a1,s0,-20
-    80204656:	4501                	li	a0,0
-    80204658:	00000097          	auipc	ra,0x0
-    8020465c:	cca080e7          	jalr	-822(ra) # 80204322 <argfd>
+    8020496a:	fe040613          	addi	a2,s0,-32
+    8020496e:	fec40593          	addi	a1,s0,-20
+    80204972:	4501                	li	a0,0
+    80204974:	00000097          	auipc	ra,0x0
+    80204978:	cca080e7          	jalr	-822(ra) # 8020463e <argfd>
     return -1;
-    80204660:	57fd                	li	a5,-1
+    8020497c:	57fd                	li	a5,-1
   if(argfd(0, &fd, &f) < 0)
-    80204662:	02054463          	bltz	a0,8020468a <sys_close+0x44>
+    8020497e:	02054463          	bltz	a0,802049a6 <sys_close+0x44>
   myproc()->ofile[fd] = 0;
-    80204666:	ffffd097          	auipc	ra,0xffffd
-    8020466a:	3d6080e7          	jalr	982(ra) # 80201a3c <myproc>
-    8020466e:	fec42783          	lw	a5,-20(s0)
-    80204672:	07e9                	addi	a5,a5,26
-    80204674:	078e                	slli	a5,a5,0x3
-    80204676:	953e                	add	a0,a0,a5
-    80204678:	00053423          	sd	zero,8(a0)
+    80204982:	ffffd097          	auipc	ra,0xffffd
+    80204986:	0ba080e7          	jalr	186(ra) # 80201a3c <myproc>
+    8020498a:	fec42783          	lw	a5,-20(s0)
+    8020498e:	07e9                	addi	a5,a5,26
+    80204990:	078e                	slli	a5,a5,0x3
+    80204992:	953e                	add	a0,a0,a5
+    80204994:	00053423          	sd	zero,8(a0)
   fileclose(f);
-    8020467c:	fe043503          	ld	a0,-32(s0)
-    80204680:	fffff097          	auipc	ra,0xfffff
-    80204684:	1c2080e7          	jalr	450(ra) # 80203842 <fileclose>
+    80204998:	fe043503          	ld	a0,-32(s0)
+    8020499c:	fffff097          	auipc	ra,0xfffff
+    802049a0:	1c2080e7          	jalr	450(ra) # 80203b5e <fileclose>
   return 0;
-    80204688:	4781                	li	a5,0
+    802049a4:	4781                	li	a5,0
 }
-    8020468a:	853e                	mv	a0,a5
-    8020468c:	60e2                	ld	ra,24(sp)
-    8020468e:	6442                	ld	s0,16(sp)
-    80204690:	6105                	addi	sp,sp,32
-    80204692:	8082                	ret
+    802049a6:	853e                	mv	a0,a5
+    802049a8:	60e2                	ld	ra,24(sp)
+    802049aa:	6442                	ld	s0,16(sp)
+    802049ac:	6105                	addi	sp,sp,32
+    802049ae:	8082                	ret
 
-0000000080204694 <sys_fstat>:
+00000000802049b0 <sys_fstat>:
 {
-    80204694:	1101                	addi	sp,sp,-32
-    80204696:	ec06                	sd	ra,24(sp)
-    80204698:	e822                	sd	s0,16(sp)
-    8020469a:	1000                	addi	s0,sp,32
+    802049b0:	1101                	addi	sp,sp,-32
+    802049b2:	ec06                	sd	ra,24(sp)
+    802049b4:	e822                	sd	s0,16(sp)
+    802049b6:	1000                	addi	s0,sp,32
   if(argfd(0, 0, &f) < 0 || argaddr(1, &st) < 0)
-    8020469c:	fe840613          	addi	a2,s0,-24
-    802046a0:	4581                	li	a1,0
-    802046a2:	4501                	li	a0,0
-    802046a4:	00000097          	auipc	ra,0x0
-    802046a8:	c7e080e7          	jalr	-898(ra) # 80204322 <argfd>
+    802049b8:	fe840613          	addi	a2,s0,-24
+    802049bc:	4581                	li	a1,0
+    802049be:	4501                	li	a0,0
+    802049c0:	00000097          	auipc	ra,0x0
+    802049c4:	c7e080e7          	jalr	-898(ra) # 8020463e <argfd>
     return -1;
-    802046ac:	57fd                	li	a5,-1
+    802049c8:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argaddr(1, &st) < 0)
-    802046ae:	02054563          	bltz	a0,802046d8 <sys_fstat+0x44>
-    802046b2:	fe040593          	addi	a1,s0,-32
-    802046b6:	4505                	li	a0,1
-    802046b8:	ffffe097          	auipc	ra,0xffffe
-    802046bc:	768080e7          	jalr	1896(ra) # 80202e20 <argaddr>
+    802049ca:	02054563          	bltz	a0,802049f4 <sys_fstat+0x44>
+    802049ce:	fe040593          	addi	a1,s0,-32
+    802049d2:	4505                	li	a0,1
+    802049d4:	ffffe097          	auipc	ra,0xffffe
+    802049d8:	6a0080e7          	jalr	1696(ra) # 80203074 <argaddr>
     return -1;
-    802046c0:	57fd                	li	a5,-1
+    802049dc:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argaddr(1, &st) < 0)
-    802046c2:	00054b63          	bltz	a0,802046d8 <sys_fstat+0x44>
+    802049de:	00054b63          	bltz	a0,802049f4 <sys_fstat+0x44>
   return filestat(f, st);
-    802046c6:	fe043583          	ld	a1,-32(s0)
-    802046ca:	fe843503          	ld	a0,-24(s0)
-    802046ce:	fffff097          	auipc	ra,0xfffff
-    802046d2:	22a080e7          	jalr	554(ra) # 802038f8 <filestat>
-    802046d6:	87aa                	mv	a5,a0
+    802049e2:	fe043583          	ld	a1,-32(s0)
+    802049e6:	fe843503          	ld	a0,-24(s0)
+    802049ea:	fffff097          	auipc	ra,0xfffff
+    802049ee:	22a080e7          	jalr	554(ra) # 80203c14 <filestat>
+    802049f2:	87aa                	mv	a5,a0
 }
-    802046d8:	853e                	mv	a0,a5
-    802046da:	60e2                	ld	ra,24(sp)
-    802046dc:	6442                	ld	s0,16(sp)
-    802046de:	6105                	addi	sp,sp,32
-    802046e0:	8082                	ret
+    802049f4:	853e                	mv	a0,a5
+    802049f6:	60e2                	ld	ra,24(sp)
+    802049f8:	6442                	ld	s0,16(sp)
+    802049fa:	6105                	addi	sp,sp,32
+    802049fc:	8082                	ret
 
-00000000802046e2 <sys_open>:
+00000000802049fe <sys_open>:
 
 uint64
 sys_open(void)
 {
-    802046e2:	7129                	addi	sp,sp,-320
-    802046e4:	fe06                	sd	ra,312(sp)
-    802046e6:	fa22                	sd	s0,304(sp)
-    802046e8:	f626                	sd	s1,296(sp)
-    802046ea:	f24a                	sd	s2,288(sp)
-    802046ec:	ee4e                	sd	s3,280(sp)
-    802046ee:	0280                	addi	s0,sp,320
+    802049fe:	7129                	addi	sp,sp,-320
+    80204a00:	fe06                	sd	ra,312(sp)
+    80204a02:	fa22                	sd	s0,304(sp)
+    80204a04:	f626                	sd	s1,296(sp)
+    80204a06:	f24a                	sd	s2,288(sp)
+    80204a08:	ee4e                	sd	s3,280(sp)
+    80204a0a:	0280                	addi	s0,sp,320
   char path[FAT32_MAX_PATH];
   int fd, omode;
   struct file *f;
   struct dirent *ep;
 
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || argint(1, &omode) < 0)
-    802046f0:	10400613          	li	a2,260
-    802046f4:	ec840593          	addi	a1,s0,-312
-    802046f8:	4501                	li	a0,0
-    802046fa:	ffffe097          	auipc	ra,0xffffe
-    802046fe:	748080e7          	jalr	1864(ra) # 80202e42 <argstr>
-    80204702:	87aa                	mv	a5,a0
+    80204a0c:	10400613          	li	a2,260
+    80204a10:	ec840593          	addi	a1,s0,-312
+    80204a14:	4501                	li	a0,0
+    80204a16:	ffffe097          	auipc	ra,0xffffe
+    80204a1a:	680080e7          	jalr	1664(ra) # 80203096 <argstr>
+    80204a1e:	87aa                	mv	a5,a0
     return -1;
-    80204704:	557d                	li	a0,-1
+    80204a20:	557d                	li	a0,-1
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || argint(1, &omode) < 0)
-    80204706:	0807ce63          	bltz	a5,802047a2 <sys_open+0xc0>
-    8020470a:	ec440593          	addi	a1,s0,-316
-    8020470e:	4505                	li	a0,1
-    80204710:	ffffe097          	auipc	ra,0xffffe
-    80204714:	6ae080e7          	jalr	1710(ra) # 80202dbe <argint>
-    80204718:	0e054163          	bltz	a0,802047fa <sys_open+0x118>
+    80204a22:	0807ce63          	bltz	a5,80204abe <sys_open+0xc0>
+    80204a26:	ec440593          	addi	a1,s0,-316
+    80204a2a:	4505                	li	a0,1
+    80204a2c:	ffffe097          	auipc	ra,0xffffe
+    80204a30:	5e6080e7          	jalr	1510(ra) # 80203012 <argint>
+    80204a34:	0e054163          	bltz	a0,80204b16 <sys_open+0x118>
 
   if(omode & O_CREATE){
-    8020471c:	ec442603          	lw	a2,-316(s0)
-    80204720:	20067793          	andi	a5,a2,512
-    80204724:	c7d1                	beqz	a5,802047b0 <sys_open+0xce>
+    80204a38:	ec442603          	lw	a2,-316(s0)
+    80204a3c:	20067793          	andi	a5,a2,512
+    80204a40:	c7d1                	beqz	a5,80204acc <sys_open+0xce>
     ep = create(path, T_FILE, omode);
-    80204726:	4589                	li	a1,2
-    80204728:	ec840513          	addi	a0,s0,-312
-    8020472c:	00000097          	auipc	ra,0x0
-    80204730:	ca0080e7          	jalr	-864(ra) # 802043cc <create>
-    80204734:	892a                	mv	s2,a0
+    80204a42:	4589                	li	a1,2
+    80204a44:	ec840513          	addi	a0,s0,-312
+    80204a48:	00000097          	auipc	ra,0x0
+    80204a4c:	ca0080e7          	jalr	-864(ra) # 802046e8 <create>
+    80204a50:	892a                	mv	s2,a0
     if(ep == NULL){
-    80204736:	c561                	beqz	a0,802047fe <sys_open+0x11c>
+    80204a52:	c561                	beqz	a0,80204b1a <sys_open+0x11c>
       eput(ep);
       return -1;
     }
   }
 
   if((f = filealloc()) == NULL || (fd = fdalloc(f)) < 0){
-    80204738:	fffff097          	auipc	ra,0xfffff
-    8020473c:	04e080e7          	jalr	78(ra) # 80203786 <filealloc>
-    80204740:	89aa                	mv	s3,a0
-    80204742:	c579                	beqz	a0,80204810 <sys_open+0x12e>
-    80204744:	00000097          	auipc	ra,0x0
-    80204748:	c46080e7          	jalr	-954(ra) # 8020438a <fdalloc>
-    8020474c:	84aa                	mv	s1,a0
-    8020474e:	0a054c63          	bltz	a0,80204806 <sys_open+0x124>
+    80204a54:	fffff097          	auipc	ra,0xfffff
+    80204a58:	04e080e7          	jalr	78(ra) # 80203aa2 <filealloc>
+    80204a5c:	89aa                	mv	s3,a0
+    80204a5e:	c579                	beqz	a0,80204b2c <sys_open+0x12e>
+    80204a60:	00000097          	auipc	ra,0x0
+    80204a64:	c46080e7          	jalr	-954(ra) # 802046a6 <fdalloc>
+    80204a68:	84aa                	mv	s1,a0
+    80204a6a:	0a054c63          	bltz	a0,80204b22 <sys_open+0x124>
     eunlock(ep);
     eput(ep);
     return -1;
   }
 
   if(!(ep->attribute & ATTR_DIRECTORY) && (omode & O_TRUNC)){
-    80204752:	10094783          	lbu	a5,256(s2)
-    80204756:	8bc1                	andi	a5,a5,16
-    80204758:	e791                	bnez	a5,80204764 <sys_open+0x82>
-    8020475a:	ec442783          	lw	a5,-316(s0)
-    8020475e:	4007f793          	andi	a5,a5,1024
-    80204762:	e7d1                	bnez	a5,802047ee <sys_open+0x10c>
+    80204a6e:	10094783          	lbu	a5,256(s2)
+    80204a72:	8bc1                	andi	a5,a5,16
+    80204a74:	e791                	bnez	a5,80204a80 <sys_open+0x82>
+    80204a76:	ec442783          	lw	a5,-316(s0)
+    80204a7a:	4007f793          	andi	a5,a5,1024
+    80204a7e:	e7d1                	bnez	a5,80204b0a <sys_open+0x10c>
     etrunc(ep);
   }
 
   f->type = FD_ENTRY;
-    80204764:	4789                	li	a5,2
-    80204766:	00f9a023          	sw	a5,0(s3)
+    80204a80:	4789                	li	a5,2
+    80204a82:	00f9a023          	sw	a5,0(s3)
   f->off = (omode & O_APPEND) ? ep->file_size : 0;
-    8020476a:	ec442783          	lw	a5,-316(s0)
-    8020476e:	0047f693          	andi	a3,a5,4
-    80204772:	4701                	li	a4,0
-    80204774:	c299                	beqz	a3,8020477a <sys_open+0x98>
-    80204776:	10892703          	lw	a4,264(s2)
-    8020477a:	02e9a023          	sw	a4,32(s3)
+    80204a86:	ec442783          	lw	a5,-316(s0)
+    80204a8a:	0047f693          	andi	a3,a5,4
+    80204a8e:	4701                	li	a4,0
+    80204a90:	c299                	beqz	a3,80204a96 <sys_open+0x98>
+    80204a92:	10892703          	lw	a4,264(s2)
+    80204a96:	02e9a023          	sw	a4,32(s3)
   f->ep = ep;
-    8020477e:	0129bc23          	sd	s2,24(s3)
+    80204a9a:	0129bc23          	sd	s2,24(s3)
   f->readable = !(omode & O_WRONLY);
-    80204782:	0017c713          	xori	a4,a5,1
-    80204786:	8b05                	andi	a4,a4,1
-    80204788:	00e98423          	sb	a4,8(s3)
+    80204a9e:	0017c713          	xori	a4,a5,1
+    80204aa2:	8b05                	andi	a4,a4,1
+    80204aa4:	00e98423          	sb	a4,8(s3)
   f->writable = (omode & O_WRONLY) || (omode & O_RDWR);
-    8020478c:	8b8d                	andi	a5,a5,3
-    8020478e:	00f037b3          	snez	a5,a5
-    80204792:	00f984a3          	sb	a5,9(s3)
+    80204aa8:	8b8d                	andi	a5,a5,3
+    80204aaa:	00f037b3          	snez	a5,a5
+    80204aae:	00f984a3          	sb	a5,9(s3)
 
   eunlock(ep);
-    80204796:	854a                	mv	a0,s2
-    80204798:	00002097          	auipc	ra,0x2
-    8020479c:	adc080e7          	jalr	-1316(ra) # 80206274 <eunlock>
+    80204ab2:	854a                	mv	a0,s2
+    80204ab4:	00002097          	auipc	ra,0x2
+    80204ab8:	b10080e7          	jalr	-1264(ra) # 802065c4 <eunlock>
 
   return fd;
-    802047a0:	8526                	mv	a0,s1
-}
-    802047a2:	70f2                	ld	ra,312(sp)
-    802047a4:	7452                	ld	s0,304(sp)
-    802047a6:	74b2                	ld	s1,296(sp)
-    802047a8:	7912                	ld	s2,288(sp)
-    802047aa:	69f2                	ld	s3,280(sp)
-    802047ac:	6131                	addi	sp,sp,320
-    802047ae:	8082                	ret
+    80204abc:	8526                	mv	a0,s1
+}
+    80204abe:	70f2                	ld	ra,312(sp)
+    80204ac0:	7452                	ld	s0,304(sp)
+    80204ac2:	74b2                	ld	s1,296(sp)
+    80204ac4:	7912                	ld	s2,288(sp)
+    80204ac6:	69f2                	ld	s3,280(sp)
+    80204ac8:	6131                	addi	sp,sp,320
+    80204aca:	8082                	ret
     if((ep = ename(path)) == NULL){
-    802047b0:	ec840513          	addi	a0,s0,-312
-    802047b4:	00002097          	auipc	ra,0x2
-    802047b8:	232080e7          	jalr	562(ra) # 802069e6 <ename>
-    802047bc:	892a                	mv	s2,a0
-    802047be:	c131                	beqz	a0,80204802 <sys_open+0x120>
+    80204acc:	ec840513          	addi	a0,s0,-312
+    80204ad0:	00002097          	auipc	ra,0x2
+    80204ad4:	266080e7          	jalr	614(ra) # 80206d36 <ename>
+    80204ad8:	892a                	mv	s2,a0
+    80204ada:	c131                	beqz	a0,80204b1e <sys_open+0x120>
     elock(ep);
-    802047c0:	00002097          	auipc	ra,0x2
-    802047c4:	a7e080e7          	jalr	-1410(ra) # 8020623e <elock>
+    80204adc:	00002097          	auipc	ra,0x2
+    80204ae0:	ab2080e7          	jalr	-1358(ra) # 8020658e <elock>
     if((ep->attribute & ATTR_DIRECTORY) && omode != O_RDONLY){
-    802047c8:	10094783          	lbu	a5,256(s2)
-    802047cc:	8bc1                	andi	a5,a5,16
-    802047ce:	d7ad                	beqz	a5,80204738 <sys_open+0x56>
-    802047d0:	ec442783          	lw	a5,-316(s0)
-    802047d4:	d3b5                	beqz	a5,80204738 <sys_open+0x56>
+    80204ae4:	10094783          	lbu	a5,256(s2)
+    80204ae8:	8bc1                	andi	a5,a5,16
+    80204aea:	d7ad                	beqz	a5,80204a54 <sys_open+0x56>
+    80204aec:	ec442783          	lw	a5,-316(s0)
+    80204af0:	d3b5                	beqz	a5,80204a54 <sys_open+0x56>
       eunlock(ep);
-    802047d6:	854a                	mv	a0,s2
-    802047d8:	00002097          	auipc	ra,0x2
-    802047dc:	a9c080e7          	jalr	-1380(ra) # 80206274 <eunlock>
+    80204af2:	854a                	mv	a0,s2
+    80204af4:	00002097          	auipc	ra,0x2
+    80204af8:	ad0080e7          	jalr	-1328(ra) # 802065c4 <eunlock>
       eput(ep);
-    802047e0:	854a                	mv	a0,s2
-    802047e2:	00002097          	auipc	ra,0x2
-    802047e6:	ae0080e7          	jalr	-1312(ra) # 802062c2 <eput>
+    80204afc:	854a                	mv	a0,s2
+    80204afe:	00002097          	auipc	ra,0x2
+    80204b02:	b14080e7          	jalr	-1260(ra) # 80206612 <eput>
       return -1;
-    802047ea:	557d                	li	a0,-1
-    802047ec:	bf5d                	j	802047a2 <sys_open+0xc0>
+    80204b06:	557d                	li	a0,-1
+    80204b08:	bf5d                	j	80204abe <sys_open+0xc0>
     etrunc(ep);
-    802047ee:	854a                	mv	a0,s2
-    802047f0:	00002097          	auipc	ra,0x2
-    802047f4:	9e4080e7          	jalr	-1564(ra) # 802061d4 <etrunc>
-    802047f8:	b7b5                	j	80204764 <sys_open+0x82>
+    80204b0a:	854a                	mv	a0,s2
+    80204b0c:	00002097          	auipc	ra,0x2
+    80204b10:	a18080e7          	jalr	-1512(ra) # 80206524 <etrunc>
+    80204b14:	b7b5                	j	80204a80 <sys_open+0x82>
     return -1;
-    802047fa:	557d                	li	a0,-1
-    802047fc:	b75d                	j	802047a2 <sys_open+0xc0>
+    80204b16:	557d                	li	a0,-1
+    80204b18:	b75d                	j	80204abe <sys_open+0xc0>
       return -1;
-    802047fe:	557d                	li	a0,-1
-    80204800:	b74d                	j	802047a2 <sys_open+0xc0>
+    80204b1a:	557d                	li	a0,-1
+    80204b1c:	b74d                	j	80204abe <sys_open+0xc0>
       return -1;
-    80204802:	557d                	li	a0,-1
-    80204804:	bf79                	j	802047a2 <sys_open+0xc0>
+    80204b1e:	557d                	li	a0,-1
+    80204b20:	bf79                	j	80204abe <sys_open+0xc0>
       fileclose(f);
-    80204806:	854e                	mv	a0,s3
-    80204808:	fffff097          	auipc	ra,0xfffff
-    8020480c:	03a080e7          	jalr	58(ra) # 80203842 <fileclose>
+    80204b22:	854e                	mv	a0,s3
+    80204b24:	fffff097          	auipc	ra,0xfffff
+    80204b28:	03a080e7          	jalr	58(ra) # 80203b5e <fileclose>
     eunlock(ep);
-    80204810:	854a                	mv	a0,s2
-    80204812:	00002097          	auipc	ra,0x2
-    80204816:	a62080e7          	jalr	-1438(ra) # 80206274 <eunlock>
+    80204b2c:	854a                	mv	a0,s2
+    80204b2e:	00002097          	auipc	ra,0x2
+    80204b32:	a96080e7          	jalr	-1386(ra) # 802065c4 <eunlock>
     eput(ep);
-    8020481a:	854a                	mv	a0,s2
-    8020481c:	00002097          	auipc	ra,0x2
-    80204820:	aa6080e7          	jalr	-1370(ra) # 802062c2 <eput>
+    80204b36:	854a                	mv	a0,s2
+    80204b38:	00002097          	auipc	ra,0x2
+    80204b3c:	ada080e7          	jalr	-1318(ra) # 80206612 <eput>
     return -1;
-    80204824:	557d                	li	a0,-1
-    80204826:	bfb5                	j	802047a2 <sys_open+0xc0>
+    80204b40:	557d                	li	a0,-1
+    80204b42:	bfb5                	j	80204abe <sys_open+0xc0>
 
-0000000080204828 <sys_mkdir>:
+0000000080204b44 <sys_mkdir>:
 
 uint64
 sys_mkdir(void)
 {
-    80204828:	7169                	addi	sp,sp,-304
-    8020482a:	f606                	sd	ra,296(sp)
-    8020482c:	f222                	sd	s0,288(sp)
-    8020482e:	ee26                	sd	s1,280(sp)
-    80204830:	1a00                	addi	s0,sp,304
+    80204b44:	7169                	addi	sp,sp,-304
+    80204b46:	f606                	sd	ra,296(sp)
+    80204b48:	f222                	sd	s0,288(sp)
+    80204b4a:	ee26                	sd	s1,280(sp)
+    80204b4c:	1a00                	addi	s0,sp,304
   char path[FAT32_MAX_PATH];
   struct dirent *ep;
 
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = create(path, T_DIR, 0)) == 0){
-    80204832:	10400613          	li	a2,260
-    80204836:	ed840593          	addi	a1,s0,-296
-    8020483a:	4501                	li	a0,0
-    8020483c:	ffffe097          	auipc	ra,0xffffe
-    80204840:	606080e7          	jalr	1542(ra) # 80202e42 <argstr>
+    80204b4e:	10400613          	li	a2,260
+    80204b52:	ed840593          	addi	a1,s0,-296
+    80204b56:	4501                	li	a0,0
+    80204b58:	ffffe097          	auipc	ra,0xffffe
+    80204b5c:	53e080e7          	jalr	1342(ra) # 80203096 <argstr>
     return -1;
-    80204844:	57fd                	li	a5,-1
+    80204b60:	57fd                	li	a5,-1
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = create(path, T_DIR, 0)) == 0){
-    80204846:	02054663          	bltz	a0,80204872 <sys_mkdir+0x4a>
-    8020484a:	4601                	li	a2,0
-    8020484c:	4585                	li	a1,1
-    8020484e:	ed840513          	addi	a0,s0,-296
-    80204852:	00000097          	auipc	ra,0x0
-    80204856:	b7a080e7          	jalr	-1158(ra) # 802043cc <create>
-    8020485a:	84aa                	mv	s1,a0
-    8020485c:	c10d                	beqz	a0,8020487e <sys_mkdir+0x56>
+    80204b62:	02054663          	bltz	a0,80204b8e <sys_mkdir+0x4a>
+    80204b66:	4601                	li	a2,0
+    80204b68:	4585                	li	a1,1
+    80204b6a:	ed840513          	addi	a0,s0,-296
+    80204b6e:	00000097          	auipc	ra,0x0
+    80204b72:	b7a080e7          	jalr	-1158(ra) # 802046e8 <create>
+    80204b76:	84aa                	mv	s1,a0
+    80204b78:	c10d                	beqz	a0,80204b9a <sys_mkdir+0x56>
   }
   eunlock(ep);
-    8020485e:	00002097          	auipc	ra,0x2
-    80204862:	a16080e7          	jalr	-1514(ra) # 80206274 <eunlock>
+    80204b7a:	00002097          	auipc	ra,0x2
+    80204b7e:	a4a080e7          	jalr	-1462(ra) # 802065c4 <eunlock>
   eput(ep);
-    80204866:	8526                	mv	a0,s1
-    80204868:	00002097          	auipc	ra,0x2
-    8020486c:	a5a080e7          	jalr	-1446(ra) # 802062c2 <eput>
+    80204b82:	8526                	mv	a0,s1
+    80204b84:	00002097          	auipc	ra,0x2
+    80204b88:	a8e080e7          	jalr	-1394(ra) # 80206612 <eput>
   return 0;
-    80204870:	4781                	li	a5,0
-}
-    80204872:	853e                	mv	a0,a5
-    80204874:	70b2                	ld	ra,296(sp)
-    80204876:	7412                	ld	s0,288(sp)
-    80204878:	64f2                	ld	s1,280(sp)
-    8020487a:	6155                	addi	sp,sp,304
-    8020487c:	8082                	ret
+    80204b8c:	4781                	li	a5,0
+}
+    80204b8e:	853e                	mv	a0,a5
+    80204b90:	70b2                	ld	ra,296(sp)
+    80204b92:	7412                	ld	s0,288(sp)
+    80204b94:	64f2                	ld	s1,280(sp)
+    80204b96:	6155                	addi	sp,sp,304
+    80204b98:	8082                	ret
     return -1;
-    8020487e:	57fd                	li	a5,-1
-    80204880:	bfcd                	j	80204872 <sys_mkdir+0x4a>
+    80204b9a:	57fd                	li	a5,-1
+    80204b9c:	bfcd                	j	80204b8e <sys_mkdir+0x4a>
 
-0000000080204882 <sys_chdir>:
+0000000080204b9e <sys_chdir>:
 
 uint64
 sys_chdir(void)
 {
-    80204882:	7169                	addi	sp,sp,-304
-    80204884:	f606                	sd	ra,296(sp)
-    80204886:	f222                	sd	s0,288(sp)
-    80204888:	ee26                	sd	s1,280(sp)
-    8020488a:	ea4a                	sd	s2,272(sp)
-    8020488c:	1a00                	addi	s0,sp,304
+    80204b9e:	7169                	addi	sp,sp,-304
+    80204ba0:	f606                	sd	ra,296(sp)
+    80204ba2:	f222                	sd	s0,288(sp)
+    80204ba4:	ee26                	sd	s1,280(sp)
+    80204ba6:	ea4a                	sd	s2,272(sp)
+    80204ba8:	1a00                	addi	s0,sp,304
   char path[FAT32_MAX_PATH];
   struct dirent *ep;
   struct proc *p = myproc();
-    8020488e:	ffffd097          	auipc	ra,0xffffd
-    80204892:	1ae080e7          	jalr	430(ra) # 80201a3c <myproc>
-    80204896:	892a                	mv	s2,a0
+    80204baa:	ffffd097          	auipc	ra,0xffffd
+    80204bae:	e92080e7          	jalr	-366(ra) # 80201a3c <myproc>
+    80204bb2:	892a                	mv	s2,a0
   
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = ename(path)) == NULL){
-    80204898:	10400613          	li	a2,260
-    8020489c:	ed840593          	addi	a1,s0,-296
-    802048a0:	4501                	li	a0,0
-    802048a2:	ffffe097          	auipc	ra,0xffffe
-    802048a6:	5a0080e7          	jalr	1440(ra) # 80202e42 <argstr>
+    80204bb4:	10400613          	li	a2,260
+    80204bb8:	ed840593          	addi	a1,s0,-296
+    80204bbc:	4501                	li	a0,0
+    80204bbe:	ffffe097          	auipc	ra,0xffffe
+    80204bc2:	4d8080e7          	jalr	1240(ra) # 80203096 <argstr>
     return -1;
-    802048aa:	57fd                	li	a5,-1
+    80204bc6:	57fd                	li	a5,-1
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = ename(path)) == NULL){
-    802048ac:	04054063          	bltz	a0,802048ec <sys_chdir+0x6a>
-    802048b0:	ed840513          	addi	a0,s0,-296
-    802048b4:	00002097          	auipc	ra,0x2
-    802048b8:	132080e7          	jalr	306(ra) # 802069e6 <ename>
-    802048bc:	84aa                	mv	s1,a0
-    802048be:	c931                	beqz	a0,80204912 <sys_chdir+0x90>
+    80204bc8:	04054063          	bltz	a0,80204c08 <sys_chdir+0x6a>
+    80204bcc:	ed840513          	addi	a0,s0,-296
+    80204bd0:	00002097          	auipc	ra,0x2
+    80204bd4:	166080e7          	jalr	358(ra) # 80206d36 <ename>
+    80204bd8:	84aa                	mv	s1,a0
+    80204bda:	c931                	beqz	a0,80204c2e <sys_chdir+0x90>
   }
   elock(ep);
-    802048c0:	00002097          	auipc	ra,0x2
-    802048c4:	97e080e7          	jalr	-1666(ra) # 8020623e <elock>
+    80204bdc:	00002097          	auipc	ra,0x2
+    80204be0:	9b2080e7          	jalr	-1614(ra) # 8020658e <elock>
   if(!(ep->attribute & ATTR_DIRECTORY)){
-    802048c8:	1004c783          	lbu	a5,256(s1)
-    802048cc:	8bc1                	andi	a5,a5,16
-    802048ce:	c795                	beqz	a5,802048fa <sys_chdir+0x78>
+    80204be4:	1004c783          	lbu	a5,256(s1)
+    80204be8:	8bc1                	andi	a5,a5,16
+    80204bea:	c795                	beqz	a5,80204c16 <sys_chdir+0x78>
     eunlock(ep);
     eput(ep);
     return -1;
   }
   eunlock(ep);
-    802048d0:	8526                	mv	a0,s1
-    802048d2:	00002097          	auipc	ra,0x2
-    802048d6:	9a2080e7          	jalr	-1630(ra) # 80206274 <eunlock>
+    80204bec:	8526                	mv	a0,s1
+    80204bee:	00002097          	auipc	ra,0x2
+    80204bf2:	9d6080e7          	jalr	-1578(ra) # 802065c4 <eunlock>
   eput(p->cwd);
-    802048da:	15893503          	ld	a0,344(s2)
-    802048de:	00002097          	auipc	ra,0x2
-    802048e2:	9e4080e7          	jalr	-1564(ra) # 802062c2 <eput>
+    80204bf6:	15893503          	ld	a0,344(s2)
+    80204bfa:	00002097          	auipc	ra,0x2
+    80204bfe:	a18080e7          	jalr	-1512(ra) # 80206612 <eput>
   p->cwd = ep;
-    802048e6:	14993c23          	sd	s1,344(s2)
+    80204c02:	14993c23          	sd	s1,344(s2)
   return 0;
-    802048ea:	4781                	li	a5,0
-}
-    802048ec:	853e                	mv	a0,a5
-    802048ee:	70b2                	ld	ra,296(sp)
-    802048f0:	7412                	ld	s0,288(sp)
-    802048f2:	64f2                	ld	s1,280(sp)
-    802048f4:	6952                	ld	s2,272(sp)
-    802048f6:	6155                	addi	sp,sp,304
-    802048f8:	8082                	ret
+    80204c06:	4781                	li	a5,0
+}
+    80204c08:	853e                	mv	a0,a5
+    80204c0a:	70b2                	ld	ra,296(sp)
+    80204c0c:	7412                	ld	s0,288(sp)
+    80204c0e:	64f2                	ld	s1,280(sp)
+    80204c10:	6952                	ld	s2,272(sp)
+    80204c12:	6155                	addi	sp,sp,304
+    80204c14:	8082                	ret
     eunlock(ep);
-    802048fa:	8526                	mv	a0,s1
-    802048fc:	00002097          	auipc	ra,0x2
-    80204900:	978080e7          	jalr	-1672(ra) # 80206274 <eunlock>
+    80204c16:	8526                	mv	a0,s1
+    80204c18:	00002097          	auipc	ra,0x2
+    80204c1c:	9ac080e7          	jalr	-1620(ra) # 802065c4 <eunlock>
     eput(ep);
-    80204904:	8526                	mv	a0,s1
-    80204906:	00002097          	auipc	ra,0x2
-    8020490a:	9bc080e7          	jalr	-1604(ra) # 802062c2 <eput>
+    80204c20:	8526                	mv	a0,s1
+    80204c22:	00002097          	auipc	ra,0x2
+    80204c26:	9f0080e7          	jalr	-1552(ra) # 80206612 <eput>
     return -1;
-    8020490e:	57fd                	li	a5,-1
-    80204910:	bff1                	j	802048ec <sys_chdir+0x6a>
+    80204c2a:	57fd                	li	a5,-1
+    80204c2c:	bff1                	j	80204c08 <sys_chdir+0x6a>
     return -1;
-    80204912:	57fd                	li	a5,-1
-    80204914:	bfe1                	j	802048ec <sys_chdir+0x6a>
+    80204c2e:	57fd                	li	a5,-1
+    80204c30:	bfe1                	j	80204c08 <sys_chdir+0x6a>
 
-0000000080204916 <sys_pipe>:
+0000000080204c32 <sys_pipe>:
 
 uint64
 sys_pipe(void)
 {
-    80204916:	7139                	addi	sp,sp,-64
-    80204918:	fc06                	sd	ra,56(sp)
-    8020491a:	f822                	sd	s0,48(sp)
-    8020491c:	f426                	sd	s1,40(sp)
-    8020491e:	0080                	addi	s0,sp,64
+    80204c32:	7139                	addi	sp,sp,-64
+    80204c34:	fc06                	sd	ra,56(sp)
+    80204c36:	f822                	sd	s0,48(sp)
+    80204c38:	f426                	sd	s1,40(sp)
+    80204c3a:	0080                	addi	s0,sp,64
   uint64 fdarray; // user pointer to array of two integers
   struct file *rf, *wf;
   int fd0, fd1;
   struct proc *p = myproc();
-    80204920:	ffffd097          	auipc	ra,0xffffd
-    80204924:	11c080e7          	jalr	284(ra) # 80201a3c <myproc>
-    80204928:	84aa                	mv	s1,a0
+    80204c3c:	ffffd097          	auipc	ra,0xffffd
+    80204c40:	e00080e7          	jalr	-512(ra) # 80201a3c <myproc>
+    80204c44:	84aa                	mv	s1,a0
 
   if(argaddr(0, &fdarray) < 0)
-    8020492a:	fd840593          	addi	a1,s0,-40
-    8020492e:	4501                	li	a0,0
-    80204930:	ffffe097          	auipc	ra,0xffffe
-    80204934:	4f0080e7          	jalr	1264(ra) # 80202e20 <argaddr>
+    80204c46:	fd840593          	addi	a1,s0,-40
+    80204c4a:	4501                	li	a0,0
+    80204c4c:	ffffe097          	auipc	ra,0xffffe
+    80204c50:	428080e7          	jalr	1064(ra) # 80203074 <argaddr>
     return -1;
-    80204938:	57fd                	li	a5,-1
+    80204c54:	57fd                	li	a5,-1
   if(argaddr(0, &fdarray) < 0)
-    8020493a:	0c054e63          	bltz	a0,80204a16 <sys_pipe+0x100>
+    80204c56:	0c054e63          	bltz	a0,80204d32 <sys_pipe+0x100>
   if(pipealloc(&rf, &wf) < 0)
-    8020493e:	fc840593          	addi	a1,s0,-56
-    80204942:	fd040513          	addi	a0,s0,-48
-    80204946:	fffff097          	auipc	ra,0xfffff
-    8020494a:	26e080e7          	jalr	622(ra) # 80203bb4 <pipealloc>
+    80204c5a:	fc840593          	addi	a1,s0,-56
+    80204c5e:	fd040513          	addi	a0,s0,-48
+    80204c62:	fffff097          	auipc	ra,0xfffff
+    80204c66:	26e080e7          	jalr	622(ra) # 80203ed0 <pipealloc>
     return -1;
-    8020494e:	57fd                	li	a5,-1
+    80204c6a:	57fd                	li	a5,-1
   if(pipealloc(&rf, &wf) < 0)
-    80204950:	0c054363          	bltz	a0,80204a16 <sys_pipe+0x100>
+    80204c6c:	0c054363          	bltz	a0,80204d32 <sys_pipe+0x100>
   fd0 = -1;
-    80204954:	fcf42223          	sw	a5,-60(s0)
+    80204c70:	fcf42223          	sw	a5,-60(s0)
   if((fd0 = fdalloc(rf)) < 0 || (fd1 = fdalloc(wf)) < 0){
-    80204958:	fd043503          	ld	a0,-48(s0)
-    8020495c:	00000097          	auipc	ra,0x0
-    80204960:	a2e080e7          	jalr	-1490(ra) # 8020438a <fdalloc>
-    80204964:	fca42223          	sw	a0,-60(s0)
-    80204968:	08054a63          	bltz	a0,802049fc <sys_pipe+0xe6>
-    8020496c:	fc843503          	ld	a0,-56(s0)
-    80204970:	00000097          	auipc	ra,0x0
-    80204974:	a1a080e7          	jalr	-1510(ra) # 8020438a <fdalloc>
-    80204978:	fca42023          	sw	a0,-64(s0)
-    8020497c:	06054763          	bltz	a0,802049ea <sys_pipe+0xd4>
+    80204c74:	fd043503          	ld	a0,-48(s0)
+    80204c78:	00000097          	auipc	ra,0x0
+    80204c7c:	a2e080e7          	jalr	-1490(ra) # 802046a6 <fdalloc>
+    80204c80:	fca42223          	sw	a0,-60(s0)
+    80204c84:	08054a63          	bltz	a0,80204d18 <sys_pipe+0xe6>
+    80204c88:	fc843503          	ld	a0,-56(s0)
+    80204c8c:	00000097          	auipc	ra,0x0
+    80204c90:	a1a080e7          	jalr	-1510(ra) # 802046a6 <fdalloc>
+    80204c94:	fca42023          	sw	a0,-64(s0)
+    80204c98:	06054763          	bltz	a0,80204d06 <sys_pipe+0xd4>
     fileclose(wf);
     return -1;
   }
   // if(copyout(p->pagetable, fdarray, (char*)&fd0, sizeof(fd0)) < 0 ||
   //    copyout(p->pagetable, fdarray+sizeof(fd0), (char *)&fd1, sizeof(fd1)) < 0){
   if(copyout2(fdarray, (char*)&fd0, sizeof(fd0)) < 0 ||
-    80204980:	4611                	li	a2,4
-    80204982:	fc440593          	addi	a1,s0,-60
-    80204986:	fd843503          	ld	a0,-40(s0)
-    8020498a:	ffffd097          	auipc	ra,0xffffd
-    8020498e:	9e8080e7          	jalr	-1560(ra) # 80201372 <copyout2>
-    80204992:	00054f63          	bltz	a0,802049b0 <sys_pipe+0x9a>
+    80204c9c:	4611                	li	a2,4
+    80204c9e:	fc440593          	addi	a1,s0,-60
+    80204ca2:	fd843503          	ld	a0,-40(s0)
+    80204ca6:	ffffc097          	auipc	ra,0xffffc
+    80204caa:	6cc080e7          	jalr	1740(ra) # 80201372 <copyout2>
+    80204cae:	00054f63          	bltz	a0,80204ccc <sys_pipe+0x9a>
      copyout2(fdarray+sizeof(fd0), (char *)&fd1, sizeof(fd1)) < 0){
-    80204996:	4611                	li	a2,4
-    80204998:	fc040593          	addi	a1,s0,-64
-    8020499c:	fd843503          	ld	a0,-40(s0)
-    802049a0:	0511                	addi	a0,a0,4
-    802049a2:	ffffd097          	auipc	ra,0xffffd
-    802049a6:	9d0080e7          	jalr	-1584(ra) # 80201372 <copyout2>
+    80204cb2:	4611                	li	a2,4
+    80204cb4:	fc040593          	addi	a1,s0,-64
+    80204cb8:	fd843503          	ld	a0,-40(s0)
+    80204cbc:	0511                	addi	a0,a0,4
+    80204cbe:	ffffc097          	auipc	ra,0xffffc
+    80204cc2:	6b4080e7          	jalr	1716(ra) # 80201372 <copyout2>
     p->ofile[fd1] = 0;
     fileclose(rf);
     fileclose(wf);
     return -1;
   }
   return 0;
-    802049aa:	4781                	li	a5,0
+    80204cc6:	4781                	li	a5,0
   if(copyout2(fdarray, (char*)&fd0, sizeof(fd0)) < 0 ||
-    802049ac:	06055563          	bgez	a0,80204a16 <sys_pipe+0x100>
+    80204cc8:	06055563          	bgez	a0,80204d32 <sys_pipe+0x100>
     p->ofile[fd0] = 0;
-    802049b0:	fc442783          	lw	a5,-60(s0)
-    802049b4:	07e9                	addi	a5,a5,26
-    802049b6:	078e                	slli	a5,a5,0x3
-    802049b8:	97a6                	add	a5,a5,s1
-    802049ba:	0007b423          	sd	zero,8(a5)
+    80204ccc:	fc442783          	lw	a5,-60(s0)
+    80204cd0:	07e9                	addi	a5,a5,26
+    80204cd2:	078e                	slli	a5,a5,0x3
+    80204cd4:	97a6                	add	a5,a5,s1
+    80204cd6:	0007b423          	sd	zero,8(a5)
     p->ofile[fd1] = 0;
-    802049be:	fc042783          	lw	a5,-64(s0)
-    802049c2:	07e9                	addi	a5,a5,26
-    802049c4:	078e                	slli	a5,a5,0x3
-    802049c6:	00f48533          	add	a0,s1,a5
-    802049ca:	00053423          	sd	zero,8(a0)
+    80204cda:	fc042783          	lw	a5,-64(s0)
+    80204cde:	07e9                	addi	a5,a5,26
+    80204ce0:	078e                	slli	a5,a5,0x3
+    80204ce2:	00f48533          	add	a0,s1,a5
+    80204ce6:	00053423          	sd	zero,8(a0)
     fileclose(rf);
-    802049ce:	fd043503          	ld	a0,-48(s0)
-    802049d2:	fffff097          	auipc	ra,0xfffff
-    802049d6:	e70080e7          	jalr	-400(ra) # 80203842 <fileclose>
+    80204cea:	fd043503          	ld	a0,-48(s0)
+    80204cee:	fffff097          	auipc	ra,0xfffff
+    80204cf2:	e70080e7          	jalr	-400(ra) # 80203b5e <fileclose>
     fileclose(wf);
-    802049da:	fc843503          	ld	a0,-56(s0)
-    802049de:	fffff097          	auipc	ra,0xfffff
-    802049e2:	e64080e7          	jalr	-412(ra) # 80203842 <fileclose>
+    80204cf6:	fc843503          	ld	a0,-56(s0)
+    80204cfa:	fffff097          	auipc	ra,0xfffff
+    80204cfe:	e64080e7          	jalr	-412(ra) # 80203b5e <fileclose>
     return -1;
-    802049e6:	57fd                	li	a5,-1
-    802049e8:	a03d                	j	80204a16 <sys_pipe+0x100>
+    80204d02:	57fd                	li	a5,-1
+    80204d04:	a03d                	j	80204d32 <sys_pipe+0x100>
     if(fd0 >= 0)
-    802049ea:	fc442783          	lw	a5,-60(s0)
-    802049ee:	0007c763          	bltz	a5,802049fc <sys_pipe+0xe6>
+    80204d06:	fc442783          	lw	a5,-60(s0)
+    80204d0a:	0007c763          	bltz	a5,80204d18 <sys_pipe+0xe6>
       p->ofile[fd0] = 0;
-    802049f2:	07e9                	addi	a5,a5,26
-    802049f4:	078e                	slli	a5,a5,0x3
-    802049f6:	97a6                	add	a5,a5,s1
-    802049f8:	0007b423          	sd	zero,8(a5)
+    80204d0e:	07e9                	addi	a5,a5,26
+    80204d10:	078e                	slli	a5,a5,0x3
+    80204d12:	97a6                	add	a5,a5,s1
+    80204d14:	0007b423          	sd	zero,8(a5)
     fileclose(rf);
-    802049fc:	fd043503          	ld	a0,-48(s0)
-    80204a00:	fffff097          	auipc	ra,0xfffff
-    80204a04:	e42080e7          	jalr	-446(ra) # 80203842 <fileclose>
+    80204d18:	fd043503          	ld	a0,-48(s0)
+    80204d1c:	fffff097          	auipc	ra,0xfffff
+    80204d20:	e42080e7          	jalr	-446(ra) # 80203b5e <fileclose>
     fileclose(wf);
-    80204a08:	fc843503          	ld	a0,-56(s0)
-    80204a0c:	fffff097          	auipc	ra,0xfffff
-    80204a10:	e36080e7          	jalr	-458(ra) # 80203842 <fileclose>
+    80204d24:	fc843503          	ld	a0,-56(s0)
+    80204d28:	fffff097          	auipc	ra,0xfffff
+    80204d2c:	e36080e7          	jalr	-458(ra) # 80203b5e <fileclose>
     return -1;
-    80204a14:	57fd                	li	a5,-1
+    80204d30:	57fd                	li	a5,-1
 }
-    80204a16:	853e                	mv	a0,a5
-    80204a18:	70e2                	ld	ra,56(sp)
-    80204a1a:	7442                	ld	s0,48(sp)
-    80204a1c:	74a2                	ld	s1,40(sp)
-    80204a1e:	6121                	addi	sp,sp,64
-    80204a20:	8082                	ret
+    80204d32:	853e                	mv	a0,a5
+    80204d34:	70e2                	ld	ra,56(sp)
+    80204d36:	7442                	ld	s0,48(sp)
+    80204d38:	74a2                	ld	s1,40(sp)
+    80204d3a:	6121                	addi	sp,sp,64
+    80204d3c:	8082                	ret
 
-0000000080204a22 <sys_dev>:
+0000000080204d3e <sys_dev>:
 
 // To open console device.
 uint64
 sys_dev(void)
 {
-    80204a22:	7179                	addi	sp,sp,-48
-    80204a24:	f406                	sd	ra,40(sp)
-    80204a26:	f022                	sd	s0,32(sp)
-    80204a28:	ec26                	sd	s1,24(sp)
-    80204a2a:	1800                	addi	s0,sp,48
+    80204d3e:	7179                	addi	sp,sp,-48
+    80204d40:	f406                	sd	ra,40(sp)
+    80204d42:	f022                	sd	s0,32(sp)
+    80204d44:	ec26                	sd	s1,24(sp)
+    80204d46:	1800                	addi	s0,sp,48
   int fd, omode;
   int major, minor;
   struct file *f;
 
   if(argint(0, &omode) < 0 || argint(1, &major) < 0 || argint(2, &minor) < 0){
-    80204a2c:	fdc40593          	addi	a1,s0,-36
-    80204a30:	4501                	li	a0,0
-    80204a32:	ffffe097          	auipc	ra,0xffffe
-    80204a36:	38c080e7          	jalr	908(ra) # 80202dbe <argint>
-    80204a3a:	08054a63          	bltz	a0,80204ace <sys_dev+0xac>
-    80204a3e:	fd840593          	addi	a1,s0,-40
-    80204a42:	4505                	li	a0,1
-    80204a44:	ffffe097          	auipc	ra,0xffffe
-    80204a48:	37a080e7          	jalr	890(ra) # 80202dbe <argint>
-    80204a4c:	08054763          	bltz	a0,80204ada <sys_dev+0xb8>
-    80204a50:	fd440593          	addi	a1,s0,-44
-    80204a54:	4509                	li	a0,2
-    80204a56:	ffffe097          	auipc	ra,0xffffe
-    80204a5a:	368080e7          	jalr	872(ra) # 80202dbe <argint>
-    80204a5e:	08054063          	bltz	a0,80204ade <sys_dev+0xbc>
+    80204d48:	fdc40593          	addi	a1,s0,-36
+    80204d4c:	4501                	li	a0,0
+    80204d4e:	ffffe097          	auipc	ra,0xffffe
+    80204d52:	2c4080e7          	jalr	708(ra) # 80203012 <argint>
+    80204d56:	08054a63          	bltz	a0,80204dea <sys_dev+0xac>
+    80204d5a:	fd840593          	addi	a1,s0,-40
+    80204d5e:	4505                	li	a0,1
+    80204d60:	ffffe097          	auipc	ra,0xffffe
+    80204d64:	2b2080e7          	jalr	690(ra) # 80203012 <argint>
+    80204d68:	08054763          	bltz	a0,80204df6 <sys_dev+0xb8>
+    80204d6c:	fd440593          	addi	a1,s0,-44
+    80204d70:	4509                	li	a0,2
+    80204d72:	ffffe097          	auipc	ra,0xffffe
+    80204d76:	2a0080e7          	jalr	672(ra) # 80203012 <argint>
+    80204d7a:	08054063          	bltz	a0,80204dfa <sys_dev+0xbc>
     return -1;
   }
 
   if(omode & O_CREATE){
-    80204a62:	fdc42783          	lw	a5,-36(s0)
-    80204a66:	2007f793          	andi	a5,a5,512
-    80204a6a:	ebb1                	bnez	a5,80204abe <sys_dev+0x9c>
+    80204d7e:	fdc42783          	lw	a5,-36(s0)
+    80204d82:	2007f793          	andi	a5,a5,512
+    80204d86:	ebb1                	bnez	a5,80204dda <sys_dev+0x9c>
     panic("dev file on FAT");
   }
 
   if(major < 0 || major >= NDEV)
-    80204a6c:	fd842703          	lw	a4,-40(s0)
-    80204a70:	47a5                	li	a5,9
+    80204d88:	fd842703          	lw	a4,-40(s0)
+    80204d8c:	47a5                	li	a5,9
     return -1;
-    80204a72:	557d                	li	a0,-1
+    80204d8e:	557d                	li	a0,-1
   if(major < 0 || major >= NDEV)
-    80204a74:	04e7ee63          	bltu	a5,a4,80204ad0 <sys_dev+0xae>
+    80204d90:	04e7ee63          	bltu	a5,a4,80204dec <sys_dev+0xae>
 
   if((f = filealloc()) == NULL || (fd = fdalloc(f)) < 0){
-    80204a78:	fffff097          	auipc	ra,0xfffff
-    80204a7c:	d0e080e7          	jalr	-754(ra) # 80203786 <filealloc>
-    80204a80:	84aa                	mv	s1,a0
-    80204a82:	c125                	beqz	a0,80204ae2 <sys_dev+0xc0>
-    80204a84:	00000097          	auipc	ra,0x0
-    80204a88:	906080e7          	jalr	-1786(ra) # 8020438a <fdalloc>
-    80204a8c:	04054d63          	bltz	a0,80204ae6 <sys_dev+0xc4>
+    80204d94:	fffff097          	auipc	ra,0xfffff
+    80204d98:	d0e080e7          	jalr	-754(ra) # 80203aa2 <filealloc>
+    80204d9c:	84aa                	mv	s1,a0
+    80204d9e:	c125                	beqz	a0,80204dfe <sys_dev+0xc0>
+    80204da0:	00000097          	auipc	ra,0x0
+    80204da4:	906080e7          	jalr	-1786(ra) # 802046a6 <fdalloc>
+    80204da8:	04054d63          	bltz	a0,80204e02 <sys_dev+0xc4>
     if(f)
       fileclose(f);
     return -1;
   }
 
   f->type = FD_DEVICE;
-    80204a90:	478d                	li	a5,3
-    80204a92:	c09c                	sw	a5,0(s1)
+    80204dac:	478d                	li	a5,3
+    80204dae:	c09c                	sw	a5,0(s1)
   f->off = 0;
-    80204a94:	0204a023          	sw	zero,32(s1)
+    80204db0:	0204a023          	sw	zero,32(s1)
   f->ep = 0;
-    80204a98:	0004bc23          	sd	zero,24(s1)
+    80204db4:	0004bc23          	sd	zero,24(s1)
   f->major = major;
-    80204a9c:	fd842783          	lw	a5,-40(s0)
-    80204aa0:	02f49223          	sh	a5,36(s1)
+    80204db8:	fd842783          	lw	a5,-40(s0)
+    80204dbc:	02f49223          	sh	a5,36(s1)
   f->readable = !(omode & O_WRONLY);
-    80204aa4:	fdc42783          	lw	a5,-36(s0)
-    80204aa8:	0017c713          	xori	a4,a5,1
-    80204aac:	8b05                	andi	a4,a4,1
-    80204aae:	00e48423          	sb	a4,8(s1)
+    80204dc0:	fdc42783          	lw	a5,-36(s0)
+    80204dc4:	0017c713          	xori	a4,a5,1
+    80204dc8:	8b05                	andi	a4,a4,1
+    80204dca:	00e48423          	sb	a4,8(s1)
   f->writable = (omode & O_WRONLY) || (omode & O_RDWR);
-    80204ab2:	8b8d                	andi	a5,a5,3
-    80204ab4:	00f037b3          	snez	a5,a5
-    80204ab8:	00f484a3          	sb	a5,9(s1)
+    80204dce:	8b8d                	andi	a5,a5,3
+    80204dd0:	00f037b3          	snez	a5,a5
+    80204dd4:	00f484a3          	sb	a5,9(s1)
 
   return fd;
-    80204abc:	a811                	j	80204ad0 <sys_dev+0xae>
+    80204dd8:	a811                	j	80204dec <sys_dev+0xae>
     panic("dev file on FAT");
-    80204abe:	00005517          	auipc	a0,0x5
-    80204ac2:	0b250513          	addi	a0,a0,178 # 80209b70 <digits+0x7f0>
-    80204ac6:	ffffb097          	auipc	ra,0xffffb
-    80204aca:	67e080e7          	jalr	1662(ra) # 80200144 <panic>
+    80204dda:	00005517          	auipc	a0,0x5
+    80204dde:	dce50513          	addi	a0,a0,-562 # 80209ba8 <digits+0x828>
+    80204de2:	ffffb097          	auipc	ra,0xffffb
+    80204de6:	362080e7          	jalr	866(ra) # 80200144 <panic>
     return -1;
-    80204ace:	557d                	li	a0,-1
+    80204dea:	557d                	li	a0,-1
 }
-    80204ad0:	70a2                	ld	ra,40(sp)
-    80204ad2:	7402                	ld	s0,32(sp)
-    80204ad4:	64e2                	ld	s1,24(sp)
-    80204ad6:	6145                	addi	sp,sp,48
-    80204ad8:	8082                	ret
+    80204dec:	70a2                	ld	ra,40(sp)
+    80204dee:	7402                	ld	s0,32(sp)
+    80204df0:	64e2                	ld	s1,24(sp)
+    80204df2:	6145                	addi	sp,sp,48
+    80204df4:	8082                	ret
     return -1;
-    80204ada:	557d                	li	a0,-1
-    80204adc:	bfd5                	j	80204ad0 <sys_dev+0xae>
-    80204ade:	557d                	li	a0,-1
-    80204ae0:	bfc5                	j	80204ad0 <sys_dev+0xae>
+    80204df6:	557d                	li	a0,-1
+    80204df8:	bfd5                	j	80204dec <sys_dev+0xae>
+    80204dfa:	557d                	li	a0,-1
+    80204dfc:	bfc5                	j	80204dec <sys_dev+0xae>
     return -1;
-    80204ae2:	557d                	li	a0,-1
-    80204ae4:	b7f5                	j	80204ad0 <sys_dev+0xae>
+    80204dfe:	557d                	li	a0,-1
+    80204e00:	b7f5                	j	80204dec <sys_dev+0xae>
       fileclose(f);
-    80204ae6:	8526                	mv	a0,s1
-    80204ae8:	fffff097          	auipc	ra,0xfffff
-    80204aec:	d5a080e7          	jalr	-678(ra) # 80203842 <fileclose>
+    80204e02:	8526                	mv	a0,s1
+    80204e04:	fffff097          	auipc	ra,0xfffff
+    80204e08:	d5a080e7          	jalr	-678(ra) # 80203b5e <fileclose>
     return -1;
-    80204af0:	557d                	li	a0,-1
-    80204af2:	bff9                	j	80204ad0 <sys_dev+0xae>
+    80204e0c:	557d                	li	a0,-1
+    80204e0e:	bff9                	j	80204dec <sys_dev+0xae>
 
-0000000080204af4 <sys_readdir>:
+0000000080204e10 <sys_readdir>:
 
 // To support ls command
 uint64
 sys_readdir(void)
 {
-    80204af4:	1101                	addi	sp,sp,-32
-    80204af6:	ec06                	sd	ra,24(sp)
-    80204af8:	e822                	sd	s0,16(sp)
-    80204afa:	1000                	addi	s0,sp,32
+    80204e10:	1101                	addi	sp,sp,-32
+    80204e12:	ec06                	sd	ra,24(sp)
+    80204e14:	e822                	sd	s0,16(sp)
+    80204e16:	1000                	addi	s0,sp,32
   struct file *f;
   uint64 p;
 
   if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0)
-    80204afc:	fe840613          	addi	a2,s0,-24
-    80204b00:	4581                	li	a1,0
-    80204b02:	4501                	li	a0,0
-    80204b04:	00000097          	auipc	ra,0x0
-    80204b08:	81e080e7          	jalr	-2018(ra) # 80204322 <argfd>
+    80204e18:	fe840613          	addi	a2,s0,-24
+    80204e1c:	4581                	li	a1,0
+    80204e1e:	4501                	li	a0,0
+    80204e20:	00000097          	auipc	ra,0x0
+    80204e24:	81e080e7          	jalr	-2018(ra) # 8020463e <argfd>
     return -1;
-    80204b0c:	57fd                	li	a5,-1
+    80204e28:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0)
-    80204b0e:	02054563          	bltz	a0,80204b38 <sys_readdir+0x44>
-    80204b12:	fe040593          	addi	a1,s0,-32
-    80204b16:	4505                	li	a0,1
-    80204b18:	ffffe097          	auipc	ra,0xffffe
-    80204b1c:	308080e7          	jalr	776(ra) # 80202e20 <argaddr>
+    80204e2a:	02054563          	bltz	a0,80204e54 <sys_readdir+0x44>
+    80204e2e:	fe040593          	addi	a1,s0,-32
+    80204e32:	4505                	li	a0,1
+    80204e34:	ffffe097          	auipc	ra,0xffffe
+    80204e38:	240080e7          	jalr	576(ra) # 80203074 <argaddr>
     return -1;
-    80204b20:	57fd                	li	a5,-1
+    80204e3c:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0)
-    80204b22:	00054b63          	bltz	a0,80204b38 <sys_readdir+0x44>
+    80204e3e:	00054b63          	bltz	a0,80204e54 <sys_readdir+0x44>
   return dirnext(f, p);
-    80204b26:	fe043583          	ld	a1,-32(s0)
-    80204b2a:	fe843503          	ld	a0,-24(s0)
-    80204b2e:	fffff097          	auipc	ra,0xfffff
-    80204b32:	fc0080e7          	jalr	-64(ra) # 80203aee <dirnext>
-    80204b36:	87aa                	mv	a5,a0
+    80204e42:	fe043583          	ld	a1,-32(s0)
+    80204e46:	fe843503          	ld	a0,-24(s0)
+    80204e4a:	fffff097          	auipc	ra,0xfffff
+    80204e4e:	fc0080e7          	jalr	-64(ra) # 80203e0a <dirnext>
+    80204e52:	87aa                	mv	a5,a0
 }
-    80204b38:	853e                	mv	a0,a5
-    80204b3a:	60e2                	ld	ra,24(sp)
-    80204b3c:	6442                	ld	s0,16(sp)
-    80204b3e:	6105                	addi	sp,sp,32
-    80204b40:	8082                	ret
+    80204e54:	853e                	mv	a0,a5
+    80204e56:	60e2                	ld	ra,24(sp)
+    80204e58:	6442                	ld	s0,16(sp)
+    80204e5a:	6105                	addi	sp,sp,32
+    80204e5c:	8082                	ret
 
-0000000080204b42 <sys_getcwd>:
+0000000080204e5e <sys_getcwd>:
 
 // get absolute cwd string
 uint64
 sys_getcwd(void)
 {
-    80204b42:	714d                	addi	sp,sp,-336
-    80204b44:	e686                	sd	ra,328(sp)
-    80204b46:	e2a2                	sd	s0,320(sp)
-    80204b48:	fe26                	sd	s1,312(sp)
-    80204b4a:	fa4a                	sd	s2,304(sp)
-    80204b4c:	f64e                	sd	s3,296(sp)
-    80204b4e:	f252                	sd	s4,288(sp)
-    80204b50:	ee56                	sd	s5,280(sp)
-    80204b52:	0a80                	addi	s0,sp,336
+    80204e5e:	714d                	addi	sp,sp,-336
+    80204e60:	e686                	sd	ra,328(sp)
+    80204e62:	e2a2                	sd	s0,320(sp)
+    80204e64:	fe26                	sd	s1,312(sp)
+    80204e66:	fa4a                	sd	s2,304(sp)
+    80204e68:	f64e                	sd	s3,296(sp)
+    80204e6a:	f252                	sd	s4,288(sp)
+    80204e6c:	ee56                	sd	s5,280(sp)
+    80204e6e:	0a80                	addi	s0,sp,336
   uint64 addr;
   if (argaddr(0, &addr) < 0)
-    80204b54:	fb840593          	addi	a1,s0,-72
-    80204b58:	4501                	li	a0,0
-    80204b5a:	ffffe097          	auipc	ra,0xffffe
-    80204b5e:	2c6080e7          	jalr	710(ra) # 80202e20 <argaddr>
-    80204b62:	87aa                	mv	a5,a0
+    80204e70:	fb840593          	addi	a1,s0,-72
+    80204e74:	4501                	li	a0,0
+    80204e76:	ffffe097          	auipc	ra,0xffffe
+    80204e7a:	1fe080e7          	jalr	510(ra) # 80203074 <argaddr>
+    80204e7e:	87aa                	mv	a5,a0
     return -1;
-    80204b64:	557d                	li	a0,-1
+    80204e80:	557d                	li	a0,-1
   if (argaddr(0, &addr) < 0)
-    80204b66:	0607cc63          	bltz	a5,80204bde <sys_getcwd+0x9c>
+    80204e82:	0607cc63          	bltz	a5,80204efa <sys_getcwd+0x9c>
 
   struct dirent *de = myproc()->cwd;
-    80204b6a:	ffffd097          	auipc	ra,0xffffd
-    80204b6e:	ed2080e7          	jalr	-302(ra) # 80201a3c <myproc>
-    80204b72:	15853483          	ld	s1,344(a0)
+    80204e86:	ffffd097          	auipc	ra,0xffffd
+    80204e8a:	bb6080e7          	jalr	-1098(ra) # 80201a3c <myproc>
+    80204e8e:	15853483          	ld	s1,344(a0)
   char path[FAT32_MAX_PATH];
   char *s;
   int len;
 
   if (de->parent == NULL) {
-    80204b76:	1204b783          	ld	a5,288(s1)
-    80204b7a:	cbbd                	beqz	a5,80204bf0 <sys_getcwd+0xae>
+    80204e92:	1204b783          	ld	a5,288(s1)
+    80204e96:	cbbd                	beqz	a5,80204f0c <sys_getcwd+0xae>
     s = "/";
   } else {
     s = path + FAT32_MAX_PATH - 1;
     *s = '\0';
-    80204b7c:	fa0409a3          	sb	zero,-77(s0)
+    80204e98:	fa0409a3          	sb	zero,-77(s0)
     s = path + FAT32_MAX_PATH - 1;
-    80204b80:	fb340993          	addi	s3,s0,-77
+    80204e9c:	fb340993          	addi	s3,s0,-77
     while (de->parent) {
       len = strlen(de->filename);
       s -= len;
       if (s <= path)          // can't reach root "/"
-    80204b84:	eb040a13          	addi	s4,s0,-336
+    80204ea0:	eb040a13          	addi	s4,s0,-336
         return -1;
       strncpy(s, de->filename, len);
       *--s = '/';
-    80204b88:	02f00a93          	li	s5,47
+    80204ea4:	02f00a93          	li	s5,47
       len = strlen(de->filename);
-    80204b8c:	8526                	mv	a0,s1
-    80204b8e:	ffffc097          	auipc	ra,0xffffc
-    80204b92:	d58080e7          	jalr	-680(ra) # 802008e6 <strlen>
-    80204b96:	862a                	mv	a2,a0
+    80204ea8:	8526                	mv	a0,s1
+    80204eaa:	ffffc097          	auipc	ra,0xffffc
+    80204eae:	a3c080e7          	jalr	-1476(ra) # 802008e6 <strlen>
+    80204eb2:	862a                	mv	a2,a0
       s -= len;
-    80204b98:	40a98933          	sub	s2,s3,a0
+    80204eb4:	40a98933          	sub	s2,s3,a0
       if (s <= path)          // can't reach root "/"
-    80204b9c:	052a7f63          	bgeu	s4,s2,80204bfa <sys_getcwd+0xb8>
+    80204eb8:	052a7f63          	bgeu	s4,s2,80204f16 <sys_getcwd+0xb8>
       strncpy(s, de->filename, len);
-    80204ba0:	85a6                	mv	a1,s1
-    80204ba2:	854a                	mv	a0,s2
-    80204ba4:	ffffc097          	auipc	ra,0xffffc
-    80204ba8:	cd2080e7          	jalr	-814(ra) # 80200876 <strncpy>
+    80204ebc:	85a6                	mv	a1,s1
+    80204ebe:	854a                	mv	a0,s2
+    80204ec0:	ffffc097          	auipc	ra,0xffffc
+    80204ec4:	9b6080e7          	jalr	-1610(ra) # 80200876 <strncpy>
       *--s = '/';
-    80204bac:	fff90993          	addi	s3,s2,-1
-    80204bb0:	ff590fa3          	sb	s5,-1(s2)
+    80204ec8:	fff90993          	addi	s3,s2,-1
+    80204ecc:	ff590fa3          	sb	s5,-1(s2)
       de = de->parent;
-    80204bb4:	1204b483          	ld	s1,288(s1)
+    80204ed0:	1204b483          	ld	s1,288(s1)
     while (de->parent) {
-    80204bb8:	1204b783          	ld	a5,288(s1)
-    80204bbc:	fbe1                	bnez	a5,80204b8c <sys_getcwd+0x4a>
+    80204ed4:	1204b783          	ld	a5,288(s1)
+    80204ed8:	fbe1                	bnez	a5,80204ea8 <sys_getcwd+0x4a>
     }
   }
 
   // if (copyout(myproc()->pagetable, addr, s, strlen(s) + 1) < 0)
   if (copyout2(addr, s, strlen(s) + 1) < 0)
-    80204bbe:	fb843483          	ld	s1,-72(s0)
-    80204bc2:	854e                	mv	a0,s3
-    80204bc4:	ffffc097          	auipc	ra,0xffffc
-    80204bc8:	d22080e7          	jalr	-734(ra) # 802008e6 <strlen>
-    80204bcc:	0015061b          	addiw	a2,a0,1
-    80204bd0:	85ce                	mv	a1,s3
-    80204bd2:	8526                	mv	a0,s1
-    80204bd4:	ffffc097          	auipc	ra,0xffffc
-    80204bd8:	79e080e7          	jalr	1950(ra) # 80201372 <copyout2>
-    80204bdc:	957d                	srai	a0,a0,0x3f
+    80204eda:	fb843483          	ld	s1,-72(s0)
+    80204ede:	854e                	mv	a0,s3
+    80204ee0:	ffffc097          	auipc	ra,0xffffc
+    80204ee4:	a06080e7          	jalr	-1530(ra) # 802008e6 <strlen>
+    80204ee8:	0015061b          	addiw	a2,a0,1
+    80204eec:	85ce                	mv	a1,s3
+    80204eee:	8526                	mv	a0,s1
+    80204ef0:	ffffc097          	auipc	ra,0xffffc
+    80204ef4:	482080e7          	jalr	1154(ra) # 80201372 <copyout2>
+    80204ef8:	957d                	srai	a0,a0,0x3f
     return -1;
   
   return 0;
 
 }
-    80204bde:	60b6                	ld	ra,328(sp)
-    80204be0:	6416                	ld	s0,320(sp)
-    80204be2:	74f2                	ld	s1,312(sp)
-    80204be4:	7952                	ld	s2,304(sp)
-    80204be6:	79b2                	ld	s3,296(sp)
-    80204be8:	7a12                	ld	s4,288(sp)
-    80204bea:	6af2                	ld	s5,280(sp)
-    80204bec:	6171                	addi	sp,sp,336
-    80204bee:	8082                	ret
+    80204efa:	60b6                	ld	ra,328(sp)
+    80204efc:	6416                	ld	s0,320(sp)
+    80204efe:	74f2                	ld	s1,312(sp)
+    80204f00:	7952                	ld	s2,304(sp)
+    80204f02:	79b2                	ld	s3,296(sp)
+    80204f04:	7a12                	ld	s4,288(sp)
+    80204f06:	6af2                	ld	s5,280(sp)
+    80204f08:	6171                	addi	sp,sp,336
+    80204f0a:	8082                	ret
     s = "/";
-    80204bf0:	00005997          	auipc	s3,0x5
-    80204bf4:	a4098993          	addi	s3,s3,-1472 # 80209630 <digits+0x2b0>
-    80204bf8:	b7d9                	j	80204bbe <sys_getcwd+0x7c>
+    80204f0c:	00004997          	auipc	s3,0x4
+    80204f10:	72498993          	addi	s3,s3,1828 # 80209630 <digits+0x2b0>
+    80204f14:	b7d9                	j	80204eda <sys_getcwd+0x7c>
         return -1;
-    80204bfa:	557d                	li	a0,-1
-    80204bfc:	b7cd                	j	80204bde <sys_getcwd+0x9c>
+    80204f16:	557d                	li	a0,-1
+    80204f18:	b7cd                	j	80204efa <sys_getcwd+0x9c>
 
-0000000080204bfe <sys_remove>:
+0000000080204f1a <sys_remove>:
   return ret == -1;
 }
 
 uint64
 sys_remove(void)
 {
-    80204bfe:	d6010113          	addi	sp,sp,-672
-    80204c02:	28113c23          	sd	ra,664(sp)
-    80204c06:	28813823          	sd	s0,656(sp)
-    80204c0a:	28913423          	sd	s1,648(sp)
-    80204c0e:	1500                	addi	s0,sp,672
+    80204f1a:	d6010113          	addi	sp,sp,-672
+    80204f1e:	28113c23          	sd	ra,664(sp)
+    80204f22:	28813823          	sd	s0,656(sp)
+    80204f26:	28913423          	sd	s1,648(sp)
+    80204f2a:	1500                	addi	s0,sp,672
   char path[FAT32_MAX_PATH];
   struct dirent *ep;
   int len;
   if((len = argstr(0, path, FAT32_MAX_PATH)) <= 0)
-    80204c10:	10400613          	li	a2,260
-    80204c14:	ed840593          	addi	a1,s0,-296
-    80204c18:	4501                	li	a0,0
-    80204c1a:	ffffe097          	auipc	ra,0xffffe
-    80204c1e:	228080e7          	jalr	552(ra) # 80202e42 <argstr>
-    80204c22:	0ea05a63          	blez	a0,80204d16 <sys_remove+0x118>
+    80204f2c:	10400613          	li	a2,260
+    80204f30:	ed840593          	addi	a1,s0,-296
+    80204f34:	4501                	li	a0,0
+    80204f36:	ffffe097          	auipc	ra,0xffffe
+    80204f3a:	160080e7          	jalr	352(ra) # 80203096 <argstr>
+    80204f3e:	0ea05a63          	blez	a0,80205032 <sys_remove+0x118>
     return -1;
 
   char *s = path + len - 1;
-    80204c26:	157d                	addi	a0,a0,-1
-    80204c28:	ed840713          	addi	a4,s0,-296
-    80204c2c:	00a707b3          	add	a5,a4,a0
+    80204f42:	157d                	addi	a0,a0,-1
+    80204f44:	ed840713          	addi	a4,s0,-296
+    80204f48:	00a707b3          	add	a5,a4,a0
   while (s >= path && *s == '/') {
-    80204c30:	02f00693          	li	a3,47
-    80204c34:	863a                	mv	a2,a4
-    80204c36:	00e7e963          	bltu	a5,a4,80204c48 <sys_remove+0x4a>
-    80204c3a:	0007c703          	lbu	a4,0(a5)
-    80204c3e:	08d71a63          	bne	a4,a3,80204cd2 <sys_remove+0xd4>
+    80204f4c:	02f00693          	li	a3,47
+    80204f50:	863a                	mv	a2,a4
+    80204f52:	00e7e963          	bltu	a5,a4,80204f64 <sys_remove+0x4a>
+    80204f56:	0007c703          	lbu	a4,0(a5)
+    80204f5a:	08d71a63          	bne	a4,a3,80204fee <sys_remove+0xd4>
     s--;
-    80204c42:	17fd                	addi	a5,a5,-1
+    80204f5e:	17fd                	addi	a5,a5,-1
   while (s >= path && *s == '/') {
-    80204c44:	fec7fbe3          	bgeu	a5,a2,80204c3a <sys_remove+0x3c>
+    80204f60:	fec7fbe3          	bgeu	a5,a2,80204f56 <sys_remove+0x3c>
   }
   if (s >= path && *s == '.' && (s == path || *--s == '/')) {
     return -1;
   }
   
   if((ep = ename(path)) == NULL){
-    80204c48:	ed840513          	addi	a0,s0,-296
-    80204c4c:	00002097          	auipc	ra,0x2
-    80204c50:	d9a080e7          	jalr	-614(ra) # 802069e6 <ename>
-    80204c54:	84aa                	mv	s1,a0
-    80204c56:	c561                	beqz	a0,80204d1e <sys_remove+0x120>
+    80204f64:	ed840513          	addi	a0,s0,-296
+    80204f68:	00002097          	auipc	ra,0x2
+    80204f6c:	dce080e7          	jalr	-562(ra) # 80206d36 <ename>
+    80204f70:	84aa                	mv	s1,a0
+    80204f72:	c561                	beqz	a0,8020503a <sys_remove+0x120>
     return -1;
   }
   elock(ep);
-    80204c58:	00001097          	auipc	ra,0x1
-    80204c5c:	5e6080e7          	jalr	1510(ra) # 8020623e <elock>
+    80204f74:	00001097          	auipc	ra,0x1
+    80204f78:	61a080e7          	jalr	1562(ra) # 8020658e <elock>
   if((ep->attribute & ATTR_DIRECTORY) && !isdirempty(ep)){
-    80204c60:	1004c783          	lbu	a5,256(s1)
-    80204c64:	8bc1                	andi	a5,a5,16
-    80204c66:	c38d                	beqz	a5,80204c88 <sys_remove+0x8a>
+    80204f7c:	1004c783          	lbu	a5,256(s1)
+    80204f80:	8bc1                	andi	a5,a5,16
+    80204f82:	c38d                	beqz	a5,80204fa4 <sys_remove+0x8a>
   ep.valid = 0;
-    80204c68:	e8041323          	sh	zero,-378(s0)
+    80204f84:	e8041323          	sh	zero,-378(s0)
   ret = enext(dp, &ep, 2 * 32, &count);   // skip the "." and ".."
-    80204c6c:	d6c40693          	addi	a3,s0,-660
-    80204c70:	04000613          	li	a2,64
-    80204c74:	d7040593          	addi	a1,s0,-656
-    80204c78:	8526                	mv	a0,s1
-    80204c7a:	00001097          	auipc	ra,0x1
-    80204c7e:	7c8080e7          	jalr	1992(ra) # 80206442 <enext>
+    80204f88:	d6c40693          	addi	a3,s0,-660
+    80204f8c:	04000613          	li	a2,64
+    80204f90:	d7040593          	addi	a1,s0,-656
+    80204f94:	8526                	mv	a0,s1
+    80204f96:	00001097          	auipc	ra,0x1
+    80204f9a:	7fc080e7          	jalr	2044(ra) # 80206792 <enext>
   if((ep->attribute & ATTR_DIRECTORY) && !isdirempty(ep)){
-    80204c82:	57fd                	li	a5,-1
-    80204c84:	06f51d63          	bne	a0,a5,80204cfe <sys_remove+0x100>
+    80204f9e:	57fd                	li	a5,-1
+    80204fa0:	06f51d63          	bne	a0,a5,8020501a <sys_remove+0x100>
       eunlock(ep);
       eput(ep);
       return -1;
   }
   elock(ep->parent);      // Will this lead to deadlock?
-    80204c88:	1204b503          	ld	a0,288(s1)
-    80204c8c:	00001097          	auipc	ra,0x1
-    80204c90:	5b2080e7          	jalr	1458(ra) # 8020623e <elock>
+    80204fa4:	1204b503          	ld	a0,288(s1)
+    80204fa8:	00001097          	auipc	ra,0x1
+    80204fac:	5e6080e7          	jalr	1510(ra) # 8020658e <elock>
   eremove(ep);
-    80204c94:	8526                	mv	a0,s1
-    80204c96:	00001097          	auipc	ra,0x1
-    80204c9a:	474080e7          	jalr	1140(ra) # 8020610a <eremove>
+    80204fb0:	8526                	mv	a0,s1
+    80204fb2:	00001097          	auipc	ra,0x1
+    80204fb6:	4a8080e7          	jalr	1192(ra) # 8020645a <eremove>
   eunlock(ep->parent);
-    80204c9e:	1204b503          	ld	a0,288(s1)
-    80204ca2:	00001097          	auipc	ra,0x1
-    80204ca6:	5d2080e7          	jalr	1490(ra) # 80206274 <eunlock>
+    80204fba:	1204b503          	ld	a0,288(s1)
+    80204fbe:	00001097          	auipc	ra,0x1
+    80204fc2:	606080e7          	jalr	1542(ra) # 802065c4 <eunlock>
   eunlock(ep);
-    80204caa:	8526                	mv	a0,s1
-    80204cac:	00001097          	auipc	ra,0x1
-    80204cb0:	5c8080e7          	jalr	1480(ra) # 80206274 <eunlock>
+    80204fc6:	8526                	mv	a0,s1
+    80204fc8:	00001097          	auipc	ra,0x1
+    80204fcc:	5fc080e7          	jalr	1532(ra) # 802065c4 <eunlock>
   eput(ep);
-    80204cb4:	8526                	mv	a0,s1
-    80204cb6:	00001097          	auipc	ra,0x1
-    80204cba:	60c080e7          	jalr	1548(ra) # 802062c2 <eput>
+    80204fd0:	8526                	mv	a0,s1
+    80204fd2:	00001097          	auipc	ra,0x1
+    80204fd6:	640080e7          	jalr	1600(ra) # 80206612 <eput>
 
   return 0;
-    80204cbe:	4501                	li	a0,0
+    80204fda:	4501                	li	a0,0
 }
-    80204cc0:	29813083          	ld	ra,664(sp)
-    80204cc4:	29013403          	ld	s0,656(sp)
-    80204cc8:	28813483          	ld	s1,648(sp)
-    80204ccc:	2a010113          	addi	sp,sp,672
-    80204cd0:	8082                	ret
+    80204fdc:	29813083          	ld	ra,664(sp)
+    80204fe0:	29013403          	ld	s0,656(sp)
+    80204fe4:	28813483          	ld	s1,648(sp)
+    80204fe8:	2a010113          	addi	sp,sp,672
+    80204fec:	8082                	ret
   if (s >= path && *s == '.' && (s == path || *--s == '/')) {
-    80204cd2:	ed840713          	addi	a4,s0,-296
-    80204cd6:	f6e7e9e3          	bltu	a5,a4,80204c48 <sys_remove+0x4a>
-    80204cda:	0007c683          	lbu	a3,0(a5)
-    80204cde:	02e00713          	li	a4,46
-    80204ce2:	f6e693e3          	bne	a3,a4,80204c48 <sys_remove+0x4a>
-    80204ce6:	ed840713          	addi	a4,s0,-296
-    80204cea:	02e78863          	beq	a5,a4,80204d1a <sys_remove+0x11c>
-    80204cee:	fff7c703          	lbu	a4,-1(a5)
-    80204cf2:	02f00793          	li	a5,47
-    80204cf6:	f4f719e3          	bne	a4,a5,80204c48 <sys_remove+0x4a>
+    80204fee:	ed840713          	addi	a4,s0,-296
+    80204ff2:	f6e7e9e3          	bltu	a5,a4,80204f64 <sys_remove+0x4a>
+    80204ff6:	0007c683          	lbu	a3,0(a5)
+    80204ffa:	02e00713          	li	a4,46
+    80204ffe:	f6e693e3          	bne	a3,a4,80204f64 <sys_remove+0x4a>
+    80205002:	ed840713          	addi	a4,s0,-296
+    80205006:	02e78863          	beq	a5,a4,80205036 <sys_remove+0x11c>
+    8020500a:	fff7c703          	lbu	a4,-1(a5)
+    8020500e:	02f00793          	li	a5,47
+    80205012:	f4f719e3          	bne	a4,a5,80204f64 <sys_remove+0x4a>
     return -1;
-    80204cfa:	557d                	li	a0,-1
-    80204cfc:	b7d1                	j	80204cc0 <sys_remove+0xc2>
+    80205016:	557d                	li	a0,-1
+    80205018:	b7d1                	j	80204fdc <sys_remove+0xc2>
       eunlock(ep);
-    80204cfe:	8526                	mv	a0,s1
-    80204d00:	00001097          	auipc	ra,0x1
-    80204d04:	574080e7          	jalr	1396(ra) # 80206274 <eunlock>
+    8020501a:	8526                	mv	a0,s1
+    8020501c:	00001097          	auipc	ra,0x1
+    80205020:	5a8080e7          	jalr	1448(ra) # 802065c4 <eunlock>
       eput(ep);
-    80204d08:	8526                	mv	a0,s1
-    80204d0a:	00001097          	auipc	ra,0x1
-    80204d0e:	5b8080e7          	jalr	1464(ra) # 802062c2 <eput>
+    80205024:	8526                	mv	a0,s1
+    80205026:	00001097          	auipc	ra,0x1
+    8020502a:	5ec080e7          	jalr	1516(ra) # 80206612 <eput>
       return -1;
-    80204d12:	557d                	li	a0,-1
-    80204d14:	b775                	j	80204cc0 <sys_remove+0xc2>
+    8020502e:	557d                	li	a0,-1
+    80205030:	b775                	j	80204fdc <sys_remove+0xc2>
     return -1;
-    80204d16:	557d                	li	a0,-1
-    80204d18:	b765                	j	80204cc0 <sys_remove+0xc2>
+    80205032:	557d                	li	a0,-1
+    80205034:	b765                	j	80204fdc <sys_remove+0xc2>
     return -1;
-    80204d1a:	557d                	li	a0,-1
-    80204d1c:	b755                	j	80204cc0 <sys_remove+0xc2>
+    80205036:	557d                	li	a0,-1
+    80205038:	b755                	j	80204fdc <sys_remove+0xc2>
     return -1;
-    80204d1e:	557d                	li	a0,-1
-    80204d20:	b745                	j	80204cc0 <sys_remove+0xc2>
+    8020503a:	557d                	li	a0,-1
+    8020503c:	b745                	j	80204fdc <sys_remove+0xc2>
 
-0000000080204d22 <sys_rename>:
+000000008020503e <sys_rename>:
 
 // Must hold too many locks at a time! It's possible to raise a deadlock.
 // Because this op takes some steps, we can't promise
 uint64
 sys_rename(void)
 {
-    80204d22:	c4010113          	addi	sp,sp,-960
-    80204d26:	3a113c23          	sd	ra,952(sp)
-    80204d2a:	3a813823          	sd	s0,944(sp)
-    80204d2e:	3a913423          	sd	s1,936(sp)
-    80204d32:	3b213023          	sd	s2,928(sp)
-    80204d36:	39313c23          	sd	s3,920(sp)
-    80204d3a:	39413823          	sd	s4,912(sp)
-    80204d3e:	0780                	addi	s0,sp,960
+    8020503e:	c4010113          	addi	sp,sp,-960
+    80205042:	3a113c23          	sd	ra,952(sp)
+    80205046:	3a813823          	sd	s0,944(sp)
+    8020504a:	3a913423          	sd	s1,936(sp)
+    8020504e:	3b213023          	sd	s2,928(sp)
+    80205052:	39313c23          	sd	s3,920(sp)
+    80205056:	39413823          	sd	s4,912(sp)
+    8020505a:	0780                	addi	s0,sp,960
   char old[FAT32_MAX_PATH], new[FAT32_MAX_PATH];
   if (argstr(0, old, FAT32_MAX_PATH) < 0 || argstr(1, new, FAT32_MAX_PATH) < 0) {
-    80204d40:	10400613          	li	a2,260
-    80204d44:	ec840593          	addi	a1,s0,-312
-    80204d48:	4501                	li	a0,0
-    80204d4a:	ffffe097          	auipc	ra,0xffffe
-    80204d4e:	0f8080e7          	jalr	248(ra) # 80202e42 <argstr>
+    8020505c:	10400613          	li	a2,260
+    80205060:	ec840593          	addi	a1,s0,-312
+    80205064:	4501                	li	a0,0
+    80205066:	ffffe097          	auipc	ra,0xffffe
+    8020506a:	030080e7          	jalr	48(ra) # 80203096 <argstr>
       return -1;
-    80204d52:	57fd                	li	a5,-1
+    8020506e:	57fd                	li	a5,-1
   if (argstr(0, old, FAT32_MAX_PATH) < 0 || argstr(1, new, FAT32_MAX_PATH) < 0) {
-    80204d54:	0c054d63          	bltz	a0,80204e2e <sys_rename+0x10c>
-    80204d58:	10400613          	li	a2,260
-    80204d5c:	dc040593          	addi	a1,s0,-576
-    80204d60:	4505                	li	a0,1
-    80204d62:	ffffe097          	auipc	ra,0xffffe
-    80204d66:	0e0080e7          	jalr	224(ra) # 80202e42 <argstr>
+    80205070:	0c054d63          	bltz	a0,8020514a <sys_rename+0x10c>
+    80205074:	10400613          	li	a2,260
+    80205078:	dc040593          	addi	a1,s0,-576
+    8020507c:	4505                	li	a0,1
+    8020507e:	ffffe097          	auipc	ra,0xffffe
+    80205082:	018080e7          	jalr	24(ra) # 80203096 <argstr>
       return -1;
-    80204d6a:	57fd                	li	a5,-1
+    80205086:	57fd                	li	a5,-1
   if (argstr(0, old, FAT32_MAX_PATH) < 0 || argstr(1, new, FAT32_MAX_PATH) < 0) {
-    80204d6c:	0c054163          	bltz	a0,80204e2e <sys_rename+0x10c>
+    80205088:	0c054163          	bltz	a0,8020514a <sys_rename+0x10c>
   }
 
   struct dirent *src = NULL, *dst = NULL, *pdst = NULL;
   int srclock = 0;
   char *name;
   if ((src = ename(old)) == NULL || (pdst = enameparent(new, old)) == NULL
-    80204d70:	ec840513          	addi	a0,s0,-312
-    80204d74:	00002097          	auipc	ra,0x2
-    80204d78:	c72080e7          	jalr	-910(ra) # 802069e6 <ename>
-    80204d7c:	84aa                	mv	s1,a0
-    80204d7e:	1c050963          	beqz	a0,80204f50 <sys_rename+0x22e>
-    80204d82:	ec840593          	addi	a1,s0,-312
-    80204d86:	dc040513          	addi	a0,s0,-576
-    80204d8a:	00002097          	auipc	ra,0x2
-    80204d8e:	c7a080e7          	jalr	-902(ra) # 80206a04 <enameparent>
-    80204d92:	892a                	mv	s2,a0
-    80204d94:	cd35                	beqz	a0,80204e10 <sys_rename+0xee>
+    8020508c:	ec840513          	addi	a0,s0,-312
+    80205090:	00002097          	auipc	ra,0x2
+    80205094:	ca6080e7          	jalr	-858(ra) # 80206d36 <ename>
+    80205098:	84aa                	mv	s1,a0
+    8020509a:	1c050963          	beqz	a0,8020526c <sys_rename+0x22e>
+    8020509e:	ec840593          	addi	a1,s0,-312
+    802050a2:	dc040513          	addi	a0,s0,-576
+    802050a6:	00002097          	auipc	ra,0x2
+    802050aa:	cae080e7          	jalr	-850(ra) # 80206d54 <enameparent>
+    802050ae:	892a                	mv	s2,a0
+    802050b0:	cd35                	beqz	a0,8020512c <sys_rename+0xee>
       || (name = formatname(old)) == NULL) {
-    80204d96:	ec840513          	addi	a0,s0,-312
-    80204d9a:	00001097          	auipc	ra,0x1
-    80204d9e:	dc4080e7          	jalr	-572(ra) # 80205b5e <formatname>
-    80204da2:	89aa                	mv	s3,a0
-    80204da4:	c535                	beqz	a0,80204e10 <sys_rename+0xee>
+    802050b2:	ec840513          	addi	a0,s0,-312
+    802050b6:	00001097          	auipc	ra,0x1
+    802050ba:	df8080e7          	jalr	-520(ra) # 80205eae <formatname>
+    802050be:	89aa                	mv	s3,a0
+    802050c0:	c535                	beqz	a0,8020512c <sys_rename+0xee>
     goto fail;          // src doesn't exist || dst parent doesn't exist || illegal new name
   }
   for (struct dirent *ep = pdst; ep != NULL; ep = ep->parent) {
     if (ep == src) {    // In what universe can we move a directory into its child?
-    80204da6:	07248563          	beq	s1,s2,80204e10 <sys_rename+0xee>
+    802050c2:	07248563          	beq	s1,s2,8020512c <sys_rename+0xee>
   for (struct dirent *ep = pdst; ep != NULL; ep = ep->parent) {
-    80204daa:	87ca                	mv	a5,s2
-    80204dac:	1207b783          	ld	a5,288(a5)
-    80204db0:	c781                	beqz	a5,80204db8 <sys_rename+0x96>
+    802050c6:	87ca                	mv	a5,s2
+    802050c8:	1207b783          	ld	a5,288(a5)
+    802050cc:	c781                	beqz	a5,802050d4 <sys_rename+0x96>
     if (ep == src) {    // In what universe can we move a directory into its child?
-    80204db2:	fef49de3          	bne	s1,a5,80204dac <sys_rename+0x8a>
-    80204db6:	a8a9                	j	80204e10 <sys_rename+0xee>
+    802050ce:	fef49de3          	bne	s1,a5,802050c8 <sys_rename+0x8a>
+    802050d2:	a8a9                	j	8020512c <sys_rename+0xee>
       goto fail;
     }
   }
 
   uint off;
   elock(src);     // must hold child's lock before acquiring parent's, because we do so in other similar cases
-    80204db8:	8526                	mv	a0,s1
-    80204dba:	00001097          	auipc	ra,0x1
-    80204dbe:	484080e7          	jalr	1156(ra) # 8020623e <elock>
+    802050d4:	8526                	mv	a0,s1
+    802050d6:	00001097          	auipc	ra,0x1
+    802050da:	4b8080e7          	jalr	1208(ra) # 8020658e <elock>
   srclock = 1;
   elock(pdst);
-    80204dc2:	854a                	mv	a0,s2
-    80204dc4:	00001097          	auipc	ra,0x1
-    80204dc8:	47a080e7          	jalr	1146(ra) # 8020623e <elock>
+    802050de:	854a                	mv	a0,s2
+    802050e0:	00001097          	auipc	ra,0x1
+    802050e4:	4ae080e7          	jalr	1198(ra) # 8020658e <elock>
   dst = dirlookup(pdst, name, &off);
-    80204dcc:	dbc40613          	addi	a2,s0,-580
-    80204dd0:	85ce                	mv	a1,s3
-    80204dd2:	854a                	mv	a0,s2
-    80204dd4:	00001097          	auipc	ra,0x1
-    80204dd8:	7f8080e7          	jalr	2040(ra) # 802065cc <dirlookup>
-    80204ddc:	8a2a                	mv	s4,a0
+    802050e8:	dbc40613          	addi	a2,s0,-580
+    802050ec:	85ce                	mv	a1,s3
+    802050ee:	854a                	mv	a0,s2
+    802050f0:	00002097          	auipc	ra,0x2
+    802050f4:	82c080e7          	jalr	-2004(ra) # 8020691c <dirlookup>
+    802050f8:	8a2a                	mv	s4,a0
   if (dst != NULL) {
-    80204dde:	cd45                	beqz	a0,80204e96 <sys_rename+0x174>
+    802050fa:	cd45                	beqz	a0,802051b2 <sys_rename+0x174>
     eunlock(pdst);
-    80204de0:	854a                	mv	a0,s2
-    80204de2:	00001097          	auipc	ra,0x1
-    80204de6:	492080e7          	jalr	1170(ra) # 80206274 <eunlock>
+    802050fc:	854a                	mv	a0,s2
+    802050fe:	00001097          	auipc	ra,0x1
+    80205102:	4c6080e7          	jalr	1222(ra) # 802065c4 <eunlock>
     if (src == dst) {
-    80204dea:	01448963          	beq	s1,s4,80204dfc <sys_rename+0xda>
+    80205106:	01448963          	beq	s1,s4,80205118 <sys_rename+0xda>
       goto fail;
     } else if (src->attribute & dst->attribute & ATTR_DIRECTORY) {
-    80204dee:	1004c783          	lbu	a5,256(s1)
-    80204df2:	100a4703          	lbu	a4,256(s4)
-    80204df6:	8ff9                	and	a5,a5,a4
-    80204df8:	8bc1                	andi	a5,a5,16
-    80204dfa:	ebb1                	bnez	a5,80204e4e <sys_rename+0x12c>
+    8020510a:	1004c783          	lbu	a5,256(s1)
+    8020510e:	100a4703          	lbu	a4,256(s4)
+    80205112:	8ff9                	and	a5,a5,a4
+    80205114:	8bc1                	andi	a5,a5,16
+    80205116:	ebb1                	bnez	a5,8020516a <sys_rename+0x12c>
 
   return 0;
 
 fail:
   if (srclock)
     eunlock(src);
-    80204dfc:	8526                	mv	a0,s1
-    80204dfe:	00001097          	auipc	ra,0x1
-    80204e02:	476080e7          	jalr	1142(ra) # 80206274 <eunlock>
+    80205118:	8526                	mv	a0,s1
+    8020511a:	00001097          	auipc	ra,0x1
+    8020511e:	4aa080e7          	jalr	1194(ra) # 802065c4 <eunlock>
   if (dst)
     eput(dst);
-    80204e06:	8552                	mv	a0,s4
-    80204e08:	00001097          	auipc	ra,0x1
-    80204e0c:	4ba080e7          	jalr	1210(ra) # 802062c2 <eput>
+    80205122:	8552                	mv	a0,s4
+    80205124:	00001097          	auipc	ra,0x1
+    80205128:	4ee080e7          	jalr	1262(ra) # 80206612 <eput>
   if (pdst)
-    80204e10:	00090763          	beqz	s2,80204e1e <sys_rename+0xfc>
+    8020512c:	00090763          	beqz	s2,8020513a <sys_rename+0xfc>
     eput(pdst);
-    80204e14:	854a                	mv	a0,s2
-    80204e16:	00001097          	auipc	ra,0x1
-    80204e1a:	4ac080e7          	jalr	1196(ra) # 802062c2 <eput>
+    80205130:	854a                	mv	a0,s2
+    80205132:	00001097          	auipc	ra,0x1
+    80205136:	4e0080e7          	jalr	1248(ra) # 80206612 <eput>
   if (src)
     eput(src);
   return -1;
-    80204e1e:	57fd                	li	a5,-1
+    8020513a:	57fd                	li	a5,-1
   if (src)
-    80204e20:	c499                	beqz	s1,80204e2e <sys_rename+0x10c>
+    8020513c:	c499                	beqz	s1,8020514a <sys_rename+0x10c>
     eput(src);
-    80204e22:	8526                	mv	a0,s1
-    80204e24:	00001097          	auipc	ra,0x1
-    80204e28:	49e080e7          	jalr	1182(ra) # 802062c2 <eput>
+    8020513e:	8526                	mv	a0,s1
+    80205140:	00001097          	auipc	ra,0x1
+    80205144:	4d2080e7          	jalr	1234(ra) # 80206612 <eput>
   return -1;
-    80204e2c:	57fd                	li	a5,-1
-}
-    80204e2e:	853e                	mv	a0,a5
-    80204e30:	3b813083          	ld	ra,952(sp)
-    80204e34:	3b013403          	ld	s0,944(sp)
-    80204e38:	3a813483          	ld	s1,936(sp)
-    80204e3c:	3a013903          	ld	s2,928(sp)
-    80204e40:	39813983          	ld	s3,920(sp)
-    80204e44:	39013a03          	ld	s4,912(sp)
-    80204e48:	3c010113          	addi	sp,sp,960
-    80204e4c:	8082                	ret
+    80205148:	57fd                	li	a5,-1
+}
+    8020514a:	853e                	mv	a0,a5
+    8020514c:	3b813083          	ld	ra,952(sp)
+    80205150:	3b013403          	ld	s0,944(sp)
+    80205154:	3a813483          	ld	s1,936(sp)
+    80205158:	3a013903          	ld	s2,928(sp)
+    8020515c:	39813983          	ld	s3,920(sp)
+    80205160:	39013a03          	ld	s4,912(sp)
+    80205164:	3c010113          	addi	sp,sp,960
+    80205168:	8082                	ret
       elock(dst);
-    80204e4e:	8552                	mv	a0,s4
-    80204e50:	00001097          	auipc	ra,0x1
-    80204e54:	3ee080e7          	jalr	1006(ra) # 8020623e <elock>
+    8020516a:	8552                	mv	a0,s4
+    8020516c:	00001097          	auipc	ra,0x1
+    80205170:	422080e7          	jalr	1058(ra) # 8020658e <elock>
   ep.valid = 0;
-    80204e58:	d6041323          	sh	zero,-666(s0)
+    80205174:	d6041323          	sh	zero,-666(s0)
   ret = enext(dp, &ep, 2 * 32, &count);   // skip the "." and ".."
-    80204e5c:	c4c40693          	addi	a3,s0,-948
-    80204e60:	04000613          	li	a2,64
-    80204e64:	c5040593          	addi	a1,s0,-944
-    80204e68:	8552                	mv	a0,s4
-    80204e6a:	00001097          	auipc	ra,0x1
-    80204e6e:	5d8080e7          	jalr	1496(ra) # 80206442 <enext>
+    80205178:	c4c40693          	addi	a3,s0,-948
+    8020517c:	04000613          	li	a2,64
+    80205180:	c5040593          	addi	a1,s0,-944
+    80205184:	8552                	mv	a0,s4
+    80205186:	00001097          	auipc	ra,0x1
+    8020518a:	60c080e7          	jalr	1548(ra) # 80206792 <enext>
       if (!isdirempty(dst)) {    // it's ok to overwrite an empty dir
-    80204e72:	57fd                	li	a5,-1
-    80204e74:	0cf51863          	bne	a0,a5,80204f44 <sys_rename+0x222>
+    8020518e:	57fd                	li	a5,-1
+    80205190:	0cf51863          	bne	a0,a5,80205260 <sys_rename+0x222>
       elock(pdst);
-    80204e78:	854a                	mv	a0,s2
-    80204e7a:	00001097          	auipc	ra,0x1
-    80204e7e:	3c4080e7          	jalr	964(ra) # 8020623e <elock>
+    80205194:	854a                	mv	a0,s2
+    80205196:	00001097          	auipc	ra,0x1
+    8020519a:	3f8080e7          	jalr	1016(ra) # 8020658e <elock>
     eremove(dst);
-    80204e82:	8552                	mv	a0,s4
-    80204e84:	00001097          	auipc	ra,0x1
-    80204e88:	286080e7          	jalr	646(ra) # 8020610a <eremove>
+    8020519e:	8552                	mv	a0,s4
+    802051a0:	00001097          	auipc	ra,0x1
+    802051a4:	2ba080e7          	jalr	698(ra) # 8020645a <eremove>
     eunlock(dst);
-    80204e8c:	8552                	mv	a0,s4
-    80204e8e:	00001097          	auipc	ra,0x1
-    80204e92:	3e6080e7          	jalr	998(ra) # 80206274 <eunlock>
+    802051a8:	8552                	mv	a0,s4
+    802051aa:	00001097          	auipc	ra,0x1
+    802051ae:	41a080e7          	jalr	1050(ra) # 802065c4 <eunlock>
   memmove(src->filename, name, FAT32_MAX_FILENAME);
-    80204e96:	0ff00613          	li	a2,255
-    80204e9a:	85ce                	mv	a1,s3
-    80204e9c:	8526                	mv	a0,s1
-    80204e9e:	ffffc097          	auipc	ra,0xffffc
-    80204ea2:	920080e7          	jalr	-1760(ra) # 802007be <memmove>
+    802051b2:	0ff00613          	li	a2,255
+    802051b6:	85ce                	mv	a1,s3
+    802051b8:	8526                	mv	a0,s1
+    802051ba:	ffffb097          	auipc	ra,0xffffb
+    802051be:	604080e7          	jalr	1540(ra) # 802007be <memmove>
   emake(pdst, src, off);
-    80204ea6:	dbc42603          	lw	a2,-580(s0)
-    80204eaa:	85a6                	mv	a1,s1
-    80204eac:	854a                	mv	a0,s2
-    80204eae:	00001097          	auipc	ra,0x1
-    80204eb2:	d68080e7          	jalr	-664(ra) # 80205c16 <emake>
+    802051c2:	dbc42603          	lw	a2,-580(s0)
+    802051c6:	85a6                	mv	a1,s1
+    802051c8:	854a                	mv	a0,s2
+    802051ca:	00001097          	auipc	ra,0x1
+    802051ce:	d9c080e7          	jalr	-612(ra) # 80205f66 <emake>
   if (src->parent != pdst) {
-    80204eb6:	1204b783          	ld	a5,288(s1)
-    80204eba:	01278d63          	beq	a5,s2,80204ed4 <sys_rename+0x1b2>
+    802051d2:	1204b783          	ld	a5,288(s1)
+    802051d6:	01278d63          	beq	a5,s2,802051f0 <sys_rename+0x1b2>
     eunlock(pdst);
-    80204ebe:	854a                	mv	a0,s2
-    80204ec0:	00001097          	auipc	ra,0x1
-    80204ec4:	3b4080e7          	jalr	948(ra) # 80206274 <eunlock>
+    802051da:	854a                	mv	a0,s2
+    802051dc:	00001097          	auipc	ra,0x1
+    802051e0:	3e8080e7          	jalr	1000(ra) # 802065c4 <eunlock>
     elock(src->parent);
-    80204ec8:	1204b503          	ld	a0,288(s1)
-    80204ecc:	00001097          	auipc	ra,0x1
-    80204ed0:	372080e7          	jalr	882(ra) # 8020623e <elock>
+    802051e4:	1204b503          	ld	a0,288(s1)
+    802051e8:	00001097          	auipc	ra,0x1
+    802051ec:	3a6080e7          	jalr	934(ra) # 8020658e <elock>
   eremove(src);
-    80204ed4:	8526                	mv	a0,s1
-    80204ed6:	00001097          	auipc	ra,0x1
-    80204eda:	234080e7          	jalr	564(ra) # 8020610a <eremove>
+    802051f0:	8526                	mv	a0,s1
+    802051f2:	00001097          	auipc	ra,0x1
+    802051f6:	268080e7          	jalr	616(ra) # 8020645a <eremove>
   eunlock(src->parent);
-    80204ede:	1204b503          	ld	a0,288(s1)
-    80204ee2:	00001097          	auipc	ra,0x1
-    80204ee6:	392080e7          	jalr	914(ra) # 80206274 <eunlock>
+    802051fa:	1204b503          	ld	a0,288(s1)
+    802051fe:	00001097          	auipc	ra,0x1
+    80205202:	3c6080e7          	jalr	966(ra) # 802065c4 <eunlock>
   struct dirent *psrc = src->parent;  // src must not be root, or it won't pass the for-loop test
-    80204eea:	1204b983          	ld	s3,288(s1)
+    80205206:	1204b983          	ld	s3,288(s1)
   src->parent = edup(pdst);
-    80204eee:	854a                	mv	a0,s2
-    80204ef0:	00001097          	auipc	ra,0x1
-    80204ef4:	0f0080e7          	jalr	240(ra) # 80205fe0 <edup>
-    80204ef8:	12a4b023          	sd	a0,288(s1)
+    8020520a:	854a                	mv	a0,s2
+    8020520c:	00001097          	auipc	ra,0x1
+    80205210:	124080e7          	jalr	292(ra) # 80206330 <edup>
+    80205214:	12a4b023          	sd	a0,288(s1)
   src->off = off;
-    80204efc:	dbc42783          	lw	a5,-580(s0)
-    80204f00:	10f4ae23          	sw	a5,284(s1)
+    80205218:	dbc42783          	lw	a5,-580(s0)
+    8020521c:	10f4ae23          	sw	a5,284(s1)
   src->valid = 1;
-    80204f04:	4785                	li	a5,1
-    80204f06:	10f49b23          	sh	a5,278(s1)
+    80205220:	4785                	li	a5,1
+    80205222:	10f49b23          	sh	a5,278(s1)
   eunlock(src);
-    80204f0a:	8526                	mv	a0,s1
-    80204f0c:	00001097          	auipc	ra,0x1
-    80204f10:	368080e7          	jalr	872(ra) # 80206274 <eunlock>
+    80205226:	8526                	mv	a0,s1
+    80205228:	00001097          	auipc	ra,0x1
+    8020522c:	39c080e7          	jalr	924(ra) # 802065c4 <eunlock>
   eput(psrc);
-    80204f14:	854e                	mv	a0,s3
-    80204f16:	00001097          	auipc	ra,0x1
-    80204f1a:	3ac080e7          	jalr	940(ra) # 802062c2 <eput>
+    80205230:	854e                	mv	a0,s3
+    80205232:	00001097          	auipc	ra,0x1
+    80205236:	3e0080e7          	jalr	992(ra) # 80206612 <eput>
   if (dst) {
-    80204f1e:	000a0763          	beqz	s4,80204f2c <sys_rename+0x20a>
+    8020523a:	000a0763          	beqz	s4,80205248 <sys_rename+0x20a>
     eput(dst);
-    80204f22:	8552                	mv	a0,s4
-    80204f24:	00001097          	auipc	ra,0x1
-    80204f28:	39e080e7          	jalr	926(ra) # 802062c2 <eput>
+    8020523e:	8552                	mv	a0,s4
+    80205240:	00001097          	auipc	ra,0x1
+    80205244:	3d2080e7          	jalr	978(ra) # 80206612 <eput>
   eput(pdst);
-    80204f2c:	854a                	mv	a0,s2
-    80204f2e:	00001097          	auipc	ra,0x1
-    80204f32:	394080e7          	jalr	916(ra) # 802062c2 <eput>
+    80205248:	854a                	mv	a0,s2
+    8020524a:	00001097          	auipc	ra,0x1
+    8020524e:	3c8080e7          	jalr	968(ra) # 80206612 <eput>
   eput(src);
-    80204f36:	8526                	mv	a0,s1
-    80204f38:	00001097          	auipc	ra,0x1
-    80204f3c:	38a080e7          	jalr	906(ra) # 802062c2 <eput>
+    80205252:	8526                	mv	a0,s1
+    80205254:	00001097          	auipc	ra,0x1
+    80205258:	3be080e7          	jalr	958(ra) # 80206612 <eput>
   return 0;
-    80204f40:	4781                	li	a5,0
-    80204f42:	b5f5                	j	80204e2e <sys_rename+0x10c>
+    8020525c:	4781                	li	a5,0
+    8020525e:	b5f5                	j	8020514a <sys_rename+0x10c>
         eunlock(dst);
-    80204f44:	8552                	mv	a0,s4
-    80204f46:	00001097          	auipc	ra,0x1
-    80204f4a:	32e080e7          	jalr	814(ra) # 80206274 <eunlock>
+    80205260:	8552                	mv	a0,s4
+    80205262:	00001097          	auipc	ra,0x1
+    80205266:	362080e7          	jalr	866(ra) # 802065c4 <eunlock>
         goto fail;
-    80204f4e:	b57d                	j	80204dfc <sys_rename+0xda>
+    8020526a:	b57d                	j	80205118 <sys_rename+0xda>
   struct dirent *src = NULL, *dst = NULL, *pdst = NULL;
-    80204f50:	892a                	mv	s2,a0
+    8020526c:	892a                	mv	s2,a0
   if (dst)
-    80204f52:	bd7d                	j	80204e10 <sys_rename+0xee>
+    8020526e:	bd7d                	j	8020512c <sys_rename+0xee>
+
+0000000080205270 <sys_umount>:
+
+uint64
+sys_umount(void)
+{
+    80205270:	1141                	addi	sp,sp,-16
+    80205272:	e422                	sd	s0,8(sp)
+    80205274:	0800                	addi	s0,sp,16
+  return 0;
+}
+    80205276:	4501                	li	a0,0
+    80205278:	6422                	ld	s0,8(sp)
+    8020527a:	0141                	addi	sp,sp,16
+    8020527c:	8082                	ret
+
+000000008020527e <sys_mount>:
+
+uint64
+sys_mount(void)
+{
+    8020527e:	1141                	addi	sp,sp,-16
+    80205280:	e422                	sd	s0,8(sp)
+    80205282:	0800                	addi	s0,sp,16
+  return 0;
+}
+    80205284:	4501                	li	a0,0
+    80205286:	6422                	ld	s0,8(sp)
+    80205288:	0141                	addi	sp,sp,16
+    8020528a:	8082                	ret
+
+000000008020528c <sys_munmap>:
+
+uint64
+sys_munmap(void)
+{
+    8020528c:	1141                	addi	sp,sp,-16
+    8020528e:	e422                	sd	s0,8(sp)
+    80205290:	0800                	addi	s0,sp,16
+  return 0;
+}
+    80205292:	4501                	li	a0,0
+    80205294:	6422                	ld	s0,8(sp)
+    80205296:	0141                	addi	sp,sp,16
+    80205298:	8082                	ret
+
+000000008020529a <sys_mmap>:
+
+uint64
+sys_mmap(void)
+{
+    8020529a:	1141                	addi	sp,sp,-16
+    8020529c:	e422                	sd	s0,8(sp)
+    8020529e:	0800                	addi	s0,sp,16
+  return 0;
+}
+    802052a0:	4501                	li	a0,0
+    802052a2:	6422                	ld	s0,8(sp)
+    802052a4:	0141                	addi	sp,sp,16
+    802052a6:	8082                	ret
 	...
 
-0000000080204f60 <kernelvec>:
-    80204f60:	7111                	addi	sp,sp,-256
-    80204f62:	e006                	sd	ra,0(sp)
-    80204f64:	e40a                	sd	sp,8(sp)
-    80204f66:	e80e                	sd	gp,16(sp)
-    80204f68:	ec12                	sd	tp,24(sp)
-    80204f6a:	f016                	sd	t0,32(sp)
-    80204f6c:	f41a                	sd	t1,40(sp)
-    80204f6e:	f81e                	sd	t2,48(sp)
-    80204f70:	fc22                	sd	s0,56(sp)
-    80204f72:	e0a6                	sd	s1,64(sp)
-    80204f74:	e4aa                	sd	a0,72(sp)
-    80204f76:	e8ae                	sd	a1,80(sp)
-    80204f78:	ecb2                	sd	a2,88(sp)
-    80204f7a:	f0b6                	sd	a3,96(sp)
-    80204f7c:	f4ba                	sd	a4,104(sp)
-    80204f7e:	f8be                	sd	a5,112(sp)
-    80204f80:	fcc2                	sd	a6,120(sp)
-    80204f82:	e146                	sd	a7,128(sp)
-    80204f84:	e54a                	sd	s2,136(sp)
-    80204f86:	e94e                	sd	s3,144(sp)
-    80204f88:	ed52                	sd	s4,152(sp)
-    80204f8a:	f156                	sd	s5,160(sp)
-    80204f8c:	f55a                	sd	s6,168(sp)
-    80204f8e:	f95e                	sd	s7,176(sp)
-    80204f90:	fd62                	sd	s8,184(sp)
-    80204f92:	e1e6                	sd	s9,192(sp)
-    80204f94:	e5ea                	sd	s10,200(sp)
-    80204f96:	e9ee                	sd	s11,208(sp)
-    80204f98:	edf2                	sd	t3,216(sp)
-    80204f9a:	f1f6                	sd	t4,224(sp)
-    80204f9c:	f5fa                	sd	t5,232(sp)
-    80204f9e:	f9fe                	sd	t6,240(sp)
-    80204fa0:	9a1fd0ef          	jal	ra,80202940 <kerneltrap>
-    80204fa4:	6082                	ld	ra,0(sp)
-    80204fa6:	6122                	ld	sp,8(sp)
-    80204fa8:	61c2                	ld	gp,16(sp)
-    80204faa:	7282                	ld	t0,32(sp)
-    80204fac:	7322                	ld	t1,40(sp)
-    80204fae:	73c2                	ld	t2,48(sp)
-    80204fb0:	7462                	ld	s0,56(sp)
-    80204fb2:	6486                	ld	s1,64(sp)
-    80204fb4:	6526                	ld	a0,72(sp)
-    80204fb6:	65c6                	ld	a1,80(sp)
-    80204fb8:	6666                	ld	a2,88(sp)
-    80204fba:	7686                	ld	a3,96(sp)
-    80204fbc:	7726                	ld	a4,104(sp)
-    80204fbe:	77c6                	ld	a5,112(sp)
-    80204fc0:	7866                	ld	a6,120(sp)
-    80204fc2:	688a                	ld	a7,128(sp)
-    80204fc4:	692a                	ld	s2,136(sp)
-    80204fc6:	69ca                	ld	s3,144(sp)
-    80204fc8:	6a6a                	ld	s4,152(sp)
-    80204fca:	7a8a                	ld	s5,160(sp)
-    80204fcc:	7b2a                	ld	s6,168(sp)
-    80204fce:	7bca                	ld	s7,176(sp)
-    80204fd0:	7c6a                	ld	s8,184(sp)
-    80204fd2:	6c8e                	ld	s9,192(sp)
-    80204fd4:	6d2e                	ld	s10,200(sp)
-    80204fd6:	6dce                	ld	s11,208(sp)
-    80204fd8:	6e6e                	ld	t3,216(sp)
-    80204fda:	7e8e                	ld	t4,224(sp)
-    80204fdc:	7f2e                	ld	t5,232(sp)
-    80204fde:	7fce                	ld	t6,240(sp)
-    80204fe0:	6111                	addi	sp,sp,256
-    80204fe2:	10200073          	sret
+00000000802052b0 <kernelvec>:
+    802052b0:	7111                	addi	sp,sp,-256
+    802052b2:	e006                	sd	ra,0(sp)
+    802052b4:	e40a                	sd	sp,8(sp)
+    802052b6:	e80e                	sd	gp,16(sp)
+    802052b8:	ec12                	sd	tp,24(sp)
+    802052ba:	f016                	sd	t0,32(sp)
+    802052bc:	f41a                	sd	t1,40(sp)
+    802052be:	f81e                	sd	t2,48(sp)
+    802052c0:	fc22                	sd	s0,56(sp)
+    802052c2:	e0a6                	sd	s1,64(sp)
+    802052c4:	e4aa                	sd	a0,72(sp)
+    802052c6:	e8ae                	sd	a1,80(sp)
+    802052c8:	ecb2                	sd	a2,88(sp)
+    802052ca:	f0b6                	sd	a3,96(sp)
+    802052cc:	f4ba                	sd	a4,104(sp)
+    802052ce:	f8be                	sd	a5,112(sp)
+    802052d0:	fcc2                	sd	a6,120(sp)
+    802052d2:	e146                	sd	a7,128(sp)
+    802052d4:	e54a                	sd	s2,136(sp)
+    802052d6:	e94e                	sd	s3,144(sp)
+    802052d8:	ed52                	sd	s4,152(sp)
+    802052da:	f156                	sd	s5,160(sp)
+    802052dc:	f55a                	sd	s6,168(sp)
+    802052de:	f95e                	sd	s7,176(sp)
+    802052e0:	fd62                	sd	s8,184(sp)
+    802052e2:	e1e6                	sd	s9,192(sp)
+    802052e4:	e5ea                	sd	s10,200(sp)
+    802052e6:	e9ee                	sd	s11,208(sp)
+    802052e8:	edf2                	sd	t3,216(sp)
+    802052ea:	f1f6                	sd	t4,224(sp)
+    802052ec:	f5fa                	sd	t5,232(sp)
+    802052ee:	f9fe                	sd	t6,240(sp)
+    802052f0:	8a5fd0ef          	jal	ra,80202b94 <kerneltrap>
+    802052f4:	6082                	ld	ra,0(sp)
+    802052f6:	6122                	ld	sp,8(sp)
+    802052f8:	61c2                	ld	gp,16(sp)
+    802052fa:	7282                	ld	t0,32(sp)
+    802052fc:	7322                	ld	t1,40(sp)
+    802052fe:	73c2                	ld	t2,48(sp)
+    80205300:	7462                	ld	s0,56(sp)
+    80205302:	6486                	ld	s1,64(sp)
+    80205304:	6526                	ld	a0,72(sp)
+    80205306:	65c6                	ld	a1,80(sp)
+    80205308:	6666                	ld	a2,88(sp)
+    8020530a:	7686                	ld	a3,96(sp)
+    8020530c:	7726                	ld	a4,104(sp)
+    8020530e:	77c6                	ld	a5,112(sp)
+    80205310:	7866                	ld	a6,120(sp)
+    80205312:	688a                	ld	a7,128(sp)
+    80205314:	692a                	ld	s2,136(sp)
+    80205316:	69ca                	ld	s3,144(sp)
+    80205318:	6a6a                	ld	s4,152(sp)
+    8020531a:	7a8a                	ld	s5,160(sp)
+    8020531c:	7b2a                	ld	s6,168(sp)
+    8020531e:	7bca                	ld	s7,176(sp)
+    80205320:	7c6a                	ld	s8,184(sp)
+    80205322:	6c8e                	ld	s9,192(sp)
+    80205324:	6d2e                	ld	s10,200(sp)
+    80205326:	6dce                	ld	s11,208(sp)
+    80205328:	6e6e                	ld	t3,216(sp)
+    8020532a:	7e8e                	ld	t4,224(sp)
+    8020532c:	7f2e                	ld	t5,232(sp)
+    8020532e:	7fce                	ld	t6,240(sp)
+    80205330:	6111                	addi	sp,sp,256
+    80205332:	10200073          	sret
 	...
 
-0000000080204fee <timerinit>:
+000000008020533e <timerinit>:
 #include "include/proc.h"
 
 struct spinlock tickslock;
 uint ticks;
 
 void timerinit() {
-    80204fee:	1141                	addi	sp,sp,-16
-    80204ff0:	e406                	sd	ra,8(sp)
-    80204ff2:	e022                	sd	s0,0(sp)
-    80204ff4:	0800                	addi	s0,sp,16
+    8020533e:	1141                	addi	sp,sp,-16
+    80205340:	e406                	sd	ra,8(sp)
+    80205342:	e022                	sd	s0,0(sp)
+    80205344:	0800                	addi	s0,sp,16
     initlock(&tickslock, "time");
-    80204ff6:	00005597          	auipc	a1,0x5
-    80204ffa:	b8a58593          	addi	a1,a1,-1142 # 80209b80 <digits+0x800>
-    80204ffe:	00019517          	auipc	a0,0x19
-    80205002:	40a50513          	addi	a0,a0,1034 # 8021e408 <tickslock>
-    80205006:	ffffb097          	auipc	ra,0xffffb
-    8020500a:	67c080e7          	jalr	1660(ra) # 80200682 <initlock>
+    80205346:	00005597          	auipc	a1,0x5
+    8020534a:	87258593          	addi	a1,a1,-1934 # 80209bb8 <digits+0x838>
+    8020534e:	00019517          	auipc	a0,0x19
+    80205352:	0ba50513          	addi	a0,a0,186 # 8021e408 <tickslock>
+    80205356:	ffffb097          	auipc	ra,0xffffb
+    8020535a:	32c080e7          	jalr	812(ra) # 80200682 <initlock>
     #ifdef DEBUG
     printf("timerinit\n");
     #endif
 }
-    8020500e:	60a2                	ld	ra,8(sp)
-    80205010:	6402                	ld	s0,0(sp)
-    80205012:	0141                	addi	sp,sp,16
-    80205014:	8082                	ret
+    8020535e:	60a2                	ld	ra,8(sp)
+    80205360:	6402                	ld	s0,0(sp)
+    80205362:	0141                	addi	sp,sp,16
+    80205364:	8082                	ret
 
-0000000080205016 <set_next_timeout>:
+0000000080205366 <set_next_timeout>:
 
 void
 set_next_timeout() {
-    80205016:	1141                	addi	sp,sp,-16
-    80205018:	e422                	sd	s0,8(sp)
-    8020501a:	0800                	addi	s0,sp,16
+    80205366:	1141                	addi	sp,sp,-16
+    80205368:	e422                	sd	s0,8(sp)
+    8020536a:	0800                	addi	s0,sp,16
   asm volatile("rdtime %0" : "=r" (x) );
-    8020501c:	c0102573          	rdtime	a0
+    8020536c:	c0102573          	rdtime	a0
     // if comment the `printf` line below
     // the timer will not work.
 
     // this bug seems to disappear automatically
     // printf("");
     sbi_set_timer(r_time() + INTERVAL);
-    80205020:	001dc7b7          	lui	a5,0x1dc
-    80205024:	13078793          	addi	a5,a5,304 # 1dc130 <_entry-0x80023ed0>
-    80205028:	953e                	add	a0,a0,a5
+    80205370:	001dc7b7          	lui	a5,0x1dc
+    80205374:	13078793          	addi	a5,a5,304 # 1dc130 <_entry-0x80023ed0>
+    80205378:	953e                	add	a0,a0,a5
 	SBI_CALL_1(SBI_SET_TIMER, stime_value);
-    8020502a:	4581                	li	a1,0
-    8020502c:	4601                	li	a2,0
-    8020502e:	4681                	li	a3,0
-    80205030:	4881                	li	a7,0
-    80205032:	00000073          	ecall
+    8020537a:	4581                	li	a1,0
+    8020537c:	4601                	li	a2,0
+    8020537e:	4681                	li	a3,0
+    80205380:	4881                	li	a7,0
+    80205382:	00000073          	ecall
 }
-    80205036:	6422                	ld	s0,8(sp)
-    80205038:	0141                	addi	sp,sp,16
-    8020503a:	8082                	ret
+    80205386:	6422                	ld	s0,8(sp)
+    80205388:	0141                	addi	sp,sp,16
+    8020538a:	8082                	ret
 
-000000008020503c <timer_tick>:
+000000008020538c <timer_tick>:
 
 void timer_tick() {
-    8020503c:	1101                	addi	sp,sp,-32
-    8020503e:	ec06                	sd	ra,24(sp)
-    80205040:	e822                	sd	s0,16(sp)
-    80205042:	e426                	sd	s1,8(sp)
-    80205044:	1000                	addi	s0,sp,32
+    8020538c:	1101                	addi	sp,sp,-32
+    8020538e:	ec06                	sd	ra,24(sp)
+    80205390:	e822                	sd	s0,16(sp)
+    80205392:	e426                	sd	s1,8(sp)
+    80205394:	1000                	addi	s0,sp,32
     acquire(&tickslock);
-    80205046:	00019497          	auipc	s1,0x19
-    8020504a:	3c248493          	addi	s1,s1,962 # 8021e408 <tickslock>
-    8020504e:	8526                	mv	a0,s1
-    80205050:	ffffb097          	auipc	ra,0xffffb
-    80205054:	676080e7          	jalr	1654(ra) # 802006c6 <acquire>
+    80205396:	00019497          	auipc	s1,0x19
+    8020539a:	07248493          	addi	s1,s1,114 # 8021e408 <tickslock>
+    8020539e:	8526                	mv	a0,s1
+    802053a0:	ffffb097          	auipc	ra,0xffffb
+    802053a4:	326080e7          	jalr	806(ra) # 802006c6 <acquire>
     ticks++;
-    80205058:	4c9c                	lw	a5,24(s1)
-    8020505a:	2785                	addiw	a5,a5,1
-    8020505c:	cc9c                	sw	a5,24(s1)
+    802053a8:	4c9c                	lw	a5,24(s1)
+    802053aa:	2785                	addiw	a5,a5,1
+    802053ac:	cc9c                	sw	a5,24(s1)
     wakeup(&ticks);
-    8020505e:	00019517          	auipc	a0,0x19
-    80205062:	3c250513          	addi	a0,a0,962 # 8021e420 <ticks>
-    80205066:	ffffd097          	auipc	ra,0xffffd
-    8020506a:	3d2080e7          	jalr	978(ra) # 80202438 <wakeup>
+    802053ae:	00019517          	auipc	a0,0x19
+    802053b2:	07250513          	addi	a0,a0,114 # 8021e420 <ticks>
+    802053b6:	ffffd097          	auipc	ra,0xffffd
+    802053ba:	082080e7          	jalr	130(ra) # 80202438 <wakeup>
     release(&tickslock);
-    8020506e:	8526                	mv	a0,s1
-    80205070:	ffffb097          	auipc	ra,0xffffb
-    80205074:	6aa080e7          	jalr	1706(ra) # 8020071a <release>
+    802053be:	8526                	mv	a0,s1
+    802053c0:	ffffb097          	auipc	ra,0xffffb
+    802053c4:	35a080e7          	jalr	858(ra) # 8020071a <release>
     set_next_timeout();
-    80205078:	00000097          	auipc	ra,0x0
-    8020507c:	f9e080e7          	jalr	-98(ra) # 80205016 <set_next_timeout>
+    802053c8:	00000097          	auipc	ra,0x0
+    802053cc:	f9e080e7          	jalr	-98(ra) # 80205366 <set_next_timeout>
 }
-    80205080:	60e2                	ld	ra,24(sp)
-    80205082:	6442                	ld	s0,16(sp)
-    80205084:	64a2                	ld	s1,8(sp)
-    80205086:	6105                	addi	sp,sp,32
-    80205088:	8082                	ret
+    802053d0:	60e2                	ld	ra,24(sp)
+    802053d2:	6442                	ld	s0,16(sp)
+    802053d4:	64a2                	ld	s1,8(sp)
+    802053d6:	6105                	addi	sp,sp,32
+    802053d8:	8082                	ret
 
-000000008020508a <disk_init>:
+00000000802053da <disk_init>:
 #else
 #include "include/virtio.h"
 #endif 
 
 void disk_init(void)
 {
-    8020508a:	1141                	addi	sp,sp,-16
-    8020508c:	e406                	sd	ra,8(sp)
-    8020508e:	e022                	sd	s0,0(sp)
-    80205090:	0800                	addi	s0,sp,16
+    802053da:	1141                	addi	sp,sp,-16
+    802053dc:	e406                	sd	ra,8(sp)
+    802053de:	e022                	sd	s0,0(sp)
+    802053e0:	0800                	addi	s0,sp,16
     #ifdef QEMU
     virtio_disk_init();
-    80205092:	00002097          	auipc	ra,0x2
-    80205096:	e8e080e7          	jalr	-370(ra) # 80206f20 <virtio_disk_init>
+    802053e2:	00002097          	auipc	ra,0x2
+    802053e6:	e8e080e7          	jalr	-370(ra) # 80207270 <virtio_disk_init>
 	#else 
 	sdcard_init();
     #endif
 }
-    8020509a:	60a2                	ld	ra,8(sp)
-    8020509c:	6402                	ld	s0,0(sp)
-    8020509e:	0141                	addi	sp,sp,16
-    802050a0:	8082                	ret
+    802053ea:	60a2                	ld	ra,8(sp)
+    802053ec:	6402                	ld	s0,0(sp)
+    802053ee:	0141                	addi	sp,sp,16
+    802053f0:	8082                	ret
 
-00000000802050a2 <disk_read>:
+00000000802053f2 <disk_read>:
 
 void disk_read(struct buf *b)
 {
-    802050a2:	1141                	addi	sp,sp,-16
-    802050a4:	e406                	sd	ra,8(sp)
-    802050a6:	e022                	sd	s0,0(sp)
-    802050a8:	0800                	addi	s0,sp,16
+    802053f2:	1141                	addi	sp,sp,-16
+    802053f4:	e406                	sd	ra,8(sp)
+    802053f6:	e022                	sd	s0,0(sp)
+    802053f8:	0800                	addi	s0,sp,16
     #ifdef QEMU
 	virtio_disk_rw(b, 0);
-    802050aa:	4581                	li	a1,0
-    802050ac:	00002097          	auipc	ra,0x2
-    802050b0:	ffa080e7          	jalr	-6(ra) # 802070a6 <virtio_disk_rw>
+    802053fa:	4581                	li	a1,0
+    802053fc:	00002097          	auipc	ra,0x2
+    80205400:	ffa080e7          	jalr	-6(ra) # 802073f6 <virtio_disk_rw>
     #else 
 	sdcard_read_sector(b->data, b->sectorno);
 	#endif
 }
-    802050b4:	60a2                	ld	ra,8(sp)
-    802050b6:	6402                	ld	s0,0(sp)
-    802050b8:	0141                	addi	sp,sp,16
-    802050ba:	8082                	ret
+    80205404:	60a2                	ld	ra,8(sp)
+    80205406:	6402                	ld	s0,0(sp)
+    80205408:	0141                	addi	sp,sp,16
+    8020540a:	8082                	ret
 
-00000000802050bc <disk_write>:
+000000008020540c <disk_write>:
 
 void disk_write(struct buf *b)
 {
-    802050bc:	1141                	addi	sp,sp,-16
-    802050be:	e406                	sd	ra,8(sp)
-    802050c0:	e022                	sd	s0,0(sp)
-    802050c2:	0800                	addi	s0,sp,16
+    8020540c:	1141                	addi	sp,sp,-16
+    8020540e:	e406                	sd	ra,8(sp)
+    80205410:	e022                	sd	s0,0(sp)
+    80205412:	0800                	addi	s0,sp,16
     #ifdef QEMU
 	virtio_disk_rw(b, 1);
-    802050c4:	4585                	li	a1,1
-    802050c6:	00002097          	auipc	ra,0x2
-    802050ca:	fe0080e7          	jalr	-32(ra) # 802070a6 <virtio_disk_rw>
+    80205414:	4585                	li	a1,1
+    80205416:	00002097          	auipc	ra,0x2
+    8020541a:	fe0080e7          	jalr	-32(ra) # 802073f6 <virtio_disk_rw>
     #else 
 	sdcard_write_sector(b->data, b->sectorno);
 	#endif
 }
-    802050ce:	60a2                	ld	ra,8(sp)
-    802050d0:	6402                	ld	s0,0(sp)
-    802050d2:	0141                	addi	sp,sp,16
-    802050d4:	8082                	ret
+    8020541e:	60a2                	ld	ra,8(sp)
+    80205420:	6402                	ld	s0,0(sp)
+    80205422:	0141                	addi	sp,sp,16
+    80205424:	8082                	ret
 
-00000000802050d6 <disk_intr>:
+0000000080205426 <disk_intr>:
 
 void disk_intr(void)
 {
-    802050d6:	1141                	addi	sp,sp,-16
-    802050d8:	e406                	sd	ra,8(sp)
-    802050da:	e022                	sd	s0,0(sp)
-    802050dc:	0800                	addi	s0,sp,16
+    80205426:	1141                	addi	sp,sp,-16
+    80205428:	e406                	sd	ra,8(sp)
+    8020542a:	e022                	sd	s0,0(sp)
+    8020542c:	0800                	addi	s0,sp,16
     #ifdef QEMU
     virtio_disk_intr();
-    802050de:	00002097          	auipc	ra,0x2
-    802050e2:	254080e7          	jalr	596(ra) # 80207332 <virtio_disk_intr>
+    8020542e:	00002097          	auipc	ra,0x2
+    80205432:	254080e7          	jalr	596(ra) # 80207682 <virtio_disk_intr>
     #else 
     dmac_intr(DMAC_CHANNEL0);
     #endif
 }
-    802050e6:	60a2                	ld	ra,8(sp)
-    802050e8:	6402                	ld	s0,0(sp)
-    802050ea:	0141                	addi	sp,sp,16
-    802050ec:	8082                	ret
+    80205436:	60a2                	ld	ra,8(sp)
+    80205438:	6402                	ld	s0,0(sp)
+    8020543a:	0141                	addi	sp,sp,16
+    8020543c:	8082                	ret
 
-00000000802050ee <read_fat>:
+000000008020543e <read_fat>:
 /**
  * Read the FAT table content corresponded to the given cluster number.
  * @param   cluster     the number of cluster which you want to read its content in FAT table
  */
 static uint32 read_fat(uint32 cluster)
 {
-    802050ee:	1101                	addi	sp,sp,-32
-    802050f0:	ec06                	sd	ra,24(sp)
-    802050f2:	e822                	sd	s0,16(sp)
-    802050f4:	e426                	sd	s1,8(sp)
-    802050f6:	e04a                	sd	s2,0(sp)
-    802050f8:	1000                	addi	s0,sp,32
+    8020543e:	1101                	addi	sp,sp,-32
+    80205440:	ec06                	sd	ra,24(sp)
+    80205442:	e822                	sd	s0,16(sp)
+    80205444:	e426                	sd	s1,8(sp)
+    80205446:	e04a                	sd	s2,0(sp)
+    80205448:	1000                	addi	s0,sp,32
     if (cluster >= FAT32_EOC) {
-    802050fa:	100007b7          	lui	a5,0x10000
-    802050fe:	17dd                	addi	a5,a5,-9 # ffffff7 <_entry-0x70200009>
+    8020544a:	100007b7          	lui	a5,0x10000
+    8020544e:	17dd                	addi	a5,a5,-9 # ffffff7 <_entry-0x70200009>
         return cluster;
-    80205100:	84aa                	mv	s1,a0
+    80205450:	84aa                	mv	s1,a0
     if (cluster >= FAT32_EOC) {
-    80205102:	00a7ea63          	bltu	a5,a0,80205116 <read_fat+0x28>
+    80205452:	00a7ea63          	bltu	a5,a0,80205466 <read_fat+0x28>
     }
     if (cluster > fat.data_clus_cnt + 1) {     // because cluster number starts at 2, not 0
-    80205106:	00019797          	auipc	a5,0x19
-    8020510a:	32a7a783          	lw	a5,810(a5) # 8021e430 <fat+0x8>
-    8020510e:	2785                	addiw	a5,a5,1
+    80205456:	00019797          	auipc	a5,0x19
+    8020545a:	fda7a783          	lw	a5,-38(a5) # 8021e430 <fat+0x8>
+    8020545e:	2785                	addiw	a5,a5,1
         return 0;
-    80205110:	4481                	li	s1,0
+    80205460:	4481                	li	s1,0
     if (cluster > fat.data_clus_cnt + 1) {     // because cluster number starts at 2, not 0
-    80205112:	00a7f963          	bgeu	a5,a0,80205124 <read_fat+0x36>
+    80205462:	00a7f963          	bgeu	a5,a0,80205474 <read_fat+0x36>
     // here should be a cache layer for FAT table, but not implemented yet.
     struct buf *b = bread(0, fat_sec);
     uint32 next_clus = *(uint32 *)(b->data + fat_offset_of_clus(cluster));
     brelse(b);
     return next_clus;
 }
-    80205116:	8526                	mv	a0,s1
-    80205118:	60e2                	ld	ra,24(sp)
-    8020511a:	6442                	ld	s0,16(sp)
-    8020511c:	64a2                	ld	s1,8(sp)
-    8020511e:	6902                	ld	s2,0(sp)
-    80205120:	6105                	addi	sp,sp,32
-    80205122:	8082                	ret
+    80205466:	8526                	mv	a0,s1
+    80205468:	60e2                	ld	ra,24(sp)
+    8020546a:	6442                	ld	s0,16(sp)
+    8020546c:	64a2                	ld	s1,8(sp)
+    8020546e:	6902                	ld	s2,0(sp)
+    80205470:	6105                	addi	sp,sp,32
+    80205472:	8082                	ret
     return fat.bpb.rsvd_sec_cnt + (cluster << 2) / fat.bpb.byts_per_sec + fat.bpb.fat_sz * (fat_num - 1);
-    80205124:	0025149b          	slliw	s1,a0,0x2
-    80205128:	00019917          	auipc	s2,0x19
-    8020512c:	30090913          	addi	s2,s2,768 # 8021e428 <fat>
-    80205130:	01095783          	lhu	a5,16(s2)
-    80205134:	02f4d7bb          	divuw	a5,s1,a5
-    80205138:	01495583          	lhu	a1,20(s2)
+    80205474:	0025149b          	slliw	s1,a0,0x2
+    80205478:	00019917          	auipc	s2,0x19
+    8020547c:	fb090913          	addi	s2,s2,-80 # 8021e428 <fat>
+    80205480:	01095783          	lhu	a5,16(s2)
+    80205484:	02f4d7bb          	divuw	a5,s1,a5
+    80205488:	01495583          	lhu	a1,20(s2)
     struct buf *b = bread(0, fat_sec);
-    8020513c:	9dbd                	addw	a1,a1,a5
-    8020513e:	4501                	li	a0,0
-    80205140:	ffffe097          	auipc	ra,0xffffe
-    80205144:	282080e7          	jalr	642(ra) # 802033c2 <bread>
+    8020548c:	9dbd                	addw	a1,a1,a5
+    8020548e:	4501                	li	a0,0
+    80205490:	ffffe097          	auipc	ra,0xffffe
+    80205494:	24e080e7          	jalr	590(ra) # 802036de <bread>
     return (cluster << 2) % fat.bpb.byts_per_sec;
-    80205148:	01095783          	lhu	a5,16(s2)
-    8020514c:	02f4f4bb          	remuw	s1,s1,a5
+    80205498:	01095783          	lhu	a5,16(s2)
+    8020549c:	02f4f4bb          	remuw	s1,s1,a5
     uint32 next_clus = *(uint32 *)(b->data + fat_offset_of_clus(cluster));
-    80205150:	1482                	slli	s1,s1,0x20
-    80205152:	9081                	srli	s1,s1,0x20
-    80205154:	009507b3          	add	a5,a0,s1
-    80205158:	4fa4                	lw	s1,88(a5)
+    802054a0:	1482                	slli	s1,s1,0x20
+    802054a2:	9081                	srli	s1,s1,0x20
+    802054a4:	009507b3          	add	a5,a0,s1
+    802054a8:	4fa4                	lw	s1,88(a5)
     brelse(b);
-    8020515a:	ffffe097          	auipc	ra,0xffffe
-    8020515e:	394080e7          	jalr	916(ra) # 802034ee <brelse>
+    802054aa:	ffffe097          	auipc	ra,0xffffe
+    802054ae:	360080e7          	jalr	864(ra) # 8020380a <brelse>
     return next_clus;
-    80205162:	bf55                	j	80205116 <read_fat+0x28>
+    802054b2:	bf55                	j	80205466 <read_fat+0x28>
 
-0000000080205164 <alloc_clus>:
+00000000802054b4 <alloc_clus>:
         brelse(b);
     }
 }
 
 static uint32 alloc_clus(uint8 dev)
 {
-    80205164:	711d                	addi	sp,sp,-96
-    80205166:	ec86                	sd	ra,88(sp)
-    80205168:	e8a2                	sd	s0,80(sp)
-    8020516a:	e4a6                	sd	s1,72(sp)
-    8020516c:	e0ca                	sd	s2,64(sp)
-    8020516e:	fc4e                	sd	s3,56(sp)
-    80205170:	f852                	sd	s4,48(sp)
-    80205172:	f456                	sd	s5,40(sp)
-    80205174:	f05a                	sd	s6,32(sp)
-    80205176:	ec5e                	sd	s7,24(sp)
-    80205178:	e862                	sd	s8,16(sp)
-    8020517a:	e466                	sd	s9,8(sp)
-    8020517c:	1080                	addi	s0,sp,96
+    802054b4:	711d                	addi	sp,sp,-96
+    802054b6:	ec86                	sd	ra,88(sp)
+    802054b8:	e8a2                	sd	s0,80(sp)
+    802054ba:	e4a6                	sd	s1,72(sp)
+    802054bc:	e0ca                	sd	s2,64(sp)
+    802054be:	fc4e                	sd	s3,56(sp)
+    802054c0:	f852                	sd	s4,48(sp)
+    802054c2:	f456                	sd	s5,40(sp)
+    802054c4:	f05a                	sd	s6,32(sp)
+    802054c6:	ec5e                	sd	s7,24(sp)
+    802054c8:	e862                	sd	s8,16(sp)
+    802054ca:	e466                	sd	s9,8(sp)
+    802054cc:	1080                	addi	s0,sp,96
     // should we keep a free cluster list? instead of searching fat every time.
     struct buf *b;
     uint32 sec = fat.bpb.rsvd_sec_cnt;
-    8020517e:	00019797          	auipc	a5,0x19
-    80205182:	2aa78793          	addi	a5,a5,682 # 8021e428 <fat>
-    80205186:	0147db83          	lhu	s7,20(a5)
+    802054ce:	00019797          	auipc	a5,0x19
+    802054d2:	f5a78793          	addi	a5,a5,-166 # 8021e428 <fat>
+    802054d6:	0147db83          	lhu	s7,20(a5)
     uint32 const ent_per_sec = fat.bpb.byts_per_sec / sizeof(uint32);
-    8020518a:	0107d903          	lhu	s2,16(a5)
+    802054da:	0107d903          	lhu	s2,16(a5)
     for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) {
-    8020518e:	539c                	lw	a5,32(a5)
-    80205190:	10078363          	beqz	a5,80205296 <alloc_clus+0x132>
-    80205194:	0029591b          	srliw	s2,s2,0x2
-    80205198:	0009099b          	sext.w	s3,s2
-    8020519c:	4b01                	li	s6,0
+    802054de:	539c                	lw	a5,32(a5)
+    802054e0:	10078363          	beqz	a5,802055e6 <alloc_clus+0x132>
+    802054e4:	0029591b          	srliw	s2,s2,0x2
+    802054e8:	0009099b          	sext.w	s3,s2
+    802054ec:	4b01                	li	s6,0
         b = bread(dev, sec);
-    8020519e:	00050a9b          	sext.w	s5,a0
+    802054ee:	00050a9b          	sext.w	s5,a0
         for (uint32 j = 0; j < ent_per_sec; j++) {
-    802051a2:	4c01                	li	s8,0
+    802054f2:	4c01                	li	s8,0
     for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) {
-    802051a4:	00019c97          	auipc	s9,0x19
-    802051a8:	284c8c93          	addi	s9,s9,644 # 8021e428 <fat>
-    802051ac:	a0c9                	j	8020526e <alloc_clus+0x10a>
+    802054f4:	00019c97          	auipc	s9,0x19
+    802054f8:	f34c8c93          	addi	s9,s9,-204 # 8021e428 <fat>
+    802054fc:	a0c9                	j	802055be <alloc_clus+0x10a>
             if (((uint32 *)(b->data))[j] == 0) {
                 ((uint32 *)(b->data))[j] = FAT32_EOC + 7;
-    802051ae:	100007b7          	lui	a5,0x10000
-    802051b2:	17fd                	addi	a5,a5,-1 # fffffff <_entry-0x70200001>
-    802051b4:	c29c                	sw	a5,0(a3)
+    802054fe:	100007b7          	lui	a5,0x10000
+    80205502:	17fd                	addi	a5,a5,-1 # fffffff <_entry-0x70200001>
+    80205504:	c29c                	sw	a5,0(a3)
                 bwrite(b);
-    802051b6:	8552                	mv	a0,s4
-    802051b8:	ffffe097          	auipc	ra,0xffffe
-    802051bc:	2fa080e7          	jalr	762(ra) # 802034b2 <bwrite>
+    80205506:	8552                	mv	a0,s4
+    80205508:	ffffe097          	auipc	ra,0xffffe
+    8020550c:	2c6080e7          	jalr	710(ra) # 802037ce <bwrite>
                 brelse(b);
-    802051c0:	8552                	mv	a0,s4
-    802051c2:	ffffe097          	auipc	ra,0xffffe
-    802051c6:	32c080e7          	jalr	812(ra) # 802034ee <brelse>
+    80205510:	8552                	mv	a0,s4
+    80205512:	ffffe097          	auipc	ra,0xffffe
+    80205516:	2f8080e7          	jalr	760(ra) # 8020380a <brelse>
                 uint32 clus = i * ent_per_sec + j;
-    802051ca:	0369093b          	mulw	s2,s2,s6
-    802051ce:	0099093b          	addw	s2,s2,s1
-    802051d2:	00090a9b          	sext.w	s5,s2
+    8020551a:	0369093b          	mulw	s2,s2,s6
+    8020551e:	0099093b          	addw	s2,s2,s1
+    80205522:	00090a9b          	sext.w	s5,s2
     return ((cluster - 2) * fat.bpb.sec_per_clus) + fat.first_data_sec;
-    802051d6:	00019717          	auipc	a4,0x19
-    802051da:	25270713          	addi	a4,a4,594 # 8021e428 <fat>
-    802051de:	01274783          	lbu	a5,18(a4)
-    802051e2:	ffe9099b          	addiw	s3,s2,-2
-    802051e6:	02f989bb          	mulw	s3,s3,a5
-    802051ea:	4318                	lw	a4,0(a4)
-    802051ec:	00e989bb          	addw	s3,s3,a4
+    80205526:	00019717          	auipc	a4,0x19
+    8020552a:	f0270713          	addi	a4,a4,-254 # 8021e428 <fat>
+    8020552e:	01274783          	lbu	a5,18(a4)
+    80205532:	ffe9099b          	addiw	s3,s2,-2
+    80205536:	02f989bb          	mulw	s3,s3,a5
+    8020553a:	4318                	lw	a4,0(a4)
+    8020553c:	00e989bb          	addw	s3,s3,a4
     for (int i = 0; i < fat.bpb.sec_per_clus; i++) {
-    802051f0:	c7b1                	beqz	a5,8020523c <alloc_clus+0xd8>
-    802051f2:	4901                	li	s2,0
-    802051f4:	00019a17          	auipc	s4,0x19
-    802051f8:	234a0a13          	addi	s4,s4,564 # 8021e428 <fat>
+    80205540:	c7b1                	beqz	a5,8020558c <alloc_clus+0xd8>
+    80205542:	4901                	li	s2,0
+    80205544:	00019a17          	auipc	s4,0x19
+    80205548:	ee4a0a13          	addi	s4,s4,-284 # 8021e428 <fat>
         b = bread(0, sec++);
-    802051fc:	013905bb          	addw	a1,s2,s3
-    80205200:	4501                	li	a0,0
-    80205202:	ffffe097          	auipc	ra,0xffffe
-    80205206:	1c0080e7          	jalr	448(ra) # 802033c2 <bread>
-    8020520a:	84aa                	mv	s1,a0
+    8020554c:	013905bb          	addw	a1,s2,s3
+    80205550:	4501                	li	a0,0
+    80205552:	ffffe097          	auipc	ra,0xffffe
+    80205556:	18c080e7          	jalr	396(ra) # 802036de <bread>
+    8020555a:	84aa                	mv	s1,a0
         memset(b->data, 0, BSIZE);
-    8020520c:	20000613          	li	a2,512
-    80205210:	4581                	li	a1,0
-    80205212:	05850513          	addi	a0,a0,88
-    80205216:	ffffb097          	auipc	ra,0xffffb
-    8020521a:	54c080e7          	jalr	1356(ra) # 80200762 <memset>
+    8020555c:	20000613          	li	a2,512
+    80205560:	4581                	li	a1,0
+    80205562:	05850513          	addi	a0,a0,88
+    80205566:	ffffb097          	auipc	ra,0xffffb
+    8020556a:	1fc080e7          	jalr	508(ra) # 80200762 <memset>
         bwrite(b);
-    8020521e:	8526                	mv	a0,s1
-    80205220:	ffffe097          	auipc	ra,0xffffe
-    80205224:	292080e7          	jalr	658(ra) # 802034b2 <bwrite>
+    8020556e:	8526                	mv	a0,s1
+    80205570:	ffffe097          	auipc	ra,0xffffe
+    80205574:	25e080e7          	jalr	606(ra) # 802037ce <bwrite>
         brelse(b);
-    80205228:	8526                	mv	a0,s1
-    8020522a:	ffffe097          	auipc	ra,0xffffe
-    8020522e:	2c4080e7          	jalr	708(ra) # 802034ee <brelse>
+    80205578:	8526                	mv	a0,s1
+    8020557a:	ffffe097          	auipc	ra,0xffffe
+    8020557e:	290080e7          	jalr	656(ra) # 8020380a <brelse>
     for (int i = 0; i < fat.bpb.sec_per_clus; i++) {
-    80205232:	2905                	addiw	s2,s2,1
-    80205234:	012a4783          	lbu	a5,18(s4)
-    80205238:	fcf942e3          	blt	s2,a5,802051fc <alloc_clus+0x98>
+    80205582:	2905                	addiw	s2,s2,1
+    80205584:	012a4783          	lbu	a5,18(s4)
+    80205588:	fcf942e3          	blt	s2,a5,8020554c <alloc_clus+0x98>
             }
         }
         brelse(b);
     }
     panic("no clusters");
 }
-    8020523c:	8556                	mv	a0,s5
-    8020523e:	60e6                	ld	ra,88(sp)
-    80205240:	6446                	ld	s0,80(sp)
-    80205242:	64a6                	ld	s1,72(sp)
-    80205244:	6906                	ld	s2,64(sp)
-    80205246:	79e2                	ld	s3,56(sp)
-    80205248:	7a42                	ld	s4,48(sp)
-    8020524a:	7aa2                	ld	s5,40(sp)
-    8020524c:	7b02                	ld	s6,32(sp)
-    8020524e:	6be2                	ld	s7,24(sp)
-    80205250:	6c42                	ld	s8,16(sp)
-    80205252:	6ca2                	ld	s9,8(sp)
-    80205254:	6125                	addi	sp,sp,96
-    80205256:	8082                	ret
+    8020558c:	8556                	mv	a0,s5
+    8020558e:	60e6                	ld	ra,88(sp)
+    80205590:	6446                	ld	s0,80(sp)
+    80205592:	64a6                	ld	s1,72(sp)
+    80205594:	6906                	ld	s2,64(sp)
+    80205596:	79e2                	ld	s3,56(sp)
+    80205598:	7a42                	ld	s4,48(sp)
+    8020559a:	7aa2                	ld	s5,40(sp)
+    8020559c:	7b02                	ld	s6,32(sp)
+    8020559e:	6be2                	ld	s7,24(sp)
+    802055a0:	6c42                	ld	s8,16(sp)
+    802055a2:	6ca2                	ld	s9,8(sp)
+    802055a4:	6125                	addi	sp,sp,96
+    802055a6:	8082                	ret
         brelse(b);
-    80205258:	8552                	mv	a0,s4
-    8020525a:	ffffe097          	auipc	ra,0xffffe
-    8020525e:	294080e7          	jalr	660(ra) # 802034ee <brelse>
+    802055a8:	8552                	mv	a0,s4
+    802055aa:	ffffe097          	auipc	ra,0xffffe
+    802055ae:	260080e7          	jalr	608(ra) # 8020380a <brelse>
     for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) {
-    80205262:	2b05                	addiw	s6,s6,1
-    80205264:	2b85                	addiw	s7,s7,1 # fffffffffffff001 <ebss_clear+0xffffffff7fdd9001>
-    80205266:	020ca783          	lw	a5,32(s9)
-    8020526a:	02fb7663          	bgeu	s6,a5,80205296 <alloc_clus+0x132>
+    802055b2:	2b05                	addiw	s6,s6,1
+    802055b4:	2b85                	addiw	s7,s7,1 # fffffffffffff001 <ebss_clear+0xffffffff7fdd9001>
+    802055b6:	020ca783          	lw	a5,32(s9)
+    802055ba:	02fb7663          	bgeu	s6,a5,802055e6 <alloc_clus+0x132>
         b = bread(dev, sec);
-    8020526e:	85de                	mv	a1,s7
-    80205270:	8556                	mv	a0,s5
-    80205272:	ffffe097          	auipc	ra,0xffffe
-    80205276:	150080e7          	jalr	336(ra) # 802033c2 <bread>
-    8020527a:	8a2a                	mv	s4,a0
+    802055be:	85de                	mv	a1,s7
+    802055c0:	8556                	mv	a0,s5
+    802055c2:	ffffe097          	auipc	ra,0xffffe
+    802055c6:	11c080e7          	jalr	284(ra) # 802036de <bread>
+    802055ca:	8a2a                	mv	s4,a0
         for (uint32 j = 0; j < ent_per_sec; j++) {
-    8020527c:	fc098ee3          	beqz	s3,80205258 <alloc_clus+0xf4>
-    80205280:	05850793          	addi	a5,a0,88
-    80205284:	84e2                	mv	s1,s8
+    802055cc:	fc098ee3          	beqz	s3,802055a8 <alloc_clus+0xf4>
+    802055d0:	05850793          	addi	a5,a0,88
+    802055d4:	84e2                	mv	s1,s8
             if (((uint32 *)(b->data))[j] == 0) {
-    80205286:	86be                	mv	a3,a5
-    80205288:	4398                	lw	a4,0(a5)
-    8020528a:	d315                	beqz	a4,802051ae <alloc_clus+0x4a>
+    802055d6:	86be                	mv	a3,a5
+    802055d8:	4398                	lw	a4,0(a5)
+    802055da:	d315                	beqz	a4,802054fe <alloc_clus+0x4a>
         for (uint32 j = 0; j < ent_per_sec; j++) {
-    8020528c:	2485                	addiw	s1,s1,1
-    8020528e:	0791                	addi	a5,a5,4
-    80205290:	fe999be3          	bne	s3,s1,80205286 <alloc_clus+0x122>
-    80205294:	b7d1                	j	80205258 <alloc_clus+0xf4>
+    802055dc:	2485                	addiw	s1,s1,1
+    802055de:	0791                	addi	a5,a5,4
+    802055e0:	fe999be3          	bne	s3,s1,802055d6 <alloc_clus+0x122>
+    802055e4:	b7d1                	j	802055a8 <alloc_clus+0xf4>
     panic("no clusters");
-    80205296:	00005517          	auipc	a0,0x5
-    8020529a:	8f250513          	addi	a0,a0,-1806 # 80209b88 <digits+0x808>
-    8020529e:	ffffb097          	auipc	ra,0xffffb
-    802052a2:	ea6080e7          	jalr	-346(ra) # 80200144 <panic>
+    802055e6:	00004517          	auipc	a0,0x4
+    802055ea:	5da50513          	addi	a0,a0,1498 # 80209bc0 <digits+0x840>
+    802055ee:	ffffb097          	auipc	ra,0xffffb
+    802055f2:	b56080e7          	jalr	-1194(ra) # 80200144 <panic>
 
-00000000802052a6 <write_fat>:
+00000000802055f6 <write_fat>:
     if (cluster > fat.data_clus_cnt + 1) {
-    802052a6:	00019797          	auipc	a5,0x19
-    802052aa:	18a7a783          	lw	a5,394(a5) # 8021e430 <fat+0x8>
-    802052ae:	2785                	addiw	a5,a5,1
-    802052b0:	06a7e963          	bltu	a5,a0,80205322 <write_fat+0x7c>
-{
-    802052b4:	7179                	addi	sp,sp,-48
-    802052b6:	f406                	sd	ra,40(sp)
-    802052b8:	f022                	sd	s0,32(sp)
-    802052ba:	ec26                	sd	s1,24(sp)
-    802052bc:	e84a                	sd	s2,16(sp)
-    802052be:	e44e                	sd	s3,8(sp)
-    802052c0:	e052                	sd	s4,0(sp)
-    802052c2:	1800                	addi	s0,sp,48
-    802052c4:	89ae                	mv	s3,a1
+    802055f6:	00019797          	auipc	a5,0x19
+    802055fa:	e3a7a783          	lw	a5,-454(a5) # 8021e430 <fat+0x8>
+    802055fe:	2785                	addiw	a5,a5,1
+    80205600:	06a7e963          	bltu	a5,a0,80205672 <write_fat+0x7c>
+{
+    80205604:	7179                	addi	sp,sp,-48
+    80205606:	f406                	sd	ra,40(sp)
+    80205608:	f022                	sd	s0,32(sp)
+    8020560a:	ec26                	sd	s1,24(sp)
+    8020560c:	e84a                	sd	s2,16(sp)
+    8020560e:	e44e                	sd	s3,8(sp)
+    80205610:	e052                	sd	s4,0(sp)
+    80205612:	1800                	addi	s0,sp,48
+    80205614:	89ae                	mv	s3,a1
     return fat.bpb.rsvd_sec_cnt + (cluster << 2) / fat.bpb.byts_per_sec + fat.bpb.fat_sz * (fat_num - 1);
-    802052c6:	0025149b          	slliw	s1,a0,0x2
-    802052ca:	00019a17          	auipc	s4,0x19
-    802052ce:	15ea0a13          	addi	s4,s4,350 # 8021e428 <fat>
-    802052d2:	010a5783          	lhu	a5,16(s4)
-    802052d6:	02f4d7bb          	divuw	a5,s1,a5
-    802052da:	014a5583          	lhu	a1,20(s4)
+    80205616:	0025149b          	slliw	s1,a0,0x2
+    8020561a:	00019a17          	auipc	s4,0x19
+    8020561e:	e0ea0a13          	addi	s4,s4,-498 # 8021e428 <fat>
+    80205622:	010a5783          	lhu	a5,16(s4)
+    80205626:	02f4d7bb          	divuw	a5,s1,a5
+    8020562a:	014a5583          	lhu	a1,20(s4)
     struct buf *b = bread(0, fat_sec);
-    802052de:	9dbd                	addw	a1,a1,a5
-    802052e0:	4501                	li	a0,0
-    802052e2:	ffffe097          	auipc	ra,0xffffe
-    802052e6:	0e0080e7          	jalr	224(ra) # 802033c2 <bread>
-    802052ea:	892a                	mv	s2,a0
+    8020562e:	9dbd                	addw	a1,a1,a5
+    80205630:	4501                	li	a0,0
+    80205632:	ffffe097          	auipc	ra,0xffffe
+    80205636:	0ac080e7          	jalr	172(ra) # 802036de <bread>
+    8020563a:	892a                	mv	s2,a0
     return (cluster << 2) % fat.bpb.byts_per_sec;
-    802052ec:	010a5783          	lhu	a5,16(s4)
-    802052f0:	02f4f4bb          	remuw	s1,s1,a5
+    8020563c:	010a5783          	lhu	a5,16(s4)
+    80205640:	02f4f4bb          	remuw	s1,s1,a5
     *(uint32 *)(b->data + off) = content;
-    802052f4:	1482                	slli	s1,s1,0x20
-    802052f6:	9081                	srli	s1,s1,0x20
-    802052f8:	94aa                	add	s1,s1,a0
-    802052fa:	0534ac23          	sw	s3,88(s1)
+    80205644:	1482                	slli	s1,s1,0x20
+    80205646:	9081                	srli	s1,s1,0x20
+    80205648:	94aa                	add	s1,s1,a0
+    8020564a:	0534ac23          	sw	s3,88(s1)
     bwrite(b);
-    802052fe:	ffffe097          	auipc	ra,0xffffe
-    80205302:	1b4080e7          	jalr	436(ra) # 802034b2 <bwrite>
+    8020564e:	ffffe097          	auipc	ra,0xffffe
+    80205652:	180080e7          	jalr	384(ra) # 802037ce <bwrite>
     brelse(b);
-    80205306:	854a                	mv	a0,s2
-    80205308:	ffffe097          	auipc	ra,0xffffe
-    8020530c:	1e6080e7          	jalr	486(ra) # 802034ee <brelse>
+    80205656:	854a                	mv	a0,s2
+    80205658:	ffffe097          	auipc	ra,0xffffe
+    8020565c:	1b2080e7          	jalr	434(ra) # 8020380a <brelse>
     return 0;
-    80205310:	4501                	li	a0,0
-}
-    80205312:	70a2                	ld	ra,40(sp)
-    80205314:	7402                	ld	s0,32(sp)
-    80205316:	64e2                	ld	s1,24(sp)
-    80205318:	6942                	ld	s2,16(sp)
-    8020531a:	69a2                	ld	s3,8(sp)
-    8020531c:	6a02                	ld	s4,0(sp)
-    8020531e:	6145                	addi	sp,sp,48
-    80205320:	8082                	ret
+    80205660:	4501                	li	a0,0
+}
+    80205662:	70a2                	ld	ra,40(sp)
+    80205664:	7402                	ld	s0,32(sp)
+    80205666:	64e2                	ld	s1,24(sp)
+    80205668:	6942                	ld	s2,16(sp)
+    8020566a:	69a2                	ld	s3,8(sp)
+    8020566c:	6a02                	ld	s4,0(sp)
+    8020566e:	6145                	addi	sp,sp,48
+    80205670:	8082                	ret
         return -1;
-    80205322:	557d                	li	a0,-1
+    80205672:	557d                	li	a0,-1
 }
-    80205324:	8082                	ret
+    80205674:	8082                	ret
 
-0000000080205326 <reloc_clus>:
+0000000080205676 <reloc_clus>:
  * @param   off         the offset from the beginning of the relative file
  * @param   alloc       whether alloc new cluster when meeting end of FAT chains
  * @return              the offset from the new cur_clus
  */
 static int reloc_clus(struct dirent *entry, uint off, int alloc)
 {
-    80205326:	715d                	addi	sp,sp,-80
-    80205328:	e486                	sd	ra,72(sp)
-    8020532a:	e0a2                	sd	s0,64(sp)
-    8020532c:	fc26                	sd	s1,56(sp)
-    8020532e:	f84a                	sd	s2,48(sp)
-    80205330:	f44e                	sd	s3,40(sp)
-    80205332:	f052                	sd	s4,32(sp)
-    80205334:	ec56                	sd	s5,24(sp)
-    80205336:	e85a                	sd	s6,16(sp)
-    80205338:	e45e                	sd	s7,8(sp)
-    8020533a:	0880                	addi	s0,sp,80
-    8020533c:	84aa                	mv	s1,a0
-    8020533e:	8a2e                	mv	s4,a1
+    80205676:	715d                	addi	sp,sp,-80
+    80205678:	e486                	sd	ra,72(sp)
+    8020567a:	e0a2                	sd	s0,64(sp)
+    8020567c:	fc26                	sd	s1,56(sp)
+    8020567e:	f84a                	sd	s2,48(sp)
+    80205680:	f44e                	sd	s3,40(sp)
+    80205682:	f052                	sd	s4,32(sp)
+    80205684:	ec56                	sd	s5,24(sp)
+    80205686:	e85a                	sd	s6,16(sp)
+    80205688:	e45e                	sd	s7,8(sp)
+    8020568a:	0880                	addi	s0,sp,80
+    8020568c:	84aa                	mv	s1,a0
+    8020568e:	8a2e                	mv	s4,a1
     int clus_num = off / fat.byts_per_clus;
-    80205340:	00019b97          	auipc	s7,0x19
-    80205344:	0f4bab83          	lw	s7,244(s7) # 8021e434 <fat+0xc>
-    80205348:	0375d9bb          	divuw	s3,a1,s7
+    80205690:	00019b97          	auipc	s7,0x19
+    80205694:	da4bab83          	lw	s7,-604(s7) # 8021e434 <fat+0xc>
+    80205698:	0375d9bb          	divuw	s3,a1,s7
     while (clus_num > entry->clus_cnt) {
-    8020534c:	11052703          	lw	a4,272(a0)
-    80205350:	07377563          	bgeu	a4,s3,802053ba <reloc_clus+0x94>
-    80205354:	8b32                	mv	s6,a2
+    8020569c:	11052703          	lw	a4,272(a0)
+    802056a0:	07377563          	bgeu	a4,s3,8020570a <reloc_clus+0x94>
+    802056a4:	8b32                	mv	s6,a2
         int clus = read_fat(entry->cur_clus);
         if (clus >= FAT32_EOC) {
-    80205356:	10000ab7          	lui	s5,0x10000
-    8020535a:	1add                	addi	s5,s5,-9 # ffffff7 <_entry-0x70200009>
-    8020535c:	a81d                	j	80205392 <reloc_clus+0x6c>
+    802056a6:	10000ab7          	lui	s5,0x10000
+    802056aa:	1add                	addi	s5,s5,-9 # ffffff7 <_entry-0x70200009>
+    802056ac:	a81d                	j	802056e2 <reloc_clus+0x6c>
             if (alloc) {
                 clus = alloc_clus(entry->dev);
-    8020535e:	1144c503          	lbu	a0,276(s1)
-    80205362:	00000097          	auipc	ra,0x0
-    80205366:	e02080e7          	jalr	-510(ra) # 80205164 <alloc_clus>
-    8020536a:	0005091b          	sext.w	s2,a0
+    802056ae:	1144c503          	lbu	a0,276(s1)
+    802056b2:	00000097          	auipc	ra,0x0
+    802056b6:	e02080e7          	jalr	-510(ra) # 802054b4 <alloc_clus>
+    802056ba:	0005091b          	sext.w	s2,a0
                 write_fat(entry->cur_clus, clus);
-    8020536e:	85ca                	mv	a1,s2
-    80205370:	10c4a503          	lw	a0,268(s1)
-    80205374:	00000097          	auipc	ra,0x0
-    80205378:	f32080e7          	jalr	-206(ra) # 802052a6 <write_fat>
+    802056be:	85ca                	mv	a1,s2
+    802056c0:	10c4a503          	lw	a0,268(s1)
+    802056c4:	00000097          	auipc	ra,0x0
+    802056c8:	f32080e7          	jalr	-206(ra) # 802055f6 <write_fat>
                 entry->cur_clus = entry->first_clus;
                 entry->clus_cnt = 0;
                 return -1;
             }
         }
         entry->cur_clus = clus;
-    8020537c:	1124a623          	sw	s2,268(s1)
+    802056cc:	1124a623          	sw	s2,268(s1)
         entry->clus_cnt++;
-    80205380:	1104a783          	lw	a5,272(s1)
-    80205384:	2785                	addiw	a5,a5,1
-    80205386:	0007871b          	sext.w	a4,a5
-    8020538a:	10f4a823          	sw	a5,272(s1)
+    802056d0:	1104a783          	lw	a5,272(s1)
+    802056d4:	2785                	addiw	a5,a5,1
+    802056d6:	0007871b          	sext.w	a4,a5
+    802056da:	10f4a823          	sw	a5,272(s1)
     while (clus_num > entry->clus_cnt) {
-    8020538e:	03377663          	bgeu	a4,s3,802053ba <reloc_clus+0x94>
+    802056de:	03377663          	bgeu	a4,s3,8020570a <reloc_clus+0x94>
         int clus = read_fat(entry->cur_clus);
-    80205392:	10c4a503          	lw	a0,268(s1)
-    80205396:	00000097          	auipc	ra,0x0
-    8020539a:	d58080e7          	jalr	-680(ra) # 802050ee <read_fat>
-    8020539e:	0005091b          	sext.w	s2,a0
+    802056e2:	10c4a503          	lw	a0,268(s1)
+    802056e6:	00000097          	auipc	ra,0x0
+    802056ea:	d58080e7          	jalr	-680(ra) # 8020543e <read_fat>
+    802056ee:	0005091b          	sext.w	s2,a0
         if (clus >= FAT32_EOC) {
-    802053a2:	fd2adde3          	bge	s5,s2,8020537c <reloc_clus+0x56>
+    802056f2:	fd2adde3          	bge	s5,s2,802056cc <reloc_clus+0x56>
             if (alloc) {
-    802053a6:	fa0b1ce3          	bnez	s6,8020535e <reloc_clus+0x38>
+    802056f6:	fa0b1ce3          	bnez	s6,802056ae <reloc_clus+0x38>
                 entry->cur_clus = entry->first_clus;
-    802053aa:	1044a783          	lw	a5,260(s1)
-    802053ae:	10f4a623          	sw	a5,268(s1)
+    802056fa:	1044a783          	lw	a5,260(s1)
+    802056fe:	10f4a623          	sw	a5,268(s1)
                 entry->clus_cnt = 0;
-    802053b2:	1004a823          	sw	zero,272(s1)
+    80205702:	1004a823          	sw	zero,272(s1)
                 return -1;
-    802053b6:	557d                	li	a0,-1
-    802053b8:	a881                	j	80205408 <reloc_clus+0xe2>
+    80205706:	557d                	li	a0,-1
+    80205708:	a881                	j	80205758 <reloc_clus+0xe2>
     }
     if (clus_num < entry->clus_cnt) {
-    802053ba:	04e9f163          	bgeu	s3,a4,802053fc <reloc_clus+0xd6>
+    8020570a:	04e9f163          	bgeu	s3,a4,8020574c <reloc_clus+0xd6>
         entry->cur_clus = entry->first_clus;
-    802053be:	1044a783          	lw	a5,260(s1)
-    802053c2:	10f4a623          	sw	a5,268(s1)
+    8020570e:	1044a783          	lw	a5,260(s1)
+    80205712:	10f4a623          	sw	a5,268(s1)
         entry->clus_cnt = 0;
-    802053c6:	1004a823          	sw	zero,272(s1)
+    80205716:	1004a823          	sw	zero,272(s1)
         while (entry->clus_cnt < clus_num) {
-    802053ca:	037a6963          	bltu	s4,s7,802053fc <reloc_clus+0xd6>
+    8020571a:	037a6963          	bltu	s4,s7,8020574c <reloc_clus+0xd6>
             entry->cur_clus = read_fat(entry->cur_clus);
             if (entry->cur_clus >= FAT32_EOC) {
-    802053ce:	10000937          	lui	s2,0x10000
-    802053d2:	195d                	addi	s2,s2,-9 # ffffff7 <_entry-0x70200009>
+    8020571e:	10000937          	lui	s2,0x10000
+    80205722:	195d                	addi	s2,s2,-9 # ffffff7 <_entry-0x70200009>
             entry->cur_clus = read_fat(entry->cur_clus);
-    802053d4:	10c4a503          	lw	a0,268(s1)
-    802053d8:	00000097          	auipc	ra,0x0
-    802053dc:	d16080e7          	jalr	-746(ra) # 802050ee <read_fat>
-    802053e0:	2501                	sext.w	a0,a0
-    802053e2:	10a4a623          	sw	a0,268(s1)
+    80205724:	10c4a503          	lw	a0,268(s1)
+    80205728:	00000097          	auipc	ra,0x0
+    8020572c:	d16080e7          	jalr	-746(ra) # 8020543e <read_fat>
+    80205730:	2501                	sext.w	a0,a0
+    80205732:	10a4a623          	sw	a0,268(s1)
             if (entry->cur_clus >= FAT32_EOC) {
-    802053e6:	02a96c63          	bltu	s2,a0,8020541e <reloc_clus+0xf8>
+    80205736:	02a96c63          	bltu	s2,a0,8020576e <reloc_clus+0xf8>
                 panic("reloc_clus");
             }
             entry->clus_cnt++;
-    802053ea:	1104a783          	lw	a5,272(s1)
-    802053ee:	2785                	addiw	a5,a5,1
-    802053f0:	0007871b          	sext.w	a4,a5
-    802053f4:	10f4a823          	sw	a5,272(s1)
+    8020573a:	1104a783          	lw	a5,272(s1)
+    8020573e:	2785                	addiw	a5,a5,1
+    80205740:	0007871b          	sext.w	a4,a5
+    80205744:	10f4a823          	sw	a5,272(s1)
         while (entry->clus_cnt < clus_num) {
-    802053f8:	fd376ee3          	bltu	a4,s3,802053d4 <reloc_clus+0xae>
+    80205748:	fd376ee3          	bltu	a4,s3,80205724 <reloc_clus+0xae>
         }
     }
     return off % fat.byts_per_clus;
-    802053fc:	00019797          	auipc	a5,0x19
-    80205400:	0387a783          	lw	a5,56(a5) # 8021e434 <fat+0xc>
-    80205404:	02fa753b          	remuw	a0,s4,a5
-}
-    80205408:	60a6                	ld	ra,72(sp)
-    8020540a:	6406                	ld	s0,64(sp)
-    8020540c:	74e2                	ld	s1,56(sp)
-    8020540e:	7942                	ld	s2,48(sp)
-    80205410:	79a2                	ld	s3,40(sp)
-    80205412:	7a02                	ld	s4,32(sp)
-    80205414:	6ae2                	ld	s5,24(sp)
-    80205416:	6b42                	ld	s6,16(sp)
-    80205418:	6ba2                	ld	s7,8(sp)
-    8020541a:	6161                	addi	sp,sp,80
-    8020541c:	8082                	ret
+    8020574c:	00019797          	auipc	a5,0x19
+    80205750:	ce87a783          	lw	a5,-792(a5) # 8021e434 <fat+0xc>
+    80205754:	02fa753b          	remuw	a0,s4,a5
+}
+    80205758:	60a6                	ld	ra,72(sp)
+    8020575a:	6406                	ld	s0,64(sp)
+    8020575c:	74e2                	ld	s1,56(sp)
+    8020575e:	7942                	ld	s2,48(sp)
+    80205760:	79a2                	ld	s3,40(sp)
+    80205762:	7a02                	ld	s4,32(sp)
+    80205764:	6ae2                	ld	s5,24(sp)
+    80205766:	6b42                	ld	s6,16(sp)
+    80205768:	6ba2                	ld	s7,8(sp)
+    8020576a:	6161                	addi	sp,sp,80
+    8020576c:	8082                	ret
                 panic("reloc_clus");
-    8020541e:	00004517          	auipc	a0,0x4
-    80205422:	77a50513          	addi	a0,a0,1914 # 80209b98 <digits+0x818>
-    80205426:	ffffb097          	auipc	ra,0xffffb
-    8020542a:	d1e080e7          	jalr	-738(ra) # 80200144 <panic>
-
-000000008020542e <rw_clus>:
-{
-    8020542e:	7119                	addi	sp,sp,-128
-    80205430:	fc86                	sd	ra,120(sp)
-    80205432:	f8a2                	sd	s0,112(sp)
-    80205434:	f4a6                	sd	s1,104(sp)
-    80205436:	f0ca                	sd	s2,96(sp)
-    80205438:	ecce                	sd	s3,88(sp)
-    8020543a:	e8d2                	sd	s4,80(sp)
-    8020543c:	e4d6                	sd	s5,72(sp)
-    8020543e:	e0da                	sd	s6,64(sp)
-    80205440:	fc5e                	sd	s7,56(sp)
-    80205442:	f862                	sd	s8,48(sp)
-    80205444:	f466                	sd	s9,40(sp)
-    80205446:	f06a                	sd	s10,32(sp)
-    80205448:	ec6e                	sd	s11,24(sp)
-    8020544a:	0100                	addi	s0,sp,128
-    8020544c:	f8c43423          	sd	a2,-120(s0)
-    80205450:	8b36                	mv	s6,a3
-    80205452:	8c3e                	mv	s8,a5
+    8020576e:	00004517          	auipc	a0,0x4
+    80205772:	46250513          	addi	a0,a0,1122 # 80209bd0 <digits+0x850>
+    80205776:	ffffb097          	auipc	ra,0xffffb
+    8020577a:	9ce080e7          	jalr	-1586(ra) # 80200144 <panic>
+
+000000008020577e <rw_clus>:
+{
+    8020577e:	7119                	addi	sp,sp,-128
+    80205780:	fc86                	sd	ra,120(sp)
+    80205782:	f8a2                	sd	s0,112(sp)
+    80205784:	f4a6                	sd	s1,104(sp)
+    80205786:	f0ca                	sd	s2,96(sp)
+    80205788:	ecce                	sd	s3,88(sp)
+    8020578a:	e8d2                	sd	s4,80(sp)
+    8020578c:	e4d6                	sd	s5,72(sp)
+    8020578e:	e0da                	sd	s6,64(sp)
+    80205790:	fc5e                	sd	s7,56(sp)
+    80205792:	f862                	sd	s8,48(sp)
+    80205794:	f466                	sd	s9,40(sp)
+    80205796:	f06a                	sd	s10,32(sp)
+    80205798:	ec6e                	sd	s11,24(sp)
+    8020579a:	0100                	addi	s0,sp,128
+    8020579c:	f8c43423          	sd	a2,-120(s0)
+    802057a0:	8b36                	mv	s6,a3
+    802057a2:	8c3e                	mv	s8,a5
     if (off + n > fat.byts_per_clus)
-    80205454:	00f706bb          	addw	a3,a4,a5
-    80205458:	00019797          	auipc	a5,0x19
-    8020545c:	fdc7a783          	lw	a5,-36(a5) # 8021e434 <fat+0xc>
-    80205460:	02d7ef63          	bltu	a5,a3,8020549e <rw_clus+0x70>
-    80205464:	8cae                	mv	s9,a1
+    802057a4:	00f706bb          	addw	a3,a4,a5
+    802057a8:	00019797          	auipc	a5,0x19
+    802057ac:	c8c7a783          	lw	a5,-884(a5) # 8021e434 <fat+0xc>
+    802057b0:	02d7ef63          	bltu	a5,a3,802057ee <rw_clus+0x70>
+    802057b4:	8cae                	mv	s9,a1
     uint sec = first_sec_of_clus(cluster) + off / fat.bpb.byts_per_sec;
-    80205466:	00019797          	auipc	a5,0x19
-    8020546a:	fc278793          	addi	a5,a5,-62 # 8021e428 <fat>
-    8020546e:	0107d683          	lhu	a3,16(a5)
+    802057b6:	00019797          	auipc	a5,0x19
+    802057ba:	c7278793          	addi	a5,a5,-910 # 8021e428 <fat>
+    802057be:	0107d683          	lhu	a3,16(a5)
     return ((cluster - 2) * fat.bpb.sec_per_clus) + fat.first_data_sec;
-    80205472:	ffe5099b          	addiw	s3,a0,-2
-    80205476:	0127c603          	lbu	a2,18(a5)
-    8020547a:	02c989bb          	mulw	s3,s3,a2
-    8020547e:	439c                	lw	a5,0(a5)
-    80205480:	00f989bb          	addw	s3,s3,a5
+    802057c2:	ffe5099b          	addiw	s3,a0,-2
+    802057c6:	0127c603          	lbu	a2,18(a5)
+    802057ca:	02c989bb          	mulw	s3,s3,a2
+    802057ce:	439c                	lw	a5,0(a5)
+    802057d0:	00f989bb          	addw	s3,s3,a5
     uint sec = first_sec_of_clus(cluster) + off / fat.bpb.byts_per_sec;
-    80205484:	02d757bb          	divuw	a5,a4,a3
-    80205488:	00f989bb          	addw	s3,s3,a5
+    802057d4:	02d757bb          	divuw	a5,a4,a3
+    802057d8:	00f989bb          	addw	s3,s3,a5
     off = off % fat.bpb.byts_per_sec;
-    8020548c:	02d77abb          	remuw	s5,a4,a3
+    802057dc:	02d77abb          	remuw	s5,a4,a3
     for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) {
-    80205490:	0e0c0363          	beqz	s8,80205576 <rw_clus+0x148>
-    80205494:	4a01                	li	s4,0
+    802057e0:	0e0c0363          	beqz	s8,802058c6 <rw_clus+0x148>
+    802057e4:	4a01                	li	s4,0
         m = BSIZE - off % BSIZE;
-    80205496:	20000d93          	li	s11,512
+    802057e6:	20000d93          	li	s11,512
         if (bad == -1) {
-    8020549a:	5d7d                	li	s10,-1
-    8020549c:	a095                	j	80205500 <rw_clus+0xd2>
+    802057ea:	5d7d                	li	s10,-1
+    802057ec:	a095                	j	80205850 <rw_clus+0xd2>
         panic("offset out of range");
-    8020549e:	00004517          	auipc	a0,0x4
-    802054a2:	70a50513          	addi	a0,a0,1802 # 80209ba8 <digits+0x828>
-    802054a6:	ffffb097          	auipc	ra,0xffffb
-    802054aa:	c9e080e7          	jalr	-866(ra) # 80200144 <panic>
+    802057ee:	00004517          	auipc	a0,0x4
+    802057f2:	3f250513          	addi	a0,a0,1010 # 80209be0 <digits+0x860>
+    802057f6:	ffffb097          	auipc	ra,0xffffb
+    802057fa:	94e080e7          	jalr	-1714(ra) # 80200144 <panic>
                 bwrite(bp);
-    802054ae:	854a                	mv	a0,s2
-    802054b0:	ffffe097          	auipc	ra,0xffffe
-    802054b4:	002080e7          	jalr	2(ra) # 802034b2 <bwrite>
+    802057fe:	854a                	mv	a0,s2
+    80205800:	ffffe097          	auipc	ra,0xffffe
+    80205804:	fce080e7          	jalr	-50(ra) # 802037ce <bwrite>
         brelse(bp);
-    802054b8:	854a                	mv	a0,s2
-    802054ba:	ffffe097          	auipc	ra,0xffffe
-    802054be:	034080e7          	jalr	52(ra) # 802034ee <brelse>
+    80205808:	854a                	mv	a0,s2
+    8020580a:	ffffe097          	auipc	ra,0xffffe
+    8020580e:	000080e7          	jalr	ra # 8020380a <brelse>
         if (bad == -1) {
-    802054c2:	a02d                	j	802054ec <rw_clus+0xbe>
+    80205812:	a02d                	j	8020583c <rw_clus+0xbe>
             bad = either_copyout(user, data, bp->data + (off % BSIZE), m);
-    802054c4:	05890613          	addi	a2,s2,88
-    802054c8:	1682                	slli	a3,a3,0x20
-    802054ca:	9281                	srli	a3,a3,0x20
-    802054cc:	963a                	add	a2,a2,a4
-    802054ce:	85da                	mv	a1,s6
-    802054d0:	f8843503          	ld	a0,-120(s0)
-    802054d4:	ffffd097          	auipc	ra,0xffffd
-    802054d8:	03e080e7          	jalr	62(ra) # 80202512 <either_copyout>
-    802054dc:	8baa                	mv	s7,a0
+    80205814:	05890613          	addi	a2,s2,88
+    80205818:	1682                	slli	a3,a3,0x20
+    8020581a:	9281                	srli	a3,a3,0x20
+    8020581c:	963a                	add	a2,a2,a4
+    8020581e:	85da                	mv	a1,s6
+    80205820:	f8843503          	ld	a0,-120(s0)
+    80205824:	ffffd097          	auipc	ra,0xffffd
+    80205828:	cee080e7          	jalr	-786(ra) # 80202512 <either_copyout>
+    8020582c:	8baa                	mv	s7,a0
         brelse(bp);
-    802054de:	854a                	mv	a0,s2
-    802054e0:	ffffe097          	auipc	ra,0xffffe
-    802054e4:	00e080e7          	jalr	14(ra) # 802034ee <brelse>
+    8020582e:	854a                	mv	a0,s2
+    80205830:	ffffe097          	auipc	ra,0xffffe
+    80205834:	fda080e7          	jalr	-38(ra) # 8020380a <brelse>
         if (bad == -1) {
-    802054e8:	07ab8763          	beq	s7,s10,80205556 <rw_clus+0x128>
+    80205838:	07ab8763          	beq	s7,s10,802058a6 <rw_clus+0x128>
     for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) {
-    802054ec:	01448a3b          	addw	s4,s1,s4
-    802054f0:	01548abb          	addw	s5,s1,s5
-    802054f4:	1482                	slli	s1,s1,0x20
-    802054f6:	9081                	srli	s1,s1,0x20
-    802054f8:	9b26                	add	s6,s6,s1
-    802054fa:	2985                	addiw	s3,s3,1
-    802054fc:	058a7d63          	bgeu	s4,s8,80205556 <rw_clus+0x128>
+    8020583c:	01448a3b          	addw	s4,s1,s4
+    80205840:	01548abb          	addw	s5,s1,s5
+    80205844:	1482                	slli	s1,s1,0x20
+    80205846:	9081                	srli	s1,s1,0x20
+    80205848:	9b26                	add	s6,s6,s1
+    8020584a:	2985                	addiw	s3,s3,1
+    8020584c:	058a7d63          	bgeu	s4,s8,802058a6 <rw_clus+0x128>
         bp = bread(0, sec);
-    80205500:	85ce                	mv	a1,s3
-    80205502:	4501                	li	a0,0
-    80205504:	ffffe097          	auipc	ra,0xffffe
-    80205508:	ebe080e7          	jalr	-322(ra) # 802033c2 <bread>
-    8020550c:	892a                	mv	s2,a0
+    80205850:	85ce                	mv	a1,s3
+    80205852:	4501                	li	a0,0
+    80205854:	ffffe097          	auipc	ra,0xffffe
+    80205858:	e8a080e7          	jalr	-374(ra) # 802036de <bread>
+    8020585c:	892a                	mv	s2,a0
         m = BSIZE - off % BSIZE;
-    8020550e:	1ffaf713          	andi	a4,s5,511
+    8020585e:	1ffaf713          	andi	a4,s5,511
         if (n - tot < m) {
-    80205512:	414c07bb          	subw	a5,s8,s4
+    80205862:	414c07bb          	subw	a5,s8,s4
         m = BSIZE - off % BSIZE;
-    80205516:	40ed863b          	subw	a2,s11,a4
-    8020551a:	86be                	mv	a3,a5
-    8020551c:	2781                	sext.w	a5,a5
-    8020551e:	0006059b          	sext.w	a1,a2
-    80205522:	00f5f363          	bgeu	a1,a5,80205528 <rw_clus+0xfa>
-    80205526:	86b2                	mv	a3,a2
-    80205528:	0006849b          	sext.w	s1,a3
+    80205866:	40ed863b          	subw	a2,s11,a4
+    8020586a:	86be                	mv	a3,a5
+    8020586c:	2781                	sext.w	a5,a5
+    8020586e:	0006059b          	sext.w	a1,a2
+    80205872:	00f5f363          	bgeu	a1,a5,80205878 <rw_clus+0xfa>
+    80205876:	86b2                	mv	a3,a2
+    80205878:	0006849b          	sext.w	s1,a3
         if (write) {
-    8020552c:	f80c8ce3          	beqz	s9,802054c4 <rw_clus+0x96>
+    8020587c:	f80c8ce3          	beqz	s9,80205814 <rw_clus+0x96>
             if ((bad = either_copyin(bp->data + (off % BSIZE), user, data, m)) != -1) {
-    80205530:	05890513          	addi	a0,s2,88
-    80205534:	1682                	slli	a3,a3,0x20
-    80205536:	9281                	srli	a3,a3,0x20
-    80205538:	865a                	mv	a2,s6
-    8020553a:	f8843583          	ld	a1,-120(s0)
-    8020553e:	953a                	add	a0,a0,a4
-    80205540:	ffffd097          	auipc	ra,0xffffd
-    80205544:	008080e7          	jalr	8(ra) # 80202548 <either_copyin>
-    80205548:	f7a513e3          	bne	a0,s10,802054ae <rw_clus+0x80>
+    80205880:	05890513          	addi	a0,s2,88
+    80205884:	1682                	slli	a3,a3,0x20
+    80205886:	9281                	srli	a3,a3,0x20
+    80205888:	865a                	mv	a2,s6
+    8020588a:	f8843583          	ld	a1,-120(s0)
+    8020588e:	953a                	add	a0,a0,a4
+    80205890:	ffffd097          	auipc	ra,0xffffd
+    80205894:	cb8080e7          	jalr	-840(ra) # 80202548 <either_copyin>
+    80205898:	f7a513e3          	bne	a0,s10,802057fe <rw_clus+0x80>
         brelse(bp);
-    8020554c:	854a                	mv	a0,s2
-    8020554e:	ffffe097          	auipc	ra,0xffffe
-    80205552:	fa0080e7          	jalr	-96(ra) # 802034ee <brelse>
-}
-    80205556:	8552                	mv	a0,s4
-    80205558:	70e6                	ld	ra,120(sp)
-    8020555a:	7446                	ld	s0,112(sp)
-    8020555c:	74a6                	ld	s1,104(sp)
-    8020555e:	7906                	ld	s2,96(sp)
-    80205560:	69e6                	ld	s3,88(sp)
-    80205562:	6a46                	ld	s4,80(sp)
-    80205564:	6aa6                	ld	s5,72(sp)
-    80205566:	6b06                	ld	s6,64(sp)
-    80205568:	7be2                	ld	s7,56(sp)
-    8020556a:	7c42                	ld	s8,48(sp)
-    8020556c:	7ca2                	ld	s9,40(sp)
-    8020556e:	7d02                	ld	s10,32(sp)
-    80205570:	6de2                	ld	s11,24(sp)
-    80205572:	6109                	addi	sp,sp,128
-    80205574:	8082                	ret
+    8020589c:	854a                	mv	a0,s2
+    8020589e:	ffffe097          	auipc	ra,0xffffe
+    802058a2:	f6c080e7          	jalr	-148(ra) # 8020380a <brelse>
+}
+    802058a6:	8552                	mv	a0,s4
+    802058a8:	70e6                	ld	ra,120(sp)
+    802058aa:	7446                	ld	s0,112(sp)
+    802058ac:	74a6                	ld	s1,104(sp)
+    802058ae:	7906                	ld	s2,96(sp)
+    802058b0:	69e6                	ld	s3,88(sp)
+    802058b2:	6a46                	ld	s4,80(sp)
+    802058b4:	6aa6                	ld	s5,72(sp)
+    802058b6:	6b06                	ld	s6,64(sp)
+    802058b8:	7be2                	ld	s7,56(sp)
+    802058ba:	7c42                	ld	s8,48(sp)
+    802058bc:	7ca2                	ld	s9,40(sp)
+    802058be:	7d02                	ld	s10,32(sp)
+    802058c0:	6de2                	ld	s11,24(sp)
+    802058c2:	6109                	addi	sp,sp,128
+    802058c4:	8082                	ret
     for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) {
-    80205576:	8a62                	mv	s4,s8
-    80205578:	bff9                	j	80205556 <rw_clus+0x128>
+    802058c6:	8a62                	mv	s4,s8
+    802058c8:	bff9                	j	802058a6 <rw_clus+0x128>
 
-000000008020557a <eget>:
+00000000802058ca <eget>:
 // by their whole path. But when parsing a path, we open all the directories through it, 
 // which forms a linked list from the final file to the root. Thus, we use the "parent" pointer 
 // to recognize whether an entry with the "name" as given is really the file we want in the right path.
 // Should never get root by eget, it's easy to understand.
 static struct dirent *eget(struct dirent *parent, char *name)
 {
-    8020557a:	7139                	addi	sp,sp,-64
-    8020557c:	fc06                	sd	ra,56(sp)
-    8020557e:	f822                	sd	s0,48(sp)
-    80205580:	f426                	sd	s1,40(sp)
-    80205582:	f04a                	sd	s2,32(sp)
-    80205584:	ec4e                	sd	s3,24(sp)
-    80205586:	e852                	sd	s4,16(sp)
-    80205588:	e456                	sd	s5,8(sp)
-    8020558a:	0080                	addi	s0,sp,64
-    8020558c:	8a2a                	mv	s4,a0
-    8020558e:	8aae                	mv	s5,a1
+    802058ca:	7139                	addi	sp,sp,-64
+    802058cc:	fc06                	sd	ra,56(sp)
+    802058ce:	f822                	sd	s0,48(sp)
+    802058d0:	f426                	sd	s1,40(sp)
+    802058d2:	f04a                	sd	s2,32(sp)
+    802058d4:	ec4e                	sd	s3,24(sp)
+    802058d6:	e852                	sd	s4,16(sp)
+    802058d8:	e456                	sd	s5,8(sp)
+    802058da:	0080                	addi	s0,sp,64
+    802058dc:	8a2a                	mv	s4,a0
+    802058de:	8aae                	mv	s5,a1
     struct dirent *ep;
     acquire(&ecache.lock);
-    80205590:	00019517          	auipc	a0,0x19
-    80205594:	02850513          	addi	a0,a0,40 # 8021e5b8 <ecache>
-    80205598:	ffffb097          	auipc	ra,0xffffb
-    8020559c:	12e080e7          	jalr	302(ra) # 802006c6 <acquire>
+    802058e0:	00019517          	auipc	a0,0x19
+    802058e4:	cd850513          	addi	a0,a0,-808 # 8021e5b8 <ecache>
+    802058e8:	ffffb097          	auipc	ra,0xffffb
+    802058ec:	dde080e7          	jalr	-546(ra) # 802006c6 <acquire>
     if (name) {
-    802055a0:	060a8b63          	beqz	s5,80205616 <eget+0x9c>
+    802058f0:	060a8b63          	beqz	s5,80205966 <eget+0x9c>
         for (ep = root.next; ep != &root; ep = ep->next) {          // LRU algo
-    802055a4:	00019497          	auipc	s1,0x19
-    802055a8:	fd44b483          	ld	s1,-44(s1) # 8021e578 <root+0x128>
-    802055ac:	00019797          	auipc	a5,0x19
-    802055b0:	ea478793          	addi	a5,a5,-348 # 8021e450 <root>
-    802055b4:	06f48163          	beq	s1,a5,80205616 <eget+0x9c>
+    802058f4:	00019497          	auipc	s1,0x19
+    802058f8:	c844b483          	ld	s1,-892(s1) # 8021e578 <root+0x128>
+    802058fc:	00019797          	auipc	a5,0x19
+    80205900:	b5478793          	addi	a5,a5,-1196 # 8021e450 <root>
+    80205904:	06f48163          	beq	s1,a5,80205966 <eget+0x9c>
             if (ep->valid == 1 && ep->parent == parent
-    802055b8:	4905                	li	s2,1
+    80205908:	4905                	li	s2,1
         for (ep = root.next; ep != &root; ep = ep->next) {          // LRU algo
-    802055ba:	89be                	mv	s3,a5
-    802055bc:	a029                	j	802055c6 <eget+0x4c>
-    802055be:	1284b483          	ld	s1,296(s1)
-    802055c2:	05348a63          	beq	s1,s3,80205616 <eget+0x9c>
+    8020590a:	89be                	mv	s3,a5
+    8020590c:	a029                	j	80205916 <eget+0x4c>
+    8020590e:	1284b483          	ld	s1,296(s1)
+    80205912:	05348a63          	beq	s1,s3,80205966 <eget+0x9c>
             if (ep->valid == 1 && ep->parent == parent
-    802055c6:	11649783          	lh	a5,278(s1)
-    802055ca:	ff279ae3          	bne	a5,s2,802055be <eget+0x44>
-    802055ce:	1204b783          	ld	a5,288(s1)
-    802055d2:	ff4796e3          	bne	a5,s4,802055be <eget+0x44>
+    80205916:	11649783          	lh	a5,278(s1)
+    8020591a:	ff279ae3          	bne	a5,s2,8020590e <eget+0x44>
+    8020591e:	1204b783          	ld	a5,288(s1)
+    80205922:	ff4796e3          	bne	a5,s4,8020590e <eget+0x44>
                 && strncmp(ep->filename, name, FAT32_MAX_FILENAME) == 0) {
-    802055d6:	0ff00613          	li	a2,255
-    802055da:	85d6                	mv	a1,s5
-    802055dc:	8526                	mv	a0,s1
-    802055de:	ffffb097          	auipc	ra,0xffffb
-    802055e2:	25c080e7          	jalr	604(ra) # 8020083a <strncmp>
-    802055e6:	fd61                	bnez	a0,802055be <eget+0x44>
+    80205926:	0ff00613          	li	a2,255
+    8020592a:	85d6                	mv	a1,s5
+    8020592c:	8526                	mv	a0,s1
+    8020592e:	ffffb097          	auipc	ra,0xffffb
+    80205932:	f0c080e7          	jalr	-244(ra) # 8020083a <strncmp>
+    80205936:	fd61                	bnez	a0,8020590e <eget+0x44>
                 if (ep->ref++ == 0) {
-    802055e8:	1184a783          	lw	a5,280(s1)
-    802055ec:	0017871b          	addiw	a4,a5,1
-    802055f0:	10e4ac23          	sw	a4,280(s1)
-    802055f4:	eb81                	bnez	a5,80205604 <eget+0x8a>
+    80205938:	1184a783          	lw	a5,280(s1)
+    8020593c:	0017871b          	addiw	a4,a5,1
+    80205940:	10e4ac23          	sw	a4,280(s1)
+    80205944:	eb81                	bnez	a5,80205954 <eget+0x8a>
                     ep->parent->ref++;
-    802055f6:	1204b703          	ld	a4,288(s1)
-    802055fa:	11872783          	lw	a5,280(a4)
-    802055fe:	2785                	addiw	a5,a5,1
-    80205600:	10f72c23          	sw	a5,280(a4)
+    80205946:	1204b703          	ld	a4,288(s1)
+    8020594a:	11872783          	lw	a5,280(a4)
+    8020594e:	2785                	addiw	a5,a5,1
+    80205950:	10f72c23          	sw	a5,280(a4)
                 }
                 release(&ecache.lock);
-    80205604:	00019517          	auipc	a0,0x19
-    80205608:	fb450513          	addi	a0,a0,-76 # 8021e5b8 <ecache>
-    8020560c:	ffffb097          	auipc	ra,0xffffb
-    80205610:	10e080e7          	jalr	270(ra) # 8020071a <release>
+    80205954:	00019517          	auipc	a0,0x19
+    80205958:	c6450513          	addi	a0,a0,-924 # 8021e5b8 <ecache>
+    8020595c:	ffffb097          	auipc	ra,0xffffb
+    80205960:	dbe080e7          	jalr	-578(ra) # 8020071a <release>
                 // edup(ep->parent);
                 return ep;
-    80205614:	a085                	j	80205674 <eget+0xfa>
+    80205964:	a085                	j	802059c4 <eget+0xfa>
             }
         }
     }
     for (ep = root.prev; ep != &root; ep = ep->prev) {              // LRU algo
-    80205616:	00019497          	auipc	s1,0x19
-    8020561a:	f6a4b483          	ld	s1,-150(s1) # 8021e580 <root+0x130>
-    8020561e:	00019797          	auipc	a5,0x19
-    80205622:	e3278793          	addi	a5,a5,-462 # 8021e450 <root>
-    80205626:	00f48a63          	beq	s1,a5,8020563a <eget+0xc0>
-    8020562a:	873e                	mv	a4,a5
+    80205966:	00019497          	auipc	s1,0x19
+    8020596a:	c1a4b483          	ld	s1,-998(s1) # 8021e580 <root+0x130>
+    8020596e:	00019797          	auipc	a5,0x19
+    80205972:	ae278793          	addi	a5,a5,-1310 # 8021e450 <root>
+    80205976:	00f48a63          	beq	s1,a5,8020598a <eget+0xc0>
+    8020597a:	873e                	mv	a4,a5
         if (ep->ref == 0) {
-    8020562c:	1184a783          	lw	a5,280(s1)
-    80205630:	cf89                	beqz	a5,8020564a <eget+0xd0>
+    8020597c:	1184a783          	lw	a5,280(s1)
+    80205980:	cf89                	beqz	a5,8020599a <eget+0xd0>
     for (ep = root.prev; ep != &root; ep = ep->prev) {              // LRU algo
-    80205632:	1304b483          	ld	s1,304(s1)
-    80205636:	fee49be3          	bne	s1,a4,8020562c <eget+0xb2>
+    80205982:	1304b483          	ld	s1,304(s1)
+    80205986:	fee49be3          	bne	s1,a4,8020597c <eget+0xb2>
             ep->dirty = 0;
             release(&ecache.lock);
             return ep;
         }
     }
     panic("eget: insufficient ecache");
-    8020563a:	00004517          	auipc	a0,0x4
-    8020563e:	58650513          	addi	a0,a0,1414 # 80209bc0 <digits+0x840>
-    80205642:	ffffb097          	auipc	ra,0xffffb
-    80205646:	b02080e7          	jalr	-1278(ra) # 80200144 <panic>
+    8020598a:	00004517          	auipc	a0,0x4
+    8020598e:	26e50513          	addi	a0,a0,622 # 80209bf8 <digits+0x878>
+    80205992:	ffffa097          	auipc	ra,0xffffa
+    80205996:	7b2080e7          	jalr	1970(ra) # 80200144 <panic>
             ep->ref = 1;
-    8020564a:	4785                	li	a5,1
-    8020564c:	10f4ac23          	sw	a5,280(s1)
+    8020599a:	4785                	li	a5,1
+    8020599c:	10f4ac23          	sw	a5,280(s1)
             ep->dev = parent->dev;
-    80205650:	114a4783          	lbu	a5,276(s4)
-    80205654:	10f48a23          	sb	a5,276(s1)
+    802059a0:	114a4783          	lbu	a5,276(s4)
+    802059a4:	10f48a23          	sb	a5,276(s1)
             ep->off = 0;
-    80205658:	1004ae23          	sw	zero,284(s1)
+    802059a8:	1004ae23          	sw	zero,284(s1)
             ep->valid = 0;
-    8020565c:	10049b23          	sh	zero,278(s1)
+    802059ac:	10049b23          	sh	zero,278(s1)
             ep->dirty = 0;
-    80205660:	10048aa3          	sb	zero,277(s1)
+    802059b0:	10048aa3          	sb	zero,277(s1)
             release(&ecache.lock);
-    80205664:	00019517          	auipc	a0,0x19
-    80205668:	f5450513          	addi	a0,a0,-172 # 8021e5b8 <ecache>
-    8020566c:	ffffb097          	auipc	ra,0xffffb
-    80205670:	0ae080e7          	jalr	174(ra) # 8020071a <release>
+    802059b4:	00019517          	auipc	a0,0x19
+    802059b8:	c0450513          	addi	a0,a0,-1020 # 8021e5b8 <ecache>
+    802059bc:	ffffb097          	auipc	ra,0xffffb
+    802059c0:	d5e080e7          	jalr	-674(ra) # 8020071a <release>
     return 0;
 }
-    80205674:	8526                	mv	a0,s1
-    80205676:	70e2                	ld	ra,56(sp)
-    80205678:	7442                	ld	s0,48(sp)
-    8020567a:	74a2                	ld	s1,40(sp)
-    8020567c:	7902                	ld	s2,32(sp)
-    8020567e:	69e2                	ld	s3,24(sp)
-    80205680:	6a42                	ld	s4,16(sp)
-    80205682:	6aa2                	ld	s5,8(sp)
-    80205684:	6121                	addi	sp,sp,64
-    80205686:	8082                	ret
-
-0000000080205688 <read_entry_name>:
+    802059c4:	8526                	mv	a0,s1
+    802059c6:	70e2                	ld	ra,56(sp)
+    802059c8:	7442                	ld	s0,48(sp)
+    802059ca:	74a2                	ld	s1,40(sp)
+    802059cc:	7902                	ld	s2,32(sp)
+    802059ce:	69e2                	ld	s3,24(sp)
+    802059d0:	6a42                	ld	s4,16(sp)
+    802059d2:	6aa2                	ld	s5,8(sp)
+    802059d4:	6121                	addi	sp,sp,64
+    802059d6:	8082                	ret
+
+00000000802059d8 <read_entry_name>:
  * @param   buffer      pointer to the array that stores the name
  * @param   raw_entry   pointer to the entry in a sector buffer
  * @param   islong      if non-zero, read as l-n-e, otherwise s-n-e.
  */
 static void read_entry_name(char *buffer, union dentry *d)
 {
-    80205688:	7139                	addi	sp,sp,-64
-    8020568a:	fc06                	sd	ra,56(sp)
-    8020568c:	f822                	sd	s0,48(sp)
-    8020568e:	f426                	sd	s1,40(sp)
-    80205690:	f04a                	sd	s2,32(sp)
-    80205692:	ec4e                	sd	s3,24(sp)
-    80205694:	0080                	addi	s0,sp,64
-    80205696:	84aa                	mv	s1,a0
-    80205698:	892e                	mv	s2,a1
+    802059d8:	7139                	addi	sp,sp,-64
+    802059da:	fc06                	sd	ra,56(sp)
+    802059dc:	f822                	sd	s0,48(sp)
+    802059de:	f426                	sd	s1,40(sp)
+    802059e0:	f04a                	sd	s2,32(sp)
+    802059e2:	ec4e                	sd	s3,24(sp)
+    802059e4:	0080                	addi	s0,sp,64
+    802059e6:	84aa                	mv	s1,a0
+    802059e8:	892e                	mv	s2,a1
     if (d->lne.attr == ATTR_LONG_NAME) {                       // long entry branch
-    8020569a:	00b5c703          	lbu	a4,11(a1)
-    8020569e:	47bd                	li	a5,15
-    802056a0:	08f70563          	beq	a4,a5,8020572a <read_entry_name+0xa2>
+    802059ea:	00b5c703          	lbu	a4,11(a1)
+    802059ee:	47bd                	li	a5,15
+    802059f0:	08f70563          	beq	a4,a5,80205a7a <read_entry_name+0xa2>
         snstr(buffer, d->lne.name2, NELEM(d->lne.name2));
         buffer += NELEM(d->lne.name2);
         snstr(buffer, d->lne.name3, NELEM(d->lne.name3));
     } else {
         // assert: only "." and ".." will enter this branch
         memset(buffer, 0, CHAR_SHORT_NAME + 2); // plus '.' and '\0'
-    802056a4:	4635                	li	a2,13
-    802056a6:	4581                	li	a1,0
-    802056a8:	ffffb097          	auipc	ra,0xffffb
-    802056ac:	0ba080e7          	jalr	186(ra) # 80200762 <memset>
+    802059f4:	4635                	li	a2,13
+    802059f6:	4581                	li	a1,0
+    802059f8:	ffffb097          	auipc	ra,0xffffb
+    802059fc:	d6a080e7          	jalr	-662(ra) # 80200762 <memset>
         int i;
         for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) {
-    802056b0:	00094703          	lbu	a4,0(s2)
-    802056b4:	02000793          	li	a5,32
-    802056b8:	0af70c63          	beq	a4,a5,80205770 <read_entry_name+0xe8>
-    802056bc:	4785                	li	a5,1
-    802056be:	02000613          	li	a2,32
-    802056c2:	45a5                	li	a1,9
+    80205a00:	00094703          	lbu	a4,0(s2)
+    80205a04:	02000793          	li	a5,32
+    80205a08:	0af70c63          	beq	a4,a5,80205ac0 <read_entry_name+0xe8>
+    80205a0c:	4785                	li	a5,1
+    80205a0e:	02000613          	li	a2,32
+    80205a12:	45a5                	li	a1,9
             buffer[i] = d->sne.name[i];
-    802056c4:	00f486b3          	add	a3,s1,a5
-    802056c8:	fee68fa3          	sb	a4,-1(a3) # 1fff <_entry-0x801fe001>
+    80205a14:	00f486b3          	add	a3,s1,a5
+    80205a18:	fee68fa3          	sb	a4,-1(a3) # 1fff <_entry-0x801fe001>
         for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) {
-    802056cc:	0007869b          	sext.w	a3,a5
-    802056d0:	00f90733          	add	a4,s2,a5
-    802056d4:	00074703          	lbu	a4,0(a4)
-    802056d8:	00c70563          	beq	a4,a2,802056e2 <read_entry_name+0x5a>
-    802056dc:	0785                	addi	a5,a5,1
-    802056de:	feb793e3          	bne	a5,a1,802056c4 <read_entry_name+0x3c>
+    80205a1c:	0007869b          	sext.w	a3,a5
+    80205a20:	00f90733          	add	a4,s2,a5
+    80205a24:	00074703          	lbu	a4,0(a4)
+    80205a28:	00c70563          	beq	a4,a2,80205a32 <read_entry_name+0x5a>
+    80205a2c:	0785                	addi	a5,a5,1
+    80205a2e:	feb793e3          	bne	a5,a1,80205a14 <read_entry_name+0x3c>
         }
         if (d->sne.name[8] != ' ') {
-    802056e2:	00894703          	lbu	a4,8(s2)
-    802056e6:	02000793          	li	a5,32
-    802056ea:	00f70963          	beq	a4,a5,802056fc <read_entry_name+0x74>
+    80205a32:	00894703          	lbu	a4,8(s2)
+    80205a36:	02000793          	li	a5,32
+    80205a3a:	00f70963          	beq	a4,a5,80205a4c <read_entry_name+0x74>
             buffer[i++] = '.';
-    802056ee:	00d487b3          	add	a5,s1,a3
-    802056f2:	02e00713          	li	a4,46
-    802056f6:	00e78023          	sb	a4,0(a5)
-    802056fa:	2685                	addiw	a3,a3,1
+    80205a3e:	00d487b3          	add	a5,s1,a3
+    80205a42:	02e00713          	li	a4,46
+    80205a46:	00e78023          	sb	a4,0(a5)
+    80205a4a:	2685                	addiw	a3,a3,1
         }
         for (int j = 8; j < CHAR_SHORT_NAME; j++, i++) {
-    802056fc:	00890793          	addi	a5,s2,8
-    80205700:	94b6                	add	s1,s1,a3
-    80205702:	092d                	addi	s2,s2,11
+    80205a4c:	00890793          	addi	a5,s2,8
+    80205a50:	94b6                	add	s1,s1,a3
+    80205a52:	092d                	addi	s2,s2,11
             if (d->sne.name[j] == ' ') { break; }
-    80205704:	02000693          	li	a3,32
-    80205708:	0007c703          	lbu	a4,0(a5)
-    8020570c:	00d70863          	beq	a4,a3,8020571c <read_entry_name+0x94>
+    80205a54:	02000693          	li	a3,32
+    80205a58:	0007c703          	lbu	a4,0(a5)
+    80205a5c:	00d70863          	beq	a4,a3,80205a6c <read_entry_name+0x94>
             buffer[i] = d->sne.name[j];
-    80205710:	00e48023          	sb	a4,0(s1)
+    80205a60:	00e48023          	sb	a4,0(s1)
         for (int j = 8; j < CHAR_SHORT_NAME; j++, i++) {
-    80205714:	0785                	addi	a5,a5,1
-    80205716:	0485                	addi	s1,s1,1
-    80205718:	ff2798e3          	bne	a5,s2,80205708 <read_entry_name+0x80>
+    80205a64:	0785                	addi	a5,a5,1
+    80205a66:	0485                	addi	s1,s1,1
+    80205a68:	ff2798e3          	bne	a5,s2,80205a58 <read_entry_name+0x80>
         }
     }
 }
-    8020571c:	70e2                	ld	ra,56(sp)
-    8020571e:	7442                	ld	s0,48(sp)
-    80205720:	74a2                	ld	s1,40(sp)
-    80205722:	7902                	ld	s2,32(sp)
-    80205724:	69e2                	ld	s3,24(sp)
-    80205726:	6121                	addi	sp,sp,64
-    80205728:	8082                	ret
+    80205a6c:	70e2                	ld	ra,56(sp)
+    80205a6e:	7442                	ld	s0,48(sp)
+    80205a70:	74a2                	ld	s1,40(sp)
+    80205a72:	7902                	ld	s2,32(sp)
+    80205a74:	69e2                	ld	s3,24(sp)
+    80205a76:	6121                	addi	sp,sp,64
+    80205a78:	8082                	ret
         memmove(temp, d->lne.name1, sizeof(temp));
-    8020572a:	4629                	li	a2,10
-    8020572c:	0585                	addi	a1,a1,1
-    8020572e:	fc040993          	addi	s3,s0,-64
-    80205732:	854e                	mv	a0,s3
-    80205734:	ffffb097          	auipc	ra,0xffffb
-    80205738:	08a080e7          	jalr	138(ra) # 802007be <memmove>
+    80205a7a:	4629                	li	a2,10
+    80205a7c:	0585                	addi	a1,a1,1
+    80205a7e:	fc040993          	addi	s3,s0,-64
+    80205a82:	854e                	mv	a0,s3
+    80205a84:	ffffb097          	auipc	ra,0xffffb
+    80205a88:	d3a080e7          	jalr	-710(ra) # 802007be <memmove>
         snstr(buffer, temp, NELEM(d->lne.name1));
-    8020573c:	4615                	li	a2,5
-    8020573e:	85ce                	mv	a1,s3
-    80205740:	8526                	mv	a0,s1
-    80205742:	ffffb097          	auipc	ra,0xffffb
-    80205746:	200080e7          	jalr	512(ra) # 80200942 <snstr>
+    80205a8c:	4615                	li	a2,5
+    80205a8e:	85ce                	mv	a1,s3
+    80205a90:	8526                	mv	a0,s1
+    80205a92:	ffffb097          	auipc	ra,0xffffb
+    80205a96:	eb0080e7          	jalr	-336(ra) # 80200942 <snstr>
         snstr(buffer, d->lne.name2, NELEM(d->lne.name2));
-    8020574a:	4619                	li	a2,6
-    8020574c:	00e90593          	addi	a1,s2,14
-    80205750:	00548513          	addi	a0,s1,5
-    80205754:	ffffb097          	auipc	ra,0xffffb
-    80205758:	1ee080e7          	jalr	494(ra) # 80200942 <snstr>
+    80205a9a:	4619                	li	a2,6
+    80205a9c:	00e90593          	addi	a1,s2,14
+    80205aa0:	00548513          	addi	a0,s1,5
+    80205aa4:	ffffb097          	auipc	ra,0xffffb
+    80205aa8:	e9e080e7          	jalr	-354(ra) # 80200942 <snstr>
         snstr(buffer, d->lne.name3, NELEM(d->lne.name3));
-    8020575c:	4609                	li	a2,2
-    8020575e:	01c90593          	addi	a1,s2,28
-    80205762:	00b48513          	addi	a0,s1,11
-    80205766:	ffffb097          	auipc	ra,0xffffb
-    8020576a:	1dc080e7          	jalr	476(ra) # 80200942 <snstr>
-    8020576e:	b77d                	j	8020571c <read_entry_name+0x94>
+    80205aac:	4609                	li	a2,2
+    80205aae:	01c90593          	addi	a1,s2,28
+    80205ab2:	00b48513          	addi	a0,s1,11
+    80205ab6:	ffffb097          	auipc	ra,0xffffb
+    80205aba:	e8c080e7          	jalr	-372(ra) # 80200942 <snstr>
+    80205abe:	b77d                	j	80205a6c <read_entry_name+0x94>
         for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) {
-    80205770:	4681                	li	a3,0
-    80205772:	bf85                	j	802056e2 <read_entry_name+0x5a>
-
-0000000080205774 <fat32_init>:
-{
-    80205774:	7139                	addi	sp,sp,-64
-    80205776:	fc06                	sd	ra,56(sp)
-    80205778:	f822                	sd	s0,48(sp)
-    8020577a:	f426                	sd	s1,40(sp)
-    8020577c:	f04a                	sd	s2,32(sp)
-    8020577e:	ec4e                	sd	s3,24(sp)
-    80205780:	e852                	sd	s4,16(sp)
-    80205782:	e456                	sd	s5,8(sp)
-    80205784:	0080                	addi	s0,sp,64
+    80205ac0:	4681                	li	a3,0
+    80205ac2:	bf85                	j	80205a32 <read_entry_name+0x5a>
+
+0000000080205ac4 <fat32_init>:
+{
+    80205ac4:	7139                	addi	sp,sp,-64
+    80205ac6:	fc06                	sd	ra,56(sp)
+    80205ac8:	f822                	sd	s0,48(sp)
+    80205aca:	f426                	sd	s1,40(sp)
+    80205acc:	f04a                	sd	s2,32(sp)
+    80205ace:	ec4e                	sd	s3,24(sp)
+    80205ad0:	e852                	sd	s4,16(sp)
+    80205ad2:	e456                	sd	s5,8(sp)
+    80205ad4:	0080                	addi	s0,sp,64
     struct buf *b = bread(0, 0);
-    80205786:	4581                	li	a1,0
-    80205788:	4501                	li	a0,0
-    8020578a:	ffffe097          	auipc	ra,0xffffe
-    8020578e:	c38080e7          	jalr	-968(ra) # 802033c2 <bread>
-    80205792:	892a                	mv	s2,a0
+    80205ad6:	4581                	li	a1,0
+    80205ad8:	4501                	li	a0,0
+    80205ada:	ffffe097          	auipc	ra,0xffffe
+    80205ade:	c04080e7          	jalr	-1020(ra) # 802036de <bread>
+    80205ae2:	892a                	mv	s2,a0
     if (strncmp((char const*)(b->data + 82), "FAT32", 5))
-    80205794:	4615                	li	a2,5
-    80205796:	00004597          	auipc	a1,0x4
-    8020579a:	44a58593          	addi	a1,a1,1098 # 80209be0 <digits+0x860>
-    8020579e:	0aa50513          	addi	a0,a0,170
-    802057a2:	ffffb097          	auipc	ra,0xffffb
-    802057a6:	098080e7          	jalr	152(ra) # 8020083a <strncmp>
-    802057aa:	16051863          	bnez	a0,8020591a <fat32_init+0x1a6>
+    80205ae4:	4615                	li	a2,5
+    80205ae6:	00004597          	auipc	a1,0x4
+    80205aea:	13258593          	addi	a1,a1,306 # 80209c18 <digits+0x898>
+    80205aee:	0aa50513          	addi	a0,a0,170
+    80205af2:	ffffb097          	auipc	ra,0xffffb
+    80205af6:	d48080e7          	jalr	-696(ra) # 8020083a <strncmp>
+    80205afa:	16051863          	bnez	a0,80205c6a <fat32_init+0x1a6>
     memmove(&fat.bpb.byts_per_sec, b->data + 11, 2);            // avoid misaligned load on k210
-    802057ae:	00019497          	auipc	s1,0x19
-    802057b2:	c7a48493          	addi	s1,s1,-902 # 8021e428 <fat>
-    802057b6:	4609                	li	a2,2
-    802057b8:	06390593          	addi	a1,s2,99
-    802057bc:	00019517          	auipc	a0,0x19
-    802057c0:	c7c50513          	addi	a0,a0,-900 # 8021e438 <fat+0x10>
-    802057c4:	ffffb097          	auipc	ra,0xffffb
-    802057c8:	ffa080e7          	jalr	-6(ra) # 802007be <memmove>
+    80205afe:	00019497          	auipc	s1,0x19
+    80205b02:	92a48493          	addi	s1,s1,-1750 # 8021e428 <fat>
+    80205b06:	4609                	li	a2,2
+    80205b08:	06390593          	addi	a1,s2,99
+    80205b0c:	00019517          	auipc	a0,0x19
+    80205b10:	92c50513          	addi	a0,a0,-1748 # 8021e438 <fat+0x10>
+    80205b14:	ffffb097          	auipc	ra,0xffffb
+    80205b18:	caa080e7          	jalr	-854(ra) # 802007be <memmove>
     fat.bpb.sec_per_clus = *(b->data + 13);
-    802057cc:	06594683          	lbu	a3,101(s2)
-    802057d0:	00d48923          	sb	a3,18(s1)
+    80205b1c:	06594683          	lbu	a3,101(s2)
+    80205b20:	00d48923          	sb	a3,18(s1)
     fat.bpb.rsvd_sec_cnt = *(uint16 *)(b->data + 14);
-    802057d4:	06695603          	lhu	a2,102(s2)
-    802057d8:	00c49a23          	sh	a2,20(s1)
+    80205b24:	06695603          	lhu	a2,102(s2)
+    80205b28:	00c49a23          	sh	a2,20(s1)
     fat.bpb.fat_cnt = *(b->data + 16);
-    802057dc:	06894703          	lbu	a4,104(s2)
-    802057e0:	00e48b23          	sb	a4,22(s1)
+    80205b2c:	06894703          	lbu	a4,104(s2)
+    80205b30:	00e48b23          	sb	a4,22(s1)
     fat.bpb.hidd_sec = *(uint32 *)(b->data + 28);
-    802057e4:	07492783          	lw	a5,116(s2)
-    802057e8:	cc9c                	sw	a5,24(s1)
+    80205b34:	07492783          	lw	a5,116(s2)
+    80205b38:	cc9c                	sw	a5,24(s1)
     fat.bpb.tot_sec = *(uint32 *)(b->data + 32);
-    802057ea:	07892783          	lw	a5,120(s2)
-    802057ee:	ccdc                	sw	a5,28(s1)
+    80205b3a:	07892783          	lw	a5,120(s2)
+    80205b3e:	ccdc                	sw	a5,28(s1)
     fat.bpb.fat_sz = *(uint32 *)(b->data + 36);
-    802057f0:	07c92583          	lw	a1,124(s2)
-    802057f4:	d08c                	sw	a1,32(s1)
+    80205b40:	07c92583          	lw	a1,124(s2)
+    80205b44:	d08c                	sw	a1,32(s1)
     fat.bpb.root_clus = *(uint32 *)(b->data + 44);
-    802057f6:	08492503          	lw	a0,132(s2)
-    802057fa:	d0c8                	sw	a0,36(s1)
+    80205b46:	08492503          	lw	a0,132(s2)
+    80205b4a:	d0c8                	sw	a0,36(s1)
     fat.first_data_sec = fat.bpb.rsvd_sec_cnt + fat.bpb.fat_cnt * fat.bpb.fat_sz;
-    802057fc:	02b7073b          	mulw	a4,a4,a1
-    80205800:	9f31                	addw	a4,a4,a2
-    80205802:	c098                	sw	a4,0(s1)
+    80205b4c:	02b7073b          	mulw	a4,a4,a1
+    80205b50:	9f31                	addw	a4,a4,a2
+    80205b52:	c098                	sw	a4,0(s1)
     fat.data_sec_cnt = fat.bpb.tot_sec - fat.first_data_sec;
-    80205804:	9f99                	subw	a5,a5,a4
-    80205806:	c0dc                	sw	a5,4(s1)
+    80205b54:	9f99                	subw	a5,a5,a4
+    80205b56:	c0dc                	sw	a5,4(s1)
     fat.data_clus_cnt = fat.data_sec_cnt / fat.bpb.sec_per_clus;
-    80205808:	02d7d7bb          	divuw	a5,a5,a3
-    8020580c:	c49c                	sw	a5,8(s1)
+    80205b58:	02d7d7bb          	divuw	a5,a5,a3
+    80205b5c:	c49c                	sw	a5,8(s1)
     fat.byts_per_clus = fat.bpb.sec_per_clus * fat.bpb.byts_per_sec;
-    8020580e:	0104d783          	lhu	a5,16(s1)
-    80205812:	02d787bb          	mulw	a5,a5,a3
-    80205816:	c4dc                	sw	a5,12(s1)
+    80205b5e:	0104d783          	lhu	a5,16(s1)
+    80205b62:	02d787bb          	mulw	a5,a5,a3
+    80205b66:	c4dc                	sw	a5,12(s1)
     brelse(b);
-    80205818:	854a                	mv	a0,s2
-    8020581a:	ffffe097          	auipc	ra,0xffffe
-    8020581e:	cd4080e7          	jalr	-812(ra) # 802034ee <brelse>
+    80205b68:	854a                	mv	a0,s2
+    80205b6a:	ffffe097          	auipc	ra,0xffffe
+    80205b6e:	ca0080e7          	jalr	-864(ra) # 8020380a <brelse>
     if (BSIZE != fat.bpb.byts_per_sec) 
-    80205822:	0104d703          	lhu	a4,16(s1)
-    80205826:	20000793          	li	a5,512
-    8020582a:	10f71063          	bne	a4,a5,8020592a <fat32_init+0x1b6>
+    80205b72:	0104d703          	lhu	a4,16(s1)
+    80205b76:	20000793          	li	a5,512
+    80205b7a:	10f71063          	bne	a4,a5,80205c7a <fat32_init+0x1b6>
     initlock(&ecache.lock, "ecache");
-    8020582e:	00004597          	auipc	a1,0x4
-    80205832:	3ea58593          	addi	a1,a1,1002 # 80209c18 <digits+0x898>
-    80205836:	00019517          	auipc	a0,0x19
-    8020583a:	d8250513          	addi	a0,a0,-638 # 8021e5b8 <ecache>
-    8020583e:	ffffb097          	auipc	ra,0xffffb
-    80205842:	e44080e7          	jalr	-444(ra) # 80200682 <initlock>
+    80205b7e:	00004597          	auipc	a1,0x4
+    80205b82:	0d258593          	addi	a1,a1,210 # 80209c50 <digits+0x8d0>
+    80205b86:	00019517          	auipc	a0,0x19
+    80205b8a:	a3250513          	addi	a0,a0,-1486 # 8021e5b8 <ecache>
+    80205b8e:	ffffb097          	auipc	ra,0xffffb
+    80205b92:	af4080e7          	jalr	-1292(ra) # 80200682 <initlock>
     memset(&root, 0, sizeof(root));
-    80205846:	00019497          	auipc	s1,0x19
-    8020584a:	be248493          	addi	s1,s1,-1054 # 8021e428 <fat>
-    8020584e:	00019917          	auipc	s2,0x19
-    80205852:	c0290913          	addi	s2,s2,-1022 # 8021e450 <root>
-    80205856:	16800613          	li	a2,360
-    8020585a:	4581                	li	a1,0
-    8020585c:	854a                	mv	a0,s2
-    8020585e:	ffffb097          	auipc	ra,0xffffb
-    80205862:	f04080e7          	jalr	-252(ra) # 80200762 <memset>
+    80205b96:	00019497          	auipc	s1,0x19
+    80205b9a:	89248493          	addi	s1,s1,-1902 # 8021e428 <fat>
+    80205b9e:	00019917          	auipc	s2,0x19
+    80205ba2:	8b290913          	addi	s2,s2,-1870 # 8021e450 <root>
+    80205ba6:	16800613          	li	a2,360
+    80205baa:	4581                	li	a1,0
+    80205bac:	854a                	mv	a0,s2
+    80205bae:	ffffb097          	auipc	ra,0xffffb
+    80205bb2:	bb4080e7          	jalr	-1100(ra) # 80200762 <memset>
     initsleeplock(&root.lock, "entry");
-    80205866:	00004597          	auipc	a1,0x4
-    8020586a:	3ba58593          	addi	a1,a1,954 # 80209c20 <digits+0x8a0>
-    8020586e:	00019517          	auipc	a0,0x19
-    80205872:	d1a50513          	addi	a0,a0,-742 # 8021e588 <root+0x138>
-    80205876:	ffffe097          	auipc	ra,0xffffe
-    8020587a:	d8e080e7          	jalr	-626(ra) # 80203604 <initsleeplock>
+    80205bb6:	00004597          	auipc	a1,0x4
+    80205bba:	0a258593          	addi	a1,a1,162 # 80209c58 <digits+0x8d8>
+    80205bbe:	00019517          	auipc	a0,0x19
+    80205bc2:	9ca50513          	addi	a0,a0,-1590 # 8021e588 <root+0x138>
+    80205bc6:	ffffe097          	auipc	ra,0xffffe
+    80205bca:	d5a080e7          	jalr	-678(ra) # 80203920 <initsleeplock>
     root.attribute = (ATTR_DIRECTORY | ATTR_SYSTEM);
-    8020587e:	47d1                	li	a5,20
-    80205880:	12f48423          	sb	a5,296(s1)
+    80205bce:	47d1                	li	a5,20
+    80205bd0:	12f48423          	sb	a5,296(s1)
     root.first_clus = root.cur_clus = fat.bpb.root_clus;
-    80205884:	50dc                	lw	a5,36(s1)
-    80205886:	12f4aa23          	sw	a5,308(s1)
-    8020588a:	12f4a623          	sw	a5,300(s1)
+    80205bd4:	50dc                	lw	a5,36(s1)
+    80205bd6:	12f4aa23          	sw	a5,308(s1)
+    80205bda:	12f4a623          	sw	a5,300(s1)
     root.valid = 1;
-    8020588e:	4785                	li	a5,1
-    80205890:	12f49f23          	sh	a5,318(s1)
+    80205bde:	4785                	li	a5,1
+    80205be0:	12f49f23          	sh	a5,318(s1)
     root.prev = &root;
-    80205894:	1524bc23          	sd	s2,344(s1)
+    80205be4:	1524bc23          	sd	s2,344(s1)
     root.next = &root;
-    80205898:	1524b823          	sd	s2,336(s1)
+    80205be8:	1524b823          	sd	s2,336(s1)
     for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) {
-    8020589c:	00019497          	auipc	s1,0x19
-    802058a0:	d3448493          	addi	s1,s1,-716 # 8021e5d0 <ecache+0x18>
+    80205bec:	00019497          	auipc	s1,0x19
+    80205bf0:	9e448493          	addi	s1,s1,-1564 # 8021e5d0 <ecache+0x18>
         de->next = root.next;
-    802058a4:	00019917          	auipc	s2,0x19
-    802058a8:	b8490913          	addi	s2,s2,-1148 # 8021e428 <fat>
+    80205bf4:	00019917          	auipc	s2,0x19
+    80205bf8:	83490913          	addi	s2,s2,-1996 # 8021e428 <fat>
         de->prev = &root;
-    802058ac:	00019a97          	auipc	s5,0x19
-    802058b0:	ba4a8a93          	addi	s5,s5,-1116 # 8021e450 <root>
+    80205bfc:	00019a97          	auipc	s5,0x19
+    80205c00:	854a8a93          	addi	s5,s5,-1964 # 8021e450 <root>
         initsleeplock(&de->lock, "entry");
-    802058b4:	00004a17          	auipc	s4,0x4
-    802058b8:	36ca0a13          	addi	s4,s4,876 # 80209c20 <digits+0x8a0>
+    80205c04:	00004a17          	auipc	s4,0x4
+    80205c08:	054a0a13          	addi	s4,s4,84 # 80209c58 <digits+0x8d8>
     for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) {
-    802058bc:	0001d997          	auipc	s3,0x1d
-    802058c0:	36498993          	addi	s3,s3,868 # 80222c20 <cons>
+    80205c0c:	0001d997          	auipc	s3,0x1d
+    80205c10:	01498993          	addi	s3,s3,20 # 80222c20 <cons>
         de->dev = 0;
-    802058c4:	10048a23          	sb	zero,276(s1)
+    80205c14:	10048a23          	sb	zero,276(s1)
         de->valid = 0;
-    802058c8:	10049b23          	sh	zero,278(s1)
+    80205c18:	10049b23          	sh	zero,278(s1)
         de->ref = 0;
-    802058cc:	1004ac23          	sw	zero,280(s1)
+    80205c1c:	1004ac23          	sw	zero,280(s1)
         de->dirty = 0;
-    802058d0:	10048aa3          	sb	zero,277(s1)
+    80205c20:	10048aa3          	sb	zero,277(s1)
         de->parent = 0;
-    802058d4:	1204b023          	sd	zero,288(s1)
+    80205c24:	1204b023          	sd	zero,288(s1)
         de->next = root.next;
-    802058d8:	15093783          	ld	a5,336(s2)
-    802058dc:	12f4b423          	sd	a5,296(s1)
+    80205c28:	15093783          	ld	a5,336(s2)
+    80205c2c:	12f4b423          	sd	a5,296(s1)
         de->prev = &root;
-    802058e0:	1354b823          	sd	s5,304(s1)
+    80205c30:	1354b823          	sd	s5,304(s1)
         initsleeplock(&de->lock, "entry");
-    802058e4:	85d2                	mv	a1,s4
-    802058e6:	13848513          	addi	a0,s1,312
-    802058ea:	ffffe097          	auipc	ra,0xffffe
-    802058ee:	d1a080e7          	jalr	-742(ra) # 80203604 <initsleeplock>
+    80205c34:	85d2                	mv	a1,s4
+    80205c36:	13848513          	addi	a0,s1,312
+    80205c3a:	ffffe097          	auipc	ra,0xffffe
+    80205c3e:	ce6080e7          	jalr	-794(ra) # 80203920 <initsleeplock>
         root.next->prev = de;
-    802058f2:	15093783          	ld	a5,336(s2)
-    802058f6:	1297b823          	sd	s1,304(a5)
+    80205c42:	15093783          	ld	a5,336(s2)
+    80205c46:	1297b823          	sd	s1,304(a5)
         root.next = de;
-    802058fa:	14993823          	sd	s1,336(s2)
+    80205c4a:	14993823          	sd	s1,336(s2)
     for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) {
-    802058fe:	16848493          	addi	s1,s1,360
-    80205902:	fd3491e3          	bne	s1,s3,802058c4 <fat32_init+0x150>
-}
-    80205906:	4501                	li	a0,0
-    80205908:	70e2                	ld	ra,56(sp)
-    8020590a:	7442                	ld	s0,48(sp)
-    8020590c:	74a2                	ld	s1,40(sp)
-    8020590e:	7902                	ld	s2,32(sp)
-    80205910:	69e2                	ld	s3,24(sp)
-    80205912:	6a42                	ld	s4,16(sp)
-    80205914:	6aa2                	ld	s5,8(sp)
-    80205916:	6121                	addi	sp,sp,64
-    80205918:	8082                	ret
+    80205c4e:	16848493          	addi	s1,s1,360
+    80205c52:	fd3491e3          	bne	s1,s3,80205c14 <fat32_init+0x150>
+}
+    80205c56:	4501                	li	a0,0
+    80205c58:	70e2                	ld	ra,56(sp)
+    80205c5a:	7442                	ld	s0,48(sp)
+    80205c5c:	74a2                	ld	s1,40(sp)
+    80205c5e:	7902                	ld	s2,32(sp)
+    80205c60:	69e2                	ld	s3,24(sp)
+    80205c62:	6a42                	ld	s4,16(sp)
+    80205c64:	6aa2                	ld	s5,8(sp)
+    80205c66:	6121                	addi	sp,sp,64
+    80205c68:	8082                	ret
         panic("not FAT32 volume");
-    8020591a:	00004517          	auipc	a0,0x4
-    8020591e:	2ce50513          	addi	a0,a0,718 # 80209be8 <digits+0x868>
-    80205922:	ffffb097          	auipc	ra,0xffffb
-    80205926:	822080e7          	jalr	-2014(ra) # 80200144 <panic>
+    80205c6a:	00004517          	auipc	a0,0x4
+    80205c6e:	fb650513          	addi	a0,a0,-74 # 80209c20 <digits+0x8a0>
+    80205c72:	ffffa097          	auipc	ra,0xffffa
+    80205c76:	4d2080e7          	jalr	1234(ra) # 80200144 <panic>
         panic("byts_per_sec != BSIZE");
-    8020592a:	00004517          	auipc	a0,0x4
-    8020592e:	2d650513          	addi	a0,a0,726 # 80209c00 <digits+0x880>
-    80205932:	ffffb097          	auipc	ra,0xffffb
-    80205936:	812080e7          	jalr	-2030(ra) # 80200144 <panic>
+    80205c7a:	00004517          	auipc	a0,0x4
+    80205c7e:	fbe50513          	addi	a0,a0,-66 # 80209c38 <digits+0x8b8>
+    80205c82:	ffffa097          	auipc	ra,0xffffa
+    80205c86:	4c2080e7          	jalr	1218(ra) # 80200144 <panic>
 
-000000008020593a <eread>:
+0000000080205c8a <eread>:
     if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) {
-    8020593a:	10852783          	lw	a5,264(a0)
-    8020593e:	0ed7e863          	bltu	a5,a3,80205a2e <eread+0xf4>
-{
-    80205942:	711d                	addi	sp,sp,-96
-    80205944:	ec86                	sd	ra,88(sp)
-    80205946:	e8a2                	sd	s0,80(sp)
-    80205948:	e4a6                	sd	s1,72(sp)
-    8020594a:	e0ca                	sd	s2,64(sp)
-    8020594c:	fc4e                	sd	s3,56(sp)
-    8020594e:	f852                	sd	s4,48(sp)
-    80205950:	f456                	sd	s5,40(sp)
-    80205952:	f05a                	sd	s6,32(sp)
-    80205954:	ec5e                	sd	s7,24(sp)
-    80205956:	e862                	sd	s8,16(sp)
-    80205958:	e466                	sd	s9,8(sp)
-    8020595a:	e06a                	sd	s10,0(sp)
-    8020595c:	1080                	addi	s0,sp,96
-    8020595e:	8a2a                	mv	s4,a0
-    80205960:	8bae                	mv	s7,a1
-    80205962:	8ab2                	mv	s5,a2
-    80205964:	8936                	mv	s2,a3
-    80205966:	8b3a                	mv	s6,a4
+    80205c8a:	10852783          	lw	a5,264(a0)
+    80205c8e:	0ed7e863          	bltu	a5,a3,80205d7e <eread+0xf4>
+{
+    80205c92:	711d                	addi	sp,sp,-96
+    80205c94:	ec86                	sd	ra,88(sp)
+    80205c96:	e8a2                	sd	s0,80(sp)
+    80205c98:	e4a6                	sd	s1,72(sp)
+    80205c9a:	e0ca                	sd	s2,64(sp)
+    80205c9c:	fc4e                	sd	s3,56(sp)
+    80205c9e:	f852                	sd	s4,48(sp)
+    80205ca0:	f456                	sd	s5,40(sp)
+    80205ca2:	f05a                	sd	s6,32(sp)
+    80205ca4:	ec5e                	sd	s7,24(sp)
+    80205ca6:	e862                	sd	s8,16(sp)
+    80205ca8:	e466                	sd	s9,8(sp)
+    80205caa:	e06a                	sd	s10,0(sp)
+    80205cac:	1080                	addi	s0,sp,96
+    80205cae:	8a2a                	mv	s4,a0
+    80205cb0:	8bae                	mv	s7,a1
+    80205cb2:	8ab2                	mv	s5,a2
+    80205cb4:	8936                	mv	s2,a3
+    80205cb6:	8b3a                	mv	s6,a4
     if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) {
-    80205968:	9eb9                	addw	a3,a3,a4
+    80205cb8:	9eb9                	addw	a3,a3,a4
         return 0;
-    8020596a:	4501                	li	a0,0
+    80205cba:	4501                	li	a0,0
     if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) {
-    8020596c:	0b26e163          	bltu	a3,s2,80205a0e <eread+0xd4>
-    80205970:	100a4703          	lbu	a4,256(s4)
-    80205974:	8b41                	andi	a4,a4,16
-    80205976:	ef41                	bnez	a4,80205a0e <eread+0xd4>
+    80205cbc:	0b26e163          	bltu	a3,s2,80205d5e <eread+0xd4>
+    80205cc0:	100a4703          	lbu	a4,256(s4)
+    80205cc4:	8b41                	andi	a4,a4,16
+    80205cc6:	ef41                	bnez	a4,80205d5e <eread+0xd4>
     if (off + n > entry->file_size) {
-    80205978:	00d7f463          	bgeu	a5,a3,80205980 <eread+0x46>
+    80205cc8:	00d7f463          	bgeu	a5,a3,80205cd0 <eread+0x46>
         n = entry->file_size - off;
-    8020597c:	41278b3b          	subw	s6,a5,s2
+    80205ccc:	41278b3b          	subw	s6,a5,s2
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    80205980:	10ca2703          	lw	a4,268(s4)
-    80205984:	100007b7          	lui	a5,0x10000
-    80205988:	17dd                	addi	a5,a5,-9 # ffffff7 <_entry-0x70200009>
-    8020598a:	06e7ef63          	bltu	a5,a4,80205a08 <eread+0xce>
-    8020598e:	080b0e63          	beqz	s6,80205a2a <eread+0xf0>
-    80205992:	4981                	li	s3,0
+    80205cd0:	10ca2703          	lw	a4,268(s4)
+    80205cd4:	100007b7          	lui	a5,0x10000
+    80205cd8:	17dd                	addi	a5,a5,-9 # ffffff7 <_entry-0x70200009>
+    80205cda:	06e7ef63          	bltu	a5,a4,80205d58 <eread+0xce>
+    80205cde:	080b0e63          	beqz	s6,80205d7a <eread+0xf0>
+    80205ce2:	4981                	li	s3,0
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    80205994:	00019c97          	auipc	s9,0x19
-    80205998:	a94c8c93          	addi	s9,s9,-1388 # 8021e428 <fat>
+    80205ce4:	00018c97          	auipc	s9,0x18
+    80205ce8:	744c8c93          	addi	s9,s9,1860 # 8021e428 <fat>
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    8020599c:	8c3e                	mv	s8,a5
-    8020599e:	a82d                	j	802059d8 <eread+0x9e>
-    802059a0:	00048d1b          	sext.w	s10,s1
+    80205cec:	8c3e                	mv	s8,a5
+    80205cee:	a82d                	j	80205d28 <eread+0x9e>
+    80205cf0:	00048d1b          	sext.w	s10,s1
         if (rw_clus(entry->cur_clus, 0, user_dst, dst, off % fat.byts_per_clus, m) != m) {
-    802059a4:	87ea                	mv	a5,s10
-    802059a6:	86d6                	mv	a3,s5
-    802059a8:	865e                	mv	a2,s7
-    802059aa:	4581                	li	a1,0
-    802059ac:	10ca2503          	lw	a0,268(s4)
-    802059b0:	00000097          	auipc	ra,0x0
-    802059b4:	a7e080e7          	jalr	-1410(ra) # 8020542e <rw_clus>
-    802059b8:	2501                	sext.w	a0,a0
-    802059ba:	04ad1863          	bne	s10,a0,80205a0a <eread+0xd0>
+    80205cf4:	87ea                	mv	a5,s10
+    80205cf6:	86d6                	mv	a3,s5
+    80205cf8:	865e                	mv	a2,s7
+    80205cfa:	4581                	li	a1,0
+    80205cfc:	10ca2503          	lw	a0,268(s4)
+    80205d00:	00000097          	auipc	ra,0x0
+    80205d04:	a7e080e7          	jalr	-1410(ra) # 8020577e <rw_clus>
+    80205d08:	2501                	sext.w	a0,a0
+    80205d0a:	04ad1863          	bne	s10,a0,80205d5a <eread+0xd0>
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    802059be:	013489bb          	addw	s3,s1,s3
-    802059c2:	0124893b          	addw	s2,s1,s2
-    802059c6:	1482                	slli	s1,s1,0x20
-    802059c8:	9081                	srli	s1,s1,0x20
-    802059ca:	9aa6                	add	s5,s5,s1
-    802059cc:	10ca2783          	lw	a5,268(s4)
-    802059d0:	02fc6d63          	bltu	s8,a5,80205a0a <eread+0xd0>
-    802059d4:	0369fb63          	bgeu	s3,s6,80205a0a <eread+0xd0>
+    80205d0e:	013489bb          	addw	s3,s1,s3
+    80205d12:	0124893b          	addw	s2,s1,s2
+    80205d16:	1482                	slli	s1,s1,0x20
+    80205d18:	9081                	srli	s1,s1,0x20
+    80205d1a:	9aa6                	add	s5,s5,s1
+    80205d1c:	10ca2783          	lw	a5,268(s4)
+    80205d20:	02fc6d63          	bltu	s8,a5,80205d5a <eread+0xd0>
+    80205d24:	0369fb63          	bgeu	s3,s6,80205d5a <eread+0xd0>
         reloc_clus(entry, off, 0);
-    802059d8:	4601                	li	a2,0
-    802059da:	85ca                	mv	a1,s2
-    802059dc:	8552                	mv	a0,s4
-    802059de:	00000097          	auipc	ra,0x0
-    802059e2:	948080e7          	jalr	-1720(ra) # 80205326 <reloc_clus>
+    80205d28:	4601                	li	a2,0
+    80205d2a:	85ca                	mv	a1,s2
+    80205d2c:	8552                	mv	a0,s4
+    80205d2e:	00000097          	auipc	ra,0x0
+    80205d32:	948080e7          	jalr	-1720(ra) # 80205676 <reloc_clus>
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    802059e6:	00cca683          	lw	a3,12(s9)
-    802059ea:	02d9763b          	remuw	a2,s2,a3
-    802059ee:	0006071b          	sext.w	a4,a2
+    80205d36:	00cca683          	lw	a3,12(s9)
+    80205d3a:	02d9763b          	remuw	a2,s2,a3
+    80205d3e:	0006071b          	sext.w	a4,a2
         if (n - tot < m) {
-    802059f2:	413b07bb          	subw	a5,s6,s3
+    80205d42:	413b07bb          	subw	a5,s6,s3
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    802059f6:	9e91                	subw	a3,a3,a2
-    802059f8:	84be                	mv	s1,a5
-    802059fa:	2781                	sext.w	a5,a5
-    802059fc:	0006861b          	sext.w	a2,a3
-    80205a00:	faf670e3          	bgeu	a2,a5,802059a0 <eread+0x66>
-    80205a04:	84b6                	mv	s1,a3
-    80205a06:	bf69                	j	802059a0 <eread+0x66>
+    80205d46:	9e91                	subw	a3,a3,a2
+    80205d48:	84be                	mv	s1,a5
+    80205d4a:	2781                	sext.w	a5,a5
+    80205d4c:	0006861b          	sext.w	a2,a3
+    80205d50:	faf670e3          	bgeu	a2,a5,80205cf0 <eread+0x66>
+    80205d54:	84b6                	mv	s1,a3
+    80205d56:	bf69                	j	80205cf0 <eread+0x66>
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    80205a08:	4981                	li	s3,0
+    80205d58:	4981                	li	s3,0
     return tot;
-    80205a0a:	0009851b          	sext.w	a0,s3
-}
-    80205a0e:	60e6                	ld	ra,88(sp)
-    80205a10:	6446                	ld	s0,80(sp)
-    80205a12:	64a6                	ld	s1,72(sp)
-    80205a14:	6906                	ld	s2,64(sp)
-    80205a16:	79e2                	ld	s3,56(sp)
-    80205a18:	7a42                	ld	s4,48(sp)
-    80205a1a:	7aa2                	ld	s5,40(sp)
-    80205a1c:	7b02                	ld	s6,32(sp)
-    80205a1e:	6be2                	ld	s7,24(sp)
-    80205a20:	6c42                	ld	s8,16(sp)
-    80205a22:	6ca2                	ld	s9,8(sp)
-    80205a24:	6d02                	ld	s10,0(sp)
-    80205a26:	6125                	addi	sp,sp,96
-    80205a28:	8082                	ret
+    80205d5a:	0009851b          	sext.w	a0,s3
+}
+    80205d5e:	60e6                	ld	ra,88(sp)
+    80205d60:	6446                	ld	s0,80(sp)
+    80205d62:	64a6                	ld	s1,72(sp)
+    80205d64:	6906                	ld	s2,64(sp)
+    80205d66:	79e2                	ld	s3,56(sp)
+    80205d68:	7a42                	ld	s4,48(sp)
+    80205d6a:	7aa2                	ld	s5,40(sp)
+    80205d6c:	7b02                	ld	s6,32(sp)
+    80205d6e:	6be2                	ld	s7,24(sp)
+    80205d70:	6c42                	ld	s8,16(sp)
+    80205d72:	6ca2                	ld	s9,8(sp)
+    80205d74:	6d02                	ld	s10,0(sp)
+    80205d76:	6125                	addi	sp,sp,96
+    80205d78:	8082                	ret
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    80205a2a:	89da                	mv	s3,s6
-    80205a2c:	bff9                	j	80205a0a <eread+0xd0>
+    80205d7a:	89da                	mv	s3,s6
+    80205d7c:	bff9                	j	80205d5a <eread+0xd0>
         return 0;
-    80205a2e:	4501                	li	a0,0
+    80205d7e:	4501                	li	a0,0
 }
-    80205a30:	8082                	ret
+    80205d80:	8082                	ret
 
-0000000080205a32 <ewrite>:
+0000000080205d82 <ewrite>:
     if (off > entry->file_size || off + n < off || (uint64)off + n > 0xffffffff
-    80205a32:	10852783          	lw	a5,264(a0)
-    80205a36:	0ed7e463          	bltu	a5,a3,80205b1e <ewrite+0xec>
-{
-    80205a3a:	711d                	addi	sp,sp,-96
-    80205a3c:	ec86                	sd	ra,88(sp)
-    80205a3e:	e8a2                	sd	s0,80(sp)
-    80205a40:	e4a6                	sd	s1,72(sp)
-    80205a42:	e0ca                	sd	s2,64(sp)
-    80205a44:	fc4e                	sd	s3,56(sp)
-    80205a46:	f852                	sd	s4,48(sp)
-    80205a48:	f456                	sd	s5,40(sp)
-    80205a4a:	f05a                	sd	s6,32(sp)
-    80205a4c:	ec5e                	sd	s7,24(sp)
-    80205a4e:	e862                	sd	s8,16(sp)
-    80205a50:	e466                	sd	s9,8(sp)
-    80205a52:	1080                	addi	s0,sp,96
-    80205a54:	8aaa                	mv	s5,a0
-    80205a56:	8bae                	mv	s7,a1
-    80205a58:	8a32                	mv	s4,a2
-    80205a5a:	8936                	mv	s2,a3
-    80205a5c:	8b3a                	mv	s6,a4
+    80205d82:	10852783          	lw	a5,264(a0)
+    80205d86:	0ed7e463          	bltu	a5,a3,80205e6e <ewrite+0xec>
+{
+    80205d8a:	711d                	addi	sp,sp,-96
+    80205d8c:	ec86                	sd	ra,88(sp)
+    80205d8e:	e8a2                	sd	s0,80(sp)
+    80205d90:	e4a6                	sd	s1,72(sp)
+    80205d92:	e0ca                	sd	s2,64(sp)
+    80205d94:	fc4e                	sd	s3,56(sp)
+    80205d96:	f852                	sd	s4,48(sp)
+    80205d98:	f456                	sd	s5,40(sp)
+    80205d9a:	f05a                	sd	s6,32(sp)
+    80205d9c:	ec5e                	sd	s7,24(sp)
+    80205d9e:	e862                	sd	s8,16(sp)
+    80205da0:	e466                	sd	s9,8(sp)
+    80205da2:	1080                	addi	s0,sp,96
+    80205da4:	8aaa                	mv	s5,a0
+    80205da6:	8bae                	mv	s7,a1
+    80205da8:	8a32                	mv	s4,a2
+    80205daa:	8936                	mv	s2,a3
+    80205dac:	8b3a                	mv	s6,a4
     if (off > entry->file_size || off + n < off || (uint64)off + n > 0xffffffff
-    80205a5e:	00e687bb          	addw	a5,a3,a4
-    80205a62:	0cd7e063          	bltu	a5,a3,80205b22 <ewrite+0xf0>
-    80205a66:	02069793          	slli	a5,a3,0x20
-    80205a6a:	9381                	srli	a5,a5,0x20
-    80205a6c:	1702                	slli	a4,a4,0x20
-    80205a6e:	9301                	srli	a4,a4,0x20
-    80205a70:	97ba                	add	a5,a5,a4
-    80205a72:	577d                	li	a4,-1
-    80205a74:	9301                	srli	a4,a4,0x20
-    80205a76:	0af76863          	bltu	a4,a5,80205b26 <ewrite+0xf4>
+    80205dae:	00e687bb          	addw	a5,a3,a4
+    80205db2:	0cd7e063          	bltu	a5,a3,80205e72 <ewrite+0xf0>
+    80205db6:	02069793          	slli	a5,a3,0x20
+    80205dba:	9381                	srli	a5,a5,0x20
+    80205dbc:	1702                	slli	a4,a4,0x20
+    80205dbe:	9301                	srli	a4,a4,0x20
+    80205dc0:	97ba                	add	a5,a5,a4
+    80205dc2:	577d                	li	a4,-1
+    80205dc4:	9301                	srli	a4,a4,0x20
+    80205dc6:	0af76863          	bltu	a4,a5,80205e76 <ewrite+0xf4>
         || (entry->attribute & ATTR_READ_ONLY)) {
-    80205a7a:	10054783          	lbu	a5,256(a0)
-    80205a7e:	8b85                	andi	a5,a5,1
-    80205a80:	e7cd                	bnez	a5,80205b2a <ewrite+0xf8>
+    80205dca:	10054783          	lbu	a5,256(a0)
+    80205dce:	8b85                	andi	a5,a5,1
+    80205dd0:	e7cd                	bnez	a5,80205e7a <ewrite+0xf8>
     if (entry->first_clus == 0) {   // so file_size if 0 too, which requests off == 0
-    80205a82:	10452783          	lw	a5,260(a0)
-    80205a86:	cb89                	beqz	a5,80205a98 <ewrite+0x66>
+    80205dd2:	10452783          	lw	a5,260(a0)
+    80205dd6:	cb89                	beqz	a5,80205de8 <ewrite+0x66>
     for (tot = 0; tot < n; tot += m, off += m, src += m) {
-    80205a88:	080b0963          	beqz	s6,80205b1a <ewrite+0xe8>
-    80205a8c:	4981                	li	s3,0
+    80205dd8:	080b0963          	beqz	s6,80205e6a <ewrite+0xe8>
+    80205ddc:	4981                	li	s3,0
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    80205a8e:	00019c17          	auipc	s8,0x19
-    80205a92:	99ac0c13          	addi	s8,s8,-1638 # 8021e428 <fat>
-    80205a96:	a891                	j	80205aea <ewrite+0xb8>
+    80205dde:	00018c17          	auipc	s8,0x18
+    80205de2:	64ac0c13          	addi	s8,s8,1610 # 8021e428 <fat>
+    80205de6:	a891                	j	80205e3a <ewrite+0xb8>
         entry->cur_clus = entry->first_clus = alloc_clus(entry->dev);
-    80205a98:	11454503          	lbu	a0,276(a0)
-    80205a9c:	fffff097          	auipc	ra,0xfffff
-    80205aa0:	6c8080e7          	jalr	1736(ra) # 80205164 <alloc_clus>
-    80205aa4:	2501                	sext.w	a0,a0
-    80205aa6:	10aaa223          	sw	a0,260(s5)
-    80205aaa:	10aaa623          	sw	a0,268(s5)
+    80205de8:	11454503          	lbu	a0,276(a0)
+    80205dec:	fffff097          	auipc	ra,0xfffff
+    80205df0:	6c8080e7          	jalr	1736(ra) # 802054b4 <alloc_clus>
+    80205df4:	2501                	sext.w	a0,a0
+    80205df6:	10aaa223          	sw	a0,260(s5)
+    80205dfa:	10aaa623          	sw	a0,268(s5)
         entry->clus_cnt = 0;
-    80205aae:	100aa823          	sw	zero,272(s5)
+    80205dfe:	100aa823          	sw	zero,272(s5)
         entry->dirty = 1;
-    80205ab2:	4785                	li	a5,1
-    80205ab4:	10fa8aa3          	sb	a5,277(s5)
-    80205ab8:	bfc1                	j	80205a88 <ewrite+0x56>
-    80205aba:	00048c9b          	sext.w	s9,s1
+    80205e02:	4785                	li	a5,1
+    80205e04:	10fa8aa3          	sb	a5,277(s5)
+    80205e08:	bfc1                	j	80205dd8 <ewrite+0x56>
+    80205e0a:	00048c9b          	sext.w	s9,s1
         if (rw_clus(entry->cur_clus, 1, user_src, src, off % fat.byts_per_clus, m) != m) {
-    80205abe:	87e6                	mv	a5,s9
-    80205ac0:	86d2                	mv	a3,s4
-    80205ac2:	865e                	mv	a2,s7
-    80205ac4:	4585                	li	a1,1
-    80205ac6:	10caa503          	lw	a0,268(s5)
-    80205aca:	00000097          	auipc	ra,0x0
-    80205ace:	964080e7          	jalr	-1692(ra) # 8020542e <rw_clus>
-    80205ad2:	2501                	sext.w	a0,a0
-    80205ad4:	04ac9d63          	bne	s9,a0,80205b2e <ewrite+0xfc>
+    80205e0e:	87e6                	mv	a5,s9
+    80205e10:	86d2                	mv	a3,s4
+    80205e12:	865e                	mv	a2,s7
+    80205e14:	4585                	li	a1,1
+    80205e16:	10caa503          	lw	a0,268(s5)
+    80205e1a:	00000097          	auipc	ra,0x0
+    80205e1e:	964080e7          	jalr	-1692(ra) # 8020577e <rw_clus>
+    80205e22:	2501                	sext.w	a0,a0
+    80205e24:	04ac9d63          	bne	s9,a0,80205e7e <ewrite+0xfc>
     for (tot = 0; tot < n; tot += m, off += m, src += m) {
-    80205ad8:	013489bb          	addw	s3,s1,s3
-    80205adc:	0124893b          	addw	s2,s1,s2
-    80205ae0:	1482                	slli	s1,s1,0x20
-    80205ae2:	9081                	srli	s1,s1,0x20
-    80205ae4:	9a26                	add	s4,s4,s1
-    80205ae6:	0569f463          	bgeu	s3,s6,80205b2e <ewrite+0xfc>
+    80205e28:	013489bb          	addw	s3,s1,s3
+    80205e2c:	0124893b          	addw	s2,s1,s2
+    80205e30:	1482                	slli	s1,s1,0x20
+    80205e32:	9081                	srli	s1,s1,0x20
+    80205e34:	9a26                	add	s4,s4,s1
+    80205e36:	0569f463          	bgeu	s3,s6,80205e7e <ewrite+0xfc>
         reloc_clus(entry, off, 1);
-    80205aea:	4605                	li	a2,1
-    80205aec:	85ca                	mv	a1,s2
-    80205aee:	8556                	mv	a0,s5
-    80205af0:	00000097          	auipc	ra,0x0
-    80205af4:	836080e7          	jalr	-1994(ra) # 80205326 <reloc_clus>
+    80205e3a:	4605                	li	a2,1
+    80205e3c:	85ca                	mv	a1,s2
+    80205e3e:	8556                	mv	a0,s5
+    80205e40:	00000097          	auipc	ra,0x0
+    80205e44:	836080e7          	jalr	-1994(ra) # 80205676 <reloc_clus>
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    80205af8:	00cc2683          	lw	a3,12(s8)
-    80205afc:	02d9763b          	remuw	a2,s2,a3
-    80205b00:	0006071b          	sext.w	a4,a2
+    80205e48:	00cc2683          	lw	a3,12(s8)
+    80205e4c:	02d9763b          	remuw	a2,s2,a3
+    80205e50:	0006071b          	sext.w	a4,a2
         if (n - tot < m) {
-    80205b04:	413b07bb          	subw	a5,s6,s3
+    80205e54:	413b07bb          	subw	a5,s6,s3
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    80205b08:	9e91                	subw	a3,a3,a2
-    80205b0a:	84be                	mv	s1,a5
-    80205b0c:	2781                	sext.w	a5,a5
-    80205b0e:	0006861b          	sext.w	a2,a3
-    80205b12:	faf674e3          	bgeu	a2,a5,80205aba <ewrite+0x88>
-    80205b16:	84b6                	mv	s1,a3
-    80205b18:	b74d                	j	80205aba <ewrite+0x88>
+    80205e58:	9e91                	subw	a3,a3,a2
+    80205e5a:	84be                	mv	s1,a5
+    80205e5c:	2781                	sext.w	a5,a5
+    80205e5e:	0006861b          	sext.w	a2,a3
+    80205e62:	faf674e3          	bgeu	a2,a5,80205e0a <ewrite+0x88>
+    80205e66:	84b6                	mv	s1,a3
+    80205e68:	b74d                	j	80205e0a <ewrite+0x88>
     for (tot = 0; tot < n; tot += m, off += m, src += m) {
-    80205b1a:	89da                	mv	s3,s6
-    80205b1c:	a015                	j	80205b40 <ewrite+0x10e>
+    80205e6a:	89da                	mv	s3,s6
+    80205e6c:	a015                	j	80205e90 <ewrite+0x10e>
         return -1;
-    80205b1e:	557d                	li	a0,-1
+    80205e6e:	557d                	li	a0,-1
 }
-    80205b20:	8082                	ret
+    80205e70:	8082                	ret
         return -1;
-    80205b22:	557d                	li	a0,-1
-    80205b24:	a005                	j	80205b44 <ewrite+0x112>
-    80205b26:	557d                	li	a0,-1
-    80205b28:	a831                	j	80205b44 <ewrite+0x112>
-    80205b2a:	557d                	li	a0,-1
-    80205b2c:	a821                	j	80205b44 <ewrite+0x112>
+    80205e72:	557d                	li	a0,-1
+    80205e74:	a005                	j	80205e94 <ewrite+0x112>
+    80205e76:	557d                	li	a0,-1
+    80205e78:	a831                	j	80205e94 <ewrite+0x112>
+    80205e7a:	557d                	li	a0,-1
+    80205e7c:	a821                	j	80205e94 <ewrite+0x112>
         if(off > entry->file_size) {
-    80205b2e:	108aa783          	lw	a5,264(s5)
-    80205b32:	0127f763          	bgeu	a5,s2,80205b40 <ewrite+0x10e>
+    80205e7e:	108aa783          	lw	a5,264(s5)
+    80205e82:	0127f763          	bgeu	a5,s2,80205e90 <ewrite+0x10e>
             entry->file_size = off;
-    80205b36:	112aa423          	sw	s2,264(s5)
+    80205e86:	112aa423          	sw	s2,264(s5)
             entry->dirty = 1;
-    80205b3a:	4785                	li	a5,1
-    80205b3c:	10fa8aa3          	sb	a5,277(s5)
+    80205e8a:	4785                	li	a5,1
+    80205e8c:	10fa8aa3          	sb	a5,277(s5)
     return tot;
-    80205b40:	0009851b          	sext.w	a0,s3
-}
-    80205b44:	60e6                	ld	ra,88(sp)
-    80205b46:	6446                	ld	s0,80(sp)
-    80205b48:	64a6                	ld	s1,72(sp)
-    80205b4a:	6906                	ld	s2,64(sp)
-    80205b4c:	79e2                	ld	s3,56(sp)
-    80205b4e:	7a42                	ld	s4,48(sp)
-    80205b50:	7aa2                	ld	s5,40(sp)
-    80205b52:	7b02                	ld	s6,32(sp)
-    80205b54:	6be2                	ld	s7,24(sp)
-    80205b56:	6c42                	ld	s8,16(sp)
-    80205b58:	6ca2                	ld	s9,8(sp)
-    80205b5a:	6125                	addi	sp,sp,96
-    80205b5c:	8082                	ret
-
-0000000080205b5e <formatname>:
-{
-    80205b5e:	7179                	addi	sp,sp,-48
-    80205b60:	f406                	sd	ra,40(sp)
-    80205b62:	f022                	sd	s0,32(sp)
-    80205b64:	ec26                	sd	s1,24(sp)
-    80205b66:	e84a                	sd	s2,16(sp)
-    80205b68:	e44e                	sd	s3,8(sp)
-    80205b6a:	e052                	sd	s4,0(sp)
-    80205b6c:	1800                	addi	s0,sp,48
-    80205b6e:	84aa                	mv	s1,a0
+    80205e90:	0009851b          	sext.w	a0,s3
+}
+    80205e94:	60e6                	ld	ra,88(sp)
+    80205e96:	6446                	ld	s0,80(sp)
+    80205e98:	64a6                	ld	s1,72(sp)
+    80205e9a:	6906                	ld	s2,64(sp)
+    80205e9c:	79e2                	ld	s3,56(sp)
+    80205e9e:	7a42                	ld	s4,48(sp)
+    80205ea0:	7aa2                	ld	s5,40(sp)
+    80205ea2:	7b02                	ld	s6,32(sp)
+    80205ea4:	6be2                	ld	s7,24(sp)
+    80205ea6:	6c42                	ld	s8,16(sp)
+    80205ea8:	6ca2                	ld	s9,8(sp)
+    80205eaa:	6125                	addi	sp,sp,96
+    80205eac:	8082                	ret
+
+0000000080205eae <formatname>:
+{
+    80205eae:	7179                	addi	sp,sp,-48
+    80205eb0:	f406                	sd	ra,40(sp)
+    80205eb2:	f022                	sd	s0,32(sp)
+    80205eb4:	ec26                	sd	s1,24(sp)
+    80205eb6:	e84a                	sd	s2,16(sp)
+    80205eb8:	e44e                	sd	s3,8(sp)
+    80205eba:	e052                	sd	s4,0(sp)
+    80205ebc:	1800                	addi	s0,sp,48
+    80205ebe:	84aa                	mv	s1,a0
     while (*name == ' ' || *name == '.') { name++; }
-    80205b70:	02000793          	li	a5,32
-    80205b74:	02e00713          	li	a4,46
-    80205b78:	a011                	j	80205b7c <formatname+0x1e>
-    80205b7a:	0485                	addi	s1,s1,1
-    80205b7c:	0004c583          	lbu	a1,0(s1)
-    80205b80:	fef58de3          	beq	a1,a5,80205b7a <formatname+0x1c>
-    80205b84:	fee58be3          	beq	a1,a4,80205b7a <formatname+0x1c>
+    80205ec0:	02000793          	li	a5,32
+    80205ec4:	02e00713          	li	a4,46
+    80205ec8:	a011                	j	80205ecc <formatname+0x1e>
+    80205eca:	0485                	addi	s1,s1,1
+    80205ecc:	0004c583          	lbu	a1,0(s1)
+    80205ed0:	fef58de3          	beq	a1,a5,80205eca <formatname+0x1c>
+    80205ed4:	fee58be3          	beq	a1,a4,80205eca <formatname+0x1c>
     for (p = name; *p; p++) {
-    80205b88:	c1b9                	beqz	a1,80205bce <formatname+0x70>
-    80205b8a:	8926                	mv	s2,s1
+    80205ed8:	c1b9                	beqz	a1,80205f1e <formatname+0x70>
+    80205eda:	8926                	mv	s2,s1
         if (c < 0x20 || strchr(illegal, c)) {
-    80205b8c:	49fd                	li	s3,31
-    80205b8e:	00006a17          	auipc	s4,0x6
-    80205b92:	e8aa0a13          	addi	s4,s4,-374 # 8020ba18 <illegal.1>
-    80205b96:	02b9fe63          	bgeu	s3,a1,80205bd2 <formatname+0x74>
-    80205b9a:	8552                	mv	a0,s4
-    80205b9c:	ffffb097          	auipc	ra,0xffffb
-    80205ba0:	e24080e7          	jalr	-476(ra) # 802009c0 <strchr>
-    80205ba4:	e121                	bnez	a0,80205be4 <formatname+0x86>
+    80205edc:	49fd                	li	s3,31
+    80205ede:	00006a17          	auipc	s4,0x6
+    80205ee2:	daaa0a13          	addi	s4,s4,-598 # 8020bc88 <illegal.1>
+    80205ee6:	02b9fe63          	bgeu	s3,a1,80205f22 <formatname+0x74>
+    80205eea:	8552                	mv	a0,s4
+    80205eec:	ffffb097          	auipc	ra,0xffffb
+    80205ef0:	ad4080e7          	jalr	-1324(ra) # 802009c0 <strchr>
+    80205ef4:	e121                	bnez	a0,80205f34 <formatname+0x86>
     for (p = name; *p; p++) {
-    80205ba6:	0905                	addi	s2,s2,1
-    80205ba8:	00094583          	lbu	a1,0(s2)
-    80205bac:	f5ed                	bnez	a1,80205b96 <formatname+0x38>
+    80205ef6:	0905                	addi	s2,s2,1
+    80205ef8:	00094583          	lbu	a1,0(s2)
+    80205efc:	f5ed                	bnez	a1,80205ee6 <formatname+0x38>
         if (*p != ' ') {
-    80205bae:	02000693          	li	a3,32
-    80205bb2:	874a                	mv	a4,s2
+    80205efe:	02000693          	li	a3,32
+    80205f02:	874a                	mv	a4,s2
     while (p-- > name) {
-    80205bb4:	0124fb63          	bgeu	s1,s2,80205bca <formatname+0x6c>
+    80205f04:	0124fb63          	bgeu	s1,s2,80205f1a <formatname+0x6c>
         if (*p != ' ') {
-    80205bb8:	197d                	addi	s2,s2,-1
-    80205bba:	00094783          	lbu	a5,0(s2)
-    80205bbe:	fed78ae3          	beq	a5,a3,80205bb2 <formatname+0x54>
+    80205f08:	197d                	addi	s2,s2,-1
+    80205f0a:	00094783          	lbu	a5,0(s2)
+    80205f0e:	fed78ae3          	beq	a5,a3,80205f02 <formatname+0x54>
             p[1] = '\0';
-    80205bc2:	00070023          	sb	zero,0(a4)
+    80205f12:	00070023          	sb	zero,0(a4)
             break;
-    80205bc6:	8526                	mv	a0,s1
-    80205bc8:	a031                	j	80205bd4 <formatname+0x76>
-    80205bca:	8526                	mv	a0,s1
-    80205bcc:	a021                	j	80205bd4 <formatname+0x76>
+    80205f16:	8526                	mv	a0,s1
+    80205f18:	a031                	j	80205f24 <formatname+0x76>
+    80205f1a:	8526                	mv	a0,s1
+    80205f1c:	a021                	j	80205f24 <formatname+0x76>
     for (p = name; *p; p++) {
-    80205bce:	8526                	mv	a0,s1
-    80205bd0:	a011                	j	80205bd4 <formatname+0x76>
+    80205f1e:	8526                	mv	a0,s1
+    80205f20:	a011                	j	80205f24 <formatname+0x76>
             return 0;
-    80205bd2:	4501                	li	a0,0
-}
-    80205bd4:	70a2                	ld	ra,40(sp)
-    80205bd6:	7402                	ld	s0,32(sp)
-    80205bd8:	64e2                	ld	s1,24(sp)
-    80205bda:	6942                	ld	s2,16(sp)
-    80205bdc:	69a2                	ld	s3,8(sp)
-    80205bde:	6a02                	ld	s4,0(sp)
-    80205be0:	6145                	addi	sp,sp,48
-    80205be2:	8082                	ret
+    80205f22:	4501                	li	a0,0
+}
+    80205f24:	70a2                	ld	ra,40(sp)
+    80205f26:	7402                	ld	s0,32(sp)
+    80205f28:	64e2                	ld	s1,24(sp)
+    80205f2a:	6942                	ld	s2,16(sp)
+    80205f2c:	69a2                	ld	s3,8(sp)
+    80205f2e:	6a02                	ld	s4,0(sp)
+    80205f30:	6145                	addi	sp,sp,48
+    80205f32:	8082                	ret
             return 0;
-    80205be4:	4501                	li	a0,0
-    80205be6:	b7fd                	j	80205bd4 <formatname+0x76>
+    80205f34:	4501                	li	a0,0
+    80205f36:	b7fd                	j	80205f24 <formatname+0x76>
 
-0000000080205be8 <cal_checksum>:
+0000000080205f38 <cal_checksum>:
 {
-    80205be8:	1141                	addi	sp,sp,-16
-    80205bea:	e422                	sd	s0,8(sp)
-    80205bec:	0800                	addi	s0,sp,16
-    80205bee:	87aa                	mv	a5,a0
+    80205f38:	1141                	addi	sp,sp,-16
+    80205f3a:	e422                	sd	s0,8(sp)
+    80205f3c:	0800                	addi	s0,sp,16
+    80205f3e:	87aa                	mv	a5,a0
     for (int i = CHAR_SHORT_NAME; i != 0; i--) {
-    80205bf0:	00b50613          	addi	a2,a0,11
+    80205f40:	00b50613          	addi	a2,a0,11
     uint8 sum = 0;
-    80205bf4:	4501                	li	a0,0
+    80205f44:	4501                	li	a0,0
         sum = ((sum & 1) ? 0x80 : 0) + (sum >> 1) + *shortname++;
-    80205bf6:	0075171b          	slliw	a4,a0,0x7
-    80205bfa:	0785                	addi	a5,a5,1
-    80205bfc:	0015551b          	srliw	a0,a0,0x1
-    80205c00:	fff7c683          	lbu	a3,-1(a5)
-    80205c04:	9d35                	addw	a0,a0,a3
-    80205c06:	953a                	add	a0,a0,a4
-    80205c08:	0ff57513          	zext.b	a0,a0
+    80205f46:	0075171b          	slliw	a4,a0,0x7
+    80205f4a:	0785                	addi	a5,a5,1
+    80205f4c:	0015551b          	srliw	a0,a0,0x1
+    80205f50:	fff7c683          	lbu	a3,-1(a5)
+    80205f54:	9d35                	addw	a0,a0,a3
+    80205f56:	953a                	add	a0,a0,a4
+    80205f58:	0ff57513          	zext.b	a0,a0
     for (int i = CHAR_SHORT_NAME; i != 0; i--) {
-    80205c0c:	fef615e3          	bne	a2,a5,80205bf6 <cal_checksum+0xe>
-}
-    80205c10:	6422                	ld	s0,8(sp)
-    80205c12:	0141                	addi	sp,sp,16
-    80205c14:	8082                	ret
-
-0000000080205c16 <emake>:
-{
-    80205c16:	7131                	addi	sp,sp,-192
-    80205c18:	fd06                	sd	ra,184(sp)
-    80205c1a:	f922                	sd	s0,176(sp)
-    80205c1c:	f526                	sd	s1,168(sp)
-    80205c1e:	f14a                	sd	s2,160(sp)
-    80205c20:	ed4e                	sd	s3,152(sp)
-    80205c22:	e952                	sd	s4,144(sp)
-    80205c24:	e556                	sd	s5,136(sp)
-    80205c26:	e15a                	sd	s6,128(sp)
-    80205c28:	fcde                	sd	s7,120(sp)
-    80205c2a:	f8e2                	sd	s8,112(sp)
-    80205c2c:	f4e6                	sd	s9,104(sp)
-    80205c2e:	f0ea                	sd	s10,96(sp)
-    80205c30:	ecee                	sd	s11,88(sp)
-    80205c32:	0180                	addi	s0,sp,192
+    80205f5c:	fef615e3          	bne	a2,a5,80205f46 <cal_checksum+0xe>
+}
+    80205f60:	6422                	ld	s0,8(sp)
+    80205f62:	0141                	addi	sp,sp,16
+    80205f64:	8082                	ret
+
+0000000080205f66 <emake>:
+{
+    80205f66:	7131                	addi	sp,sp,-192
+    80205f68:	fd06                	sd	ra,184(sp)
+    80205f6a:	f922                	sd	s0,176(sp)
+    80205f6c:	f526                	sd	s1,168(sp)
+    80205f6e:	f14a                	sd	s2,160(sp)
+    80205f70:	ed4e                	sd	s3,152(sp)
+    80205f72:	e952                	sd	s4,144(sp)
+    80205f74:	e556                	sd	s5,136(sp)
+    80205f76:	e15a                	sd	s6,128(sp)
+    80205f78:	fcde                	sd	s7,120(sp)
+    80205f7a:	f8e2                	sd	s8,112(sp)
+    80205f7c:	f4e6                	sd	s9,104(sp)
+    80205f7e:	f0ea                	sd	s10,96(sp)
+    80205f80:	ecee                	sd	s11,88(sp)
+    80205f82:	0180                	addi	s0,sp,192
     if (!(dp->attribute & ATTR_DIRECTORY))
-    80205c34:	10054783          	lbu	a5,256(a0)
-    80205c38:	8bc1                	andi	a5,a5,16
-    80205c3a:	c3d5                	beqz	a5,80205cde <emake+0xc8>
-    80205c3c:	8b2a                	mv	s6,a0
-    80205c3e:	8d2e                	mv	s10,a1
-    80205c40:	8cb2                	mv	s9,a2
+    80205f84:	10054783          	lbu	a5,256(a0)
+    80205f88:	8bc1                	andi	a5,a5,16
+    80205f8a:	c3d5                	beqz	a5,8020602e <emake+0xc8>
+    80205f8c:	8b2a                	mv	s6,a0
+    80205f8e:	8d2e                	mv	s10,a1
+    80205f90:	8cb2                	mv	s9,a2
     if (off % sizeof(union dentry))
-    80205c42:	01f67793          	andi	a5,a2,31
-    80205c46:	e7c5                	bnez	a5,80205cee <emake+0xd8>
+    80205f92:	01f67793          	andi	a5,a2,31
+    80205f96:	e7c5                	bnez	a5,8020603e <emake+0xd8>
     memset(&de, 0, sizeof(de));
-    80205c48:	02000613          	li	a2,32
-    80205c4c:	4581                	li	a1,0
-    80205c4e:	f7040513          	addi	a0,s0,-144
-    80205c52:	ffffb097          	auipc	ra,0xffffb
-    80205c56:	b10080e7          	jalr	-1264(ra) # 80200762 <memset>
+    80205f98:	02000613          	li	a2,32
+    80205f9c:	4581                	li	a1,0
+    80205f9e:	f7040513          	addi	a0,s0,-144
+    80205fa2:	ffffa097          	auipc	ra,0xffffa
+    80205fa6:	7c0080e7          	jalr	1984(ra) # 80200762 <memset>
     if (off <= 32) {
-    80205c5a:	02000793          	li	a5,32
-    80205c5e:	0b97ec63          	bltu	a5,s9,80205d16 <emake+0x100>
+    80205faa:	02000793          	li	a5,32
+    80205fae:	0b97ec63          	bltu	a5,s9,80206066 <emake+0x100>
         if (off == 0) {
-    80205c62:	080c9e63          	bnez	s9,80205cfe <emake+0xe8>
+    80205fb2:	080c9e63          	bnez	s9,8020604e <emake+0xe8>
             strncpy(de.sne.name, ".          ", sizeof(de.sne.name));
-    80205c66:	462d                	li	a2,11
-    80205c68:	00004597          	auipc	a1,0x4
-    80205c6c:	fe858593          	addi	a1,a1,-24 # 80209c50 <digits+0x8d0>
-    80205c70:	f7040513          	addi	a0,s0,-144
-    80205c74:	ffffb097          	auipc	ra,0xffffb
-    80205c78:	c02080e7          	jalr	-1022(ra) # 80200876 <strncpy>
+    80205fb6:	462d                	li	a2,11
+    80205fb8:	00004597          	auipc	a1,0x4
+    80205fbc:	cd058593          	addi	a1,a1,-816 # 80209c88 <digits+0x908>
+    80205fc0:	f7040513          	addi	a0,s0,-144
+    80205fc4:	ffffb097          	auipc	ra,0xffffb
+    80205fc8:	8b2080e7          	jalr	-1870(ra) # 80200876 <strncpy>
         de.sne.attr = ATTR_DIRECTORY;
-    80205c7c:	47c1                	li	a5,16
-    80205c7e:	f6f40da3          	sb	a5,-133(s0)
+    80205fcc:	47c1                	li	a5,16
+    80205fce:	f6f40da3          	sb	a5,-133(s0)
         de.sne.fst_clus_hi = (uint16)(ep->first_clus >> 16);        // first clus high 16 bits
-    80205c82:	104d2783          	lw	a5,260(s10) # fffffffffffff104 <ebss_clear+0xffffffff7fdd9104>
-    80205c86:	0107d71b          	srliw	a4,a5,0x10
-    80205c8a:	f8e41223          	sh	a4,-124(s0)
+    80205fd2:	104d2783          	lw	a5,260(s10) # fffffffffffff104 <ebss_clear+0xffffffff7fdd9104>
+    80205fd6:	0107d71b          	srliw	a4,a5,0x10
+    80205fda:	f8e41223          	sh	a4,-124(s0)
         de.sne.fst_clus_lo = (uint16)(ep->first_clus & 0xffff);       // low 16 bits
-    80205c8e:	f8f41523          	sh	a5,-118(s0)
+    80205fde:	f8f41523          	sh	a5,-118(s0)
         de.sne.file_size = 0;                                       // filesize is updated in eupdate()
-    80205c92:	f8042623          	sw	zero,-116(s0)
+    80205fe2:	f8042623          	sw	zero,-116(s0)
         off = reloc_clus(dp, off, 1);
-    80205c96:	4605                	li	a2,1
-    80205c98:	85e6                	mv	a1,s9
-    80205c9a:	855a                	mv	a0,s6
-    80205c9c:	fffff097          	auipc	ra,0xfffff
-    80205ca0:	68a080e7          	jalr	1674(ra) # 80205326 <reloc_clus>
+    80205fe6:	4605                	li	a2,1
+    80205fe8:	85e6                	mv	a1,s9
+    80205fea:	855a                	mv	a0,s6
+    80205fec:	fffff097          	auipc	ra,0xfffff
+    80205ff0:	68a080e7          	jalr	1674(ra) # 80205676 <reloc_clus>
         rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off, sizeof(de));
-    80205ca4:	02000793          	li	a5,32
-    80205ca8:	0005071b          	sext.w	a4,a0
-    80205cac:	f7040693          	addi	a3,s0,-144
-    80205cb0:	4601                	li	a2,0
-    80205cb2:	4585                	li	a1,1
-    80205cb4:	10cb2503          	lw	a0,268(s6)
-    80205cb8:	fffff097          	auipc	ra,0xfffff
-    80205cbc:	776080e7          	jalr	1910(ra) # 8020542e <rw_clus>
-}
-    80205cc0:	70ea                	ld	ra,184(sp)
-    80205cc2:	744a                	ld	s0,176(sp)
-    80205cc4:	74aa                	ld	s1,168(sp)
-    80205cc6:	790a                	ld	s2,160(sp)
-    80205cc8:	69ea                	ld	s3,152(sp)
-    80205cca:	6a4a                	ld	s4,144(sp)
-    80205ccc:	6aaa                	ld	s5,136(sp)
-    80205cce:	6b0a                	ld	s6,128(sp)
-    80205cd0:	7be6                	ld	s7,120(sp)
-    80205cd2:	7c46                	ld	s8,112(sp)
-    80205cd4:	7ca6                	ld	s9,104(sp)
-    80205cd6:	7d06                	ld	s10,96(sp)
-    80205cd8:	6de6                	ld	s11,88(sp)
-    80205cda:	6129                	addi	sp,sp,192
-    80205cdc:	8082                	ret
+    80205ff4:	02000793          	li	a5,32
+    80205ff8:	0005071b          	sext.w	a4,a0
+    80205ffc:	f7040693          	addi	a3,s0,-144
+    80206000:	4601                	li	a2,0
+    80206002:	4585                	li	a1,1
+    80206004:	10cb2503          	lw	a0,268(s6)
+    80206008:	fffff097          	auipc	ra,0xfffff
+    8020600c:	776080e7          	jalr	1910(ra) # 8020577e <rw_clus>
+}
+    80206010:	70ea                	ld	ra,184(sp)
+    80206012:	744a                	ld	s0,176(sp)
+    80206014:	74aa                	ld	s1,168(sp)
+    80206016:	790a                	ld	s2,160(sp)
+    80206018:	69ea                	ld	s3,152(sp)
+    8020601a:	6a4a                	ld	s4,144(sp)
+    8020601c:	6aaa                	ld	s5,136(sp)
+    8020601e:	6b0a                	ld	s6,128(sp)
+    80206020:	7be6                	ld	s7,120(sp)
+    80206022:	7c46                	ld	s8,112(sp)
+    80206024:	7ca6                	ld	s9,104(sp)
+    80206026:	7d06                	ld	s10,96(sp)
+    80206028:	6de6                	ld	s11,88(sp)
+    8020602a:	6129                	addi	sp,sp,192
+    8020602c:	8082                	ret
         panic("emake: not dir");
-    80205cde:	00004517          	auipc	a0,0x4
-    80205ce2:	f4a50513          	addi	a0,a0,-182 # 80209c28 <digits+0x8a8>
-    80205ce6:	ffffa097          	auipc	ra,0xffffa
-    80205cea:	45e080e7          	jalr	1118(ra) # 80200144 <panic>
+    8020602e:	00004517          	auipc	a0,0x4
+    80206032:	c3250513          	addi	a0,a0,-974 # 80209c60 <digits+0x8e0>
+    80206036:	ffffa097          	auipc	ra,0xffffa
+    8020603a:	10e080e7          	jalr	270(ra) # 80200144 <panic>
         panic("emake: not aligned");
-    80205cee:	00004517          	auipc	a0,0x4
-    80205cf2:	f4a50513          	addi	a0,a0,-182 # 80209c38 <digits+0x8b8>
-    80205cf6:	ffffa097          	auipc	ra,0xffffa
-    80205cfa:	44e080e7          	jalr	1102(ra) # 80200144 <panic>
+    8020603e:	00004517          	auipc	a0,0x4
+    80206042:	c3250513          	addi	a0,a0,-974 # 80209c70 <digits+0x8f0>
+    80206046:	ffffa097          	auipc	ra,0xffffa
+    8020604a:	0fe080e7          	jalr	254(ra) # 80200144 <panic>
             strncpy(de.sne.name, "..         ", sizeof(de.sne.name));
-    80205cfe:	462d                	li	a2,11
-    80205d00:	00004597          	auipc	a1,0x4
-    80205d04:	f6058593          	addi	a1,a1,-160 # 80209c60 <digits+0x8e0>
-    80205d08:	f7040513          	addi	a0,s0,-144
-    80205d0c:	ffffb097          	auipc	ra,0xffffb
-    80205d10:	b6a080e7          	jalr	-1174(ra) # 80200876 <strncpy>
-    80205d14:	b7a5                	j	80205c7c <emake+0x66>
+    8020604e:	462d                	li	a2,11
+    80206050:	00004597          	auipc	a1,0x4
+    80206054:	c4858593          	addi	a1,a1,-952 # 80209c98 <digits+0x918>
+    80206058:	f7040513          	addi	a0,s0,-144
+    8020605c:	ffffb097          	auipc	ra,0xffffb
+    80206060:	81a080e7          	jalr	-2022(ra) # 80200876 <strncpy>
+    80206064:	b7a5                	j	80205fcc <emake+0x66>
         int entcnt = (strlen(ep->filename) + CHAR_LONG_NAME - 1) / CHAR_LONG_NAME;   // count of l-n-entries, rounds up
-    80205d16:	896a                	mv	s2,s10
-    80205d18:	856a                	mv	a0,s10
-    80205d1a:	ffffb097          	auipc	ra,0xffffb
-    80205d1e:	bcc080e7          	jalr	-1076(ra) # 802008e6 <strlen>
-    80205d22:	f4a43423          	sd	a0,-184(s0)
-    80205d26:	00c5071b          	addiw	a4,a0,12
-    80205d2a:	47b5                	li	a5,13
-    80205d2c:	02f747bb          	divw	a5,a4,a5
-    80205d30:	f4f42c23          	sw	a5,-168(s0)
-    80205d34:	00078d9b          	sext.w	s11,a5
+    80206066:	896a                	mv	s2,s10
+    80206068:	856a                	mv	a0,s10
+    8020606a:	ffffb097          	auipc	ra,0xffffb
+    8020606e:	87c080e7          	jalr	-1924(ra) # 802008e6 <strlen>
+    80206072:	f4a43423          	sd	a0,-184(s0)
+    80206076:	00c5071b          	addiw	a4,a0,12
+    8020607a:	47b5                	li	a5,13
+    8020607c:	02f747bb          	divw	a5,a4,a5
+    80206080:	f4f42c23          	sw	a5,-168(s0)
+    80206084:	00078d9b          	sext.w	s11,a5
         memset(shortname, 0, sizeof(shortname));
-    80205d38:	4631                	li	a2,12
-    80205d3a:	4581                	li	a1,0
-    80205d3c:	f6040513          	addi	a0,s0,-160
-    80205d40:	ffffb097          	auipc	ra,0xffffb
-    80205d44:	a22080e7          	jalr	-1502(ra) # 80200762 <memset>
+    80206088:	4631                	li	a2,12
+    8020608a:	4581                	li	a1,0
+    8020608c:	f6040513          	addi	a0,s0,-160
+    80206090:	ffffa097          	auipc	ra,0xffffa
+    80206094:	6d2080e7          	jalr	1746(ra) # 80200762 <memset>
     for (int j = strlen(name) - 1; j >= 0; j--) {
-    80205d48:	856a                	mv	a0,s10
-    80205d4a:	ffffb097          	auipc	ra,0xffffb
-    80205d4e:	b9c080e7          	jalr	-1124(ra) # 802008e6 <strlen>
-    80205d52:	fff5079b          	addiw	a5,a0,-1
-    80205d56:	0207cf63          	bltz	a5,80205d94 <emake+0x17e>
-    80205d5a:	97ea                	add	a5,a5,s10
-    80205d5c:	ffed0693          	addi	a3,s10,-2
-    80205d60:	96aa                	add	a3,a3,a0
-    80205d62:	fff5071b          	addiw	a4,a0,-1
-    80205d66:	1702                	slli	a4,a4,0x20
-    80205d68:	9301                	srli	a4,a4,0x20
-    80205d6a:	8e99                	sub	a3,a3,a4
+    80206098:	856a                	mv	a0,s10
+    8020609a:	ffffb097          	auipc	ra,0xffffb
+    8020609e:	84c080e7          	jalr	-1972(ra) # 802008e6 <strlen>
+    802060a2:	fff5079b          	addiw	a5,a0,-1
+    802060a6:	0207cf63          	bltz	a5,802060e4 <emake+0x17e>
+    802060aa:	97ea                	add	a5,a5,s10
+    802060ac:	ffed0693          	addi	a3,s10,-2
+    802060b0:	96aa                	add	a3,a3,a0
+    802060b2:	fff5071b          	addiw	a4,a0,-1
+    802060b6:	1702                	slli	a4,a4,0x20
+    802060b8:	9301                	srli	a4,a4,0x20
+    802060ba:	8e99                	sub	a3,a3,a4
         if (name[j] == '.') {
-    80205d6c:	02e00613          	li	a2,46
-    80205d70:	89be                	mv	s3,a5
-    80205d72:	0007c703          	lbu	a4,0(a5)
-    80205d76:	00c70663          	beq	a4,a2,80205d82 <emake+0x16c>
+    802060bc:	02e00613          	li	a2,46
+    802060c0:	89be                	mv	s3,a5
+    802060c2:	0007c703          	lbu	a4,0(a5)
+    802060c6:	00c70663          	beq	a4,a2,802060d2 <emake+0x16c>
     for (int j = strlen(name) - 1; j >= 0; j--) {
-    80205d7a:	17fd                	addi	a5,a5,-1
-    80205d7c:	fed79ae3          	bne	a5,a3,80205d70 <emake+0x15a>
+    802060ca:	17fd                	addi	a5,a5,-1
+    802060cc:	fed79ae3          	bne	a5,a3,802060c0 <emake+0x15a>
     char c, *p = name;
-    80205d80:	89ea                	mv	s3,s10
+    802060d0:	89ea                	mv	s3,s10
         shortname[i++] = c;
-    80205d82:	4481                	li	s1,0
+    802060d2:	4481                	li	s1,0
         if (i == 8 && p) {
-    80205d84:	4aa1                	li	s5,8
+    802060d4:	4aa1                	li	s5,8
     while (i < CHAR_SHORT_NAME && (c = *name++)) {
-    80205d86:	4ba9                	li	s7,10
+    802060d6:	4ba9                	li	s7,10
         if (c >= 'a' && c <= 'z') {
-    80205d88:	4c65                	li	s8,25
+    802060d8:	4c65                	li	s8,25
                 memset(shortname + i, ' ', 8 - i);
-    80205d8a:	f6040793          	addi	a5,s0,-160
-    80205d8e:	f4f43823          	sd	a5,-176(s0)
-    80205d92:	a8d9                	j	80205e68 <emake+0x252>
+    802060da:	f6040793          	addi	a5,s0,-160
+    802060de:	f4f43823          	sd	a5,-176(s0)
+    802060e2:	a8d9                	j	802061b8 <emake+0x252>
     char c, *p = name;
-    80205d94:	89ea                	mv	s3,s10
-    80205d96:	b7f5                	j	80205d82 <emake+0x16c>
+    802060e4:	89ea                	mv	s3,s10
+    802060e6:	b7f5                	j	802060d2 <emake+0x16c>
         if (i == 8 && p) {
-    80205d98:	22098b63          	beqz	s3,80205fce <emake+0x3b8>
+    802060e8:	22098b63          	beqz	s3,8020631e <emake+0x3b8>
             if (p + 1 < name) { break; }            // no '.'
-    80205d9c:	0985                	addi	s3,s3,1
-    80205d9e:	0949fc63          	bgeu	s3,s4,80205e36 <emake+0x220>
-    80205da2:	f6040793          	addi	a5,s0,-160
-    80205da6:	97a6                	add	a5,a5,s1
+    802060ec:	0985                	addi	s3,s3,1
+    802060ee:	0949fc63          	bgeu	s3,s4,80206186 <emake+0x220>
+    802060f2:	f6040793          	addi	a5,s0,-160
+    802060f6:	97a6                	add	a5,a5,s1
         shortname[i++] = ' ';
-    80205da8:	02000693          	li	a3,32
+    802060f8:	02000693          	li	a3,32
     while (i < CHAR_SHORT_NAME) {
-    80205dac:	4729                	li	a4,10
+    802060fc:	4729                	li	a4,10
         shortname[i++] = ' ';
-    80205dae:	2485                	addiw	s1,s1,1
-    80205db0:	00d78023          	sb	a3,0(a5)
+    802060fe:	2485                	addiw	s1,s1,1
+    80206100:	00d78023          	sb	a3,0(a5)
     while (i < CHAR_SHORT_NAME) {
-    80205db4:	0785                	addi	a5,a5,1
-    80205db6:	fe975ce3          	bge	a4,s1,80205dae <emake+0x198>
+    80206104:	0785                	addi	a5,a5,1
+    80206106:	fe975ce3          	bge	a4,s1,802060fe <emake+0x198>
         de.lne.checksum = cal_checksum((uchar *)shortname);
-    80205dba:	f6040513          	addi	a0,s0,-160
-    80205dbe:	00000097          	auipc	ra,0x0
-    80205dc2:	e2a080e7          	jalr	-470(ra) # 80205be8 <cal_checksum>
-    80205dc6:	f6a40ea3          	sb	a0,-131(s0)
+    8020610a:	f6040513          	addi	a0,s0,-160
+    8020610e:	00000097          	auipc	ra,0x0
+    80206112:	e2a080e7          	jalr	-470(ra) # 80205f38 <cal_checksum>
+    80206116:	f6a40ea3          	sb	a0,-131(s0)
         de.lne.attr = ATTR_LONG_NAME;
-    80205dca:	47bd                	li	a5,15
-    80205dcc:	f6f40da3          	sb	a5,-133(s0)
+    8020611a:	47bd                	li	a5,15
+    8020611c:	f6f40da3          	sb	a5,-133(s0)
         for (int i = entcnt; i > 0; i--) {
-    80205dd0:	f4843783          	ld	a5,-184(s0)
-    80205dd4:	14f05c63          	blez	a5,80205f2c <emake+0x316>
-    80205dd8:	f5842783          	lw	a5,-168(s0)
-    80205ddc:	37fd                	addiw	a5,a5,-1
-    80205dde:	f4f42223          	sw	a5,-188(s0)
-    80205de2:	00179b9b          	slliw	s7,a5,0x1
-    80205de6:	00fb8bbb          	addw	s7,s7,a5
-    80205dea:	002b9b9b          	slliw	s7,s7,0x2
-    80205dee:	00fb8bbb          	addw	s7,s7,a5
-    80205df2:	9bea                	add	s7,s7,s10
-    80205df4:	8aee                	mv	s5,s11
-    80205df6:	8c66                	mv	s8,s9
+    80206120:	f4843783          	ld	a5,-184(s0)
+    80206124:	14f05c63          	blez	a5,8020627c <emake+0x316>
+    80206128:	f5842783          	lw	a5,-168(s0)
+    8020612c:	37fd                	addiw	a5,a5,-1
+    8020612e:	f4f42223          	sw	a5,-188(s0)
+    80206132:	00179b9b          	slliw	s7,a5,0x1
+    80206136:	00fb8bbb          	addw	s7,s7,a5
+    8020613a:	002b9b9b          	slliw	s7,s7,0x2
+    8020613e:	00fb8bbb          	addw	s7,s7,a5
+    80206142:	9bea                	add	s7,s7,s10
+    80206144:	8aee                	mv	s5,s11
+    80206146:	8c66                	mv	s8,s9
             int end = 0;
-    80205df8:	4981                	li	s3,0
+    80206148:	4981                	li	s3,0
             uint8 *w = (uint8 *)de.lne.name1;
-    80205dfa:	f7140793          	addi	a5,s0,-143
-    80205dfe:	f4f43823          	sd	a5,-176(s0)
-    80205e02:	0ff00913          	li	s2,255
+    8020614a:	f7140793          	addi	a5,s0,-143
+    8020614e:	f4f43823          	sd	a5,-176(s0)
+    80206152:	0ff00913          	li	s2,255
                     case 5:     w = (uint8 *)de.lne.name2; break;
-    80205e06:	f7e40793          	addi	a5,s0,-130
-    80205e0a:	f4f43c23          	sd	a5,-168(s0)
+    80206156:	f7e40793          	addi	a5,s0,-130
+    8020615a:	f4f43c23          	sd	a5,-168(s0)
                 switch (j) {
-    80205e0e:	44ad                	li	s1,11
-    80205e10:	f8c40a13          	addi	s4,s0,-116
-    80205e14:	a0c5                	j	80205ef4 <emake+0x2de>
+    8020615e:	44ad                	li	s1,11
+    80206160:	f8c40a13          	addi	s4,s0,-116
+    80206164:	a0c5                	j	80206244 <emake+0x2de>
             if (name > p) {                    // last '.'
-    80205e16:	0549f663          	bgeu	s3,s4,80205e62 <emake+0x24c>
+    80206166:	0549f663          	bgeu	s3,s4,802061b2 <emake+0x24c>
                 memset(shortname + i, ' ', 8 - i);
-    80205e1a:	47a1                	li	a5,8
-    80205e1c:	4097863b          	subw	a2,a5,s1
-    80205e20:	02000593          	li	a1,32
-    80205e24:	f5043783          	ld	a5,-176(s0)
-    80205e28:	00978533          	add	a0,a5,s1
-    80205e2c:	ffffb097          	auipc	ra,0xffffb
-    80205e30:	936080e7          	jalr	-1738(ra) # 80200762 <memset>
+    8020616a:	47a1                	li	a5,8
+    8020616c:	4097863b          	subw	a2,a5,s1
+    80206170:	02000593          	li	a1,32
+    80206174:	f5043783          	ld	a5,-176(s0)
+    80206178:	00978533          	add	a0,a5,s1
+    8020617c:	ffffa097          	auipc	ra,0xffffa
+    80206180:	5e6080e7          	jalr	1510(ra) # 80200762 <memset>
     while (i < CHAR_SHORT_NAME && (c = *name++)) {
-    80205e34:	89d2                	mv	s3,s4
+    80206184:	89d2                	mv	s3,s4
         shortname[i++] = c;
-    80205e36:	8a4e                	mv	s4,s3
-    80205e38:	84d6                	mv	s1,s5
-    80205e3a:	4981                	li	s3,0
-    80205e3c:	a02d                	j	80205e66 <emake+0x250>
+    80206186:	8a4e                	mv	s4,s3
+    80206188:	84d6                	mv	s1,s5
+    8020618a:	4981                	li	s3,0
+    8020618c:	a02d                	j	802061b6 <emake+0x250>
             if (strchr(illegal, c) != NULL) {
-    80205e3e:	85ca                	mv	a1,s2
-    80205e40:	00006517          	auipc	a0,0x6
-    80205e44:	be850513          	addi	a0,a0,-1048 # 8020ba28 <illegal.0>
-    80205e48:	ffffb097          	auipc	ra,0xffffb
-    80205e4c:	b78080e7          	jalr	-1160(ra) # 802009c0 <strchr>
-    80205e50:	c119                	beqz	a0,80205e56 <emake+0x240>
+    8020618e:	85ca                	mv	a1,s2
+    80206190:	00006517          	auipc	a0,0x6
+    80206194:	b0850513          	addi	a0,a0,-1272 # 8020bc98 <illegal.0>
+    80206198:	ffffb097          	auipc	ra,0xffffb
+    8020619c:	828080e7          	jalr	-2008(ra) # 802009c0 <strchr>
+    802061a0:	c119                	beqz	a0,802061a6 <emake+0x240>
                 c = '_';
-    80205e52:	05f00913          	li	s2,95
+    802061a2:	05f00913          	li	s2,95
         shortname[i++] = c;
-    80205e56:	f9048793          	addi	a5,s1,-112
-    80205e5a:	97a2                	add	a5,a5,s0
-    80205e5c:	fd278823          	sb	s2,-48(a5)
-    80205e60:	2485                	addiw	s1,s1,1
+    802061a6:	f9048793          	addi	a5,s1,-112
+    802061aa:	97a2                	add	a5,a5,s0
+    802061ac:	fd278823          	sb	s2,-48(a5)
+    802061b0:	2485                	addiw	s1,s1,1
     while (i < CHAR_SHORT_NAME && (c = *name++)) {
-    80205e62:	f49bcce3          	blt	s7,s1,80205dba <emake+0x1a4>
+    802061b2:	f49bcce3          	blt	s7,s1,8020610a <emake+0x1a4>
         shortname[i++] = c;
-    80205e66:	8952                	mv	s2,s4
+    802061b6:	8952                	mv	s2,s4
     while (i < CHAR_SHORT_NAME && (c = *name++)) {
-    80205e68:	00190a13          	addi	s4,s2,1
-    80205e6c:	00094903          	lbu	s2,0(s2)
-    80205e70:	02090663          	beqz	s2,80205e9c <emake+0x286>
+    802061b8:	00190a13          	addi	s4,s2,1
+    802061bc:	00094903          	lbu	s2,0(s2)
+    802061c0:	02090663          	beqz	s2,802061ec <emake+0x286>
         if (i == 8 && p) {
-    80205e74:	f35482e3          	beq	s1,s5,80205d98 <emake+0x182>
+    802061c4:	f35482e3          	beq	s1,s5,802060e8 <emake+0x182>
         if (c == ' ') { continue; }
-    80205e78:	02000793          	li	a5,32
-    80205e7c:	fef903e3          	beq	s2,a5,80205e62 <emake+0x24c>
+    802061c8:	02000793          	li	a5,32
+    802061cc:	fef903e3          	beq	s2,a5,802061b2 <emake+0x24c>
         if (c == '.') {
-    80205e80:	02e00793          	li	a5,46
-    80205e84:	f8f909e3          	beq	s2,a5,80205e16 <emake+0x200>
+    802061d0:	02e00793          	li	a5,46
+    802061d4:	f8f909e3          	beq	s2,a5,80206166 <emake+0x200>
         if (c >= 'a' && c <= 'z') {
-    80205e88:	f9f9079b          	addiw	a5,s2,-97
-    80205e8c:	0ff7f793          	zext.b	a5,a5
-    80205e90:	fafc67e3          	bltu	s8,a5,80205e3e <emake+0x228>
+    802061d8:	f9f9079b          	addiw	a5,s2,-97
+    802061dc:	0ff7f793          	zext.b	a5,a5
+    802061e0:	fafc67e3          	bltu	s8,a5,8020618e <emake+0x228>
             c += 'A' - 'a';
-    80205e94:	3901                	addiw	s2,s2,-32
-    80205e96:	0ff97913          	zext.b	s2,s2
-    80205e9a:	bf75                	j	80205e56 <emake+0x240>
+    802061e4:	3901                	addiw	s2,s2,-32
+    802061e6:	0ff97913          	zext.b	s2,s2
+    802061ea:	bf75                	j	802061a6 <emake+0x240>
     while (i < CHAR_SHORT_NAME) {
-    80205e9c:	47a9                	li	a5,10
-    80205e9e:	f097d2e3          	bge	a5,s1,80205da2 <emake+0x18c>
-    80205ea2:	bf21                	j	80205dba <emake+0x1a4>
+    802061ec:	47a9                	li	a5,10
+    802061ee:	f097d2e3          	bge	a5,s1,802060f2 <emake+0x18c>
+    802061f2:	bf21                	j	8020610a <emake+0x1a4>
                 de.lne.order |= LAST_LONG_ENTRY;
-    80205ea4:	0407e793          	ori	a5,a5,64
-    80205ea8:	f6f40823          	sb	a5,-144(s0)
-    80205eac:	a891                	j	80205f00 <emake+0x2ea>
+    802061f4:	0407e793          	ori	a5,a5,64
+    802061f8:	f6f40823          	sb	a5,-144(s0)
+    802061fc:	a891                	j	80206250 <emake+0x2ea>
                     if ((*w++ = *p++) == 0) {
-    80205eae:	00084603          	lbu	a2,0(a6)
+    802061fe:	00084603          	lbu	a2,0(a6)
                         end = 1;
-    80205eb2:	00163513          	seqz	a0,a2
+    80206202:	00163513          	seqz	a0,a2
                     *w++ = 0;
-    80205eb6:	00278893          	addi	a7,a5,2
+    80206206:	00278893          	addi	a7,a5,2
                     if ((*w++ = *p++) == 0) {
-    80205eba:	0805                	addi	a6,a6,1
+    8020620a:	0805                	addi	a6,a6,1
                     *w++ = 0;
-    80205ebc:	85ce                	mv	a1,s3
-    80205ebe:	a8d5                	j	80205fb2 <emake+0x39c>
+    8020620c:	85ce                	mv	a1,s3
+    8020620e:	a8d5                	j	80206302 <emake+0x39c>
             uint off2 = reloc_clus(dp, off, 1);
-    80205ec0:	4605                	li	a2,1
-    80205ec2:	85e2                	mv	a1,s8
-    80205ec4:	855a                	mv	a0,s6
-    80205ec6:	fffff097          	auipc	ra,0xfffff
-    80205eca:	460080e7          	jalr	1120(ra) # 80205326 <reloc_clus>
+    80206210:	4605                	li	a2,1
+    80206212:	85e2                	mv	a1,s8
+    80206214:	855a                	mv	a0,s6
+    80206216:	fffff097          	auipc	ra,0xfffff
+    8020621a:	460080e7          	jalr	1120(ra) # 80205676 <reloc_clus>
             rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off2, sizeof(de));
-    80205ece:	02000793          	li	a5,32
-    80205ed2:	0005071b          	sext.w	a4,a0
-    80205ed6:	f7040693          	addi	a3,s0,-144
-    80205eda:	864e                	mv	a2,s3
-    80205edc:	4585                	li	a1,1
-    80205ede:	10cb2503          	lw	a0,268(s6)
-    80205ee2:	fffff097          	auipc	ra,0xfffff
-    80205ee6:	54c080e7          	jalr	1356(ra) # 8020542e <rw_clus>
+    8020621e:	02000793          	li	a5,32
+    80206222:	0005071b          	sext.w	a4,a0
+    80206226:	f7040693          	addi	a3,s0,-144
+    8020622a:	864e                	mv	a2,s3
+    8020622c:	4585                	li	a1,1
+    8020622e:	10cb2503          	lw	a0,268(s6)
+    80206232:	fffff097          	auipc	ra,0xfffff
+    80206236:	54c080e7          	jalr	1356(ra) # 8020577e <rw_clus>
             off += sizeof(de);
-    80205eea:	020c0c1b          	addiw	s8,s8,32
+    8020623a:	020c0c1b          	addiw	s8,s8,32
         for (int i = entcnt; i > 0; i--) {
-    80205eee:	1bcd                	addi	s7,s7,-13
-    80205ef0:	03505163          	blez	s5,80205f12 <emake+0x2fc>
+    8020623e:	1bcd                	addi	s7,s7,-13
+    80206240:	03505163          	blez	s5,80206262 <emake+0x2fc>
             if ((de.lne.order = i) == entcnt) {
-    80205ef4:	0ffaf793          	zext.b	a5,s5
-    80205ef8:	fafd86e3          	beq	s11,a5,80205ea4 <emake+0x28e>
-    80205efc:	f6f40823          	sb	a5,-144(s0)
+    80206244:	0ffaf793          	zext.b	a5,s5
+    80206248:	fafd86e3          	beq	s11,a5,802061f4 <emake+0x28e>
+    8020624c:	f6f40823          	sb	a5,-144(s0)
             char *p = ep->filename + (i - 1) * CHAR_LONG_NAME;
-    80205f00:	3afd                	addiw	s5,s5,-1
-    80205f02:	885e                	mv	a6,s7
-    80205f04:	4709                	li	a4,2
+    80206250:	3afd                	addiw	s5,s5,-1
+    80206252:	885e                	mv	a6,s7
+    80206254:	4709                	li	a4,2
             int end = 0;
-    80205f06:	854e                	mv	a0,s3
+    80206256:	854e                	mv	a0,s3
             uint8 *w = (uint8 *)de.lne.name1;
-    80205f08:	f5043783          	ld	a5,-176(s0)
+    80206258:	f5043783          	ld	a5,-176(s0)
                 switch (j) {
-    80205f0c:	4315                	li	t1,5
+    8020625c:	4315                	li	t1,5
             for (int j = 1; j <= CHAR_LONG_NAME; j++) {
-    80205f0e:	4e35                	li	t3,13
-    80205f10:	a851                	j	80205fa4 <emake+0x38e>
-    80205f12:	020c8c9b          	addiw	s9,s9,32
+    8020625e:	4e35                	li	t3,13
+    80206260:	a851                	j	802062f4 <emake+0x38e>
+    80206262:	020c8c9b          	addiw	s9,s9,32
             off += sizeof(de);
-    80205f16:	4781                	li	a5,0
-    80205f18:	f4843703          	ld	a4,-184(s0)
-    80205f1c:	00e05663          	blez	a4,80205f28 <emake+0x312>
-    80205f20:	f4442783          	lw	a5,-188(s0)
-    80205f24:	0057979b          	slliw	a5,a5,0x5
-    80205f28:	01978cbb          	addw	s9,a5,s9
+    80206266:	4781                	li	a5,0
+    80206268:	f4843703          	ld	a4,-184(s0)
+    8020626c:	00e05663          	blez	a4,80206278 <emake+0x312>
+    80206270:	f4442783          	lw	a5,-188(s0)
+    80206274:	0057979b          	slliw	a5,a5,0x5
+    80206278:	01978cbb          	addw	s9,a5,s9
         memset(&de, 0, sizeof(de));
-    80205f2c:	02000613          	li	a2,32
-    80205f30:	4581                	li	a1,0
-    80205f32:	f7040493          	addi	s1,s0,-144
-    80205f36:	8526                	mv	a0,s1
-    80205f38:	ffffb097          	auipc	ra,0xffffb
-    80205f3c:	82a080e7          	jalr	-2006(ra) # 80200762 <memset>
+    8020627c:	02000613          	li	a2,32
+    80206280:	4581                	li	a1,0
+    80206282:	f7040493          	addi	s1,s0,-144
+    80206286:	8526                	mv	a0,s1
+    80206288:	ffffa097          	auipc	ra,0xffffa
+    8020628c:	4da080e7          	jalr	1242(ra) # 80200762 <memset>
         strncpy(de.sne.name, shortname, sizeof(de.sne.name));
-    80205f40:	462d                	li	a2,11
-    80205f42:	f6040593          	addi	a1,s0,-160
-    80205f46:	8526                	mv	a0,s1
-    80205f48:	ffffb097          	auipc	ra,0xffffb
-    80205f4c:	92e080e7          	jalr	-1746(ra) # 80200876 <strncpy>
+    80206290:	462d                	li	a2,11
+    80206292:	f6040593          	addi	a1,s0,-160
+    80206296:	8526                	mv	a0,s1
+    80206298:	ffffa097          	auipc	ra,0xffffa
+    8020629c:	5de080e7          	jalr	1502(ra) # 80200876 <strncpy>
         de.sne.attr = ep->attribute;
-    80205f50:	100d4783          	lbu	a5,256(s10)
-    80205f54:	f6f40da3          	sb	a5,-133(s0)
+    802062a0:	100d4783          	lbu	a5,256(s10)
+    802062a4:	f6f40da3          	sb	a5,-133(s0)
         de.sne.fst_clus_hi = (uint16)(ep->first_clus >> 16);      // first clus high 16 bits
-    80205f58:	104d2783          	lw	a5,260(s10)
-    80205f5c:	0107d71b          	srliw	a4,a5,0x10
-    80205f60:	f8e41223          	sh	a4,-124(s0)
+    802062a8:	104d2783          	lw	a5,260(s10)
+    802062ac:	0107d71b          	srliw	a4,a5,0x10
+    802062b0:	f8e41223          	sh	a4,-124(s0)
         de.sne.fst_clus_lo = (uint16)(ep->first_clus & 0xffff);     // low 16 bits
-    80205f64:	f8f41523          	sh	a5,-118(s0)
+    802062b4:	f8f41523          	sh	a5,-118(s0)
         de.sne.file_size = ep->file_size;                         // filesize is updated in eupdate()
-    80205f68:	108d2783          	lw	a5,264(s10)
-    80205f6c:	f8f42623          	sw	a5,-116(s0)
+    802062b8:	108d2783          	lw	a5,264(s10)
+    802062bc:	f8f42623          	sw	a5,-116(s0)
         off = reloc_clus(dp, off, 1);
-    80205f70:	4605                	li	a2,1
-    80205f72:	85e6                	mv	a1,s9
-    80205f74:	855a                	mv	a0,s6
-    80205f76:	fffff097          	auipc	ra,0xfffff
-    80205f7a:	3b0080e7          	jalr	944(ra) # 80205326 <reloc_clus>
+    802062c0:	4605                	li	a2,1
+    802062c2:	85e6                	mv	a1,s9
+    802062c4:	855a                	mv	a0,s6
+    802062c6:	fffff097          	auipc	ra,0xfffff
+    802062ca:	3b0080e7          	jalr	944(ra) # 80205676 <reloc_clus>
         rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off, sizeof(de));
-    80205f7e:	02000793          	li	a5,32
-    80205f82:	0005071b          	sext.w	a4,a0
-    80205f86:	86a6                	mv	a3,s1
-    80205f88:	4601                	li	a2,0
-    80205f8a:	4585                	li	a1,1
-    80205f8c:	10cb2503          	lw	a0,268(s6)
-    80205f90:	fffff097          	auipc	ra,0xfffff
-    80205f94:	49e080e7          	jalr	1182(ra) # 8020542e <rw_clus>
-}
-    80205f98:	b325                	j	80205cc0 <emake+0xaa>
+    802062ce:	02000793          	li	a5,32
+    802062d2:	0005071b          	sext.w	a4,a0
+    802062d6:	86a6                	mv	a3,s1
+    802062d8:	4601                	li	a2,0
+    802062da:	4585                	li	a1,1
+    802062dc:	10cb2503          	lw	a0,268(s6)
+    802062e0:	fffff097          	auipc	ra,0xfffff
+    802062e4:	49e080e7          	jalr	1182(ra) # 8020577e <rw_clus>
+}
+    802062e8:	b325                	j	80206010 <emake+0xaa>
                     case 5:     w = (uint8 *)de.lne.name2; break;
-    80205f9a:	f5843783          	ld	a5,-168(s0)
-    80205f9e:	a011                	j	80205fa2 <emake+0x38c>
+    802062ea:	f5843783          	ld	a5,-168(s0)
+    802062ee:	a011                	j	802062f2 <emake+0x38c>
                 switch (j) {
-    80205fa0:	87d2                	mv	a5,s4
+    802062f0:	87d2                	mv	a5,s4
             for (int j = 1; j <= CHAR_LONG_NAME; j++) {
-    80205fa2:	2705                	addiw	a4,a4,1
-    80205fa4:	fff7069b          	addiw	a3,a4,-1
+    802062f2:	2705                	addiw	a4,a4,1
+    802062f4:	fff7069b          	addiw	a3,a4,-1
                 if (end) {
-    80205fa8:	d119                	beqz	a0,80205eae <emake+0x298>
+    802062f8:	d119                	beqz	a0,802061fe <emake+0x298>
                     *w++ = 0xff;
-    80205faa:	00278893          	addi	a7,a5,2
-    80205fae:	864a                	mv	a2,s2
-    80205fb0:	85ca                	mv	a1,s2
+    802062fa:	00278893          	addi	a7,a5,2
+    802062fe:	864a                	mv	a2,s2
+    80206300:	85ca                	mv	a1,s2
                     *w++ = 0xff;            // on k210, unaligned reading is illegal
-    80205fb2:	00c78023          	sb	a2,0(a5)
+    80206302:	00c78023          	sb	a2,0(a5)
                     *w++ = 0xff;
-    80205fb6:	00b780a3          	sb	a1,1(a5)
+    80206306:	00b780a3          	sb	a1,1(a5)
                 switch (j) {
-    80205fba:	fe6680e3          	beq	a3,t1,80205f9a <emake+0x384>
-    80205fbe:	fe9681e3          	beq	a3,s1,80205fa0 <emake+0x38a>
+    8020630a:	fe6680e3          	beq	a3,t1,802062ea <emake+0x384>
+    8020630e:	fe9681e3          	beq	a3,s1,802062f0 <emake+0x38a>
             for (int j = 1; j <= CHAR_LONG_NAME; j++) {
-    80205fc2:	0007079b          	sext.w	a5,a4
-    80205fc6:	eefe4de3          	blt	t3,a5,80205ec0 <emake+0x2aa>
-    80205fca:	87c6                	mv	a5,a7
-    80205fcc:	bfd9                	j	80205fa2 <emake+0x38c>
+    80206312:	0007079b          	sext.w	a5,a4
+    80206316:	eefe4de3          	blt	t3,a5,80206210 <emake+0x2aa>
+    8020631a:	87c6                	mv	a5,a7
+    8020631c:	bfd9                	j	802062f2 <emake+0x38c>
         if (c == ' ') { continue; }
-    80205fce:	02000793          	li	a5,32
-    80205fd2:	e8f90ae3          	beq	s2,a5,80205e66 <emake+0x250>
+    8020631e:	02000793          	li	a5,32
+    80206322:	e8f90ae3          	beq	s2,a5,802061b6 <emake+0x250>
         if (c == '.') {
-    80205fd6:	02e00793          	li	a5,46
-    80205fda:	eaf917e3          	bne	s2,a5,80205e88 <emake+0x272>
-    80205fde:	bd35                	j	80205e1a <emake+0x204>
-
-0000000080205fe0 <edup>:
-{
-    80205fe0:	1101                	addi	sp,sp,-32
-    80205fe2:	ec06                	sd	ra,24(sp)
-    80205fe4:	e822                	sd	s0,16(sp)
-    80205fe6:	e426                	sd	s1,8(sp)
-    80205fe8:	1000                	addi	s0,sp,32
-    80205fea:	84aa                	mv	s1,a0
+    80206326:	02e00793          	li	a5,46
+    8020632a:	eaf917e3          	bne	s2,a5,802061d8 <emake+0x272>
+    8020632e:	bd35                	j	8020616a <emake+0x204>
+
+0000000080206330 <edup>:
+{
+    80206330:	1101                	addi	sp,sp,-32
+    80206332:	ec06                	sd	ra,24(sp)
+    80206334:	e822                	sd	s0,16(sp)
+    80206336:	e426                	sd	s1,8(sp)
+    80206338:	1000                	addi	s0,sp,32
+    8020633a:	84aa                	mv	s1,a0
     if (entry != 0) {
-    80205fec:	c515                	beqz	a0,80206018 <edup+0x38>
+    8020633c:	c515                	beqz	a0,80206368 <edup+0x38>
         acquire(&ecache.lock);
-    80205fee:	00018517          	auipc	a0,0x18
-    80205ff2:	5ca50513          	addi	a0,a0,1482 # 8021e5b8 <ecache>
-    80205ff6:	ffffa097          	auipc	ra,0xffffa
-    80205ffa:	6d0080e7          	jalr	1744(ra) # 802006c6 <acquire>
+    8020633e:	00018517          	auipc	a0,0x18
+    80206342:	27a50513          	addi	a0,a0,634 # 8021e5b8 <ecache>
+    80206346:	ffffa097          	auipc	ra,0xffffa
+    8020634a:	380080e7          	jalr	896(ra) # 802006c6 <acquire>
         entry->ref++;
-    80205ffe:	1184a783          	lw	a5,280(s1)
-    80206002:	2785                	addiw	a5,a5,1
-    80206004:	10f4ac23          	sw	a5,280(s1)
+    8020634e:	1184a783          	lw	a5,280(s1)
+    80206352:	2785                	addiw	a5,a5,1
+    80206354:	10f4ac23          	sw	a5,280(s1)
         release(&ecache.lock);
-    80206008:	00018517          	auipc	a0,0x18
-    8020600c:	5b050513          	addi	a0,a0,1456 # 8021e5b8 <ecache>
-    80206010:	ffffa097          	auipc	ra,0xffffa
-    80206014:	70a080e7          	jalr	1802(ra) # 8020071a <release>
-}
-    80206018:	8526                	mv	a0,s1
-    8020601a:	60e2                	ld	ra,24(sp)
-    8020601c:	6442                	ld	s0,16(sp)
-    8020601e:	64a2                	ld	s1,8(sp)
-    80206020:	6105                	addi	sp,sp,32
-    80206022:	8082                	ret
-
-0000000080206024 <eupdate>:
+    80206358:	00018517          	auipc	a0,0x18
+    8020635c:	26050513          	addi	a0,a0,608 # 8021e5b8 <ecache>
+    80206360:	ffffa097          	auipc	ra,0xffffa
+    80206364:	3ba080e7          	jalr	954(ra) # 8020071a <release>
+}
+    80206368:	8526                	mv	a0,s1
+    8020636a:	60e2                	ld	ra,24(sp)
+    8020636c:	6442                	ld	s0,16(sp)
+    8020636e:	64a2                	ld	s1,8(sp)
+    80206370:	6105                	addi	sp,sp,32
+    80206372:	8082                	ret
+
+0000000080206374 <eupdate>:
     if (!entry->dirty || entry->valid != 1) { return; }
-    80206024:	11554783          	lbu	a5,277(a0)
-    80206028:	c3e5                	beqz	a5,80206108 <eupdate+0xe4>
-{
-    8020602a:	711d                	addi	sp,sp,-96
-    8020602c:	ec86                	sd	ra,88(sp)
-    8020602e:	e8a2                	sd	s0,80(sp)
-    80206030:	e4a6                	sd	s1,72(sp)
-    80206032:	e0ca                	sd	s2,64(sp)
-    80206034:	fc4e                	sd	s3,56(sp)
-    80206036:	1080                	addi	s0,sp,96
-    80206038:	84aa                	mv	s1,a0
+    80206374:	11554783          	lbu	a5,277(a0)
+    80206378:	c3e5                	beqz	a5,80206458 <eupdate+0xe4>
+{
+    8020637a:	711d                	addi	sp,sp,-96
+    8020637c:	ec86                	sd	ra,88(sp)
+    8020637e:	e8a2                	sd	s0,80(sp)
+    80206380:	e4a6                	sd	s1,72(sp)
+    80206382:	e0ca                	sd	s2,64(sp)
+    80206384:	fc4e                	sd	s3,56(sp)
+    80206386:	1080                	addi	s0,sp,96
+    80206388:	84aa                	mv	s1,a0
     if (!entry->dirty || entry->valid != 1) { return; }
-    8020603a:	11651703          	lh	a4,278(a0)
-    8020603e:	4785                	li	a5,1
-    80206040:	00f70963          	beq	a4,a5,80206052 <eupdate+0x2e>
-}
-    80206044:	60e6                	ld	ra,88(sp)
-    80206046:	6446                	ld	s0,80(sp)
-    80206048:	64a6                	ld	s1,72(sp)
-    8020604a:	6906                	ld	s2,64(sp)
-    8020604c:	79e2                	ld	s3,56(sp)
-    8020604e:	6125                	addi	sp,sp,96
-    80206050:	8082                	ret
+    8020638a:	11651703          	lh	a4,278(a0)
+    8020638e:	4785                	li	a5,1
+    80206390:	00f70963          	beq	a4,a5,802063a2 <eupdate+0x2e>
+}
+    80206394:	60e6                	ld	ra,88(sp)
+    80206396:	6446                	ld	s0,80(sp)
+    80206398:	64a6                	ld	s1,72(sp)
+    8020639a:	6906                	ld	s2,64(sp)
+    8020639c:	79e2                	ld	s3,56(sp)
+    8020639e:	6125                	addi	sp,sp,96
+    802063a0:	8082                	ret
     uint entcnt = 0;
-    80206052:	fc042623          	sw	zero,-52(s0)
+    802063a2:	fc042623          	sw	zero,-52(s0)
     uint32 off = reloc_clus(entry->parent, entry->off, 0);
-    80206056:	4601                	li	a2,0
-    80206058:	11c52583          	lw	a1,284(a0)
-    8020605c:	12053503          	ld	a0,288(a0)
-    80206060:	fffff097          	auipc	ra,0xfffff
-    80206064:	2c6080e7          	jalr	710(ra) # 80205326 <reloc_clus>
+    802063a6:	4601                	li	a2,0
+    802063a8:	11c52583          	lw	a1,284(a0)
+    802063ac:	12053503          	ld	a0,288(a0)
+    802063b0:	fffff097          	auipc	ra,0xfffff
+    802063b4:	2c6080e7          	jalr	710(ra) # 80205676 <reloc_clus>
     rw_clus(entry->parent->cur_clus, 0, 0, (uint64) &entcnt, off, 1);
-    80206068:	1204b803          	ld	a6,288(s1)
-    8020606c:	4785                	li	a5,1
-    8020606e:	0005071b          	sext.w	a4,a0
-    80206072:	fcc40693          	addi	a3,s0,-52
-    80206076:	4601                	li	a2,0
-    80206078:	4581                	li	a1,0
-    8020607a:	10c82503          	lw	a0,268(a6)
-    8020607e:	fffff097          	auipc	ra,0xfffff
-    80206082:	3b0080e7          	jalr	944(ra) # 8020542e <rw_clus>
+    802063b8:	1204b803          	ld	a6,288(s1)
+    802063bc:	4785                	li	a5,1
+    802063be:	0005071b          	sext.w	a4,a0
+    802063c2:	fcc40693          	addi	a3,s0,-52
+    802063c6:	4601                	li	a2,0
+    802063c8:	4581                	li	a1,0
+    802063ca:	10c82503          	lw	a0,268(a6)
+    802063ce:	fffff097          	auipc	ra,0xfffff
+    802063d2:	3b0080e7          	jalr	944(ra) # 8020577e <rw_clus>
     entcnt &= ~LAST_LONG_ENTRY;
-    80206086:	fcc42583          	lw	a1,-52(s0)
-    8020608a:	fbf5f593          	andi	a1,a1,-65
-    8020608e:	fcb42623          	sw	a1,-52(s0)
+    802063d6:	fcc42583          	lw	a1,-52(s0)
+    802063da:	fbf5f593          	andi	a1,a1,-65
+    802063de:	fcb42623          	sw	a1,-52(s0)
     off = reloc_clus(entry->parent, entry->off + (entcnt << 5), 0);
-    80206092:	0055959b          	slliw	a1,a1,0x5
-    80206096:	11c4a783          	lw	a5,284(s1)
-    8020609a:	4601                	li	a2,0
-    8020609c:	9dbd                	addw	a1,a1,a5
-    8020609e:	1204b503          	ld	a0,288(s1)
-    802060a2:	fffff097          	auipc	ra,0xfffff
-    802060a6:	284080e7          	jalr	644(ra) # 80205326 <reloc_clus>
-    802060aa:	0005099b          	sext.w	s3,a0
+    802063e2:	0055959b          	slliw	a1,a1,0x5
+    802063e6:	11c4a783          	lw	a5,284(s1)
+    802063ea:	4601                	li	a2,0
+    802063ec:	9dbd                	addw	a1,a1,a5
+    802063ee:	1204b503          	ld	a0,288(s1)
+    802063f2:	fffff097          	auipc	ra,0xfffff
+    802063f6:	284080e7          	jalr	644(ra) # 80205676 <reloc_clus>
+    802063fa:	0005099b          	sext.w	s3,a0
     rw_clus(entry->parent->cur_clus, 0, 0, (uint64)&de, off, sizeof(de));
-    802060ae:	1204b503          	ld	a0,288(s1)
-    802060b2:	02000793          	li	a5,32
-    802060b6:	874e                	mv	a4,s3
-    802060b8:	fa840913          	addi	s2,s0,-88
-    802060bc:	86ca                	mv	a3,s2
-    802060be:	4601                	li	a2,0
-    802060c0:	4581                	li	a1,0
-    802060c2:	10c52503          	lw	a0,268(a0)
-    802060c6:	fffff097          	auipc	ra,0xfffff
-    802060ca:	368080e7          	jalr	872(ra) # 8020542e <rw_clus>
+    802063fe:	1204b503          	ld	a0,288(s1)
+    80206402:	02000793          	li	a5,32
+    80206406:	874e                	mv	a4,s3
+    80206408:	fa840913          	addi	s2,s0,-88
+    8020640c:	86ca                	mv	a3,s2
+    8020640e:	4601                	li	a2,0
+    80206410:	4581                	li	a1,0
+    80206412:	10c52503          	lw	a0,268(a0)
+    80206416:	fffff097          	auipc	ra,0xfffff
+    8020641a:	368080e7          	jalr	872(ra) # 8020577e <rw_clus>
     de.sne.fst_clus_hi = (uint16)(entry->first_clus >> 16);
-    802060ce:	1044a783          	lw	a5,260(s1)
-    802060d2:	0107d71b          	srliw	a4,a5,0x10
-    802060d6:	fae41e23          	sh	a4,-68(s0)
+    8020641e:	1044a783          	lw	a5,260(s1)
+    80206422:	0107d71b          	srliw	a4,a5,0x10
+    80206426:	fae41e23          	sh	a4,-68(s0)
     de.sne.fst_clus_lo = (uint16)(entry->first_clus & 0xffff);
-    802060da:	fcf41123          	sh	a5,-62(s0)
+    8020642a:	fcf41123          	sh	a5,-62(s0)
     de.sne.file_size = entry->file_size;
-    802060de:	1084a783          	lw	a5,264(s1)
-    802060e2:	fcf42223          	sw	a5,-60(s0)
+    8020642e:	1084a783          	lw	a5,264(s1)
+    80206432:	fcf42223          	sw	a5,-60(s0)
     rw_clus(entry->parent->cur_clus, 1, 0, (uint64)&de, off, sizeof(de));
-    802060e6:	1204b503          	ld	a0,288(s1)
-    802060ea:	02000793          	li	a5,32
-    802060ee:	874e                	mv	a4,s3
-    802060f0:	86ca                	mv	a3,s2
-    802060f2:	4601                	li	a2,0
-    802060f4:	4585                	li	a1,1
-    802060f6:	10c52503          	lw	a0,268(a0)
-    802060fa:	fffff097          	auipc	ra,0xfffff
-    802060fe:	334080e7          	jalr	820(ra) # 8020542e <rw_clus>
+    80206436:	1204b503          	ld	a0,288(s1)
+    8020643a:	02000793          	li	a5,32
+    8020643e:	874e                	mv	a4,s3
+    80206440:	86ca                	mv	a3,s2
+    80206442:	4601                	li	a2,0
+    80206444:	4585                	li	a1,1
+    80206446:	10c52503          	lw	a0,268(a0)
+    8020644a:	fffff097          	auipc	ra,0xfffff
+    8020644e:	334080e7          	jalr	820(ra) # 8020577e <rw_clus>
     entry->dirty = 0;
-    80206102:	10048aa3          	sb	zero,277(s1)
-    80206106:	bf3d                	j	80206044 <eupdate+0x20>
-    80206108:	8082                	ret
+    80206452:	10048aa3          	sb	zero,277(s1)
+    80206456:	bf3d                	j	80206394 <eupdate+0x20>
+    80206458:	8082                	ret
 
-000000008020610a <eremove>:
+000000008020645a <eremove>:
     if (entry->valid != 1) { return; }
-    8020610a:	11651703          	lh	a4,278(a0)
-    8020610e:	4785                	li	a5,1
-    80206110:	00f70363          	beq	a4,a5,80206116 <eremove+0xc>
-    80206114:	8082                	ret
-{
-    80206116:	715d                	addi	sp,sp,-80
-    80206118:	e486                	sd	ra,72(sp)
-    8020611a:	e0a2                	sd	s0,64(sp)
-    8020611c:	fc26                	sd	s1,56(sp)
-    8020611e:	f84a                	sd	s2,48(sp)
-    80206120:	f44e                	sd	s3,40(sp)
-    80206122:	f052                	sd	s4,32(sp)
-    80206124:	ec56                	sd	s5,24(sp)
-    80206126:	0880                	addi	s0,sp,80
-    80206128:	89aa                	mv	s3,a0
+    8020645a:	11651703          	lh	a4,278(a0)
+    8020645e:	4785                	li	a5,1
+    80206460:	00f70363          	beq	a4,a5,80206466 <eremove+0xc>
+    80206464:	8082                	ret
+{
+    80206466:	715d                	addi	sp,sp,-80
+    80206468:	e486                	sd	ra,72(sp)
+    8020646a:	e0a2                	sd	s0,64(sp)
+    8020646c:	fc26                	sd	s1,56(sp)
+    8020646e:	f84a                	sd	s2,48(sp)
+    80206470:	f44e                	sd	s3,40(sp)
+    80206472:	f052                	sd	s4,32(sp)
+    80206474:	ec56                	sd	s5,24(sp)
+    80206476:	0880                	addi	s0,sp,80
+    80206478:	89aa                	mv	s3,a0
     uint entcnt = 0;
-    8020612a:	fa042e23          	sw	zero,-68(s0)
+    8020647a:	fa042e23          	sw	zero,-68(s0)
     uint32 off = entry->off;
-    8020612e:	11c52a03          	lw	s4,284(a0)
+    8020647e:	11c52a03          	lw	s4,284(a0)
     uint32 off2 = reloc_clus(entry->parent, off, 0);
-    80206132:	4601                	li	a2,0
-    80206134:	85d2                	mv	a1,s4
-    80206136:	12053503          	ld	a0,288(a0)
-    8020613a:	fffff097          	auipc	ra,0xfffff
-    8020613e:	1ec080e7          	jalr	492(ra) # 80205326 <reloc_clus>
-    80206142:	0005049b          	sext.w	s1,a0
+    80206482:	4601                	li	a2,0
+    80206484:	85d2                	mv	a1,s4
+    80206486:	12053503          	ld	a0,288(a0)
+    8020648a:	fffff097          	auipc	ra,0xfffff
+    8020648e:	1ec080e7          	jalr	492(ra) # 80205676 <reloc_clus>
+    80206492:	0005049b          	sext.w	s1,a0
     rw_clus(entry->parent->cur_clus, 0, 0, (uint64) &entcnt, off2, 1);
-    80206146:	1209b503          	ld	a0,288(s3)
-    8020614a:	4785                	li	a5,1
-    8020614c:	8726                	mv	a4,s1
-    8020614e:	fbc40693          	addi	a3,s0,-68
-    80206152:	4601                	li	a2,0
-    80206154:	4581                	li	a1,0
-    80206156:	10c52503          	lw	a0,268(a0)
-    8020615a:	fffff097          	auipc	ra,0xfffff
-    8020615e:	2d4080e7          	jalr	724(ra) # 8020542e <rw_clus>
+    80206496:	1209b503          	ld	a0,288(s3)
+    8020649a:	4785                	li	a5,1
+    8020649c:	8726                	mv	a4,s1
+    8020649e:	fbc40693          	addi	a3,s0,-68
+    802064a2:	4601                	li	a2,0
+    802064a4:	4581                	li	a1,0
+    802064a6:	10c52503          	lw	a0,268(a0)
+    802064aa:	fffff097          	auipc	ra,0xfffff
+    802064ae:	2d4080e7          	jalr	724(ra) # 8020577e <rw_clus>
     entcnt &= ~LAST_LONG_ENTRY;
-    80206162:	fbc42783          	lw	a5,-68(s0)
-    80206166:	fbf7f793          	andi	a5,a5,-65
-    8020616a:	faf42e23          	sw	a5,-68(s0)
+    802064b2:	fbc42783          	lw	a5,-68(s0)
+    802064b6:	fbf7f793          	andi	a5,a5,-65
+    802064ba:	faf42e23          	sw	a5,-68(s0)
     uint8 flag = EMPTY_ENTRY;
-    8020616e:	5795                	li	a5,-27
-    80206170:	faf40da3          	sb	a5,-69(s0)
+    802064be:	5795                	li	a5,-27
+    802064c0:	faf40da3          	sb	a5,-69(s0)
     for (int i = 0; i <= entcnt; i++) {
-    80206174:	4901                	li	s2,0
+    802064c4:	4901                	li	s2,0
         rw_clus(entry->parent->cur_clus, 1, 0, (uint64) &flag, off2, 1);
-    80206176:	fbb40a93          	addi	s5,s0,-69
-    8020617a:	1209b503          	ld	a0,288(s3)
-    8020617e:	4785                	li	a5,1
-    80206180:	8726                	mv	a4,s1
-    80206182:	86d6                	mv	a3,s5
-    80206184:	4601                	li	a2,0
-    80206186:	4585                	li	a1,1
-    80206188:	10c52503          	lw	a0,268(a0)
-    8020618c:	fffff097          	auipc	ra,0xfffff
-    80206190:	2a2080e7          	jalr	674(ra) # 8020542e <rw_clus>
+    802064c6:	fbb40a93          	addi	s5,s0,-69
+    802064ca:	1209b503          	ld	a0,288(s3)
+    802064ce:	4785                	li	a5,1
+    802064d0:	8726                	mv	a4,s1
+    802064d2:	86d6                	mv	a3,s5
+    802064d4:	4601                	li	a2,0
+    802064d6:	4585                	li	a1,1
+    802064d8:	10c52503          	lw	a0,268(a0)
+    802064dc:	fffff097          	auipc	ra,0xfffff
+    802064e0:	2a2080e7          	jalr	674(ra) # 8020577e <rw_clus>
         off += 32;
-    80206194:	020a0a1b          	addiw	s4,s4,32
+    802064e4:	020a0a1b          	addiw	s4,s4,32
         off2 = reloc_clus(entry->parent, off, 0);
-    80206198:	4601                	li	a2,0
-    8020619a:	85d2                	mv	a1,s4
-    8020619c:	1209b503          	ld	a0,288(s3)
-    802061a0:	fffff097          	auipc	ra,0xfffff
-    802061a4:	186080e7          	jalr	390(ra) # 80205326 <reloc_clus>
-    802061a8:	0005049b          	sext.w	s1,a0
+    802064e8:	4601                	li	a2,0
+    802064ea:	85d2                	mv	a1,s4
+    802064ec:	1209b503          	ld	a0,288(s3)
+    802064f0:	fffff097          	auipc	ra,0xfffff
+    802064f4:	186080e7          	jalr	390(ra) # 80205676 <reloc_clus>
+    802064f8:	0005049b          	sext.w	s1,a0
     for (int i = 0; i <= entcnt; i++) {
-    802061ac:	0019079b          	addiw	a5,s2,1
-    802061b0:	0007891b          	sext.w	s2,a5
-    802061b4:	fbc42703          	lw	a4,-68(s0)
-    802061b8:	fd2771e3          	bgeu	a4,s2,8020617a <eremove+0x70>
+    802064fc:	0019079b          	addiw	a5,s2,1
+    80206500:	0007891b          	sext.w	s2,a5
+    80206504:	fbc42703          	lw	a4,-68(s0)
+    80206508:	fd2771e3          	bgeu	a4,s2,802064ca <eremove+0x70>
     entry->valid = -1;
-    802061bc:	57fd                	li	a5,-1
-    802061be:	10f99b23          	sh	a5,278(s3)
-}
-    802061c2:	60a6                	ld	ra,72(sp)
-    802061c4:	6406                	ld	s0,64(sp)
-    802061c6:	74e2                	ld	s1,56(sp)
-    802061c8:	7942                	ld	s2,48(sp)
-    802061ca:	79a2                	ld	s3,40(sp)
-    802061cc:	7a02                	ld	s4,32(sp)
-    802061ce:	6ae2                	ld	s5,24(sp)
-    802061d0:	6161                	addi	sp,sp,80
-    802061d2:	8082                	ret
-
-00000000802061d4 <etrunc>:
-{
-    802061d4:	7179                	addi	sp,sp,-48
-    802061d6:	f406                	sd	ra,40(sp)
-    802061d8:	f022                	sd	s0,32(sp)
-    802061da:	ec26                	sd	s1,24(sp)
-    802061dc:	e84a                	sd	s2,16(sp)
-    802061de:	e44e                	sd	s3,8(sp)
-    802061e0:	e052                	sd	s4,0(sp)
-    802061e2:	1800                	addi	s0,sp,48
-    802061e4:	8a2a                	mv	s4,a0
+    8020650c:	57fd                	li	a5,-1
+    8020650e:	10f99b23          	sh	a5,278(s3)
+}
+    80206512:	60a6                	ld	ra,72(sp)
+    80206514:	6406                	ld	s0,64(sp)
+    80206516:	74e2                	ld	s1,56(sp)
+    80206518:	7942                	ld	s2,48(sp)
+    8020651a:	79a2                	ld	s3,40(sp)
+    8020651c:	7a02                	ld	s4,32(sp)
+    8020651e:	6ae2                	ld	s5,24(sp)
+    80206520:	6161                	addi	sp,sp,80
+    80206522:	8082                	ret
+
+0000000080206524 <etrunc>:
+{
+    80206524:	7179                	addi	sp,sp,-48
+    80206526:	f406                	sd	ra,40(sp)
+    80206528:	f022                	sd	s0,32(sp)
+    8020652a:	ec26                	sd	s1,24(sp)
+    8020652c:	e84a                	sd	s2,16(sp)
+    8020652e:	e44e                	sd	s3,8(sp)
+    80206530:	e052                	sd	s4,0(sp)
+    80206532:	1800                	addi	s0,sp,48
+    80206534:	8a2a                	mv	s4,a0
     for (uint32 clus = entry->first_clus; clus >= 2 && clus < FAT32_EOC; ) {
-    802061e6:	10452483          	lw	s1,260(a0)
-    802061ea:	ffe4871b          	addiw	a4,s1,-2
-    802061ee:	100007b7          	lui	a5,0x10000
-    802061f2:	17d5                	addi	a5,a5,-11 # ffffff5 <_entry-0x7020000b>
-    802061f4:	02e7e663          	bltu	a5,a4,80206220 <etrunc+0x4c>
-    802061f8:	89be                	mv	s3,a5
+    80206536:	10452483          	lw	s1,260(a0)
+    8020653a:	ffe4871b          	addiw	a4,s1,-2
+    8020653e:	100007b7          	lui	a5,0x10000
+    80206542:	17d5                	addi	a5,a5,-11 # ffffff5 <_entry-0x7020000b>
+    80206544:	02e7e663          	bltu	a5,a4,80206570 <etrunc+0x4c>
+    80206548:	89be                	mv	s3,a5
         uint32 next = read_fat(clus);
-    802061fa:	0004891b          	sext.w	s2,s1
-    802061fe:	8526                	mv	a0,s1
-    80206200:	fffff097          	auipc	ra,0xfffff
-    80206204:	eee080e7          	jalr	-274(ra) # 802050ee <read_fat>
-    80206208:	0005049b          	sext.w	s1,a0
+    8020654a:	0004891b          	sext.w	s2,s1
+    8020654e:	8526                	mv	a0,s1
+    80206550:	fffff097          	auipc	ra,0xfffff
+    80206554:	eee080e7          	jalr	-274(ra) # 8020543e <read_fat>
+    80206558:	0005049b          	sext.w	s1,a0
     write_fat(cluster, 0);
-    8020620c:	4581                	li	a1,0
-    8020620e:	854a                	mv	a0,s2
-    80206210:	fffff097          	auipc	ra,0xfffff
-    80206214:	096080e7          	jalr	150(ra) # 802052a6 <write_fat>
+    8020655c:	4581                	li	a1,0
+    8020655e:	854a                	mv	a0,s2
+    80206560:	fffff097          	auipc	ra,0xfffff
+    80206564:	096080e7          	jalr	150(ra) # 802055f6 <write_fat>
     for (uint32 clus = entry->first_clus; clus >= 2 && clus < FAT32_EOC; ) {
-    80206218:	ffe4879b          	addiw	a5,s1,-2
-    8020621c:	fcf9ffe3          	bgeu	s3,a5,802061fa <etrunc+0x26>
+    80206568:	ffe4879b          	addiw	a5,s1,-2
+    8020656c:	fcf9ffe3          	bgeu	s3,a5,8020654a <etrunc+0x26>
     entry->file_size = 0;
-    80206220:	100a2423          	sw	zero,264(s4)
+    80206570:	100a2423          	sw	zero,264(s4)
     entry->first_clus = 0;
-    80206224:	100a2223          	sw	zero,260(s4)
+    80206574:	100a2223          	sw	zero,260(s4)
     entry->dirty = 1;
-    80206228:	4785                	li	a5,1
-    8020622a:	10fa0aa3          	sb	a5,277(s4)
-}
-    8020622e:	70a2                	ld	ra,40(sp)
-    80206230:	7402                	ld	s0,32(sp)
-    80206232:	64e2                	ld	s1,24(sp)
-    80206234:	6942                	ld	s2,16(sp)
-    80206236:	69a2                	ld	s3,8(sp)
-    80206238:	6a02                	ld	s4,0(sp)
-    8020623a:	6145                	addi	sp,sp,48
-    8020623c:	8082                	ret
-
-000000008020623e <elock>:
-{
-    8020623e:	1141                	addi	sp,sp,-16
-    80206240:	e406                	sd	ra,8(sp)
-    80206242:	e022                	sd	s0,0(sp)
-    80206244:	0800                	addi	s0,sp,16
+    80206578:	4785                	li	a5,1
+    8020657a:	10fa0aa3          	sb	a5,277(s4)
+}
+    8020657e:	70a2                	ld	ra,40(sp)
+    80206580:	7402                	ld	s0,32(sp)
+    80206582:	64e2                	ld	s1,24(sp)
+    80206584:	6942                	ld	s2,16(sp)
+    80206586:	69a2                	ld	s3,8(sp)
+    80206588:	6a02                	ld	s4,0(sp)
+    8020658a:	6145                	addi	sp,sp,48
+    8020658c:	8082                	ret
+
+000000008020658e <elock>:
+{
+    8020658e:	1141                	addi	sp,sp,-16
+    80206590:	e406                	sd	ra,8(sp)
+    80206592:	e022                	sd	s0,0(sp)
+    80206594:	0800                	addi	s0,sp,16
     if (entry == 0 || entry->ref < 1)
-    80206246:	cd19                	beqz	a0,80206264 <elock+0x26>
-    80206248:	11852783          	lw	a5,280(a0)
-    8020624c:	00f05c63          	blez	a5,80206264 <elock+0x26>
+    80206596:	cd19                	beqz	a0,802065b4 <elock+0x26>
+    80206598:	11852783          	lw	a5,280(a0)
+    8020659c:	00f05c63          	blez	a5,802065b4 <elock+0x26>
     acquiresleep(&entry->lock);
-    80206250:	13850513          	addi	a0,a0,312
-    80206254:	ffffd097          	auipc	ra,0xffffd
-    80206258:	3ea080e7          	jalr	1002(ra) # 8020363e <acquiresleep>
-}
-    8020625c:	60a2                	ld	ra,8(sp)
-    8020625e:	6402                	ld	s0,0(sp)
-    80206260:	0141                	addi	sp,sp,16
-    80206262:	8082                	ret
+    802065a0:	13850513          	addi	a0,a0,312
+    802065a4:	ffffd097          	auipc	ra,0xffffd
+    802065a8:	3b6080e7          	jalr	950(ra) # 8020395a <acquiresleep>
+}
+    802065ac:	60a2                	ld	ra,8(sp)
+    802065ae:	6402                	ld	s0,0(sp)
+    802065b0:	0141                	addi	sp,sp,16
+    802065b2:	8082                	ret
         panic("elock");
-    80206264:	00004517          	auipc	a0,0x4
-    80206268:	a0c50513          	addi	a0,a0,-1524 # 80209c70 <digits+0x8f0>
-    8020626c:	ffffa097          	auipc	ra,0xffffa
-    80206270:	ed8080e7          	jalr	-296(ra) # 80200144 <panic>
-
-0000000080206274 <eunlock>:
-{
-    80206274:	1101                	addi	sp,sp,-32
-    80206276:	ec06                	sd	ra,24(sp)
-    80206278:	e822                	sd	s0,16(sp)
-    8020627a:	e426                	sd	s1,8(sp)
-    8020627c:	e04a                	sd	s2,0(sp)
-    8020627e:	1000                	addi	s0,sp,32
+    802065b4:	00003517          	auipc	a0,0x3
+    802065b8:	6f450513          	addi	a0,a0,1780 # 80209ca8 <digits+0x928>
+    802065bc:	ffffa097          	auipc	ra,0xffffa
+    802065c0:	b88080e7          	jalr	-1144(ra) # 80200144 <panic>
+
+00000000802065c4 <eunlock>:
+{
+    802065c4:	1101                	addi	sp,sp,-32
+    802065c6:	ec06                	sd	ra,24(sp)
+    802065c8:	e822                	sd	s0,16(sp)
+    802065ca:	e426                	sd	s1,8(sp)
+    802065cc:	e04a                	sd	s2,0(sp)
+    802065ce:	1000                	addi	s0,sp,32
     if (entry == 0 || !holdingsleep(&entry->lock) || entry->ref < 1)
-    80206280:	c90d                	beqz	a0,802062b2 <eunlock+0x3e>
-    80206282:	84aa                	mv	s1,a0
-    80206284:	13850913          	addi	s2,a0,312
-    80206288:	854a                	mv	a0,s2
-    8020628a:	ffffd097          	auipc	ra,0xffffd
-    8020628e:	44e080e7          	jalr	1102(ra) # 802036d8 <holdingsleep>
-    80206292:	c105                	beqz	a0,802062b2 <eunlock+0x3e>
-    80206294:	1184a783          	lw	a5,280(s1)
-    80206298:	00f05d63          	blez	a5,802062b2 <eunlock+0x3e>
+    802065d0:	c90d                	beqz	a0,80206602 <eunlock+0x3e>
+    802065d2:	84aa                	mv	s1,a0
+    802065d4:	13850913          	addi	s2,a0,312
+    802065d8:	854a                	mv	a0,s2
+    802065da:	ffffd097          	auipc	ra,0xffffd
+    802065de:	41a080e7          	jalr	1050(ra) # 802039f4 <holdingsleep>
+    802065e2:	c105                	beqz	a0,80206602 <eunlock+0x3e>
+    802065e4:	1184a783          	lw	a5,280(s1)
+    802065e8:	00f05d63          	blez	a5,80206602 <eunlock+0x3e>
     releasesleep(&entry->lock);
-    8020629c:	854a                	mv	a0,s2
-    8020629e:	ffffd097          	auipc	ra,0xffffd
-    802062a2:	3f6080e7          	jalr	1014(ra) # 80203694 <releasesleep>
-}
-    802062a6:	60e2                	ld	ra,24(sp)
-    802062a8:	6442                	ld	s0,16(sp)
-    802062aa:	64a2                	ld	s1,8(sp)
-    802062ac:	6902                	ld	s2,0(sp)
-    802062ae:	6105                	addi	sp,sp,32
-    802062b0:	8082                	ret
+    802065ec:	854a                	mv	a0,s2
+    802065ee:	ffffd097          	auipc	ra,0xffffd
+    802065f2:	3c2080e7          	jalr	962(ra) # 802039b0 <releasesleep>
+}
+    802065f6:	60e2                	ld	ra,24(sp)
+    802065f8:	6442                	ld	s0,16(sp)
+    802065fa:	64a2                	ld	s1,8(sp)
+    802065fc:	6902                	ld	s2,0(sp)
+    802065fe:	6105                	addi	sp,sp,32
+    80206600:	8082                	ret
         panic("eunlock");
-    802062b2:	00004517          	auipc	a0,0x4
-    802062b6:	9c650513          	addi	a0,a0,-1594 # 80209c78 <digits+0x8f8>
-    802062ba:	ffffa097          	auipc	ra,0xffffa
-    802062be:	e8a080e7          	jalr	-374(ra) # 80200144 <panic>
-
-00000000802062c2 <eput>:
-{
-    802062c2:	1101                	addi	sp,sp,-32
-    802062c4:	ec06                	sd	ra,24(sp)
-    802062c6:	e822                	sd	s0,16(sp)
-    802062c8:	e426                	sd	s1,8(sp)
-    802062ca:	e04a                	sd	s2,0(sp)
-    802062cc:	1000                	addi	s0,sp,32
-    802062ce:	84aa                	mv	s1,a0
+    80206602:	00003517          	auipc	a0,0x3
+    80206606:	6ae50513          	addi	a0,a0,1710 # 80209cb0 <digits+0x930>
+    8020660a:	ffffa097          	auipc	ra,0xffffa
+    8020660e:	b3a080e7          	jalr	-1222(ra) # 80200144 <panic>
+
+0000000080206612 <eput>:
+{
+    80206612:	1101                	addi	sp,sp,-32
+    80206614:	ec06                	sd	ra,24(sp)
+    80206616:	e822                	sd	s0,16(sp)
+    80206618:	e426                	sd	s1,8(sp)
+    8020661a:	e04a                	sd	s2,0(sp)
+    8020661c:	1000                	addi	s0,sp,32
+    8020661e:	84aa                	mv	s1,a0
     acquire(&ecache.lock);
-    802062d0:	00018517          	auipc	a0,0x18
-    802062d4:	2e850513          	addi	a0,a0,744 # 8021e5b8 <ecache>
-    802062d8:	ffffa097          	auipc	ra,0xffffa
-    802062dc:	3ee080e7          	jalr	1006(ra) # 802006c6 <acquire>
+    80206620:	00018517          	auipc	a0,0x18
+    80206624:	f9850513          	addi	a0,a0,-104 # 8021e5b8 <ecache>
+    80206628:	ffffa097          	auipc	ra,0xffffa
+    8020662c:	09e080e7          	jalr	158(ra) # 802006c6 <acquire>
     if (entry != &root && entry->valid != 0 && entry->ref == 1) {
-    802062e0:	00018797          	auipc	a5,0x18
-    802062e4:	17078793          	addi	a5,a5,368 # 8021e450 <root>
-    802062e8:	00f48a63          	beq	s1,a5,802062fc <eput+0x3a>
-    802062ec:	11649783          	lh	a5,278(s1)
-    802062f0:	c791                	beqz	a5,802062fc <eput+0x3a>
-    802062f2:	1184a703          	lw	a4,280(s1)
-    802062f6:	4785                	li	a5,1
-    802062f8:	02f70563          	beq	a4,a5,80206322 <eput+0x60>
+    80206630:	00018797          	auipc	a5,0x18
+    80206634:	e2078793          	addi	a5,a5,-480 # 8021e450 <root>
+    80206638:	00f48a63          	beq	s1,a5,8020664c <eput+0x3a>
+    8020663c:	11649783          	lh	a5,278(s1)
+    80206640:	c791                	beqz	a5,8020664c <eput+0x3a>
+    80206642:	1184a703          	lw	a4,280(s1)
+    80206646:	4785                	li	a5,1
+    80206648:	02f70563          	beq	a4,a5,80206672 <eput+0x60>
     entry->ref--;
-    802062fc:	1184a783          	lw	a5,280(s1)
-    80206300:	37fd                	addiw	a5,a5,-1
-    80206302:	10f4ac23          	sw	a5,280(s1)
+    8020664c:	1184a783          	lw	a5,280(s1)
+    80206650:	37fd                	addiw	a5,a5,-1
+    80206652:	10f4ac23          	sw	a5,280(s1)
     release(&ecache.lock);
-    80206306:	00018517          	auipc	a0,0x18
-    8020630a:	2b250513          	addi	a0,a0,690 # 8021e5b8 <ecache>
-    8020630e:	ffffa097          	auipc	ra,0xffffa
-    80206312:	40c080e7          	jalr	1036(ra) # 8020071a <release>
-}
-    80206316:	60e2                	ld	ra,24(sp)
-    80206318:	6442                	ld	s0,16(sp)
-    8020631a:	64a2                	ld	s1,8(sp)
-    8020631c:	6902                	ld	s2,0(sp)
-    8020631e:	6105                	addi	sp,sp,32
-    80206320:	8082                	ret
+    80206656:	00018517          	auipc	a0,0x18
+    8020665a:	f6250513          	addi	a0,a0,-158 # 8021e5b8 <ecache>
+    8020665e:	ffffa097          	auipc	ra,0xffffa
+    80206662:	0bc080e7          	jalr	188(ra) # 8020071a <release>
+}
+    80206666:	60e2                	ld	ra,24(sp)
+    80206668:	6442                	ld	s0,16(sp)
+    8020666a:	64a2                	ld	s1,8(sp)
+    8020666c:	6902                	ld	s2,0(sp)
+    8020666e:	6105                	addi	sp,sp,32
+    80206670:	8082                	ret
         acquiresleep(&entry->lock);
-    80206322:	13848913          	addi	s2,s1,312
-    80206326:	854a                	mv	a0,s2
-    80206328:	ffffd097          	auipc	ra,0xffffd
-    8020632c:	316080e7          	jalr	790(ra) # 8020363e <acquiresleep>
+    80206672:	13848913          	addi	s2,s1,312
+    80206676:	854a                	mv	a0,s2
+    80206678:	ffffd097          	auipc	ra,0xffffd
+    8020667c:	2e2080e7          	jalr	738(ra) # 8020395a <acquiresleep>
         entry->next->prev = entry->prev;
-    80206330:	1284b703          	ld	a4,296(s1)
-    80206334:	1304b783          	ld	a5,304(s1)
-    80206338:	12f73823          	sd	a5,304(a4)
+    80206680:	1284b703          	ld	a4,296(s1)
+    80206684:	1304b783          	ld	a5,304(s1)
+    80206688:	12f73823          	sd	a5,304(a4)
         entry->prev->next = entry->next;
-    8020633c:	1284b703          	ld	a4,296(s1)
-    80206340:	12e7b423          	sd	a4,296(a5)
+    8020668c:	1284b703          	ld	a4,296(s1)
+    80206690:	12e7b423          	sd	a4,296(a5)
         entry->next = root.next;
-    80206344:	00018797          	auipc	a5,0x18
-    80206348:	0e478793          	addi	a5,a5,228 # 8021e428 <fat>
-    8020634c:	1507b703          	ld	a4,336(a5)
-    80206350:	12e4b423          	sd	a4,296(s1)
+    80206694:	00018797          	auipc	a5,0x18
+    80206698:	d9478793          	addi	a5,a5,-620 # 8021e428 <fat>
+    8020669c:	1507b703          	ld	a4,336(a5)
+    802066a0:	12e4b423          	sd	a4,296(s1)
         entry->prev = &root;
-    80206354:	00018697          	auipc	a3,0x18
-    80206358:	0fc68693          	addi	a3,a3,252 # 8021e450 <root>
-    8020635c:	12d4b823          	sd	a3,304(s1)
+    802066a4:	00018697          	auipc	a3,0x18
+    802066a8:	dac68693          	addi	a3,a3,-596 # 8021e450 <root>
+    802066ac:	12d4b823          	sd	a3,304(s1)
         root.next->prev = entry;
-    80206360:	12973823          	sd	s1,304(a4)
+    802066b0:	12973823          	sd	s1,304(a4)
         root.next = entry;
-    80206364:	1497b823          	sd	s1,336(a5)
+    802066b4:	1497b823          	sd	s1,336(a5)
         release(&ecache.lock);
-    80206368:	00018517          	auipc	a0,0x18
-    8020636c:	25050513          	addi	a0,a0,592 # 8021e5b8 <ecache>
-    80206370:	ffffa097          	auipc	ra,0xffffa
-    80206374:	3aa080e7          	jalr	938(ra) # 8020071a <release>
+    802066b8:	00018517          	auipc	a0,0x18
+    802066bc:	f0050513          	addi	a0,a0,-256 # 8021e5b8 <ecache>
+    802066c0:	ffffa097          	auipc	ra,0xffffa
+    802066c4:	05a080e7          	jalr	90(ra) # 8020071a <release>
         if (entry->valid == -1) {       // this means some one has called eremove()
-    80206378:	11649703          	lh	a4,278(s1)
-    8020637c:	57fd                	li	a5,-1
-    8020637e:	06f70863          	beq	a4,a5,802063ee <eput+0x12c>
+    802066c8:	11649703          	lh	a4,278(s1)
+    802066cc:	57fd                	li	a5,-1
+    802066ce:	06f70863          	beq	a4,a5,8020673e <eput+0x12c>
             elock(entry->parent);
-    80206382:	1204b503          	ld	a0,288(s1)
-    80206386:	00000097          	auipc	ra,0x0
-    8020638a:	eb8080e7          	jalr	-328(ra) # 8020623e <elock>
+    802066d2:	1204b503          	ld	a0,288(s1)
+    802066d6:	00000097          	auipc	ra,0x0
+    802066da:	eb8080e7          	jalr	-328(ra) # 8020658e <elock>
             eupdate(entry);
-    8020638e:	8526                	mv	a0,s1
-    80206390:	00000097          	auipc	ra,0x0
-    80206394:	c94080e7          	jalr	-876(ra) # 80206024 <eupdate>
+    802066de:	8526                	mv	a0,s1
+    802066e0:	00000097          	auipc	ra,0x0
+    802066e4:	c94080e7          	jalr	-876(ra) # 80206374 <eupdate>
             eunlock(entry->parent);
-    80206398:	1204b503          	ld	a0,288(s1)
-    8020639c:	00000097          	auipc	ra,0x0
-    802063a0:	ed8080e7          	jalr	-296(ra) # 80206274 <eunlock>
+    802066e8:	1204b503          	ld	a0,288(s1)
+    802066ec:	00000097          	auipc	ra,0x0
+    802066f0:	ed8080e7          	jalr	-296(ra) # 802065c4 <eunlock>
         releasesleep(&entry->lock);
-    802063a4:	854a                	mv	a0,s2
-    802063a6:	ffffd097          	auipc	ra,0xffffd
-    802063aa:	2ee080e7          	jalr	750(ra) # 80203694 <releasesleep>
+    802066f4:	854a                	mv	a0,s2
+    802066f6:	ffffd097          	auipc	ra,0xffffd
+    802066fa:	2ba080e7          	jalr	698(ra) # 802039b0 <releasesleep>
         struct dirent *eparent = entry->parent;
-    802063ae:	1204b903          	ld	s2,288(s1)
+    802066fe:	1204b903          	ld	s2,288(s1)
         acquire(&ecache.lock);
-    802063b2:	00018517          	auipc	a0,0x18
-    802063b6:	20650513          	addi	a0,a0,518 # 8021e5b8 <ecache>
-    802063ba:	ffffa097          	auipc	ra,0xffffa
-    802063be:	30c080e7          	jalr	780(ra) # 802006c6 <acquire>
+    80206702:	00018517          	auipc	a0,0x18
+    80206706:	eb650513          	addi	a0,a0,-330 # 8021e5b8 <ecache>
+    8020670a:	ffffa097          	auipc	ra,0xffffa
+    8020670e:	fbc080e7          	jalr	-68(ra) # 802006c6 <acquire>
         entry->ref--;
-    802063c2:	1184a783          	lw	a5,280(s1)
-    802063c6:	37fd                	addiw	a5,a5,-1
-    802063c8:	10f4ac23          	sw	a5,280(s1)
+    80206712:	1184a783          	lw	a5,280(s1)
+    80206716:	37fd                	addiw	a5,a5,-1
+    80206718:	10f4ac23          	sw	a5,280(s1)
         release(&ecache.lock);
-    802063cc:	00018517          	auipc	a0,0x18
-    802063d0:	1ec50513          	addi	a0,a0,492 # 8021e5b8 <ecache>
-    802063d4:	ffffa097          	auipc	ra,0xffffa
-    802063d8:	346080e7          	jalr	838(ra) # 8020071a <release>
+    8020671c:	00018517          	auipc	a0,0x18
+    80206720:	e9c50513          	addi	a0,a0,-356 # 8021e5b8 <ecache>
+    80206724:	ffffa097          	auipc	ra,0xffffa
+    80206728:	ff6080e7          	jalr	-10(ra) # 8020071a <release>
         if (entry->ref == 0) {
-    802063dc:	1184a783          	lw	a5,280(s1)
-    802063e0:	fb9d                	bnez	a5,80206316 <eput+0x54>
+    8020672c:	1184a783          	lw	a5,280(s1)
+    80206730:	fb9d                	bnez	a5,80206666 <eput+0x54>
             eput(eparent);
-    802063e2:	854a                	mv	a0,s2
-    802063e4:	00000097          	auipc	ra,0x0
-    802063e8:	ede080e7          	jalr	-290(ra) # 802062c2 <eput>
-    802063ec:	b72d                	j	80206316 <eput+0x54>
+    80206732:	854a                	mv	a0,s2
+    80206734:	00000097          	auipc	ra,0x0
+    80206738:	ede080e7          	jalr	-290(ra) # 80206612 <eput>
+    8020673c:	b72d                	j	80206666 <eput+0x54>
             etrunc(entry);
-    802063ee:	8526                	mv	a0,s1
-    802063f0:	00000097          	auipc	ra,0x0
-    802063f4:	de4080e7          	jalr	-540(ra) # 802061d4 <etrunc>
-    802063f8:	b775                	j	802063a4 <eput+0xe2>
-
-00000000802063fa <estat>:
-{
-    802063fa:	1101                	addi	sp,sp,-32
-    802063fc:	ec06                	sd	ra,24(sp)
-    802063fe:	e822                	sd	s0,16(sp)
-    80206400:	e426                	sd	s1,8(sp)
-    80206402:	e04a                	sd	s2,0(sp)
-    80206404:	1000                	addi	s0,sp,32
-    80206406:	892a                	mv	s2,a0
-    80206408:	84ae                	mv	s1,a1
+    8020673e:	8526                	mv	a0,s1
+    80206740:	00000097          	auipc	ra,0x0
+    80206744:	de4080e7          	jalr	-540(ra) # 80206524 <etrunc>
+    80206748:	b775                	j	802066f4 <eput+0xe2>
+
+000000008020674a <estat>:
+{
+    8020674a:	1101                	addi	sp,sp,-32
+    8020674c:	ec06                	sd	ra,24(sp)
+    8020674e:	e822                	sd	s0,16(sp)
+    80206750:	e426                	sd	s1,8(sp)
+    80206752:	e04a                	sd	s2,0(sp)
+    80206754:	1000                	addi	s0,sp,32
+    80206756:	892a                	mv	s2,a0
+    80206758:	84ae                	mv	s1,a1
     strncpy(st->name, de->filename, STAT_MAX_NAME);
-    8020640a:	02000613          	li	a2,32
-    8020640e:	85aa                	mv	a1,a0
-    80206410:	8526                	mv	a0,s1
-    80206412:	ffffa097          	auipc	ra,0xffffa
-    80206416:	464080e7          	jalr	1124(ra) # 80200876 <strncpy>
+    8020675a:	02000613          	li	a2,32
+    8020675e:	85aa                	mv	a1,a0
+    80206760:	8526                	mv	a0,s1
+    80206762:	ffffa097          	auipc	ra,0xffffa
+    80206766:	114080e7          	jalr	276(ra) # 80200876 <strncpy>
     st->type = (de->attribute & ATTR_DIRECTORY) ? T_DIR : T_FILE;
-    8020641a:	10094783          	lbu	a5,256(s2)
-    8020641e:	8bc1                	andi	a5,a5,16
-    80206420:	0017b793          	seqz	a5,a5
-    80206424:	0785                	addi	a5,a5,1
-    80206426:	02f49423          	sh	a5,40(s1)
+    8020676a:	10094783          	lbu	a5,256(s2)
+    8020676e:	8bc1                	andi	a5,a5,16
+    80206770:	0017b793          	seqz	a5,a5
+    80206774:	0785                	addi	a5,a5,1
+    80206776:	02f49423          	sh	a5,40(s1)
     st->dev = de->dev;
-    8020642a:	11494783          	lbu	a5,276(s2)
-    8020642e:	d0dc                	sw	a5,36(s1)
+    8020677a:	11494783          	lbu	a5,276(s2)
+    8020677e:	d0dc                	sw	a5,36(s1)
     st->size = de->file_size;
-    80206430:	10896783          	lwu	a5,264(s2)
-    80206434:	f89c                	sd	a5,48(s1)
+    80206780:	10896783          	lwu	a5,264(s2)
+    80206784:	f89c                	sd	a5,48(s1)
 }
-    80206436:	60e2                	ld	ra,24(sp)
-    80206438:	6442                	ld	s0,16(sp)
-    8020643a:	64a2                	ld	s1,8(sp)
-    8020643c:	6902                	ld	s2,0(sp)
-    8020643e:	6105                	addi	sp,sp,32
-    80206440:	8082                	ret
+    80206786:	60e2                	ld	ra,24(sp)
+    80206788:	6442                	ld	s0,16(sp)
+    8020678a:	64a2                	ld	s1,8(sp)
+    8020678c:	6902                	ld	s2,0(sp)
+    8020678e:	6105                	addi	sp,sp,32
+    80206790:	8082                	ret
 
-0000000080206442 <enext>:
+0000000080206792 <enext>:
  * @return  -1      meet the end of dir
  *          0       find empty slots
  *          1       find a file with all its entries
  */
 int enext(struct dirent *dp, struct dirent *ep, uint off, int *count)
 {
-    80206442:	7119                	addi	sp,sp,-128
-    80206444:	fc86                	sd	ra,120(sp)
-    80206446:	f8a2                	sd	s0,112(sp)
-    80206448:	f4a6                	sd	s1,104(sp)
-    8020644a:	f0ca                	sd	s2,96(sp)
-    8020644c:	ecce                	sd	s3,88(sp)
-    8020644e:	e8d2                	sd	s4,80(sp)
-    80206450:	e4d6                	sd	s5,72(sp)
-    80206452:	e0da                	sd	s6,64(sp)
-    80206454:	fc5e                	sd	s7,56(sp)
-    80206456:	f862                	sd	s8,48(sp)
-    80206458:	f466                	sd	s9,40(sp)
-    8020645a:	0100                	addi	s0,sp,128
+    80206792:	7119                	addi	sp,sp,-128
+    80206794:	fc86                	sd	ra,120(sp)
+    80206796:	f8a2                	sd	s0,112(sp)
+    80206798:	f4a6                	sd	s1,104(sp)
+    8020679a:	f0ca                	sd	s2,96(sp)
+    8020679c:	ecce                	sd	s3,88(sp)
+    8020679e:	e8d2                	sd	s4,80(sp)
+    802067a0:	e4d6                	sd	s5,72(sp)
+    802067a2:	e0da                	sd	s6,64(sp)
+    802067a4:	fc5e                	sd	s7,56(sp)
+    802067a6:	f862                	sd	s8,48(sp)
+    802067a8:	f466                	sd	s9,40(sp)
+    802067aa:	0100                	addi	s0,sp,128
     if (!(dp->attribute & ATTR_DIRECTORY))
-    8020645c:	10054783          	lbu	a5,256(a0)
-    80206460:	8bc1                	andi	a5,a5,16
-    80206462:	cf95                	beqz	a5,8020649e <enext+0x5c>
-    80206464:	892a                	mv	s2,a0
-    80206466:	89ae                	mv	s3,a1
-    80206468:	84b2                	mv	s1,a2
-    8020646a:	8ab6                	mv	s5,a3
+    802067ac:	10054783          	lbu	a5,256(a0)
+    802067b0:	8bc1                	andi	a5,a5,16
+    802067b2:	cf95                	beqz	a5,802067ee <enext+0x5c>
+    802067b4:	892a                	mv	s2,a0
+    802067b6:	89ae                	mv	s3,a1
+    802067b8:	84b2                	mv	s1,a2
+    802067ba:	8ab6                	mv	s5,a3
         panic("enext not dir");
     if (ep->valid)
-    8020646c:	11659783          	lh	a5,278(a1)
-    80206470:	ef9d                	bnez	a5,802064ae <enext+0x6c>
+    802067bc:	11659783          	lh	a5,278(a1)
+    802067c0:	ef9d                	bnez	a5,802067fe <enext+0x6c>
         panic("enext ep valid");
     if (off % 32)
-    80206472:	01f67793          	andi	a5,a2,31
-    80206476:	e7a1                	bnez	a5,802064be <enext+0x7c>
+    802067c2:	01f67793          	andi	a5,a2,31
+    802067c6:	e7a1                	bnez	a5,8020680e <enext+0x7c>
         panic("enext not align");
     if (dp->valid != 1) { return -1; }
-    80206478:	11651703          	lh	a4,278(a0)
-    8020647c:	4785                	li	a5,1
-    8020647e:	557d                	li	a0,-1
-    80206480:	04f70763          	beq	a4,a5,802064ce <enext+0x8c>
+    802067c8:	11651703          	lh	a4,278(a0)
+    802067cc:	4785                	li	a5,1
+    802067ce:	557d                	li	a0,-1
+    802067d0:	04f70763          	beq	a4,a5,8020681e <enext+0x8c>
             read_entry_info(ep, &de);
             return 1;
         }
     }
     return -1;
 }
-    80206484:	70e6                	ld	ra,120(sp)
-    80206486:	7446                	ld	s0,112(sp)
-    80206488:	74a6                	ld	s1,104(sp)
-    8020648a:	7906                	ld	s2,96(sp)
-    8020648c:	69e6                	ld	s3,88(sp)
-    8020648e:	6a46                	ld	s4,80(sp)
-    80206490:	6aa6                	ld	s5,72(sp)
-    80206492:	6b06                	ld	s6,64(sp)
-    80206494:	7be2                	ld	s7,56(sp)
-    80206496:	7c42                	ld	s8,48(sp)
-    80206498:	7ca2                	ld	s9,40(sp)
-    8020649a:	6109                	addi	sp,sp,128
-    8020649c:	8082                	ret
+    802067d4:	70e6                	ld	ra,120(sp)
+    802067d6:	7446                	ld	s0,112(sp)
+    802067d8:	74a6                	ld	s1,104(sp)
+    802067da:	7906                	ld	s2,96(sp)
+    802067dc:	69e6                	ld	s3,88(sp)
+    802067de:	6a46                	ld	s4,80(sp)
+    802067e0:	6aa6                	ld	s5,72(sp)
+    802067e2:	6b06                	ld	s6,64(sp)
+    802067e4:	7be2                	ld	s7,56(sp)
+    802067e6:	7c42                	ld	s8,48(sp)
+    802067e8:	7ca2                	ld	s9,40(sp)
+    802067ea:	6109                	addi	sp,sp,128
+    802067ec:	8082                	ret
         panic("enext not dir");
-    8020649e:	00003517          	auipc	a0,0x3
-    802064a2:	7e250513          	addi	a0,a0,2018 # 80209c80 <digits+0x900>
-    802064a6:	ffffa097          	auipc	ra,0xffffa
-    802064aa:	c9e080e7          	jalr	-866(ra) # 80200144 <panic>
+    802067ee:	00003517          	auipc	a0,0x3
+    802067f2:	4ca50513          	addi	a0,a0,1226 # 80209cb8 <digits+0x938>
+    802067f6:	ffffa097          	auipc	ra,0xffffa
+    802067fa:	94e080e7          	jalr	-1714(ra) # 80200144 <panic>
         panic("enext ep valid");
-    802064ae:	00003517          	auipc	a0,0x3
-    802064b2:	7e250513          	addi	a0,a0,2018 # 80209c90 <digits+0x910>
-    802064b6:	ffffa097          	auipc	ra,0xffffa
-    802064ba:	c8e080e7          	jalr	-882(ra) # 80200144 <panic>
+    802067fe:	00003517          	auipc	a0,0x3
+    80206802:	4ca50513          	addi	a0,a0,1226 # 80209cc8 <digits+0x948>
+    80206806:	ffffa097          	auipc	ra,0xffffa
+    8020680a:	93e080e7          	jalr	-1730(ra) # 80200144 <panic>
         panic("enext not align");
-    802064be:	00003517          	auipc	a0,0x3
-    802064c2:	7e250513          	addi	a0,a0,2018 # 80209ca0 <digits+0x920>
-    802064c6:	ffffa097          	auipc	ra,0xffffa
-    802064ca:	c7e080e7          	jalr	-898(ra) # 80200144 <panic>
+    8020680e:	00003517          	auipc	a0,0x3
+    80206812:	4ca50513          	addi	a0,a0,1226 # 80209cd8 <digits+0x958>
+    80206816:	ffffa097          	auipc	ra,0xffffa
+    8020681a:	92e080e7          	jalr	-1746(ra) # 80200144 <panic>
     memset(ep->filename, 0, FAT32_MAX_FILENAME + 1);
-    802064ce:	10000613          	li	a2,256
-    802064d2:	4581                	li	a1,0
-    802064d4:	854e                	mv	a0,s3
-    802064d6:	ffffa097          	auipc	ra,0xffffa
-    802064da:	28c080e7          	jalr	652(ra) # 80200762 <memset>
+    8020681e:	10000613          	li	a2,256
+    80206822:	4581                	li	a1,0
+    80206824:	854e                	mv	a0,s3
+    80206826:	ffffa097          	auipc	ra,0xffffa
+    8020682a:	f3c080e7          	jalr	-196(ra) # 80200762 <memset>
     int cnt = 0;
-    802064de:	4b01                	li	s6,0
+    8020682e:	4b01                	li	s6,0
     for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) {
-    802064e0:	5bfd                	li	s7,-1
+    80206830:	5bfd                	li	s7,-1
         if (rw_clus(dp->cur_clus, 0, 0, (uint64)&de, off2, 32) != 32 || de.lne.order == END_OF_ENTRY) {
-    802064e2:	f8040a13          	addi	s4,s0,-128
+    80206832:	f8040a13          	addi	s4,s0,-128
         if (de.lne.order == EMPTY_ENTRY) {
-    802064e6:	0e500c13          	li	s8,229
+    80206836:	0e500c13          	li	s8,229
         if (de.lne.attr == ATTR_LONG_NAME) {
-    802064ea:	4cbd                	li	s9,15
+    8020683a:	4cbd                	li	s9,15
     for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) {
-    802064ec:	a03d                	j	8020651a <enext+0xd8>
+    8020683c:	a03d                	j	8020686a <enext+0xd8>
             cnt++;
-    802064ee:	2b05                	addiw	s6,s6,1
+    8020683e:	2b05                	addiw	s6,s6,1
             continue;
-    802064f0:	a01d                	j	80206516 <enext+0xd4>
+    80206840:	a01d                	j	80206866 <enext+0xd4>
             *count = cnt;
-    802064f2:	016aa023          	sw	s6,0(s5)
+    80206842:	016aa023          	sw	s6,0(s5)
             return 0;
-    802064f6:	4501                	li	a0,0
-    802064f8:	b771                	j	80206484 <enext+0x42>
+    80206846:	4501                	li	a0,0
+    80206848:	b771                	j	802067d4 <enext+0x42>
             read_entry_name(ep->filename + (lcnt - 1) * CHAR_LONG_NAME, &de);
-    802064fa:	fff7079b          	addiw	a5,a4,-1
-    802064fe:	0017951b          	slliw	a0,a5,0x1
-    80206502:	9d3d                	addw	a0,a0,a5
-    80206504:	0025151b          	slliw	a0,a0,0x2
-    80206508:	9d3d                	addw	a0,a0,a5
-    8020650a:	85d2                	mv	a1,s4
-    8020650c:	954e                	add	a0,a0,s3
-    8020650e:	fffff097          	auipc	ra,0xfffff
-    80206512:	17a080e7          	jalr	378(ra) # 80205688 <read_entry_name>
+    8020684a:	fff7079b          	addiw	a5,a4,-1
+    8020684e:	0017951b          	slliw	a0,a5,0x1
+    80206852:	9d3d                	addw	a0,a0,a5
+    80206854:	0025151b          	slliw	a0,a0,0x2
+    80206858:	9d3d                	addw	a0,a0,a5
+    8020685a:	85d2                	mv	a1,s4
+    8020685c:	954e                	add	a0,a0,s3
+    8020685e:	fffff097          	auipc	ra,0xfffff
+    80206862:	17a080e7          	jalr	378(ra) # 802059d8 <read_entry_name>
     for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) {
-    80206516:	0204849b          	addiw	s1,s1,32
-    8020651a:	4601                	li	a2,0
-    8020651c:	85a6                	mv	a1,s1
-    8020651e:	854a                	mv	a0,s2
-    80206520:	fffff097          	auipc	ra,0xfffff
-    80206524:	e06080e7          	jalr	-506(ra) # 80205326 <reloc_clus>
-    80206528:	f5750ee3          	beq	a0,s7,80206484 <enext+0x42>
+    80206866:	0204849b          	addiw	s1,s1,32
+    8020686a:	4601                	li	a2,0
+    8020686c:	85a6                	mv	a1,s1
+    8020686e:	854a                	mv	a0,s2
+    80206870:	fffff097          	auipc	ra,0xfffff
+    80206874:	e06080e7          	jalr	-506(ra) # 80205676 <reloc_clus>
+    80206878:	f5750ee3          	beq	a0,s7,802067d4 <enext+0x42>
         if (rw_clus(dp->cur_clus, 0, 0, (uint64)&de, off2, 32) != 32 || de.lne.order == END_OF_ENTRY) {
-    8020652c:	02000793          	li	a5,32
-    80206530:	0005071b          	sext.w	a4,a0
-    80206534:	86d2                	mv	a3,s4
-    80206536:	4601                	li	a2,0
-    80206538:	4581                	li	a1,0
-    8020653a:	10c92503          	lw	a0,268(s2)
-    8020653e:	fffff097          	auipc	ra,0xfffff
-    80206542:	ef0080e7          	jalr	-272(ra) # 8020542e <rw_clus>
-    80206546:	2501                	sext.w	a0,a0
-    80206548:	02000793          	li	a5,32
-    8020654c:	06f51c63          	bne	a0,a5,802065c4 <enext+0x182>
-    80206550:	f8044783          	lbu	a5,-128(s0)
-    80206554:	cbb5                	beqz	a5,802065c8 <enext+0x186>
+    8020687c:	02000793          	li	a5,32
+    80206880:	0005071b          	sext.w	a4,a0
+    80206884:	86d2                	mv	a3,s4
+    80206886:	4601                	li	a2,0
+    80206888:	4581                	li	a1,0
+    8020688a:	10c92503          	lw	a0,268(s2)
+    8020688e:	fffff097          	auipc	ra,0xfffff
+    80206892:	ef0080e7          	jalr	-272(ra) # 8020577e <rw_clus>
+    80206896:	2501                	sext.w	a0,a0
+    80206898:	02000793          	li	a5,32
+    8020689c:	06f51c63          	bne	a0,a5,80206914 <enext+0x182>
+    802068a0:	f8044783          	lbu	a5,-128(s0)
+    802068a4:	cbb5                	beqz	a5,80206918 <enext+0x186>
         if (de.lne.order == EMPTY_ENTRY) {
-    80206556:	f9878ce3          	beq	a5,s8,802064ee <enext+0xac>
+    802068a6:	f9878ce3          	beq	a5,s8,8020683e <enext+0xac>
         } else if (cnt) {
-    8020655a:	f80b1ce3          	bnez	s6,802064f2 <enext+0xb0>
+    802068aa:	f80b1ce3          	bnez	s6,80206842 <enext+0xb0>
         if (de.lne.attr == ATTR_LONG_NAME) {
-    8020655e:	f8b44703          	lbu	a4,-117(s0)
-    80206562:	01971d63          	bne	a4,s9,8020657c <enext+0x13a>
+    802068ae:	f8b44703          	lbu	a4,-117(s0)
+    802068b2:	01971d63          	bne	a4,s9,802068cc <enext+0x13a>
             int lcnt = de.lne.order & ~LAST_LONG_ENTRY;
-    80206566:	0bf7f713          	andi	a4,a5,191
+    802068b6:	0bf7f713          	andi	a4,a5,191
             if (de.lne.order & LAST_LONG_ENTRY) {
-    8020656a:	0407f793          	andi	a5,a5,64
-    8020656e:	d7d1                	beqz	a5,802064fa <enext+0xb8>
+    802068ba:	0407f793          	andi	a5,a5,64
+    802068be:	d7d1                	beqz	a5,8020684a <enext+0xb8>
                 *count = lcnt + 1;                              // plus the s-n-e;
-    80206570:	0017079b          	addiw	a5,a4,1
-    80206574:	00faa023          	sw	a5,0(s5)
+    802068c0:	0017079b          	addiw	a5,a4,1
+    802068c4:	00faa023          	sw	a5,0(s5)
                 count = 0;
-    80206578:	4a81                	li	s5,0
-    8020657a:	b741                	j	802064fa <enext+0xb8>
+    802068c8:	4a81                	li	s5,0
+    802068ca:	b741                	j	8020684a <enext+0xb8>
             if (count) {
-    8020657c:	000a8c63          	beqz	s5,80206594 <enext+0x152>
+    802068cc:	000a8c63          	beqz	s5,802068e4 <enext+0x152>
                 *count = 1;
-    80206580:	4785                	li	a5,1
-    80206582:	00faa023          	sw	a5,0(s5)
+    802068d0:	4785                	li	a5,1
+    802068d2:	00faa023          	sw	a5,0(s5)
                 read_entry_name(ep->filename, &de);
-    80206586:	f8040593          	addi	a1,s0,-128
-    8020658a:	854e                	mv	a0,s3
-    8020658c:	fffff097          	auipc	ra,0xfffff
-    80206590:	0fc080e7          	jalr	252(ra) # 80205688 <read_entry_name>
+    802068d6:	f8040593          	addi	a1,s0,-128
+    802068da:	854e                	mv	a0,s3
+    802068dc:	fffff097          	auipc	ra,0xfffff
+    802068e0:	0fc080e7          	jalr	252(ra) # 802059d8 <read_entry_name>
     entry->attribute = d->sne.attr;
-    80206594:	f8b44783          	lbu	a5,-117(s0)
-    80206598:	10f98023          	sb	a5,256(s3)
+    802068e4:	f8b44783          	lbu	a5,-117(s0)
+    802068e8:	10f98023          	sb	a5,256(s3)
     entry->first_clus = ((uint32)d->sne.fst_clus_hi << 16) | d->sne.fst_clus_lo;
-    8020659c:	f9445783          	lhu	a5,-108(s0)
-    802065a0:	0107979b          	slliw	a5,a5,0x10
-    802065a4:	f9a45703          	lhu	a4,-102(s0)
-    802065a8:	8fd9                	or	a5,a5,a4
-    802065aa:	2781                	sext.w	a5,a5
-    802065ac:	10f9a223          	sw	a5,260(s3)
+    802068ec:	f9445783          	lhu	a5,-108(s0)
+    802068f0:	0107979b          	slliw	a5,a5,0x10
+    802068f4:	f9a45703          	lhu	a4,-102(s0)
+    802068f8:	8fd9                	or	a5,a5,a4
+    802068fa:	2781                	sext.w	a5,a5
+    802068fc:	10f9a223          	sw	a5,260(s3)
     entry->file_size = d->sne.file_size;
-    802065b0:	f9c42703          	lw	a4,-100(s0)
-    802065b4:	10e9a423          	sw	a4,264(s3)
+    80206900:	f9c42703          	lw	a4,-100(s0)
+    80206904:	10e9a423          	sw	a4,264(s3)
     entry->cur_clus = entry->first_clus;
-    802065b8:	10f9a623          	sw	a5,268(s3)
+    80206908:	10f9a623          	sw	a5,268(s3)
     entry->clus_cnt = 0;
-    802065bc:	1009a823          	sw	zero,272(s3)
+    8020690c:	1009a823          	sw	zero,272(s3)
             return 1;
-    802065c0:	4505                	li	a0,1
+    80206910:	4505                	li	a0,1
 }
-    802065c2:	b5c9                	j	80206484 <enext+0x42>
+    80206912:	b5c9                	j	802067d4 <enext+0x42>
             return -1;
-    802065c4:	557d                	li	a0,-1
-    802065c6:	bd7d                	j	80206484 <enext+0x42>
-    802065c8:	557d                	li	a0,-1
-    802065ca:	bd6d                	j	80206484 <enext+0x42>
+    80206914:	557d                	li	a0,-1
+    80206916:	bd7d                	j	802067d4 <enext+0x42>
+    80206918:	557d                	li	a0,-1
+    8020691a:	bd6d                	j	802067d4 <enext+0x42>
 
-00000000802065cc <dirlookup>:
+000000008020691c <dirlookup>:
  * @param   dp          entry of a directory file
  * @param   filename    target filename
  * @param   poff        offset of proper empty entry slots from the beginning of the dir
  */
 struct dirent *dirlookup(struct dirent *dp, char *filename, uint *poff)
 {
-    802065cc:	711d                	addi	sp,sp,-96
-    802065ce:	ec86                	sd	ra,88(sp)
-    802065d0:	e8a2                	sd	s0,80(sp)
-    802065d2:	e4a6                	sd	s1,72(sp)
-    802065d4:	e0ca                	sd	s2,64(sp)
-    802065d6:	fc4e                	sd	s3,56(sp)
-    802065d8:	f852                	sd	s4,48(sp)
-    802065da:	f456                	sd	s5,40(sp)
-    802065dc:	f05a                	sd	s6,32(sp)
-    802065de:	ec5e                	sd	s7,24(sp)
-    802065e0:	1080                	addi	s0,sp,96
+    8020691c:	711d                	addi	sp,sp,-96
+    8020691e:	ec86                	sd	ra,88(sp)
+    80206920:	e8a2                	sd	s0,80(sp)
+    80206922:	e4a6                	sd	s1,72(sp)
+    80206924:	e0ca                	sd	s2,64(sp)
+    80206926:	fc4e                	sd	s3,56(sp)
+    80206928:	f852                	sd	s4,48(sp)
+    8020692a:	f456                	sd	s5,40(sp)
+    8020692c:	f05a                	sd	s6,32(sp)
+    8020692e:	ec5e                	sd	s7,24(sp)
+    80206930:	1080                	addi	s0,sp,96
     if (!(dp->attribute & ATTR_DIRECTORY))
-    802065e2:	10054783          	lbu	a5,256(a0)
-    802065e6:	8bc1                	andi	a5,a5,16
-    802065e8:	cbb1                	beqz	a5,8020663c <dirlookup+0x70>
-    802065ea:	84aa                	mv	s1,a0
-    802065ec:	89ae                	mv	s3,a1
-    802065ee:	8ab2                	mv	s5,a2
+    80206932:	10054783          	lbu	a5,256(a0)
+    80206936:	8bc1                	andi	a5,a5,16
+    80206938:	cbb1                	beqz	a5,8020698c <dirlookup+0x70>
+    8020693a:	84aa                	mv	s1,a0
+    8020693c:	89ae                	mv	s3,a1
+    8020693e:	8ab2                	mv	s5,a2
         panic("dirlookup not DIR");
     if (strncmp(filename, ".", FAT32_MAX_FILENAME) == 0) {
-    802065f0:	0ff00613          	li	a2,255
-    802065f4:	00003597          	auipc	a1,0x3
-    802065f8:	6d458593          	addi	a1,a1,1748 # 80209cc8 <digits+0x948>
-    802065fc:	854e                	mv	a0,s3
-    802065fe:	ffffa097          	auipc	ra,0xffffa
-    80206602:	23c080e7          	jalr	572(ra) # 8020083a <strncmp>
-    80206606:	c139                	beqz	a0,8020664c <dirlookup+0x80>
+    80206940:	0ff00613          	li	a2,255
+    80206944:	00003597          	auipc	a1,0x3
+    80206948:	3bc58593          	addi	a1,a1,956 # 80209d00 <digits+0x980>
+    8020694c:	854e                	mv	a0,s3
+    8020694e:	ffffa097          	auipc	ra,0xffffa
+    80206952:	eec080e7          	jalr	-276(ra) # 8020083a <strncmp>
+    80206956:	c139                	beqz	a0,8020699c <dirlookup+0x80>
         return edup(dp);
     } else if (strncmp(filename, "..", FAT32_MAX_FILENAME) == 0) {
-    80206608:	0ff00613          	li	a2,255
-    8020660c:	00003597          	auipc	a1,0x3
-    80206610:	6c458593          	addi	a1,a1,1732 # 80209cd0 <digits+0x950>
-    80206614:	854e                	mv	a0,s3
-    80206616:	ffffa097          	auipc	ra,0xffffa
-    8020661a:	224080e7          	jalr	548(ra) # 8020083a <strncmp>
-    8020661e:	e125                	bnez	a0,8020667e <dirlookup+0xb2>
+    80206958:	0ff00613          	li	a2,255
+    8020695c:	00003597          	auipc	a1,0x3
+    80206960:	3ac58593          	addi	a1,a1,940 # 80209d08 <digits+0x988>
+    80206964:	854e                	mv	a0,s3
+    80206966:	ffffa097          	auipc	ra,0xffffa
+    8020696a:	ed4080e7          	jalr	-300(ra) # 8020083a <strncmp>
+    8020696e:	e125                	bnez	a0,802069ce <dirlookup+0xb2>
         if (dp == &root) {
-    80206620:	00018797          	auipc	a5,0x18
-    80206624:	e3078793          	addi	a5,a5,-464 # 8021e450 <root>
-    80206628:	04f48463          	beq	s1,a5,80206670 <dirlookup+0xa4>
+    80206970:	00018797          	auipc	a5,0x18
+    80206974:	ae078793          	addi	a5,a5,-1312 # 8021e450 <root>
+    80206978:	04f48463          	beq	s1,a5,802069c0 <dirlookup+0xa4>
             return edup(&root);
         }
         return edup(dp->parent);
-    8020662c:	1204b503          	ld	a0,288(s1)
-    80206630:	00000097          	auipc	ra,0x0
-    80206634:	9b0080e7          	jalr	-1616(ra) # 80205fe0 <edup>
-    80206638:	892a                	mv	s2,a0
-    8020663a:	a839                	j	80206658 <dirlookup+0x8c>
+    8020697c:	1204b503          	ld	a0,288(s1)
+    80206980:	00000097          	auipc	ra,0x0
+    80206984:	9b0080e7          	jalr	-1616(ra) # 80206330 <edup>
+    80206988:	892a                	mv	s2,a0
+    8020698a:	a839                	j	802069a8 <dirlookup+0x8c>
         panic("dirlookup not DIR");
-    8020663c:	00003517          	auipc	a0,0x3
-    80206640:	67450513          	addi	a0,a0,1652 # 80209cb0 <digits+0x930>
-    80206644:	ffffa097          	auipc	ra,0xffffa
-    80206648:	b00080e7          	jalr	-1280(ra) # 80200144 <panic>
+    8020698c:	00003517          	auipc	a0,0x3
+    80206990:	35c50513          	addi	a0,a0,860 # 80209ce8 <digits+0x968>
+    80206994:	ffff9097          	auipc	ra,0xffff9
+    80206998:	7b0080e7          	jalr	1968(ra) # 80200144 <panic>
         return edup(dp);
-    8020664c:	8526                	mv	a0,s1
-    8020664e:	00000097          	auipc	ra,0x0
-    80206652:	992080e7          	jalr	-1646(ra) # 80205fe0 <edup>
-    80206656:	892a                	mv	s2,a0
+    8020699c:	8526                	mv	a0,s1
+    8020699e:	00000097          	auipc	ra,0x0
+    802069a2:	992080e7          	jalr	-1646(ra) # 80206330 <edup>
+    802069a6:	892a                	mv	s2,a0
     if (poff) {
         *poff = off;
     }
     eput(ep);
     return NULL;
 }
-    80206658:	854a                	mv	a0,s2
-    8020665a:	60e6                	ld	ra,88(sp)
-    8020665c:	6446                	ld	s0,80(sp)
-    8020665e:	64a6                	ld	s1,72(sp)
-    80206660:	6906                	ld	s2,64(sp)
-    80206662:	79e2                	ld	s3,56(sp)
-    80206664:	7a42                	ld	s4,48(sp)
-    80206666:	7aa2                	ld	s5,40(sp)
-    80206668:	7b02                	ld	s6,32(sp)
-    8020666a:	6be2                	ld	s7,24(sp)
-    8020666c:	6125                	addi	sp,sp,96
-    8020666e:	8082                	ret
+    802069a8:	854a                	mv	a0,s2
+    802069aa:	60e6                	ld	ra,88(sp)
+    802069ac:	6446                	ld	s0,80(sp)
+    802069ae:	64a6                	ld	s1,72(sp)
+    802069b0:	6906                	ld	s2,64(sp)
+    802069b2:	79e2                	ld	s3,56(sp)
+    802069b4:	7a42                	ld	s4,48(sp)
+    802069b6:	7aa2                	ld	s5,40(sp)
+    802069b8:	7b02                	ld	s6,32(sp)
+    802069ba:	6be2                	ld	s7,24(sp)
+    802069bc:	6125                	addi	sp,sp,96
+    802069be:	8082                	ret
             return edup(&root);
-    80206670:	853e                	mv	a0,a5
-    80206672:	00000097          	auipc	ra,0x0
-    80206676:	96e080e7          	jalr	-1682(ra) # 80205fe0 <edup>
-    8020667a:	892a                	mv	s2,a0
-    8020667c:	bff1                	j	80206658 <dirlookup+0x8c>
+    802069c0:	853e                	mv	a0,a5
+    802069c2:	00000097          	auipc	ra,0x0
+    802069c6:	96e080e7          	jalr	-1682(ra) # 80206330 <edup>
+    802069ca:	892a                	mv	s2,a0
+    802069cc:	bff1                	j	802069a8 <dirlookup+0x8c>
     if (dp->valid != 1) {
-    8020667e:	11649703          	lh	a4,278(s1)
-    80206682:	4785                	li	a5,1
+    802069ce:	11649703          	lh	a4,278(s1)
+    802069d2:	4785                	li	a5,1
         return NULL;
-    80206684:	4901                	li	s2,0
+    802069d4:	4901                	li	s2,0
     if (dp->valid != 1) {
-    80206686:	fcf719e3          	bne	a4,a5,80206658 <dirlookup+0x8c>
+    802069d6:	fcf719e3          	bne	a4,a5,802069a8 <dirlookup+0x8c>
     struct dirent *ep = eget(dp, filename);
-    8020668a:	85ce                	mv	a1,s3
-    8020668c:	8526                	mv	a0,s1
-    8020668e:	fffff097          	auipc	ra,0xfffff
-    80206692:	eec080e7          	jalr	-276(ra) # 8020557a <eget>
-    80206696:	892a                	mv	s2,a0
+    802069da:	85ce                	mv	a1,s3
+    802069dc:	8526                	mv	a0,s1
+    802069de:	fffff097          	auipc	ra,0xfffff
+    802069e2:	eec080e7          	jalr	-276(ra) # 802058ca <eget>
+    802069e6:	892a                	mv	s2,a0
     if (ep->valid == 1) { return ep; }                               // ecache hits
-    80206698:	11651703          	lh	a4,278(a0)
-    8020669c:	4785                	li	a5,1
-    8020669e:	faf70de3          	beq	a4,a5,80206658 <dirlookup+0x8c>
+    802069e8:	11651703          	lh	a4,278(a0)
+    802069ec:	4785                	li	a5,1
+    802069ee:	faf70de3          	beq	a4,a5,802069a8 <dirlookup+0x8c>
     int len = strlen(filename);
-    802066a2:	854e                	mv	a0,s3
-    802066a4:	ffffa097          	auipc	ra,0xffffa
-    802066a8:	242080e7          	jalr	578(ra) # 802008e6 <strlen>
+    802069f2:	854e                	mv	a0,s3
+    802069f4:	ffffa097          	auipc	ra,0xffffa
+    802069f8:	ef2080e7          	jalr	-270(ra) # 802008e6 <strlen>
     int count = 0;
-    802066ac:	fa042623          	sw	zero,-84(s0)
+    802069fc:	fa042623          	sw	zero,-84(s0)
     reloc_clus(dp, 0, 0);
-    802066b0:	4601                	li	a2,0
-    802066b2:	4581                	li	a1,0
-    802066b4:	8526                	mv	a0,s1
-    802066b6:	fffff097          	auipc	ra,0xfffff
-    802066ba:	c70080e7          	jalr	-912(ra) # 80205326 <reloc_clus>
+    80206a00:	4601                	li	a2,0
+    80206a02:	4581                	li	a1,0
+    80206a04:	8526                	mv	a0,s1
+    80206a06:	fffff097          	auipc	ra,0xfffff
+    80206a0a:	c70080e7          	jalr	-912(ra) # 80205676 <reloc_clus>
     uint off = 0;
-    802066be:	4a01                	li	s4,0
+    80206a0e:	4a01                	li	s4,0
     while ((type = enext(dp, ep, off, &count) != -1)) {
-    802066c0:	fac40b93          	addi	s7,s0,-84
-    802066c4:	5b7d                	li	s6,-1
-    802066c6:	86de                	mv	a3,s7
-    802066c8:	8652                	mv	a2,s4
-    802066ca:	85ca                	mv	a1,s2
-    802066cc:	8526                	mv	a0,s1
-    802066ce:	00000097          	auipc	ra,0x0
-    802066d2:	d74080e7          	jalr	-652(ra) # 80206442 <enext>
-    802066d6:	03650f63          	beq	a0,s6,80206714 <dirlookup+0x148>
+    80206a10:	fac40b93          	addi	s7,s0,-84
+    80206a14:	5b7d                	li	s6,-1
+    80206a16:	86de                	mv	a3,s7
+    80206a18:	8652                	mv	a2,s4
+    80206a1a:	85ca                	mv	a1,s2
+    80206a1c:	8526                	mv	a0,s1
+    80206a1e:	00000097          	auipc	ra,0x0
+    80206a22:	d74080e7          	jalr	-652(ra) # 80206792 <enext>
+    80206a26:	03650f63          	beq	a0,s6,80206a64 <dirlookup+0x148>
         } else if (strncmp(filename, ep->filename, FAT32_MAX_FILENAME) == 0) {
-    802066da:	0ff00613          	li	a2,255
-    802066de:	85ca                	mv	a1,s2
-    802066e0:	854e                	mv	a0,s3
-    802066e2:	ffffa097          	auipc	ra,0xffffa
-    802066e6:	158080e7          	jalr	344(ra) # 8020083a <strncmp>
-    802066ea:	c901                	beqz	a0,802066fa <dirlookup+0x12e>
+    80206a2a:	0ff00613          	li	a2,255
+    80206a2e:	85ca                	mv	a1,s2
+    80206a30:	854e                	mv	a0,s3
+    80206a32:	ffffa097          	auipc	ra,0xffffa
+    80206a36:	e08080e7          	jalr	-504(ra) # 8020083a <strncmp>
+    80206a3a:	c901                	beqz	a0,80206a4a <dirlookup+0x12e>
         off += count << 5;
-    802066ec:	fac42783          	lw	a5,-84(s0)
-    802066f0:	0057979b          	slliw	a5,a5,0x5
-    802066f4:	01478a3b          	addw	s4,a5,s4
-    802066f8:	b7f9                	j	802066c6 <dirlookup+0xfa>
+    80206a3c:	fac42783          	lw	a5,-84(s0)
+    80206a40:	0057979b          	slliw	a5,a5,0x5
+    80206a44:	01478a3b          	addw	s4,a5,s4
+    80206a48:	b7f9                	j	80206a16 <dirlookup+0xfa>
             ep->parent = edup(dp);
-    802066fa:	8526                	mv	a0,s1
-    802066fc:	00000097          	auipc	ra,0x0
-    80206700:	8e4080e7          	jalr	-1820(ra) # 80205fe0 <edup>
-    80206704:	12a93023          	sd	a0,288(s2)
+    80206a4a:	8526                	mv	a0,s1
+    80206a4c:	00000097          	auipc	ra,0x0
+    80206a50:	8e4080e7          	jalr	-1820(ra) # 80206330 <edup>
+    80206a54:	12a93023          	sd	a0,288(s2)
             ep->off = off;
-    80206708:	11492e23          	sw	s4,284(s2)
+    80206a58:	11492e23          	sw	s4,284(s2)
             ep->valid = 1;
-    8020670c:	4785                	li	a5,1
-    8020670e:	10f91b23          	sh	a5,278(s2)
+    80206a5c:	4785                	li	a5,1
+    80206a5e:	10f91b23          	sh	a5,278(s2)
             return ep;
-    80206712:	b799                	j	80206658 <dirlookup+0x8c>
+    80206a62:	b799                	j	802069a8 <dirlookup+0x8c>
     if (poff) {
-    80206714:	000a8463          	beqz	s5,8020671c <dirlookup+0x150>
+    80206a64:	000a8463          	beqz	s5,80206a6c <dirlookup+0x150>
         *poff = off;
-    80206718:	014aa023          	sw	s4,0(s5)
+    80206a68:	014aa023          	sw	s4,0(s5)
     eput(ep);
-    8020671c:	854a                	mv	a0,s2
-    8020671e:	00000097          	auipc	ra,0x0
-    80206722:	ba4080e7          	jalr	-1116(ra) # 802062c2 <eput>
+    80206a6c:	854a                	mv	a0,s2
+    80206a6e:	00000097          	auipc	ra,0x0
+    80206a72:	ba4080e7          	jalr	-1116(ra) # 80206612 <eput>
     return NULL;
-    80206726:	4901                	li	s2,0
-    80206728:	bf05                	j	80206658 <dirlookup+0x8c>
-
-000000008020672a <ealloc>:
-{
-    8020672a:	715d                	addi	sp,sp,-80
-    8020672c:	e486                	sd	ra,72(sp)
-    8020672e:	e0a2                	sd	s0,64(sp)
-    80206730:	fc26                	sd	s1,56(sp)
-    80206732:	f84a                	sd	s2,48(sp)
-    80206734:	f44e                	sd	s3,40(sp)
-    80206736:	f052                	sd	s4,32(sp)
-    80206738:	ec56                	sd	s5,24(sp)
-    8020673a:	0880                	addi	s0,sp,80
-    8020673c:	892a                	mv	s2,a0
+    80206a76:	4901                	li	s2,0
+    80206a78:	bf05                	j	802069a8 <dirlookup+0x8c>
+
+0000000080206a7a <ealloc>:
+{
+    80206a7a:	715d                	addi	sp,sp,-80
+    80206a7c:	e486                	sd	ra,72(sp)
+    80206a7e:	e0a2                	sd	s0,64(sp)
+    80206a80:	fc26                	sd	s1,56(sp)
+    80206a82:	f84a                	sd	s2,48(sp)
+    80206a84:	f44e                	sd	s3,40(sp)
+    80206a86:	f052                	sd	s4,32(sp)
+    80206a88:	ec56                	sd	s5,24(sp)
+    80206a8a:	0880                	addi	s0,sp,80
+    80206a8c:	892a                	mv	s2,a0
     if (!(dp->attribute & ATTR_DIRECTORY)) {
-    8020673e:	10054783          	lbu	a5,256(a0)
-    80206742:	8bc1                	andi	a5,a5,16
-    80206744:	c7b1                	beqz	a5,80206790 <ealloc+0x66>
-    80206746:	852e                	mv	a0,a1
-    80206748:	8a32                	mv	s4,a2
+    80206a8e:	10054783          	lbu	a5,256(a0)
+    80206a92:	8bc1                	andi	a5,a5,16
+    80206a94:	c7b1                	beqz	a5,80206ae0 <ealloc+0x66>
+    80206a96:	852e                	mv	a0,a1
+    80206a98:	8a32                	mv	s4,a2
     if (dp->valid != 1 || !(name = formatname(name))) {        // detect illegal character
-    8020674a:	11691703          	lh	a4,278(s2)
-    8020674e:	4785                	li	a5,1
+    80206a9a:	11691703          	lh	a4,278(s2)
+    80206a9e:	4785                	li	a5,1
         return NULL;
-    80206750:	4481                	li	s1,0
+    80206aa0:	4481                	li	s1,0
     if (dp->valid != 1 || !(name = formatname(name))) {        // detect illegal character
-    80206752:	02f71563          	bne	a4,a5,8020677c <ealloc+0x52>
-    80206756:	fffff097          	auipc	ra,0xfffff
-    8020675a:	408080e7          	jalr	1032(ra) # 80205b5e <formatname>
-    8020675e:	89aa                	mv	s3,a0
-    80206760:	10050663          	beqz	a0,8020686c <ealloc+0x142>
+    80206aa2:	02f71563          	bne	a4,a5,80206acc <ealloc+0x52>
+    80206aa6:	fffff097          	auipc	ra,0xfffff
+    80206aaa:	408080e7          	jalr	1032(ra) # 80205eae <formatname>
+    80206aae:	89aa                	mv	s3,a0
+    80206ab0:	10050663          	beqz	a0,80206bbc <ealloc+0x142>
     uint off = 0;
-    80206764:	fa042e23          	sw	zero,-68(s0)
+    80206ab4:	fa042e23          	sw	zero,-68(s0)
     if ((ep = dirlookup(dp, name, &off)) != 0) {      // entry exists
-    80206768:	fbc40613          	addi	a2,s0,-68
-    8020676c:	85aa                	mv	a1,a0
-    8020676e:	854a                	mv	a0,s2
-    80206770:	00000097          	auipc	ra,0x0
-    80206774:	e5c080e7          	jalr	-420(ra) # 802065cc <dirlookup>
-    80206778:	84aa                	mv	s1,a0
-    8020677a:	c11d                	beqz	a0,802067a0 <ealloc+0x76>
-}
-    8020677c:	8526                	mv	a0,s1
-    8020677e:	60a6                	ld	ra,72(sp)
-    80206780:	6406                	ld	s0,64(sp)
-    80206782:	74e2                	ld	s1,56(sp)
-    80206784:	7942                	ld	s2,48(sp)
-    80206786:	79a2                	ld	s3,40(sp)
-    80206788:	7a02                	ld	s4,32(sp)
-    8020678a:	6ae2                	ld	s5,24(sp)
-    8020678c:	6161                	addi	sp,sp,80
-    8020678e:	8082                	ret
+    80206ab8:	fbc40613          	addi	a2,s0,-68
+    80206abc:	85aa                	mv	a1,a0
+    80206abe:	854a                	mv	a0,s2
+    80206ac0:	00000097          	auipc	ra,0x0
+    80206ac4:	e5c080e7          	jalr	-420(ra) # 8020691c <dirlookup>
+    80206ac8:	84aa                	mv	s1,a0
+    80206aca:	c11d                	beqz	a0,80206af0 <ealloc+0x76>
+}
+    80206acc:	8526                	mv	a0,s1
+    80206ace:	60a6                	ld	ra,72(sp)
+    80206ad0:	6406                	ld	s0,64(sp)
+    80206ad2:	74e2                	ld	s1,56(sp)
+    80206ad4:	7942                	ld	s2,48(sp)
+    80206ad6:	79a2                	ld	s3,40(sp)
+    80206ad8:	7a02                	ld	s4,32(sp)
+    80206ada:	6ae2                	ld	s5,24(sp)
+    80206adc:	6161                	addi	sp,sp,80
+    80206ade:	8082                	ret
         panic("ealloc not dir");
-    80206790:	00003517          	auipc	a0,0x3
-    80206794:	54850513          	addi	a0,a0,1352 # 80209cd8 <digits+0x958>
-    80206798:	ffffa097          	auipc	ra,0xffffa
-    8020679c:	9ac080e7          	jalr	-1620(ra) # 80200144 <panic>
+    80206ae0:	00003517          	auipc	a0,0x3
+    80206ae4:	23050513          	addi	a0,a0,560 # 80209d10 <digits+0x990>
+    80206ae8:	ffff9097          	auipc	ra,0xffff9
+    80206aec:	65c080e7          	jalr	1628(ra) # 80200144 <panic>
     ep = eget(dp, name);
-    802067a0:	85ce                	mv	a1,s3
-    802067a2:	854a                	mv	a0,s2
-    802067a4:	fffff097          	auipc	ra,0xfffff
-    802067a8:	dd6080e7          	jalr	-554(ra) # 8020557a <eget>
-    802067ac:	84aa                	mv	s1,a0
+    80206af0:	85ce                	mv	a1,s3
+    80206af2:	854a                	mv	a0,s2
+    80206af4:	fffff097          	auipc	ra,0xfffff
+    80206af8:	dd6080e7          	jalr	-554(ra) # 802058ca <eget>
+    80206afc:	84aa                	mv	s1,a0
     elock(ep);
-    802067ae:	00000097          	auipc	ra,0x0
-    802067b2:	a90080e7          	jalr	-1392(ra) # 8020623e <elock>
+    80206afe:	00000097          	auipc	ra,0x0
+    80206b02:	a90080e7          	jalr	-1392(ra) # 8020658e <elock>
     ep->attribute = attr;
-    802067b6:	11448023          	sb	s4,256(s1)
+    80206b06:	11448023          	sb	s4,256(s1)
     ep->file_size = 0;
-    802067ba:	1004a423          	sw	zero,264(s1)
+    80206b0a:	1004a423          	sw	zero,264(s1)
     ep->first_clus = 0;
-    802067be:	1004a223          	sw	zero,260(s1)
+    80206b0e:	1004a223          	sw	zero,260(s1)
     ep->parent = edup(dp);
-    802067c2:	854a                	mv	a0,s2
-    802067c4:	00000097          	auipc	ra,0x0
-    802067c8:	81c080e7          	jalr	-2020(ra) # 80205fe0 <edup>
-    802067cc:	12a4b023          	sd	a0,288(s1)
+    80206b12:	854a                	mv	a0,s2
+    80206b14:	00000097          	auipc	ra,0x0
+    80206b18:	81c080e7          	jalr	-2020(ra) # 80206330 <edup>
+    80206b1c:	12a4b023          	sd	a0,288(s1)
     ep->off = off;
-    802067d0:	fbc42a83          	lw	s5,-68(s0)
-    802067d4:	1154ae23          	sw	s5,284(s1)
+    80206b20:	fbc42a83          	lw	s5,-68(s0)
+    80206b24:	1154ae23          	sw	s5,284(s1)
     ep->clus_cnt = 0;
-    802067d8:	1004a823          	sw	zero,272(s1)
+    80206b28:	1004a823          	sw	zero,272(s1)
     ep->cur_clus = 0;
-    802067dc:	1004a623          	sw	zero,268(s1)
+    80206b2c:	1004a623          	sw	zero,268(s1)
     ep->dirty = 0;
-    802067e0:	10048aa3          	sb	zero,277(s1)
+    80206b30:	10048aa3          	sb	zero,277(s1)
     strncpy(ep->filename, name, FAT32_MAX_FILENAME);
-    802067e4:	0ff00613          	li	a2,255
-    802067e8:	85ce                	mv	a1,s3
-    802067ea:	8526                	mv	a0,s1
-    802067ec:	ffffa097          	auipc	ra,0xffffa
-    802067f0:	08a080e7          	jalr	138(ra) # 80200876 <strncpy>
+    80206b34:	0ff00613          	li	a2,255
+    80206b38:	85ce                	mv	a1,s3
+    80206b3a:	8526                	mv	a0,s1
+    80206b3c:	ffffa097          	auipc	ra,0xffffa
+    80206b40:	d3a080e7          	jalr	-710(ra) # 80200876 <strncpy>
     ep->filename[FAT32_MAX_FILENAME] = '\0';
-    802067f4:	0e048fa3          	sb	zero,255(s1)
+    80206b44:	0e048fa3          	sb	zero,255(s1)
     if (attr == ATTR_DIRECTORY) {    // generate "." and ".." for ep
-    802067f8:	47c1                	li	a5,16
-    802067fa:	02fa0863          	beq	s4,a5,8020682a <ealloc+0x100>
+    80206b48:	47c1                	li	a5,16
+    80206b4a:	02fa0863          	beq	s4,a5,80206b7a <ealloc+0x100>
         ep->attribute |= ATTR_ARCHIVE;
-    802067fe:	1004c783          	lbu	a5,256(s1)
-    80206802:	0207e793          	ori	a5,a5,32
-    80206806:	10f48023          	sb	a5,256(s1)
+    80206b4e:	1004c783          	lbu	a5,256(s1)
+    80206b52:	0207e793          	ori	a5,a5,32
+    80206b56:	10f48023          	sb	a5,256(s1)
     emake(dp, ep, off);
-    8020680a:	8656                	mv	a2,s5
-    8020680c:	85a6                	mv	a1,s1
-    8020680e:	854a                	mv	a0,s2
-    80206810:	fffff097          	auipc	ra,0xfffff
-    80206814:	406080e7          	jalr	1030(ra) # 80205c16 <emake>
+    80206b5a:	8656                	mv	a2,s5
+    80206b5c:	85a6                	mv	a1,s1
+    80206b5e:	854a                	mv	a0,s2
+    80206b60:	fffff097          	auipc	ra,0xfffff
+    80206b64:	406080e7          	jalr	1030(ra) # 80205f66 <emake>
     ep->valid = 1;
-    80206818:	4785                	li	a5,1
-    8020681a:	10f49b23          	sh	a5,278(s1)
+    80206b68:	4785                	li	a5,1
+    80206b6a:	10f49b23          	sh	a5,278(s1)
     eunlock(ep);
-    8020681e:	8526                	mv	a0,s1
-    80206820:	00000097          	auipc	ra,0x0
-    80206824:	a54080e7          	jalr	-1452(ra) # 80206274 <eunlock>
+    80206b6e:	8526                	mv	a0,s1
+    80206b70:	00000097          	auipc	ra,0x0
+    80206b74:	a54080e7          	jalr	-1452(ra) # 802065c4 <eunlock>
     return ep;
-    80206828:	bf91                	j	8020677c <ealloc+0x52>
+    80206b78:	bf91                	j	80206acc <ealloc+0x52>
         ep->attribute |= ATTR_DIRECTORY;
-    8020682a:	1004c783          	lbu	a5,256(s1)
-    8020682e:	0107e793          	ori	a5,a5,16
-    80206832:	10f48023          	sb	a5,256(s1)
+    80206b7a:	1004c783          	lbu	a5,256(s1)
+    80206b7e:	0107e793          	ori	a5,a5,16
+    80206b82:	10f48023          	sb	a5,256(s1)
         ep->cur_clus = ep->first_clus = alloc_clus(dp->dev);
-    80206836:	11494503          	lbu	a0,276(s2)
-    8020683a:	fffff097          	auipc	ra,0xfffff
-    8020683e:	92a080e7          	jalr	-1750(ra) # 80205164 <alloc_clus>
-    80206842:	2501                	sext.w	a0,a0
-    80206844:	10a4a223          	sw	a0,260(s1)
-    80206848:	10a4a623          	sw	a0,268(s1)
+    80206b86:	11494503          	lbu	a0,276(s2)
+    80206b8a:	fffff097          	auipc	ra,0xfffff
+    80206b8e:	92a080e7          	jalr	-1750(ra) # 802054b4 <alloc_clus>
+    80206b92:	2501                	sext.w	a0,a0
+    80206b94:	10a4a223          	sw	a0,260(s1)
+    80206b98:	10a4a623          	sw	a0,268(s1)
         emake(ep, ep, 0);
-    8020684c:	4601                	li	a2,0
-    8020684e:	85a6                	mv	a1,s1
-    80206850:	8526                	mv	a0,s1
-    80206852:	fffff097          	auipc	ra,0xfffff
-    80206856:	3c4080e7          	jalr	964(ra) # 80205c16 <emake>
+    80206b9c:	4601                	li	a2,0
+    80206b9e:	85a6                	mv	a1,s1
+    80206ba0:	8526                	mv	a0,s1
+    80206ba2:	fffff097          	auipc	ra,0xfffff
+    80206ba6:	3c4080e7          	jalr	964(ra) # 80205f66 <emake>
         emake(ep, dp, 32);
-    8020685a:	02000613          	li	a2,32
-    8020685e:	85ca                	mv	a1,s2
-    80206860:	8526                	mv	a0,s1
-    80206862:	fffff097          	auipc	ra,0xfffff
-    80206866:	3b4080e7          	jalr	948(ra) # 80205c16 <emake>
-    8020686a:	b745                	j	8020680a <ealloc+0xe0>
+    80206baa:	02000613          	li	a2,32
+    80206bae:	85ca                	mv	a1,s2
+    80206bb0:	8526                	mv	a0,s1
+    80206bb2:	fffff097          	auipc	ra,0xfffff
+    80206bb6:	3b4080e7          	jalr	948(ra) # 80205f66 <emake>
+    80206bba:	b745                	j	80206b5a <ealloc+0xe0>
         return NULL;
-    8020686c:	84aa                	mv	s1,a0
-    8020686e:	b739                	j	8020677c <ealloc+0x52>
+    80206bbc:	84aa                	mv	s1,a0
+    80206bbe:	b739                	j	80206acc <ealloc+0x52>
 
-0000000080206870 <lookup_path>:
+0000000080206bc0 <lookup_path>:
     return path;
 }
 
 // FAT32 version of namex in xv6's original file system.
 static struct dirent *lookup_path(char *path, int parent, char *name)
 {
-    80206870:	715d                	addi	sp,sp,-80
-    80206872:	e486                	sd	ra,72(sp)
-    80206874:	e0a2                	sd	s0,64(sp)
-    80206876:	fc26                	sd	s1,56(sp)
-    80206878:	f84a                	sd	s2,48(sp)
-    8020687a:	f44e                	sd	s3,40(sp)
-    8020687c:	f052                	sd	s4,32(sp)
-    8020687e:	ec56                	sd	s5,24(sp)
-    80206880:	e85a                	sd	s6,16(sp)
-    80206882:	e45e                	sd	s7,8(sp)
-    80206884:	e062                	sd	s8,0(sp)
-    80206886:	0880                	addi	s0,sp,80
-    80206888:	892a                	mv	s2,a0
-    8020688a:	8b2e                	mv	s6,a1
-    8020688c:	8ab2                	mv	s5,a2
+    80206bc0:	715d                	addi	sp,sp,-80
+    80206bc2:	e486                	sd	ra,72(sp)
+    80206bc4:	e0a2                	sd	s0,64(sp)
+    80206bc6:	fc26                	sd	s1,56(sp)
+    80206bc8:	f84a                	sd	s2,48(sp)
+    80206bca:	f44e                	sd	s3,40(sp)
+    80206bcc:	f052                	sd	s4,32(sp)
+    80206bce:	ec56                	sd	s5,24(sp)
+    80206bd0:	e85a                	sd	s6,16(sp)
+    80206bd2:	e45e                	sd	s7,8(sp)
+    80206bd4:	e062                	sd	s8,0(sp)
+    80206bd6:	0880                	addi	s0,sp,80
+    80206bd8:	892a                	mv	s2,a0
+    80206bda:	8b2e                	mv	s6,a1
+    80206bdc:	8ab2                	mv	s5,a2
     struct dirent *entry, *next;
     if (*path == '/') {
-    8020688e:	00054783          	lbu	a5,0(a0)
-    80206892:	02f00713          	li	a4,47
-    80206896:	02e78663          	beq	a5,a4,802068c2 <lookup_path+0x52>
+    80206bde:	00054783          	lbu	a5,0(a0)
+    80206be2:	02f00713          	li	a4,47
+    80206be6:	02e78663          	beq	a5,a4,80206c12 <lookup_path+0x52>
         entry = edup(&root);
     } else if (*path != '\0') {
         entry = edup(myproc()->cwd);
     } else {
         return NULL;
-    8020689a:	4a01                	li	s4,0
+    80206bea:	4a01                	li	s4,0
     } else if (*path != '\0') {
-    8020689c:	cba1                	beqz	a5,802068ec <lookup_path+0x7c>
+    80206bec:	cba1                	beqz	a5,80206c3c <lookup_path+0x7c>
         entry = edup(myproc()->cwd);
-    8020689e:	ffffb097          	auipc	ra,0xffffb
-    802068a2:	19e080e7          	jalr	414(ra) # 80201a3c <myproc>
-    802068a6:	15853503          	ld	a0,344(a0)
-    802068aa:	fffff097          	auipc	ra,0xfffff
-    802068ae:	736080e7          	jalr	1846(ra) # 80205fe0 <edup>
-    802068b2:	8a2a                	mv	s4,a0
+    80206bee:	ffffb097          	auipc	ra,0xffffb
+    80206bf2:	e4e080e7          	jalr	-434(ra) # 80201a3c <myproc>
+    80206bf6:	15853503          	ld	a0,344(a0)
+    80206bfa:	fffff097          	auipc	ra,0xfffff
+    80206bfe:	736080e7          	jalr	1846(ra) # 80206330 <edup>
+    80206c02:	8a2a                	mv	s4,a0
     while (*path == '/') {
-    802068b4:	02f00993          	li	s3,47
-    802068b8:	0ff00b93          	li	s7,255
-    802068bc:	0ff00c13          	li	s8,255
-    802068c0:	a0e5                	j	802069a8 <lookup_path+0x138>
+    80206c04:	02f00993          	li	s3,47
+    80206c08:	0ff00b93          	li	s7,255
+    80206c0c:	0ff00c13          	li	s8,255
+    80206c10:	a0e5                	j	80206cf8 <lookup_path+0x138>
         entry = edup(&root);
-    802068c2:	00018517          	auipc	a0,0x18
-    802068c6:	b8e50513          	addi	a0,a0,-1138 # 8021e450 <root>
-    802068ca:	fffff097          	auipc	ra,0xfffff
-    802068ce:	716080e7          	jalr	1814(ra) # 80205fe0 <edup>
-    802068d2:	8a2a                	mv	s4,a0
-    802068d4:	b7c5                	j	802068b4 <lookup_path+0x44>
+    80206c12:	00018517          	auipc	a0,0x18
+    80206c16:	83e50513          	addi	a0,a0,-1986 # 8021e450 <root>
+    80206c1a:	fffff097          	auipc	ra,0xfffff
+    80206c1e:	716080e7          	jalr	1814(ra) # 80206330 <edup>
+    80206c22:	8a2a                	mv	s4,a0
+    80206c24:	b7c5                	j	80206c04 <lookup_path+0x44>
     }
     while ((path = skipelem(path, name)) != 0) {
         elock(entry);
         if (!(entry->attribute & ATTR_DIRECTORY)) {
             eunlock(entry);
-    802068d6:	8552                	mv	a0,s4
-    802068d8:	00000097          	auipc	ra,0x0
-    802068dc:	99c080e7          	jalr	-1636(ra) # 80206274 <eunlock>
+    80206c26:	8552                	mv	a0,s4
+    80206c28:	00000097          	auipc	ra,0x0
+    80206c2c:	99c080e7          	jalr	-1636(ra) # 802065c4 <eunlock>
             eput(entry);
-    802068e0:	8552                	mv	a0,s4
-    802068e2:	00000097          	auipc	ra,0x0
-    802068e6:	9e0080e7          	jalr	-1568(ra) # 802062c2 <eput>
+    80206c30:	8552                	mv	a0,s4
+    80206c32:	00000097          	auipc	ra,0x0
+    80206c36:	9e0080e7          	jalr	-1568(ra) # 80206612 <eput>
             return NULL;
-    802068ea:	4a01                	li	s4,0
+    80206c3a:	4a01                	li	s4,0
     if (parent) {
         eput(entry);
         return NULL;
     }
     return entry;
 }
-    802068ec:	8552                	mv	a0,s4
-    802068ee:	60a6                	ld	ra,72(sp)
-    802068f0:	6406                	ld	s0,64(sp)
-    802068f2:	74e2                	ld	s1,56(sp)
-    802068f4:	7942                	ld	s2,48(sp)
-    802068f6:	79a2                	ld	s3,40(sp)
-    802068f8:	7a02                	ld	s4,32(sp)
-    802068fa:	6ae2                	ld	s5,24(sp)
-    802068fc:	6b42                	ld	s6,16(sp)
-    802068fe:	6ba2                	ld	s7,8(sp)
-    80206900:	6c02                	ld	s8,0(sp)
-    80206902:	6161                	addi	sp,sp,80
-    80206904:	8082                	ret
+    80206c3c:	8552                	mv	a0,s4
+    80206c3e:	60a6                	ld	ra,72(sp)
+    80206c40:	6406                	ld	s0,64(sp)
+    80206c42:	74e2                	ld	s1,56(sp)
+    80206c44:	7942                	ld	s2,48(sp)
+    80206c46:	79a2                	ld	s3,40(sp)
+    80206c48:	7a02                	ld	s4,32(sp)
+    80206c4a:	6ae2                	ld	s5,24(sp)
+    80206c4c:	6b42                	ld	s6,16(sp)
+    80206c4e:	6ba2                	ld	s7,8(sp)
+    80206c50:	6c02                	ld	s8,0(sp)
+    80206c52:	6161                	addi	sp,sp,80
+    80206c54:	8082                	ret
             eunlock(entry);
-    80206906:	8552                	mv	a0,s4
-    80206908:	00000097          	auipc	ra,0x0
-    8020690c:	96c080e7          	jalr	-1684(ra) # 80206274 <eunlock>
+    80206c56:	8552                	mv	a0,s4
+    80206c58:	00000097          	auipc	ra,0x0
+    80206c5c:	96c080e7          	jalr	-1684(ra) # 802065c4 <eunlock>
             return entry;
-    80206910:	bff1                	j	802068ec <lookup_path+0x7c>
+    80206c60:	bff1                	j	80206c3c <lookup_path+0x7c>
             eunlock(entry);
-    80206912:	8552                	mv	a0,s4
-    80206914:	00000097          	auipc	ra,0x0
-    80206918:	960080e7          	jalr	-1696(ra) # 80206274 <eunlock>
+    80206c62:	8552                	mv	a0,s4
+    80206c64:	00000097          	auipc	ra,0x0
+    80206c68:	960080e7          	jalr	-1696(ra) # 802065c4 <eunlock>
             eput(entry);
-    8020691c:	8552                	mv	a0,s4
-    8020691e:	00000097          	auipc	ra,0x0
-    80206922:	9a4080e7          	jalr	-1628(ra) # 802062c2 <eput>
+    80206c6c:	8552                	mv	a0,s4
+    80206c6e:	00000097          	auipc	ra,0x0
+    80206c72:	9a4080e7          	jalr	-1628(ra) # 80206612 <eput>
             return NULL;
-    80206926:	8a4a                	mv	s4,s2
-    80206928:	b7d1                	j	802068ec <lookup_path+0x7c>
+    80206c76:	8a4a                	mv	s4,s2
+    80206c78:	b7d1                	j	80206c3c <lookup_path+0x7c>
     int len = path - s;
-    8020692a:	412487b3          	sub	a5,s1,s2
-    8020692e:	863e                	mv	a2,a5
-    80206930:	2781                	sext.w	a5,a5
-    80206932:	00fbd363          	bge	s7,a5,80206938 <lookup_path+0xc8>
-    80206936:	8662                	mv	a2,s8
-    80206938:	0006079b          	sext.w	a5,a2
+    80206c7a:	412487b3          	sub	a5,s1,s2
+    80206c7e:	863e                	mv	a2,a5
+    80206c80:	2781                	sext.w	a5,a5
+    80206c82:	00fbd363          	bge	s7,a5,80206c88 <lookup_path+0xc8>
+    80206c86:	8662                	mv	a2,s8
+    80206c88:	0006079b          	sext.w	a5,a2
     name[len] = 0;
-    8020693c:	97d6                	add	a5,a5,s5
-    8020693e:	00078023          	sb	zero,0(a5)
+    80206c8c:	97d6                	add	a5,a5,s5
+    80206c8e:	00078023          	sb	zero,0(a5)
     memmove(name, s, len);
-    80206942:	2601                	sext.w	a2,a2
-    80206944:	85ca                	mv	a1,s2
-    80206946:	8556                	mv	a0,s5
-    80206948:	ffffa097          	auipc	ra,0xffffa
-    8020694c:	e76080e7          	jalr	-394(ra) # 802007be <memmove>
+    80206c92:	2601                	sext.w	a2,a2
+    80206c94:	85ca                	mv	a1,s2
+    80206c96:	8556                	mv	a0,s5
+    80206c98:	ffffa097          	auipc	ra,0xffffa
+    80206c9c:	b26080e7          	jalr	-1242(ra) # 802007be <memmove>
     while (*path == '/') {
-    80206950:	0004c783          	lbu	a5,0(s1)
-    80206954:	01379763          	bne	a5,s3,80206962 <lookup_path+0xf2>
+    80206ca0:	0004c783          	lbu	a5,0(s1)
+    80206ca4:	01379763          	bne	a5,s3,80206cb2 <lookup_path+0xf2>
         path++;
-    80206958:	0485                	addi	s1,s1,1
+    80206ca8:	0485                	addi	s1,s1,1
     while (*path == '/') {
-    8020695a:	0004c783          	lbu	a5,0(s1)
-    8020695e:	ff378de3          	beq	a5,s3,80206958 <lookup_path+0xe8>
+    80206caa:	0004c783          	lbu	a5,0(s1)
+    80206cae:	ff378de3          	beq	a5,s3,80206ca8 <lookup_path+0xe8>
         elock(entry);
-    80206962:	8552                	mv	a0,s4
-    80206964:	00000097          	auipc	ra,0x0
-    80206968:	8da080e7          	jalr	-1830(ra) # 8020623e <elock>
+    80206cb2:	8552                	mv	a0,s4
+    80206cb4:	00000097          	auipc	ra,0x0
+    80206cb8:	8da080e7          	jalr	-1830(ra) # 8020658e <elock>
         if (!(entry->attribute & ATTR_DIRECTORY)) {
-    8020696c:	100a4783          	lbu	a5,256(s4)
-    80206970:	8bc1                	andi	a5,a5,16
-    80206972:	d3b5                	beqz	a5,802068d6 <lookup_path+0x66>
+    80206cbc:	100a4783          	lbu	a5,256(s4)
+    80206cc0:	8bc1                	andi	a5,a5,16
+    80206cc2:	d3b5                	beqz	a5,80206c26 <lookup_path+0x66>
         if (parent && *path == '\0') {
-    80206974:	000b0563          	beqz	s6,8020697e <lookup_path+0x10e>
-    80206978:	0004c783          	lbu	a5,0(s1)
-    8020697c:	d7c9                	beqz	a5,80206906 <lookup_path+0x96>
+    80206cc4:	000b0563          	beqz	s6,80206cce <lookup_path+0x10e>
+    80206cc8:	0004c783          	lbu	a5,0(s1)
+    80206ccc:	d7c9                	beqz	a5,80206c56 <lookup_path+0x96>
         if ((next = dirlookup(entry, name, 0)) == 0) {
-    8020697e:	4601                	li	a2,0
-    80206980:	85d6                	mv	a1,s5
-    80206982:	8552                	mv	a0,s4
-    80206984:	00000097          	auipc	ra,0x0
-    80206988:	c48080e7          	jalr	-952(ra) # 802065cc <dirlookup>
-    8020698c:	892a                	mv	s2,a0
-    8020698e:	d151                	beqz	a0,80206912 <lookup_path+0xa2>
+    80206cce:	4601                	li	a2,0
+    80206cd0:	85d6                	mv	a1,s5
+    80206cd2:	8552                	mv	a0,s4
+    80206cd4:	00000097          	auipc	ra,0x0
+    80206cd8:	c48080e7          	jalr	-952(ra) # 8020691c <dirlookup>
+    80206cdc:	892a                	mv	s2,a0
+    80206cde:	d151                	beqz	a0,80206c62 <lookup_path+0xa2>
         eunlock(entry);
-    80206990:	8552                	mv	a0,s4
-    80206992:	00000097          	auipc	ra,0x0
-    80206996:	8e2080e7          	jalr	-1822(ra) # 80206274 <eunlock>
+    80206ce0:	8552                	mv	a0,s4
+    80206ce2:	00000097          	auipc	ra,0x0
+    80206ce6:	8e2080e7          	jalr	-1822(ra) # 802065c4 <eunlock>
         eput(entry);
-    8020699a:	8552                	mv	a0,s4
-    8020699c:	00000097          	auipc	ra,0x0
-    802069a0:	926080e7          	jalr	-1754(ra) # 802062c2 <eput>
+    80206cea:	8552                	mv	a0,s4
+    80206cec:	00000097          	auipc	ra,0x0
+    80206cf0:	926080e7          	jalr	-1754(ra) # 80206612 <eput>
         entry = next;
-    802069a4:	8a4a                	mv	s4,s2
+    80206cf4:	8a4a                	mv	s4,s2
         eput(entry);
-    802069a6:	8926                	mv	s2,s1
+    80206cf6:	8926                	mv	s2,s1
     while (*path == '/') {
-    802069a8:	00094783          	lbu	a5,0(s2)
-    802069ac:	03379363          	bne	a5,s3,802069d2 <lookup_path+0x162>
+    80206cf8:	00094783          	lbu	a5,0(s2)
+    80206cfc:	03379363          	bne	a5,s3,80206d22 <lookup_path+0x162>
         path++;
-    802069b0:	0905                	addi	s2,s2,1
+    80206d00:	0905                	addi	s2,s2,1
     while (*path == '/') {
-    802069b2:	00094783          	lbu	a5,0(s2)
-    802069b6:	ff378de3          	beq	a5,s3,802069b0 <lookup_path+0x140>
+    80206d02:	00094783          	lbu	a5,0(s2)
+    80206d06:	ff378de3          	beq	a5,s3,80206d00 <lookup_path+0x140>
     if (*path == 0) { return NULL; }
-    802069ba:	cf89                	beqz	a5,802069d4 <lookup_path+0x164>
+    80206d0a:	cf89                	beqz	a5,80206d24 <lookup_path+0x164>
         path++;
-    802069bc:	84ca                	mv	s1,s2
+    80206d0c:	84ca                	mv	s1,s2
     while (*path != '/' && *path != 0) {
-    802069be:	f73786e3          	beq	a5,s3,8020692a <lookup_path+0xba>
+    80206d0e:	f73786e3          	beq	a5,s3,80206c7a <lookup_path+0xba>
         eput(entry);
-    802069c2:	84ca                	mv	s1,s2
+    80206d12:	84ca                	mv	s1,s2
     while (*path != '/' && *path != 0) {
-    802069c4:	d3bd                	beqz	a5,8020692a <lookup_path+0xba>
+    80206d14:	d3bd                	beqz	a5,80206c7a <lookup_path+0xba>
         path++;
-    802069c6:	0485                	addi	s1,s1,1
+    80206d16:	0485                	addi	s1,s1,1
     while (*path != '/' && *path != 0) {
-    802069c8:	0004c783          	lbu	a5,0(s1)
-    802069cc:	ff379ce3          	bne	a5,s3,802069c4 <lookup_path+0x154>
-    802069d0:	bfa9                	j	8020692a <lookup_path+0xba>
+    80206d18:	0004c783          	lbu	a5,0(s1)
+    80206d1c:	ff379ce3          	bne	a5,s3,80206d14 <lookup_path+0x154>
+    80206d20:	bfa9                	j	80206c7a <lookup_path+0xba>
     if (*path == 0) { return NULL; }
-    802069d2:	fbe5                	bnez	a5,802069c2 <lookup_path+0x152>
+    80206d22:	fbe5                	bnez	a5,80206d12 <lookup_path+0x152>
     if (parent) {
-    802069d4:	f00b0ce3          	beqz	s6,802068ec <lookup_path+0x7c>
+    80206d24:	f00b0ce3          	beqz	s6,80206c3c <lookup_path+0x7c>
         eput(entry);
-    802069d8:	8552                	mv	a0,s4
-    802069da:	00000097          	auipc	ra,0x0
-    802069de:	8e8080e7          	jalr	-1816(ra) # 802062c2 <eput>
+    80206d28:	8552                	mv	a0,s4
+    80206d2a:	00000097          	auipc	ra,0x0
+    80206d2e:	8e8080e7          	jalr	-1816(ra) # 80206612 <eput>
         return NULL;
-    802069e2:	4a01                	li	s4,0
-    802069e4:	b721                	j	802068ec <lookup_path+0x7c>
+    80206d32:	4a01                	li	s4,0
+    80206d34:	b721                	j	80206c3c <lookup_path+0x7c>
 
-00000000802069e6 <ename>:
+0000000080206d36 <ename>:
 
 struct dirent *ename(char *path)
 {
-    802069e6:	716d                	addi	sp,sp,-272
-    802069e8:	e606                	sd	ra,264(sp)
-    802069ea:	e222                	sd	s0,256(sp)
-    802069ec:	0a00                	addi	s0,sp,272
+    80206d36:	716d                	addi	sp,sp,-272
+    80206d38:	e606                	sd	ra,264(sp)
+    80206d3a:	e222                	sd	s0,256(sp)
+    80206d3c:	0a00                	addi	s0,sp,272
     char name[FAT32_MAX_FILENAME + 1];
     return lookup_path(path, 0, name);
-    802069ee:	ef040613          	addi	a2,s0,-272
-    802069f2:	4581                	li	a1,0
-    802069f4:	00000097          	auipc	ra,0x0
-    802069f8:	e7c080e7          	jalr	-388(ra) # 80206870 <lookup_path>
+    80206d3e:	ef040613          	addi	a2,s0,-272
+    80206d42:	4581                	li	a1,0
+    80206d44:	00000097          	auipc	ra,0x0
+    80206d48:	e7c080e7          	jalr	-388(ra) # 80206bc0 <lookup_path>
 }
-    802069fc:	60b2                	ld	ra,264(sp)
-    802069fe:	6412                	ld	s0,256(sp)
-    80206a00:	6151                	addi	sp,sp,272
-    80206a02:	8082                	ret
+    80206d4c:	60b2                	ld	ra,264(sp)
+    80206d4e:	6412                	ld	s0,256(sp)
+    80206d50:	6151                	addi	sp,sp,272
+    80206d52:	8082                	ret
 
-0000000080206a04 <enameparent>:
+0000000080206d54 <enameparent>:
 
 struct dirent *enameparent(char *path, char *name)
 {
-    80206a04:	1141                	addi	sp,sp,-16
-    80206a06:	e406                	sd	ra,8(sp)
-    80206a08:	e022                	sd	s0,0(sp)
-    80206a0a:	0800                	addi	s0,sp,16
-    80206a0c:	862e                	mv	a2,a1
+    80206d54:	1141                	addi	sp,sp,-16
+    80206d56:	e406                	sd	ra,8(sp)
+    80206d58:	e022                	sd	s0,0(sp)
+    80206d5a:	0800                	addi	s0,sp,16
+    80206d5c:	862e                	mv	a2,a1
     return lookup_path(path, 1, name);
-    80206a0e:	4585                	li	a1,1
-    80206a10:	00000097          	auipc	ra,0x0
-    80206a14:	e60080e7          	jalr	-416(ra) # 80206870 <lookup_path>
+    80206d5e:	4585                	li	a1,1
+    80206d60:	00000097          	auipc	ra,0x0
+    80206d64:	e60080e7          	jalr	-416(ra) # 80206bc0 <lookup_path>
 }
-    80206a18:	60a2                	ld	ra,8(sp)
-    80206a1a:	6402                	ld	s0,0(sp)
-    80206a1c:	0141                	addi	sp,sp,16
-    80206a1e:	8082                	ret
+    80206d68:	60a2                	ld	ra,8(sp)
+    80206d6a:	6402                	ld	s0,0(sp)
+    80206d6c:	0141                	addi	sp,sp,16
+    80206d6e:	8082                	ret
 
-0000000080206a20 <plicinit>:
+0000000080206d70 <plicinit>:
 
 //
 // the riscv Platform Level Interrupt Controller (PLIC).
 //
 
 void plicinit(void) {
-    80206a20:	1141                	addi	sp,sp,-16
-    80206a22:	e422                	sd	s0,8(sp)
-    80206a24:	0800                	addi	s0,sp,16
+    80206d70:	1141                	addi	sp,sp,-16
+    80206d72:	e422                	sd	s0,8(sp)
+    80206d74:	0800                	addi	s0,sp,16
 	writed(1, PLIC_V + DISK_IRQ * sizeof(uint32));
-    80206a26:	00fc37b7          	lui	a5,0xfc3
-    80206a2a:	07ba                	slli	a5,a5,0xe
-    80206a2c:	4705                	li	a4,1
-    80206a2e:	c3d8                	sw	a4,4(a5)
+    80206d76:	00fc37b7          	lui	a5,0xfc3
+    80206d7a:	07ba                	slli	a5,a5,0xe
+    80206d7c:	4705                	li	a4,1
+    80206d7e:	c3d8                	sw	a4,4(a5)
 	writed(1, PLIC_V + UART_IRQ * sizeof(uint32));
-    80206a30:	d798                	sw	a4,40(a5)
+    80206d80:	d798                	sw	a4,40(a5)
 
 	#ifdef DEBUG 
 	printf("plicinit\n");
 	#endif 
 }
-    80206a32:	6422                	ld	s0,8(sp)
-    80206a34:	0141                	addi	sp,sp,16
-    80206a36:	8082                	ret
+    80206d82:	6422                	ld	s0,8(sp)
+    80206d84:	0141                	addi	sp,sp,16
+    80206d86:	8082                	ret
 
-0000000080206a38 <plicinithart>:
+0000000080206d88 <plicinithart>:
 
 void
 plicinithart(void)
 {
-    80206a38:	1141                	addi	sp,sp,-16
-    80206a3a:	e406                	sd	ra,8(sp)
-    80206a3c:	e022                	sd	s0,0(sp)
-    80206a3e:	0800                	addi	s0,sp,16
+    80206d88:	1141                	addi	sp,sp,-16
+    80206d8a:	e406                	sd	ra,8(sp)
+    80206d8c:	e022                	sd	s0,0(sp)
+    80206d8e:	0800                	addi	s0,sp,16
   int hart = cpuid();
-    80206a40:	ffffb097          	auipc	ra,0xffffb
-    80206a44:	fd0080e7          	jalr	-48(ra) # 80201a10 <cpuid>
+    80206d90:	ffffb097          	auipc	ra,0xffffb
+    80206d94:	c80080e7          	jalr	-896(ra) # 80201a10 <cpuid>
   #ifdef QEMU
   // set uart's enable bit for this hart's S-mode. 
   *(uint32*)PLIC_SENABLE(hart)= (1 << UART_IRQ) | (1 << DISK_IRQ);
-    80206a48:	0085171b          	slliw	a4,a0,0x8
-    80206a4c:	01f867b7          	lui	a5,0x1f86
-    80206a50:	0785                	addi	a5,a5,1 # 1f86001 <_entry-0x7e279fff>
-    80206a52:	07b6                	slli	a5,a5,0xd
-    80206a54:	97ba                	add	a5,a5,a4
-    80206a56:	40200713          	li	a4,1026
-    80206a5a:	08e7a023          	sw	a4,128(a5)
+    80206d98:	0085171b          	slliw	a4,a0,0x8
+    80206d9c:	01f867b7          	lui	a5,0x1f86
+    80206da0:	0785                	addi	a5,a5,1 # 1f86001 <_entry-0x7e279fff>
+    80206da2:	07b6                	slli	a5,a5,0xd
+    80206da4:	97ba                	add	a5,a5,a4
+    80206da6:	40200713          	li	a4,1026
+    80206daa:	08e7a023          	sw	a4,128(a5)
   // set this hart's S-mode priority threshold to 0.
   *(uint32*)PLIC_SPRIORITY(hart) = 0;
-    80206a5e:	00d5151b          	slliw	a0,a0,0xd
-    80206a62:	03f0c7b7          	lui	a5,0x3f0c
-    80206a66:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
-    80206a6a:	07b2                	slli	a5,a5,0xc
-    80206a6c:	97aa                	add	a5,a5,a0
-    80206a6e:	0007a023          	sw	zero,0(a5)
+    80206dae:	00d5151b          	slliw	a0,a0,0xd
+    80206db2:	03f0c7b7          	lui	a5,0x3f0c
+    80206db6:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
+    80206dba:	07b2                	slli	a5,a5,0xc
+    80206dbc:	97aa                	add	a5,a5,a0
+    80206dbe:	0007a023          	sw	zero,0(a5)
   *(hart0_m_int_enable_hi) = readd(hart0_m_int_enable_hi) | (1 << (UART_IRQ % 32));
   #endif
   #ifdef DEBUG
   printf("plicinithart\n");
   #endif
 }
-    80206a72:	60a2                	ld	ra,8(sp)
-    80206a74:	6402                	ld	s0,0(sp)
-    80206a76:	0141                	addi	sp,sp,16
-    80206a78:	8082                	ret
+    80206dc2:	60a2                	ld	ra,8(sp)
+    80206dc4:	6402                	ld	s0,0(sp)
+    80206dc6:	0141                	addi	sp,sp,16
+    80206dc8:	8082                	ret
 
-0000000080206a7a <plic_claim>:
+0000000080206dca <plic_claim>:
 
 // ask the PLIC what interrupt we should serve.
 int
 plic_claim(void)
 {
-    80206a7a:	1141                	addi	sp,sp,-16
-    80206a7c:	e406                	sd	ra,8(sp)
-    80206a7e:	e022                	sd	s0,0(sp)
-    80206a80:	0800                	addi	s0,sp,16
+    80206dca:	1141                	addi	sp,sp,-16
+    80206dcc:	e406                	sd	ra,8(sp)
+    80206dce:	e022                	sd	s0,0(sp)
+    80206dd0:	0800                	addi	s0,sp,16
   int hart = cpuid();
-    80206a82:	ffffb097          	auipc	ra,0xffffb
-    80206a86:	f8e080e7          	jalr	-114(ra) # 80201a10 <cpuid>
+    80206dd2:	ffffb097          	auipc	ra,0xffffb
+    80206dd6:	c3e080e7          	jalr	-962(ra) # 80201a10 <cpuid>
   int irq;
   #ifndef QEMU
   irq = *(uint32*)PLIC_MCLAIM(hart);
   #else
   irq = *(uint32*)PLIC_SCLAIM(hart);
-    80206a8a:	00d5151b          	slliw	a0,a0,0xd
-    80206a8e:	03f0c7b7          	lui	a5,0x3f0c
-    80206a92:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
-    80206a96:	07b2                	slli	a5,a5,0xc
-    80206a98:	97aa                	add	a5,a5,a0
+    80206dda:	00d5151b          	slliw	a0,a0,0xd
+    80206dde:	03f0c7b7          	lui	a5,0x3f0c
+    80206de2:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
+    80206de6:	07b2                	slli	a5,a5,0xc
+    80206de8:	97aa                	add	a5,a5,a0
   #endif
   return irq;
 }
-    80206a9a:	43c8                	lw	a0,4(a5)
-    80206a9c:	60a2                	ld	ra,8(sp)
-    80206a9e:	6402                	ld	s0,0(sp)
-    80206aa0:	0141                	addi	sp,sp,16
-    80206aa2:	8082                	ret
+    80206dea:	43c8                	lw	a0,4(a5)
+    80206dec:	60a2                	ld	ra,8(sp)
+    80206dee:	6402                	ld	s0,0(sp)
+    80206df0:	0141                	addi	sp,sp,16
+    80206df2:	8082                	ret
 
-0000000080206aa4 <plic_complete>:
+0000000080206df4 <plic_complete>:
 
 // tell the PLIC we've served this IRQ.
 void
 plic_complete(int irq)
 {
-    80206aa4:	1101                	addi	sp,sp,-32
-    80206aa6:	ec06                	sd	ra,24(sp)
-    80206aa8:	e822                	sd	s0,16(sp)
-    80206aaa:	e426                	sd	s1,8(sp)
-    80206aac:	1000                	addi	s0,sp,32
-    80206aae:	84aa                	mv	s1,a0
+    80206df4:	1101                	addi	sp,sp,-32
+    80206df6:	ec06                	sd	ra,24(sp)
+    80206df8:	e822                	sd	s0,16(sp)
+    80206dfa:	e426                	sd	s1,8(sp)
+    80206dfc:	1000                	addi	s0,sp,32
+    80206dfe:	84aa                	mv	s1,a0
   int hart = cpuid();
-    80206ab0:	ffffb097          	auipc	ra,0xffffb
-    80206ab4:	f60080e7          	jalr	-160(ra) # 80201a10 <cpuid>
+    80206e00:	ffffb097          	auipc	ra,0xffffb
+    80206e04:	c10080e7          	jalr	-1008(ra) # 80201a10 <cpuid>
   #ifndef QEMU
   *(uint32*)PLIC_MCLAIM(hart) = irq;
   #else
   *(uint32*)PLIC_SCLAIM(hart) = irq;
-    80206ab8:	00d5151b          	slliw	a0,a0,0xd
-    80206abc:	03f0c7b7          	lui	a5,0x3f0c
-    80206ac0:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
-    80206ac4:	07b2                	slli	a5,a5,0xc
-    80206ac6:	97aa                	add	a5,a5,a0
-    80206ac8:	c3c4                	sw	s1,4(a5)
+    80206e08:	00d5151b          	slliw	a0,a0,0xd
+    80206e0c:	03f0c7b7          	lui	a5,0x3f0c
+    80206e10:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
+    80206e14:	07b2                	slli	a5,a5,0xc
+    80206e16:	97aa                	add	a5,a5,a0
+    80206e18:	c3c4                	sw	s1,4(a5)
   #endif
 }
-    80206aca:	60e2                	ld	ra,24(sp)
-    80206acc:	6442                	ld	s0,16(sp)
-    80206ace:	64a2                	ld	s1,8(sp)
-    80206ad0:	6105                	addi	sp,sp,32
-    80206ad2:	8082                	ret
+    80206e1a:	60e2                	ld	ra,24(sp)
+    80206e1c:	6442                	ld	s0,16(sp)
+    80206e1e:	64a2                	ld	s1,8(sp)
+    80206e20:	6105                	addi	sp,sp,32
+    80206e22:	8082                	ret
 
-0000000080206ad4 <consolewrite>:
+0000000080206e24 <consolewrite>:
 //
 // user write()s to the console go here.
 //
 int
 consolewrite(int user_src, uint64 src, int n)
 {
-    80206ad4:	715d                	addi	sp,sp,-80
-    80206ad6:	e486                	sd	ra,72(sp)
-    80206ad8:	e0a2                	sd	s0,64(sp)
-    80206ada:	fc26                	sd	s1,56(sp)
-    80206adc:	f84a                	sd	s2,48(sp)
-    80206ade:	f44e                	sd	s3,40(sp)
-    80206ae0:	f052                	sd	s4,32(sp)
-    80206ae2:	ec56                	sd	s5,24(sp)
-    80206ae4:	e85a                	sd	s6,16(sp)
-    80206ae6:	0880                	addi	s0,sp,80
-    80206ae8:	8a2a                	mv	s4,a0
-    80206aea:	84ae                	mv	s1,a1
-    80206aec:	89b2                	mv	s3,a2
+    80206e24:	715d                	addi	sp,sp,-80
+    80206e26:	e486                	sd	ra,72(sp)
+    80206e28:	e0a2                	sd	s0,64(sp)
+    80206e2a:	fc26                	sd	s1,56(sp)
+    80206e2c:	f84a                	sd	s2,48(sp)
+    80206e2e:	f44e                	sd	s3,40(sp)
+    80206e30:	f052                	sd	s4,32(sp)
+    80206e32:	ec56                	sd	s5,24(sp)
+    80206e34:	e85a                	sd	s6,16(sp)
+    80206e36:	0880                	addi	s0,sp,80
+    80206e38:	8a2a                	mv	s4,a0
+    80206e3a:	84ae                	mv	s1,a1
+    80206e3c:	89b2                	mv	s3,a2
   int i;
 
   acquire(&cons.lock);
-    80206aee:	0001c517          	auipc	a0,0x1c
-    80206af2:	13250513          	addi	a0,a0,306 # 80222c20 <cons>
-    80206af6:	ffffa097          	auipc	ra,0xffffa
-    80206afa:	bd0080e7          	jalr	-1072(ra) # 802006c6 <acquire>
+    80206e3e:	0001c517          	auipc	a0,0x1c
+    80206e42:	de250513          	addi	a0,a0,-542 # 80222c20 <cons>
+    80206e46:	ffffa097          	auipc	ra,0xffffa
+    80206e4a:	880080e7          	jalr	-1920(ra) # 802006c6 <acquire>
   for(i = 0; i < n; i++){
-    80206afe:	07305063          	blez	s3,80206b5e <consolewrite+0x8a>
-    80206b02:	4901                	li	s2,0
+    80206e4e:	07305063          	blez	s3,80206eae <consolewrite+0x8a>
+    80206e52:	4901                	li	s2,0
     char c;
     if(either_copyin(&c, user_src, src+i, 1) == -1)
-    80206b04:	fbf40b13          	addi	s6,s0,-65
-    80206b08:	5afd                	li	s5,-1
-    80206b0a:	4685                	li	a3,1
-    80206b0c:	8626                	mv	a2,s1
-    80206b0e:	85d2                	mv	a1,s4
-    80206b10:	855a                	mv	a0,s6
-    80206b12:	ffffc097          	auipc	ra,0xffffc
-    80206b16:	a36080e7          	jalr	-1482(ra) # 80202548 <either_copyin>
-    80206b1a:	01550f63          	beq	a0,s5,80206b38 <consolewrite+0x64>
+    80206e54:	fbf40b13          	addi	s6,s0,-65
+    80206e58:	5afd                	li	s5,-1
+    80206e5a:	4685                	li	a3,1
+    80206e5c:	8626                	mv	a2,s1
+    80206e5e:	85d2                	mv	a1,s4
+    80206e60:	855a                	mv	a0,s6
+    80206e62:	ffffb097          	auipc	ra,0xffffb
+    80206e66:	6e6080e7          	jalr	1766(ra) # 80202548 <either_copyin>
+    80206e6a:	01550f63          	beq	a0,s5,80206e88 <consolewrite+0x64>
 	SBI_CALL_1(SBI_CONSOLE_PUTCHAR, ch);
-    80206b1e:	fbf44503          	lbu	a0,-65(s0)
-    80206b22:	4581                	li	a1,0
-    80206b24:	4601                	li	a2,0
-    80206b26:	4681                	li	a3,0
-    80206b28:	4885                	li	a7,1
-    80206b2a:	00000073          	ecall
+    80206e6e:	fbf44503          	lbu	a0,-65(s0)
+    80206e72:	4581                	li	a1,0
+    80206e74:	4601                	li	a2,0
+    80206e76:	4681                	li	a3,0
+    80206e78:	4885                	li	a7,1
+    80206e7a:	00000073          	ecall
   for(i = 0; i < n; i++){
-    80206b2e:	2905                	addiw	s2,s2,1
-    80206b30:	0485                	addi	s1,s1,1
-    80206b32:	fd299ce3          	bne	s3,s2,80206b0a <consolewrite+0x36>
-    80206b36:	894e                	mv	s2,s3
+    80206e7e:	2905                	addiw	s2,s2,1
+    80206e80:	0485                	addi	s1,s1,1
+    80206e82:	fd299ce3          	bne	s3,s2,80206e5a <consolewrite+0x36>
+    80206e86:	894e                	mv	s2,s3
       break;
     sbi_console_putchar(c);
   }
   release(&cons.lock);
-    80206b38:	0001c517          	auipc	a0,0x1c
-    80206b3c:	0e850513          	addi	a0,a0,232 # 80222c20 <cons>
-    80206b40:	ffffa097          	auipc	ra,0xffffa
-    80206b44:	bda080e7          	jalr	-1062(ra) # 8020071a <release>
+    80206e88:	0001c517          	auipc	a0,0x1c
+    80206e8c:	d9850513          	addi	a0,a0,-616 # 80222c20 <cons>
+    80206e90:	ffffa097          	auipc	ra,0xffffa
+    80206e94:	88a080e7          	jalr	-1910(ra) # 8020071a <release>
 
   return i;
 }
-    80206b48:	854a                	mv	a0,s2
-    80206b4a:	60a6                	ld	ra,72(sp)
-    80206b4c:	6406                	ld	s0,64(sp)
-    80206b4e:	74e2                	ld	s1,56(sp)
-    80206b50:	7942                	ld	s2,48(sp)
-    80206b52:	79a2                	ld	s3,40(sp)
-    80206b54:	7a02                	ld	s4,32(sp)
-    80206b56:	6ae2                	ld	s5,24(sp)
-    80206b58:	6b42                	ld	s6,16(sp)
-    80206b5a:	6161                	addi	sp,sp,80
-    80206b5c:	8082                	ret
+    80206e98:	854a                	mv	a0,s2
+    80206e9a:	60a6                	ld	ra,72(sp)
+    80206e9c:	6406                	ld	s0,64(sp)
+    80206e9e:	74e2                	ld	s1,56(sp)
+    80206ea0:	7942                	ld	s2,48(sp)
+    80206ea2:	79a2                	ld	s3,40(sp)
+    80206ea4:	7a02                	ld	s4,32(sp)
+    80206ea6:	6ae2                	ld	s5,24(sp)
+    80206ea8:	6b42                	ld	s6,16(sp)
+    80206eaa:	6161                	addi	sp,sp,80
+    80206eac:	8082                	ret
   for(i = 0; i < n; i++){
-    80206b5e:	4901                	li	s2,0
-    80206b60:	bfe1                	j	80206b38 <consolewrite+0x64>
+    80206eae:	4901                	li	s2,0
+    80206eb0:	bfe1                	j	80206e88 <consolewrite+0x64>
 
-0000000080206b62 <consoleread>:
+0000000080206eb2 <consoleread>:
 // user_dist indicates whether dst is a user
 // or kernel address.
 //
 int
 consoleread(int user_dst, uint64 dst, int n)
 {
-    80206b62:	7119                	addi	sp,sp,-128
-    80206b64:	fc86                	sd	ra,120(sp)
-    80206b66:	f8a2                	sd	s0,112(sp)
-    80206b68:	f4a6                	sd	s1,104(sp)
-    80206b6a:	f0ca                	sd	s2,96(sp)
-    80206b6c:	ecce                	sd	s3,88(sp)
-    80206b6e:	e8d2                	sd	s4,80(sp)
-    80206b70:	e4d6                	sd	s5,72(sp)
-    80206b72:	e0da                	sd	s6,64(sp)
-    80206b74:	fc5e                	sd	s7,56(sp)
-    80206b76:	f862                	sd	s8,48(sp)
-    80206b78:	f466                	sd	s9,40(sp)
-    80206b7a:	f06a                	sd	s10,32(sp)
-    80206b7c:	ec6e                	sd	s11,24(sp)
-    80206b7e:	0100                	addi	s0,sp,128
-    80206b80:	8aaa                	mv	s5,a0
-    80206b82:	8a2e                	mv	s4,a1
-    80206b84:	89b2                	mv	s3,a2
+    80206eb2:	7119                	addi	sp,sp,-128
+    80206eb4:	fc86                	sd	ra,120(sp)
+    80206eb6:	f8a2                	sd	s0,112(sp)
+    80206eb8:	f4a6                	sd	s1,104(sp)
+    80206eba:	f0ca                	sd	s2,96(sp)
+    80206ebc:	ecce                	sd	s3,88(sp)
+    80206ebe:	e8d2                	sd	s4,80(sp)
+    80206ec0:	e4d6                	sd	s5,72(sp)
+    80206ec2:	e0da                	sd	s6,64(sp)
+    80206ec4:	fc5e                	sd	s7,56(sp)
+    80206ec6:	f862                	sd	s8,48(sp)
+    80206ec8:	f466                	sd	s9,40(sp)
+    80206eca:	f06a                	sd	s10,32(sp)
+    80206ecc:	ec6e                	sd	s11,24(sp)
+    80206ece:	0100                	addi	s0,sp,128
+    80206ed0:	8aaa                	mv	s5,a0
+    80206ed2:	8a2e                	mv	s4,a1
+    80206ed4:	89b2                	mv	s3,a2
   uint target;
   int c;
   char cbuf;
 
   target = n;
-    80206b86:	00060b1b          	sext.w	s6,a2
+    80206ed6:	00060b1b          	sext.w	s6,a2
   acquire(&cons.lock);
-    80206b8a:	0001c517          	auipc	a0,0x1c
-    80206b8e:	09650513          	addi	a0,a0,150 # 80222c20 <cons>
-    80206b92:	ffffa097          	auipc	ra,0xffffa
-    80206b96:	b34080e7          	jalr	-1228(ra) # 802006c6 <acquire>
+    80206eda:	0001c517          	auipc	a0,0x1c
+    80206ede:	d4650513          	addi	a0,a0,-698 # 80222c20 <cons>
+    80206ee2:	ffff9097          	auipc	ra,0xffff9
+    80206ee6:	7e4080e7          	jalr	2020(ra) # 802006c6 <acquire>
   while(n > 0){
     // wait until interrupt handler has put some
     // input into cons.buffer.
     while(cons.r == cons.w){
-    80206b9a:	0001c497          	auipc	s1,0x1c
-    80206b9e:	08648493          	addi	s1,s1,134 # 80222c20 <cons>
+    80206eea:	0001c497          	auipc	s1,0x1c
+    80206eee:	d3648493          	addi	s1,s1,-714 # 80222c20 <cons>
       if(myproc()->killed){
         release(&cons.lock);
         return -1;
       }
       sleep(&cons.r, &cons.lock);
-    80206ba2:	0001c917          	auipc	s2,0x1c
-    80206ba6:	11690913          	addi	s2,s2,278 # 80222cb8 <cons+0x98>
+    80206ef2:	0001c917          	auipc	s2,0x1c
+    80206ef6:	dc690913          	addi	s2,s2,-570 # 80222cb8 <cons+0x98>
     }
 
     c = cons.buf[cons.r++ % INPUT_BUF];
 
     if(c == C('D')){  // end-of-file
-    80206baa:	4c11                	li	s8,4
+    80206efa:	4c11                	li	s8,4
       break;
     }
 
     // copy the input byte to the user-space buffer.
     cbuf = c;
     if(either_copyout(user_dst, dst, &cbuf, 1) == -1)
-    80206bac:	f8f40d13          	addi	s10,s0,-113
-    80206bb0:	5cfd                	li	s9,-1
+    80206efc:	f8f40d13          	addi	s10,s0,-113
+    80206f00:	5cfd                	li	s9,-1
       break;
 
     dst++;
     --n;
 
     if(c == '\n'){
-    80206bb2:	4da9                	li	s11,10
+    80206f02:	4da9                	li	s11,10
   while(n > 0){
-    80206bb4:	07305763          	blez	s3,80206c22 <consoleread+0xc0>
+    80206f04:	07305763          	blez	s3,80206f72 <consoleread+0xc0>
     while(cons.r == cons.w){
-    80206bb8:	0984a783          	lw	a5,152(s1)
-    80206bbc:	09c4a703          	lw	a4,156(s1)
-    80206bc0:	02f71463          	bne	a4,a5,80206be8 <consoleread+0x86>
+    80206f08:	0984a783          	lw	a5,152(s1)
+    80206f0c:	09c4a703          	lw	a4,156(s1)
+    80206f10:	02f71463          	bne	a4,a5,80206f38 <consoleread+0x86>
       if(myproc()->killed){
-    80206bc4:	ffffb097          	auipc	ra,0xffffb
-    80206bc8:	e78080e7          	jalr	-392(ra) # 80201a3c <myproc>
-    80206bcc:	591c                	lw	a5,48(a0)
-    80206bce:	e7ad                	bnez	a5,80206c38 <consoleread+0xd6>
+    80206f14:	ffffb097          	auipc	ra,0xffffb
+    80206f18:	b28080e7          	jalr	-1240(ra) # 80201a3c <myproc>
+    80206f1c:	591c                	lw	a5,48(a0)
+    80206f1e:	e7ad                	bnez	a5,80206f88 <consoleread+0xd6>
       sleep(&cons.r, &cons.lock);
-    80206bd0:	85a6                	mv	a1,s1
-    80206bd2:	854a                	mv	a0,s2
-    80206bd4:	ffffb097          	auipc	ra,0xffffb
-    80206bd8:	6e8080e7          	jalr	1768(ra) # 802022bc <sleep>
+    80206f20:	85a6                	mv	a1,s1
+    80206f22:	854a                	mv	a0,s2
+    80206f24:	ffffb097          	auipc	ra,0xffffb
+    80206f28:	398080e7          	jalr	920(ra) # 802022bc <sleep>
     while(cons.r == cons.w){
-    80206bdc:	0984a783          	lw	a5,152(s1)
-    80206be0:	09c4a703          	lw	a4,156(s1)
-    80206be4:	fef700e3          	beq	a4,a5,80206bc4 <consoleread+0x62>
+    80206f2c:	0984a783          	lw	a5,152(s1)
+    80206f30:	09c4a703          	lw	a4,156(s1)
+    80206f34:	fef700e3          	beq	a4,a5,80206f14 <consoleread+0x62>
     c = cons.buf[cons.r++ % INPUT_BUF];
-    80206be8:	0017871b          	addiw	a4,a5,1
-    80206bec:	08e4ac23          	sw	a4,152(s1)
-    80206bf0:	07f7f713          	andi	a4,a5,127
-    80206bf4:	9726                	add	a4,a4,s1
-    80206bf6:	01874703          	lbu	a4,24(a4)
-    80206bfa:	00070b9b          	sext.w	s7,a4
+    80206f38:	0017871b          	addiw	a4,a5,1
+    80206f3c:	08e4ac23          	sw	a4,152(s1)
+    80206f40:	07f7f713          	andi	a4,a5,127
+    80206f44:	9726                	add	a4,a4,s1
+    80206f46:	01874703          	lbu	a4,24(a4)
+    80206f4a:	00070b9b          	sext.w	s7,a4
     if(c == C('D')){  // end-of-file
-    80206bfe:	078b8563          	beq	s7,s8,80206c68 <consoleread+0x106>
+    80206f4e:	078b8563          	beq	s7,s8,80206fb8 <consoleread+0x106>
     cbuf = c;
-    80206c02:	f8e407a3          	sb	a4,-113(s0)
+    80206f52:	f8e407a3          	sb	a4,-113(s0)
     if(either_copyout(user_dst, dst, &cbuf, 1) == -1)
-    80206c06:	4685                	li	a3,1
-    80206c08:	866a                	mv	a2,s10
-    80206c0a:	85d2                	mv	a1,s4
-    80206c0c:	8556                	mv	a0,s5
-    80206c0e:	ffffc097          	auipc	ra,0xffffc
-    80206c12:	904080e7          	jalr	-1788(ra) # 80202512 <either_copyout>
-    80206c16:	01950663          	beq	a0,s9,80206c22 <consoleread+0xc0>
+    80206f56:	4685                	li	a3,1
+    80206f58:	866a                	mv	a2,s10
+    80206f5a:	85d2                	mv	a1,s4
+    80206f5c:	8556                	mv	a0,s5
+    80206f5e:	ffffb097          	auipc	ra,0xffffb
+    80206f62:	5b4080e7          	jalr	1460(ra) # 80202512 <either_copyout>
+    80206f66:	01950663          	beq	a0,s9,80206f72 <consoleread+0xc0>
     dst++;
-    80206c1a:	0a05                	addi	s4,s4,1
+    80206f6a:	0a05                	addi	s4,s4,1
     --n;
-    80206c1c:	39fd                	addiw	s3,s3,-1
+    80206f6c:	39fd                	addiw	s3,s3,-1
     if(c == '\n'){
-    80206c1e:	f9bb9be3          	bne	s7,s11,80206bb4 <consoleread+0x52>
+    80206f6e:	f9bb9be3          	bne	s7,s11,80206f04 <consoleread+0x52>
       // a whole line has arrived, return to
       // the user-level read().
       break;
     }
   }
   release(&cons.lock);
-    80206c22:	0001c517          	auipc	a0,0x1c
-    80206c26:	ffe50513          	addi	a0,a0,-2 # 80222c20 <cons>
-    80206c2a:	ffffa097          	auipc	ra,0xffffa
-    80206c2e:	af0080e7          	jalr	-1296(ra) # 8020071a <release>
+    80206f72:	0001c517          	auipc	a0,0x1c
+    80206f76:	cae50513          	addi	a0,a0,-850 # 80222c20 <cons>
+    80206f7a:	ffff9097          	auipc	ra,0xffff9
+    80206f7e:	7a0080e7          	jalr	1952(ra) # 8020071a <release>
 
   return target - n;
-    80206c32:	413b053b          	subw	a0,s6,s3
-    80206c36:	a811                	j	80206c4a <consoleread+0xe8>
+    80206f82:	413b053b          	subw	a0,s6,s3
+    80206f86:	a811                	j	80206f9a <consoleread+0xe8>
         release(&cons.lock);
-    80206c38:	0001c517          	auipc	a0,0x1c
-    80206c3c:	fe850513          	addi	a0,a0,-24 # 80222c20 <cons>
-    80206c40:	ffffa097          	auipc	ra,0xffffa
-    80206c44:	ada080e7          	jalr	-1318(ra) # 8020071a <release>
+    80206f88:	0001c517          	auipc	a0,0x1c
+    80206f8c:	c9850513          	addi	a0,a0,-872 # 80222c20 <cons>
+    80206f90:	ffff9097          	auipc	ra,0xffff9
+    80206f94:	78a080e7          	jalr	1930(ra) # 8020071a <release>
         return -1;
-    80206c48:	557d                	li	a0,-1
-}
-    80206c4a:	70e6                	ld	ra,120(sp)
-    80206c4c:	7446                	ld	s0,112(sp)
-    80206c4e:	74a6                	ld	s1,104(sp)
-    80206c50:	7906                	ld	s2,96(sp)
-    80206c52:	69e6                	ld	s3,88(sp)
-    80206c54:	6a46                	ld	s4,80(sp)
-    80206c56:	6aa6                	ld	s5,72(sp)
-    80206c58:	6b06                	ld	s6,64(sp)
-    80206c5a:	7be2                	ld	s7,56(sp)
-    80206c5c:	7c42                	ld	s8,48(sp)
-    80206c5e:	7ca2                	ld	s9,40(sp)
-    80206c60:	7d02                	ld	s10,32(sp)
-    80206c62:	6de2                	ld	s11,24(sp)
-    80206c64:	6109                	addi	sp,sp,128
-    80206c66:	8082                	ret
+    80206f98:	557d                	li	a0,-1
+}
+    80206f9a:	70e6                	ld	ra,120(sp)
+    80206f9c:	7446                	ld	s0,112(sp)
+    80206f9e:	74a6                	ld	s1,104(sp)
+    80206fa0:	7906                	ld	s2,96(sp)
+    80206fa2:	69e6                	ld	s3,88(sp)
+    80206fa4:	6a46                	ld	s4,80(sp)
+    80206fa6:	6aa6                	ld	s5,72(sp)
+    80206fa8:	6b06                	ld	s6,64(sp)
+    80206faa:	7be2                	ld	s7,56(sp)
+    80206fac:	7c42                	ld	s8,48(sp)
+    80206fae:	7ca2                	ld	s9,40(sp)
+    80206fb0:	7d02                	ld	s10,32(sp)
+    80206fb2:	6de2                	ld	s11,24(sp)
+    80206fb4:	6109                	addi	sp,sp,128
+    80206fb6:	8082                	ret
       if(n < target){
-    80206c68:	0009871b          	sext.w	a4,s3
-    80206c6c:	fb677be3          	bgeu	a4,s6,80206c22 <consoleread+0xc0>
+    80206fb8:	0009871b          	sext.w	a4,s3
+    80206fbc:	fb677be3          	bgeu	a4,s6,80206f72 <consoleread+0xc0>
         cons.r--;
-    80206c70:	0001c717          	auipc	a4,0x1c
-    80206c74:	04f72423          	sw	a5,72(a4) # 80222cb8 <cons+0x98>
-    80206c78:	b76d                	j	80206c22 <consoleread+0xc0>
+    80206fc0:	0001c717          	auipc	a4,0x1c
+    80206fc4:	cef72c23          	sw	a5,-776(a4) # 80222cb8 <cons+0x98>
+    80206fc8:	b76d                	j	80206f72 <consoleread+0xc0>
 
-0000000080206c7a <consputc>:
+0000000080206fca <consputc>:
 void consputc(int c) {
-    80206c7a:	1141                	addi	sp,sp,-16
-    80206c7c:	e422                	sd	s0,8(sp)
-    80206c7e:	0800                	addi	s0,sp,16
+    80206fca:	1141                	addi	sp,sp,-16
+    80206fcc:	e422                	sd	s0,8(sp)
+    80206fce:	0800                	addi	s0,sp,16
   if(c == BACKSPACE){
-    80206c80:	10000793          	li	a5,256
-    80206c84:	00f50b63          	beq	a0,a5,80206c9a <consputc+0x20>
-    80206c88:	4581                	li	a1,0
-    80206c8a:	4601                	li	a2,0
-    80206c8c:	4681                	li	a3,0
-    80206c8e:	4885                	li	a7,1
-    80206c90:	00000073          	ecall
-}
-    80206c94:	6422                	ld	s0,8(sp)
-    80206c96:	0141                	addi	sp,sp,16
-    80206c98:	8082                	ret
-    80206c9a:	4521                	li	a0,8
-    80206c9c:	4581                	li	a1,0
-    80206c9e:	4601                	li	a2,0
-    80206ca0:	4681                	li	a3,0
-    80206ca2:	4885                	li	a7,1
-    80206ca4:	00000073          	ecall
-    80206ca8:	02000513          	li	a0,32
-    80206cac:	00000073          	ecall
-    80206cb0:	4521                	li	a0,8
-    80206cb2:	00000073          	ecall
-}
-    80206cb6:	bff9                	j	80206c94 <consputc+0x1a>
-
-0000000080206cb8 <consoleintr>:
+    80206fd0:	10000793          	li	a5,256
+    80206fd4:	00f50b63          	beq	a0,a5,80206fea <consputc+0x20>
+    80206fd8:	4581                	li	a1,0
+    80206fda:	4601                	li	a2,0
+    80206fdc:	4681                	li	a3,0
+    80206fde:	4885                	li	a7,1
+    80206fe0:	00000073          	ecall
+}
+    80206fe4:	6422                	ld	s0,8(sp)
+    80206fe6:	0141                	addi	sp,sp,16
+    80206fe8:	8082                	ret
+    80206fea:	4521                	li	a0,8
+    80206fec:	4581                	li	a1,0
+    80206fee:	4601                	li	a2,0
+    80206ff0:	4681                	li	a3,0
+    80206ff2:	4885                	li	a7,1
+    80206ff4:	00000073          	ecall
+    80206ff8:	02000513          	li	a0,32
+    80206ffc:	00000073          	ecall
+    80207000:	4521                	li	a0,8
+    80207002:	00000073          	ecall
+}
+    80207006:	bff9                	j	80206fe4 <consputc+0x1a>
+
+0000000080207008 <consoleintr>:
 // do erase/kill processing, append to cons.buf,
 // wake up consoleread() if a whole line has arrived.
 //
 void
 consoleintr(int c)
 {
-    80206cb8:	1101                	addi	sp,sp,-32
-    80206cba:	ec06                	sd	ra,24(sp)
-    80206cbc:	e822                	sd	s0,16(sp)
-    80206cbe:	e426                	sd	s1,8(sp)
-    80206cc0:	e04a                	sd	s2,0(sp)
-    80206cc2:	1000                	addi	s0,sp,32
-    80206cc4:	84aa                	mv	s1,a0
+    80207008:	1101                	addi	sp,sp,-32
+    8020700a:	ec06                	sd	ra,24(sp)
+    8020700c:	e822                	sd	s0,16(sp)
+    8020700e:	e426                	sd	s1,8(sp)
+    80207010:	e04a                	sd	s2,0(sp)
+    80207012:	1000                	addi	s0,sp,32
+    80207014:	84aa                	mv	s1,a0
   acquire(&cons.lock);
-    80206cc6:	0001c517          	auipc	a0,0x1c
-    80206cca:	f5a50513          	addi	a0,a0,-166 # 80222c20 <cons>
-    80206cce:	ffffa097          	auipc	ra,0xffffa
-    80206cd2:	9f8080e7          	jalr	-1544(ra) # 802006c6 <acquire>
+    80207016:	0001c517          	auipc	a0,0x1c
+    8020701a:	c0a50513          	addi	a0,a0,-1014 # 80222c20 <cons>
+    8020701e:	ffff9097          	auipc	ra,0xffff9
+    80207022:	6a8080e7          	jalr	1704(ra) # 802006c6 <acquire>
 
   switch(c){
-    80206cd6:	47d5                	li	a5,21
-    80206cd8:	0af48663          	beq	s1,a5,80206d84 <consoleintr+0xcc>
-    80206cdc:	0297ca63          	blt	a5,s1,80206d10 <consoleintr+0x58>
-    80206ce0:	47a1                	li	a5,8
-    80206ce2:	0ef48763          	beq	s1,a5,80206dd0 <consoleintr+0x118>
-    80206ce6:	47c1                	li	a5,16
-    80206ce8:	10f49a63          	bne	s1,a5,80206dfc <consoleintr+0x144>
+    80207026:	47d5                	li	a5,21
+    80207028:	0af48663          	beq	s1,a5,802070d4 <consoleintr+0xcc>
+    8020702c:	0297ca63          	blt	a5,s1,80207060 <consoleintr+0x58>
+    80207030:	47a1                	li	a5,8
+    80207032:	0ef48763          	beq	s1,a5,80207120 <consoleintr+0x118>
+    80207036:	47c1                	li	a5,16
+    80207038:	10f49a63          	bne	s1,a5,8020714c <consoleintr+0x144>
   case C('P'):  // Print process list.
     procdump();
-    80206cec:	ffffc097          	auipc	ra,0xffffc
-    80206cf0:	890080e7          	jalr	-1904(ra) # 8020257c <procdump>
+    8020703c:	ffffb097          	auipc	ra,0xffffb
+    80207040:	540080e7          	jalr	1344(ra) # 8020257c <procdump>
       }
     }
     break;
   }
   
   release(&cons.lock);
-    80206cf4:	0001c517          	auipc	a0,0x1c
-    80206cf8:	f2c50513          	addi	a0,a0,-212 # 80222c20 <cons>
-    80206cfc:	ffffa097          	auipc	ra,0xffffa
-    80206d00:	a1e080e7          	jalr	-1506(ra) # 8020071a <release>
-}
-    80206d04:	60e2                	ld	ra,24(sp)
-    80206d06:	6442                	ld	s0,16(sp)
-    80206d08:	64a2                	ld	s1,8(sp)
-    80206d0a:	6902                	ld	s2,0(sp)
-    80206d0c:	6105                	addi	sp,sp,32
-    80206d0e:	8082                	ret
+    80207044:	0001c517          	auipc	a0,0x1c
+    80207048:	bdc50513          	addi	a0,a0,-1060 # 80222c20 <cons>
+    8020704c:	ffff9097          	auipc	ra,0xffff9
+    80207050:	6ce080e7          	jalr	1742(ra) # 8020071a <release>
+}
+    80207054:	60e2                	ld	ra,24(sp)
+    80207056:	6442                	ld	s0,16(sp)
+    80207058:	64a2                	ld	s1,8(sp)
+    8020705a:	6902                	ld	s2,0(sp)
+    8020705c:	6105                	addi	sp,sp,32
+    8020705e:	8082                	ret
   switch(c){
-    80206d10:	07f00793          	li	a5,127
-    80206d14:	0af48e63          	beq	s1,a5,80206dd0 <consoleintr+0x118>
+    80207060:	07f00793          	li	a5,127
+    80207064:	0af48e63          	beq	s1,a5,80207120 <consoleintr+0x118>
     if(c != 0 && cons.e-cons.r < INPUT_BUF){
-    80206d18:	0001c717          	auipc	a4,0x1c
-    80206d1c:	f0870713          	addi	a4,a4,-248 # 80222c20 <cons>
-    80206d20:	0a072783          	lw	a5,160(a4)
-    80206d24:	09872703          	lw	a4,152(a4)
-    80206d28:	9f99                	subw	a5,a5,a4
-    80206d2a:	07f00713          	li	a4,127
-    80206d2e:	fcf763e3          	bltu	a4,a5,80206cf4 <consoleintr+0x3c>
+    80207068:	0001c717          	auipc	a4,0x1c
+    8020706c:	bb870713          	addi	a4,a4,-1096 # 80222c20 <cons>
+    80207070:	0a072783          	lw	a5,160(a4)
+    80207074:	09872703          	lw	a4,152(a4)
+    80207078:	9f99                	subw	a5,a5,a4
+    8020707a:	07f00713          	li	a4,127
+    8020707e:	fcf763e3          	bltu	a4,a5,80207044 <consoleintr+0x3c>
       c = (c == '\r') ? '\n' : c;
-    80206d32:	47b5                	li	a5,13
-    80206d34:	0cf48763          	beq	s1,a5,80206e02 <consoleintr+0x14a>
+    80207082:	47b5                	li	a5,13
+    80207084:	0cf48763          	beq	s1,a5,80207152 <consoleintr+0x14a>
       consputc(c);
-    80206d38:	8526                	mv	a0,s1
-    80206d3a:	00000097          	auipc	ra,0x0
-    80206d3e:	f40080e7          	jalr	-192(ra) # 80206c7a <consputc>
+    80207088:	8526                	mv	a0,s1
+    8020708a:	00000097          	auipc	ra,0x0
+    8020708e:	f40080e7          	jalr	-192(ra) # 80206fca <consputc>
       cons.buf[cons.e++ % INPUT_BUF] = c;
-    80206d42:	0001c797          	auipc	a5,0x1c
-    80206d46:	ede78793          	addi	a5,a5,-290 # 80222c20 <cons>
-    80206d4a:	0a07a703          	lw	a4,160(a5)
-    80206d4e:	0017069b          	addiw	a3,a4,1
-    80206d52:	0006861b          	sext.w	a2,a3
-    80206d56:	0ad7a023          	sw	a3,160(a5)
-    80206d5a:	07f77713          	andi	a4,a4,127
-    80206d5e:	97ba                	add	a5,a5,a4
-    80206d60:	00978c23          	sb	s1,24(a5)
+    80207092:	0001c797          	auipc	a5,0x1c
+    80207096:	b8e78793          	addi	a5,a5,-1138 # 80222c20 <cons>
+    8020709a:	0a07a703          	lw	a4,160(a5)
+    8020709e:	0017069b          	addiw	a3,a4,1
+    802070a2:	0006861b          	sext.w	a2,a3
+    802070a6:	0ad7a023          	sw	a3,160(a5)
+    802070aa:	07f77713          	andi	a4,a4,127
+    802070ae:	97ba                	add	a5,a5,a4
+    802070b0:	00978c23          	sb	s1,24(a5)
       if(c == '\n' || c == C('D') || cons.e == cons.r+INPUT_BUF){
-    80206d64:	47a9                	li	a5,10
-    80206d66:	0cf48563          	beq	s1,a5,80206e30 <consoleintr+0x178>
-    80206d6a:	4791                	li	a5,4
-    80206d6c:	0cf48263          	beq	s1,a5,80206e30 <consoleintr+0x178>
-    80206d70:	0001c797          	auipc	a5,0x1c
-    80206d74:	f487a783          	lw	a5,-184(a5) # 80222cb8 <cons+0x98>
-    80206d78:	0807879b          	addiw	a5,a5,128
-    80206d7c:	f6f61ce3          	bne	a2,a5,80206cf4 <consoleintr+0x3c>
+    802070b4:	47a9                	li	a5,10
+    802070b6:	0cf48563          	beq	s1,a5,80207180 <consoleintr+0x178>
+    802070ba:	4791                	li	a5,4
+    802070bc:	0cf48263          	beq	s1,a5,80207180 <consoleintr+0x178>
+    802070c0:	0001c797          	auipc	a5,0x1c
+    802070c4:	bf87a783          	lw	a5,-1032(a5) # 80222cb8 <cons+0x98>
+    802070c8:	0807879b          	addiw	a5,a5,128
+    802070cc:	f6f61ce3          	bne	a2,a5,80207044 <consoleintr+0x3c>
       cons.buf[cons.e++ % INPUT_BUF] = c;
-    80206d80:	863e                	mv	a2,a5
-    80206d82:	a07d                	j	80206e30 <consoleintr+0x178>
+    802070d0:	863e                	mv	a2,a5
+    802070d2:	a07d                	j	80207180 <consoleintr+0x178>
     while(cons.e != cons.w &&
-    80206d84:	0001c717          	auipc	a4,0x1c
-    80206d88:	e9c70713          	addi	a4,a4,-356 # 80222c20 <cons>
-    80206d8c:	0a072783          	lw	a5,160(a4)
-    80206d90:	09c72703          	lw	a4,156(a4)
+    802070d4:	0001c717          	auipc	a4,0x1c
+    802070d8:	b4c70713          	addi	a4,a4,-1204 # 80222c20 <cons>
+    802070dc:	0a072783          	lw	a5,160(a4)
+    802070e0:	09c72703          	lw	a4,156(a4)
           cons.buf[(cons.e-1) % INPUT_BUF] != '\n'){
-    80206d94:	0001c497          	auipc	s1,0x1c
-    80206d98:	e8c48493          	addi	s1,s1,-372 # 80222c20 <cons>
+    802070e4:	0001c497          	auipc	s1,0x1c
+    802070e8:	b3c48493          	addi	s1,s1,-1220 # 80222c20 <cons>
     while(cons.e != cons.w &&
-    80206d9c:	4929                	li	s2,10
-    80206d9e:	f4f70be3          	beq	a4,a5,80206cf4 <consoleintr+0x3c>
+    802070ec:	4929                	li	s2,10
+    802070ee:	f4f70be3          	beq	a4,a5,80207044 <consoleintr+0x3c>
           cons.buf[(cons.e-1) % INPUT_BUF] != '\n'){
-    80206da2:	37fd                	addiw	a5,a5,-1
-    80206da4:	07f7f713          	andi	a4,a5,127
-    80206da8:	9726                	add	a4,a4,s1
+    802070f2:	37fd                	addiw	a5,a5,-1
+    802070f4:	07f7f713          	andi	a4,a5,127
+    802070f8:	9726                	add	a4,a4,s1
     while(cons.e != cons.w &&
-    80206daa:	01874703          	lbu	a4,24(a4)
-    80206dae:	f52703e3          	beq	a4,s2,80206cf4 <consoleintr+0x3c>
+    802070fa:	01874703          	lbu	a4,24(a4)
+    802070fe:	f52703e3          	beq	a4,s2,80207044 <consoleintr+0x3c>
       cons.e--;
-    80206db2:	0af4a023          	sw	a5,160(s1)
+    80207102:	0af4a023          	sw	a5,160(s1)
       consputc(BACKSPACE);
-    80206db6:	10000513          	li	a0,256
-    80206dba:	00000097          	auipc	ra,0x0
-    80206dbe:	ec0080e7          	jalr	-320(ra) # 80206c7a <consputc>
+    80207106:	10000513          	li	a0,256
+    8020710a:	00000097          	auipc	ra,0x0
+    8020710e:	ec0080e7          	jalr	-320(ra) # 80206fca <consputc>
     while(cons.e != cons.w &&
-    80206dc2:	0a04a783          	lw	a5,160(s1)
-    80206dc6:	09c4a703          	lw	a4,156(s1)
-    80206dca:	fcf71ce3          	bne	a4,a5,80206da2 <consoleintr+0xea>
-    80206dce:	b71d                	j	80206cf4 <consoleintr+0x3c>
+    80207112:	0a04a783          	lw	a5,160(s1)
+    80207116:	09c4a703          	lw	a4,156(s1)
+    8020711a:	fcf71ce3          	bne	a4,a5,802070f2 <consoleintr+0xea>
+    8020711e:	b71d                	j	80207044 <consoleintr+0x3c>
     if(cons.e != cons.w){
-    80206dd0:	0001c717          	auipc	a4,0x1c
-    80206dd4:	e5070713          	addi	a4,a4,-432 # 80222c20 <cons>
-    80206dd8:	0a072783          	lw	a5,160(a4)
-    80206ddc:	09c72703          	lw	a4,156(a4)
-    80206de0:	f0f70ae3          	beq	a4,a5,80206cf4 <consoleintr+0x3c>
+    80207120:	0001c717          	auipc	a4,0x1c
+    80207124:	b0070713          	addi	a4,a4,-1280 # 80222c20 <cons>
+    80207128:	0a072783          	lw	a5,160(a4)
+    8020712c:	09c72703          	lw	a4,156(a4)
+    80207130:	f0f70ae3          	beq	a4,a5,80207044 <consoleintr+0x3c>
       cons.e--;
-    80206de4:	37fd                	addiw	a5,a5,-1
-    80206de6:	0001c717          	auipc	a4,0x1c
-    80206dea:	ecf72d23          	sw	a5,-294(a4) # 80222cc0 <cons+0xa0>
+    80207134:	37fd                	addiw	a5,a5,-1
+    80207136:	0001c717          	auipc	a4,0x1c
+    8020713a:	b8f72523          	sw	a5,-1142(a4) # 80222cc0 <cons+0xa0>
       consputc(BACKSPACE);
-    80206dee:	10000513          	li	a0,256
-    80206df2:	00000097          	auipc	ra,0x0
-    80206df6:	e88080e7          	jalr	-376(ra) # 80206c7a <consputc>
-    80206dfa:	bded                	j	80206cf4 <consoleintr+0x3c>
+    8020713e:	10000513          	li	a0,256
+    80207142:	00000097          	auipc	ra,0x0
+    80207146:	e88080e7          	jalr	-376(ra) # 80206fca <consputc>
+    8020714a:	bded                	j	80207044 <consoleintr+0x3c>
     if(c != 0 && cons.e-cons.r < INPUT_BUF){
-    80206dfc:	ee048ce3          	beqz	s1,80206cf4 <consoleintr+0x3c>
-    80206e00:	bf21                	j	80206d18 <consoleintr+0x60>
+    8020714c:	ee048ce3          	beqz	s1,80207044 <consoleintr+0x3c>
+    80207150:	bf21                	j	80207068 <consoleintr+0x60>
       consputc(c);
-    80206e02:	4529                	li	a0,10
-    80206e04:	00000097          	auipc	ra,0x0
-    80206e08:	e76080e7          	jalr	-394(ra) # 80206c7a <consputc>
+    80207152:	4529                	li	a0,10
+    80207154:	00000097          	auipc	ra,0x0
+    80207158:	e76080e7          	jalr	-394(ra) # 80206fca <consputc>
       cons.buf[cons.e++ % INPUT_BUF] = c;
-    80206e0c:	0001c797          	auipc	a5,0x1c
-    80206e10:	e1478793          	addi	a5,a5,-492 # 80222c20 <cons>
-    80206e14:	0a07a703          	lw	a4,160(a5)
-    80206e18:	0017069b          	addiw	a3,a4,1
-    80206e1c:	0006861b          	sext.w	a2,a3
-    80206e20:	0ad7a023          	sw	a3,160(a5)
-    80206e24:	07f77713          	andi	a4,a4,127
-    80206e28:	97ba                	add	a5,a5,a4
-    80206e2a:	4729                	li	a4,10
-    80206e2c:	00e78c23          	sb	a4,24(a5)
+    8020715c:	0001c797          	auipc	a5,0x1c
+    80207160:	ac478793          	addi	a5,a5,-1340 # 80222c20 <cons>
+    80207164:	0a07a703          	lw	a4,160(a5)
+    80207168:	0017069b          	addiw	a3,a4,1
+    8020716c:	0006861b          	sext.w	a2,a3
+    80207170:	0ad7a023          	sw	a3,160(a5)
+    80207174:	07f77713          	andi	a4,a4,127
+    80207178:	97ba                	add	a5,a5,a4
+    8020717a:	4729                	li	a4,10
+    8020717c:	00e78c23          	sb	a4,24(a5)
         cons.w = cons.e;
-    80206e30:	0001c797          	auipc	a5,0x1c
-    80206e34:	e8c7a623          	sw	a2,-372(a5) # 80222cbc <cons+0x9c>
+    80207180:	0001c797          	auipc	a5,0x1c
+    80207184:	b2c7ae23          	sw	a2,-1220(a5) # 80222cbc <cons+0x9c>
         wakeup(&cons.r);
-    80206e38:	0001c517          	auipc	a0,0x1c
-    80206e3c:	e8050513          	addi	a0,a0,-384 # 80222cb8 <cons+0x98>
-    80206e40:	ffffb097          	auipc	ra,0xffffb
-    80206e44:	5f8080e7          	jalr	1528(ra) # 80202438 <wakeup>
-    80206e48:	b575                	j	80206cf4 <consoleintr+0x3c>
+    80207188:	0001c517          	auipc	a0,0x1c
+    8020718c:	b3050513          	addi	a0,a0,-1232 # 80222cb8 <cons+0x98>
+    80207190:	ffffb097          	auipc	ra,0xffffb
+    80207194:	2a8080e7          	jalr	680(ra) # 80202438 <wakeup>
+    80207198:	b575                	j	80207044 <consoleintr+0x3c>
 
-0000000080206e4a <consoleinit>:
+000000008020719a <consoleinit>:
 
 void
 consoleinit(void)
 {
-    80206e4a:	1101                	addi	sp,sp,-32
-    80206e4c:	ec06                	sd	ra,24(sp)
-    80206e4e:	e822                	sd	s0,16(sp)
-    80206e50:	e426                	sd	s1,8(sp)
-    80206e52:	1000                	addi	s0,sp,32
+    8020719a:	1101                	addi	sp,sp,-32
+    8020719c:	ec06                	sd	ra,24(sp)
+    8020719e:	e822                	sd	s0,16(sp)
+    802071a0:	e426                	sd	s1,8(sp)
+    802071a2:	1000                	addi	s0,sp,32
   initlock(&cons.lock, "cons");
-    80206e54:	0001c497          	auipc	s1,0x1c
-    80206e58:	dcc48493          	addi	s1,s1,-564 # 80222c20 <cons>
-    80206e5c:	00003597          	auipc	a1,0x3
-    80206e60:	e8c58593          	addi	a1,a1,-372 # 80209ce8 <digits+0x968>
-    80206e64:	8526                	mv	a0,s1
-    80206e66:	ffffa097          	auipc	ra,0xffffa
-    80206e6a:	81c080e7          	jalr	-2020(ra) # 80200682 <initlock>
+    802071a4:	0001c497          	auipc	s1,0x1c
+    802071a8:	a7c48493          	addi	s1,s1,-1412 # 80222c20 <cons>
+    802071ac:	00003597          	auipc	a1,0x3
+    802071b0:	b7458593          	addi	a1,a1,-1164 # 80209d20 <digits+0x9a0>
+    802071b4:	8526                	mv	a0,s1
+    802071b6:	ffff9097          	auipc	ra,0xffff9
+    802071ba:	4cc080e7          	jalr	1228(ra) # 80200682 <initlock>
 
   cons.e = cons.w = cons.r = 0;
-    80206e6e:	0804ac23          	sw	zero,152(s1)
-    80206e72:	0804ae23          	sw	zero,156(s1)
-    80206e76:	0a04a023          	sw	zero,160(s1)
+    802071be:	0804ac23          	sw	zero,152(s1)
+    802071c2:	0804ae23          	sw	zero,156(s1)
+    802071c6:	0a04a023          	sw	zero,160(s1)
   
   // connect read and write system calls
   // to consoleread and consolewrite.
   devsw[CONSOLE].read = consoleread;
-    80206e7a:	00005797          	auipc	a5,0x5
-    80206e7e:	c0e7b783          	ld	a5,-1010(a5) # 8020ba88 <_GLOBAL_OFFSET_TABLE_+0x58>
-    80206e82:	00000717          	auipc	a4,0x0
-    80206e86:	ce070713          	addi	a4,a4,-800 # 80206b62 <consoleread>
-    80206e8a:	eb98                	sd	a4,16(a5)
+    802071ca:	00005797          	auipc	a5,0x5
+    802071ce:	b2e7b783          	ld	a5,-1234(a5) # 8020bcf8 <_GLOBAL_OFFSET_TABLE_+0x58>
+    802071d2:	00000717          	auipc	a4,0x0
+    802071d6:	ce070713          	addi	a4,a4,-800 # 80206eb2 <consoleread>
+    802071da:	eb98                	sd	a4,16(a5)
   devsw[CONSOLE].write = consolewrite;
-    80206e8c:	00000717          	auipc	a4,0x0
-    80206e90:	c4870713          	addi	a4,a4,-952 # 80206ad4 <consolewrite>
-    80206e94:	ef98                	sd	a4,24(a5)
+    802071dc:	00000717          	auipc	a4,0x0
+    802071e0:	c4870713          	addi	a4,a4,-952 # 80206e24 <consolewrite>
+    802071e4:	ef98                	sd	a4,24(a5)
 }
-    80206e96:	60e2                	ld	ra,24(sp)
-    80206e98:	6442                	ld	s0,16(sp)
-    80206e9a:	64a2                	ld	s1,8(sp)
-    80206e9c:	6105                	addi	sp,sp,32
-    80206e9e:	8082                	ret
+    802071e6:	60e2                	ld	ra,24(sp)
+    802071e8:	6442                	ld	s0,16(sp)
+    802071ea:	64a2                	ld	s1,8(sp)
+    802071ec:	6105                	addi	sp,sp,32
+    802071ee:	8082                	ret
 
-0000000080206ea0 <free_desc>:
+00000000802071f0 <free_desc>:
 }
 
 // mark a descriptor as free.
 static void
 free_desc(int i)
 {
-    80206ea0:	1141                	addi	sp,sp,-16
-    80206ea2:	e406                	sd	ra,8(sp)
-    80206ea4:	e022                	sd	s0,0(sp)
-    80206ea6:	0800                	addi	s0,sp,16
+    802071f0:	1141                	addi	sp,sp,-16
+    802071f2:	e406                	sd	ra,8(sp)
+    802071f4:	e022                	sd	s0,0(sp)
+    802071f6:	0800                	addi	s0,sp,16
   if(i >= NUM)
-    80206ea8:	479d                	li	a5,7
-    80206eaa:	04a7cb63          	blt	a5,a0,80206f00 <free_desc+0x60>
+    802071f8:	479d                	li	a5,7
+    802071fa:	04a7cb63          	blt	a5,a0,80207250 <free_desc+0x60>
     panic("virtio_disk_intr 1");
   if(disk.free[i])
-    80206eae:	0001c717          	auipc	a4,0x1c
-    80206eb2:	15270713          	addi	a4,a4,338 # 80223000 <disk>
-    80206eb6:	972a                	add	a4,a4,a0
-    80206eb8:	6789                	lui	a5,0x2
-    80206eba:	97ba                	add	a5,a5,a4
-    80206ebc:	0187c783          	lbu	a5,24(a5) # 2018 <_entry-0x801fdfe8>
-    80206ec0:	eba1                	bnez	a5,80206f10 <free_desc+0x70>
+    802071fe:	0001c717          	auipc	a4,0x1c
+    80207202:	e0270713          	addi	a4,a4,-510 # 80223000 <disk>
+    80207206:	972a                	add	a4,a4,a0
+    80207208:	6789                	lui	a5,0x2
+    8020720a:	97ba                	add	a5,a5,a4
+    8020720c:	0187c783          	lbu	a5,24(a5) # 2018 <_entry-0x801fdfe8>
+    80207210:	eba1                	bnez	a5,80207260 <free_desc+0x70>
     panic("virtio_disk_intr 2");
   disk.desc[i].addr = 0;
-    80206ec2:	00451713          	slli	a4,a0,0x4
-    80206ec6:	0001e797          	auipc	a5,0x1e
-    80206eca:	13a7b783          	ld	a5,314(a5) # 80225000 <disk+0x2000>
-    80206ece:	97ba                	add	a5,a5,a4
-    80206ed0:	0007b023          	sd	zero,0(a5)
+    80207212:	00451713          	slli	a4,a0,0x4
+    80207216:	0001e797          	auipc	a5,0x1e
+    8020721a:	dea7b783          	ld	a5,-534(a5) # 80225000 <disk+0x2000>
+    8020721e:	97ba                	add	a5,a5,a4
+    80207220:	0007b023          	sd	zero,0(a5)
   disk.free[i] = 1;
-    80206ed4:	0001c717          	auipc	a4,0x1c
-    80206ed8:	12c70713          	addi	a4,a4,300 # 80223000 <disk>
-    80206edc:	972a                	add	a4,a4,a0
-    80206ede:	6789                	lui	a5,0x2
-    80206ee0:	97ba                	add	a5,a5,a4
-    80206ee2:	4705                	li	a4,1
-    80206ee4:	00e78c23          	sb	a4,24(a5) # 2018 <_entry-0x801fdfe8>
+    80207224:	0001c717          	auipc	a4,0x1c
+    80207228:	ddc70713          	addi	a4,a4,-548 # 80223000 <disk>
+    8020722c:	972a                	add	a4,a4,a0
+    8020722e:	6789                	lui	a5,0x2
+    80207230:	97ba                	add	a5,a5,a4
+    80207232:	4705                	li	a4,1
+    80207234:	00e78c23          	sb	a4,24(a5) # 2018 <_entry-0x801fdfe8>
   wakeup(&disk.free[0]);
-    80206ee8:	0001e517          	auipc	a0,0x1e
-    80206eec:	13050513          	addi	a0,a0,304 # 80225018 <disk+0x2018>
-    80206ef0:	ffffb097          	auipc	ra,0xffffb
-    80206ef4:	548080e7          	jalr	1352(ra) # 80202438 <wakeup>
-}
-    80206ef8:	60a2                	ld	ra,8(sp)
-    80206efa:	6402                	ld	s0,0(sp)
-    80206efc:	0141                	addi	sp,sp,16
-    80206efe:	8082                	ret
+    80207238:	0001e517          	auipc	a0,0x1e
+    8020723c:	de050513          	addi	a0,a0,-544 # 80225018 <disk+0x2018>
+    80207240:	ffffb097          	auipc	ra,0xffffb
+    80207244:	1f8080e7          	jalr	504(ra) # 80202438 <wakeup>
+}
+    80207248:	60a2                	ld	ra,8(sp)
+    8020724a:	6402                	ld	s0,0(sp)
+    8020724c:	0141                	addi	sp,sp,16
+    8020724e:	8082                	ret
     panic("virtio_disk_intr 1");
-    80206f00:	00003517          	auipc	a0,0x3
-    80206f04:	df050513          	addi	a0,a0,-528 # 80209cf0 <digits+0x970>
-    80206f08:	ffff9097          	auipc	ra,0xffff9
-    80206f0c:	23c080e7          	jalr	572(ra) # 80200144 <panic>
+    80207250:	00003517          	auipc	a0,0x3
+    80207254:	ad850513          	addi	a0,a0,-1320 # 80209d28 <digits+0x9a8>
+    80207258:	ffff9097          	auipc	ra,0xffff9
+    8020725c:	eec080e7          	jalr	-276(ra) # 80200144 <panic>
     panic("virtio_disk_intr 2");
-    80206f10:	00003517          	auipc	a0,0x3
-    80206f14:	df850513          	addi	a0,a0,-520 # 80209d08 <digits+0x988>
-    80206f18:	ffff9097          	auipc	ra,0xffff9
-    80206f1c:	22c080e7          	jalr	556(ra) # 80200144 <panic>
+    80207260:	00003517          	auipc	a0,0x3
+    80207264:	ae050513          	addi	a0,a0,-1312 # 80209d40 <digits+0x9c0>
+    80207268:	ffff9097          	auipc	ra,0xffff9
+    8020726c:	edc080e7          	jalr	-292(ra) # 80200144 <panic>
 
-0000000080206f20 <virtio_disk_init>:
+0000000080207270 <virtio_disk_init>:
 {
-    80206f20:	1141                	addi	sp,sp,-16
-    80206f22:	e406                	sd	ra,8(sp)
-    80206f24:	e022                	sd	s0,0(sp)
-    80206f26:	0800                	addi	s0,sp,16
+    80207270:	1141                	addi	sp,sp,-16
+    80207272:	e406                	sd	ra,8(sp)
+    80207274:	e022                	sd	s0,0(sp)
+    80207276:	0800                	addi	s0,sp,16
   initlock(&disk.vdisk_lock, "virtio_disk");
-    80206f28:	00003597          	auipc	a1,0x3
-    80206f2c:	df858593          	addi	a1,a1,-520 # 80209d20 <digits+0x9a0>
-    80206f30:	0001e517          	auipc	a0,0x1e
-    80206f34:	17850513          	addi	a0,a0,376 # 802250a8 <disk+0x20a8>
-    80206f38:	ffff9097          	auipc	ra,0xffff9
-    80206f3c:	74a080e7          	jalr	1866(ra) # 80200682 <initlock>
+    80207278:	00003597          	auipc	a1,0x3
+    8020727c:	ae058593          	addi	a1,a1,-1312 # 80209d58 <digits+0x9d8>
+    80207280:	0001e517          	auipc	a0,0x1e
+    80207284:	e2850513          	addi	a0,a0,-472 # 802250a8 <disk+0x20a8>
+    80207288:	ffff9097          	auipc	ra,0xffff9
+    8020728c:	3fa080e7          	jalr	1018(ra) # 80200682 <initlock>
   if(*R(VIRTIO_MMIO_MAGIC_VALUE) != 0x74726976 ||
-    80206f40:	03f107b7          	lui	a5,0x3f10
-    80206f44:	0785                	addi	a5,a5,1 # 3f10001 <_entry-0x7c2effff>
-    80206f46:	07b2                	slli	a5,a5,0xc
-    80206f48:	4398                	lw	a4,0(a5)
-    80206f4a:	2701                	sext.w	a4,a4
-    80206f4c:	747277b7          	lui	a5,0x74727
-    80206f50:	97678793          	addi	a5,a5,-1674 # 74726976 <_entry-0xbad968a>
-    80206f54:	12f71163          	bne	a4,a5,80207076 <virtio_disk_init+0x156>
+    80207290:	03f107b7          	lui	a5,0x3f10
+    80207294:	0785                	addi	a5,a5,1 # 3f10001 <_entry-0x7c2effff>
+    80207296:	07b2                	slli	a5,a5,0xc
+    80207298:	4398                	lw	a4,0(a5)
+    8020729a:	2701                	sext.w	a4,a4
+    8020729c:	747277b7          	lui	a5,0x74727
+    802072a0:	97678793          	addi	a5,a5,-1674 # 74726976 <_entry-0xbad968a>
+    802072a4:	12f71163          	bne	a4,a5,802073c6 <virtio_disk_init+0x156>
      *R(VIRTIO_MMIO_VERSION) != 1 ||
-    80206f58:	00003797          	auipc	a5,0x3
-    80206f5c:	e507b783          	ld	a5,-432(a5) # 80209da8 <digits+0xa28>
-    80206f60:	439c                	lw	a5,0(a5)
-    80206f62:	2781                	sext.w	a5,a5
+    802072a8:	00003797          	auipc	a5,0x3
+    802072ac:	b387b783          	ld	a5,-1224(a5) # 80209de0 <digits+0xa60>
+    802072b0:	439c                	lw	a5,0(a5)
+    802072b2:	2781                	sext.w	a5,a5
   if(*R(VIRTIO_MMIO_MAGIC_VALUE) != 0x74726976 ||
-    80206f64:	4705                	li	a4,1
-    80206f66:	10e79863          	bne	a5,a4,80207076 <virtio_disk_init+0x156>
+    802072b4:	4705                	li	a4,1
+    802072b6:	10e79863          	bne	a5,a4,802073c6 <virtio_disk_init+0x156>
      *R(VIRTIO_MMIO_DEVICE_ID) != 2 ||
-    80206f6a:	00003797          	auipc	a5,0x3
-    80206f6e:	e467b783          	ld	a5,-442(a5) # 80209db0 <digits+0xa30>
-    80206f72:	439c                	lw	a5,0(a5)
-    80206f74:	2781                	sext.w	a5,a5
+    802072ba:	00003797          	auipc	a5,0x3
+    802072be:	b2e7b783          	ld	a5,-1234(a5) # 80209de8 <digits+0xa68>
+    802072c2:	439c                	lw	a5,0(a5)
+    802072c4:	2781                	sext.w	a5,a5
      *R(VIRTIO_MMIO_VERSION) != 1 ||
-    80206f76:	4709                	li	a4,2
-    80206f78:	0ee79f63          	bne	a5,a4,80207076 <virtio_disk_init+0x156>
+    802072c6:	4709                	li	a4,2
+    802072c8:	0ee79f63          	bne	a5,a4,802073c6 <virtio_disk_init+0x156>
      *R(VIRTIO_MMIO_VENDOR_ID) != 0x554d4551){
-    80206f7c:	00003797          	auipc	a5,0x3
-    80206f80:	e3c7b783          	ld	a5,-452(a5) # 80209db8 <digits+0xa38>
-    80206f84:	4398                	lw	a4,0(a5)
-    80206f86:	2701                	sext.w	a4,a4
+    802072cc:	00003797          	auipc	a5,0x3
+    802072d0:	b247b783          	ld	a5,-1244(a5) # 80209df0 <digits+0xa70>
+    802072d4:	4398                	lw	a4,0(a5)
+    802072d6:	2701                	sext.w	a4,a4
      *R(VIRTIO_MMIO_DEVICE_ID) != 2 ||
-    80206f88:	554d47b7          	lui	a5,0x554d4
-    80206f8c:	55178793          	addi	a5,a5,1361 # 554d4551 <_entry-0x2ad2baaf>
-    80206f90:	0ef71363          	bne	a4,a5,80207076 <virtio_disk_init+0x156>
+    802072d8:	554d47b7          	lui	a5,0x554d4
+    802072dc:	55178793          	addi	a5,a5,1361 # 554d4551 <_entry-0x2ad2baaf>
+    802072e0:	0ef71363          	bne	a4,a5,802073c6 <virtio_disk_init+0x156>
   *R(VIRTIO_MMIO_STATUS) = status;
-    80206f94:	00003797          	auipc	a5,0x3
-    80206f98:	e2c7b783          	ld	a5,-468(a5) # 80209dc0 <digits+0xa40>
-    80206f9c:	4705                	li	a4,1
-    80206f9e:	c398                	sw	a4,0(a5)
+    802072e4:	00003797          	auipc	a5,0x3
+    802072e8:	b147b783          	ld	a5,-1260(a5) # 80209df8 <digits+0xa78>
+    802072ec:	4705                	li	a4,1
+    802072ee:	c398                	sw	a4,0(a5)
   *R(VIRTIO_MMIO_STATUS) = status;
-    80206fa0:	470d                	li	a4,3
-    80206fa2:	c398                	sw	a4,0(a5)
+    802072f0:	470d                	li	a4,3
+    802072f2:	c398                	sw	a4,0(a5)
   uint64 features = *R(VIRTIO_MMIO_DEVICE_FEATURES);
-    80206fa4:	00003717          	auipc	a4,0x3
-    80206fa8:	e2473703          	ld	a4,-476(a4) # 80209dc8 <digits+0xa48>
-    80206fac:	4318                	lw	a4,0(a4)
+    802072f4:	00003717          	auipc	a4,0x3
+    802072f8:	b0c73703          	ld	a4,-1268(a4) # 80209e00 <digits+0xa80>
+    802072fc:	4318                	lw	a4,0(a4)
   *R(VIRTIO_MMIO_DRIVER_FEATURES) = features;
-    80206fae:	c7ffe6b7          	lui	a3,0xc7ffe
-    80206fb2:	75f68693          	addi	a3,a3,1887 # ffffffffc7ffe75f <ebss_clear+0xffffffff47dd875f>
-    80206fb6:	8f75                	and	a4,a4,a3
-    80206fb8:	00003697          	auipc	a3,0x3
-    80206fbc:	e186b683          	ld	a3,-488(a3) # 80209dd0 <digits+0xa50>
-    80206fc0:	c298                	sw	a4,0(a3)
+    802072fe:	c7ffe6b7          	lui	a3,0xc7ffe
+    80207302:	75f68693          	addi	a3,a3,1887 # ffffffffc7ffe75f <ebss_clear+0xffffffff47dd875f>
+    80207306:	8f75                	and	a4,a4,a3
+    80207308:	00003697          	auipc	a3,0x3
+    8020730c:	b006b683          	ld	a3,-1280(a3) # 80209e08 <digits+0xa88>
+    80207310:	c298                	sw	a4,0(a3)
   *R(VIRTIO_MMIO_STATUS) = status;
-    80206fc2:	472d                	li	a4,11
-    80206fc4:	c398                	sw	a4,0(a5)
+    80207312:	472d                	li	a4,11
+    80207314:	c398                	sw	a4,0(a5)
   *R(VIRTIO_MMIO_STATUS) = status;
-    80206fc6:	473d                	li	a4,15
-    80206fc8:	c398                	sw	a4,0(a5)
+    80207316:	473d                	li	a4,15
+    80207318:	c398                	sw	a4,0(a5)
   *R(VIRTIO_MMIO_GUEST_PAGE_SIZE) = PGSIZE;
-    80206fca:	00003797          	auipc	a5,0x3
-    80206fce:	e0e7b783          	ld	a5,-498(a5) # 80209dd8 <digits+0xa58>
-    80206fd2:	6705                	lui	a4,0x1
-    80206fd4:	c398                	sw	a4,0(a5)
+    8020731a:	00003797          	auipc	a5,0x3
+    8020731e:	af67b783          	ld	a5,-1290(a5) # 80209e10 <digits+0xa90>
+    80207322:	6705                	lui	a4,0x1
+    80207324:	c398                	sw	a4,0(a5)
   *R(VIRTIO_MMIO_QUEUE_SEL) = 0;
-    80206fd6:	00003797          	auipc	a5,0x3
-    80206fda:	e0a7b783          	ld	a5,-502(a5) # 80209de0 <digits+0xa60>
-    80206fde:	0007a023          	sw	zero,0(a5)
+    80207326:	00003797          	auipc	a5,0x3
+    8020732a:	af27b783          	ld	a5,-1294(a5) # 80209e18 <digits+0xa98>
+    8020732e:	0007a023          	sw	zero,0(a5)
   uint32 max = *R(VIRTIO_MMIO_QUEUE_NUM_MAX);
-    80206fe2:	00003797          	auipc	a5,0x3
-    80206fe6:	e067b783          	ld	a5,-506(a5) # 80209de8 <digits+0xa68>
-    80206fea:	439c                	lw	a5,0(a5)
-    80206fec:	2781                	sext.w	a5,a5
+    80207332:	00003797          	auipc	a5,0x3
+    80207336:	aee7b783          	ld	a5,-1298(a5) # 80209e20 <digits+0xaa0>
+    8020733a:	439c                	lw	a5,0(a5)
+    8020733c:	2781                	sext.w	a5,a5
   if(max == 0)
-    80206fee:	cfc1                	beqz	a5,80207086 <virtio_disk_init+0x166>
+    8020733e:	cfc1                	beqz	a5,802073d6 <virtio_disk_init+0x166>
   if(max < NUM)
-    80206ff0:	471d                	li	a4,7
-    80206ff2:	0af77263          	bgeu	a4,a5,80207096 <virtio_disk_init+0x176>
+    80207340:	471d                	li	a4,7
+    80207342:	0af77263          	bgeu	a4,a5,802073e6 <virtio_disk_init+0x176>
   *R(VIRTIO_MMIO_QUEUE_NUM) = NUM;
-    80206ff6:	00003797          	auipc	a5,0x3
-    80206ffa:	dfa7b783          	ld	a5,-518(a5) # 80209df0 <digits+0xa70>
-    80206ffe:	4721                	li	a4,8
-    80207000:	c398                	sw	a4,0(a5)
+    80207346:	00003797          	auipc	a5,0x3
+    8020734a:	ae27b783          	ld	a5,-1310(a5) # 80209e28 <digits+0xaa8>
+    8020734e:	4721                	li	a4,8
+    80207350:	c398                	sw	a4,0(a5)
   memset(disk.pages, 0, sizeof(disk.pages));
-    80207002:	6609                	lui	a2,0x2
-    80207004:	4581                	li	a1,0
-    80207006:	0001c517          	auipc	a0,0x1c
-    8020700a:	ffa50513          	addi	a0,a0,-6 # 80223000 <disk>
-    8020700e:	ffff9097          	auipc	ra,0xffff9
-    80207012:	754080e7          	jalr	1876(ra) # 80200762 <memset>
+    80207352:	6609                	lui	a2,0x2
+    80207354:	4581                	li	a1,0
+    80207356:	0001c517          	auipc	a0,0x1c
+    8020735a:	caa50513          	addi	a0,a0,-854 # 80223000 <disk>
+    8020735e:	ffff9097          	auipc	ra,0xffff9
+    80207362:	404080e7          	jalr	1028(ra) # 80200762 <memset>
   *R(VIRTIO_MMIO_QUEUE_PFN) = ((uint64)disk.pages) >> PGSHIFT;
-    80207016:	0001c717          	auipc	a4,0x1c
-    8020701a:	fea70713          	addi	a4,a4,-22 # 80223000 <disk>
-    8020701e:	00c75793          	srli	a5,a4,0xc
-    80207022:	2781                	sext.w	a5,a5
-    80207024:	00003697          	auipc	a3,0x3
-    80207028:	dd46b683          	ld	a3,-556(a3) # 80209df8 <digits+0xa78>
-    8020702c:	c29c                	sw	a5,0(a3)
+    80207366:	0001c717          	auipc	a4,0x1c
+    8020736a:	c9a70713          	addi	a4,a4,-870 # 80223000 <disk>
+    8020736e:	00c75793          	srli	a5,a4,0xc
+    80207372:	2781                	sext.w	a5,a5
+    80207374:	00003697          	auipc	a3,0x3
+    80207378:	abc6b683          	ld	a3,-1348(a3) # 80209e30 <digits+0xab0>
+    8020737c:	c29c                	sw	a5,0(a3)
   disk.desc = (struct VRingDesc *) disk.pages;
-    8020702e:	0001e797          	auipc	a5,0x1e
-    80207032:	fd278793          	addi	a5,a5,-46 # 80225000 <disk+0x2000>
-    80207036:	e398                	sd	a4,0(a5)
+    8020737e:	0001e797          	auipc	a5,0x1e
+    80207382:	c8278793          	addi	a5,a5,-894 # 80225000 <disk+0x2000>
+    80207386:	e398                	sd	a4,0(a5)
   disk.avail = (uint16*)(((char*)disk.desc) + NUM*sizeof(struct VRingDesc));
-    80207038:	0001c717          	auipc	a4,0x1c
-    8020703c:	04870713          	addi	a4,a4,72 # 80223080 <disk+0x80>
-    80207040:	e798                	sd	a4,8(a5)
+    80207388:	0001c717          	auipc	a4,0x1c
+    8020738c:	cf870713          	addi	a4,a4,-776 # 80223080 <disk+0x80>
+    80207390:	e798                	sd	a4,8(a5)
   disk.used = (struct UsedArea *) (disk.pages + PGSIZE);
-    80207042:	0001d717          	auipc	a4,0x1d
-    80207046:	fbe70713          	addi	a4,a4,-66 # 80224000 <disk+0x1000>
-    8020704a:	eb98                	sd	a4,16(a5)
+    80207392:	0001d717          	auipc	a4,0x1d
+    80207396:	c6e70713          	addi	a4,a4,-914 # 80224000 <disk+0x1000>
+    8020739a:	eb98                	sd	a4,16(a5)
     disk.free[i] = 1;
-    8020704c:	4705                	li	a4,1
-    8020704e:	00e78c23          	sb	a4,24(a5)
-    80207052:	00e78ca3          	sb	a4,25(a5)
-    80207056:	00e78d23          	sb	a4,26(a5)
-    8020705a:	00e78da3          	sb	a4,27(a5)
-    8020705e:	00e78e23          	sb	a4,28(a5)
-    80207062:	00e78ea3          	sb	a4,29(a5)
-    80207066:	00e78f23          	sb	a4,30(a5)
-    8020706a:	00e78fa3          	sb	a4,31(a5)
-}
-    8020706e:	60a2                	ld	ra,8(sp)
-    80207070:	6402                	ld	s0,0(sp)
-    80207072:	0141                	addi	sp,sp,16
-    80207074:	8082                	ret
+    8020739c:	4705                	li	a4,1
+    8020739e:	00e78c23          	sb	a4,24(a5)
+    802073a2:	00e78ca3          	sb	a4,25(a5)
+    802073a6:	00e78d23          	sb	a4,26(a5)
+    802073aa:	00e78da3          	sb	a4,27(a5)
+    802073ae:	00e78e23          	sb	a4,28(a5)
+    802073b2:	00e78ea3          	sb	a4,29(a5)
+    802073b6:	00e78f23          	sb	a4,30(a5)
+    802073ba:	00e78fa3          	sb	a4,31(a5)
+}
+    802073be:	60a2                	ld	ra,8(sp)
+    802073c0:	6402                	ld	s0,0(sp)
+    802073c2:	0141                	addi	sp,sp,16
+    802073c4:	8082                	ret
     panic("could not find virtio disk");
-    80207076:	00003517          	auipc	a0,0x3
-    8020707a:	cba50513          	addi	a0,a0,-838 # 80209d30 <digits+0x9b0>
-    8020707e:	ffff9097          	auipc	ra,0xffff9
-    80207082:	0c6080e7          	jalr	198(ra) # 80200144 <panic>
+    802073c6:	00003517          	auipc	a0,0x3
+    802073ca:	9a250513          	addi	a0,a0,-1630 # 80209d68 <digits+0x9e8>
+    802073ce:	ffff9097          	auipc	ra,0xffff9
+    802073d2:	d76080e7          	jalr	-650(ra) # 80200144 <panic>
     panic("virtio disk has no queue 0");
-    80207086:	00003517          	auipc	a0,0x3
-    8020708a:	cca50513          	addi	a0,a0,-822 # 80209d50 <digits+0x9d0>
-    8020708e:	ffff9097          	auipc	ra,0xffff9
-    80207092:	0b6080e7          	jalr	182(ra) # 80200144 <panic>
+    802073d6:	00003517          	auipc	a0,0x3
+    802073da:	9b250513          	addi	a0,a0,-1614 # 80209d88 <digits+0xa08>
+    802073de:	ffff9097          	auipc	ra,0xffff9
+    802073e2:	d66080e7          	jalr	-666(ra) # 80200144 <panic>
     panic("virtio disk max queue too short");
-    80207096:	00003517          	auipc	a0,0x3
-    8020709a:	cda50513          	addi	a0,a0,-806 # 80209d70 <digits+0x9f0>
-    8020709e:	ffff9097          	auipc	ra,0xffff9
-    802070a2:	0a6080e7          	jalr	166(ra) # 80200144 <panic>
+    802073e6:	00003517          	auipc	a0,0x3
+    802073ea:	9c250513          	addi	a0,a0,-1598 # 80209da8 <digits+0xa28>
+    802073ee:	ffff9097          	auipc	ra,0xffff9
+    802073f2:	d56080e7          	jalr	-682(ra) # 80200144 <panic>
 
-00000000802070a6 <virtio_disk_rw>:
+00000000802073f6 <virtio_disk_rw>:
   return 0;
 }
 
 void
 virtio_disk_rw(struct buf *b, int write)
 {
-    802070a6:	7175                	addi	sp,sp,-144
-    802070a8:	e506                	sd	ra,136(sp)
-    802070aa:	e122                	sd	s0,128(sp)
-    802070ac:	fca6                	sd	s1,120(sp)
-    802070ae:	f8ca                	sd	s2,112(sp)
-    802070b0:	f4ce                	sd	s3,104(sp)
-    802070b2:	f0d2                	sd	s4,96(sp)
-    802070b4:	ecd6                	sd	s5,88(sp)
-    802070b6:	e8da                	sd	s6,80(sp)
-    802070b8:	e4de                	sd	s7,72(sp)
-    802070ba:	e0e2                	sd	s8,64(sp)
-    802070bc:	fc66                	sd	s9,56(sp)
-    802070be:	f86a                	sd	s10,48(sp)
-    802070c0:	f46e                	sd	s11,40(sp)
-    802070c2:	0900                	addi	s0,sp,144
-    802070c4:	8aaa                	mv	s5,a0
-    802070c6:	8cae                	mv	s9,a1
+    802073f6:	7175                	addi	sp,sp,-144
+    802073f8:	e506                	sd	ra,136(sp)
+    802073fa:	e122                	sd	s0,128(sp)
+    802073fc:	fca6                	sd	s1,120(sp)
+    802073fe:	f8ca                	sd	s2,112(sp)
+    80207400:	f4ce                	sd	s3,104(sp)
+    80207402:	f0d2                	sd	s4,96(sp)
+    80207404:	ecd6                	sd	s5,88(sp)
+    80207406:	e8da                	sd	s6,80(sp)
+    80207408:	e4de                	sd	s7,72(sp)
+    8020740a:	e0e2                	sd	s8,64(sp)
+    8020740c:	fc66                	sd	s9,56(sp)
+    8020740e:	f86a                	sd	s10,48(sp)
+    80207410:	f46e                	sd	s11,40(sp)
+    80207412:	0900                	addi	s0,sp,144
+    80207414:	8aaa                	mv	s5,a0
+    80207416:	8cae                	mv	s9,a1
   uint64 sector = b->sectorno;
-    802070c8:	00c56d03          	lwu	s10,12(a0)
+    80207418:	00c56d03          	lwu	s10,12(a0)
 
   acquire(&disk.vdisk_lock);
-    802070cc:	0001e517          	auipc	a0,0x1e
-    802070d0:	fdc50513          	addi	a0,a0,-36 # 802250a8 <disk+0x20a8>
-    802070d4:	ffff9097          	auipc	ra,0xffff9
-    802070d8:	5f2080e7          	jalr	1522(ra) # 802006c6 <acquire>
+    8020741c:	0001e517          	auipc	a0,0x1e
+    80207420:	c8c50513          	addi	a0,a0,-884 # 802250a8 <disk+0x20a8>
+    80207424:	ffff9097          	auipc	ra,0xffff9
+    80207428:	2a2080e7          	jalr	674(ra) # 802006c6 <acquire>
   for(int i = 0; i < 3; i++){
-    802070dc:	4981                	li	s3,0
+    8020742c:	4981                	li	s3,0
   for(int i = 0; i < NUM; i++){
-    802070de:	44a1                	li	s1,8
+    8020742e:	44a1                	li	s1,8
       disk.free[i] = 0;
-    802070e0:	0001cc17          	auipc	s8,0x1c
-    802070e4:	f20c0c13          	addi	s8,s8,-224 # 80223000 <disk>
-    802070e8:	6b89                	lui	s7,0x2
+    80207430:	0001cc17          	auipc	s8,0x1c
+    80207434:	bd0c0c13          	addi	s8,s8,-1072 # 80223000 <disk>
+    80207438:	6b89                	lui	s7,0x2
   for(int i = 0; i < 3; i++){
-    802070ea:	4b0d                	li	s6,3
-    802070ec:	a0ad                	j	80207156 <virtio_disk_rw+0xb0>
+    8020743a:	4b0d                	li	s6,3
+    8020743c:	a0ad                	j	802074a6 <virtio_disk_rw+0xb0>
       disk.free[i] = 0;
-    802070ee:	00fc0733          	add	a4,s8,a5
-    802070f2:	975e                	add	a4,a4,s7
-    802070f4:	00070c23          	sb	zero,24(a4)
+    8020743e:	00fc0733          	add	a4,s8,a5
+    80207442:	975e                	add	a4,a4,s7
+    80207444:	00070c23          	sb	zero,24(a4)
     idx[i] = alloc_desc();
-    802070f8:	c19c                	sw	a5,0(a1)
+    80207448:	c19c                	sw	a5,0(a1)
     if(idx[i] < 0){
-    802070fa:	0207c563          	bltz	a5,80207124 <virtio_disk_rw+0x7e>
+    8020744a:	0207c563          	bltz	a5,80207474 <virtio_disk_rw+0x7e>
   for(int i = 0; i < 3; i++){
-    802070fe:	2905                	addiw	s2,s2,1
-    80207100:	0611                	addi	a2,a2,4 # 2004 <_entry-0x801fdffc>
-    80207102:	19690e63          	beq	s2,s6,8020729e <virtio_disk_rw+0x1f8>
+    8020744e:	2905                	addiw	s2,s2,1
+    80207450:	0611                	addi	a2,a2,4 # 2004 <_entry-0x801fdffc>
+    80207452:	19690e63          	beq	s2,s6,802075ee <virtio_disk_rw+0x1f8>
     idx[i] = alloc_desc();
-    80207106:	85b2                	mv	a1,a2
+    80207456:	85b2                	mv	a1,a2
   for(int i = 0; i < NUM; i++){
-    80207108:	0001e717          	auipc	a4,0x1e
-    8020710c:	f1070713          	addi	a4,a4,-240 # 80225018 <disk+0x2018>
-    80207110:	87ce                	mv	a5,s3
+    80207458:	0001e717          	auipc	a4,0x1e
+    8020745c:	bc070713          	addi	a4,a4,-1088 # 80225018 <disk+0x2018>
+    80207460:	87ce                	mv	a5,s3
     if(disk.free[i]){
-    80207112:	00074683          	lbu	a3,0(a4)
-    80207116:	fee1                	bnez	a3,802070ee <virtio_disk_rw+0x48>
+    80207462:	00074683          	lbu	a3,0(a4)
+    80207466:	fee1                	bnez	a3,8020743e <virtio_disk_rw+0x48>
   for(int i = 0; i < NUM; i++){
-    80207118:	2785                	addiw	a5,a5,1
-    8020711a:	0705                	addi	a4,a4,1
-    8020711c:	fe979be3          	bne	a5,s1,80207112 <virtio_disk_rw+0x6c>
+    80207468:	2785                	addiw	a5,a5,1
+    8020746a:	0705                	addi	a4,a4,1
+    8020746c:	fe979be3          	bne	a5,s1,80207462 <virtio_disk_rw+0x6c>
     idx[i] = alloc_desc();
-    80207120:	57fd                	li	a5,-1
-    80207122:	c19c                	sw	a5,0(a1)
+    80207470:	57fd                	li	a5,-1
+    80207472:	c19c                	sw	a5,0(a1)
       for(int j = 0; j < i; j++)
-    80207124:	01205d63          	blez	s2,8020713e <virtio_disk_rw+0x98>
-    80207128:	8dce                	mv	s11,s3
+    80207474:	01205d63          	blez	s2,8020748e <virtio_disk_rw+0x98>
+    80207478:	8dce                	mv	s11,s3
         free_desc(idx[j]);
-    8020712a:	000a2503          	lw	a0,0(s4)
-    8020712e:	00000097          	auipc	ra,0x0
-    80207132:	d72080e7          	jalr	-654(ra) # 80206ea0 <free_desc>
+    8020747a:	000a2503          	lw	a0,0(s4)
+    8020747e:	00000097          	auipc	ra,0x0
+    80207482:	d72080e7          	jalr	-654(ra) # 802071f0 <free_desc>
       for(int j = 0; j < i; j++)
-    80207136:	2d85                	addiw	s11,s11,1
-    80207138:	0a11                	addi	s4,s4,4
-    8020713a:	ff2d98e3          	bne	s11,s2,8020712a <virtio_disk_rw+0x84>
+    80207486:	2d85                	addiw	s11,s11,1
+    80207488:	0a11                	addi	s4,s4,4
+    8020748a:	ff2d98e3          	bne	s11,s2,8020747a <virtio_disk_rw+0x84>
   int idx[3];
   while(1){
     if(alloc3_desc(idx) == 0) {
       break;
     }
     sleep(&disk.free[0], &disk.vdisk_lock);
-    8020713e:	0001e597          	auipc	a1,0x1e
-    80207142:	f6a58593          	addi	a1,a1,-150 # 802250a8 <disk+0x20a8>
-    80207146:	0001e517          	auipc	a0,0x1e
-    8020714a:	ed250513          	addi	a0,a0,-302 # 80225018 <disk+0x2018>
-    8020714e:	ffffb097          	auipc	ra,0xffffb
-    80207152:	16e080e7          	jalr	366(ra) # 802022bc <sleep>
+    8020748e:	0001e597          	auipc	a1,0x1e
+    80207492:	c1a58593          	addi	a1,a1,-998 # 802250a8 <disk+0x20a8>
+    80207496:	0001e517          	auipc	a0,0x1e
+    8020749a:	b8250513          	addi	a0,a0,-1150 # 80225018 <disk+0x2018>
+    8020749e:	ffffb097          	auipc	ra,0xffffb
+    802074a2:	e1e080e7          	jalr	-482(ra) # 802022bc <sleep>
   for(int i = 0; i < 3; i++){
-    80207156:	f8040a13          	addi	s4,s0,-128
+    802074a6:	f8040a13          	addi	s4,s0,-128
 {
-    8020715a:	8652                	mv	a2,s4
+    802074aa:	8652                	mv	a2,s4
   for(int i = 0; i < 3; i++){
-    8020715c:	894e                	mv	s2,s3
-    8020715e:	b765                	j	80207106 <virtio_disk_rw+0x60>
+    802074ac:	894e                	mv	s2,s3
+    802074ae:	b765                	j	80207456 <virtio_disk_rw+0x60>
   disk.desc[idx[0]].next = idx[1];
 
   disk.desc[idx[1]].addr = (uint64) b->data;
   disk.desc[idx[1]].len = BSIZE;
   if(write)
     disk.desc[idx[1]].flags = 0; // device reads b->data
-    80207160:	0001e717          	auipc	a4,0x1e
-    80207164:	ea073703          	ld	a4,-352(a4) # 80225000 <disk+0x2000>
-    80207168:	973e                	add	a4,a4,a5
-    8020716a:	00071623          	sh	zero,12(a4)
+    802074b0:	0001e717          	auipc	a4,0x1e
+    802074b4:	b5073703          	ld	a4,-1200(a4) # 80225000 <disk+0x2000>
+    802074b8:	973e                	add	a4,a4,a5
+    802074ba:	00071623          	sh	zero,12(a4)
   else
     disk.desc[idx[1]].flags = VRING_DESC_F_WRITE; // device writes b->data
   disk.desc[idx[1]].flags |= VRING_DESC_F_NEXT;
-    8020716e:	0001c517          	auipc	a0,0x1c
-    80207172:	e9250513          	addi	a0,a0,-366 # 80223000 <disk>
-    80207176:	0001e717          	auipc	a4,0x1e
-    8020717a:	e8a70713          	addi	a4,a4,-374 # 80225000 <disk+0x2000>
-    8020717e:	6314                	ld	a3,0(a4)
-    80207180:	96be                	add	a3,a3,a5
-    80207182:	00c6d603          	lhu	a2,12(a3)
-    80207186:	00166613          	ori	a2,a2,1
-    8020718a:	00c69623          	sh	a2,12(a3)
+    802074be:	0001c517          	auipc	a0,0x1c
+    802074c2:	b4250513          	addi	a0,a0,-1214 # 80223000 <disk>
+    802074c6:	0001e717          	auipc	a4,0x1e
+    802074ca:	b3a70713          	addi	a4,a4,-1222 # 80225000 <disk+0x2000>
+    802074ce:	6314                	ld	a3,0(a4)
+    802074d0:	96be                	add	a3,a3,a5
+    802074d2:	00c6d603          	lhu	a2,12(a3)
+    802074d6:	00166613          	ori	a2,a2,1
+    802074da:	00c69623          	sh	a2,12(a3)
   disk.desc[idx[1]].next = idx[2];
-    8020718e:	f8842683          	lw	a3,-120(s0)
-    80207192:	6310                	ld	a2,0(a4)
-    80207194:	97b2                	add	a5,a5,a2
-    80207196:	00d79723          	sh	a3,14(a5)
+    802074de:	f8842683          	lw	a3,-120(s0)
+    802074e2:	6310                	ld	a2,0(a4)
+    802074e4:	97b2                	add	a5,a5,a2
+    802074e6:	00d79723          	sh	a3,14(a5)
 
   disk.info[idx[0]].status = 0;
-    8020719a:	20048613          	addi	a2,s1,512
-    8020719e:	0612                	slli	a2,a2,0x4
-    802071a0:	962a                	add	a2,a2,a0
-    802071a2:	02060823          	sb	zero,48(a2)
+    802074ea:	20048613          	addi	a2,s1,512
+    802074ee:	0612                	slli	a2,a2,0x4
+    802074f0:	962a                	add	a2,a2,a0
+    802074f2:	02060823          	sb	zero,48(a2)
   disk.desc[idx[2]].addr = (uint64) &disk.info[idx[0]].status;
-    802071a6:	00469793          	slli	a5,a3,0x4
-    802071aa:	630c                	ld	a1,0(a4)
-    802071ac:	95be                	add	a1,a1,a5
-    802071ae:	6689                	lui	a3,0x2
-    802071b0:	03068693          	addi	a3,a3,48 # 2030 <_entry-0x801fdfd0>
-    802071b4:	96ca                	add	a3,a3,s2
-    802071b6:	96aa                	add	a3,a3,a0
-    802071b8:	e194                	sd	a3,0(a1)
+    802074f6:	00469793          	slli	a5,a3,0x4
+    802074fa:	630c                	ld	a1,0(a4)
+    802074fc:	95be                	add	a1,a1,a5
+    802074fe:	6689                	lui	a3,0x2
+    80207500:	03068693          	addi	a3,a3,48 # 2030 <_entry-0x801fdfd0>
+    80207504:	96ca                	add	a3,a3,s2
+    80207506:	96aa                	add	a3,a3,a0
+    80207508:	e194                	sd	a3,0(a1)
   disk.desc[idx[2]].len = 1;
-    802071ba:	6314                	ld	a3,0(a4)
-    802071bc:	96be                	add	a3,a3,a5
-    802071be:	4585                	li	a1,1
-    802071c0:	c68c                	sw	a1,8(a3)
+    8020750a:	6314                	ld	a3,0(a4)
+    8020750c:	96be                	add	a3,a3,a5
+    8020750e:	4585                	li	a1,1
+    80207510:	c68c                	sw	a1,8(a3)
   disk.desc[idx[2]].flags = VRING_DESC_F_WRITE; // device writes the status
-    802071c2:	6314                	ld	a3,0(a4)
-    802071c4:	96be                	add	a3,a3,a5
-    802071c6:	4509                	li	a0,2
-    802071c8:	00a69623          	sh	a0,12(a3)
+    80207512:	6314                	ld	a3,0(a4)
+    80207514:	96be                	add	a3,a3,a5
+    80207516:	4509                	li	a0,2
+    80207518:	00a69623          	sh	a0,12(a3)
   disk.desc[idx[2]].next = 0;
-    802071cc:	6314                	ld	a3,0(a4)
-    802071ce:	97b6                	add	a5,a5,a3
-    802071d0:	00079723          	sh	zero,14(a5)
+    8020751c:	6314                	ld	a3,0(a4)
+    8020751e:	97b6                	add	a5,a5,a3
+    80207520:	00079723          	sh	zero,14(a5)
 
   // record struct buf for virtio_disk_intr().
   b->disk = 1;
-    802071d4:	00baa223          	sw	a1,4(s5)
+    80207524:	00baa223          	sw	a1,4(s5)
   disk.info[idx[0]].b = b;
-    802071d8:	03563423          	sd	s5,40(a2)
+    80207528:	03563423          	sd	s5,40(a2)
 
   // avail[0] is flags
   // avail[1] tells the device how far to look in avail[2...].
   // avail[2...] are desc[] indices the device should process.
   // we only tell device the first index in our chain of descriptors.
   disk.avail[2 + (disk.avail[1] % NUM)] = idx[0];
-    802071dc:	6714                	ld	a3,8(a4)
-    802071de:	0026d783          	lhu	a5,2(a3)
-    802071e2:	8b9d                	andi	a5,a5,7
-    802071e4:	0789                	addi	a5,a5,2
-    802071e6:	0786                	slli	a5,a5,0x1
-    802071e8:	96be                	add	a3,a3,a5
-    802071ea:	00969023          	sh	s1,0(a3)
+    8020752c:	6714                	ld	a3,8(a4)
+    8020752e:	0026d783          	lhu	a5,2(a3)
+    80207532:	8b9d                	andi	a5,a5,7
+    80207534:	0789                	addi	a5,a5,2
+    80207536:	0786                	slli	a5,a5,0x1
+    80207538:	96be                	add	a3,a3,a5
+    8020753a:	00969023          	sh	s1,0(a3)
   __sync_synchronize();
-    802071ee:	0ff0000f          	fence
+    8020753e:	0ff0000f          	fence
   disk.avail[1] = disk.avail[1] + 1;
-    802071f2:	6718                	ld	a4,8(a4)
-    802071f4:	00275783          	lhu	a5,2(a4)
-    802071f8:	2785                	addiw	a5,a5,1
-    802071fa:	00f71123          	sh	a5,2(a4)
+    80207542:	6718                	ld	a4,8(a4)
+    80207544:	00275783          	lhu	a5,2(a4)
+    80207548:	2785                	addiw	a5,a5,1
+    8020754a:	00f71123          	sh	a5,2(a4)
 
   *R(VIRTIO_MMIO_QUEUE_NOTIFY) = 0; // value is queue number
-    802071fe:	00003797          	auipc	a5,0x3
-    80207202:	c027b783          	ld	a5,-1022(a5) # 80209e00 <digits+0xa80>
-    80207206:	0007a023          	sw	zero,0(a5)
+    8020754e:	00003797          	auipc	a5,0x3
+    80207552:	8ea7b783          	ld	a5,-1814(a5) # 80209e38 <digits+0xab8>
+    80207556:	0007a023          	sw	zero,0(a5)
 
   // Wait for virtio_disk_intr() to say request has finished.
   while(b->disk == 1) {
-    8020720a:	004aa783          	lw	a5,4(s5)
-    8020720e:	02b79163          	bne	a5,a1,80207230 <virtio_disk_rw+0x18a>
+    8020755a:	004aa783          	lw	a5,4(s5)
+    8020755e:	02b79163          	bne	a5,a1,80207580 <virtio_disk_rw+0x18a>
     sleep(b, &disk.vdisk_lock);
-    80207212:	0001e917          	auipc	s2,0x1e
-    80207216:	e9690913          	addi	s2,s2,-362 # 802250a8 <disk+0x20a8>
+    80207562:	0001e917          	auipc	s2,0x1e
+    80207566:	b4690913          	addi	s2,s2,-1210 # 802250a8 <disk+0x20a8>
   while(b->disk == 1) {
-    8020721a:	4485                	li	s1,1
+    8020756a:	4485                	li	s1,1
     sleep(b, &disk.vdisk_lock);
-    8020721c:	85ca                	mv	a1,s2
-    8020721e:	8556                	mv	a0,s5
-    80207220:	ffffb097          	auipc	ra,0xffffb
-    80207224:	09c080e7          	jalr	156(ra) # 802022bc <sleep>
+    8020756c:	85ca                	mv	a1,s2
+    8020756e:	8556                	mv	a0,s5
+    80207570:	ffffb097          	auipc	ra,0xffffb
+    80207574:	d4c080e7          	jalr	-692(ra) # 802022bc <sleep>
   while(b->disk == 1) {
-    80207228:	004aa783          	lw	a5,4(s5)
-    8020722c:	fe9788e3          	beq	a5,s1,8020721c <virtio_disk_rw+0x176>
+    80207578:	004aa783          	lw	a5,4(s5)
+    8020757c:	fe9788e3          	beq	a5,s1,8020756c <virtio_disk_rw+0x176>
   }
 
   disk.info[idx[0]].b = 0;
-    80207230:	f8042483          	lw	s1,-128(s0)
-    80207234:	20048713          	addi	a4,s1,512
-    80207238:	0712                	slli	a4,a4,0x4
-    8020723a:	0001c797          	auipc	a5,0x1c
-    8020723e:	dc678793          	addi	a5,a5,-570 # 80223000 <disk>
-    80207242:	97ba                	add	a5,a5,a4
-    80207244:	0207b423          	sd	zero,40(a5)
+    80207580:	f8042483          	lw	s1,-128(s0)
+    80207584:	20048713          	addi	a4,s1,512
+    80207588:	0712                	slli	a4,a4,0x4
+    8020758a:	0001c797          	auipc	a5,0x1c
+    8020758e:	a7678793          	addi	a5,a5,-1418 # 80223000 <disk>
+    80207592:	97ba                	add	a5,a5,a4
+    80207594:	0207b423          	sd	zero,40(a5)
     if(disk.desc[i].flags & VRING_DESC_F_NEXT)
-    80207248:	0001e917          	auipc	s2,0x1e
-    8020724c:	db890913          	addi	s2,s2,-584 # 80225000 <disk+0x2000>
-    80207250:	a019                	j	80207256 <virtio_disk_rw+0x1b0>
+    80207598:	0001e917          	auipc	s2,0x1e
+    8020759c:	a6890913          	addi	s2,s2,-1432 # 80225000 <disk+0x2000>
+    802075a0:	a019                	j	802075a6 <virtio_disk_rw+0x1b0>
       i = disk.desc[i].next;
-    80207252:	00e7d483          	lhu	s1,14(a5)
+    802075a2:	00e7d483          	lhu	s1,14(a5)
     free_desc(i);
-    80207256:	8526                	mv	a0,s1
-    80207258:	00000097          	auipc	ra,0x0
-    8020725c:	c48080e7          	jalr	-952(ra) # 80206ea0 <free_desc>
+    802075a6:	8526                	mv	a0,s1
+    802075a8:	00000097          	auipc	ra,0x0
+    802075ac:	c48080e7          	jalr	-952(ra) # 802071f0 <free_desc>
     if(disk.desc[i].flags & VRING_DESC_F_NEXT)
-    80207260:	0492                	slli	s1,s1,0x4
-    80207262:	00093783          	ld	a5,0(s2)
-    80207266:	97a6                	add	a5,a5,s1
-    80207268:	00c7d703          	lhu	a4,12(a5)
-    8020726c:	8b05                	andi	a4,a4,1
-    8020726e:	f375                	bnez	a4,80207252 <virtio_disk_rw+0x1ac>
+    802075b0:	0492                	slli	s1,s1,0x4
+    802075b2:	00093783          	ld	a5,0(s2)
+    802075b6:	97a6                	add	a5,a5,s1
+    802075b8:	00c7d703          	lhu	a4,12(a5)
+    802075bc:	8b05                	andi	a4,a4,1
+    802075be:	f375                	bnez	a4,802075a2 <virtio_disk_rw+0x1ac>
   free_chain(idx[0]);
 
   release(&disk.vdisk_lock);
-    80207270:	0001e517          	auipc	a0,0x1e
-    80207274:	e3850513          	addi	a0,a0,-456 # 802250a8 <disk+0x20a8>
-    80207278:	ffff9097          	auipc	ra,0xffff9
-    8020727c:	4a2080e7          	jalr	1186(ra) # 8020071a <release>
-}
-    80207280:	60aa                	ld	ra,136(sp)
-    80207282:	640a                	ld	s0,128(sp)
-    80207284:	74e6                	ld	s1,120(sp)
-    80207286:	7946                	ld	s2,112(sp)
-    80207288:	79a6                	ld	s3,104(sp)
-    8020728a:	7a06                	ld	s4,96(sp)
-    8020728c:	6ae6                	ld	s5,88(sp)
-    8020728e:	6b46                	ld	s6,80(sp)
-    80207290:	6ba6                	ld	s7,72(sp)
-    80207292:	6c06                	ld	s8,64(sp)
-    80207294:	7ce2                	ld	s9,56(sp)
-    80207296:	7d42                	ld	s10,48(sp)
-    80207298:	7da2                	ld	s11,40(sp)
-    8020729a:	6149                	addi	sp,sp,144
-    8020729c:	8082                	ret
+    802075c0:	0001e517          	auipc	a0,0x1e
+    802075c4:	ae850513          	addi	a0,a0,-1304 # 802250a8 <disk+0x20a8>
+    802075c8:	ffff9097          	auipc	ra,0xffff9
+    802075cc:	152080e7          	jalr	338(ra) # 8020071a <release>
+}
+    802075d0:	60aa                	ld	ra,136(sp)
+    802075d2:	640a                	ld	s0,128(sp)
+    802075d4:	74e6                	ld	s1,120(sp)
+    802075d6:	7946                	ld	s2,112(sp)
+    802075d8:	79a6                	ld	s3,104(sp)
+    802075da:	7a06                	ld	s4,96(sp)
+    802075dc:	6ae6                	ld	s5,88(sp)
+    802075de:	6b46                	ld	s6,80(sp)
+    802075e0:	6ba6                	ld	s7,72(sp)
+    802075e2:	6c06                	ld	s8,64(sp)
+    802075e4:	7ce2                	ld	s9,56(sp)
+    802075e6:	7d42                	ld	s10,48(sp)
+    802075e8:	7da2                	ld	s11,40(sp)
+    802075ea:	6149                	addi	sp,sp,144
+    802075ec:	8082                	ret
   if(write)
-    8020729e:	019037b3          	snez	a5,s9
-    802072a2:	f6f42823          	sw	a5,-144(s0)
+    802075ee:	019037b3          	snez	a5,s9
+    802075f2:	f6f42823          	sw	a5,-144(s0)
   buf0.reserved = 0;
-    802072a6:	f6042a23          	sw	zero,-140(s0)
+    802075f6:	f6042a23          	sw	zero,-140(s0)
   buf0.sector = sector;
-    802072aa:	f7a43c23          	sd	s10,-136(s0)
+    802075fa:	f7a43c23          	sd	s10,-136(s0)
   disk.desc[idx[0]].addr = (uint64) kwalkaddr(myproc()->kpagetable, (uint64) &buf0);
-    802072ae:	ffffa097          	auipc	ra,0xffffa
-    802072b2:	78e080e7          	jalr	1934(ra) # 80201a3c <myproc>
-    802072b6:	f8042483          	lw	s1,-128(s0)
-    802072ba:	00449913          	slli	s2,s1,0x4
-    802072be:	0001e997          	auipc	s3,0x1e
-    802072c2:	d4298993          	addi	s3,s3,-702 # 80225000 <disk+0x2000>
-    802072c6:	0009ba03          	ld	s4,0(s3)
-    802072ca:	9a4a                	add	s4,s4,s2
-    802072cc:	f7040593          	addi	a1,s0,-144
-    802072d0:	6d28                	ld	a0,88(a0)
-    802072d2:	ffffa097          	auipc	ra,0xffffa
-    802072d6:	91e080e7          	jalr	-1762(ra) # 80200bf0 <kwalkaddr>
-    802072da:	00aa3023          	sd	a0,0(s4)
+    802075fe:	ffffa097          	auipc	ra,0xffffa
+    80207602:	43e080e7          	jalr	1086(ra) # 80201a3c <myproc>
+    80207606:	f8042483          	lw	s1,-128(s0)
+    8020760a:	00449913          	slli	s2,s1,0x4
+    8020760e:	0001e997          	auipc	s3,0x1e
+    80207612:	9f298993          	addi	s3,s3,-1550 # 80225000 <disk+0x2000>
+    80207616:	0009ba03          	ld	s4,0(s3)
+    8020761a:	9a4a                	add	s4,s4,s2
+    8020761c:	f7040593          	addi	a1,s0,-144
+    80207620:	6d28                	ld	a0,88(a0)
+    80207622:	ffff9097          	auipc	ra,0xffff9
+    80207626:	5ce080e7          	jalr	1486(ra) # 80200bf0 <kwalkaddr>
+    8020762a:	00aa3023          	sd	a0,0(s4)
   disk.desc[idx[0]].len = sizeof(buf0);
-    802072de:	0009b783          	ld	a5,0(s3)
-    802072e2:	97ca                	add	a5,a5,s2
-    802072e4:	4741                	li	a4,16
-    802072e6:	c798                	sw	a4,8(a5)
+    8020762e:	0009b783          	ld	a5,0(s3)
+    80207632:	97ca                	add	a5,a5,s2
+    80207634:	4741                	li	a4,16
+    80207636:	c798                	sw	a4,8(a5)
   disk.desc[idx[0]].flags = VRING_DESC_F_NEXT;
-    802072e8:	0009b783          	ld	a5,0(s3)
-    802072ec:	97ca                	add	a5,a5,s2
-    802072ee:	4705                	li	a4,1
-    802072f0:	00e79623          	sh	a4,12(a5)
+    80207638:	0009b783          	ld	a5,0(s3)
+    8020763c:	97ca                	add	a5,a5,s2
+    8020763e:	4705                	li	a4,1
+    80207640:	00e79623          	sh	a4,12(a5)
   disk.desc[idx[0]].next = idx[1];
-    802072f4:	f8442783          	lw	a5,-124(s0)
-    802072f8:	0009b703          	ld	a4,0(s3)
-    802072fc:	974a                	add	a4,a4,s2
-    802072fe:	00f71723          	sh	a5,14(a4)
+    80207644:	f8442783          	lw	a5,-124(s0)
+    80207648:	0009b703          	ld	a4,0(s3)
+    8020764c:	974a                	add	a4,a4,s2
+    8020764e:	00f71723          	sh	a5,14(a4)
   disk.desc[idx[1]].addr = (uint64) b->data;
-    80207302:	0792                	slli	a5,a5,0x4
-    80207304:	0009b703          	ld	a4,0(s3)
-    80207308:	973e                	add	a4,a4,a5
-    8020730a:	058a8693          	addi	a3,s5,88
-    8020730e:	e314                	sd	a3,0(a4)
+    80207652:	0792                	slli	a5,a5,0x4
+    80207654:	0009b703          	ld	a4,0(s3)
+    80207658:	973e                	add	a4,a4,a5
+    8020765a:	058a8693          	addi	a3,s5,88
+    8020765e:	e314                	sd	a3,0(a4)
   disk.desc[idx[1]].len = BSIZE;
-    80207310:	0009b703          	ld	a4,0(s3)
-    80207314:	973e                	add	a4,a4,a5
-    80207316:	20000693          	li	a3,512
-    8020731a:	c714                	sw	a3,8(a4)
+    80207660:	0009b703          	ld	a4,0(s3)
+    80207664:	973e                	add	a4,a4,a5
+    80207666:	20000693          	li	a3,512
+    8020766a:	c714                	sw	a3,8(a4)
   if(write)
-    8020731c:	e40c92e3          	bnez	s9,80207160 <virtio_disk_rw+0xba>
+    8020766c:	e40c92e3          	bnez	s9,802074b0 <virtio_disk_rw+0xba>
     disk.desc[idx[1]].flags = VRING_DESC_F_WRITE; // device writes b->data
-    80207320:	0001e717          	auipc	a4,0x1e
-    80207324:	ce073703          	ld	a4,-800(a4) # 80225000 <disk+0x2000>
-    80207328:	973e                	add	a4,a4,a5
-    8020732a:	4689                	li	a3,2
-    8020732c:	00d71623          	sh	a3,12(a4)
-    80207330:	bd3d                	j	8020716e <virtio_disk_rw+0xc8>
+    80207670:	0001e717          	auipc	a4,0x1e
+    80207674:	99073703          	ld	a4,-1648(a4) # 80225000 <disk+0x2000>
+    80207678:	973e                	add	a4,a4,a5
+    8020767a:	4689                	li	a3,2
+    8020767c:	00d71623          	sh	a3,12(a4)
+    80207680:	bd3d                	j	802074be <virtio_disk_rw+0xc8>
 
-0000000080207332 <virtio_disk_intr>:
+0000000080207682 <virtio_disk_intr>:
 
 void
 virtio_disk_intr()
 {
-    80207332:	1101                	addi	sp,sp,-32
-    80207334:	ec06                	sd	ra,24(sp)
-    80207336:	e822                	sd	s0,16(sp)
-    80207338:	e426                	sd	s1,8(sp)
-    8020733a:	e04a                	sd	s2,0(sp)
-    8020733c:	1000                	addi	s0,sp,32
+    80207682:	1101                	addi	sp,sp,-32
+    80207684:	ec06                	sd	ra,24(sp)
+    80207686:	e822                	sd	s0,16(sp)
+    80207688:	e426                	sd	s1,8(sp)
+    8020768a:	e04a                	sd	s2,0(sp)
+    8020768c:	1000                	addi	s0,sp,32
   acquire(&disk.vdisk_lock);
-    8020733e:	0001e517          	auipc	a0,0x1e
-    80207342:	d6a50513          	addi	a0,a0,-662 # 802250a8 <disk+0x20a8>
-    80207346:	ffff9097          	auipc	ra,0xffff9
-    8020734a:	380080e7          	jalr	896(ra) # 802006c6 <acquire>
+    8020768e:	0001e517          	auipc	a0,0x1e
+    80207692:	a1a50513          	addi	a0,a0,-1510 # 802250a8 <disk+0x20a8>
+    80207696:	ffff9097          	auipc	ra,0xffff9
+    8020769a:	030080e7          	jalr	48(ra) # 802006c6 <acquire>
 
   while((disk.used_idx % NUM) != (disk.used->id % NUM)){
-    8020734e:	0001e717          	auipc	a4,0x1e
-    80207352:	cb270713          	addi	a4,a4,-846 # 80225000 <disk+0x2000>
-    80207356:	02075783          	lhu	a5,32(a4)
-    8020735a:	6b18                	ld	a4,16(a4)
-    8020735c:	00275683          	lhu	a3,2(a4)
-    80207360:	8ebd                	xor	a3,a3,a5
-    80207362:	8a9d                	andi	a3,a3,7
-    80207364:	cab9                	beqz	a3,802073ba <virtio_disk_intr+0x88>
+    8020769e:	0001e717          	auipc	a4,0x1e
+    802076a2:	96270713          	addi	a4,a4,-1694 # 80225000 <disk+0x2000>
+    802076a6:	02075783          	lhu	a5,32(a4)
+    802076aa:	6b18                	ld	a4,16(a4)
+    802076ac:	00275683          	lhu	a3,2(a4)
+    802076b0:	8ebd                	xor	a3,a3,a5
+    802076b2:	8a9d                	andi	a3,a3,7
+    802076b4:	cab9                	beqz	a3,8020770a <virtio_disk_intr+0x88>
     int id = disk.used->elems[disk.used_idx].id;
 
     if(disk.info[id].status != 0)
-    80207366:	0001c917          	auipc	s2,0x1c
-    8020736a:	c9a90913          	addi	s2,s2,-870 # 80223000 <disk>
+    802076b6:	0001c917          	auipc	s2,0x1c
+    802076ba:	94a90913          	addi	s2,s2,-1718 # 80223000 <disk>
       panic("virtio_disk_intr status");
     
     disk.info[id].b->disk = 0;   // disk is done with buf
     wakeup(disk.info[id].b);
 
     disk.used_idx = (disk.used_idx + 1) % NUM;
-    8020736e:	0001e497          	auipc	s1,0x1e
-    80207372:	c9248493          	addi	s1,s1,-878 # 80225000 <disk+0x2000>
+    802076be:	0001e497          	auipc	s1,0x1e
+    802076c2:	94248493          	addi	s1,s1,-1726 # 80225000 <disk+0x2000>
     int id = disk.used->elems[disk.used_idx].id;
-    80207376:	078e                	slli	a5,a5,0x3
-    80207378:	973e                	add	a4,a4,a5
-    8020737a:	435c                	lw	a5,4(a4)
+    802076c6:	078e                	slli	a5,a5,0x3
+    802076c8:	973e                	add	a4,a4,a5
+    802076ca:	435c                	lw	a5,4(a4)
     if(disk.info[id].status != 0)
-    8020737c:	20078713          	addi	a4,a5,512
-    80207380:	0712                	slli	a4,a4,0x4
-    80207382:	974a                	add	a4,a4,s2
-    80207384:	03074703          	lbu	a4,48(a4)
-    80207388:	e335                	bnez	a4,802073ec <virtio_disk_intr+0xba>
+    802076cc:	20078713          	addi	a4,a5,512
+    802076d0:	0712                	slli	a4,a4,0x4
+    802076d2:	974a                	add	a4,a4,s2
+    802076d4:	03074703          	lbu	a4,48(a4)
+    802076d8:	e335                	bnez	a4,8020773c <virtio_disk_intr+0xba>
     disk.info[id].b->disk = 0;   // disk is done with buf
-    8020738a:	20078793          	addi	a5,a5,512
-    8020738e:	0792                	slli	a5,a5,0x4
-    80207390:	97ca                	add	a5,a5,s2
-    80207392:	7798                	ld	a4,40(a5)
-    80207394:	00072223          	sw	zero,4(a4)
+    802076da:	20078793          	addi	a5,a5,512
+    802076de:	0792                	slli	a5,a5,0x4
+    802076e0:	97ca                	add	a5,a5,s2
+    802076e2:	7798                	ld	a4,40(a5)
+    802076e4:	00072223          	sw	zero,4(a4)
     wakeup(disk.info[id].b);
-    80207398:	7788                	ld	a0,40(a5)
-    8020739a:	ffffb097          	auipc	ra,0xffffb
-    8020739e:	09e080e7          	jalr	158(ra) # 80202438 <wakeup>
+    802076e8:	7788                	ld	a0,40(a5)
+    802076ea:	ffffb097          	auipc	ra,0xffffb
+    802076ee:	d4e080e7          	jalr	-690(ra) # 80202438 <wakeup>
     disk.used_idx = (disk.used_idx + 1) % NUM;
-    802073a2:	0204d783          	lhu	a5,32(s1)
-    802073a6:	2785                	addiw	a5,a5,1
-    802073a8:	8b9d                	andi	a5,a5,7
-    802073aa:	02f49023          	sh	a5,32(s1)
+    802076f2:	0204d783          	lhu	a5,32(s1)
+    802076f6:	2785                	addiw	a5,a5,1
+    802076f8:	8b9d                	andi	a5,a5,7
+    802076fa:	02f49023          	sh	a5,32(s1)
   while((disk.used_idx % NUM) != (disk.used->id % NUM)){
-    802073ae:	6898                	ld	a4,16(s1)
-    802073b0:	00275683          	lhu	a3,2(a4)
-    802073b4:	8a9d                	andi	a3,a3,7
-    802073b6:	fcf690e3          	bne	a3,a5,80207376 <virtio_disk_intr+0x44>
+    802076fe:	6898                	ld	a4,16(s1)
+    80207700:	00275683          	lhu	a3,2(a4)
+    80207704:	8a9d                	andi	a3,a3,7
+    80207706:	fcf690e3          	bne	a3,a5,802076c6 <virtio_disk_intr+0x44>
   }
   *R(VIRTIO_MMIO_INTERRUPT_ACK) = *R(VIRTIO_MMIO_INTERRUPT_STATUS) & 0x3;
-    802073ba:	00003797          	auipc	a5,0x3
-    802073be:	a4e7b783          	ld	a5,-1458(a5) # 80209e08 <digits+0xa88>
-    802073c2:	439c                	lw	a5,0(a5)
-    802073c4:	8b8d                	andi	a5,a5,3
-    802073c6:	00003717          	auipc	a4,0x3
-    802073ca:	a4a73703          	ld	a4,-1462(a4) # 80209e10 <digits+0xa90>
-    802073ce:	c31c                	sw	a5,0(a4)
+    8020770a:	00002797          	auipc	a5,0x2
+    8020770e:	7367b783          	ld	a5,1846(a5) # 80209e40 <digits+0xac0>
+    80207712:	439c                	lw	a5,0(a5)
+    80207714:	8b8d                	andi	a5,a5,3
+    80207716:	00002717          	auipc	a4,0x2
+    8020771a:	73273703          	ld	a4,1842(a4) # 80209e48 <digits+0xac8>
+    8020771e:	c31c                	sw	a5,0(a4)
 
   release(&disk.vdisk_lock);
-    802073d0:	0001e517          	auipc	a0,0x1e
-    802073d4:	cd850513          	addi	a0,a0,-808 # 802250a8 <disk+0x20a8>
-    802073d8:	ffff9097          	auipc	ra,0xffff9
-    802073dc:	342080e7          	jalr	834(ra) # 8020071a <release>
-}
-    802073e0:	60e2                	ld	ra,24(sp)
-    802073e2:	6442                	ld	s0,16(sp)
-    802073e4:	64a2                	ld	s1,8(sp)
-    802073e6:	6902                	ld	s2,0(sp)
-    802073e8:	6105                	addi	sp,sp,32
-    802073ea:	8082                	ret
+    80207720:	0001e517          	auipc	a0,0x1e
+    80207724:	98850513          	addi	a0,a0,-1656 # 802250a8 <disk+0x20a8>
+    80207728:	ffff9097          	auipc	ra,0xffff9
+    8020772c:	ff2080e7          	jalr	-14(ra) # 8020071a <release>
+}
+    80207730:	60e2                	ld	ra,24(sp)
+    80207732:	6442                	ld	s0,16(sp)
+    80207734:	64a2                	ld	s1,8(sp)
+    80207736:	6902                	ld	s2,0(sp)
+    80207738:	6105                	addi	sp,sp,32
+    8020773a:	8082                	ret
       panic("virtio_disk_intr status");
-    802073ec:	00003517          	auipc	a0,0x3
-    802073f0:	9a450513          	addi	a0,a0,-1628 # 80209d90 <digits+0xa10>
-    802073f4:	ffff9097          	auipc	ra,0xffff9
-    802073f8:	d50080e7          	jalr	-688(ra) # 80200144 <panic>
+    8020773c:	00002517          	auipc	a0,0x2
+    80207740:	68c50513          	addi	a0,a0,1676 # 80209dc8 <digits+0xa48>
+    80207744:	ffff9097          	auipc	ra,0xffff9
+    80207748:	a00080e7          	jalr	-1536(ra) # 80200144 <panic>
 	...
 
 0000000080208000 <_trampoline>:
diff --git a/target/kernel.sym b/target/kernel.sym
index 76dd84a..26384d2 100644
--- a/target/kernel.sym
+++ b/target/kernel.sym
@@ -1,8 +1,8 @@
 0000000080200000 .text
 0000000080209000 .rodata
 000000008020a000 .data
-000000008020ba30 .got
-000000008020ba90 .got.plt
+000000008020bca0 .got
+000000008020bd00 .got.plt
 000000008020c000 .bss
 0000000000000000 .riscv.attributes
 0000000000000000 .comment
@@ -37,9 +37,9 @@
 0000000000000000 swtch.o
 0000000000000000 trap.c
 0000000000000000 syscall.c
-0000000080202c8c argraw
+0000000080202ee0 argraw
 000000008020ac38 syscalls
-000000008020b328 sysnames
+000000008020b460 sysnames
 0000000000000000 sysproc.c
 0000000000000000 bio.c
 0000000000000000 sleeplock.c
@@ -47,101 +47,106 @@
 0000000000000000 pipe.c
 0000000000000000 exec.c
 0000000000000000 sysfile.c
-0000000080204322 argfd
-000000008020438a fdalloc
-00000000802043cc create
+000000008020463e argfd
+00000000802046a6 fdalloc
+00000000802046e8 create
 0000000000000000 kernelvec.o
 0000000000000000 timer.c
 0000000000000000 disk.c
 0000000000000000 fat32.c
-00000000802050ee read_fat
-0000000080205164 alloc_clus
-00000000802052a6 write_fat
-0000000080205326 reloc_clus
-000000008020542e rw_clus
-000000008020557a eget
+000000008020543e read_fat
+00000000802054b4 alloc_clus
+00000000802055f6 write_fat
+0000000080205676 reloc_clus
+000000008020577e rw_clus
+00000000802058ca eget
 000000008021e5b8 ecache
-0000000080205688 read_entry_name
-0000000080206870 lookup_path
-000000008020ba18 illegal.1
-000000008020ba28 illegal.0
+00000000802059d8 read_entry_name
+0000000080206bc0 lookup_path
+000000008020bc88 illegal.1
+000000008020bc98 illegal.0
 000000008021e428 fat
 000000008021e450 root
 0000000000000000 plic.c
 0000000000000000 console.c
 0000000000000000 virtio_disk.c
-0000000080206ea0 free_desc
+00000000802071f0 free_desc
 0000000080223000 disk
-000000008020ba30 _GLOBAL_OFFSET_TABLE_
-0000000080204bfe sys_remove
-0000000080205fe0 edup
+000000008020bca0 _GLOBAL_OFFSET_TABLE_
+0000000080204f1a sys_remove
+0000000080206330 edup
 0000000080200c68 mappages
 00000000802014a4 copyinstr
-0000000080206b62 consoleread
+0000000080206eb2 consoleread
 00000000802008b4 safestrcpy
-0000000080204646 sys_close
+0000000080204962 sys_close
 0000000080202280 yield
 0000000080214028 kmem
 0000000080202512 either_copyout
-0000000080204fee timerinit
+000000008020533e timerinit
 0000000080214180 proc
 00000000802016cc proc_kpagetable
-000000008020395c fileread
+0000000080203c78 fileread
 000000008020018e printf
-000000008020310c sys_sbrk
+0000000080203360 sys_sbrk
+0000000080203624 sys_yield
 0000000080208000 trampoline
 0000000080214000 panicked
-0000000080205c16 emake
-0000000080206a7a plic_claim
-0000000080204a22 sys_dev
-0000000080206a20 plicinit
-0000000080206aa4 plic_complete
+0000000080205f66 emake
+0000000080206dca plic_claim
+0000000080204d3e sys_dev
+0000000080206d70 plicinit
+0000000080206df4 plic_complete
 00000000802020aa sched
 00000000802007be memmove
-0000000080202e72 syscall
-00000000802044f0 sys_dup3
+00000000802030c6 syscall
+000000008020480c sys_dup3
 0000000080201a10 cpuid
-00000000802030c2 sys_fork
+0000000080203316 sys_fork
 0000000080218af0 bcache
-0000000080204828 sys_mkdir
-00000000802061d4 etrunc
-0000000080206a38 plicinithart
+0000000080204b44 sys_mkdir
+0000000080206524 etrunc
+0000000080206d88 plicinithart
 0000000080201f5a reparent
-0000000080205774 fat32_init
-0000000080206a04 enameparent
-0000000080202e42 argstr
+0000000080205ac4 fat32_init
+0000000080206d54 enameparent
+0000000080203096 argstr
 0000000080200f9e uvmdealloc
+000000008020358e sys_clone
 000000008020a000 sdata
-00000000802037f0 filedup
-0000000080203322 binit
+0000000080203b0c filedup
+000000008020363e binit
 00000000802012b4 uvmclear
-000000008020610a eremove
-000000008020457a sys_read
+000000008020645a eremove
+0000000080204896 sys_read
+000000008020527e sys_mount
 0000000080200822 memcpy
 0000000080200cf6 kvmmap
 0000000080200440 kfree
 0000000080201a20 mycpu
-00000000802027a4 devintr
-000000008020593a eread
+00000000802029f8 devintr
+0000000080205c8a eread
 000000008020a004 nextpid
-000000008020372e fileinit
+0000000080203a4a fileinit
 0000000080208090 userret
 0000000080200682 initlock
-0000000080205b5e formatname
+0000000080205eae formatname
 00000000802012e6 copyout
 00000000802022bc sleep
+000000008020528c sys_munmap
 00000000802000b8 printstring
-0000000080204f60 kernelvec
-000000008020ba2f edata
+00000000802052b0 kernelvec
+000000008020bc9f edata
 0000000080200988 wcsncmp
-0000000080203258 sys_kill
-0000000080203c8e pipeclose
-0000000080204694 sys_fstat
-0000000080206ad4 consolewrite
+00000000802034ac sys_kill
+0000000080203faa pipeclose
+00000000802049b0 sys_fstat
+0000000080206e24 consolewrite
 0000000080209000 rodata_start
-00000000802069e6 ename
+0000000080206d36 ename
 00000000802004c2 freerange
-000000008020623e elock
+000000008020529a sys_mmap
+000000008020658e elock
 0000000080200ae4 kvminithart
 000000008020100a uvmalloc
 0000000080200f14 uvminit
@@ -150,61 +155,64 @@
 0000000080201bbc proc_freepagetable
 0000000080201894 reg_info
 0000000080201b20 proc_pagetable
-00000000802031a8 sys_sleep
+00000000802033fc sys_sleep
 0000000080201672 kvmfree
-000000008020508a disk_init
-0000000080203aee dirnext
-0000000080203786 filealloc
+00000000802053da disk_init
+0000000080203e0a dirnext
+0000000080203aa2 filealloc
 0000000080202438 wakeup
-0000000080206f20 virtio_disk_init
+0000000080207270 virtio_disk_init
 0000000080201a3c myproc
 0000000080200000 BASE_ADDRESS
-0000000080204af4 sys_readdir
+0000000080202660 wait4
+0000000080204e10 sys_readdir
 0000000080200b08 walk
-00000000802046e2 sys_open
+00000000802049fe sys_open
 00000000802000e4 backtrace
-0000000080206cb8 consoleintr
-0000000080206c7a consputc
+0000000080207008 consoleintr
+0000000080206fca consputc
 00000000802024a2 kill
 0000000080201ada allocpid
 00000000802013c4 copyin
 0000000080200910 wnstr
 000000008020116c uvmfree
 0000000080201372 copyout2
-0000000080203a1e filewrite
+0000000080203d3a filewrite
 0000000080200942 snstr
-0000000080202dbe argint
+0000000080203012 argint
 0000000080209000 srodata
 0000000080200e22 vmunmap
-00000000802032ce sys_trace
-0000000080203ee8 exec
+0000000080203522 sys_times
+000000008020353a sys_trace
+0000000080204204 exec
 0000000080209000 etext
-00000000802045e0 sys_write
+00000000802048fc sys_write
 000000008020071a release
-0000000080202d8e fetchstr
+0000000080202fe2 fetchstr
 000000008020233a wait
-00000000802062c2 eput
+0000000080206612 eput
 0000000080214000 boot_stack_top
-0000000080202706 usertrapret
+000000008020295a usertrapret
 0000000080201fc0 scheduler
-0000000080205be8 cal_checksum
+0000000080205f38 cal_checksum
 0000000080208000 _trampoline
 0000000080226000 kernel_end
-00000000802065cc dirlookup
-0000000080203842 fileclose
-000000008020672a ealloc
+000000008020691c dirlookup
+00000000802035c0 sys_wait4
+0000000080203b5e fileclose
+0000000080206a7a ealloc
 0000000080200bf0 kwalkaddr
 00000000802005c0 freemem_amount
-0000000080202848 usertrap
+0000000080202a9c usertrap
 000000008020083a strncmp
 000000008021e408 tickslock
-0000000080203cfe pipewrite
-00000000802050d6 disk_intr
+000000008020401a pipewrite
+0000000080205426 disk_intr
 0000000080200876 strncpy
 000000008021d450 ftable
-0000000080207332 virtio_disk_intr
-0000000080209e18 erodata
-000000008020449e sys_dup
+0000000080207682 virtio_disk_intr
+0000000080209e50 erodata
+00000000802047ba sys_dup
 0000000080201452 copyin2
 0000000080200144 panic
 000000008020c000 bss_start
@@ -212,88 +220,90 @@
 000000008020050e kinit
 0000000080200784 memcmp
 0000000080202548 either_copyin
+0000000080205270 sys_umount
 0000000080201e42 fork
 0000000080214078 cpus
-0000000080203694 releasesleep
+00000000802039b0 releasesleep
 0000000080200000 _entry
 0000000080200698 holding
 00000000802006c6 acquire
 0000000080214000 sbss_clear
 000000008020a008 initcode
-00000000802026ca trapinithart
+000000008020291e trapinithart
 0000000080200762 memset
-0000000080202de0 sys_test_proc
+0000000080203034 sys_test_proc
 00000000802009e4 main
-000000008020363e acquiresleep
+000000008020395a acquiresleep
 0000000080208000 uservec
 0000000080200d2e kvminit
 00000000802015c4 kfreewalk
-00000000802035c8 bunpin
-0000000080202e20 argaddr
+00000000802038e4 bunpin
+0000000080203074 argaddr
 0000000080200000 text_start
-0000000080203306 sys_shutdown
-0000000080203156 sys_brk
-000000008020328a sys_uptime
+0000000080203572 sys_shutdown
+00000000802033aa sys_brk
+00000000802034de sys_uptime
 000000008020a000 data_start
-0000000080204b42 sys_getcwd
+0000000080204e5e sys_getcwd
 000000008020036e printfinit
 0000000080201732 vmprint
 0000000080200ee6 uvmcreate
-0000000080205a32 ewrite
+0000000080205d82 ewrite
 0000000080201dc6 growproc
-00000000802036d8 holdingsleep
+00000000802039f4 holdingsleep
 0000000080201554 copyinstr2
 0000000080201d4a userinit
-00000000802033c2 bread
-0000000080203e02 piperead
+00000000802036de bread
+000000008020411e piperead
 00000000802003a0 print_logo
 000000008021e420 ticks
-0000000080206e4a consoleinit
+000000008020719a consoleinit
 0000000080200bae walkaddr
-0000000080202a2e trapframedump
+0000000080202c82 trapframedump
 000000008020257c procdump
-00000000802034ee brelse
-0000000080202cf4 sys_sysinfo
-0000000080205016 set_next_timeout
-0000000080202f16 sys_exec
+000000008020380a brelse
+0000000080202f48 sys_sysinfo
+0000000080205366 set_next_timeout
+000000008020316a sys_exec
 0000000080200c46 kvmpa
-00000000802063fa estat
-0000000080202660 swtch
+000000008020674a estat
+00000000802028b4 swtch
 0000000080226000 ebss_clear
 00000000802005d6 push_off
-0000000080204d22 sys_rename
+000000008020503e sys_rename
 0000000080200622 pop_off
-00000000802034b2 bwrite
-000000008020503c timer_tick
-00000000802050bc disk_write
+00000000802037ce bwrite
+000000008020538c timer_tick
+000000008020540c disk_write
 0000000080202180 exit
 0000000080201100 freewalk
-00000000802030da sys_wait
-0000000080203058 sys_exit
-0000000080203604 initsleeplock
-0000000080206274 eunlock
+000000008020332e sys_wait
+00000000802032ac sys_exit
+0000000080203920 initsleeplock
+00000000802065c4 eunlock
 0000000080214058 kernel_pagetable
-00000000802070a6 virtio_disk_rw
+00000000802073f6 virtio_disk_rw
 00000000802008e6 strlen
-00000000802050a2 disk_read
-0000000080204916 sys_pipe
+00000000802053f2 disk_read
+0000000080204c32 sys_pipe
+000000008020277c clone
 000000008020c000 boot_stack
 0000000080202630 procnum
 00000000802009c0 strchr
-0000000080206442 enext
+0000000080206792 enext
 0000000080201620 kvmfreeusr
 0000000080222c20 cons
 000000008020055a kalloc
-0000000080202d3e fetchaddr
+0000000080202f92 fetchaddr
 000000008021d3b0 devsw
-000000008020308c sys_getpid
-0000000080203bb4 pipealloc
-00000000802030a6 sys_getppid
+00000000802032e0 sys_getpid
+0000000080203ed0 pipealloc
+00000000802032fa sys_getppid
 0000000080200000 kernel_start
-0000000080204882 sys_chdir
-0000000080206024 eupdate
-0000000080202940 kerneltrap
-000000008020358c bpin
+0000000080204b9e sys_chdir
+0000000080206374 eupdate
+0000000080202b94 kerneltrap
+00000000802038a8 bpin
 000000008020199a procinit
-00000000802038f8 filestat
+0000000080203c14 filestat
 0000000080214060 pid_lock
-- 
GitLab