From 31c61573abaa08735e481b8949fcd7e72b97cd69 Mon Sep 17 00:00:00 2001
From: Yufan Du <nbsdyf@stu.pku.edu.cn>
Date: Tue, 11 Mar 2025 02:24:43 +0000
Subject: [PATCH] par1 with times

---
 Makefile                  |     3 +-
 kernel/include/initcode.h |   252 +-
 kernel/include/sysnum.h   |     1 +
 kernel/proc.o             |   Bin 155184 -> 155224 bytes
 kernel/syscall.c          |     5 +-
 kernel/syscall.o          |   Bin 53344 -> 53552 bytes
 kernel/times.c            |    52 +
 sdcard.img                |   Bin 134217728 -> 134217728 bytes
 target/kernel             |   Bin 279576 -> 282904 bytes
 target/kernel.asm         | 12797 ++++++++++++++++++------------------
 target/kernel.sym         |   236 +-
 xv6-user/_cat             |   Bin 24704 -> 24768 bytes
 xv6-user/_echo            |   Bin 23544 -> 23608 bytes
 xv6-user/_find            |   Bin 25744 -> 25816 bytes
 xv6-user/_grep            |   Bin 27856 -> 27920 bytes
 xv6-user/_init            |   Bin 24944 -> 25024 bytes
 xv6-user/_kill            |   Bin 23488 -> 23536 bytes
 xv6-user/_ls              |   Bin 25888 -> 25960 bytes
 xv6-user/_mkdir           |   Bin 23600 -> 23672 bytes
 xv6-user/_mv              |   Bin 25328 -> 25392 bytes
 xv6-user/_rm              |   Bin 23536 -> 23600 bytes
 xv6-user/_sh              |   Bin 48952 -> 49016 bytes
 xv6-user/_sleep           |   Bin 23552 -> 23600 bytes
 xv6-user/_strace          |   Bin 23912 -> 23968 bytes
 xv6-user/_test            |   Bin 23272 -> 23336 bytes
 xv6-user/_usertests       |   Bin 129696 -> 129760 bytes
 xv6-user/_wc              |   Bin 25824 -> 25864 bytes
 xv6-user/_xargs           |   Bin 25376 -> 25440 bytes
 xv6-user/cat.asm          |   858 +--
 xv6-user/cat.sym          |    41 +-
 xv6-user/echo.asm         |   848 +--
 xv6-user/echo.sym         |    39 +-
 xv6-user/find.asm         |   884 +--
 xv6-user/find.sym         |    41 +-
 xv6-user/grep.asm         |   854 +--
 xv6-user/grep.sym         |    41 +-
 xv6-user/init.asm         |   868 +--
 xv6-user/init.c           |     1 +
 xv6-user/init.o           |   Bin 15304 -> 15376 bytes
 xv6-user/init.sym         |    47 +-
 xv6-user/kill.asm         |   848 +--
 xv6-user/kill.sym         |    39 +-
 xv6-user/ls.asm           |   868 +--
 xv6-user/ls.sym           |    41 +-
 xv6-user/mkdir.asm        |   852 +--
 xv6-user/mkdir.sym        |    39 +-
 xv6-user/mv.asm           |   864 +--
 xv6-user/mv.sym           |    39 +-
 xv6-user/rm.asm           |   852 +--
 xv6-user/rm.sym           |    39 +-
 xv6-user/sh.asm           |  1002 +--
 xv6-user/sh.sym           |    53 +-
 xv6-user/sleep.asm        |   852 +--
 xv6-user/sleep.sym        |    39 +-
 xv6-user/strace.asm       |   856 +--
 xv6-user/strace.sym       |    39 +-
 xv6-user/test.asm         |   856 +--
 xv6-user/test.sym         |    39 +-
 xv6-user/usertests.asm    |  2230 +++----
 xv6-user/usertests.sym    |    53 +-
 xv6-user/usys.S           |     5 +
 xv6-user/usys.o           |   Bin 10152 -> 10432 bytes
 xv6-user/usys.pl          |     1 +
 xv6-user/wc.asm           |   870 +--
 xv6-user/wc.sym           |    41 +-
 xv6-user/xargs.asm        |   856 +--
 xv6-user/xargs.sym        |    39 +-
 67 files changed, 15260 insertions(+), 14920 deletions(-)
 create mode 100644 kernel/times.c

diff --git a/Makefile b/Makefile
index 2522dab..15648e7 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,8 @@ OBJS += \
   $K/fat32.o \
   $K/plic.o \
   $K/console.o \
-  $K/shutdown.o
+  $K/shutdown.o \
+  $K/times.o
 
 ifeq ($(platform), k210)
 OBJS += \
diff --git a/kernel/include/initcode.h b/kernel/include/initcode.h
index 57782fc..bc1baf5 100644
--- a/kernel/include/initcode.h
+++ b/kernel/include/initcode.h
@@ -1,19 +1,19 @@
 0x79,0x71,0x06,0xf4,0x22,0xf0,0x26,0xec,0x4a,0xe8,0x4e,0xe4,0x52,0xe0,0x00,0x18,
-0x01,0x46,0x85,0x45,0x09,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,0x40,0x44,0x01,0x45,
-0x97,0x00,0x00,0x00,0xe7,0x80,0xa0,0x40,0x01,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,
-0x00,0x40,0x97,0x17,0x00,0x00,0x83,0xa7,0xe7,0xa6,0x63,0x5d,0xf0,0x0a,0x01,0x49,
-0x17,0x1a,0x00,0x00,0x13,0x0a,0x8a,0x8d,0x97,0x19,0x00,0x00,0x93,0x89,0x89,0xa5,
-0xb9,0xa8,0x17,0x15,0x00,0x00,0x13,0x05,0xe5,0x8d,0x97,0x00,0x00,0x00,0xe7,0x80,
-0xa0,0x71,0x05,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0x36,0x0e,0x09,0x97,0x17,
-0x00,0x00,0x93,0x87,0xa7,0xa3,0xca,0x97,0x97,0x15,0x00,0x00,0x93,0x85,0x05,0xad,
-0x88,0x63,0x97,0x00,0x00,0x00,0xe7,0x80,0x00,0x38,0x17,0x15,0x00,0x00,0x13,0x05,
-0xe5,0x8b,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0x6e,0x05,0x45,0x97,0x00,0x00,0x00,
+0x01,0x46,0x85,0x45,0x09,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,0x40,0x45,0x01,0x45,
+0x97,0x00,0x00,0x00,0xe7,0x80,0x80,0x41,0x01,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,
+0xe0,0x40,0x97,0x17,0x00,0x00,0x83,0xa7,0xe7,0xa8,0x63,0x5d,0xf0,0x0a,0x01,0x49,
+0x17,0x1a,0x00,0x00,0x13,0x0a,0x0a,0x8f,0x97,0x19,0x00,0x00,0x93,0x89,0x89,0xa7,
+0xb9,0xa8,0x17,0x15,0x00,0x00,0x13,0x05,0x65,0x8f,0x97,0x00,0x00,0x00,0xe7,0x80,
+0x40,0x73,0x05,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0x36,0x0e,0x09,0x97,0x17,
+0x00,0x00,0x93,0x87,0xa7,0xa5,0xca,0x97,0x97,0x15,0x00,0x00,0x93,0x85,0x85,0xaf,
+0x88,0x63,0x97,0x00,0x00,0x00,0xe7,0x80,0x60,0x38,0x17,0x15,0x00,0x00,0x13,0x05,
+0x65,0x8d,0x97,0x00,0x00,0x00,0xe7,0x80,0xc0,0x6f,0x05,0x45,0x97,0x00,0x00,0x00,
 0xe7,0x80,0xa0,0x32,0x05,0x29,0x83,0xa7,0x09,0x00,0x63,0x55,0xf9,0x04,0x52,0x85,
-0x97,0x00,0x00,0x00,0xe7,0x80,0x40,0x6c,0x97,0x00,0x00,0x00,0xe7,0x80,0x60,0x30,
+0x97,0x00,0x00,0x00,0xe7,0x80,0xe0,0x6d,0x97,0x00,0x00,0x00,0xe7,0x80,0x60,0x30,
 0xaa,0x84,0xe3,0x48,0x05,0xf8,0x5d,0xd1,0x01,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,
 0x60,0x30,0xe3,0x89,0xa4,0xfc,0xe3,0x59,0x05,0xfe,0x17,0x15,0x00,0x00,0x13,0x05,
-0x65,0x88,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0x69,0x05,0x45,0x97,0x00,0x00,0x00,
-0xe7,0x80,0xa0,0x2d,0x97,0x00,0x00,0x00,0xe7,0x80,0xe0,0x39,0x01,0x45,0xa2,0x70,
+0xe5,0x89,0x97,0x00,0x00,0x00,0xe7,0x80,0xc0,0x6a,0x05,0x45,0x97,0x00,0x00,0x00,
+0xe7,0x80,0xa0,0x2d,0x97,0x00,0x00,0x00,0xe7,0x80,0xe0,0x3a,0x01,0x45,0xa2,0x70,
 0x02,0x74,0xe2,0x64,0x42,0x69,0xa2,0x69,0x02,0x6a,0x45,0x61,0x82,0x80,0x41,0x11,
 0x22,0xe4,0x00,0x08,0xaa,0x87,0x85,0x05,0x85,0x07,0x03,0xc7,0xf5,0xff,0xa3,0x8f,
 0xe7,0xfe,0x75,0xfb,0x22,0x64,0x41,0x01,0x82,0x80,0x41,0x11,0x22,0xe4,0x00,0x08,
@@ -33,14 +33,14 @@
 0x52,0xf8,0x56,0xf4,0x5a,0xf0,0x5e,0xec,0x62,0xe8,0x80,0x10,0xaa,0x8b,0x2e,0x8a,
 0x2a,0x89,0x81,0x44,0x93,0x0a,0xf4,0xfa,0x29,0x4b,0x35,0x4c,0xa6,0x89,0x85,0x24,
 0x63,0xd7,0x44,0x03,0x05,0x46,0xd6,0x85,0x01,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,
-0x60,0x1b,0x63,0x5e,0xa0,0x00,0x83,0x47,0xf4,0xfa,0x23,0x00,0xf9,0x00,0x63,0x87,
+0x80,0x1b,0x63,0x5e,0xa0,0x00,0x83,0x47,0xf4,0xfa,0x23,0x00,0xf9,0x00,0x63,0x87,
 0x67,0x01,0x05,0x09,0xe3,0x9c,0x87,0xfd,0xa6,0x89,0x11,0xa0,0xa6,0x89,0xde,0x99,
 0x23,0x80,0x09,0x00,0x5e,0x85,0xe6,0x60,0x46,0x64,0xa6,0x64,0x06,0x69,0xe2,0x79,
 0x42,0x7a,0xa2,0x7a,0x02,0x7b,0xe2,0x6b,0x42,0x6c,0x25,0x61,0x82,0x80,0x01,0x11,
 0x06,0xec,0x22,0xe8,0x26,0xe4,0x4a,0xe0,0x00,0x10,0x2e,0x89,0x81,0x45,0x97,0x00,
-0x00,0x00,0xe7,0x80,0xc0,0x18,0x63,0x45,0x05,0x02,0xaa,0x84,0xca,0x85,0x97,0x00,
-0x00,0x00,0xe7,0x80,0x40,0x18,0x2a,0x89,0x26,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,
-0x80,0x15,0x4a,0x85,0xe2,0x60,0x42,0x64,0xa2,0x64,0x02,0x69,0x05,0x61,0x82,0x80,
+0x00,0x00,0xe7,0x80,0x20,0x19,0x63,0x45,0x05,0x02,0xaa,0x84,0xca,0x85,0x97,0x00,
+0x00,0x00,0xe7,0x80,0xc0,0x18,0x2a,0x89,0x26,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,
+0xc0,0x15,0x4a,0x85,0xe2,0x60,0x42,0x64,0xa2,0x64,0x02,0x69,0x05,0x61,0x82,0x80,
 0x7d,0x59,0xc5,0xbf,0x41,0x11,0x22,0xe4,0x00,0x08,0x03,0x47,0x05,0x00,0x93,0x07,
 0xd0,0x02,0x85,0x45,0x63,0x03,0xf7,0x04,0x03,0x47,0x05,0x00,0x9b,0x07,0x07,0xfd,
 0x93,0xf7,0xf7,0x0f,0xa5,0x46,0x63,0xed,0xf6,0x02,0x81,0x46,0x25,0x46,0x05,0x05,
@@ -59,123 +59,125 @@
 0x82,0x80,0x01,0x45,0xe5,0xbf,0x41,0x11,0x06,0xe4,0x22,0xe0,0x00,0x08,0x97,0x00,
 0x00,0x00,0xe7,0x80,0x60,0xf6,0xa2,0x60,0x02,0x64,0x41,0x01,0x82,0x80,0x85,0x48,
 0x73,0x00,0x00,0x00,0x82,0x80,0x93,0x08,0xd0,0x05,0x73,0x00,0x00,0x00,0x82,0x80,
-0x8d,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0x91,0x48,0x73,0x00,0x00,0x00,0x82,0x80,
-0x95,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0x93,0x08,0x00,0x04,0x73,0x00,0x00,0x00,
-0x82,0x80,0xd5,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0x99,0x48,0x73,0x00,0x00,0x00,
-0x82,0x80,0x9d,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xbd,0x48,0x73,0x00,0x00,0x00,
-0x82,0x80,0xa1,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xd1,0x48,0x73,0x00,0x00,0x00,
-0x82,0x80,0xa5,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xa9,0x48,0x73,0x00,0x00,0x00,
-0x82,0x80,0xad,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xb1,0x48,0x73,0x00,0x00,0x00,
+0x8d,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0x93,0x08,0xb0,0x03,0x73,0x00,0x00,0x00,
+0x82,0x80,0x93,0x08,0xf0,0x03,0x73,0x00,0x00,0x00,0x82,0x80,0x93,0x08,0x00,0x04,
+0x73,0x00,0x00,0x00,0x82,0x80,0x93,0x08,0x90,0x03,0x73,0x00,0x00,0x00,0x82,0x80,
+0x99,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0x9d,0x48,0x73,0x00,0x00,0x00,0x82,0x80,
+0x93,0x08,0x80,0x03,0x73,0x00,0x00,0x00,0x82,0x80,0x93,0x08,0x00,0x05,0x73,0x00,
+0x00,0x00,0x82,0x80,0x93,0x08,0x20,0x02,0x73,0x00,0x00,0x00,0x82,0x80,0x93,0x08,
+0x10,0x03,0x73,0x00,0x00,0x00,0x82,0x80,0xa9,0x48,0x73,0x00,0x00,0x00,0x82,0x80,
+0x93,0x08,0xc0,0x0a,0x73,0x00,0x00,0x00,0x82,0x80,0xb1,0x48,0x73,0x00,0x00,0x00,
 0x82,0x80,0xb5,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xb9,0x48,0x73,0x00,0x00,0x00,
 0x82,0x80,0xd9,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xdd,0x48,0x73,0x00,0x00,0x00,
-0x82,0x80,0xe1,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xe5,0x48,0x73,0x00,0x00,0x00,
-0x82,0x80,0xc5,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xc9,0x48,0x73,0x00,0x00,0x00,
+0x82,0x80,0xe1,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xc5,0x48,0x73,0x00,0x00,0x00,
+0x82,0x80,0xc1,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xc9,0x48,0x73,0x00,0x00,0x00,
 0x82,0x80,0xcd,0x48,0x73,0x00,0x00,0x00,0x82,0x80,0xe9,0x48,0x73,0x00,0x00,0x00,
-0x82,0x80,0x93,0x08,0x20,0x0d,0x73,0x00,0x00,0x00,0x82,0x80,0x01,0x11,0x06,0xec,
-0x22,0xe8,0x00,0x10,0xa3,0x07,0xb4,0xfe,0x05,0x46,0x93,0x05,0xf4,0xfe,0x97,0x00,
-0x00,0x00,0xe7,0x80,0xa0,0xf3,0xe2,0x60,0x42,0x64,0x05,0x61,0x82,0x80,0x39,0x71,
-0x06,0xfc,0x22,0xf8,0x26,0xf4,0x4a,0xf0,0x4e,0xec,0x80,0x00,0xaa,0x84,0x99,0xc2,
-0x63,0xc8,0x05,0x08,0x81,0x25,0x81,0x48,0x93,0x09,0x04,0xfc,0xce,0x86,0x01,0x47,
-0x01,0x26,0x17,0x05,0x00,0x00,0x13,0x05,0x65,0x5a,0x3a,0x88,0x05,0x27,0xbb,0xf7,
-0xc5,0x02,0x82,0x17,0x81,0x93,0xaa,0x97,0x83,0xc7,0x07,0x00,0x23,0x80,0xf6,0x00,
-0x9b,0x87,0x05,0x00,0xbb,0xd5,0xc5,0x02,0x85,0x06,0xe3,0xf0,0xc7,0xfe,0x63,0x8c,
-0x08,0x00,0x93,0x07,0x07,0xfd,0x33,0x87,0x87,0x00,0x93,0x07,0xd0,0x02,0x23,0x08,
-0xf7,0xfe,0x1b,0x07,0x28,0x00,0x63,0x56,0xe0,0x02,0x13,0x09,0x04,0xfc,0x3a,0x99,
-0xfd,0x19,0xba,0x99,0x7d,0x37,0x02,0x17,0x01,0x93,0xb3,0x89,0xe9,0x40,0x83,0x45,
-0xf9,0xff,0x26,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x80,0xf5,0x7d,0x19,0xe3,0x18,
-0x39,0xff,0xe2,0x70,0x42,0x74,0xa2,0x74,0x02,0x79,0xe2,0x69,0x21,0x61,0x82,0x80,
-0xbb,0x05,0xb0,0x40,0x85,0x48,0x8d,0xbf,0x19,0x71,0x86,0xfc,0xa2,0xf8,0xa6,0xf4,
-0xca,0xf0,0xce,0xec,0xd2,0xe8,0xd6,0xe4,0xda,0xe0,0x5e,0xfc,0x62,0xf8,0x66,0xf4,
-0x6a,0xf0,0x6e,0xec,0x00,0x01,0x03,0xc9,0x05,0x00,0x63,0x0f,0x09,0x18,0xaa,0x8a,
-0x32,0x8b,0x93,0x84,0x15,0x00,0x81,0x49,0x13,0x0a,0x50,0x02,0x55,0x4c,0x97,0x0c,
-0x00,0x00,0x93,0x8c,0x2c,0x49,0x93,0x0d,0x80,0x02,0x41,0x4d,0x97,0x0b,0x00,0x00,
-0x93,0x8b,0xcb,0x4d,0x39,0xa8,0xca,0x85,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,
-0x20,0xee,0x19,0xa0,0x63,0x8d,0x49,0x01,0x85,0x04,0x03,0xc9,0xf4,0xff,0x63,0x0d,
-0x09,0x14,0xe3,0x99,0x09,0xfe,0xe3,0x10,0x49,0xff,0xd2,0x89,0xf5,0xb7,0x63,0x0c,
-0x49,0x11,0x9b,0x07,0xd9,0xf9,0x93,0xf7,0xf7,0x0f,0x63,0x6e,0xfc,0x10,0x9b,0x07,
-0xd9,0xf9,0x13,0xf7,0xf7,0x0f,0x63,0x68,0xec,0x10,0x93,0x17,0x27,0x00,0xe6,0x97,
-0x9c,0x43,0xe6,0x97,0x82,0x87,0x13,0x09,0x8b,0x00,0x85,0x46,0x29,0x46,0x83,0x25,
-0x0b,0x00,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0xa0,0xea,0x4a,0x8b,0x81,0x49,
-0x65,0xb7,0x13,0x09,0x8b,0x00,0x81,0x46,0x29,0x46,0x83,0x25,0x0b,0x00,0x56,0x85,
-0x97,0x00,0x00,0x00,0xe7,0x80,0xe0,0xe8,0x4a,0x8b,0x81,0x49,0x71,0xb7,0x13,0x09,
-0x8b,0x00,0x81,0x46,0x6a,0x86,0x83,0x25,0x0b,0x00,0x56,0x85,0x97,0x00,0x00,0x00,
-0xe7,0x80,0x20,0xe7,0x4a,0x8b,0x81,0x49,0x85,0xbf,0x93,0x07,0x8b,0x00,0x23,0x34,
-0xf4,0xf8,0x83,0x39,0x0b,0x00,0x93,0x05,0x00,0x03,0x56,0x85,0x97,0x00,0x00,0x00,
-0xe7,0x80,0x00,0xe3,0x93,0x05,0x80,0x07,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,
-0x20,0xe2,0x6a,0x89,0x93,0xd7,0xc9,0x03,0xde,0x97,0x83,0xc5,0x07,0x00,0x56,0x85,
-0x97,0x00,0x00,0x00,0xe7,0x80,0xc0,0xe0,0x92,0x09,0x7d,0x39,0xe3,0x14,0x09,0xfe,
-0x03,0x3b,0x84,0xf8,0x81,0x49,0x0d,0xb7,0x13,0x09,0x8b,0x00,0x83,0x39,0x0b,0x00,
-0x63,0x81,0x09,0x02,0x83,0xc5,0x09,0x00,0xad,0xc5,0x56,0x85,0x97,0x00,0x00,0x00,
-0xe7,0x80,0x00,0xde,0x85,0x09,0x83,0xc5,0x09,0x00,0xe5,0xf9,0x4a,0x8b,0x81,0x49,
-0xe5,0xbd,0x97,0x09,0x00,0x00,0x93,0x89,0x69,0x35,0xee,0x85,0xf9,0xbf,0x13,0x09,
-0x8b,0x00,0x83,0x45,0x0b,0x00,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x40,0xdb,
-0x4a,0x8b,0x81,0x49,0xd1,0xbd,0xd2,0x85,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,
-0x20,0xda,0x81,0x49,0xd1,0xb5,0xd2,0x85,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,
-0x20,0xd9,0xca,0x85,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x60,0xd8,0x81,0x49,
-0x65,0xb5,0x4a,0x8b,0x81,0x49,0x4d,0xb5,0xe6,0x70,0x46,0x74,0xa6,0x74,0x06,0x79,
-0xe6,0x69,0x46,0x6a,0xa6,0x6a,0x06,0x6b,0xe2,0x7b,0x42,0x7c,0xa2,0x7c,0x02,0x7d,
-0xe2,0x6d,0x09,0x61,0x82,0x80,0x5d,0x71,0x06,0xec,0x22,0xe8,0x00,0x10,0x10,0xe0,
-0x14,0xe4,0x18,0xe8,0x1c,0xec,0x23,0x30,0x04,0x03,0x23,0x34,0x14,0x03,0x22,0x86,
-0x23,0x34,0x84,0xfe,0x97,0x00,0x00,0x00,0xe7,0x80,0x40,0xe0,0xe2,0x60,0x42,0x64,
-0x61,0x61,0x82,0x80,0x1d,0x71,0x06,0xec,0x22,0xe8,0x00,0x10,0x0c,0xe4,0x10,0xe8,
-0x14,0xec,0x18,0xf0,0x1c,0xf4,0x23,0x38,0x04,0x03,0x23,0x3c,0x14,0x03,0x13,0x06,
-0x84,0x00,0x23,0x34,0xc4,0xfe,0xaa,0x85,0x05,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,
-0xe0,0xdc,0xe2,0x60,0x42,0x64,0x25,0x61,0x82,0x80,0x41,0x11,0x22,0xe4,0x00,0x08,
-0x93,0x06,0x05,0xff,0x97,0x07,0x00,0x00,0x83,0xb7,0xc7,0x39,0x2d,0xa0,0x18,0x46,
-0x2d,0x9f,0x23,0x2c,0xe5,0xfe,0x98,0x63,0x10,0x63,0x3d,0xa8,0x03,0x27,0x85,0xff,
-0x31,0x9f,0x98,0xc7,0x83,0x36,0x05,0xff,0x91,0xa0,0x98,0x63,0x63,0xe4,0xe7,0x00,
-0x63,0xea,0xe6,0x00,0xba,0x87,0xe3,0xfa,0xd7,0xfe,0x98,0x63,0x63,0xe4,0xe6,0x00,
-0xe3,0xea,0xe7,0xfe,0x83,0x25,0x85,0xff,0x90,0x63,0x13,0x98,0x05,0x02,0x13,0x57,
-0xc8,0x01,0x36,0x97,0xe3,0x0d,0xe6,0xfa,0x23,0x38,0xc5,0xfe,0x90,0x47,0x93,0x15,
-0x06,0x02,0x13,0xd7,0xc5,0x01,0x3e,0x97,0xe3,0x8a,0xe6,0xfa,0x94,0xe3,0x17,0x07,
-0x00,0x00,0x23,0x39,0xf7,0x32,0x22,0x64,0x41,0x01,0x82,0x80,0x39,0x71,0x06,0xfc,
-0x22,0xf8,0x26,0xf4,0x4a,0xf0,0x4e,0xec,0x52,0xe8,0x56,0xe4,0x5a,0xe0,0x80,0x00,
-0x93,0x14,0x05,0x02,0x81,0x90,0xbd,0x04,0x91,0x80,0x1b,0x8a,0x14,0x00,0x85,0x04,
-0x17,0x05,0x00,0x00,0x03,0x35,0x05,0x30,0x15,0xc5,0x1c,0x61,0x98,0x47,0x63,0x71,
-0x97,0x04,0xd2,0x89,0x1b,0x07,0x0a,0x00,0x85,0x66,0x63,0x73,0xd7,0x00,0x85,0x69,
-0x1b,0x8b,0x09,0x00,0x9b,0x99,0x49,0x00,0x17,0x09,0x00,0x00,0x13,0x09,0x89,0x2d,
-0xfd,0x5a,0xa5,0xa8,0x97,0x07,0x00,0x00,0x93,0x87,0xc7,0x2c,0x17,0x07,0x00,0x00,
-0x13,0x07,0xc7,0x2c,0x98,0xe3,0x98,0xe7,0x23,0xa8,0x07,0x00,0xba,0x87,0xd1,0xb7,
-0x63,0x8c,0xe4,0x02,0x3b,0x07,0x47,0x41,0x98,0xc7,0x93,0x16,0x07,0x02,0x13,0xd7,
-0xc6,0x01,0xba,0x97,0x23,0xa4,0x47,0x01,0x17,0x07,0x00,0x00,0x23,0x3c,0xa7,0x28,
-0x13,0x85,0x07,0x01,0xe2,0x70,0x42,0x74,0xa2,0x74,0x02,0x79,0xe2,0x69,0x42,0x6a,
-0xa2,0x6a,0x02,0x6b,0x21,0x61,0x82,0x80,0x98,0x63,0x18,0xe1,0xf1,0xbf,0x23,0x24,
-0x65,0x01,0x41,0x05,0x97,0x00,0x00,0x00,0xe7,0x80,0x60,0xec,0x03,0x35,0x09,0x00,
-0x71,0xd9,0x1c,0x61,0x98,0x47,0xe3,0x75,0x97,0xfa,0x03,0x37,0x09,0x00,0x3e,0x85,
-0xe3,0x19,0xf7,0xfe,0x4e,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x40,0xb3,0xe3,0x18,
-0x55,0xfd,0x01,0x45,0x45,0xbf,0x00,0x00,0x69,0x6e,0x69,0x74,0x3a,0x20,0x73,0x74,
-0x61,0x72,0x74,0x69,0x6e,0x67,0x20,0x73,0x68,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
-0x69,0x6e,0x69,0x74,0x3a,0x20,0x66,0x6f,0x72,0x6b,0x20,0x66,0x61,0x69,0x6c,0x65,
-0x64,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x69,0x6e,0x69,0x74,0x3a,0x20,0x65,0x78,
-0x65,0x63,0x20,0x73,0x68,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x0a,0x00,0x00,0x00,
-0x69,0x6e,0x69,0x74,0x3a,0x20,0x77,0x61,0x69,0x74,0x20,0x72,0x65,0x74,0x75,0x72,
-0x6e,0x65,0x64,0x20,0x61,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x0a,0x00,0x00,0x00,
-0x62,0x72,0x6b,0x00,0x00,0x00,0x00,0x00,0x63,0x68,0x64,0x69,0x72,0x00,0x00,0x00,
-0x63,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,0x64,0x75,0x70,0x00,0x00,0x00,0x00,0x00,
-0x65,0x78,0x69,0x74,0x00,0x00,0x00,0x00,0x66,0x6f,0x72,0x6b,0x00,0x00,0x00,0x00,
-0x66,0x73,0x74,0x61,0x74,0x00,0x00,0x00,0x67,0x65,0x74,0x63,0x77,0x64,0x00,0x00,
-0x67,0x65,0x74,0x70,0x69,0x64,0x00,0x00,0x67,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,
+0x82,0x80,0x93,0x08,0x20,0x0d,0x73,0x00,0x00,0x00,0x82,0x80,0x93,0x08,0x00,0x0a,
+0x73,0x00,0x00,0x00,0x82,0x80,0x01,0x11,0x06,0xec,0x22,0xe8,0x00,0x10,0xa3,0x07,
+0xb4,0xfe,0x05,0x46,0x93,0x05,0xf4,0xfe,0x97,0x00,0x00,0x00,0xe7,0x80,0x40,0xf2,
+0xe2,0x60,0x42,0x64,0x05,0x61,0x82,0x80,0x39,0x71,0x06,0xfc,0x22,0xf8,0x26,0xf4,
+0x4a,0xf0,0x4e,0xec,0x80,0x00,0xaa,0x84,0x99,0xc2,0x63,0xc8,0x05,0x08,0x81,0x25,
+0x81,0x48,0x93,0x09,0x04,0xfc,0xce,0x86,0x01,0x47,0x01,0x26,0x17,0x05,0x00,0x00,
+0x13,0x05,0xc5,0x5a,0x3a,0x88,0x05,0x27,0xbb,0xf7,0xc5,0x02,0x82,0x17,0x81,0x93,
+0xaa,0x97,0x83,0xc7,0x07,0x00,0x23,0x80,0xf6,0x00,0x9b,0x87,0x05,0x00,0xbb,0xd5,
+0xc5,0x02,0x85,0x06,0xe3,0xf0,0xc7,0xfe,0x63,0x8c,0x08,0x00,0x93,0x07,0x07,0xfd,
+0x33,0x87,0x87,0x00,0x93,0x07,0xd0,0x02,0x23,0x08,0xf7,0xfe,0x1b,0x07,0x28,0x00,
+0x63,0x56,0xe0,0x02,0x13,0x09,0x04,0xfc,0x3a,0x99,0xfd,0x19,0xba,0x99,0x7d,0x37,
+0x02,0x17,0x01,0x93,0xb3,0x89,0xe9,0x40,0x83,0x45,0xf9,0xff,0x26,0x85,0x97,0x00,
+0x00,0x00,0xe7,0x80,0x80,0xf5,0x7d,0x19,0xe3,0x18,0x39,0xff,0xe2,0x70,0x42,0x74,
+0xa2,0x74,0x02,0x79,0xe2,0x69,0x21,0x61,0x82,0x80,0xbb,0x05,0xb0,0x40,0x85,0x48,
+0x8d,0xbf,0x19,0x71,0x86,0xfc,0xa2,0xf8,0xa6,0xf4,0xca,0xf0,0xce,0xec,0xd2,0xe8,
+0xd6,0xe4,0xda,0xe0,0x5e,0xfc,0x62,0xf8,0x66,0xf4,0x6a,0xf0,0x6e,0xec,0x00,0x01,
+0x03,0xc9,0x05,0x00,0x63,0x0f,0x09,0x18,0xaa,0x8a,0x32,0x8b,0x93,0x84,0x15,0x00,
+0x81,0x49,0x13,0x0a,0x50,0x02,0x55,0x4c,0x97,0x0c,0x00,0x00,0x93,0x8c,0x8c,0x49,
+0x93,0x0d,0x80,0x02,0x41,0x4d,0x97,0x0b,0x00,0x00,0x93,0x8b,0x2b,0x4e,0x39,0xa8,
+0xca,0x85,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0xee,0x19,0xa0,0x63,0x8d,
+0x49,0x01,0x85,0x04,0x03,0xc9,0xf4,0xff,0x63,0x0d,0x09,0x14,0xe3,0x99,0x09,0xfe,
+0xe3,0x10,0x49,0xff,0xd2,0x89,0xf5,0xb7,0x63,0x0c,0x49,0x11,0x9b,0x07,0xd9,0xf9,
+0x93,0xf7,0xf7,0x0f,0x63,0x6e,0xfc,0x10,0x9b,0x07,0xd9,0xf9,0x13,0xf7,0xf7,0x0f,
+0x63,0x68,0xec,0x10,0x93,0x17,0x27,0x00,0xe6,0x97,0x9c,0x43,0xe6,0x97,0x82,0x87,
+0x13,0x09,0x8b,0x00,0x85,0x46,0x29,0x46,0x83,0x25,0x0b,0x00,0x56,0x85,0x97,0x00,
+0x00,0x00,0xe7,0x80,0xa0,0xea,0x4a,0x8b,0x81,0x49,0x65,0xb7,0x13,0x09,0x8b,0x00,
+0x81,0x46,0x29,0x46,0x83,0x25,0x0b,0x00,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,
+0xe0,0xe8,0x4a,0x8b,0x81,0x49,0x71,0xb7,0x13,0x09,0x8b,0x00,0x81,0x46,0x6a,0x86,
+0x83,0x25,0x0b,0x00,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0xe7,0x4a,0x8b,
+0x81,0x49,0x85,0xbf,0x93,0x07,0x8b,0x00,0x23,0x34,0xf4,0xf8,0x83,0x39,0x0b,0x00,
+0x93,0x05,0x00,0x03,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x00,0xe3,0x93,0x05,
+0x80,0x07,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0xe2,0x6a,0x89,0x93,0xd7,
+0xc9,0x03,0xde,0x97,0x83,0xc5,0x07,0x00,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,
+0xc0,0xe0,0x92,0x09,0x7d,0x39,0xe3,0x14,0x09,0xfe,0x03,0x3b,0x84,0xf8,0x81,0x49,
+0x0d,0xb7,0x13,0x09,0x8b,0x00,0x83,0x39,0x0b,0x00,0x63,0x81,0x09,0x02,0x83,0xc5,
+0x09,0x00,0xad,0xc5,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x00,0xde,0x85,0x09,
+0x83,0xc5,0x09,0x00,0xe5,0xf9,0x4a,0x8b,0x81,0x49,0xe5,0xbd,0x97,0x09,0x00,0x00,
+0x93,0x89,0xc9,0x35,0xee,0x85,0xf9,0xbf,0x13,0x09,0x8b,0x00,0x83,0x45,0x0b,0x00,
+0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x40,0xdb,0x4a,0x8b,0x81,0x49,0xd1,0xbd,
+0xd2,0x85,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0xda,0x81,0x49,0xd1,0xb5,
+0xd2,0x85,0x56,0x85,0x97,0x00,0x00,0x00,0xe7,0x80,0x20,0xd9,0xca,0x85,0x56,0x85,
+0x97,0x00,0x00,0x00,0xe7,0x80,0x60,0xd8,0x81,0x49,0x65,0xb5,0x4a,0x8b,0x81,0x49,
+0x4d,0xb5,0xe6,0x70,0x46,0x74,0xa6,0x74,0x06,0x79,0xe6,0x69,0x46,0x6a,0xa6,0x6a,
+0x06,0x6b,0xe2,0x7b,0x42,0x7c,0xa2,0x7c,0x02,0x7d,0xe2,0x6d,0x09,0x61,0x82,0x80,
+0x5d,0x71,0x06,0xec,0x22,0xe8,0x00,0x10,0x10,0xe0,0x14,0xe4,0x18,0xe8,0x1c,0xec,
+0x23,0x30,0x04,0x03,0x23,0x34,0x14,0x03,0x22,0x86,0x23,0x34,0x84,0xfe,0x97,0x00,
+0x00,0x00,0xe7,0x80,0x40,0xe0,0xe2,0x60,0x42,0x64,0x61,0x61,0x82,0x80,0x1d,0x71,
+0x06,0xec,0x22,0xe8,0x00,0x10,0x0c,0xe4,0x10,0xe8,0x14,0xec,0x18,0xf0,0x1c,0xf4,
+0x23,0x38,0x04,0x03,0x23,0x3c,0x14,0x03,0x13,0x06,0x84,0x00,0x23,0x34,0xc4,0xfe,
+0xaa,0x85,0x05,0x45,0x97,0x00,0x00,0x00,0xe7,0x80,0xe0,0xdc,0xe2,0x60,0x42,0x64,
+0x25,0x61,0x82,0x80,0x41,0x11,0x22,0xe4,0x00,0x08,0x93,0x06,0x05,0xff,0x97,0x07,
+0x00,0x00,0x83,0xb7,0xa7,0x3a,0x2d,0xa0,0x18,0x46,0x2d,0x9f,0x23,0x2c,0xe5,0xfe,
+0x98,0x63,0x10,0x63,0x3d,0xa8,0x03,0x27,0x85,0xff,0x31,0x9f,0x98,0xc7,0x83,0x36,
+0x05,0xff,0x91,0xa0,0x98,0x63,0x63,0xe4,0xe7,0x00,0x63,0xea,0xe6,0x00,0xba,0x87,
+0xe3,0xfa,0xd7,0xfe,0x98,0x63,0x63,0xe4,0xe6,0x00,0xe3,0xea,0xe7,0xfe,0x83,0x25,
+0x85,0xff,0x90,0x63,0x13,0x98,0x05,0x02,0x13,0x57,0xc8,0x01,0x36,0x97,0xe3,0x0d,
+0xe6,0xfa,0x23,0x38,0xc5,0xfe,0x90,0x47,0x93,0x15,0x06,0x02,0x13,0xd7,0xc5,0x01,
+0x3e,0x97,0xe3,0x8a,0xe6,0xfa,0x94,0xe3,0x17,0x07,0x00,0x00,0x23,0x30,0xf7,0x34,
+0x22,0x64,0x41,0x01,0x82,0x80,0x39,0x71,0x06,0xfc,0x22,0xf8,0x26,0xf4,0x4a,0xf0,
+0x4e,0xec,0x52,0xe8,0x56,0xe4,0x5a,0xe0,0x80,0x00,0x93,0x14,0x05,0x02,0x81,0x90,
+0xbd,0x04,0x91,0x80,0x1b,0x8a,0x14,0x00,0x85,0x04,0x17,0x05,0x00,0x00,0x03,0x35,
+0xe5,0x30,0x15,0xc5,0x1c,0x61,0x98,0x47,0x63,0x71,0x97,0x04,0xd2,0x89,0x1b,0x07,
+0x0a,0x00,0x85,0x66,0x63,0x73,0xd7,0x00,0x85,0x69,0x1b,0x8b,0x09,0x00,0x9b,0x99,
+0x49,0x00,0x17,0x09,0x00,0x00,0x13,0x09,0x69,0x2e,0xfd,0x5a,0xa5,0xa8,0x97,0x07,
+0x00,0x00,0x93,0x87,0xa7,0x2d,0x17,0x07,0x00,0x00,0x13,0x07,0xa7,0x2d,0x98,0xe3,
+0x98,0xe7,0x23,0xa8,0x07,0x00,0xba,0x87,0xd1,0xb7,0x63,0x8c,0xe4,0x02,0x3b,0x07,
+0x47,0x41,0x98,0xc7,0x93,0x16,0x07,0x02,0x13,0xd7,0xc6,0x01,0xba,0x97,0x23,0xa4,
+0x47,0x01,0x17,0x07,0x00,0x00,0x23,0x33,0xa7,0x2a,0x13,0x85,0x07,0x01,0xe2,0x70,
+0x42,0x74,0xa2,0x74,0x02,0x79,0xe2,0x69,0x42,0x6a,0xa2,0x6a,0x02,0x6b,0x21,0x61,
+0x82,0x80,0x98,0x63,0x18,0xe1,0xf1,0xbf,0x23,0x24,0x65,0x01,0x41,0x05,0x97,0x00,
+0x00,0x00,0xe7,0x80,0x60,0xec,0x03,0x35,0x09,0x00,0x71,0xd9,0x1c,0x61,0x98,0x47,
+0xe3,0x75,0x97,0xfa,0x03,0x37,0x09,0x00,0x3e,0x85,0xe3,0x19,0xf7,0xfe,0x4e,0x85,
+0x97,0x00,0x00,0x00,0xe7,0x80,0xa0,0xb2,0xe3,0x18,0x55,0xfd,0x01,0x45,0x45,0xbf,
+0x69,0x6e,0x69,0x74,0x3a,0x20,0x73,0x74,0x61,0x72,0x74,0x69,0x6e,0x67,0x20,0x73,
+0x68,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x69,0x6e,0x69,0x74,0x3a,0x20,0x66,0x6f,
+0x72,0x6b,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
+0x69,0x6e,0x69,0x74,0x3a,0x20,0x65,0x78,0x65,0x63,0x20,0x73,0x68,0x20,0x66,0x61,
+0x69,0x6c,0x65,0x64,0x0a,0x00,0x00,0x00,0x69,0x6e,0x69,0x74,0x3a,0x20,0x77,0x61,
+0x69,0x74,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x65,0x64,0x20,0x61,0x6e,0x20,0x65,
+0x72,0x72,0x6f,0x72,0x0a,0x00,0x00,0x00,0x62,0x72,0x6b,0x00,0x00,0x00,0x00,0x00,
+0x63,0x68,0x64,0x69,0x72,0x00,0x00,0x00,0x63,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,
+0x64,0x75,0x70,0x00,0x00,0x00,0x00,0x00,0x65,0x78,0x69,0x74,0x00,0x00,0x00,0x00,
+0x66,0x6f,0x72,0x6b,0x00,0x00,0x00,0x00,0x66,0x73,0x74,0x61,0x74,0x00,0x00,0x00,
+0x67,0x65,0x74,0x63,0x77,0x64,0x00,0x00,0x67,0x65,0x74,0x70,0x69,0x64,0x00,0x00,
+0x74,0x69,0x6d,0x65,0x73,0x00,0x00,0x00,0x67,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,
 0x66,0x64,0x61,0x79,0x00,0x00,0x00,0x00,0x6d,0x6b,0x64,0x69,0x72,0x5f,0x00,0x00,
 0x6f,0x70,0x65,0x6e,0x61,0x74,0x00,0x00,0x6f,0x70,0x65,0x6e,0x00,0x00,0x00,0x00,
 0x70,0x69,0x70,0x65,0x00,0x00,0x00,0x00,0x72,0x65,0x61,0x64,0x00,0x00,0x00,0x00,
 0x75,0x6e,0x61,0x6d,0x65,0x00,0x00,0x00,0x77,0x61,0x69,0x74,0x00,0x00,0x00,0x00,
 0x77,0x72,0x69,0x74,0x65,0x00,0x00,0x00,0x73,0x6c,0x65,0x65,0x70,0x00,0x00,0x00,
 0x63,0x6c,0x6f,0x6e,0x65,0x00,0x00,0x00,0x28,0x6e,0x75,0x6c,0x6c,0x29,0x00,0x00,
-0xae,0xfc,0xff,0xff,0xd6,0xfb,0xff,0xff,0xd6,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,
-0xd6,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,
-0xd6,0xfc,0xff,0xff,0xf2,0xfb,0xff,0xff,0xd6,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,
-0xd6,0xfc,0xff,0xff,0x2a,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,
-0x78,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,0xd6,0xfc,0xff,0xff,
-0xd6,0xfc,0xff,0xff,0x0e,0xfc,0xff,0xff,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
+0xa8,0xfc,0xff,0xff,0xd0,0xfb,0xff,0xff,0xd0,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,
+0xd0,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,
+0xd0,0xfc,0xff,0xff,0xec,0xfb,0xff,0xff,0xd0,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,
+0xd0,0xfc,0xff,0xff,0x24,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,
+0x72,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,0xd0,0xfc,0xff,0xff,
+0xd0,0xfc,0xff,0xff,0x08,0xfc,0xff,0xff,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
 0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
-0x88,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
-0x98,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
-0xa8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
-0xb8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
-0xc8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
+0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
+0xa0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
+0xb0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xb8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
+0xc0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
+0xd0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
 0xe0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
-0xf0,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
-0x10,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
-0x20,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
+0xf8,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
+0x08,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
+0x18,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
+0x28,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
+0x38,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
diff --git a/kernel/include/sysnum.h b/kernel/include/sysnum.h
index 8d01f5b..0c34ee4 100644
--- a/kernel/include/sysnum.h
+++ b/kernel/include/sysnum.h
@@ -30,5 +30,6 @@
 #define SYS_rename      26
 #define SYS_shutdown    210
 #define SYS_uname       160
+#define SYS_times       153
 
 #endif
\ No newline at end of file
diff --git a/kernel/proc.o b/kernel/proc.o
index 7ded943ed82dda5e4c4397e30aa3857fbef43e18..95ad9bef0fe9ca02b55ade7b864ba582e040802b 100644
GIT binary patch
delta 897
zcmZ{gK}Zx)9LC>!I=M5IF1zl|PMS(dt{c{7mf}Iz!%`C!WQnb*1e=J0xVQ$La>zu7
z3Waz0>mk~U%+^J12#JL3AhdSTOVlAS!X%K8E+r-QUNd77H1PO+|L=X@yqPyWC%&5#
z$ATo#JQJ!Eh&XGu3$i#6#Zf>At!Y|=qgEmyBQ$8NrQ>ZI5?18{2ze!G6cmK0t{czO
zvX41J$EekeBnA5&C8u*m-lfCF<RSn|(V?NKk+_w+USszjSo3_Z5G}N1s!}K)G(;3{
z+RSbovb>cZ>dp%muIhHW+c_mwVFzl>D|uBIYgBh%K3Jl}qXKzychRoT2SWN0N1L1O
zYCJ$)(^*OOvv)M=+SpMj+wsP1Z{n=wJhVw&+TXO`q)UjS-1hF{o&3CH?akQEGfw)*
zb68xkomcdYr#zdwkVL<Fib&)e&GlB|1=`?!;l8iZ{TgYw0DD>K-qDNZzWh>*GxUV-
zBQa`ezP~do{Jo0a_J{E*o${CYyN+$OOr{~{&&^lJjNTlhg0B0^vrZZz8j#ORsi&U;
zO<On`eMuAY^q&5%o{l7<MS<?7^snvhrJrnZ{%5WKvtPO^*SAYMeHZ-@C?GyWJxU#3
zqN-9%6G~VKO6>O86Si4nGh$9CZ(X?8OdPuD#T(}5Q+;1>VmMZeXJf_Wcny9HdNVnL
zZ^3disb-USmDDq+90|}lMj*p64q}Yd6VwjpVx$fagU&|$9x@y&Ahs}cg31vAodY1l
zkpl4=LnEjh8t5E1Aj1&?v6W#NR0gt@q?Zc(kZL7Cg8E^xm7T*rsf{JZLFHHiog)Pq
KjvpYlld|7|ghuZG

delta 848
zcmZ|LUr19?7y$5dj^5n0n#1Yt-7=I2okOdQ&<#WvG@O(Wl{x=57*ax1R|)pk%*5S9
zFb?q<6fDA~f#Kx_6&dvsnmtqxhR{n9BE30#2r031*cnLBg~RVV-}%0C&OIyh^4z>U
z;U??n43AGD`ct!4QsnE$aR?AXYl&1a7oi|12o0y#9>sdr3vr9$LdaftYaE;iQC**U
zF|CxcjI=r~IyFh`QBh}=c`qGJKU@M}Rdhs}O~$fy$S?ZFvh#||Qm9O9;ghO|(=v*+
zZRVdI$>xHWsIACd)|V93{kc<8wb{(qfO)p)D8^B$+s^ENqsBrKd3<vz*RFc>N)ac_
zO<O(gz8xN9zj`BaM@TIwKbu(=nY+UK!dJov!cW2};f!!LOz#!f$*W@emVPO&rdGR3
zQa`EN?!$ew%l^_<(?a(q$gx(~%^qg#eXChnauDNwdZP3jSqRWWjthB#Up_kNID#em
z&QayiYqvV5rlEkp=t7Ocv==PY&|OM(UPIbVeagu_LG!!XwuM8X*Q_Y1%+a8FvF*v9
z?d{LM+2H<XZ2YtC*-;nY5$F1?bW7dmDq#=Ezl5AMDV&h0%h^byP8F|H%~@|QIzL!&
zvpIR-njJ5i*1CZoI6OL3j-L&clf!<T0;8QY<5RHNPU_jr8zD^$jS~ig6NL-|<|4!b
z{tn_ND?KpKK^pOSFgn<}0U6G7@OCnqK;x)jaIQdx69;b>!vh*80tTl6G8_WlZpI8~
joMkW=WMvRGy4exzLOm>d6*SH?7@Rm{I3K~=ORD|?`!zlM

diff --git a/kernel/syscall.c b/kernel/syscall.c
index 96993b8..333e09a 100644
--- a/kernel/syscall.c
+++ b/kernel/syscall.c
@@ -118,6 +118,7 @@ extern uint64 sys_sysinfo(void);
 extern uint64 sys_rename(void);
 extern uint64 sys_shutdown(void);
 extern uint64 sys_uname(void);
+extern uint64 sys_times(void);
 
 static uint64 (*syscalls[])(void) = {
   [SYS_fork]        sys_fork,
@@ -148,6 +149,7 @@ static uint64 (*syscalls[])(void) = {
   [SYS_rename]      sys_rename,
   [SYS_shutdown]    sys_shutdown,
   [SYS_uname]       sys_uname,
+  [SYS_times]       sys_times,
 };
 
 static char *sysnames[] = {
@@ -179,6 +181,7 @@ static char *sysnames[] = {
   [SYS_rename]      "rename",
   [SYS_shutdown]    "shutdown",
   [SYS_uname]       "uname",
+  [SYS_times]       "times",
 };
 
 void
@@ -249,7 +252,7 @@ sys_uname(void)
   strncpy(un.machine, "riscv64", sizeof(un.machine));
 
   // if (copyout(p->pagetable, addr, (char *)&name, sizeof(name)) < 0) {
-  if (copyout2(addr, (char *)&un, sizeof((char *)&un)) < 0) {
+  if (copyout2(addr, (char *)&un, sizeof(un)) < 0) {
     return -1;
   }
 
diff --git a/kernel/syscall.o b/kernel/syscall.o
index 44682b345750750cbde5677cd262a41ad9f6e8b3..6cd416f4473addc0ced95540eac19c8723ae9a36 100644
GIT binary patch
literal 53552
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
T#&ov&i}u2#`#Y6T4(tCnR9`Sv

literal 53344
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
C=^S(b

diff --git a/kernel/times.c b/kernel/times.c
new file mode 100644
index 0000000..21fe1e3
--- /dev/null
+++ b/kernel/times.c
@@ -0,0 +1,52 @@
+#include "include/types.h"
+#include "include/param.h"
+#include "include/spinlock.h"
+#include "include/proc.h"
+#include "include/syscall.h"
+#include "include/defs.h"
+
+extern uint ticks;
+extern uint64 sys_uptime(void);
+
+// 假设 tms 结构体定义(需与用户空间一致)
+struct tms {
+  uint64 utime;  // 用户时间(ticks)
+  uint64 stime;  // 系统时间(ticks)
+  uint64 cutime; // 子进程用户时间(ticks)
+  uint64 cstime; // 子进程系统时间(ticks)
+};
+
+// 系统调用 sys_times 实现
+uint64
+sys_times(void)
+{
+  uint64 tms_addr;  // 用户空间 tms 结构体的地址
+  struct tms kernel_tms;
+
+  // 1. 从系统调用参数中获取用户空间 tms 结构体地址
+  if (argaddr(0, &tms_addr) < 0) {
+    return -1;  // 参数错误
+  }
+
+  // 2. 获取当前进程的时间信息
+  struct proc *p = myproc();
+  if (p == 0) {
+    return -1;  // 当前进程无效
+  }
+
+  // 填充内核中的 tms 结构体
+  kernel_tms.utime = 0;    // 用户时间
+  kernel_tms.stime = sys_uptime();    // 系统时间
+  kernel_tms.cutime = 0;  // 子进程用户时间
+  kernel_tms.cstime = sys_uptime();  // 子进程系统时间
+
+  // 3. 如果用户提供了 tms 结构体地址,将数据复制到用户空间
+  if (tms_addr != 0) {
+    if (copyout(p->pagetable, tms_addr, (char *)&kernel_tms, sizeof(kernel_tms)) < 0) {
+      return -1;  // 复制失败
+    }
+  }
+
+  // 4. 返回系统启动以来的总滴答数(假设 ticks 是全局变量)
+  return ticks;
+}
\ No newline at end of file
diff --git a/sdcard.img b/sdcard.img
index 6cb881c6885445f5f8f998abfa4e316add937aa4..f5535ace0297c2b0529325b0b374cb40b77a2067 100644
GIT binary patch
delta 191365
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
VDl}ARsL)WMp+dv|AJEWY{~y))vH}1A

delta 197034
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
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
zFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*AFw`*A
iFw`*AFw`*AFw`*AFw`*AFw`*AFx2q>a}9Ui@P7e)Lc)mv

diff --git a/target/kernel b/target/kernel
index ad834c0b7322c2c2e839f9c55b1e9de0ac54450e..02fce6899acfdf4331fa7bdf3cbe4e34089020e4 100755
GIT binary patch
delta 58131
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
U(aiY#E?YhN%=}z^V5*<~zc(v`-2eap

delta 55698
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
F{{vw>8{+@~

diff --git a/target/kernel.asm b/target/kernel.asm
index 8ab8706..e52fdcd 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:	90a13103          	ld	sp,-1782(sp) # 8020b910 <_GLOBAL_OFFSET_TABLE_+0x50>
+    8020000a:	93213103          	ld	sp,-1742(sp) # 8020b938 <_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:	bb4080e7          	jalr	-1100(ra) # 80206c4a <consputc>
+    8020009a:	bc4080e7          	jalr	-1084(ra) # 80206c5a <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:	b7e080e7          	jalr	-1154(ra) # 80206c4a <consputc>
+    802000d0:	b8e080e7          	jalr	-1138(ra) # 80206c5a <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:	a2a080e7          	jalr	-1494(ra) # 80206c4a <consputc>
+    80200224:	a3a080e7          	jalr	-1478(ra) # 80206c5a <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:	998080e7          	jalr	-1640(ra) # 80206c4a <consputc>
+    802002b6:	9a8080e7          	jalr	-1624(ra) # 80206c5a <consputc>
   consputc('x');
     802002ba:	07800513          	li	a0,120
     802002be:	00007097          	auipc	ra,0x7
-    802002c2:	98c080e7          	jalr	-1652(ra) # 80206c4a <consputc>
+    802002c2:	99c080e7          	jalr	-1636(ra) # 80206c5a <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:	978080e7          	jalr	-1672(ra) # 80206c4a <consputc>
+    802002d6:	988080e7          	jalr	-1656(ra) # 80206c5a <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:	952080e7          	jalr	-1710(ra) # 80206c4a <consputc>
+    802002fc:	962080e7          	jalr	-1694(ra) # 80206c5a <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:	930080e7          	jalr	-1744(ra) # 80206c4a <consputc>
+    8020031e:	940080e7          	jalr	-1728(ra) # 80206c5a <consputc>
       break;
     80200322:	b719                	j	80200228 <printf+0x9a>
       consputc('%');
     80200324:	8556                	mv	a0,s5
     80200326:	00007097          	auipc	ra,0x7
-    8020032a:	924080e7          	jalr	-1756(ra) # 80206c4a <consputc>
+    8020032a:	934080e7          	jalr	-1740(ra) # 80206c5a <consputc>
       consputc(c);
     8020032e:	8526                	mv	a0,s1
     80200330:	00007097          	auipc	ra,0x7
-    80200334:	91a080e7          	jalr	-1766(ra) # 80206c4a <consputc>
+    80200334:	92a080e7          	jalr	-1750(ra) # 80206c5a <consputc>
       break;
     80200338:	bdc5                	j	80200228 <printf+0x9a>
   if(locking)
@@ -528,7 +528,7 @@ kfree(void *pa)
     80200450:	e3ad                	bnez	a5,802004b2 <kfree+0x72>
     80200452:	84aa                	mv	s1,a0
     80200454:	0000b797          	auipc	a5,0xb
-    80200458:	4947b783          	ld	a5,1172(a5) # 8020b8e8 <_GLOBAL_OFFSET_TABLE_+0x28>
+    80200458:	4bc7b783          	ld	a5,1212(a5) # 8020b910 <_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:	3a853503          	ld	a0,936(a0) # 8020b8e8 <_GLOBAL_OFFSET_TABLE_+0x28>
+    80200544:	3d053503          	ld	a0,976(a0) # 8020b910 <_GLOBAL_OFFSET_TABLE_+0x28>
     80200548:	00000097          	auipc	ra,0x0
     8020054c:	f7a080e7          	jalr	-134(ra) # 802004c2 <freerange>
 }
@@ -1446,7 +1446,7 @@ main(unsigned long hartid, unsigned long dtb_pa)
     80200a12:	cbc080e7          	jalr	-836(ra) # 802026ca <trapinithart>
     plicinithart();  // ask PLIC for device interrupts
     80200a16:	00006097          	auipc	ra,0x6
-    80200a1a:	ff2080e7          	jalr	-14(ra) # 80206a08 <plicinithart>
+    80200a1a:	002080e7          	jalr	2(ra) # 80206a18 <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:	3e4080e7          	jalr	996(ra) # 80206e1a <consoleinit>
+    80200a3a:	3f4080e7          	jalr	1012(ra) # 80206e2a <consoleinit>
     printfinit();   // init a lock for printf 
     80200a3e:	00000097          	auipc	ra,0x0
     80200a42:	930080e7          	jalr	-1744(ra) # 8020036e <printfinit>
@@ -1476,7 +1476,7 @@ main(unsigned long hartid, unsigned long dtb_pa)
     80200a62:	086080e7          	jalr	134(ra) # 80200ae4 <kvminithart>
     timerinit();     // init a lock for timer
     80200a66:	00004097          	auipc	ra,0x4
-    80200a6a:	558080e7          	jalr	1368(ra) # 80204fbe <timerinit>
+    80200a6a:	568080e7          	jalr	1384(ra) # 80204fce <timerinit>
     trapinithart();  // install kernel trap vector, including interrupt handler
     80200a6e:	00002097          	auipc	ra,0x2
     80200a72:	c5c080e7          	jalr	-932(ra) # 802026ca <trapinithart>
@@ -1485,19 +1485,19 @@ main(unsigned long hartid, unsigned long dtb_pa)
     80200a7a:	f24080e7          	jalr	-220(ra) # 8020199a <procinit>
     plicinit();
     80200a7e:	00006097          	auipc	ra,0x6
-    80200a82:	f72080e7          	jalr	-142(ra) # 802069f0 <plicinit>
+    80200a82:	f82080e7          	jalr	-126(ra) # 80206a00 <plicinit>
     plicinithart();
     80200a86:	00006097          	auipc	ra,0x6
-    80200a8a:	f82080e7          	jalr	-126(ra) # 80206a08 <plicinithart>
+    80200a8a:	f92080e7          	jalr	-110(ra) # 80206a18 <plicinithart>
     disk_init();
     80200a8e:	00004097          	auipc	ra,0x4
-    80200a92:	5cc080e7          	jalr	1484(ra) # 8020505a <disk_init>
+    80200a92:	5dc080e7          	jalr	1500(ra) # 8020506a <disk_init>
     binit();         // buffer cache
     80200a96:	00003097          	auipc	ra,0x3
-    80200a9a:	8b0080e7          	jalr	-1872(ra) # 80203346 <binit>
+    80200a9a:	8b2080e7          	jalr	-1870(ra) # 80203348 <binit>
     fileinit();      // file table
     80200a9e:	00003097          	auipc	ra,0x3
-    80200aa2:	cb4080e7          	jalr	-844(ra) # 80203752 <fileinit>
+    80200aa2:	cb6080e7          	jalr	-842(ra) # 80203754 <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:	b1c4b483          	ld	s1,-1252(s1) # 8020b8e0 <_GLOBAL_OFFSET_TABLE_+0x20>
+    80200dc8:	b444b483          	ld	s1,-1212(s1) # 8020b908 <_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:	ac85b583          	ld	a1,-1336(a1) # 8020b8c8 <_GLOBAL_OFFSET_TABLE_+0x8>
+    80200e04:	af05b583          	ld	a1,-1296(a1) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x8>
     80200e08:	04000537          	lui	a0,0x4000
     80200e0c:	157d                	addi	a0,a0,-1 # 3ffffff <_entry-0x7c200001>
     80200e0e:	0532                	slli	a0,a0,0xc
@@ -3789,7 +3789,7 @@ myproc(void) {
     80201aae:	5407ab23          	sw	zero,1366(a5) # 8020a000 <first.1>
     fat32_init();
     80201ab2:	00004097          	auipc	ra,0x4
-    80201ab6:	c92080e7          	jalr	-878(ra) # 80205744 <fat32_init>
+    80201ab6:	ca2080e7          	jalr	-862(ra) # 80205754 <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:	eea080e7          	jalr	-278(ra) # 802069b6 <ename>
+    80201ad0:	efa080e7          	jalr	-262(ra) # 802069c6 <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:	d8c6b683          	ld	a3,-628(a3) # 8020b8c8 <_GLOBAL_OFFSET_TABLE_+0x8>
+    80201b40:	db46b683          	ld	a3,-588(a3) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x8>
     80201b44:	6605                	lui	a2,0x1
     80201b46:	040005b7          	lui	a1,0x4000
     80201b4a:	15fd                	addi	a1,a1,-1 # 3ffffff <_entry-0x7c200001>
@@ -4118,7 +4118,7 @@ allocpid() {
     80201d64:	40a7bc23          	sd	a0,1048(a5) # 80214178 <initproc>
   uvminit(p->pagetable , p->kpagetable, initcode, sizeof(initcode));
     80201d68:	6905                	lui	s2,0x1
-    80201d6a:	b4890693          	addi	a3,s2,-1208 # b48 <_entry-0x801ff4b8>
+    80201d6a:	b7090693          	addi	a3,s2,-1168 # b70 <_entry-0x801ff490>
     80201d6e:	00008617          	auipc	a2,0x8
     80201d72:	29a60613          	addi	a2,a2,666 # 8020a008 <initcode>
     80201d76:	6d2c                	ld	a1,88(a0)
@@ -4298,13 +4298,13 @@ allocpid() {
     80201efc:	d97d                	beqz	a0,80201ef2 <fork+0xb0>
       np->ofile[i] = filedup(p->ofile[i]);
     80201efe:	00002097          	auipc	ra,0x2
-    80201f02:	916080e7          	jalr	-1770(ra) # 80203814 <filedup>
+    80201f02:	918080e7          	jalr	-1768(ra) # 80203816 <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:	0a0080e7          	jalr	160(ra) # 80205fb0 <edup>
+    80201f14:	0b0080e7          	jalr	176(ra) # 80205fc0 <edup>
     80201f18:	14aa3c23          	sd	a0,344(s4)
   safestrcpy(np->name, p->name, sizeof(p->name));
     80201f1c:	4641                	li	a2,16
@@ -4421,7 +4421,7 @@ allocpid() {
     80202006:	1a7e                	slli	s4,s4,0x3f
         w_satp(MAKE_SATP(kernel_pagetable));
     80202008:	0000ab97          	auipc	s7,0xa
-    8020200c:	900bbb83          	ld	s7,-1792(s7) # 8020b908 <_GLOBAL_OFFSET_TABLE_+0x48>
+    8020200c:	928bbb83          	ld	s7,-1752(s7) # 8020b930 <_GLOBAL_OFFSET_TABLE_+0x48>
     80202010:	a8a5                	j	80202088 <scheduler+0xc8>
       release(&p->lock);
     80202012:	8526                	mv	a0,s1
@@ -4616,7 +4616,7 @@ allocpid() {
     802021bc:	f8c080e7          	jalr	-116(ra) # 80200144 <panic>
       fileclose(f);
     802021c0:	00001097          	auipc	ra,0x1
-    802021c4:	6a6080e7          	jalr	1702(ra) # 80203866 <fileclose>
+    802021c4:	6a8080e7          	jalr	1704(ra) # 80203868 <fileclose>
       p->ofile[fd] = 0;
     802021c8:	0004b023          	sd	zero,0(s1)
   for(int fd = 0; fd < NOFILE; fd++){
@@ -4629,7 +4629,7 @@ allocpid() {
   eput(p->cwd);
     802021d8:	1589b503          	ld	a0,344(s3)
     802021dc:	00004097          	auipc	ra,0x4
-    802021e0:	0b6080e7          	jalr	182(ra) # 80206292 <eput>
+    802021e0:	0c6080e7          	jalr	198(ra) # 802062a2 <eput>
   p->cwd = 0;
     802021e4:	1409bc23          	sd	zero,344(s3)
   acquire(&initproc->lock);
@@ -5160,7 +5160,7 @@ procdump(void)
     802025c8:	b14a0a13          	addi	s4,s4,-1260 # 802090d8 <etext+0xd8>
     if(p->state >= 0 && p->state < NELEM(states) && states[p->state])
     802025cc:	00008b97          	auipc	s7,0x8
-    802025d0:	584b8b93          	addi	s7,s7,1412 # 8020ab50 <states.0>
+    802025d0:	5acb8b93          	addi	s7,s7,1452 # 8020ab78 <states.0>
     802025d4:	a01d                	j	802025fa <procdump+0x7e>
     printf("%d\t%s\t%s\t%d", p->pid, state, p->name, p->sz);
     802025d6:	ee86b703          	ld	a4,-280(a3)
@@ -5286,7 +5286,7 @@ trapinithart(void)
     802026d0:	0800                	addi	s0,sp,16
   asm volatile("csrw stvec, %0" : : "r" (x));
     802026d2:	00009797          	auipc	a5,0x9
-    802026d6:	2067b783          	ld	a5,518(a5) # 8020b8d8 <_GLOBAL_OFFSET_TABLE_+0x18>
+    802026d6:	22e7b783          	ld	a5,558(a5) # 8020b900 <_GLOBAL_OFFSET_TABLE_+0x18>
     802026da:	10579073          	csrw	stvec,a5
   asm volatile("csrr %0, sstatus" : "=r" (x) );
     802026de:	100027f3          	csrr	a5,sstatus
@@ -5304,7 +5304,7 @@ trapinithart(void)
     802026f2:	10479073          	csrw	sie,a5
   set_next_timeout();
     802026f6:	00003097          	auipc	ra,0x3
-    802026fa:	8f0080e7          	jalr	-1808(ra) # 80204fe6 <set_next_timeout>
+    802026fa:	900080e7          	jalr	-1792(ra) # 80204ff6 <set_next_timeout>
   #ifdef DEBUG
   printf("trapinithart\n");
   #endif
@@ -5341,9 +5341,9 @@ usertrapret(void)
   // send syscalls, interrupts, and exceptions to trampoline.S
   w_stvec(TRAMPOLINE + (uservec - trampoline));
     80202720:	00009697          	auipc	a3,0x9
-    80202724:	1a86b683          	ld	a3,424(a3) # 8020b8c8 <_GLOBAL_OFFSET_TABLE_+0x8>
+    80202724:	1d06b683          	ld	a3,464(a3) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x8>
     80202728:	00009717          	auipc	a4,0x9
-    8020272c:	1d073703          	ld	a4,464(a4) # 8020b8f8 <_GLOBAL_OFFSET_TABLE_+0x38>
+    8020272c:	1f873703          	ld	a4,504(a4) # 8020b920 <_GLOBAL_OFFSET_TABLE_+0x38>
     80202730:	8f15                	sub	a4,a4,a3
     80202732:	040007b7          	lui	a5,0x4000
     80202736:	17fd                	addi	a5,a5,-1 # 3ffffff <_entry-0x7c200001>
@@ -5408,7 +5408,7 @@ usertrapret(void)
   // and switches to user mode with sret.
   uint64 fn = TRAMPOLINE + (userret - trampoline);
     80202780:	00009717          	auipc	a4,0x9
-    80202784:	15073703          	ld	a4,336(a4) # 8020b8d0 <_GLOBAL_OFFSET_TABLE_+0x10>
+    80202784:	17873703          	ld	a4,376(a4) # 8020b8f8 <_GLOBAL_OFFSET_TABLE_+0x10>
     80202788:	8f15                	sub	a4,a4,a3
     8020278a:	97ba                	add	a5,a5,a4
   ((void (*)(uint64,uint64))fn)(TRAPFRAME, satp);
@@ -5473,7 +5473,7 @@ int devintr(void) {
     802027d2:	fed792e3          	bne	a5,a3,802027b6 <devintr+0x12>
 		int irq = plic_claim();
     802027d6:	00004097          	auipc	ra,0x4
-    802027da:	274080e7          	jalr	628(ra) # 80206a4a <plic_claim>
+    802027da:	284080e7          	jalr	644(ra) # 80206a5a <plic_claim>
     802027de:	84aa                	mv	s1,a0
 		if (UART_IRQ == irq) {
     802027e0:	47a9                	li	a5,10
@@ -5506,21 +5506,21 @@ int devintr(void) {
 		if (irq) { plic_complete(irq);}
     8020281a:	8526                	mv	a0,s1
     8020281c:	00004097          	auipc	ra,0x4
-    80202820:	258080e7          	jalr	600(ra) # 80206a74 <plic_complete>
+    80202820:	268080e7          	jalr	616(ra) # 80206a84 <plic_complete>
 		return 1;
     80202824:	4505                	li	a0,1
     80202826:	bf71                	j	802027c2 <devintr+0x1e>
 				consoleintr(c);
     80202828:	00004097          	auipc	ra,0x4
-    8020282c:	460080e7          	jalr	1120(ra) # 80206c88 <consoleintr>
+    8020282c:	470080e7          	jalr	1136(ra) # 80206c98 <consoleintr>
     80202830:	b7ed                	j	8020281a <devintr+0x76>
 			disk_intr();
     80202832:	00003097          	auipc	ra,0x3
-    80202836:	874080e7          	jalr	-1932(ra) # 802050a6 <disk_intr>
+    80202836:	884080e7          	jalr	-1916(ra) # 802050b6 <disk_intr>
     8020283a:	b7c5                	j	8020281a <devintr+0x76>
 		timer_tick();
     8020283c:	00002097          	auipc	ra,0x2
-    80202840:	7d0080e7          	jalr	2000(ra) # 8020500c <timer_tick>
+    80202840:	7e0080e7          	jalr	2016(ra) # 8020501c <timer_tick>
 		return 2;
     80202844:	4509                	li	a0,2
     80202846:	bfb5                	j	802027c2 <devintr+0x1e>
@@ -5540,7 +5540,7 @@ int devintr(void) {
     8020285c:	e3ad                	bnez	a5,802028be <usertrap+0x76>
   asm volatile("csrw stvec, %0" : : "r" (x));
     8020285e:	00009797          	auipc	a5,0x9
-    80202862:	07a7b783          	ld	a5,122(a5) # 8020b8d8 <_GLOBAL_OFFSET_TABLE_+0x18>
+    80202862:	0a27b783          	ld	a5,162(a5) # 8020b900 <_GLOBAL_OFFSET_TABLE_+0x18>
     80202866:	10579073          	csrw	stvec,a5
   struct proc *p = myproc();
     8020286a:	fffff097          	auipc	ra,0xfffff
@@ -5572,7 +5572,7 @@ int devintr(void) {
     8020289a:	10079073          	csrw	sstatus,a5
     syscall();
     8020289e:	00000097          	auipc	ra,0x0
-    802028a2:	682080e7          	jalr	1666(ra) # 80202f20 <syscall>
+    802028a2:	684080e7          	jalr	1668(ra) # 80202f22 <syscall>
   if(p->killed)
     802028a6:	589c                	lw	a5,48(s1)
     802028a8:	ebd1                	bnez	a5,8020293c <usertrap+0xf4>
@@ -5972,7 +5972,7 @@ argraw(int n)
     80202ca2:	0497e163          	bltu	a5,s1,80202ce4 <argraw+0x58>
     80202ca6:	048a                	slli	s1,s1,0x2
     80202ca8:	00007717          	auipc	a4,0x7
-    80202cac:	e1c70713          	addi	a4,a4,-484 # 80209ac4 <digits+0x744>
+    80202cac:	e2470713          	addi	a4,a4,-476 # 80209acc <digits+0x74c>
     80202cb0:	94ba                	add	s1,s1,a4
     80202cb2:	409c                	lw	a5,0(s1)
     80202cb4:	97ba                	add	a5,a5,a4
@@ -6079,8872 +6079,8957 @@ sys_uname(void)
     80202d82:	af8080e7          	jalr	-1288(ra) # 80200876 <strncpy>
 
   // if (copyout(p->pagetable, addr, (char *)&name, sizeof(name)) < 0) {
-  if (copyout2(addr, (char *)&un, sizeof((char *)&un)) < 0) {
-    80202d86:	4621                	li	a2,8
-    80202d88:	85a6                	mv	a1,s1
-    80202d8a:	854a                	mv	a0,s2
-    80202d8c:	ffffe097          	auipc	ra,0xffffe
-    80202d90:	5e6080e7          	jalr	1510(ra) # 80201372 <copyout2>
+  if (copyout2(addr, (char *)&un, sizeof(un)) < 0) {
+    80202d86:	18600613          	li	a2,390
+    80202d8a:	85a6                	mv	a1,s1
+    80202d8c:	854a                	mv	a0,s2
+    80202d8e:	ffffe097          	auipc	ra,0xffffe
+    80202d92:	5e4080e7          	jalr	1508(ra) # 80201372 <copyout2>
     return -1;
   }
 
   return 0;
-    80202d94:	957d                	srai	a0,a0,0x3f
-    80202d96:	70ba                	ld	ra,424(sp)
-    80202d98:	741a                	ld	s0,416(sp)
-    80202d9a:	64fa                	ld	s1,408(sp)
-    80202d9c:	695a                	ld	s2,400(sp)
-    80202d9e:	615d                	addi	sp,sp,432
-    80202da0:	8082                	ret
-
-0000000080202da2 <sys_sysinfo>:
-{
-    80202da2:	7179                	addi	sp,sp,-48
-    80202da4:	f406                	sd	ra,40(sp)
-    80202da6:	f022                	sd	s0,32(sp)
-    80202da8:	ec26                	sd	s1,24(sp)
-    80202daa:	1800                	addi	s0,sp,48
+    80202d96:	957d                	srai	a0,a0,0x3f
+    80202d98:	70ba                	ld	ra,424(sp)
+    80202d9a:	741a                	ld	s0,416(sp)
+    80202d9c:	64fa                	ld	s1,408(sp)
+    80202d9e:	695a                	ld	s2,400(sp)
+    80202da0:	615d                	addi	sp,sp,432
+    80202da2:	8082                	ret
+
+0000000080202da4 <sys_sysinfo>:
+{
+    80202da4:	7179                	addi	sp,sp,-48
+    80202da6:	f406                	sd	ra,40(sp)
+    80202da8:	f022                	sd	s0,32(sp)
+    80202daa:	ec26                	sd	s1,24(sp)
+    80202dac:	1800                	addi	s0,sp,48
   *ip = argraw(n);
-    80202dac:	4501                	li	a0,0
-    80202dae:	00000097          	auipc	ra,0x0
-    80202db2:	ede080e7          	jalr	-290(ra) # 80202c8c <argraw>
-    80202db6:	84aa                	mv	s1,a0
+    80202dae:	4501                	li	a0,0
+    80202db0:	00000097          	auipc	ra,0x0
+    80202db4:	edc080e7          	jalr	-292(ra) # 80202c8c <argraw>
+    80202db8:	84aa                	mv	s1,a0
   info.freemem = freemem_amount();
-    80202db8:	ffffe097          	auipc	ra,0xffffe
-    80202dbc:	808080e7          	jalr	-2040(ra) # 802005c0 <freemem_amount>
-    80202dc0:	fca43823          	sd	a0,-48(s0)
+    80202dba:	ffffe097          	auipc	ra,0xffffe
+    80202dbe:	806080e7          	jalr	-2042(ra) # 802005c0 <freemem_amount>
+    80202dc2:	fca43823          	sd	a0,-48(s0)
   info.nproc = procnum();
-    80202dc4:	00000097          	auipc	ra,0x0
-    80202dc8:	86c080e7          	jalr	-1940(ra) # 80202630 <procnum>
-    80202dcc:	fca43c23          	sd	a0,-40(s0)
+    80202dc6:	00000097          	auipc	ra,0x0
+    80202dca:	86a080e7          	jalr	-1942(ra) # 80202630 <procnum>
+    80202dce:	fca43c23          	sd	a0,-40(s0)
   if (copyout2(addr, (char *)&info, sizeof(info)) < 0) {
-    80202dd0:	4641                	li	a2,16
-    80202dd2:	fd040593          	addi	a1,s0,-48
-    80202dd6:	8526                	mv	a0,s1
-    80202dd8:	ffffe097          	auipc	ra,0xffffe
-    80202ddc:	59a080e7          	jalr	1434(ra) # 80201372 <copyout2>
-}
-    80202de0:	957d                	srai	a0,a0,0x3f
-    80202de2:	70a2                	ld	ra,40(sp)
-    80202de4:	7402                	ld	s0,32(sp)
-    80202de6:	64e2                	ld	s1,24(sp)
-    80202de8:	6145                	addi	sp,sp,48
-    80202dea:	8082                	ret
-
-0000000080202dec <fetchaddr>:
-{
-    80202dec:	1101                	addi	sp,sp,-32
-    80202dee:	ec06                	sd	ra,24(sp)
-    80202df0:	e822                	sd	s0,16(sp)
-    80202df2:	e426                	sd	s1,8(sp)
-    80202df4:	e04a                	sd	s2,0(sp)
-    80202df6:	1000                	addi	s0,sp,32
-    80202df8:	84aa                	mv	s1,a0
-    80202dfa:	892e                	mv	s2,a1
+    80202dd2:	4641                	li	a2,16
+    80202dd4:	fd040593          	addi	a1,s0,-48
+    80202dd8:	8526                	mv	a0,s1
+    80202dda:	ffffe097          	auipc	ra,0xffffe
+    80202dde:	598080e7          	jalr	1432(ra) # 80201372 <copyout2>
+}
+    80202de2:	957d                	srai	a0,a0,0x3f
+    80202de4:	70a2                	ld	ra,40(sp)
+    80202de6:	7402                	ld	s0,32(sp)
+    80202de8:	64e2                	ld	s1,24(sp)
+    80202dea:	6145                	addi	sp,sp,48
+    80202dec:	8082                	ret
+
+0000000080202dee <fetchaddr>:
+{
+    80202dee:	1101                	addi	sp,sp,-32
+    80202df0:	ec06                	sd	ra,24(sp)
+    80202df2:	e822                	sd	s0,16(sp)
+    80202df4:	e426                	sd	s1,8(sp)
+    80202df6:	e04a                	sd	s2,0(sp)
+    80202df8:	1000                	addi	s0,sp,32
+    80202dfa:	84aa                	mv	s1,a0
+    80202dfc:	892e                	mv	s2,a1
   struct proc *p = myproc();
-    80202dfc:	fffff097          	auipc	ra,0xfffff
-    80202e00:	c40080e7          	jalr	-960(ra) # 80201a3c <myproc>
+    80202dfe:	fffff097          	auipc	ra,0xfffff
+    80202e02:	c3e080e7          	jalr	-962(ra) # 80201a3c <myproc>
   if(addr >= p->sz || addr+sizeof(uint64) > p->sz)
-    80202e04:	653c                	ld	a5,72(a0)
-    80202e06:	02f4f763          	bgeu	s1,a5,80202e34 <fetchaddr+0x48>
-    80202e0a:	00848713          	addi	a4,s1,8
-    80202e0e:	02e7e563          	bltu	a5,a4,80202e38 <fetchaddr+0x4c>
+    80202e06:	653c                	ld	a5,72(a0)
+    80202e08:	02f4f763          	bgeu	s1,a5,80202e36 <fetchaddr+0x48>
+    80202e0c:	00848713          	addi	a4,s1,8
+    80202e10:	02e7e563          	bltu	a5,a4,80202e3a <fetchaddr+0x4c>
   if(copyin2((char *)ip, addr, sizeof(*ip)) != 0)
-    80202e12:	4621                	li	a2,8
-    80202e14:	85a6                	mv	a1,s1
-    80202e16:	854a                	mv	a0,s2
-    80202e18:	ffffe097          	auipc	ra,0xffffe
-    80202e1c:	63a080e7          	jalr	1594(ra) # 80201452 <copyin2>
-    80202e20:	00a03533          	snez	a0,a0
-    80202e24:	40a00533          	neg	a0,a0
-}
-    80202e28:	60e2                	ld	ra,24(sp)
-    80202e2a:	6442                	ld	s0,16(sp)
-    80202e2c:	64a2                	ld	s1,8(sp)
-    80202e2e:	6902                	ld	s2,0(sp)
-    80202e30:	6105                	addi	sp,sp,32
-    80202e32:	8082                	ret
+    80202e14:	4621                	li	a2,8
+    80202e16:	85a6                	mv	a1,s1
+    80202e18:	854a                	mv	a0,s2
+    80202e1a:	ffffe097          	auipc	ra,0xffffe
+    80202e1e:	638080e7          	jalr	1592(ra) # 80201452 <copyin2>
+    80202e22:	00a03533          	snez	a0,a0
+    80202e26:	40a00533          	neg	a0,a0
+}
+    80202e2a:	60e2                	ld	ra,24(sp)
+    80202e2c:	6442                	ld	s0,16(sp)
+    80202e2e:	64a2                	ld	s1,8(sp)
+    80202e30:	6902                	ld	s2,0(sp)
+    80202e32:	6105                	addi	sp,sp,32
+    80202e34:	8082                	ret
     return -1;
-    80202e34:	557d                	li	a0,-1
-    80202e36:	bfcd                	j	80202e28 <fetchaddr+0x3c>
-    80202e38:	557d                	li	a0,-1
-    80202e3a:	b7fd                	j	80202e28 <fetchaddr+0x3c>
-
-0000000080202e3c <fetchstr>:
-{
-    80202e3c:	1101                	addi	sp,sp,-32
-    80202e3e:	ec06                	sd	ra,24(sp)
-    80202e40:	e822                	sd	s0,16(sp)
-    80202e42:	e426                	sd	s1,8(sp)
-    80202e44:	1000                	addi	s0,sp,32
-    80202e46:	84ae                	mv	s1,a1
+    80202e36:	557d                	li	a0,-1
+    80202e38:	bfcd                	j	80202e2a <fetchaddr+0x3c>
+    80202e3a:	557d                	li	a0,-1
+    80202e3c:	b7fd                	j	80202e2a <fetchaddr+0x3c>
+
+0000000080202e3e <fetchstr>:
+{
+    80202e3e:	1101                	addi	sp,sp,-32
+    80202e40:	ec06                	sd	ra,24(sp)
+    80202e42:	e822                	sd	s0,16(sp)
+    80202e44:	e426                	sd	s1,8(sp)
+    80202e46:	1000                	addi	s0,sp,32
+    80202e48:	84ae                	mv	s1,a1
   int err = copyinstr2(buf, addr, max);
-    80202e48:	85aa                	mv	a1,a0
-    80202e4a:	8526                	mv	a0,s1
-    80202e4c:	ffffe097          	auipc	ra,0xffffe
-    80202e50:	708080e7          	jalr	1800(ra) # 80201554 <copyinstr2>
+    80202e4a:	85aa                	mv	a1,a0
+    80202e4c:	8526                	mv	a0,s1
+    80202e4e:	ffffe097          	auipc	ra,0xffffe
+    80202e52:	706080e7          	jalr	1798(ra) # 80201554 <copyinstr2>
   if(err < 0)
-    80202e54:	00054763          	bltz	a0,80202e62 <fetchstr+0x26>
+    80202e56:	00054763          	bltz	a0,80202e64 <fetchstr+0x26>
   return strlen(buf);
-    80202e58:	8526                	mv	a0,s1
-    80202e5a:	ffffe097          	auipc	ra,0xffffe
-    80202e5e:	a8c080e7          	jalr	-1396(ra) # 802008e6 <strlen>
-}
-    80202e62:	60e2                	ld	ra,24(sp)
-    80202e64:	6442                	ld	s0,16(sp)
-    80202e66:	64a2                	ld	s1,8(sp)
-    80202e68:	6105                	addi	sp,sp,32
-    80202e6a:	8082                	ret
-
-0000000080202e6c <argint>:
-{
-    80202e6c:	1101                	addi	sp,sp,-32
-    80202e6e:	ec06                	sd	ra,24(sp)
-    80202e70:	e822                	sd	s0,16(sp)
-    80202e72:	e426                	sd	s1,8(sp)
-    80202e74:	1000                	addi	s0,sp,32
-    80202e76:	84ae                	mv	s1,a1
+    80202e5a:	8526                	mv	a0,s1
+    80202e5c:	ffffe097          	auipc	ra,0xffffe
+    80202e60:	a8a080e7          	jalr	-1398(ra) # 802008e6 <strlen>
+}
+    80202e64:	60e2                	ld	ra,24(sp)
+    80202e66:	6442                	ld	s0,16(sp)
+    80202e68:	64a2                	ld	s1,8(sp)
+    80202e6a:	6105                	addi	sp,sp,32
+    80202e6c:	8082                	ret
+
+0000000080202e6e <argint>:
+{
+    80202e6e:	1101                	addi	sp,sp,-32
+    80202e70:	ec06                	sd	ra,24(sp)
+    80202e72:	e822                	sd	s0,16(sp)
+    80202e74:	e426                	sd	s1,8(sp)
+    80202e76:	1000                	addi	s0,sp,32
+    80202e78:	84ae                	mv	s1,a1
   *ip = argraw(n);
-    80202e78:	00000097          	auipc	ra,0x0
-    80202e7c:	e14080e7          	jalr	-492(ra) # 80202c8c <argraw>
-    80202e80:	c088                	sw	a0,0(s1)
-}
-    80202e82:	4501                	li	a0,0
-    80202e84:	60e2                	ld	ra,24(sp)
-    80202e86:	6442                	ld	s0,16(sp)
-    80202e88:	64a2                	ld	s1,8(sp)
-    80202e8a:	6105                	addi	sp,sp,32
-    80202e8c:	8082                	ret
-
-0000000080202e8e <sys_test_proc>:
+    80202e7a:	00000097          	auipc	ra,0x0
+    80202e7e:	e12080e7          	jalr	-494(ra) # 80202c8c <argraw>
+    80202e82:	c088                	sw	a0,0(s1)
+}
+    80202e84:	4501                	li	a0,0
+    80202e86:	60e2                	ld	ra,24(sp)
+    80202e88:	6442                	ld	s0,16(sp)
+    80202e8a:	64a2                	ld	s1,8(sp)
+    80202e8c:	6105                	addi	sp,sp,32
+    80202e8e:	8082                	ret
+
+0000000080202e90 <sys_test_proc>:
 sys_test_proc(void) {
-    80202e8e:	1101                	addi	sp,sp,-32
-    80202e90:	ec06                	sd	ra,24(sp)
-    80202e92:	e822                	sd	s0,16(sp)
-    80202e94:	1000                	addi	s0,sp,32
+    80202e90:	1101                	addi	sp,sp,-32
+    80202e92:	ec06                	sd	ra,24(sp)
+    80202e94:	e822                	sd	s0,16(sp)
+    80202e96:	1000                	addi	s0,sp,32
     argint(0, &n);
-    80202e96:	fec40593          	addi	a1,s0,-20
-    80202e9a:	4501                	li	a0,0
-    80202e9c:	00000097          	auipc	ra,0x0
-    80202ea0:	fd0080e7          	jalr	-48(ra) # 80202e6c <argint>
+    80202e98:	fec40593          	addi	a1,s0,-20
+    80202e9c:	4501                	li	a0,0
+    80202e9e:	00000097          	auipc	ra,0x0
+    80202ea2:	fd0080e7          	jalr	-48(ra) # 80202e6e <argint>
     printf("hello world from proc %d, hart %d, arg %d\n", myproc()->pid, r_tp(), n);
-    80202ea4:	fffff097          	auipc	ra,0xfffff
-    80202ea8:	b98080e7          	jalr	-1128(ra) # 80201a3c <myproc>
-    80202eac:	8612                	mv	a2,tp
-    80202eae:	fec42683          	lw	a3,-20(s0)
-    80202eb2:	5d0c                	lw	a1,56(a0)
-    80202eb4:	00007517          	auipc	a0,0x7
-    80202eb8:	abc50513          	addi	a0,a0,-1348 # 80209970 <digits+0x5f0>
-    80202ebc:	ffffd097          	auipc	ra,0xffffd
-    80202ec0:	2d2080e7          	jalr	722(ra) # 8020018e <printf>
-}
-    80202ec4:	4501                	li	a0,0
-    80202ec6:	60e2                	ld	ra,24(sp)
-    80202ec8:	6442                	ld	s0,16(sp)
-    80202eca:	6105                	addi	sp,sp,32
-    80202ecc:	8082                	ret
-
-0000000080202ece <argaddr>:
-{
-    80202ece:	1101                	addi	sp,sp,-32
-    80202ed0:	ec06                	sd	ra,24(sp)
-    80202ed2:	e822                	sd	s0,16(sp)
-    80202ed4:	e426                	sd	s1,8(sp)
-    80202ed6:	1000                	addi	s0,sp,32
-    80202ed8:	84ae                	mv	s1,a1
+    80202ea6:	fffff097          	auipc	ra,0xfffff
+    80202eaa:	b96080e7          	jalr	-1130(ra) # 80201a3c <myproc>
+    80202eae:	8612                	mv	a2,tp
+    80202eb0:	fec42683          	lw	a3,-20(s0)
+    80202eb4:	5d0c                	lw	a1,56(a0)
+    80202eb6:	00007517          	auipc	a0,0x7
+    80202eba:	aba50513          	addi	a0,a0,-1350 # 80209970 <digits+0x5f0>
+    80202ebe:	ffffd097          	auipc	ra,0xffffd
+    80202ec2:	2d0080e7          	jalr	720(ra) # 8020018e <printf>
+}
+    80202ec6:	4501                	li	a0,0
+    80202ec8:	60e2                	ld	ra,24(sp)
+    80202eca:	6442                	ld	s0,16(sp)
+    80202ecc:	6105                	addi	sp,sp,32
+    80202ece:	8082                	ret
+
+0000000080202ed0 <argaddr>:
+{
+    80202ed0:	1101                	addi	sp,sp,-32
+    80202ed2:	ec06                	sd	ra,24(sp)
+    80202ed4:	e822                	sd	s0,16(sp)
+    80202ed6:	e426                	sd	s1,8(sp)
+    80202ed8:	1000                	addi	s0,sp,32
+    80202eda:	84ae                	mv	s1,a1
   *ip = argraw(n);
-    80202eda:	00000097          	auipc	ra,0x0
-    80202ede:	db2080e7          	jalr	-590(ra) # 80202c8c <argraw>
-    80202ee2:	e088                	sd	a0,0(s1)
-}
-    80202ee4:	4501                	li	a0,0
-    80202ee6:	60e2                	ld	ra,24(sp)
-    80202ee8:	6442                	ld	s0,16(sp)
-    80202eea:	64a2                	ld	s1,8(sp)
-    80202eec:	6105                	addi	sp,sp,32
-    80202eee:	8082                	ret
-
-0000000080202ef0 <argstr>:
-{
-    80202ef0:	1101                	addi	sp,sp,-32
-    80202ef2:	ec06                	sd	ra,24(sp)
-    80202ef4:	e822                	sd	s0,16(sp)
-    80202ef6:	e426                	sd	s1,8(sp)
-    80202ef8:	e04a                	sd	s2,0(sp)
-    80202efa:	1000                	addi	s0,sp,32
-    80202efc:	84ae                	mv	s1,a1
-    80202efe:	8932                	mv	s2,a2
+    80202edc:	00000097          	auipc	ra,0x0
+    80202ee0:	db0080e7          	jalr	-592(ra) # 80202c8c <argraw>
+    80202ee4:	e088                	sd	a0,0(s1)
+}
+    80202ee6:	4501                	li	a0,0
+    80202ee8:	60e2                	ld	ra,24(sp)
+    80202eea:	6442                	ld	s0,16(sp)
+    80202eec:	64a2                	ld	s1,8(sp)
+    80202eee:	6105                	addi	sp,sp,32
+    80202ef0:	8082                	ret
+
+0000000080202ef2 <argstr>:
+{
+    80202ef2:	1101                	addi	sp,sp,-32
+    80202ef4:	ec06                	sd	ra,24(sp)
+    80202ef6:	e822                	sd	s0,16(sp)
+    80202ef8:	e426                	sd	s1,8(sp)
+    80202efa:	e04a                	sd	s2,0(sp)
+    80202efc:	1000                	addi	s0,sp,32
+    80202efe:	84ae                	mv	s1,a1
+    80202f00:	8932                	mv	s2,a2
   *ip = argraw(n);
-    80202f00:	00000097          	auipc	ra,0x0
-    80202f04:	d8c080e7          	jalr	-628(ra) # 80202c8c <argraw>
+    80202f02:	00000097          	auipc	ra,0x0
+    80202f06:	d8a080e7          	jalr	-630(ra) # 80202c8c <argraw>
   return fetchstr(addr, buf, max);
-    80202f08:	864a                	mv	a2,s2
-    80202f0a:	85a6                	mv	a1,s1
-    80202f0c:	00000097          	auipc	ra,0x0
-    80202f10:	f30080e7          	jalr	-208(ra) # 80202e3c <fetchstr>
-}
-    80202f14:	60e2                	ld	ra,24(sp)
-    80202f16:	6442                	ld	s0,16(sp)
-    80202f18:	64a2                	ld	s1,8(sp)
-    80202f1a:	6902                	ld	s2,0(sp)
-    80202f1c:	6105                	addi	sp,sp,32
-    80202f1e:	8082                	ret
-
-0000000080202f20 <syscall>:
-{
-    80202f20:	7179                	addi	sp,sp,-48
-    80202f22:	f406                	sd	ra,40(sp)
-    80202f24:	f022                	sd	s0,32(sp)
-    80202f26:	ec26                	sd	s1,24(sp)
-    80202f28:	e84a                	sd	s2,16(sp)
-    80202f2a:	e44e                	sd	s3,8(sp)
-    80202f2c:	1800                	addi	s0,sp,48
+    80202f0a:	864a                	mv	a2,s2
+    80202f0c:	85a6                	mv	a1,s1
+    80202f0e:	00000097          	auipc	ra,0x0
+    80202f12:	f30080e7          	jalr	-208(ra) # 80202e3e <fetchstr>
+}
+    80202f16:	60e2                	ld	ra,24(sp)
+    80202f18:	6442                	ld	s0,16(sp)
+    80202f1a:	64a2                	ld	s1,8(sp)
+    80202f1c:	6902                	ld	s2,0(sp)
+    80202f1e:	6105                	addi	sp,sp,32
+    80202f20:	8082                	ret
+
+0000000080202f22 <syscall>:
+{
+    80202f22:	7179                	addi	sp,sp,-48
+    80202f24:	f406                	sd	ra,40(sp)
+    80202f26:	f022                	sd	s0,32(sp)
+    80202f28:	ec26                	sd	s1,24(sp)
+    80202f2a:	e84a                	sd	s2,16(sp)
+    80202f2c:	e44e                	sd	s3,8(sp)
+    80202f2e:	1800                	addi	s0,sp,48
   struct proc *p = myproc();
-    80202f2e:	fffff097          	auipc	ra,0xfffff
-    80202f32:	b0e080e7          	jalr	-1266(ra) # 80201a3c <myproc>
-    80202f36:	84aa                	mv	s1,a0
+    80202f30:	fffff097          	auipc	ra,0xfffff
+    80202f34:	b0c080e7          	jalr	-1268(ra) # 80201a3c <myproc>
+    80202f38:	84aa                	mv	s1,a0
   num = p->trapframe->a7;
-    80202f38:	06053903          	ld	s2,96(a0)
-    80202f3c:	0a893783          	ld	a5,168(s2)
-    80202f40:	0007899b          	sext.w	s3,a5
+    80202f3a:	06053903          	ld	s2,96(a0)
+    80202f3e:	0a893783          	ld	a5,168(s2)
+    80202f42:	0007899b          	sext.w	s3,a5
   if(num > 0 && num < NELEM(syscalls) && syscalls[num]) {
-    80202f44:	37fd                	addiw	a5,a5,-1
-    80202f46:	0d100713          	li	a4,209
-    80202f4a:	04f76763          	bltu	a4,a5,80202f98 <syscall+0x78>
-    80202f4e:	00399713          	slli	a4,s3,0x3
-    80202f52:	00008797          	auipc	a5,0x8
-    80202f56:	c2678793          	addi	a5,a5,-986 # 8020ab78 <syscalls>
-    80202f5a:	97ba                	add	a5,a5,a4
-    80202f5c:	639c                	ld	a5,0(a5)
-    80202f5e:	cf8d                	beqz	a5,80202f98 <syscall+0x78>
+    80202f46:	37fd                	addiw	a5,a5,-1
+    80202f48:	0d100713          	li	a4,209
+    80202f4c:	04f76763          	bltu	a4,a5,80202f9a <syscall+0x78>
+    80202f50:	00399713          	slli	a4,s3,0x3
+    80202f54:	00008797          	auipc	a5,0x8
+    80202f58:	c4c78793          	addi	a5,a5,-948 # 8020aba0 <syscalls>
+    80202f5c:	97ba                	add	a5,a5,a4
+    80202f5e:	639c                	ld	a5,0(a5)
+    80202f60:	cf8d                	beqz	a5,80202f9a <syscall+0x78>
     p->trapframe->a0 = syscalls[num]();
-    80202f60:	9782                	jalr	a5
-    80202f62:	06a93823          	sd	a0,112(s2)
+    80202f62:	9782                	jalr	a5
+    80202f64:	06a93823          	sd	a0,112(s2)
     if ((p->tmask & (1 << num)) != 0) {
-    80202f66:	1704a783          	lw	a5,368(s1)
-    80202f6a:	4137d7bb          	sraw	a5,a5,s3
-    80202f6e:	8b85                	andi	a5,a5,1
-    80202f70:	c3b9                	beqz	a5,80202fb6 <syscall+0x96>
+    80202f68:	1704a783          	lw	a5,368(s1)
+    80202f6c:	4137d7bb          	sraw	a5,a5,s3
+    80202f70:	8b85                	andi	a5,a5,1
+    80202f72:	c3b9                	beqz	a5,80202fb8 <syscall+0x96>
       printf("pid %d: %s -> %d\n", p->pid, sysnames[num], p->trapframe->a0);
-    80202f72:	70b8                	ld	a4,96(s1)
-    80202f74:	098e                	slli	s3,s3,0x3
-    80202f76:	00008797          	auipc	a5,0x8
-    80202f7a:	29a78793          	addi	a5,a5,666 # 8020b210 <sysnames>
-    80202f7e:	97ce                	add	a5,a5,s3
-    80202f80:	7b34                	ld	a3,112(a4)
-    80202f82:	6390                	ld	a2,0(a5)
-    80202f84:	5c8c                	lw	a1,56(s1)
-    80202f86:	00007517          	auipc	a0,0x7
-    80202f8a:	a1a50513          	addi	a0,a0,-1510 # 802099a0 <digits+0x620>
-    80202f8e:	ffffd097          	auipc	ra,0xffffd
-    80202f92:	200080e7          	jalr	512(ra) # 8020018e <printf>
-    80202f96:	a005                	j	80202fb6 <syscall+0x96>
+    80202f74:	70b8                	ld	a4,96(s1)
+    80202f76:	098e                	slli	s3,s3,0x3
+    80202f78:	00008797          	auipc	a5,0x8
+    80202f7c:	2c078793          	addi	a5,a5,704 # 8020b238 <sysnames>
+    80202f80:	97ce                	add	a5,a5,s3
+    80202f82:	7b34                	ld	a3,112(a4)
+    80202f84:	6390                	ld	a2,0(a5)
+    80202f86:	5c8c                	lw	a1,56(s1)
+    80202f88:	00007517          	auipc	a0,0x7
+    80202f8c:	a1850513          	addi	a0,a0,-1512 # 802099a0 <digits+0x620>
+    80202f90:	ffffd097          	auipc	ra,0xffffd
+    80202f94:	1fe080e7          	jalr	510(ra) # 8020018e <printf>
+    80202f98:	a005                	j	80202fb8 <syscall+0x96>
     printf("pid %d %s: unknown sys call %d\n",
-    80202f98:	86ce                	mv	a3,s3
-    80202f9a:	16048613          	addi	a2,s1,352
-    80202f9e:	5c8c                	lw	a1,56(s1)
-    80202fa0:	00007517          	auipc	a0,0x7
-    80202fa4:	a1850513          	addi	a0,a0,-1512 # 802099b8 <digits+0x638>
-    80202fa8:	ffffd097          	auipc	ra,0xffffd
-    80202fac:	1e6080e7          	jalr	486(ra) # 8020018e <printf>
+    80202f9a:	86ce                	mv	a3,s3
+    80202f9c:	16048613          	addi	a2,s1,352
+    80202fa0:	5c8c                	lw	a1,56(s1)
+    80202fa2:	00007517          	auipc	a0,0x7
+    80202fa6:	a1650513          	addi	a0,a0,-1514 # 802099b8 <digits+0x638>
+    80202faa:	ffffd097          	auipc	ra,0xffffd
+    80202fae:	1e4080e7          	jalr	484(ra) # 8020018e <printf>
     p->trapframe->a0 = -1;
-    80202fb0:	70bc                	ld	a5,96(s1)
-    80202fb2:	577d                	li	a4,-1
-    80202fb4:	fbb8                	sd	a4,112(a5)
+    80202fb2:	70bc                	ld	a5,96(s1)
+    80202fb4:	577d                	li	a4,-1
+    80202fb6:	fbb8                	sd	a4,112(a5)
 }
-    80202fb6:	70a2                	ld	ra,40(sp)
-    80202fb8:	7402                	ld	s0,32(sp)
-    80202fba:	64e2                	ld	s1,24(sp)
-    80202fbc:	6942                	ld	s2,16(sp)
-    80202fbe:	69a2                	ld	s3,8(sp)
-    80202fc0:	6145                	addi	sp,sp,48
-    80202fc2:	8082                	ret
+    80202fb8:	70a2                	ld	ra,40(sp)
+    80202fba:	7402                	ld	s0,32(sp)
+    80202fbc:	64e2                	ld	s1,24(sp)
+    80202fbe:	6942                	ld	s2,16(sp)
+    80202fc0:	69a2                	ld	s3,8(sp)
+    80202fc2:	6145                	addi	sp,sp,48
+    80202fc4:	8082                	ret
 
-0000000080202fc4 <sys_exec>:
+0000000080202fc6 <sys_exec>:
 
 extern int exec(char *path, char **argv);
 
 uint64
 sys_exec(void)
 {
-    80202fc4:	d9010113          	addi	sp,sp,-624
-    80202fc8:	26113423          	sd	ra,616(sp)
-    80202fcc:	26813023          	sd	s0,608(sp)
-    80202fd0:	24913c23          	sd	s1,600(sp)
-    80202fd4:	25213823          	sd	s2,592(sp)
-    80202fd8:	25313423          	sd	s3,584(sp)
-    80202fdc:	25413023          	sd	s4,576(sp)
-    80202fe0:	23513c23          	sd	s5,568(sp)
-    80202fe4:	23613823          	sd	s6,560(sp)
-    80202fe8:	23713423          	sd	s7,552(sp)
-    80202fec:	1c80                	addi	s0,sp,624
+    80202fc6:	d9010113          	addi	sp,sp,-624
+    80202fca:	26113423          	sd	ra,616(sp)
+    80202fce:	26813023          	sd	s0,608(sp)
+    80202fd2:	24913c23          	sd	s1,600(sp)
+    80202fd6:	25213823          	sd	s2,592(sp)
+    80202fda:	25313423          	sd	s3,584(sp)
+    80202fde:	25413023          	sd	s4,576(sp)
+    80202fe2:	23513c23          	sd	s5,568(sp)
+    80202fe6:	23613823          	sd	s6,560(sp)
+    80202fea:	23713423          	sd	s7,552(sp)
+    80202fee:	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){
-    80202fee:	10400613          	li	a2,260
-    80202ff2:	ea840593          	addi	a1,s0,-344
-    80202ff6:	4501                	li	a0,0
-    80202ff8:	00000097          	auipc	ra,0x0
-    80202ffc:	ef8080e7          	jalr	-264(ra) # 80202ef0 <argstr>
+    80202ff0:	10400613          	li	a2,260
+    80202ff4:	ea840593          	addi	a1,s0,-344
+    80202ff8:	4501                	li	a0,0
+    80202ffa:	00000097          	auipc	ra,0x0
+    80202ffe:	ef8080e7          	jalr	-264(ra) # 80202ef2 <argstr>
     return -1;
-    80203000:	597d                	li	s2,-1
+    80203002:	597d                	li	s2,-1
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || argaddr(1, &uargv) < 0){
-    80203002:	0c054c63          	bltz	a0,802030da <sys_exec+0x116>
-    80203006:	da040593          	addi	a1,s0,-608
-    8020300a:	4505                	li	a0,1
-    8020300c:	00000097          	auipc	ra,0x0
-    80203010:	ec2080e7          	jalr	-318(ra) # 80202ece <argaddr>
-    80203014:	0c054363          	bltz	a0,802030da <sys_exec+0x116>
+    80203004:	0c054c63          	bltz	a0,802030dc <sys_exec+0x116>
+    80203008:	da040593          	addi	a1,s0,-608
+    8020300c:	4505                	li	a0,1
+    8020300e:	00000097          	auipc	ra,0x0
+    80203012:	ec2080e7          	jalr	-318(ra) # 80202ed0 <argaddr>
+    80203016:	0c054363          	bltz	a0,802030dc <sys_exec+0x116>
   }
   memset(argv, 0, sizeof(argv));
-    80203018:	da840a13          	addi	s4,s0,-600
-    8020301c:	10000613          	li	a2,256
-    80203020:	4581                	li	a1,0
-    80203022:	8552                	mv	a0,s4
-    80203024:	ffffd097          	auipc	ra,0xffffd
-    80203028:	73e080e7          	jalr	1854(ra) # 80200762 <memset>
+    8020301a:	da840a13          	addi	s4,s0,-600
+    8020301e:	10000613          	li	a2,256
+    80203022:	4581                	li	a1,0
+    80203024:	8552                	mv	a0,s4
+    80203026:	ffffd097          	auipc	ra,0xffffd
+    8020302a:	73c080e7          	jalr	1852(ra) # 80200762 <memset>
   for(i=0;; i++){
     if(i >= NELEM(argv)){
-    8020302c:	84d2                	mv	s1,s4
+    8020302e:	84d2                	mv	s1,s4
   memset(argv, 0, sizeof(argv));
-    8020302e:	89d2                	mv	s3,s4
-    80203030:	4901                	li	s2,0
+    80203030:	89d2                	mv	s3,s4
+    80203032:	4901                	li	s2,0
       goto bad;
     }
     if(fetchaddr(uargv+sizeof(uint64)*i, (uint64*)&uarg) < 0){
-    80203032:	d9840a93          	addi	s5,s0,-616
+    80203034:	d9840a93          	addi	s5,s0,-616
     if(i >= NELEM(argv)){
-    80203036:	02000b13          	li	s6,32
-    8020303a:	00090b9b          	sext.w	s7,s2
+    80203038:	02000b13          	li	s6,32
+    8020303c:	00090b9b          	sext.w	s7,s2
     if(fetchaddr(uargv+sizeof(uint64)*i, (uint64*)&uarg) < 0){
-    8020303e:	00391513          	slli	a0,s2,0x3
-    80203042:	85d6                	mv	a1,s5
-    80203044:	da043783          	ld	a5,-608(s0)
-    80203048:	953e                	add	a0,a0,a5
-    8020304a:	00000097          	auipc	ra,0x0
-    8020304e:	da2080e7          	jalr	-606(ra) # 80202dec <fetchaddr>
-    80203052:	02054a63          	bltz	a0,80203086 <sys_exec+0xc2>
+    80203040:	00391513          	slli	a0,s2,0x3
+    80203044:	85d6                	mv	a1,s5
+    80203046:	da043783          	ld	a5,-608(s0)
+    8020304a:	953e                	add	a0,a0,a5
+    8020304c:	00000097          	auipc	ra,0x0
+    80203050:	da2080e7          	jalr	-606(ra) # 80202dee <fetchaddr>
+    80203054:	02054a63          	bltz	a0,80203088 <sys_exec+0xc2>
       goto bad;
     }
     if(uarg == 0){
-    80203056:	d9843783          	ld	a5,-616(s0)
-    8020305a:	c3b9                	beqz	a5,802030a0 <sys_exec+0xdc>
+    80203058:	d9843783          	ld	a5,-616(s0)
+    8020305c:	c3b9                	beqz	a5,802030a2 <sys_exec+0xdc>
       argv[i] = 0;
       break;
     }
     argv[i] = kalloc();
-    8020305c:	ffffd097          	auipc	ra,0xffffd
-    80203060:	4fe080e7          	jalr	1278(ra) # 8020055a <kalloc>
-    80203064:	85aa                	mv	a1,a0
-    80203066:	00a9b023          	sd	a0,0(s3)
+    8020305e:	ffffd097          	auipc	ra,0xffffd
+    80203062:	4fc080e7          	jalr	1276(ra) # 8020055a <kalloc>
+    80203066:	85aa                	mv	a1,a0
+    80203068:	00a9b023          	sd	a0,0(s3)
     if(argv[i] == 0)
-    8020306a:	cd11                	beqz	a0,80203086 <sys_exec+0xc2>
+    8020306c:	cd11                	beqz	a0,80203088 <sys_exec+0xc2>
       goto bad;
     if(fetchstr(uarg, argv[i], PGSIZE) < 0)
-    8020306c:	6605                	lui	a2,0x1
-    8020306e:	d9843503          	ld	a0,-616(s0)
-    80203072:	00000097          	auipc	ra,0x0
-    80203076:	dca080e7          	jalr	-566(ra) # 80202e3c <fetchstr>
-    8020307a:	00054663          	bltz	a0,80203086 <sys_exec+0xc2>
+    8020306e:	6605                	lui	a2,0x1
+    80203070:	d9843503          	ld	a0,-616(s0)
+    80203074:	00000097          	auipc	ra,0x0
+    80203078:	dca080e7          	jalr	-566(ra) # 80202e3e <fetchstr>
+    8020307c:	00054663          	bltz	a0,80203088 <sys_exec+0xc2>
     if(i >= NELEM(argv)){
-    8020307e:	0905                	addi	s2,s2,1
-    80203080:	09a1                	addi	s3,s3,8
-    80203082:	fb691ce3          	bne	s2,s6,8020303a <sys_exec+0x76>
+    80203080:	0905                	addi	s2,s2,1
+    80203082:	09a1                	addi	s3,s3,8
+    80203084:	fb691ce3          	bne	s2,s6,8020303c <sys_exec+0x76>
     kfree(argv[i]);
 
   return ret;
 
  bad:
   for(i = 0; i < NELEM(argv) && argv[i] != 0; i++)
-    80203086:	100a0a13          	addi	s4,s4,256
-    8020308a:	6088                	ld	a0,0(s1)
-    8020308c:	c531                	beqz	a0,802030d8 <sys_exec+0x114>
+    80203088:	100a0a13          	addi	s4,s4,256
+    8020308c:	6088                	ld	a0,0(s1)
+    8020308e:	c531                	beqz	a0,802030da <sys_exec+0x114>
     kfree(argv[i]);
-    8020308e:	ffffd097          	auipc	ra,0xffffd
-    80203092:	3b2080e7          	jalr	946(ra) # 80200440 <kfree>
+    80203090:	ffffd097          	auipc	ra,0xffffd
+    80203094:	3b0080e7          	jalr	944(ra) # 80200440 <kfree>
   for(i = 0; i < NELEM(argv) && argv[i] != 0; i++)
-    80203096:	04a1                	addi	s1,s1,8
-    80203098:	ff4499e3          	bne	s1,s4,8020308a <sys_exec+0xc6>
+    80203098:	04a1                	addi	s1,s1,8
+    8020309a:	ff4499e3          	bne	s1,s4,8020308c <sys_exec+0xc6>
   return -1;
-    8020309c:	597d                	li	s2,-1
-    8020309e:	a835                	j	802030da <sys_exec+0x116>
+    8020309e:	597d                	li	s2,-1
+    802030a0:	a835                	j	802030dc <sys_exec+0x116>
       argv[i] = 0;
-    802030a0:	0b8e                	slli	s7,s7,0x3
-    802030a2:	fb0b8793          	addi	a5,s7,-80
-    802030a6:	00878bb3          	add	s7,a5,s0
-    802030aa:	de0bbc23          	sd	zero,-520(s7)
+    802030a2:	0b8e                	slli	s7,s7,0x3
+    802030a4:	fb0b8793          	addi	a5,s7,-80
+    802030a8:	00878bb3          	add	s7,a5,s0
+    802030ac:	de0bbc23          	sd	zero,-520(s7)
   int ret = exec(path, argv);
-    802030ae:	da840593          	addi	a1,s0,-600
-    802030b2:	ea840513          	addi	a0,s0,-344
-    802030b6:	00001097          	auipc	ra,0x1
-    802030ba:	e56080e7          	jalr	-426(ra) # 80203f0c <exec>
-    802030be:	892a                	mv	s2,a0
+    802030b0:	da840593          	addi	a1,s0,-600
+    802030b4:	ea840513          	addi	a0,s0,-344
+    802030b8:	00001097          	auipc	ra,0x1
+    802030bc:	e56080e7          	jalr	-426(ra) # 80203f0e <exec>
+    802030c0:	892a                	mv	s2,a0
   for(i = 0; i < NELEM(argv) && argv[i] != 0; i++)
-    802030c0:	100a0a13          	addi	s4,s4,256
-    802030c4:	6088                	ld	a0,0(s1)
-    802030c6:	c911                	beqz	a0,802030da <sys_exec+0x116>
+    802030c2:	100a0a13          	addi	s4,s4,256
+    802030c6:	6088                	ld	a0,0(s1)
+    802030c8:	c911                	beqz	a0,802030dc <sys_exec+0x116>
     kfree(argv[i]);
-    802030c8:	ffffd097          	auipc	ra,0xffffd
-    802030cc:	378080e7          	jalr	888(ra) # 80200440 <kfree>
+    802030ca:	ffffd097          	auipc	ra,0xffffd
+    802030ce:	376080e7          	jalr	886(ra) # 80200440 <kfree>
   for(i = 0; i < NELEM(argv) && argv[i] != 0; i++)
-    802030d0:	04a1                	addi	s1,s1,8
-    802030d2:	ff4499e3          	bne	s1,s4,802030c4 <sys_exec+0x100>
-    802030d6:	a011                	j	802030da <sys_exec+0x116>
+    802030d2:	04a1                	addi	s1,s1,8
+    802030d4:	ff4499e3          	bne	s1,s4,802030c6 <sys_exec+0x100>
+    802030d8:	a011                	j	802030dc <sys_exec+0x116>
   return -1;
-    802030d8:	597d                	li	s2,-1
-}
-    802030da:	854a                	mv	a0,s2
-    802030dc:	26813083          	ld	ra,616(sp)
-    802030e0:	26013403          	ld	s0,608(sp)
-    802030e4:	25813483          	ld	s1,600(sp)
-    802030e8:	25013903          	ld	s2,592(sp)
-    802030ec:	24813983          	ld	s3,584(sp)
-    802030f0:	24013a03          	ld	s4,576(sp)
-    802030f4:	23813a83          	ld	s5,568(sp)
-    802030f8:	23013b03          	ld	s6,560(sp)
-    802030fc:	22813b83          	ld	s7,552(sp)
-    80203100:	27010113          	addi	sp,sp,624
-    80203104:	8082                	ret
-
-0000000080203106 <sys_exit>:
+    802030da:	597d                	li	s2,-1
+}
+    802030dc:	854a                	mv	a0,s2
+    802030de:	26813083          	ld	ra,616(sp)
+    802030e2:	26013403          	ld	s0,608(sp)
+    802030e6:	25813483          	ld	s1,600(sp)
+    802030ea:	25013903          	ld	s2,592(sp)
+    802030ee:	24813983          	ld	s3,584(sp)
+    802030f2:	24013a03          	ld	s4,576(sp)
+    802030f6:	23813a83          	ld	s5,568(sp)
+    802030fa:	23013b03          	ld	s6,560(sp)
+    802030fe:	22813b83          	ld	s7,552(sp)
+    80203102:	27010113          	addi	sp,sp,624
+    80203106:	8082                	ret
+
+0000000080203108 <sys_exit>:
 
 uint64
 sys_exit(void)
 {
-    80203106:	1101                	addi	sp,sp,-32
-    80203108:	ec06                	sd	ra,24(sp)
-    8020310a:	e822                	sd	s0,16(sp)
-    8020310c:	1000                	addi	s0,sp,32
+    80203108:	1101                	addi	sp,sp,-32
+    8020310a:	ec06                	sd	ra,24(sp)
+    8020310c:	e822                	sd	s0,16(sp)
+    8020310e:	1000                	addi	s0,sp,32
   int n;
   if(argint(0, &n) < 0)
-    8020310e:	fec40593          	addi	a1,s0,-20
-    80203112:	4501                	li	a0,0
-    80203114:	00000097          	auipc	ra,0x0
-    80203118:	d58080e7          	jalr	-680(ra) # 80202e6c <argint>
+    80203110:	fec40593          	addi	a1,s0,-20
+    80203114:	4501                	li	a0,0
+    80203116:	00000097          	auipc	ra,0x0
+    8020311a:	d58080e7          	jalr	-680(ra) # 80202e6e <argint>
     return -1;
-    8020311c:	57fd                	li	a5,-1
+    8020311e:	57fd                	li	a5,-1
   if(argint(0, &n) < 0)
-    8020311e:	00054963          	bltz	a0,80203130 <sys_exit+0x2a>
+    80203120:	00054963          	bltz	a0,80203132 <sys_exit+0x2a>
   exit(n);
-    80203122:	fec42503          	lw	a0,-20(s0)
-    80203126:	fffff097          	auipc	ra,0xfffff
-    8020312a:	05a080e7          	jalr	90(ra) # 80202180 <exit>
+    80203124:	fec42503          	lw	a0,-20(s0)
+    80203128:	fffff097          	auipc	ra,0xfffff
+    8020312c:	058080e7          	jalr	88(ra) # 80202180 <exit>
   return 0;  // not reached
-    8020312e:	4781                	li	a5,0
+    80203130:	4781                	li	a5,0
 }
-    80203130:	853e                	mv	a0,a5
-    80203132:	60e2                	ld	ra,24(sp)
-    80203134:	6442                	ld	s0,16(sp)
-    80203136:	6105                	addi	sp,sp,32
-    80203138:	8082                	ret
+    80203132:	853e                	mv	a0,a5
+    80203134:	60e2                	ld	ra,24(sp)
+    80203136:	6442                	ld	s0,16(sp)
+    80203138:	6105                	addi	sp,sp,32
+    8020313a:	8082                	ret
 
-000000008020313a <sys_getpid>:
+000000008020313c <sys_getpid>:
 
 uint64
 sys_getpid(void)
 {
-    8020313a:	1141                	addi	sp,sp,-16
-    8020313c:	e406                	sd	ra,8(sp)
-    8020313e:	e022                	sd	s0,0(sp)
-    80203140:	0800                	addi	s0,sp,16
+    8020313c:	1141                	addi	sp,sp,-16
+    8020313e:	e406                	sd	ra,8(sp)
+    80203140:	e022                	sd	s0,0(sp)
+    80203142:	0800                	addi	s0,sp,16
   return myproc()->pid;
-    80203142:	fffff097          	auipc	ra,0xfffff
-    80203146:	8fa080e7          	jalr	-1798(ra) # 80201a3c <myproc>
+    80203144:	fffff097          	auipc	ra,0xfffff
+    80203148:	8f8080e7          	jalr	-1800(ra) # 80201a3c <myproc>
 }
-    8020314a:	5d08                	lw	a0,56(a0)
-    8020314c:	60a2                	ld	ra,8(sp)
-    8020314e:	6402                	ld	s0,0(sp)
-    80203150:	0141                	addi	sp,sp,16
-    80203152:	8082                	ret
+    8020314c:	5d08                	lw	a0,56(a0)
+    8020314e:	60a2                	ld	ra,8(sp)
+    80203150:	6402                	ld	s0,0(sp)
+    80203152:	0141                	addi	sp,sp,16
+    80203154:	8082                	ret
 
-0000000080203154 <sys_fork>:
+0000000080203156 <sys_fork>:
 
 uint64
 sys_fork(void)
 {
-    80203154:	1141                	addi	sp,sp,-16
-    80203156:	e406                	sd	ra,8(sp)
-    80203158:	e022                	sd	s0,0(sp)
-    8020315a:	0800                	addi	s0,sp,16
+    80203156:	1141                	addi	sp,sp,-16
+    80203158:	e406                	sd	ra,8(sp)
+    8020315a:	e022                	sd	s0,0(sp)
+    8020315c:	0800                	addi	s0,sp,16
   return fork();
-    8020315c:	fffff097          	auipc	ra,0xfffff
-    80203160:	ce6080e7          	jalr	-794(ra) # 80201e42 <fork>
+    8020315e:	fffff097          	auipc	ra,0xfffff
+    80203162:	ce4080e7          	jalr	-796(ra) # 80201e42 <fork>
 }
-    80203164:	60a2                	ld	ra,8(sp)
-    80203166:	6402                	ld	s0,0(sp)
-    80203168:	0141                	addi	sp,sp,16
-    8020316a:	8082                	ret
+    80203166:	60a2                	ld	ra,8(sp)
+    80203168:	6402                	ld	s0,0(sp)
+    8020316a:	0141                	addi	sp,sp,16
+    8020316c:	8082                	ret
 
-000000008020316c <sys_wait>:
+000000008020316e <sys_wait>:
 
 uint64
 sys_wait(void)
 {
-    8020316c:	1101                	addi	sp,sp,-32
-    8020316e:	ec06                	sd	ra,24(sp)
-    80203170:	e822                	sd	s0,16(sp)
-    80203172:	1000                	addi	s0,sp,32
+    8020316e:	1101                	addi	sp,sp,-32
+    80203170:	ec06                	sd	ra,24(sp)
+    80203172:	e822                	sd	s0,16(sp)
+    80203174:	1000                	addi	s0,sp,32
   uint64 p;
   if(argaddr(0, &p) < 0)
-    80203174:	fe840593          	addi	a1,s0,-24
-    80203178:	4501                	li	a0,0
-    8020317a:	00000097          	auipc	ra,0x0
-    8020317e:	d54080e7          	jalr	-684(ra) # 80202ece <argaddr>
-    80203182:	87aa                	mv	a5,a0
+    80203176:	fe840593          	addi	a1,s0,-24
+    8020317a:	4501                	li	a0,0
+    8020317c:	00000097          	auipc	ra,0x0
+    80203180:	d54080e7          	jalr	-684(ra) # 80202ed0 <argaddr>
+    80203184:	87aa                	mv	a5,a0
     return -1;
-    80203184:	557d                	li	a0,-1
+    80203186:	557d                	li	a0,-1
   if(argaddr(0, &p) < 0)
-    80203186:	0007c863          	bltz	a5,80203196 <sys_wait+0x2a>
+    80203188:	0007c863          	bltz	a5,80203198 <sys_wait+0x2a>
   return wait(p);
-    8020318a:	fe843503          	ld	a0,-24(s0)
-    8020318e:	fffff097          	auipc	ra,0xfffff
-    80203192:	1ac080e7          	jalr	428(ra) # 8020233a <wait>
+    8020318c:	fe843503          	ld	a0,-24(s0)
+    80203190:	fffff097          	auipc	ra,0xfffff
+    80203194:	1aa080e7          	jalr	426(ra) # 8020233a <wait>
 }
-    80203196:	60e2                	ld	ra,24(sp)
-    80203198:	6442                	ld	s0,16(sp)
-    8020319a:	6105                	addi	sp,sp,32
-    8020319c:	8082                	ret
+    80203198:	60e2                	ld	ra,24(sp)
+    8020319a:	6442                	ld	s0,16(sp)
+    8020319c:	6105                	addi	sp,sp,32
+    8020319e:	8082                	ret
 
-000000008020319e <sys_sbrk>:
+00000000802031a0 <sys_sbrk>:
 
 uint64
 sys_sbrk(void)
 {
-    8020319e:	7179                	addi	sp,sp,-48
-    802031a0:	f406                	sd	ra,40(sp)
-    802031a2:	f022                	sd	s0,32(sp)
-    802031a4:	ec26                	sd	s1,24(sp)
-    802031a6:	1800                	addi	s0,sp,48
+    802031a0:	7179                	addi	sp,sp,-48
+    802031a2:	f406                	sd	ra,40(sp)
+    802031a4:	f022                	sd	s0,32(sp)
+    802031a6:	ec26                	sd	s1,24(sp)
+    802031a8:	1800                	addi	s0,sp,48
   int addr;
   int n;
 
   if(argint(0, &n) < 0)
-    802031a8:	fdc40593          	addi	a1,s0,-36
-    802031ac:	4501                	li	a0,0
-    802031ae:	00000097          	auipc	ra,0x0
-    802031b2:	cbe080e7          	jalr	-834(ra) # 80202e6c <argint>
-    802031b6:	87aa                	mv	a5,a0
+    802031aa:	fdc40593          	addi	a1,s0,-36
+    802031ae:	4501                	li	a0,0
+    802031b0:	00000097          	auipc	ra,0x0
+    802031b4:	cbe080e7          	jalr	-834(ra) # 80202e6e <argint>
+    802031b8:	87aa                	mv	a5,a0
     return -1;
-    802031b8:	557d                	li	a0,-1
+    802031ba:	557d                	li	a0,-1
   if(argint(0, &n) < 0)
-    802031ba:	0207c063          	bltz	a5,802031da <sys_sbrk+0x3c>
+    802031bc:	0207c063          	bltz	a5,802031dc <sys_sbrk+0x3c>
   addr = myproc()->sz;
-    802031be:	fffff097          	auipc	ra,0xfffff
-    802031c2:	87e080e7          	jalr	-1922(ra) # 80201a3c <myproc>
-    802031c6:	4524                	lw	s1,72(a0)
+    802031c0:	fffff097          	auipc	ra,0xfffff
+    802031c4:	87c080e7          	jalr	-1924(ra) # 80201a3c <myproc>
+    802031c8:	4524                	lw	s1,72(a0)
   if(growproc(n) < 0)
-    802031c8:	fdc42503          	lw	a0,-36(s0)
-    802031cc:	fffff097          	auipc	ra,0xfffff
-    802031d0:	bfa080e7          	jalr	-1030(ra) # 80201dc6 <growproc>
-    802031d4:	00054863          	bltz	a0,802031e4 <sys_sbrk+0x46>
+    802031ca:	fdc42503          	lw	a0,-36(s0)
+    802031ce:	fffff097          	auipc	ra,0xfffff
+    802031d2:	bf8080e7          	jalr	-1032(ra) # 80201dc6 <growproc>
+    802031d6:	00054863          	bltz	a0,802031e6 <sys_sbrk+0x46>
     return -1;
   return addr;
-    802031d8:	8526                	mv	a0,s1
+    802031da:	8526                	mv	a0,s1
 }
-    802031da:	70a2                	ld	ra,40(sp)
-    802031dc:	7402                	ld	s0,32(sp)
-    802031de:	64e2                	ld	s1,24(sp)
-    802031e0:	6145                	addi	sp,sp,48
-    802031e2:	8082                	ret
+    802031dc:	70a2                	ld	ra,40(sp)
+    802031de:	7402                	ld	s0,32(sp)
+    802031e0:	64e2                	ld	s1,24(sp)
+    802031e2:	6145                	addi	sp,sp,48
+    802031e4:	8082                	ret
     return -1;
-    802031e4:	557d                	li	a0,-1
-    802031e6:	bfd5                	j	802031da <sys_sbrk+0x3c>
+    802031e6:	557d                	li	a0,-1
+    802031e8:	bfd5                	j	802031dc <sys_sbrk+0x3c>
 
-00000000802031e8 <sys_sleep>:
+00000000802031ea <sys_sleep>:
 
 uint64
 sys_sleep(void)
 {
-    802031e8:	7139                	addi	sp,sp,-64
-    802031ea:	fc06                	sd	ra,56(sp)
-    802031ec:	f822                	sd	s0,48(sp)
-    802031ee:	f426                	sd	s1,40(sp)
-    802031f0:	f04a                	sd	s2,32(sp)
-    802031f2:	ec4e                	sd	s3,24(sp)
-    802031f4:	0080                	addi	s0,sp,64
+    802031ea:	7139                	addi	sp,sp,-64
+    802031ec:	fc06                	sd	ra,56(sp)
+    802031ee:	f822                	sd	s0,48(sp)
+    802031f0:	f426                	sd	s1,40(sp)
+    802031f2:	f04a                	sd	s2,32(sp)
+    802031f4:	ec4e                	sd	s3,24(sp)
+    802031f6:	0080                	addi	s0,sp,64
   int n;
   uint ticks0;
 
   if(argint(0, &n) < 0)
-    802031f6:	fcc40593          	addi	a1,s0,-52
-    802031fa:	4501                	li	a0,0
-    802031fc:	00000097          	auipc	ra,0x0
-    80203200:	c70080e7          	jalr	-912(ra) # 80202e6c <argint>
+    802031f8:	fcc40593          	addi	a1,s0,-52
+    802031fc:	4501                	li	a0,0
+    802031fe:	00000097          	auipc	ra,0x0
+    80203202:	c70080e7          	jalr	-912(ra) # 80202e6e <argint>
     return -1;
-    80203204:	57fd                	li	a5,-1
+    80203206:	57fd                	li	a5,-1
   if(argint(0, &n) < 0)
-    80203206:	06054763          	bltz	a0,80203274 <sys_sleep+0x8c>
+    80203208:	06054763          	bltz	a0,80203276 <sys_sleep+0x8c>
   acquire(&tickslock);
-    8020320a:	00008517          	auipc	a0,0x8
-    8020320e:	6e653503          	ld	a0,1766(a0) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x30>
-    80203212:	ffffd097          	auipc	ra,0xffffd
-    80203216:	4b4080e7          	jalr	1204(ra) # 802006c6 <acquire>
+    8020320c:	00008517          	auipc	a0,0x8
+    80203210:	70c53503          	ld	a0,1804(a0) # 8020b918 <_GLOBAL_OFFSET_TABLE_+0x30>
+    80203214:	ffffd097          	auipc	ra,0xffffd
+    80203218:	4b2080e7          	jalr	1202(ra) # 802006c6 <acquire>
   ticks0 = ticks;
-    8020321a:	00008797          	auipc	a5,0x8
-    8020321e:	6e67b783          	ld	a5,1766(a5) # 8020b900 <_GLOBAL_OFFSET_TABLE_+0x40>
-    80203222:	0007a903          	lw	s2,0(a5)
+    8020321c:	00008797          	auipc	a5,0x8
+    80203220:	70c7b783          	ld	a5,1804(a5) # 8020b928 <_GLOBAL_OFFSET_TABLE_+0x40>
+    80203224:	0007a903          	lw	s2,0(a5)
   while(ticks - ticks0 < n){
-    80203226:	fcc42783          	lw	a5,-52(s0)
-    8020322a:	cf85                	beqz	a5,80203262 <sys_sleep+0x7a>
+    80203228:	fcc42783          	lw	a5,-52(s0)
+    8020322c:	cf85                	beqz	a5,80203264 <sys_sleep+0x7a>
     if(myproc()->killed){
       release(&tickslock);
       return -1;
     }
     sleep(&ticks, &tickslock);
-    8020322c:	00008997          	auipc	s3,0x8
-    80203230:	6c49b983          	ld	s3,1732(s3) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x30>
-    80203234:	00008497          	auipc	s1,0x8
-    80203238:	6cc4b483          	ld	s1,1740(s1) # 8020b900 <_GLOBAL_OFFSET_TABLE_+0x40>
+    8020322e:	00008997          	auipc	s3,0x8
+    80203232:	6ea9b983          	ld	s3,1770(s3) # 8020b918 <_GLOBAL_OFFSET_TABLE_+0x30>
+    80203236:	00008497          	auipc	s1,0x8
+    8020323a:	6f24b483          	ld	s1,1778(s1) # 8020b928 <_GLOBAL_OFFSET_TABLE_+0x40>
     if(myproc()->killed){
-    8020323c:	fffff097          	auipc	ra,0xfffff
-    80203240:	800080e7          	jalr	-2048(ra) # 80201a3c <myproc>
-    80203244:	591c                	lw	a5,48(a0)
-    80203246:	ef9d                	bnez	a5,80203284 <sys_sleep+0x9c>
+    8020323e:	ffffe097          	auipc	ra,0xffffe
+    80203242:	7fe080e7          	jalr	2046(ra) # 80201a3c <myproc>
+    80203246:	591c                	lw	a5,48(a0)
+    80203248:	ef9d                	bnez	a5,80203286 <sys_sleep+0x9c>
     sleep(&ticks, &tickslock);
-    80203248:	85ce                	mv	a1,s3
-    8020324a:	8526                	mv	a0,s1
-    8020324c:	fffff097          	auipc	ra,0xfffff
-    80203250:	070080e7          	jalr	112(ra) # 802022bc <sleep>
+    8020324a:	85ce                	mv	a1,s3
+    8020324c:	8526                	mv	a0,s1
+    8020324e:	fffff097          	auipc	ra,0xfffff
+    80203252:	06e080e7          	jalr	110(ra) # 802022bc <sleep>
   while(ticks - ticks0 < n){
-    80203254:	409c                	lw	a5,0(s1)
-    80203256:	412787bb          	subw	a5,a5,s2
-    8020325a:	fcc42703          	lw	a4,-52(s0)
-    8020325e:	fce7efe3          	bltu	a5,a4,8020323c <sys_sleep+0x54>
+    80203256:	409c                	lw	a5,0(s1)
+    80203258:	412787bb          	subw	a5,a5,s2
+    8020325c:	fcc42703          	lw	a4,-52(s0)
+    80203260:	fce7efe3          	bltu	a5,a4,8020323e <sys_sleep+0x54>
   }
   release(&tickslock);
-    80203262:	00008517          	auipc	a0,0x8
-    80203266:	68e53503          	ld	a0,1678(a0) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x30>
-    8020326a:	ffffd097          	auipc	ra,0xffffd
-    8020326e:	4b0080e7          	jalr	1200(ra) # 8020071a <release>
+    80203264:	00008517          	auipc	a0,0x8
+    80203268:	6b453503          	ld	a0,1716(a0) # 8020b918 <_GLOBAL_OFFSET_TABLE_+0x30>
+    8020326c:	ffffd097          	auipc	ra,0xffffd
+    80203270:	4ae080e7          	jalr	1198(ra) # 8020071a <release>
   return 0;
-    80203272:	4781                	li	a5,0
-}
-    80203274:	853e                	mv	a0,a5
-    80203276:	70e2                	ld	ra,56(sp)
-    80203278:	7442                	ld	s0,48(sp)
-    8020327a:	74a2                	ld	s1,40(sp)
-    8020327c:	7902                	ld	s2,32(sp)
-    8020327e:	69e2                	ld	s3,24(sp)
-    80203280:	6121                	addi	sp,sp,64
-    80203282:	8082                	ret
+    80203274:	4781                	li	a5,0
+}
+    80203276:	853e                	mv	a0,a5
+    80203278:	70e2                	ld	ra,56(sp)
+    8020327a:	7442                	ld	s0,48(sp)
+    8020327c:	74a2                	ld	s1,40(sp)
+    8020327e:	7902                	ld	s2,32(sp)
+    80203280:	69e2                	ld	s3,24(sp)
+    80203282:	6121                	addi	sp,sp,64
+    80203284:	8082                	ret
       release(&tickslock);
-    80203284:	00008517          	auipc	a0,0x8
-    80203288:	66c53503          	ld	a0,1644(a0) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x30>
-    8020328c:	ffffd097          	auipc	ra,0xffffd
-    80203290:	48e080e7          	jalr	1166(ra) # 8020071a <release>
+    80203286:	00008517          	auipc	a0,0x8
+    8020328a:	69253503          	ld	a0,1682(a0) # 8020b918 <_GLOBAL_OFFSET_TABLE_+0x30>
+    8020328e:	ffffd097          	auipc	ra,0xffffd
+    80203292:	48c080e7          	jalr	1164(ra) # 8020071a <release>
       return -1;
-    80203294:	57fd                	li	a5,-1
-    80203296:	bff9                	j	80203274 <sys_sleep+0x8c>
+    80203296:	57fd                	li	a5,-1
+    80203298:	bff9                	j	80203276 <sys_sleep+0x8c>
 
-0000000080203298 <sys_kill>:
+000000008020329a <sys_kill>:
 
 uint64
 sys_kill(void)
 {
-    80203298:	1101                	addi	sp,sp,-32
-    8020329a:	ec06                	sd	ra,24(sp)
-    8020329c:	e822                	sd	s0,16(sp)
-    8020329e:	1000                	addi	s0,sp,32
+    8020329a:	1101                	addi	sp,sp,-32
+    8020329c:	ec06                	sd	ra,24(sp)
+    8020329e:	e822                	sd	s0,16(sp)
+    802032a0:	1000                	addi	s0,sp,32
   int pid;
 
   if(argint(0, &pid) < 0)
-    802032a0:	fec40593          	addi	a1,s0,-20
-    802032a4:	4501                	li	a0,0
-    802032a6:	00000097          	auipc	ra,0x0
-    802032aa:	bc6080e7          	jalr	-1082(ra) # 80202e6c <argint>
-    802032ae:	87aa                	mv	a5,a0
+    802032a2:	fec40593          	addi	a1,s0,-20
+    802032a6:	4501                	li	a0,0
+    802032a8:	00000097          	auipc	ra,0x0
+    802032ac:	bc6080e7          	jalr	-1082(ra) # 80202e6e <argint>
+    802032b0:	87aa                	mv	a5,a0
     return -1;
-    802032b0:	557d                	li	a0,-1
+    802032b2:	557d                	li	a0,-1
   if(argint(0, &pid) < 0)
-    802032b2:	0007c863          	bltz	a5,802032c2 <sys_kill+0x2a>
+    802032b4:	0007c863          	bltz	a5,802032c4 <sys_kill+0x2a>
   return kill(pid);
-    802032b6:	fec42503          	lw	a0,-20(s0)
-    802032ba:	fffff097          	auipc	ra,0xfffff
-    802032be:	1e8080e7          	jalr	488(ra) # 802024a2 <kill>
+    802032b8:	fec42503          	lw	a0,-20(s0)
+    802032bc:	fffff097          	auipc	ra,0xfffff
+    802032c0:	1e6080e7          	jalr	486(ra) # 802024a2 <kill>
 }
-    802032c2:	60e2                	ld	ra,24(sp)
-    802032c4:	6442                	ld	s0,16(sp)
-    802032c6:	6105                	addi	sp,sp,32
-    802032c8:	8082                	ret
+    802032c4:	60e2                	ld	ra,24(sp)
+    802032c6:	6442                	ld	s0,16(sp)
+    802032c8:	6105                	addi	sp,sp,32
+    802032ca:	8082                	ret
 
-00000000802032ca <sys_uptime>:
+00000000802032cc <sys_uptime>:
 
 // return how many clock tick interrupts have occurred
 // since start.
 uint64
 sys_uptime(void)
 {
-    802032ca:	1101                	addi	sp,sp,-32
-    802032cc:	ec06                	sd	ra,24(sp)
-    802032ce:	e822                	sd	s0,16(sp)
-    802032d0:	e426                	sd	s1,8(sp)
-    802032d2:	1000                	addi	s0,sp,32
+    802032cc:	1101                	addi	sp,sp,-32
+    802032ce:	ec06                	sd	ra,24(sp)
+    802032d0:	e822                	sd	s0,16(sp)
+    802032d2:	e426                	sd	s1,8(sp)
+    802032d4:	1000                	addi	s0,sp,32
   uint xticks;
 
   acquire(&tickslock);
-    802032d4:	00008517          	auipc	a0,0x8
-    802032d8:	61c53503          	ld	a0,1564(a0) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x30>
-    802032dc:	ffffd097          	auipc	ra,0xffffd
-    802032e0:	3ea080e7          	jalr	1002(ra) # 802006c6 <acquire>
+    802032d6:	00008517          	auipc	a0,0x8
+    802032da:	64253503          	ld	a0,1602(a0) # 8020b918 <_GLOBAL_OFFSET_TABLE_+0x30>
+    802032de:	ffffd097          	auipc	ra,0xffffd
+    802032e2:	3e8080e7          	jalr	1000(ra) # 802006c6 <acquire>
   xticks = ticks;
-    802032e4:	00008797          	auipc	a5,0x8
-    802032e8:	61c7b783          	ld	a5,1564(a5) # 8020b900 <_GLOBAL_OFFSET_TABLE_+0x40>
-    802032ec:	4384                	lw	s1,0(a5)
+    802032e6:	00008797          	auipc	a5,0x8
+    802032ea:	6427b783          	ld	a5,1602(a5) # 8020b928 <_GLOBAL_OFFSET_TABLE_+0x40>
+    802032ee:	4384                	lw	s1,0(a5)
   release(&tickslock);
-    802032ee:	00008517          	auipc	a0,0x8
-    802032f2:	60253503          	ld	a0,1538(a0) # 8020b8f0 <_GLOBAL_OFFSET_TABLE_+0x30>
-    802032f6:	ffffd097          	auipc	ra,0xffffd
-    802032fa:	424080e7          	jalr	1060(ra) # 8020071a <release>
+    802032f0:	00008517          	auipc	a0,0x8
+    802032f4:	62853503          	ld	a0,1576(a0) # 8020b918 <_GLOBAL_OFFSET_TABLE_+0x30>
+    802032f8:	ffffd097          	auipc	ra,0xffffd
+    802032fc:	422080e7          	jalr	1058(ra) # 8020071a <release>
   return xticks;
 }
-    802032fe:	02049513          	slli	a0,s1,0x20
-    80203302:	9101                	srli	a0,a0,0x20
-    80203304:	60e2                	ld	ra,24(sp)
-    80203306:	6442                	ld	s0,16(sp)
-    80203308:	64a2                	ld	s1,8(sp)
-    8020330a:	6105                	addi	sp,sp,32
-    8020330c:	8082                	ret
+    80203300:	02049513          	slli	a0,s1,0x20
+    80203304:	9101                	srli	a0,a0,0x20
+    80203306:	60e2                	ld	ra,24(sp)
+    80203308:	6442                	ld	s0,16(sp)
+    8020330a:	64a2                	ld	s1,8(sp)
+    8020330c:	6105                	addi	sp,sp,32
+    8020330e:	8082                	ret
 
-000000008020330e <sys_trace>:
+0000000080203310 <sys_trace>:
 
 uint64
 sys_trace(void)
 {
-    8020330e:	1101                	addi	sp,sp,-32
-    80203310:	ec06                	sd	ra,24(sp)
-    80203312:	e822                	sd	s0,16(sp)
-    80203314:	1000                	addi	s0,sp,32
+    80203310:	1101                	addi	sp,sp,-32
+    80203312:	ec06                	sd	ra,24(sp)
+    80203314:	e822                	sd	s0,16(sp)
+    80203316:	1000                	addi	s0,sp,32
   int mask;
   if(argint(0, &mask) < 0) {
-    80203316:	fec40593          	addi	a1,s0,-20
-    8020331a:	4501                	li	a0,0
-    8020331c:	00000097          	auipc	ra,0x0
-    80203320:	b50080e7          	jalr	-1200(ra) # 80202e6c <argint>
+    80203318:	fec40593          	addi	a1,s0,-20
+    8020331c:	4501                	li	a0,0
+    8020331e:	00000097          	auipc	ra,0x0
+    80203322:	b50080e7          	jalr	-1200(ra) # 80202e6e <argint>
     return -1;
-    80203324:	57fd                	li	a5,-1
+    80203326:	57fd                	li	a5,-1
   if(argint(0, &mask) < 0) {
-    80203326:	00054b63          	bltz	a0,8020333c <sys_trace+0x2e>
+    80203328:	00054b63          	bltz	a0,8020333e <sys_trace+0x2e>
   }
   myproc()->tmask = mask;
-    8020332a:	ffffe097          	auipc	ra,0xffffe
-    8020332e:	712080e7          	jalr	1810(ra) # 80201a3c <myproc>
-    80203332:	fec42783          	lw	a5,-20(s0)
-    80203336:	16f52823          	sw	a5,368(a0)
+    8020332c:	ffffe097          	auipc	ra,0xffffe
+    80203330:	710080e7          	jalr	1808(ra) # 80201a3c <myproc>
+    80203334:	fec42783          	lw	a5,-20(s0)
+    80203338:	16f52823          	sw	a5,368(a0)
   return 0;
-    8020333a:	4781                	li	a5,0
-    8020333c:	853e                	mv	a0,a5
-    8020333e:	60e2                	ld	ra,24(sp)
-    80203340:	6442                	ld	s0,16(sp)
-    80203342:	6105                	addi	sp,sp,32
-    80203344:	8082                	ret
-
-0000000080203346 <binit>:
+    8020333c:	4781                	li	a5,0
+    8020333e:	853e                	mv	a0,a5
+    80203340:	60e2                	ld	ra,24(sp)
+    80203342:	6442                	ld	s0,16(sp)
+    80203344:	6105                	addi	sp,sp,32
+    80203346:	8082                	ret
+
+0000000080203348 <binit>:
   struct buf head;
 } bcache;
 
 void
 binit(void)
 {
-    80203346:	7139                	addi	sp,sp,-64
-    80203348:	fc06                	sd	ra,56(sp)
-    8020334a:	f822                	sd	s0,48(sp)
-    8020334c:	f426                	sd	s1,40(sp)
-    8020334e:	f04a                	sd	s2,32(sp)
-    80203350:	ec4e                	sd	s3,24(sp)
-    80203352:	e852                	sd	s4,16(sp)
-    80203354:	e456                	sd	s5,8(sp)
-    80203356:	0080                	addi	s0,sp,64
+    80203348:	7139                	addi	sp,sp,-64
+    8020334a:	fc06                	sd	ra,56(sp)
+    8020334c:	f822                	sd	s0,48(sp)
+    8020334e:	f426                	sd	s1,40(sp)
+    80203350:	f04a                	sd	s2,32(sp)
+    80203352:	ec4e                	sd	s3,24(sp)
+    80203354:	e852                	sd	s4,16(sp)
+    80203356:	e456                	sd	s5,8(sp)
+    80203358:	0080                	addi	s0,sp,64
   struct buf *b;
 
   initlock(&bcache.lock, "bcache");
-    80203358:	00006597          	auipc	a1,0x6
-    8020335c:	78858593          	addi	a1,a1,1928 # 80209ae0 <digits+0x760>
-    80203360:	00015517          	auipc	a0,0x15
-    80203364:	79050513          	addi	a0,a0,1936 # 80218af0 <bcache>
-    80203368:	ffffd097          	auipc	ra,0xffffd
-    8020336c:	31a080e7          	jalr	794(ra) # 80200682 <initlock>
+    8020335a:	00006597          	auipc	a1,0x6
+    8020335e:	78e58593          	addi	a1,a1,1934 # 80209ae8 <digits+0x768>
+    80203362:	00015517          	auipc	a0,0x15
+    80203366:	78e50513          	addi	a0,a0,1934 # 80218af0 <bcache>
+    8020336a:	ffffd097          	auipc	ra,0xffffd
+    8020336e:	318080e7          	jalr	792(ra) # 80200682 <initlock>
 
   // Create linked list of buffers
   bcache.head.prev = &bcache.head;
-    80203370:	00019797          	auipc	a5,0x19
-    80203374:	78078793          	addi	a5,a5,1920 # 8021caf0 <bcache+0x4000>
-    80203378:	0001a717          	auipc	a4,0x1a
-    8020337c:	de070713          	addi	a4,a4,-544 # 8021d158 <bcache+0x4668>
-    80203380:	6ae7b823          	sd	a4,1712(a5)
+    80203372:	00019797          	auipc	a5,0x19
+    80203376:	77e78793          	addi	a5,a5,1918 # 8021caf0 <bcache+0x4000>
+    8020337a:	0001a717          	auipc	a4,0x1a
+    8020337e:	dde70713          	addi	a4,a4,-546 # 8021d158 <bcache+0x4668>
+    80203382:	6ae7b823          	sd	a4,1712(a5)
   bcache.head.next = &bcache.head;
-    80203384:	6ae7bc23          	sd	a4,1720(a5)
+    80203386:	6ae7bc23          	sd	a4,1720(a5)
   for(b = bcache.buf; b < bcache.buf+NBUF; b++){
-    80203388:	00015497          	auipc	s1,0x15
-    8020338c:	78048493          	addi	s1,s1,1920 # 80218b08 <bcache+0x18>
+    8020338a:	00015497          	auipc	s1,0x15
+    8020338e:	77e48493          	addi	s1,s1,1918 # 80218b08 <bcache+0x18>
     b->refcnt = 0;
     b->sectorno = ~0;
-    80203390:	5a7d                	li	s4,-1
+    80203392:	5a7d                	li	s4,-1
     b->dev = ~0;
     b->next = bcache.head.next;
-    80203392:	893e                	mv	s2,a5
+    80203394:	893e                	mv	s2,a5
     b->prev = &bcache.head;
-    80203394:	89ba                	mv	s3,a4
+    80203396:	89ba                	mv	s3,a4
     initsleeplock(&b->lock, "buffer");
-    80203396:	00006a97          	auipc	s5,0x6
-    8020339a:	752a8a93          	addi	s5,s5,1874 # 80209ae8 <digits+0x768>
+    80203398:	00006a97          	auipc	s5,0x6
+    8020339c:	758a8a93          	addi	s5,s5,1880 # 80209af0 <digits+0x770>
     b->refcnt = 0;
-    8020339e:	0404a023          	sw	zero,64(s1)
+    802033a0:	0404a023          	sw	zero,64(s1)
     b->sectorno = ~0;
-    802033a2:	0144a623          	sw	s4,12(s1)
+    802033a4:	0144a623          	sw	s4,12(s1)
     b->dev = ~0;
-    802033a6:	0144a423          	sw	s4,8(s1)
+    802033a8:	0144a423          	sw	s4,8(s1)
     b->next = bcache.head.next;
-    802033aa:	6b893783          	ld	a5,1720(s2)
-    802033ae:	e8bc                	sd	a5,80(s1)
+    802033ac:	6b893783          	ld	a5,1720(s2)
+    802033b0:	e8bc                	sd	a5,80(s1)
     b->prev = &bcache.head;
-    802033b0:	0534b423          	sd	s3,72(s1)
+    802033b2:	0534b423          	sd	s3,72(s1)
     initsleeplock(&b->lock, "buffer");
-    802033b4:	85d6                	mv	a1,s5
-    802033b6:	01048513          	addi	a0,s1,16
-    802033ba:	00000097          	auipc	ra,0x0
-    802033be:	26e080e7          	jalr	622(ra) # 80203628 <initsleeplock>
+    802033b6:	85d6                	mv	a1,s5
+    802033b8:	01048513          	addi	a0,s1,16
+    802033bc:	00000097          	auipc	ra,0x0
+    802033c0:	26e080e7          	jalr	622(ra) # 8020362a <initsleeplock>
     bcache.head.next->prev = b;
-    802033c2:	6b893783          	ld	a5,1720(s2)
-    802033c6:	e7a4                	sd	s1,72(a5)
+    802033c4:	6b893783          	ld	a5,1720(s2)
+    802033c8:	e7a4                	sd	s1,72(a5)
     bcache.head.next = b;
-    802033c8:	6a993c23          	sd	s1,1720(s2)
+    802033ca:	6a993c23          	sd	s1,1720(s2)
   for(b = bcache.buf; b < bcache.buf+NBUF; b++){
-    802033cc:	25848493          	addi	s1,s1,600
-    802033d0:	fd3497e3          	bne	s1,s3,8020339e <binit+0x58>
+    802033ce:	25848493          	addi	s1,s1,600
+    802033d2:	fd3497e3          	bne	s1,s3,802033a0 <binit+0x58>
   }
   #ifdef DEBUG
   printf("binit\n");
   #endif
 }
-    802033d4:	70e2                	ld	ra,56(sp)
-    802033d6:	7442                	ld	s0,48(sp)
-    802033d8:	74a2                	ld	s1,40(sp)
-    802033da:	7902                	ld	s2,32(sp)
-    802033dc:	69e2                	ld	s3,24(sp)
-    802033de:	6a42                	ld	s4,16(sp)
-    802033e0:	6aa2                	ld	s5,8(sp)
-    802033e2:	6121                	addi	sp,sp,64
-    802033e4:	8082                	ret
-
-00000000802033e6 <bread>:
+    802033d6:	70e2                	ld	ra,56(sp)
+    802033d8:	7442                	ld	s0,48(sp)
+    802033da:	74a2                	ld	s1,40(sp)
+    802033dc:	7902                	ld	s2,32(sp)
+    802033de:	69e2                	ld	s3,24(sp)
+    802033e0:	6a42                	ld	s4,16(sp)
+    802033e2:	6aa2                	ld	s5,8(sp)
+    802033e4:	6121                	addi	sp,sp,64
+    802033e6:	8082                	ret
+
+00000000802033e8 <bread>:
   panic("bget: no buffers");
 }
 
 // Return a locked buf with the contents of the indicated block.
 struct buf* 
 bread(uint dev, uint sectorno) {
-    802033e6:	7179                	addi	sp,sp,-48
-    802033e8:	f406                	sd	ra,40(sp)
-    802033ea:	f022                	sd	s0,32(sp)
-    802033ec:	ec26                	sd	s1,24(sp)
-    802033ee:	e84a                	sd	s2,16(sp)
-    802033f0:	e44e                	sd	s3,8(sp)
-    802033f2:	1800                	addi	s0,sp,48
-    802033f4:	892a                	mv	s2,a0
-    802033f6:	89ae                	mv	s3,a1
+    802033e8:	7179                	addi	sp,sp,-48
+    802033ea:	f406                	sd	ra,40(sp)
+    802033ec:	f022                	sd	s0,32(sp)
+    802033ee:	ec26                	sd	s1,24(sp)
+    802033f0:	e84a                	sd	s2,16(sp)
+    802033f2:	e44e                	sd	s3,8(sp)
+    802033f4:	1800                	addi	s0,sp,48
+    802033f6:	892a                	mv	s2,a0
+    802033f8:	89ae                	mv	s3,a1
   acquire(&bcache.lock);
-    802033f8:	00015517          	auipc	a0,0x15
-    802033fc:	6f850513          	addi	a0,a0,1784 # 80218af0 <bcache>
-    80203400:	ffffd097          	auipc	ra,0xffffd
-    80203404:	2c6080e7          	jalr	710(ra) # 802006c6 <acquire>
+    802033fa:	00015517          	auipc	a0,0x15
+    802033fe:	6f650513          	addi	a0,a0,1782 # 80218af0 <bcache>
+    80203402:	ffffd097          	auipc	ra,0xffffd
+    80203406:	2c4080e7          	jalr	708(ra) # 802006c6 <acquire>
   for(b = bcache.head.next; b != &bcache.head; b = b->next){
-    80203408:	0001a497          	auipc	s1,0x1a
-    8020340c:	da04b483          	ld	s1,-608(s1) # 8021d1a8 <bcache+0x46b8>
-    80203410:	0001a797          	auipc	a5,0x1a
-    80203414:	d4878793          	addi	a5,a5,-696 # 8021d158 <bcache+0x4668>
-    80203418:	02f48f63          	beq	s1,a5,80203456 <bread+0x70>
-    8020341c:	873e                	mv	a4,a5
-    8020341e:	a021                	j	80203426 <bread+0x40>
-    80203420:	68a4                	ld	s1,80(s1)
-    80203422:	02e48a63          	beq	s1,a4,80203456 <bread+0x70>
+    8020340a:	0001a497          	auipc	s1,0x1a
+    8020340e:	d9e4b483          	ld	s1,-610(s1) # 8021d1a8 <bcache+0x46b8>
+    80203412:	0001a797          	auipc	a5,0x1a
+    80203416:	d4678793          	addi	a5,a5,-698 # 8021d158 <bcache+0x4668>
+    8020341a:	02f48f63          	beq	s1,a5,80203458 <bread+0x70>
+    8020341e:	873e                	mv	a4,a5
+    80203420:	a021                	j	80203428 <bread+0x40>
+    80203422:	68a4                	ld	s1,80(s1)
+    80203424:	02e48a63          	beq	s1,a4,80203458 <bread+0x70>
     if(b->dev == dev && b->sectorno == sectorno){
-    80203426:	449c                	lw	a5,8(s1)
-    80203428:	ff279ce3          	bne	a5,s2,80203420 <bread+0x3a>
-    8020342c:	44dc                	lw	a5,12(s1)
-    8020342e:	ff3799e3          	bne	a5,s3,80203420 <bread+0x3a>
+    80203428:	449c                	lw	a5,8(s1)
+    8020342a:	ff279ce3          	bne	a5,s2,80203422 <bread+0x3a>
+    8020342e:	44dc                	lw	a5,12(s1)
+    80203430:	ff3799e3          	bne	a5,s3,80203422 <bread+0x3a>
       b->refcnt++;
-    80203432:	40bc                	lw	a5,64(s1)
-    80203434:	2785                	addiw	a5,a5,1
-    80203436:	c0bc                	sw	a5,64(s1)
+    80203434:	40bc                	lw	a5,64(s1)
+    80203436:	2785                	addiw	a5,a5,1
+    80203438:	c0bc                	sw	a5,64(s1)
       release(&bcache.lock);
-    80203438:	00015517          	auipc	a0,0x15
-    8020343c:	6b850513          	addi	a0,a0,1720 # 80218af0 <bcache>
-    80203440:	ffffd097          	auipc	ra,0xffffd
-    80203444:	2da080e7          	jalr	730(ra) # 8020071a <release>
+    8020343a:	00015517          	auipc	a0,0x15
+    8020343e:	6b650513          	addi	a0,a0,1718 # 80218af0 <bcache>
+    80203442:	ffffd097          	auipc	ra,0xffffd
+    80203446:	2d8080e7          	jalr	728(ra) # 8020071a <release>
       acquiresleep(&b->lock);
-    80203448:	01048513          	addi	a0,s1,16
-    8020344c:	00000097          	auipc	ra,0x0
-    80203450:	216080e7          	jalr	534(ra) # 80203662 <acquiresleep>
+    8020344a:	01048513          	addi	a0,s1,16
+    8020344e:	00000097          	auipc	ra,0x0
+    80203452:	216080e7          	jalr	534(ra) # 80203664 <acquiresleep>
       return b;
-    80203454:	a8b9                	j	802034b2 <bread+0xcc>
+    80203456:	a8b9                	j	802034b4 <bread+0xcc>
   for(b = bcache.head.prev; b != &bcache.head; b = b->prev){
-    80203456:	0001a497          	auipc	s1,0x1a
-    8020345a:	d4a4b483          	ld	s1,-694(s1) # 8021d1a0 <bcache+0x46b0>
-    8020345e:	0001a797          	auipc	a5,0x1a
-    80203462:	cfa78793          	addi	a5,a5,-774 # 8021d158 <bcache+0x4668>
-    80203466:	00f48863          	beq	s1,a5,80203476 <bread+0x90>
-    8020346a:	873e                	mv	a4,a5
+    80203458:	0001a497          	auipc	s1,0x1a
+    8020345c:	d484b483          	ld	s1,-696(s1) # 8021d1a0 <bcache+0x46b0>
+    80203460:	0001a797          	auipc	a5,0x1a
+    80203464:	cf878793          	addi	a5,a5,-776 # 8021d158 <bcache+0x4668>
+    80203468:	00f48863          	beq	s1,a5,80203478 <bread+0x90>
+    8020346c:	873e                	mv	a4,a5
     if(b->refcnt == 0) {
-    8020346c:	40bc                	lw	a5,64(s1)
-    8020346e:	cf81                	beqz	a5,80203486 <bread+0xa0>
+    8020346e:	40bc                	lw	a5,64(s1)
+    80203470:	cf81                	beqz	a5,80203488 <bread+0xa0>
   for(b = bcache.head.prev; b != &bcache.head; b = b->prev){
-    80203470:	64a4                	ld	s1,72(s1)
-    80203472:	fee49de3          	bne	s1,a4,8020346c <bread+0x86>
+    80203472:	64a4                	ld	s1,72(s1)
+    80203474:	fee49de3          	bne	s1,a4,8020346e <bread+0x86>
   panic("bget: no buffers");
-    80203476:	00006517          	auipc	a0,0x6
-    8020347a:	67a50513          	addi	a0,a0,1658 # 80209af0 <digits+0x770>
-    8020347e:	ffffd097          	auipc	ra,0xffffd
-    80203482:	cc6080e7          	jalr	-826(ra) # 80200144 <panic>
+    80203478:	00006517          	auipc	a0,0x6
+    8020347c:	68050513          	addi	a0,a0,1664 # 80209af8 <digits+0x778>
+    80203480:	ffffd097          	auipc	ra,0xffffd
+    80203484:	cc4080e7          	jalr	-828(ra) # 80200144 <panic>
       b->dev = dev;
-    80203486:	0124a423          	sw	s2,8(s1)
+    80203488:	0124a423          	sw	s2,8(s1)
       b->sectorno = sectorno;
-    8020348a:	0134a623          	sw	s3,12(s1)
+    8020348c:	0134a623          	sw	s3,12(s1)
       b->valid = 0;
-    8020348e:	0004a023          	sw	zero,0(s1)
+    80203490:	0004a023          	sw	zero,0(s1)
       b->refcnt = 1;
-    80203492:	4785                	li	a5,1
-    80203494:	c0bc                	sw	a5,64(s1)
+    80203494:	4785                	li	a5,1
+    80203496:	c0bc                	sw	a5,64(s1)
       release(&bcache.lock);
-    80203496:	00015517          	auipc	a0,0x15
-    8020349a:	65a50513          	addi	a0,a0,1626 # 80218af0 <bcache>
-    8020349e:	ffffd097          	auipc	ra,0xffffd
-    802034a2:	27c080e7          	jalr	636(ra) # 8020071a <release>
+    80203498:	00015517          	auipc	a0,0x15
+    8020349c:	65850513          	addi	a0,a0,1624 # 80218af0 <bcache>
+    802034a0:	ffffd097          	auipc	ra,0xffffd
+    802034a4:	27a080e7          	jalr	634(ra) # 8020071a <release>
       acquiresleep(&b->lock);
-    802034a6:	01048513          	addi	a0,s1,16
-    802034aa:	00000097          	auipc	ra,0x0
-    802034ae:	1b8080e7          	jalr	440(ra) # 80203662 <acquiresleep>
+    802034a8:	01048513          	addi	a0,s1,16
+    802034ac:	00000097          	auipc	ra,0x0
+    802034b0:	1b8080e7          	jalr	440(ra) # 80203664 <acquiresleep>
   struct buf *b;
 
   b = bget(dev, sectorno);
   if (!b->valid) {
-    802034b2:	409c                	lw	a5,0(s1)
-    802034b4:	cb89                	beqz	a5,802034c6 <bread+0xe0>
+    802034b4:	409c                	lw	a5,0(s1)
+    802034b6:	cb89                	beqz	a5,802034c8 <bread+0xe0>
     disk_read(b);
     b->valid = 1;
   }
 
   return b;
 }
-    802034b6:	8526                	mv	a0,s1
-    802034b8:	70a2                	ld	ra,40(sp)
-    802034ba:	7402                	ld	s0,32(sp)
-    802034bc:	64e2                	ld	s1,24(sp)
-    802034be:	6942                	ld	s2,16(sp)
-    802034c0:	69a2                	ld	s3,8(sp)
-    802034c2:	6145                	addi	sp,sp,48
-    802034c4:	8082                	ret
+    802034b8:	8526                	mv	a0,s1
+    802034ba:	70a2                	ld	ra,40(sp)
+    802034bc:	7402                	ld	s0,32(sp)
+    802034be:	64e2                	ld	s1,24(sp)
+    802034c0:	6942                	ld	s2,16(sp)
+    802034c2:	69a2                	ld	s3,8(sp)
+    802034c4:	6145                	addi	sp,sp,48
+    802034c6:	8082                	ret
     disk_read(b);
-    802034c6:	8526                	mv	a0,s1
-    802034c8:	00002097          	auipc	ra,0x2
-    802034cc:	baa080e7          	jalr	-1110(ra) # 80205072 <disk_read>
+    802034c8:	8526                	mv	a0,s1
+    802034ca:	00002097          	auipc	ra,0x2
+    802034ce:	bb8080e7          	jalr	-1096(ra) # 80205082 <disk_read>
     b->valid = 1;
-    802034d0:	4785                	li	a5,1
-    802034d2:	c09c                	sw	a5,0(s1)
+    802034d2:	4785                	li	a5,1
+    802034d4:	c09c                	sw	a5,0(s1)
   return b;
-    802034d4:	b7cd                	j	802034b6 <bread+0xd0>
+    802034d6:	b7cd                	j	802034b8 <bread+0xd0>
 
-00000000802034d6 <bwrite>:
+00000000802034d8 <bwrite>:
 
 // Write b's contents to disk.  Must be locked.
 void 
 bwrite(struct buf *b) {
-    802034d6:	1101                	addi	sp,sp,-32
-    802034d8:	ec06                	sd	ra,24(sp)
-    802034da:	e822                	sd	s0,16(sp)
-    802034dc:	e426                	sd	s1,8(sp)
-    802034de:	1000                	addi	s0,sp,32
-    802034e0:	84aa                	mv	s1,a0
+    802034d8:	1101                	addi	sp,sp,-32
+    802034da:	ec06                	sd	ra,24(sp)
+    802034dc:	e822                	sd	s0,16(sp)
+    802034de:	e426                	sd	s1,8(sp)
+    802034e0:	1000                	addi	s0,sp,32
+    802034e2:	84aa                	mv	s1,a0
   if(!holdingsleep(&b->lock))
-    802034e2:	0541                	addi	a0,a0,16
-    802034e4:	00000097          	auipc	ra,0x0
-    802034e8:	218080e7          	jalr	536(ra) # 802036fc <holdingsleep>
-    802034ec:	c919                	beqz	a0,80203502 <bwrite+0x2c>
+    802034e4:	0541                	addi	a0,a0,16
+    802034e6:	00000097          	auipc	ra,0x0
+    802034ea:	218080e7          	jalr	536(ra) # 802036fe <holdingsleep>
+    802034ee:	c919                	beqz	a0,80203504 <bwrite+0x2c>
     panic("bwrite");
   disk_write(b);
-    802034ee:	8526                	mv	a0,s1
-    802034f0:	00002097          	auipc	ra,0x2
-    802034f4:	b9c080e7          	jalr	-1124(ra) # 8020508c <disk_write>
-}
-    802034f8:	60e2                	ld	ra,24(sp)
-    802034fa:	6442                	ld	s0,16(sp)
-    802034fc:	64a2                	ld	s1,8(sp)
-    802034fe:	6105                	addi	sp,sp,32
-    80203500:	8082                	ret
+    802034f0:	8526                	mv	a0,s1
+    802034f2:	00002097          	auipc	ra,0x2
+    802034f6:	baa080e7          	jalr	-1110(ra) # 8020509c <disk_write>
+}
+    802034fa:	60e2                	ld	ra,24(sp)
+    802034fc:	6442                	ld	s0,16(sp)
+    802034fe:	64a2                	ld	s1,8(sp)
+    80203500:	6105                	addi	sp,sp,32
+    80203502:	8082                	ret
     panic("bwrite");
-    80203502:	00006517          	auipc	a0,0x6
-    80203506:	60650513          	addi	a0,a0,1542 # 80209b08 <digits+0x788>
-    8020350a:	ffffd097          	auipc	ra,0xffffd
-    8020350e:	c3a080e7          	jalr	-966(ra) # 80200144 <panic>
+    80203504:	00006517          	auipc	a0,0x6
+    80203508:	60c50513          	addi	a0,a0,1548 # 80209b10 <digits+0x790>
+    8020350c:	ffffd097          	auipc	ra,0xffffd
+    80203510:	c38080e7          	jalr	-968(ra) # 80200144 <panic>
 
-0000000080203512 <brelse>:
+0000000080203514 <brelse>:
 
 // Release a locked buffer.
 // Move to the head of the most-recently-used list.
 void
 brelse(struct buf *b)
 {
-    80203512:	1101                	addi	sp,sp,-32
-    80203514:	ec06                	sd	ra,24(sp)
-    80203516:	e822                	sd	s0,16(sp)
-    80203518:	e426                	sd	s1,8(sp)
-    8020351a:	e04a                	sd	s2,0(sp)
-    8020351c:	1000                	addi	s0,sp,32
-    8020351e:	84aa                	mv	s1,a0
+    80203514:	1101                	addi	sp,sp,-32
+    80203516:	ec06                	sd	ra,24(sp)
+    80203518:	e822                	sd	s0,16(sp)
+    8020351a:	e426                	sd	s1,8(sp)
+    8020351c:	e04a                	sd	s2,0(sp)
+    8020351e:	1000                	addi	s0,sp,32
+    80203520:	84aa                	mv	s1,a0
   if(!holdingsleep(&b->lock))
-    80203520:	01050913          	addi	s2,a0,16
-    80203524:	854a                	mv	a0,s2
-    80203526:	00000097          	auipc	ra,0x0
-    8020352a:	1d6080e7          	jalr	470(ra) # 802036fc <holdingsleep>
-    8020352e:	c92d                	beqz	a0,802035a0 <brelse+0x8e>
+    80203522:	01050913          	addi	s2,a0,16
+    80203526:	854a                	mv	a0,s2
+    80203528:	00000097          	auipc	ra,0x0
+    8020352c:	1d6080e7          	jalr	470(ra) # 802036fe <holdingsleep>
+    80203530:	c92d                	beqz	a0,802035a2 <brelse+0x8e>
     panic("brelse");
 
   releasesleep(&b->lock);
-    80203530:	854a                	mv	a0,s2
-    80203532:	00000097          	auipc	ra,0x0
-    80203536:	186080e7          	jalr	390(ra) # 802036b8 <releasesleep>
+    80203532:	854a                	mv	a0,s2
+    80203534:	00000097          	auipc	ra,0x0
+    80203538:	186080e7          	jalr	390(ra) # 802036ba <releasesleep>
 
   acquire(&bcache.lock);
-    8020353a:	00015517          	auipc	a0,0x15
-    8020353e:	5b650513          	addi	a0,a0,1462 # 80218af0 <bcache>
-    80203542:	ffffd097          	auipc	ra,0xffffd
-    80203546:	184080e7          	jalr	388(ra) # 802006c6 <acquire>
+    8020353c:	00015517          	auipc	a0,0x15
+    80203540:	5b450513          	addi	a0,a0,1460 # 80218af0 <bcache>
+    80203544:	ffffd097          	auipc	ra,0xffffd
+    80203548:	182080e7          	jalr	386(ra) # 802006c6 <acquire>
   b->refcnt--;
-    8020354a:	40bc                	lw	a5,64(s1)
-    8020354c:	37fd                	addiw	a5,a5,-1
-    8020354e:	0007871b          	sext.w	a4,a5
-    80203552:	c0bc                	sw	a5,64(s1)
+    8020354c:	40bc                	lw	a5,64(s1)
+    8020354e:	37fd                	addiw	a5,a5,-1
+    80203550:	0007871b          	sext.w	a4,a5
+    80203554:	c0bc                	sw	a5,64(s1)
   if (b->refcnt == 0) {
-    80203554:	eb05                	bnez	a4,80203584 <brelse+0x72>
+    80203556:	eb05                	bnez	a4,80203586 <brelse+0x72>
     // no one is waiting for it.
     b->next->prev = b->prev;
-    80203556:	68bc                	ld	a5,80(s1)
-    80203558:	64b8                	ld	a4,72(s1)
-    8020355a:	e7b8                	sd	a4,72(a5)
+    80203558:	68bc                	ld	a5,80(s1)
+    8020355a:	64b8                	ld	a4,72(s1)
+    8020355c:	e7b8                	sd	a4,72(a5)
     b->prev->next = b->next;
-    8020355c:	64bc                	ld	a5,72(s1)
-    8020355e:	68b8                	ld	a4,80(s1)
-    80203560:	ebb8                	sd	a4,80(a5)
+    8020355e:	64bc                	ld	a5,72(s1)
+    80203560:	68b8                	ld	a4,80(s1)
+    80203562:	ebb8                	sd	a4,80(a5)
     b->next = bcache.head.next;
-    80203562:	00019797          	auipc	a5,0x19
-    80203566:	58e78793          	addi	a5,a5,1422 # 8021caf0 <bcache+0x4000>
-    8020356a:	6b87b703          	ld	a4,1720(a5)
-    8020356e:	e8b8                	sd	a4,80(s1)
+    80203564:	00019797          	auipc	a5,0x19
+    80203568:	58c78793          	addi	a5,a5,1420 # 8021caf0 <bcache+0x4000>
+    8020356c:	6b87b703          	ld	a4,1720(a5)
+    80203570:	e8b8                	sd	a4,80(s1)
     b->prev = &bcache.head;
-    80203570:	0001a717          	auipc	a4,0x1a
-    80203574:	be870713          	addi	a4,a4,-1048 # 8021d158 <bcache+0x4668>
-    80203578:	e4b8                	sd	a4,72(s1)
+    80203572:	0001a717          	auipc	a4,0x1a
+    80203576:	be670713          	addi	a4,a4,-1050 # 8021d158 <bcache+0x4668>
+    8020357a:	e4b8                	sd	a4,72(s1)
     bcache.head.next->prev = b;
-    8020357a:	6b87b703          	ld	a4,1720(a5)
-    8020357e:	e724                	sd	s1,72(a4)
+    8020357c:	6b87b703          	ld	a4,1720(a5)
+    80203580:	e724                	sd	s1,72(a4)
     bcache.head.next = b;
-    80203580:	6a97bc23          	sd	s1,1720(a5)
+    80203582:	6a97bc23          	sd	s1,1720(a5)
   }
   
   release(&bcache.lock);
-    80203584:	00015517          	auipc	a0,0x15
-    80203588:	56c50513          	addi	a0,a0,1388 # 80218af0 <bcache>
-    8020358c:	ffffd097          	auipc	ra,0xffffd
-    80203590:	18e080e7          	jalr	398(ra) # 8020071a <release>
-}
-    80203594:	60e2                	ld	ra,24(sp)
-    80203596:	6442                	ld	s0,16(sp)
-    80203598:	64a2                	ld	s1,8(sp)
-    8020359a:	6902                	ld	s2,0(sp)
-    8020359c:	6105                	addi	sp,sp,32
-    8020359e:	8082                	ret
+    80203586:	00015517          	auipc	a0,0x15
+    8020358a:	56a50513          	addi	a0,a0,1386 # 80218af0 <bcache>
+    8020358e:	ffffd097          	auipc	ra,0xffffd
+    80203592:	18c080e7          	jalr	396(ra) # 8020071a <release>
+}
+    80203596:	60e2                	ld	ra,24(sp)
+    80203598:	6442                	ld	s0,16(sp)
+    8020359a:	64a2                	ld	s1,8(sp)
+    8020359c:	6902                	ld	s2,0(sp)
+    8020359e:	6105                	addi	sp,sp,32
+    802035a0:	8082                	ret
     panic("brelse");
-    802035a0:	00006517          	auipc	a0,0x6
-    802035a4:	57050513          	addi	a0,a0,1392 # 80209b10 <digits+0x790>
-    802035a8:	ffffd097          	auipc	ra,0xffffd
-    802035ac:	b9c080e7          	jalr	-1124(ra) # 80200144 <panic>
+    802035a2:	00006517          	auipc	a0,0x6
+    802035a6:	57650513          	addi	a0,a0,1398 # 80209b18 <digits+0x798>
+    802035aa:	ffffd097          	auipc	ra,0xffffd
+    802035ae:	b9a080e7          	jalr	-1126(ra) # 80200144 <panic>
 
-00000000802035b0 <bpin>:
+00000000802035b2 <bpin>:
 
 void
 bpin(struct buf *b) {
-    802035b0:	1101                	addi	sp,sp,-32
-    802035b2:	ec06                	sd	ra,24(sp)
-    802035b4:	e822                	sd	s0,16(sp)
-    802035b6:	e426                	sd	s1,8(sp)
-    802035b8:	1000                	addi	s0,sp,32
-    802035ba:	84aa                	mv	s1,a0
+    802035b2:	1101                	addi	sp,sp,-32
+    802035b4:	ec06                	sd	ra,24(sp)
+    802035b6:	e822                	sd	s0,16(sp)
+    802035b8:	e426                	sd	s1,8(sp)
+    802035ba:	1000                	addi	s0,sp,32
+    802035bc:	84aa                	mv	s1,a0
   acquire(&bcache.lock);
-    802035bc:	00015517          	auipc	a0,0x15
-    802035c0:	53450513          	addi	a0,a0,1332 # 80218af0 <bcache>
-    802035c4:	ffffd097          	auipc	ra,0xffffd
-    802035c8:	102080e7          	jalr	258(ra) # 802006c6 <acquire>
+    802035be:	00015517          	auipc	a0,0x15
+    802035c2:	53250513          	addi	a0,a0,1330 # 80218af0 <bcache>
+    802035c6:	ffffd097          	auipc	ra,0xffffd
+    802035ca:	100080e7          	jalr	256(ra) # 802006c6 <acquire>
   b->refcnt++;
-    802035cc:	40bc                	lw	a5,64(s1)
-    802035ce:	2785                	addiw	a5,a5,1
-    802035d0:	c0bc                	sw	a5,64(s1)
+    802035ce:	40bc                	lw	a5,64(s1)
+    802035d0:	2785                	addiw	a5,a5,1
+    802035d2:	c0bc                	sw	a5,64(s1)
   release(&bcache.lock);
-    802035d2:	00015517          	auipc	a0,0x15
-    802035d6:	51e50513          	addi	a0,a0,1310 # 80218af0 <bcache>
-    802035da:	ffffd097          	auipc	ra,0xffffd
-    802035de:	140080e7          	jalr	320(ra) # 8020071a <release>
+    802035d4:	00015517          	auipc	a0,0x15
+    802035d8:	51c50513          	addi	a0,a0,1308 # 80218af0 <bcache>
+    802035dc:	ffffd097          	auipc	ra,0xffffd
+    802035e0:	13e080e7          	jalr	318(ra) # 8020071a <release>
 }
-    802035e2:	60e2                	ld	ra,24(sp)
-    802035e4:	6442                	ld	s0,16(sp)
-    802035e6:	64a2                	ld	s1,8(sp)
-    802035e8:	6105                	addi	sp,sp,32
-    802035ea:	8082                	ret
+    802035e4:	60e2                	ld	ra,24(sp)
+    802035e6:	6442                	ld	s0,16(sp)
+    802035e8:	64a2                	ld	s1,8(sp)
+    802035ea:	6105                	addi	sp,sp,32
+    802035ec:	8082                	ret
 
-00000000802035ec <bunpin>:
+00000000802035ee <bunpin>:
 
 void
 bunpin(struct buf *b) {
-    802035ec:	1101                	addi	sp,sp,-32
-    802035ee:	ec06                	sd	ra,24(sp)
-    802035f0:	e822                	sd	s0,16(sp)
-    802035f2:	e426                	sd	s1,8(sp)
-    802035f4:	1000                	addi	s0,sp,32
-    802035f6:	84aa                	mv	s1,a0
+    802035ee:	1101                	addi	sp,sp,-32
+    802035f0:	ec06                	sd	ra,24(sp)
+    802035f2:	e822                	sd	s0,16(sp)
+    802035f4:	e426                	sd	s1,8(sp)
+    802035f6:	1000                	addi	s0,sp,32
+    802035f8:	84aa                	mv	s1,a0
   acquire(&bcache.lock);
-    802035f8:	00015517          	auipc	a0,0x15
-    802035fc:	4f850513          	addi	a0,a0,1272 # 80218af0 <bcache>
-    80203600:	ffffd097          	auipc	ra,0xffffd
-    80203604:	0c6080e7          	jalr	198(ra) # 802006c6 <acquire>
+    802035fa:	00015517          	auipc	a0,0x15
+    802035fe:	4f650513          	addi	a0,a0,1270 # 80218af0 <bcache>
+    80203602:	ffffd097          	auipc	ra,0xffffd
+    80203606:	0c4080e7          	jalr	196(ra) # 802006c6 <acquire>
   b->refcnt--;
-    80203608:	40bc                	lw	a5,64(s1)
-    8020360a:	37fd                	addiw	a5,a5,-1
-    8020360c:	c0bc                	sw	a5,64(s1)
+    8020360a:	40bc                	lw	a5,64(s1)
+    8020360c:	37fd                	addiw	a5,a5,-1
+    8020360e:	c0bc                	sw	a5,64(s1)
   release(&bcache.lock);
-    8020360e:	00015517          	auipc	a0,0x15
-    80203612:	4e250513          	addi	a0,a0,1250 # 80218af0 <bcache>
-    80203616:	ffffd097          	auipc	ra,0xffffd
-    8020361a:	104080e7          	jalr	260(ra) # 8020071a <release>
-}
-    8020361e:	60e2                	ld	ra,24(sp)
-    80203620:	6442                	ld	s0,16(sp)
-    80203622:	64a2                	ld	s1,8(sp)
-    80203624:	6105                	addi	sp,sp,32
-    80203626:	8082                	ret
-
-0000000080203628 <initsleeplock>:
+    80203610:	00015517          	auipc	a0,0x15
+    80203614:	4e050513          	addi	a0,a0,1248 # 80218af0 <bcache>
+    80203618:	ffffd097          	auipc	ra,0xffffd
+    8020361c:	102080e7          	jalr	258(ra) # 8020071a <release>
+}
+    80203620:	60e2                	ld	ra,24(sp)
+    80203622:	6442                	ld	s0,16(sp)
+    80203624:	64a2                	ld	s1,8(sp)
+    80203626:	6105                	addi	sp,sp,32
+    80203628:	8082                	ret
+
+000000008020362a <initsleeplock>:
 #include "include/proc.h"
 #include "include/sleeplock.h"
 
 void
 initsleeplock(struct sleeplock *lk, char *name)
 {
-    80203628:	1101                	addi	sp,sp,-32
-    8020362a:	ec06                	sd	ra,24(sp)
-    8020362c:	e822                	sd	s0,16(sp)
-    8020362e:	e426                	sd	s1,8(sp)
-    80203630:	e04a                	sd	s2,0(sp)
-    80203632:	1000                	addi	s0,sp,32
-    80203634:	84aa                	mv	s1,a0
-    80203636:	892e                	mv	s2,a1
+    8020362a:	1101                	addi	sp,sp,-32
+    8020362c:	ec06                	sd	ra,24(sp)
+    8020362e:	e822                	sd	s0,16(sp)
+    80203630:	e426                	sd	s1,8(sp)
+    80203632:	e04a                	sd	s2,0(sp)
+    80203634:	1000                	addi	s0,sp,32
+    80203636:	84aa                	mv	s1,a0
+    80203638:	892e                	mv	s2,a1
   initlock(&lk->lk, "sleep lock");
-    80203638:	00006597          	auipc	a1,0x6
-    8020363c:	4e058593          	addi	a1,a1,1248 # 80209b18 <digits+0x798>
-    80203640:	0521                	addi	a0,a0,8
-    80203642:	ffffd097          	auipc	ra,0xffffd
-    80203646:	040080e7          	jalr	64(ra) # 80200682 <initlock>
+    8020363a:	00006597          	auipc	a1,0x6
+    8020363e:	4e658593          	addi	a1,a1,1254 # 80209b20 <digits+0x7a0>
+    80203642:	0521                	addi	a0,a0,8
+    80203644:	ffffd097          	auipc	ra,0xffffd
+    80203648:	03e080e7          	jalr	62(ra) # 80200682 <initlock>
   lk->name = name;
-    8020364a:	0324b023          	sd	s2,32(s1)
+    8020364c:	0324b023          	sd	s2,32(s1)
   lk->locked = 0;
-    8020364e:	0004a023          	sw	zero,0(s1)
+    80203650:	0004a023          	sw	zero,0(s1)
   lk->pid = 0;
-    80203652:	0204a423          	sw	zero,40(s1)
+    80203654:	0204a423          	sw	zero,40(s1)
 }
-    80203656:	60e2                	ld	ra,24(sp)
-    80203658:	6442                	ld	s0,16(sp)
-    8020365a:	64a2                	ld	s1,8(sp)
-    8020365c:	6902                	ld	s2,0(sp)
-    8020365e:	6105                	addi	sp,sp,32
-    80203660:	8082                	ret
+    80203658:	60e2                	ld	ra,24(sp)
+    8020365a:	6442                	ld	s0,16(sp)
+    8020365c:	64a2                	ld	s1,8(sp)
+    8020365e:	6902                	ld	s2,0(sp)
+    80203660:	6105                	addi	sp,sp,32
+    80203662:	8082                	ret
 
-0000000080203662 <acquiresleep>:
+0000000080203664 <acquiresleep>:
 
 void
 acquiresleep(struct sleeplock *lk)
 {
-    80203662:	1101                	addi	sp,sp,-32
-    80203664:	ec06                	sd	ra,24(sp)
-    80203666:	e822                	sd	s0,16(sp)
-    80203668:	e426                	sd	s1,8(sp)
-    8020366a:	e04a                	sd	s2,0(sp)
-    8020366c:	1000                	addi	s0,sp,32
-    8020366e:	84aa                	mv	s1,a0
+    80203664:	1101                	addi	sp,sp,-32
+    80203666:	ec06                	sd	ra,24(sp)
+    80203668:	e822                	sd	s0,16(sp)
+    8020366a:	e426                	sd	s1,8(sp)
+    8020366c:	e04a                	sd	s2,0(sp)
+    8020366e:	1000                	addi	s0,sp,32
+    80203670:	84aa                	mv	s1,a0
   acquire(&lk->lk);
-    80203670:	00850913          	addi	s2,a0,8
-    80203674:	854a                	mv	a0,s2
-    80203676:	ffffd097          	auipc	ra,0xffffd
-    8020367a:	050080e7          	jalr	80(ra) # 802006c6 <acquire>
+    80203672:	00850913          	addi	s2,a0,8
+    80203676:	854a                	mv	a0,s2
+    80203678:	ffffd097          	auipc	ra,0xffffd
+    8020367c:	04e080e7          	jalr	78(ra) # 802006c6 <acquire>
   while (lk->locked) {
-    8020367e:	409c                	lw	a5,0(s1)
-    80203680:	cb89                	beqz	a5,80203692 <acquiresleep+0x30>
+    80203680:	409c                	lw	a5,0(s1)
+    80203682:	cb89                	beqz	a5,80203694 <acquiresleep+0x30>
     sleep(lk, &lk->lk);
-    80203682:	85ca                	mv	a1,s2
-    80203684:	8526                	mv	a0,s1
-    80203686:	fffff097          	auipc	ra,0xfffff
-    8020368a:	c36080e7          	jalr	-970(ra) # 802022bc <sleep>
+    80203684:	85ca                	mv	a1,s2
+    80203686:	8526                	mv	a0,s1
+    80203688:	fffff097          	auipc	ra,0xfffff
+    8020368c:	c34080e7          	jalr	-972(ra) # 802022bc <sleep>
   while (lk->locked) {
-    8020368e:	409c                	lw	a5,0(s1)
-    80203690:	fbed                	bnez	a5,80203682 <acquiresleep+0x20>
+    80203690:	409c                	lw	a5,0(s1)
+    80203692:	fbed                	bnez	a5,80203684 <acquiresleep+0x20>
   }
   lk->locked = 1;
-    80203692:	4785                	li	a5,1
-    80203694:	c09c                	sw	a5,0(s1)
+    80203694:	4785                	li	a5,1
+    80203696:	c09c                	sw	a5,0(s1)
   lk->pid = myproc()->pid;
-    80203696:	ffffe097          	auipc	ra,0xffffe
-    8020369a:	3a6080e7          	jalr	934(ra) # 80201a3c <myproc>
-    8020369e:	5d1c                	lw	a5,56(a0)
-    802036a0:	d49c                	sw	a5,40(s1)
+    80203698:	ffffe097          	auipc	ra,0xffffe
+    8020369c:	3a4080e7          	jalr	932(ra) # 80201a3c <myproc>
+    802036a0:	5d1c                	lw	a5,56(a0)
+    802036a2:	d49c                	sw	a5,40(s1)
   release(&lk->lk);
-    802036a2:	854a                	mv	a0,s2
-    802036a4:	ffffd097          	auipc	ra,0xffffd
-    802036a8:	076080e7          	jalr	118(ra) # 8020071a <release>
+    802036a4:	854a                	mv	a0,s2
+    802036a6:	ffffd097          	auipc	ra,0xffffd
+    802036aa:	074080e7          	jalr	116(ra) # 8020071a <release>
 }
-    802036ac:	60e2                	ld	ra,24(sp)
-    802036ae:	6442                	ld	s0,16(sp)
-    802036b0:	64a2                	ld	s1,8(sp)
-    802036b2:	6902                	ld	s2,0(sp)
-    802036b4:	6105                	addi	sp,sp,32
-    802036b6:	8082                	ret
+    802036ae:	60e2                	ld	ra,24(sp)
+    802036b0:	6442                	ld	s0,16(sp)
+    802036b2:	64a2                	ld	s1,8(sp)
+    802036b4:	6902                	ld	s2,0(sp)
+    802036b6:	6105                	addi	sp,sp,32
+    802036b8:	8082                	ret
 
-00000000802036b8 <releasesleep>:
+00000000802036ba <releasesleep>:
 
 void
 releasesleep(struct sleeplock *lk)
 {
-    802036b8:	1101                	addi	sp,sp,-32
-    802036ba:	ec06                	sd	ra,24(sp)
-    802036bc:	e822                	sd	s0,16(sp)
-    802036be:	e426                	sd	s1,8(sp)
-    802036c0:	e04a                	sd	s2,0(sp)
-    802036c2:	1000                	addi	s0,sp,32
-    802036c4:	84aa                	mv	s1,a0
+    802036ba:	1101                	addi	sp,sp,-32
+    802036bc:	ec06                	sd	ra,24(sp)
+    802036be:	e822                	sd	s0,16(sp)
+    802036c0:	e426                	sd	s1,8(sp)
+    802036c2:	e04a                	sd	s2,0(sp)
+    802036c4:	1000                	addi	s0,sp,32
+    802036c6:	84aa                	mv	s1,a0
   acquire(&lk->lk);
-    802036c6:	00850913          	addi	s2,a0,8
-    802036ca:	854a                	mv	a0,s2
-    802036cc:	ffffd097          	auipc	ra,0xffffd
-    802036d0:	ffa080e7          	jalr	-6(ra) # 802006c6 <acquire>
+    802036c8:	00850913          	addi	s2,a0,8
+    802036cc:	854a                	mv	a0,s2
+    802036ce:	ffffd097          	auipc	ra,0xffffd
+    802036d2:	ff8080e7          	jalr	-8(ra) # 802006c6 <acquire>
   lk->locked = 0;
-    802036d4:	0004a023          	sw	zero,0(s1)
+    802036d6:	0004a023          	sw	zero,0(s1)
   lk->pid = 0;
-    802036d8:	0204a423          	sw	zero,40(s1)
+    802036da:	0204a423          	sw	zero,40(s1)
   wakeup(lk);
-    802036dc:	8526                	mv	a0,s1
-    802036de:	fffff097          	auipc	ra,0xfffff
-    802036e2:	d5a080e7          	jalr	-678(ra) # 80202438 <wakeup>
+    802036de:	8526                	mv	a0,s1
+    802036e0:	fffff097          	auipc	ra,0xfffff
+    802036e4:	d58080e7          	jalr	-680(ra) # 80202438 <wakeup>
   release(&lk->lk);
-    802036e6:	854a                	mv	a0,s2
-    802036e8:	ffffd097          	auipc	ra,0xffffd
-    802036ec:	032080e7          	jalr	50(ra) # 8020071a <release>
+    802036e8:	854a                	mv	a0,s2
+    802036ea:	ffffd097          	auipc	ra,0xffffd
+    802036ee:	030080e7          	jalr	48(ra) # 8020071a <release>
 }
-    802036f0:	60e2                	ld	ra,24(sp)
-    802036f2:	6442                	ld	s0,16(sp)
-    802036f4:	64a2                	ld	s1,8(sp)
-    802036f6:	6902                	ld	s2,0(sp)
-    802036f8:	6105                	addi	sp,sp,32
-    802036fa:	8082                	ret
+    802036f2:	60e2                	ld	ra,24(sp)
+    802036f4:	6442                	ld	s0,16(sp)
+    802036f6:	64a2                	ld	s1,8(sp)
+    802036f8:	6902                	ld	s2,0(sp)
+    802036fa:	6105                	addi	sp,sp,32
+    802036fc:	8082                	ret
 
-00000000802036fc <holdingsleep>:
+00000000802036fe <holdingsleep>:
 
 int
 holdingsleep(struct sleeplock *lk)
 {
-    802036fc:	7179                	addi	sp,sp,-48
-    802036fe:	f406                	sd	ra,40(sp)
-    80203700:	f022                	sd	s0,32(sp)
-    80203702:	ec26                	sd	s1,24(sp)
-    80203704:	e84a                	sd	s2,16(sp)
-    80203706:	e44e                	sd	s3,8(sp)
-    80203708:	1800                	addi	s0,sp,48
-    8020370a:	84aa                	mv	s1,a0
+    802036fe:	7179                	addi	sp,sp,-48
+    80203700:	f406                	sd	ra,40(sp)
+    80203702:	f022                	sd	s0,32(sp)
+    80203704:	ec26                	sd	s1,24(sp)
+    80203706:	e84a                	sd	s2,16(sp)
+    80203708:	e44e                	sd	s3,8(sp)
+    8020370a:	1800                	addi	s0,sp,48
+    8020370c:	84aa                	mv	s1,a0
   int r;
   
   acquire(&lk->lk);
-    8020370c:	00850913          	addi	s2,a0,8
-    80203710:	854a                	mv	a0,s2
-    80203712:	ffffd097          	auipc	ra,0xffffd
-    80203716:	fb4080e7          	jalr	-76(ra) # 802006c6 <acquire>
+    8020370e:	00850913          	addi	s2,a0,8
+    80203712:	854a                	mv	a0,s2
+    80203714:	ffffd097          	auipc	ra,0xffffd
+    80203718:	fb2080e7          	jalr	-78(ra) # 802006c6 <acquire>
   r = lk->locked && (lk->pid == myproc()->pid);
-    8020371a:	409c                	lw	a5,0(s1)
-    8020371c:	ef99                	bnez	a5,8020373a <holdingsleep+0x3e>
-    8020371e:	4481                	li	s1,0
+    8020371c:	409c                	lw	a5,0(s1)
+    8020371e:	ef99                	bnez	a5,8020373c <holdingsleep+0x3e>
+    80203720:	4481                	li	s1,0
   release(&lk->lk);
-    80203720:	854a                	mv	a0,s2
-    80203722:	ffffd097          	auipc	ra,0xffffd
-    80203726:	ff8080e7          	jalr	-8(ra) # 8020071a <release>
+    80203722:	854a                	mv	a0,s2
+    80203724:	ffffd097          	auipc	ra,0xffffd
+    80203728:	ff6080e7          	jalr	-10(ra) # 8020071a <release>
   return r;
 }
-    8020372a:	8526                	mv	a0,s1
-    8020372c:	70a2                	ld	ra,40(sp)
-    8020372e:	7402                	ld	s0,32(sp)
-    80203730:	64e2                	ld	s1,24(sp)
-    80203732:	6942                	ld	s2,16(sp)
-    80203734:	69a2                	ld	s3,8(sp)
-    80203736:	6145                	addi	sp,sp,48
-    80203738:	8082                	ret
+    8020372c:	8526                	mv	a0,s1
+    8020372e:	70a2                	ld	ra,40(sp)
+    80203730:	7402                	ld	s0,32(sp)
+    80203732:	64e2                	ld	s1,24(sp)
+    80203734:	6942                	ld	s2,16(sp)
+    80203736:	69a2                	ld	s3,8(sp)
+    80203738:	6145                	addi	sp,sp,48
+    8020373a:	8082                	ret
   r = lk->locked && (lk->pid == myproc()->pid);
-    8020373a:	0284a983          	lw	s3,40(s1)
-    8020373e:	ffffe097          	auipc	ra,0xffffe
-    80203742:	2fe080e7          	jalr	766(ra) # 80201a3c <myproc>
-    80203746:	5d04                	lw	s1,56(a0)
-    80203748:	413484b3          	sub	s1,s1,s3
-    8020374c:	0014b493          	seqz	s1,s1
-    80203750:	bfc1                	j	80203720 <holdingsleep+0x24>
-
-0000000080203752 <fileinit>:
+    8020373c:	0284a983          	lw	s3,40(s1)
+    80203740:	ffffe097          	auipc	ra,0xffffe
+    80203744:	2fc080e7          	jalr	764(ra) # 80201a3c <myproc>
+    80203748:	5d04                	lw	s1,56(a0)
+    8020374a:	413484b3          	sub	s1,s1,s3
+    8020374e:	0014b493          	seqz	s1,s1
+    80203752:	bfc1                	j	80203722 <holdingsleep+0x24>
+
+0000000080203754 <fileinit>:
   struct file file[NFILE];
 } ftable;
 
 void
 fileinit(void)
 {
-    80203752:	1101                	addi	sp,sp,-32
-    80203754:	ec06                	sd	ra,24(sp)
-    80203756:	e822                	sd	s0,16(sp)
-    80203758:	e426                	sd	s1,8(sp)
-    8020375a:	e04a                	sd	s2,0(sp)
-    8020375c:	1000                	addi	s0,sp,32
+    80203754:	1101                	addi	sp,sp,-32
+    80203756:	ec06                	sd	ra,24(sp)
+    80203758:	e822                	sd	s0,16(sp)
+    8020375a:	e426                	sd	s1,8(sp)
+    8020375c:	e04a                	sd	s2,0(sp)
+    8020375e:	1000                	addi	s0,sp,32
   initlock(&ftable.lock, "ftable");
-    8020375e:	00006597          	auipc	a1,0x6
-    80203762:	3ca58593          	addi	a1,a1,970 # 80209b28 <digits+0x7a8>
-    80203766:	0001a517          	auipc	a0,0x1a
-    8020376a:	cea50513          	addi	a0,a0,-790 # 8021d450 <ftable>
-    8020376e:	ffffd097          	auipc	ra,0xffffd
-    80203772:	f14080e7          	jalr	-236(ra) # 80200682 <initlock>
+    80203760:	00006597          	auipc	a1,0x6
+    80203764:	3d058593          	addi	a1,a1,976 # 80209b30 <digits+0x7b0>
+    80203768:	0001a517          	auipc	a0,0x1a
+    8020376c:	ce850513          	addi	a0,a0,-792 # 8021d450 <ftable>
+    80203770:	ffffd097          	auipc	ra,0xffffd
+    80203774:	f12080e7          	jalr	-238(ra) # 80200682 <initlock>
   struct file *f;
   for(f = ftable.file; f < ftable.file + NFILE; f++){
-    80203776:	0001a497          	auipc	s1,0x1a
-    8020377a:	cf248493          	addi	s1,s1,-782 # 8021d468 <ftable+0x18>
-    8020377e:	0001b917          	auipc	s2,0x1b
-    80203782:	c8a90913          	addi	s2,s2,-886 # 8021e408 <tickslock>
+    80203778:	0001a497          	auipc	s1,0x1a
+    8020377c:	cf048493          	addi	s1,s1,-784 # 8021d468 <ftable+0x18>
+    80203780:	0001b917          	auipc	s2,0x1b
+    80203784:	c8890913          	addi	s2,s2,-888 # 8021e408 <tickslock>
     memset(f, 0, sizeof(struct file));
-    80203786:	02800613          	li	a2,40
-    8020378a:	4581                	li	a1,0
-    8020378c:	8526                	mv	a0,s1
-    8020378e:	ffffd097          	auipc	ra,0xffffd
-    80203792:	fd4080e7          	jalr	-44(ra) # 80200762 <memset>
+    80203788:	02800613          	li	a2,40
+    8020378c:	4581                	li	a1,0
+    8020378e:	8526                	mv	a0,s1
+    80203790:	ffffd097          	auipc	ra,0xffffd
+    80203794:	fd2080e7          	jalr	-46(ra) # 80200762 <memset>
   for(f = ftable.file; f < ftable.file + NFILE; f++){
-    80203796:	02848493          	addi	s1,s1,40
-    8020379a:	ff2496e3          	bne	s1,s2,80203786 <fileinit+0x34>
+    80203798:	02848493          	addi	s1,s1,40
+    8020379c:	ff2496e3          	bne	s1,s2,80203788 <fileinit+0x34>
   }
   #ifdef DEBUG
   printf("fileinit\n");
   #endif
 }
-    8020379e:	60e2                	ld	ra,24(sp)
-    802037a0:	6442                	ld	s0,16(sp)
-    802037a2:	64a2                	ld	s1,8(sp)
-    802037a4:	6902                	ld	s2,0(sp)
-    802037a6:	6105                	addi	sp,sp,32
-    802037a8:	8082                	ret
+    802037a0:	60e2                	ld	ra,24(sp)
+    802037a2:	6442                	ld	s0,16(sp)
+    802037a4:	64a2                	ld	s1,8(sp)
+    802037a6:	6902                	ld	s2,0(sp)
+    802037a8:	6105                	addi	sp,sp,32
+    802037aa:	8082                	ret
 
-00000000802037aa <filealloc>:
+00000000802037ac <filealloc>:
 
 // Allocate a file structure.
 struct file*
 filealloc(void)
 {
-    802037aa:	1101                	addi	sp,sp,-32
-    802037ac:	ec06                	sd	ra,24(sp)
-    802037ae:	e822                	sd	s0,16(sp)
-    802037b0:	e426                	sd	s1,8(sp)
-    802037b2:	1000                	addi	s0,sp,32
+    802037ac:	1101                	addi	sp,sp,-32
+    802037ae:	ec06                	sd	ra,24(sp)
+    802037b0:	e822                	sd	s0,16(sp)
+    802037b2:	e426                	sd	s1,8(sp)
+    802037b4:	1000                	addi	s0,sp,32
   struct file *f;
 
   acquire(&ftable.lock);
-    802037b4:	0001a517          	auipc	a0,0x1a
-    802037b8:	c9c50513          	addi	a0,a0,-868 # 8021d450 <ftable>
-    802037bc:	ffffd097          	auipc	ra,0xffffd
-    802037c0:	f0a080e7          	jalr	-246(ra) # 802006c6 <acquire>
+    802037b6:	0001a517          	auipc	a0,0x1a
+    802037ba:	c9a50513          	addi	a0,a0,-870 # 8021d450 <ftable>
+    802037be:	ffffd097          	auipc	ra,0xffffd
+    802037c2:	f08080e7          	jalr	-248(ra) # 802006c6 <acquire>
   for(f = ftable.file; f < ftable.file + NFILE; f++){
-    802037c4:	0001a497          	auipc	s1,0x1a
-    802037c8:	ca448493          	addi	s1,s1,-860 # 8021d468 <ftable+0x18>
-    802037cc:	0001b717          	auipc	a4,0x1b
-    802037d0:	c3c70713          	addi	a4,a4,-964 # 8021e408 <tickslock>
+    802037c6:	0001a497          	auipc	s1,0x1a
+    802037ca:	ca248493          	addi	s1,s1,-862 # 8021d468 <ftable+0x18>
+    802037ce:	0001b717          	auipc	a4,0x1b
+    802037d2:	c3a70713          	addi	a4,a4,-966 # 8021e408 <tickslock>
     if(f->ref == 0){
-    802037d4:	40dc                	lw	a5,4(s1)
-    802037d6:	cf99                	beqz	a5,802037f4 <filealloc+0x4a>
+    802037d6:	40dc                	lw	a5,4(s1)
+    802037d8:	cf99                	beqz	a5,802037f6 <filealloc+0x4a>
   for(f = ftable.file; f < ftable.file + NFILE; f++){
-    802037d8:	02848493          	addi	s1,s1,40
-    802037dc:	fee49ce3          	bne	s1,a4,802037d4 <filealloc+0x2a>
+    802037da:	02848493          	addi	s1,s1,40
+    802037de:	fee49ce3          	bne	s1,a4,802037d6 <filealloc+0x2a>
       f->ref = 1;
       release(&ftable.lock);
       return f;
     }
   }
   release(&ftable.lock);
-    802037e0:	0001a517          	auipc	a0,0x1a
-    802037e4:	c7050513          	addi	a0,a0,-912 # 8021d450 <ftable>
-    802037e8:	ffffd097          	auipc	ra,0xffffd
-    802037ec:	f32080e7          	jalr	-206(ra) # 8020071a <release>
+    802037e2:	0001a517          	auipc	a0,0x1a
+    802037e6:	c6e50513          	addi	a0,a0,-914 # 8021d450 <ftable>
+    802037ea:	ffffd097          	auipc	ra,0xffffd
+    802037ee:	f30080e7          	jalr	-208(ra) # 8020071a <release>
   return NULL;
-    802037f0:	4481                	li	s1,0
-    802037f2:	a819                	j	80203808 <filealloc+0x5e>
+    802037f2:	4481                	li	s1,0
+    802037f4:	a819                	j	8020380a <filealloc+0x5e>
       f->ref = 1;
-    802037f4:	4785                	li	a5,1
-    802037f6:	c0dc                	sw	a5,4(s1)
+    802037f6:	4785                	li	a5,1
+    802037f8:	c0dc                	sw	a5,4(s1)
       release(&ftable.lock);
-    802037f8:	0001a517          	auipc	a0,0x1a
-    802037fc:	c5850513          	addi	a0,a0,-936 # 8021d450 <ftable>
-    80203800:	ffffd097          	auipc	ra,0xffffd
-    80203804:	f1a080e7          	jalr	-230(ra) # 8020071a <release>
+    802037fa:	0001a517          	auipc	a0,0x1a
+    802037fe:	c5650513          	addi	a0,a0,-938 # 8021d450 <ftable>
+    80203802:	ffffd097          	auipc	ra,0xffffd
+    80203806:	f18080e7          	jalr	-232(ra) # 8020071a <release>
 }
-    80203808:	8526                	mv	a0,s1
-    8020380a:	60e2                	ld	ra,24(sp)
-    8020380c:	6442                	ld	s0,16(sp)
-    8020380e:	64a2                	ld	s1,8(sp)
-    80203810:	6105                	addi	sp,sp,32
-    80203812:	8082                	ret
+    8020380a:	8526                	mv	a0,s1
+    8020380c:	60e2                	ld	ra,24(sp)
+    8020380e:	6442                	ld	s0,16(sp)
+    80203810:	64a2                	ld	s1,8(sp)
+    80203812:	6105                	addi	sp,sp,32
+    80203814:	8082                	ret
 
-0000000080203814 <filedup>:
+0000000080203816 <filedup>:
 
 // Increment ref count for file f.
 struct file*
 filedup(struct file *f)
 {
-    80203814:	1101                	addi	sp,sp,-32
-    80203816:	ec06                	sd	ra,24(sp)
-    80203818:	e822                	sd	s0,16(sp)
-    8020381a:	e426                	sd	s1,8(sp)
-    8020381c:	1000                	addi	s0,sp,32
-    8020381e:	84aa                	mv	s1,a0
+    80203816:	1101                	addi	sp,sp,-32
+    80203818:	ec06                	sd	ra,24(sp)
+    8020381a:	e822                	sd	s0,16(sp)
+    8020381c:	e426                	sd	s1,8(sp)
+    8020381e:	1000                	addi	s0,sp,32
+    80203820:	84aa                	mv	s1,a0
   acquire(&ftable.lock);
-    80203820:	0001a517          	auipc	a0,0x1a
-    80203824:	c3050513          	addi	a0,a0,-976 # 8021d450 <ftable>
-    80203828:	ffffd097          	auipc	ra,0xffffd
-    8020382c:	e9e080e7          	jalr	-354(ra) # 802006c6 <acquire>
+    80203822:	0001a517          	auipc	a0,0x1a
+    80203826:	c2e50513          	addi	a0,a0,-978 # 8021d450 <ftable>
+    8020382a:	ffffd097          	auipc	ra,0xffffd
+    8020382e:	e9c080e7          	jalr	-356(ra) # 802006c6 <acquire>
   if(f->ref < 1)
-    80203830:	40dc                	lw	a5,4(s1)
-    80203832:	02f05263          	blez	a5,80203856 <filedup+0x42>
+    80203832:	40dc                	lw	a5,4(s1)
+    80203834:	02f05263          	blez	a5,80203858 <filedup+0x42>
     panic("filedup");
   f->ref++;
-    80203836:	2785                	addiw	a5,a5,1
-    80203838:	c0dc                	sw	a5,4(s1)
+    80203838:	2785                	addiw	a5,a5,1
+    8020383a:	c0dc                	sw	a5,4(s1)
   release(&ftable.lock);
-    8020383a:	0001a517          	auipc	a0,0x1a
-    8020383e:	c1650513          	addi	a0,a0,-1002 # 8021d450 <ftable>
-    80203842:	ffffd097          	auipc	ra,0xffffd
-    80203846:	ed8080e7          	jalr	-296(ra) # 8020071a <release>
+    8020383c:	0001a517          	auipc	a0,0x1a
+    80203840:	c1450513          	addi	a0,a0,-1004 # 8021d450 <ftable>
+    80203844:	ffffd097          	auipc	ra,0xffffd
+    80203848:	ed6080e7          	jalr	-298(ra) # 8020071a <release>
   return f;
 }
-    8020384a:	8526                	mv	a0,s1
-    8020384c:	60e2                	ld	ra,24(sp)
-    8020384e:	6442                	ld	s0,16(sp)
-    80203850:	64a2                	ld	s1,8(sp)
-    80203852:	6105                	addi	sp,sp,32
-    80203854:	8082                	ret
+    8020384c:	8526                	mv	a0,s1
+    8020384e:	60e2                	ld	ra,24(sp)
+    80203850:	6442                	ld	s0,16(sp)
+    80203852:	64a2                	ld	s1,8(sp)
+    80203854:	6105                	addi	sp,sp,32
+    80203856:	8082                	ret
     panic("filedup");
-    80203856:	00006517          	auipc	a0,0x6
-    8020385a:	2da50513          	addi	a0,a0,730 # 80209b30 <digits+0x7b0>
-    8020385e:	ffffd097          	auipc	ra,0xffffd
-    80203862:	8e6080e7          	jalr	-1818(ra) # 80200144 <panic>
+    80203858:	00006517          	auipc	a0,0x6
+    8020385c:	2e050513          	addi	a0,a0,736 # 80209b38 <digits+0x7b8>
+    80203860:	ffffd097          	auipc	ra,0xffffd
+    80203864:	8e4080e7          	jalr	-1820(ra) # 80200144 <panic>
 
-0000000080203866 <fileclose>:
+0000000080203868 <fileclose>:
 
 // Close file f.  (Decrement ref count, close when reaches 0.)
 void
 fileclose(struct file *f)
 {
-    80203866:	7139                	addi	sp,sp,-64
-    80203868:	fc06                	sd	ra,56(sp)
-    8020386a:	f822                	sd	s0,48(sp)
-    8020386c:	f426                	sd	s1,40(sp)
-    8020386e:	f04a                	sd	s2,32(sp)
-    80203870:	ec4e                	sd	s3,24(sp)
-    80203872:	e852                	sd	s4,16(sp)
-    80203874:	e456                	sd	s5,8(sp)
-    80203876:	0080                	addi	s0,sp,64
-    80203878:	84aa                	mv	s1,a0
+    80203868:	7139                	addi	sp,sp,-64
+    8020386a:	fc06                	sd	ra,56(sp)
+    8020386c:	f822                	sd	s0,48(sp)
+    8020386e:	f426                	sd	s1,40(sp)
+    80203870:	f04a                	sd	s2,32(sp)
+    80203872:	ec4e                	sd	s3,24(sp)
+    80203874:	e852                	sd	s4,16(sp)
+    80203876:	e456                	sd	s5,8(sp)
+    80203878:	0080                	addi	s0,sp,64
+    8020387a:	84aa                	mv	s1,a0
   struct file ff;
 
   acquire(&ftable.lock);
-    8020387a:	0001a517          	auipc	a0,0x1a
-    8020387e:	bd650513          	addi	a0,a0,-1066 # 8021d450 <ftable>
-    80203882:	ffffd097          	auipc	ra,0xffffd
-    80203886:	e44080e7          	jalr	-444(ra) # 802006c6 <acquire>
+    8020387c:	0001a517          	auipc	a0,0x1a
+    80203880:	bd450513          	addi	a0,a0,-1068 # 8021d450 <ftable>
+    80203884:	ffffd097          	auipc	ra,0xffffd
+    80203888:	e42080e7          	jalr	-446(ra) # 802006c6 <acquire>
   if(f->ref < 1)
-    8020388a:	40dc                	lw	a5,4(s1)
-    8020388c:	04f05863          	blez	a5,802038dc <fileclose+0x76>
+    8020388c:	40dc                	lw	a5,4(s1)
+    8020388e:	04f05863          	blez	a5,802038de <fileclose+0x76>
     panic("fileclose");
   if(--f->ref > 0){
-    80203890:	37fd                	addiw	a5,a5,-1
-    80203892:	0007871b          	sext.w	a4,a5
-    80203896:	c0dc                	sw	a5,4(s1)
-    80203898:	04e04a63          	bgtz	a4,802038ec <fileclose+0x86>
+    80203892:	37fd                	addiw	a5,a5,-1
+    80203894:	0007871b          	sext.w	a4,a5
+    80203898:	c0dc                	sw	a5,4(s1)
+    8020389a:	04e04a63          	bgtz	a4,802038ee <fileclose+0x86>
     release(&ftable.lock);
     return;
   }
   ff = *f;
-    8020389c:	0004a903          	lw	s2,0(s1)
-    802038a0:	0094ca03          	lbu	s4,9(s1)
-    802038a4:	0104b983          	ld	s3,16(s1)
-    802038a8:	0184ba83          	ld	s5,24(s1)
+    8020389e:	0004a903          	lw	s2,0(s1)
+    802038a2:	0094ca03          	lbu	s4,9(s1)
+    802038a6:	0104b983          	ld	s3,16(s1)
+    802038aa:	0184ba83          	ld	s5,24(s1)
   f->ref = 0;
-    802038ac:	0004a223          	sw	zero,4(s1)
+    802038ae:	0004a223          	sw	zero,4(s1)
   f->type = FD_NONE;
-    802038b0:	0004a023          	sw	zero,0(s1)
+    802038b2:	0004a023          	sw	zero,0(s1)
   release(&ftable.lock);
-    802038b4:	0001a517          	auipc	a0,0x1a
-    802038b8:	b9c50513          	addi	a0,a0,-1124 # 8021d450 <ftable>
-    802038bc:	ffffd097          	auipc	ra,0xffffd
-    802038c0:	e5e080e7          	jalr	-418(ra) # 8020071a <release>
+    802038b6:	0001a517          	auipc	a0,0x1a
+    802038ba:	b9a50513          	addi	a0,a0,-1126 # 8021d450 <ftable>
+    802038be:	ffffd097          	auipc	ra,0xffffd
+    802038c2:	e5c080e7          	jalr	-420(ra) # 8020071a <release>
 
   if(ff.type == FD_PIPE){
-    802038c4:	4785                	li	a5,1
-    802038c6:	04f90463          	beq	s2,a5,8020390e <fileclose+0xa8>
+    802038c6:	4785                	li	a5,1
+    802038c8:	04f90463          	beq	s2,a5,80203910 <fileclose+0xa8>
     pipeclose(ff.pipe, ff.writable);
   } else if(ff.type == FD_ENTRY){
-    802038ca:	4789                	li	a5,2
-    802038cc:	02f91863          	bne	s2,a5,802038fc <fileclose+0x96>
+    802038cc:	4789                	li	a5,2
+    802038ce:	02f91863          	bne	s2,a5,802038fe <fileclose+0x96>
     eput(ff.ep);
-    802038d0:	8556                	mv	a0,s5
-    802038d2:	00003097          	auipc	ra,0x3
-    802038d6:	9c0080e7          	jalr	-1600(ra) # 80206292 <eput>
-    802038da:	a00d                	j	802038fc <fileclose+0x96>
+    802038d2:	8556                	mv	a0,s5
+    802038d4:	00003097          	auipc	ra,0x3
+    802038d8:	9ce080e7          	jalr	-1586(ra) # 802062a2 <eput>
+    802038dc:	a00d                	j	802038fe <fileclose+0x96>
     panic("fileclose");
-    802038dc:	00006517          	auipc	a0,0x6
-    802038e0:	25c50513          	addi	a0,a0,604 # 80209b38 <digits+0x7b8>
-    802038e4:	ffffd097          	auipc	ra,0xffffd
-    802038e8:	860080e7          	jalr	-1952(ra) # 80200144 <panic>
+    802038de:	00006517          	auipc	a0,0x6
+    802038e2:	26250513          	addi	a0,a0,610 # 80209b40 <digits+0x7c0>
+    802038e6:	ffffd097          	auipc	ra,0xffffd
+    802038ea:	85e080e7          	jalr	-1954(ra) # 80200144 <panic>
     release(&ftable.lock);
-    802038ec:	0001a517          	auipc	a0,0x1a
-    802038f0:	b6450513          	addi	a0,a0,-1180 # 8021d450 <ftable>
-    802038f4:	ffffd097          	auipc	ra,0xffffd
-    802038f8:	e26080e7          	jalr	-474(ra) # 8020071a <release>
+    802038ee:	0001a517          	auipc	a0,0x1a
+    802038f2:	b6250513          	addi	a0,a0,-1182 # 8021d450 <ftable>
+    802038f6:	ffffd097          	auipc	ra,0xffffd
+    802038fa:	e24080e7          	jalr	-476(ra) # 8020071a <release>
   } else if (ff.type == FD_DEVICE) {
 
   }
 }
-    802038fc:	70e2                	ld	ra,56(sp)
-    802038fe:	7442                	ld	s0,48(sp)
-    80203900:	74a2                	ld	s1,40(sp)
-    80203902:	7902                	ld	s2,32(sp)
-    80203904:	69e2                	ld	s3,24(sp)
-    80203906:	6a42                	ld	s4,16(sp)
-    80203908:	6aa2                	ld	s5,8(sp)
-    8020390a:	6121                	addi	sp,sp,64
-    8020390c:	8082                	ret
+    802038fe:	70e2                	ld	ra,56(sp)
+    80203900:	7442                	ld	s0,48(sp)
+    80203902:	74a2                	ld	s1,40(sp)
+    80203904:	7902                	ld	s2,32(sp)
+    80203906:	69e2                	ld	s3,24(sp)
+    80203908:	6a42                	ld	s4,16(sp)
+    8020390a:	6aa2                	ld	s5,8(sp)
+    8020390c:	6121                	addi	sp,sp,64
+    8020390e:	8082                	ret
     pipeclose(ff.pipe, ff.writable);
-    8020390e:	85d2                	mv	a1,s4
-    80203910:	854e                	mv	a0,s3
-    80203912:	00000097          	auipc	ra,0x0
-    80203916:	3a0080e7          	jalr	928(ra) # 80203cb2 <pipeclose>
-    8020391a:	b7cd                	j	802038fc <fileclose+0x96>
+    80203910:	85d2                	mv	a1,s4
+    80203912:	854e                	mv	a0,s3
+    80203914:	00000097          	auipc	ra,0x0
+    80203918:	3a0080e7          	jalr	928(ra) # 80203cb4 <pipeclose>
+    8020391c:	b7cd                	j	802038fe <fileclose+0x96>
 
-000000008020391c <filestat>:
+000000008020391e <filestat>:
 filestat(struct file *f, uint64 addr)
 {
   // struct proc *p = myproc();
   struct stat st;
   
   if(f->type == FD_ENTRY){
-    8020391c:	4118                	lw	a4,0(a0)
-    8020391e:	4789                	li	a5,2
-    80203920:	04f71e63          	bne	a4,a5,8020397c <filestat+0x60>
-{
-    80203924:	7159                	addi	sp,sp,-112
-    80203926:	f486                	sd	ra,104(sp)
-    80203928:	f0a2                	sd	s0,96(sp)
-    8020392a:	eca6                	sd	s1,88(sp)
-    8020392c:	e8ca                	sd	s2,80(sp)
-    8020392e:	e4ce                	sd	s3,72(sp)
-    80203930:	1880                	addi	s0,sp,112
-    80203932:	84aa                	mv	s1,a0
-    80203934:	892e                	mv	s2,a1
+    8020391e:	4118                	lw	a4,0(a0)
+    80203920:	4789                	li	a5,2
+    80203922:	04f71e63          	bne	a4,a5,8020397e <filestat+0x60>
+{
+    80203926:	7159                	addi	sp,sp,-112
+    80203928:	f486                	sd	ra,104(sp)
+    8020392a:	f0a2                	sd	s0,96(sp)
+    8020392c:	eca6                	sd	s1,88(sp)
+    8020392e:	e8ca                	sd	s2,80(sp)
+    80203930:	e4ce                	sd	s3,72(sp)
+    80203932:	1880                	addi	s0,sp,112
+    80203934:	84aa                	mv	s1,a0
+    80203936:	892e                	mv	s2,a1
     elock(f->ep);
-    80203936:	6d08                	ld	a0,24(a0)
-    80203938:	00003097          	auipc	ra,0x3
-    8020393c:	8d6080e7          	jalr	-1834(ra) # 8020620e <elock>
+    80203938:	6d08                	ld	a0,24(a0)
+    8020393a:	00003097          	auipc	ra,0x3
+    8020393e:	8e4080e7          	jalr	-1820(ra) # 8020621e <elock>
     estat(f->ep, &st);
-    80203940:	f9840993          	addi	s3,s0,-104
-    80203944:	85ce                	mv	a1,s3
-    80203946:	6c88                	ld	a0,24(s1)
-    80203948:	00003097          	auipc	ra,0x3
-    8020394c:	a82080e7          	jalr	-1406(ra) # 802063ca <estat>
+    80203942:	f9840993          	addi	s3,s0,-104
+    80203946:	85ce                	mv	a1,s3
+    80203948:	6c88                	ld	a0,24(s1)
+    8020394a:	00003097          	auipc	ra,0x3
+    8020394e:	a90080e7          	jalr	-1392(ra) # 802063da <estat>
     eunlock(f->ep);
-    80203950:	6c88                	ld	a0,24(s1)
-    80203952:	00003097          	auipc	ra,0x3
-    80203956:	8f2080e7          	jalr	-1806(ra) # 80206244 <eunlock>
+    80203952:	6c88                	ld	a0,24(s1)
+    80203954:	00003097          	auipc	ra,0x3
+    80203958:	900080e7          	jalr	-1792(ra) # 80206254 <eunlock>
     // if(copyout(p->pagetable, addr, (char *)&st, sizeof(st)) < 0)
     if(copyout2(addr, (char *)&st, sizeof(st)) < 0)
-    8020395a:	03800613          	li	a2,56
-    8020395e:	85ce                	mv	a1,s3
-    80203960:	854a                	mv	a0,s2
-    80203962:	ffffe097          	auipc	ra,0xffffe
-    80203966:	a10080e7          	jalr	-1520(ra) # 80201372 <copyout2>
-    8020396a:	41f5551b          	sraiw	a0,a0,0x1f
+    8020395c:	03800613          	li	a2,56
+    80203960:	85ce                	mv	a1,s3
+    80203962:	854a                	mv	a0,s2
+    80203964:	ffffe097          	auipc	ra,0xffffe
+    80203968:	a0e080e7          	jalr	-1522(ra) # 80201372 <copyout2>
+    8020396c:	41f5551b          	sraiw	a0,a0,0x1f
       return -1;
     return 0;
   }
   return -1;
 }
-    8020396e:	70a6                	ld	ra,104(sp)
-    80203970:	7406                	ld	s0,96(sp)
-    80203972:	64e6                	ld	s1,88(sp)
-    80203974:	6946                	ld	s2,80(sp)
-    80203976:	69a6                	ld	s3,72(sp)
-    80203978:	6165                	addi	sp,sp,112
-    8020397a:	8082                	ret
+    80203970:	70a6                	ld	ra,104(sp)
+    80203972:	7406                	ld	s0,96(sp)
+    80203974:	64e6                	ld	s1,88(sp)
+    80203976:	6946                	ld	s2,80(sp)
+    80203978:	69a6                	ld	s3,72(sp)
+    8020397a:	6165                	addi	sp,sp,112
+    8020397c:	8082                	ret
   return -1;
-    8020397c:	557d                	li	a0,-1
+    8020397e:	557d                	li	a0,-1
 }
-    8020397e:	8082                	ret
+    80203980:	8082                	ret
 
-0000000080203980 <fileread>:
+0000000080203982 <fileread>:
 
 // Read from file f.
 // addr is a user virtual address.
 int
 fileread(struct file *f, uint64 addr, int n)
 {
-    80203980:	7179                	addi	sp,sp,-48
-    80203982:	f406                	sd	ra,40(sp)
-    80203984:	f022                	sd	s0,32(sp)
-    80203986:	ec26                	sd	s1,24(sp)
-    80203988:	e84a                	sd	s2,16(sp)
-    8020398a:	e44e                	sd	s3,8(sp)
-    8020398c:	1800                	addi	s0,sp,48
+    80203982:	7179                	addi	sp,sp,-48
+    80203984:	f406                	sd	ra,40(sp)
+    80203986:	f022                	sd	s0,32(sp)
+    80203988:	ec26                	sd	s1,24(sp)
+    8020398a:	e84a                	sd	s2,16(sp)
+    8020398c:	e44e                	sd	s3,8(sp)
+    8020398e:	1800                	addi	s0,sp,48
   int r = 0;
 
   if(f->readable == 0)
-    8020398e:	00854783          	lbu	a5,8(a0)
-    80203992:	c3d5                	beqz	a5,80203a36 <fileread+0xb6>
-    80203994:	84aa                	mv	s1,a0
-    80203996:	89ae                	mv	s3,a1
-    80203998:	8932                	mv	s2,a2
+    80203990:	00854783          	lbu	a5,8(a0)
+    80203994:	c3d5                	beqz	a5,80203a38 <fileread+0xb6>
+    80203996:	84aa                	mv	s1,a0
+    80203998:	89ae                	mv	s3,a1
+    8020399a:	8932                	mv	s2,a2
     return -1;
 
   switch (f->type) {
-    8020399a:	411c                	lw	a5,0(a0)
-    8020399c:	4709                	li	a4,2
-    8020399e:	06e78263          	beq	a5,a4,80203a02 <fileread+0x82>
-    802039a2:	470d                	li	a4,3
-    802039a4:	02e78b63          	beq	a5,a4,802039da <fileread+0x5a>
-    802039a8:	4705                	li	a4,1
-    802039aa:	00e78a63          	beq	a5,a4,802039be <fileread+0x3e>
+    8020399c:	411c                	lw	a5,0(a0)
+    8020399e:	4709                	li	a4,2
+    802039a0:	06e78263          	beq	a5,a4,80203a04 <fileread+0x82>
+    802039a4:	470d                	li	a4,3
+    802039a6:	02e78b63          	beq	a5,a4,802039dc <fileread+0x5a>
+    802039aa:	4705                	li	a4,1
+    802039ac:	00e78a63          	beq	a5,a4,802039c0 <fileread+0x3e>
           if((r = eread(f->ep, 1, addr, f->off, n)) > 0)
             f->off += r;
         eunlock(f->ep);
         break;
     default:
       panic("fileread");
-    802039ae:	00006517          	auipc	a0,0x6
-    802039b2:	19a50513          	addi	a0,a0,410 # 80209b48 <digits+0x7c8>
-    802039b6:	ffffc097          	auipc	ra,0xffffc
-    802039ba:	78e080e7          	jalr	1934(ra) # 80200144 <panic>
+    802039b0:	00006517          	auipc	a0,0x6
+    802039b4:	1a050513          	addi	a0,a0,416 # 80209b50 <digits+0x7d0>
+    802039b8:	ffffc097          	auipc	ra,0xffffc
+    802039bc:	78c080e7          	jalr	1932(ra) # 80200144 <panic>
         r = piperead(f->pipe, addr, n);
-    802039be:	6908                	ld	a0,16(a0)
-    802039c0:	00000097          	auipc	ra,0x0
-    802039c4:	466080e7          	jalr	1126(ra) # 80203e26 <piperead>
-    802039c8:	892a                	mv	s2,a0
+    802039c0:	6908                	ld	a0,16(a0)
+    802039c2:	00000097          	auipc	ra,0x0
+    802039c6:	466080e7          	jalr	1126(ra) # 80203e28 <piperead>
+    802039ca:	892a                	mv	s2,a0
   }
 
   return r;
 }
-    802039ca:	854a                	mv	a0,s2
-    802039cc:	70a2                	ld	ra,40(sp)
-    802039ce:	7402                	ld	s0,32(sp)
-    802039d0:	64e2                	ld	s1,24(sp)
-    802039d2:	6942                	ld	s2,16(sp)
-    802039d4:	69a2                	ld	s3,8(sp)
-    802039d6:	6145                	addi	sp,sp,48
-    802039d8:	8082                	ret
+    802039cc:	854a                	mv	a0,s2
+    802039ce:	70a2                	ld	ra,40(sp)
+    802039d0:	7402                	ld	s0,32(sp)
+    802039d2:	64e2                	ld	s1,24(sp)
+    802039d4:	6942                	ld	s2,16(sp)
+    802039d6:	69a2                	ld	s3,8(sp)
+    802039d8:	6145                	addi	sp,sp,48
+    802039da:	8082                	ret
         if(f->major < 0 || f->major >= NDEV || !devsw[f->major].read)
-    802039da:	02451783          	lh	a5,36(a0)
-    802039de:	03079693          	slli	a3,a5,0x30
-    802039e2:	92c1                	srli	a3,a3,0x30
-    802039e4:	4725                	li	a4,9
-    802039e6:	04d76a63          	bltu	a4,a3,80203a3a <fileread+0xba>
-    802039ea:	0792                	slli	a5,a5,0x4
-    802039ec:	0001a717          	auipc	a4,0x1a
-    802039f0:	9c470713          	addi	a4,a4,-1596 # 8021d3b0 <devsw>
-    802039f4:	97ba                	add	a5,a5,a4
-    802039f6:	639c                	ld	a5,0(a5)
-    802039f8:	c3b9                	beqz	a5,80203a3e <fileread+0xbe>
+    802039dc:	02451783          	lh	a5,36(a0)
+    802039e0:	03079693          	slli	a3,a5,0x30
+    802039e4:	92c1                	srli	a3,a3,0x30
+    802039e6:	4725                	li	a4,9
+    802039e8:	04d76a63          	bltu	a4,a3,80203a3c <fileread+0xba>
+    802039ec:	0792                	slli	a5,a5,0x4
+    802039ee:	0001a717          	auipc	a4,0x1a
+    802039f2:	9c270713          	addi	a4,a4,-1598 # 8021d3b0 <devsw>
+    802039f6:	97ba                	add	a5,a5,a4
+    802039f8:	639c                	ld	a5,0(a5)
+    802039fa:	c3b9                	beqz	a5,80203a40 <fileread+0xbe>
         r = devsw[f->major].read(1, addr, n);
-    802039fa:	4505                	li	a0,1
-    802039fc:	9782                	jalr	a5
-    802039fe:	892a                	mv	s2,a0
+    802039fc:	4505                	li	a0,1
+    802039fe:	9782                	jalr	a5
+    80203a00:	892a                	mv	s2,a0
         break;
-    80203a00:	b7e9                	j	802039ca <fileread+0x4a>
+    80203a02:	b7e9                	j	802039cc <fileread+0x4a>
         elock(f->ep);
-    80203a02:	6d08                	ld	a0,24(a0)
-    80203a04:	00003097          	auipc	ra,0x3
-    80203a08:	80a080e7          	jalr	-2038(ra) # 8020620e <elock>
+    80203a04:	6d08                	ld	a0,24(a0)
+    80203a06:	00003097          	auipc	ra,0x3
+    80203a0a:	818080e7          	jalr	-2024(ra) # 8020621e <elock>
           if((r = eread(f->ep, 1, addr, f->off, n)) > 0)
-    80203a0c:	874a                	mv	a4,s2
-    80203a0e:	5094                	lw	a3,32(s1)
-    80203a10:	864e                	mv	a2,s3
-    80203a12:	4585                	li	a1,1
-    80203a14:	6c88                	ld	a0,24(s1)
-    80203a16:	00002097          	auipc	ra,0x2
-    80203a1a:	ef4080e7          	jalr	-268(ra) # 8020590a <eread>
-    80203a1e:	892a                	mv	s2,a0
-    80203a20:	00a05563          	blez	a0,80203a2a <fileread+0xaa>
+    80203a0e:	874a                	mv	a4,s2
+    80203a10:	5094                	lw	a3,32(s1)
+    80203a12:	864e                	mv	a2,s3
+    80203a14:	4585                	li	a1,1
+    80203a16:	6c88                	ld	a0,24(s1)
+    80203a18:	00002097          	auipc	ra,0x2
+    80203a1c:	f02080e7          	jalr	-254(ra) # 8020591a <eread>
+    80203a20:	892a                	mv	s2,a0
+    80203a22:	00a05563          	blez	a0,80203a2c <fileread+0xaa>
             f->off += r;
-    80203a24:	509c                	lw	a5,32(s1)
-    80203a26:	9fa9                	addw	a5,a5,a0
-    80203a28:	d09c                	sw	a5,32(s1)
+    80203a26:	509c                	lw	a5,32(s1)
+    80203a28:	9fa9                	addw	a5,a5,a0
+    80203a2a:	d09c                	sw	a5,32(s1)
         eunlock(f->ep);
-    80203a2a:	6c88                	ld	a0,24(s1)
-    80203a2c:	00003097          	auipc	ra,0x3
-    80203a30:	818080e7          	jalr	-2024(ra) # 80206244 <eunlock>
+    80203a2c:	6c88                	ld	a0,24(s1)
+    80203a2e:	00003097          	auipc	ra,0x3
+    80203a32:	826080e7          	jalr	-2010(ra) # 80206254 <eunlock>
         break;
-    80203a34:	bf59                	j	802039ca <fileread+0x4a>
+    80203a36:	bf59                	j	802039cc <fileread+0x4a>
     return -1;
-    80203a36:	597d                	li	s2,-1
-    80203a38:	bf49                	j	802039ca <fileread+0x4a>
+    80203a38:	597d                	li	s2,-1
+    80203a3a:	bf49                	j	802039cc <fileread+0x4a>
           return -1;
-    80203a3a:	597d                	li	s2,-1
-    80203a3c:	b779                	j	802039ca <fileread+0x4a>
-    80203a3e:	597d                	li	s2,-1
-    80203a40:	b769                	j	802039ca <fileread+0x4a>
+    80203a3c:	597d                	li	s2,-1
+    80203a3e:	b779                	j	802039cc <fileread+0x4a>
+    80203a40:	597d                	li	s2,-1
+    80203a42:	b769                	j	802039cc <fileread+0x4a>
 
-0000000080203a42 <filewrite>:
+0000000080203a44 <filewrite>:
 
 // Write to file f.
 // addr is a user virtual address.
 int
 filewrite(struct file *f, uint64 addr, int n)
 {
-    80203a42:	7179                	addi	sp,sp,-48
-    80203a44:	f406                	sd	ra,40(sp)
-    80203a46:	f022                	sd	s0,32(sp)
-    80203a48:	ec26                	sd	s1,24(sp)
-    80203a4a:	e84a                	sd	s2,16(sp)
-    80203a4c:	e44e                	sd	s3,8(sp)
-    80203a4e:	e052                	sd	s4,0(sp)
-    80203a50:	1800                	addi	s0,sp,48
+    80203a44:	7179                	addi	sp,sp,-48
+    80203a46:	f406                	sd	ra,40(sp)
+    80203a48:	f022                	sd	s0,32(sp)
+    80203a4a:	ec26                	sd	s1,24(sp)
+    80203a4c:	e84a                	sd	s2,16(sp)
+    80203a4e:	e44e                	sd	s3,8(sp)
+    80203a50:	e052                	sd	s4,0(sp)
+    80203a52:	1800                	addi	s0,sp,48
   int ret = 0;
 
   if(f->writable == 0)
-    80203a52:	00954783          	lbu	a5,9(a0)
-    80203a56:	cbc5                	beqz	a5,80203b06 <filewrite+0xc4>
-    80203a58:	84aa                	mv	s1,a0
-    80203a5a:	892e                	mv	s2,a1
-    80203a5c:	89b2                	mv	s3,a2
+    80203a54:	00954783          	lbu	a5,9(a0)
+    80203a58:	cbc5                	beqz	a5,80203b08 <filewrite+0xc4>
+    80203a5a:	84aa                	mv	s1,a0
+    80203a5c:	892e                	mv	s2,a1
+    80203a5e:	89b2                	mv	s3,a2
     return -1;
 
   if(f->type == FD_PIPE){
-    80203a5e:	411c                	lw	a5,0(a0)
-    80203a60:	4705                	li	a4,1
-    80203a62:	04e78963          	beq	a5,a4,80203ab4 <filewrite+0x72>
+    80203a60:	411c                	lw	a5,0(a0)
+    80203a62:	4705                	li	a4,1
+    80203a64:	04e78963          	beq	a5,a4,80203ab6 <filewrite+0x72>
     ret = pipewrite(f->pipe, addr, n);
   } else if(f->type == FD_DEVICE){
-    80203a66:	470d                	li	a4,3
-    80203a68:	04e78d63          	beq	a5,a4,80203ac2 <filewrite+0x80>
+    80203a68:	470d                	li	a4,3
+    80203a6a:	04e78d63          	beq	a5,a4,80203ac4 <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){
-    80203a6c:	4709                	li	a4,2
-    80203a6e:	08e79463          	bne	a5,a4,80203af6 <filewrite+0xb4>
+    80203a6e:	4709                	li	a4,2
+    80203a70:	08e79463          	bne	a5,a4,80203af8 <filewrite+0xb4>
     elock(f->ep);
-    80203a72:	6d08                	ld	a0,24(a0)
-    80203a74:	00002097          	auipc	ra,0x2
-    80203a78:	79a080e7          	jalr	1946(ra) # 8020620e <elock>
+    80203a74:	6d08                	ld	a0,24(a0)
+    80203a76:	00002097          	auipc	ra,0x2
+    80203a7a:	7a8080e7          	jalr	1960(ra) # 8020621e <elock>
     if (ewrite(f->ep, 1, addr, f->off, n) == n) {
-    80203a7c:	00098a1b          	sext.w	s4,s3
-    80203a80:	8752                	mv	a4,s4
-    80203a82:	5094                	lw	a3,32(s1)
-    80203a84:	864a                	mv	a2,s2
-    80203a86:	4585                	li	a1,1
-    80203a88:	6c88                	ld	a0,24(s1)
-    80203a8a:	00002097          	auipc	ra,0x2
-    80203a8e:	f78080e7          	jalr	-136(ra) # 80205a02 <ewrite>
+    80203a7e:	00098a1b          	sext.w	s4,s3
+    80203a82:	8752                	mv	a4,s4
+    80203a84:	5094                	lw	a3,32(s1)
+    80203a86:	864a                	mv	a2,s2
+    80203a88:	4585                	li	a1,1
+    80203a8a:	6c88                	ld	a0,24(s1)
+    80203a8c:	00002097          	auipc	ra,0x2
+    80203a90:	f86080e7          	jalr	-122(ra) # 80205a12 <ewrite>
       ret = n;
       f->off += n;
     } else {
       ret = -1;
-    80203a92:	597d                	li	s2,-1
+    80203a94:	597d                	li	s2,-1
     if (ewrite(f->ep, 1, addr, f->off, n) == n) {
-    80203a94:	05350b63          	beq	a0,s3,80203aea <filewrite+0xa8>
+    80203a96:	05350b63          	beq	a0,s3,80203aec <filewrite+0xa8>
     }
     eunlock(f->ep);
-    80203a98:	6c88                	ld	a0,24(s1)
-    80203a9a:	00002097          	auipc	ra,0x2
-    80203a9e:	7aa080e7          	jalr	1962(ra) # 80206244 <eunlock>
+    80203a9a:	6c88                	ld	a0,24(s1)
+    80203a9c:	00002097          	auipc	ra,0x2
+    80203aa0:	7b8080e7          	jalr	1976(ra) # 80206254 <eunlock>
   } else {
     panic("filewrite");
   }
 
   return ret;
 }
-    80203aa2:	854a                	mv	a0,s2
-    80203aa4:	70a2                	ld	ra,40(sp)
-    80203aa6:	7402                	ld	s0,32(sp)
-    80203aa8:	64e2                	ld	s1,24(sp)
-    80203aaa:	6942                	ld	s2,16(sp)
-    80203aac:	69a2                	ld	s3,8(sp)
-    80203aae:	6a02                	ld	s4,0(sp)
-    80203ab0:	6145                	addi	sp,sp,48
-    80203ab2:	8082                	ret
+    80203aa4:	854a                	mv	a0,s2
+    80203aa6:	70a2                	ld	ra,40(sp)
+    80203aa8:	7402                	ld	s0,32(sp)
+    80203aaa:	64e2                	ld	s1,24(sp)
+    80203aac:	6942                	ld	s2,16(sp)
+    80203aae:	69a2                	ld	s3,8(sp)
+    80203ab0:	6a02                	ld	s4,0(sp)
+    80203ab2:	6145                	addi	sp,sp,48
+    80203ab4:	8082                	ret
     ret = pipewrite(f->pipe, addr, n);
-    80203ab4:	6908                	ld	a0,16(a0)
-    80203ab6:	00000097          	auipc	ra,0x0
-    80203aba:	26c080e7          	jalr	620(ra) # 80203d22 <pipewrite>
-    80203abe:	892a                	mv	s2,a0
-    80203ac0:	b7cd                	j	80203aa2 <filewrite+0x60>
+    80203ab6:	6908                	ld	a0,16(a0)
+    80203ab8:	00000097          	auipc	ra,0x0
+    80203abc:	26c080e7          	jalr	620(ra) # 80203d24 <pipewrite>
+    80203ac0:	892a                	mv	s2,a0
+    80203ac2:	b7cd                	j	80203aa4 <filewrite+0x60>
     if(f->major < 0 || f->major >= NDEV || !devsw[f->major].write)
-    80203ac2:	02451783          	lh	a5,36(a0)
-    80203ac6:	03079693          	slli	a3,a5,0x30
-    80203aca:	92c1                	srli	a3,a3,0x30
-    80203acc:	4725                	li	a4,9
-    80203ace:	02d76e63          	bltu	a4,a3,80203b0a <filewrite+0xc8>
-    80203ad2:	0792                	slli	a5,a5,0x4
-    80203ad4:	0001a717          	auipc	a4,0x1a
-    80203ad8:	8dc70713          	addi	a4,a4,-1828 # 8021d3b0 <devsw>
-    80203adc:	97ba                	add	a5,a5,a4
-    80203ade:	679c                	ld	a5,8(a5)
-    80203ae0:	c79d                	beqz	a5,80203b0e <filewrite+0xcc>
+    80203ac4:	02451783          	lh	a5,36(a0)
+    80203ac8:	03079693          	slli	a3,a5,0x30
+    80203acc:	92c1                	srli	a3,a3,0x30
+    80203ace:	4725                	li	a4,9
+    80203ad0:	02d76e63          	bltu	a4,a3,80203b0c <filewrite+0xc8>
+    80203ad4:	0792                	slli	a5,a5,0x4
+    80203ad6:	0001a717          	auipc	a4,0x1a
+    80203ada:	8da70713          	addi	a4,a4,-1830 # 8021d3b0 <devsw>
+    80203ade:	97ba                	add	a5,a5,a4
+    80203ae0:	679c                	ld	a5,8(a5)
+    80203ae2:	c79d                	beqz	a5,80203b10 <filewrite+0xcc>
     ret = devsw[f->major].write(1, addr, n);
-    80203ae2:	4505                	li	a0,1
-    80203ae4:	9782                	jalr	a5
-    80203ae6:	892a                	mv	s2,a0
-    80203ae8:	bf6d                	j	80203aa2 <filewrite+0x60>
+    80203ae4:	4505                	li	a0,1
+    80203ae6:	9782                	jalr	a5
+    80203ae8:	892a                	mv	s2,a0
+    80203aea:	bf6d                	j	80203aa4 <filewrite+0x60>
       f->off += n;
-    80203aea:	509c                	lw	a5,32(s1)
-    80203aec:	014787bb          	addw	a5,a5,s4
-    80203af0:	d09c                	sw	a5,32(s1)
+    80203aec:	509c                	lw	a5,32(s1)
+    80203aee:	014787bb          	addw	a5,a5,s4
+    80203af2:	d09c                	sw	a5,32(s1)
       ret = n;
-    80203af2:	894e                	mv	s2,s3
-    80203af4:	b755                	j	80203a98 <filewrite+0x56>
+    80203af4:	894e                	mv	s2,s3
+    80203af6:	b755                	j	80203a9a <filewrite+0x56>
     panic("filewrite");
-    80203af6:	00006517          	auipc	a0,0x6
-    80203afa:	06250513          	addi	a0,a0,98 # 80209b58 <digits+0x7d8>
-    80203afe:	ffffc097          	auipc	ra,0xffffc
-    80203b02:	646080e7          	jalr	1606(ra) # 80200144 <panic>
+    80203af8:	00006517          	auipc	a0,0x6
+    80203afc:	06850513          	addi	a0,a0,104 # 80209b60 <digits+0x7e0>
+    80203b00:	ffffc097          	auipc	ra,0xffffc
+    80203b04:	644080e7          	jalr	1604(ra) # 80200144 <panic>
     return -1;
-    80203b06:	597d                	li	s2,-1
-    80203b08:	bf69                	j	80203aa2 <filewrite+0x60>
+    80203b08:	597d                	li	s2,-1
+    80203b0a:	bf69                	j	80203aa4 <filewrite+0x60>
       return -1;
-    80203b0a:	597d                	li	s2,-1
-    80203b0c:	bf59                	j	80203aa2 <filewrite+0x60>
-    80203b0e:	597d                	li	s2,-1
-    80203b10:	bf49                	j	80203aa2 <filewrite+0x60>
+    80203b0c:	597d                	li	s2,-1
+    80203b0e:	bf59                	j	80203aa4 <filewrite+0x60>
+    80203b10:	597d                	li	s2,-1
+    80203b12:	bf49                	j	80203aa4 <filewrite+0x60>
 
-0000000080203b12 <dirnext>:
+0000000080203b14 <dirnext>:
 int
 dirnext(struct file *f, uint64 addr)
 {
   // struct proc *p = myproc();
 
   if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY))
-    80203b12:	00854783          	lbu	a5,8(a0)
-    80203b16:	cfdd                	beqz	a5,80203bd4 <dirnext+0xc2>
-{
-    80203b18:	7141                	addi	sp,sp,-496
-    80203b1a:	f786                	sd	ra,488(sp)
-    80203b1c:	f3a2                	sd	s0,480(sp)
-    80203b1e:	efa6                	sd	s1,472(sp)
-    80203b20:	ebca                	sd	s2,464(sp)
-    80203b22:	e7ce                	sd	s3,456(sp)
-    80203b24:	e3d2                	sd	s4,448(sp)
-    80203b26:	ff56                	sd	s5,440(sp)
-    80203b28:	1b80                	addi	s0,sp,496
-    80203b2a:	84aa                	mv	s1,a0
-    80203b2c:	8aae                	mv	s5,a1
+    80203b14:	00854783          	lbu	a5,8(a0)
+    80203b18:	cfdd                	beqz	a5,80203bd6 <dirnext+0xc2>
+{
+    80203b1a:	7141                	addi	sp,sp,-496
+    80203b1c:	f786                	sd	ra,488(sp)
+    80203b1e:	f3a2                	sd	s0,480(sp)
+    80203b20:	efa6                	sd	s1,472(sp)
+    80203b22:	ebca                	sd	s2,464(sp)
+    80203b24:	e7ce                	sd	s3,456(sp)
+    80203b26:	e3d2                	sd	s4,448(sp)
+    80203b28:	ff56                	sd	s5,440(sp)
+    80203b2a:	1b80                	addi	s0,sp,496
+    80203b2c:	84aa                	mv	s1,a0
+    80203b2e:	8aae                	mv	s5,a1
   if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY))
-    80203b2e:	6d18                	ld	a4,24(a0)
-    80203b30:	10074783          	lbu	a5,256(a4)
-    80203b34:	8bc1                	andi	a5,a5,16
+    80203b30:	6d18                	ld	a4,24(a0)
+    80203b32:	10074783          	lbu	a5,256(a4)
+    80203b36:	8bc1                	andi	a5,a5,16
     return -1;
-    80203b36:	557d                	li	a0,-1
+    80203b38:	557d                	li	a0,-1
   if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY))
-    80203b38:	eb91                	bnez	a5,80203b4c <dirnext+0x3a>
+    80203b3a:	eb91                	bnez	a5,80203b4e <dirnext+0x3a>
   // if(copyout(p->pagetable, addr, (char *)&st, sizeof(st)) < 0)
   if(copyout2(addr, (char *)&st, sizeof(st)) < 0)
     return -1;
 
   return 1;
-    80203b3a:	70be                	ld	ra,488(sp)
-    80203b3c:	741e                	ld	s0,480(sp)
-    80203b3e:	64fe                	ld	s1,472(sp)
-    80203b40:	695e                	ld	s2,464(sp)
-    80203b42:	69be                	ld	s3,456(sp)
-    80203b44:	6a1e                	ld	s4,448(sp)
-    80203b46:	7afa                	ld	s5,440(sp)
-    80203b48:	617d                	addi	sp,sp,496
-    80203b4a:	8082                	ret
+    80203b3c:	70be                	ld	ra,488(sp)
+    80203b3e:	741e                	ld	s0,480(sp)
+    80203b40:	64fe                	ld	s1,472(sp)
+    80203b42:	695e                	ld	s2,464(sp)
+    80203b44:	69be                	ld	s3,456(sp)
+    80203b46:	6a1e                	ld	s4,448(sp)
+    80203b48:	7afa                	ld	s5,440(sp)
+    80203b4a:	617d                	addi	sp,sp,496
+    80203b4c:	8082                	ret
   int count = 0;
-    80203b4c:	e0042e23          	sw	zero,-484(s0)
+    80203b4e:	e0042e23          	sw	zero,-484(s0)
   elock(f->ep);
-    80203b50:	853a                	mv	a0,a4
-    80203b52:	00002097          	auipc	ra,0x2
-    80203b56:	6bc080e7          	jalr	1724(ra) # 8020620e <elock>
+    80203b52:	853a                	mv	a0,a4
+    80203b54:	00002097          	auipc	ra,0x2
+    80203b58:	6ca080e7          	jalr	1738(ra) # 8020621e <elock>
   while ((ret = enext(f->ep, &de, f->off, &count)) == 0) {  // skip empty entry
-    80203b5a:	e1c40a13          	addi	s4,s0,-484
-    80203b5e:	e5840993          	addi	s3,s0,-424
-    80203b62:	a801                	j	80203b72 <dirnext+0x60>
+    80203b5c:	e1c40a13          	addi	s4,s0,-484
+    80203b60:	e5840993          	addi	s3,s0,-424
+    80203b64:	a801                	j	80203b74 <dirnext+0x60>
     f->off += count * 32;
-    80203b64:	e1c42783          	lw	a5,-484(s0)
-    80203b68:	0057979b          	slliw	a5,a5,0x5
-    80203b6c:	5098                	lw	a4,32(s1)
-    80203b6e:	9fb9                	addw	a5,a5,a4
-    80203b70:	d09c                	sw	a5,32(s1)
+    80203b66:	e1c42783          	lw	a5,-484(s0)
+    80203b6a:	0057979b          	slliw	a5,a5,0x5
+    80203b6e:	5098                	lw	a4,32(s1)
+    80203b70:	9fb9                	addw	a5,a5,a4
+    80203b72:	d09c                	sw	a5,32(s1)
   while ((ret = enext(f->ep, &de, f->off, &count)) == 0) {  // skip empty entry
-    80203b72:	86d2                	mv	a3,s4
-    80203b74:	5090                	lw	a2,32(s1)
-    80203b76:	85ce                	mv	a1,s3
-    80203b78:	6c88                	ld	a0,24(s1)
-    80203b7a:	00003097          	auipc	ra,0x3
-    80203b7e:	898080e7          	jalr	-1896(ra) # 80206412 <enext>
-    80203b82:	892a                	mv	s2,a0
-    80203b84:	d165                	beqz	a0,80203b64 <dirnext+0x52>
+    80203b74:	86d2                	mv	a3,s4
+    80203b76:	5090                	lw	a2,32(s1)
+    80203b78:	85ce                	mv	a1,s3
+    80203b7a:	6c88                	ld	a0,24(s1)
+    80203b7c:	00003097          	auipc	ra,0x3
+    80203b80:	8a6080e7          	jalr	-1882(ra) # 80206422 <enext>
+    80203b84:	892a                	mv	s2,a0
+    80203b86:	d165                	beqz	a0,80203b66 <dirnext+0x52>
   eunlock(f->ep);
-    80203b86:	6c88                	ld	a0,24(s1)
-    80203b88:	00002097          	auipc	ra,0x2
-    80203b8c:	6bc080e7          	jalr	1724(ra) # 80206244 <eunlock>
+    80203b88:	6c88                	ld	a0,24(s1)
+    80203b8a:	00002097          	auipc	ra,0x2
+    80203b8e:	6ca080e7          	jalr	1738(ra) # 80206254 <eunlock>
   if (ret == -1)
-    80203b90:	57fd                	li	a5,-1
+    80203b92:	57fd                	li	a5,-1
     return 0;
-    80203b92:	4501                	li	a0,0
+    80203b94:	4501                	li	a0,0
   if (ret == -1)
-    80203b94:	faf903e3          	beq	s2,a5,80203b3a <dirnext+0x28>
+    80203b96:	faf903e3          	beq	s2,a5,80203b3c <dirnext+0x28>
   f->off += count * 32;
-    80203b98:	e1c42783          	lw	a5,-484(s0)
-    80203b9c:	0057979b          	slliw	a5,a5,0x5
-    80203ba0:	5098                	lw	a4,32(s1)
-    80203ba2:	9fb9                	addw	a5,a5,a4
-    80203ba4:	d09c                	sw	a5,32(s1)
+    80203b9a:	e1c42783          	lw	a5,-484(s0)
+    80203b9e:	0057979b          	slliw	a5,a5,0x5
+    80203ba2:	5098                	lw	a4,32(s1)
+    80203ba4:	9fb9                	addw	a5,a5,a4
+    80203ba6:	d09c                	sw	a5,32(s1)
   estat(&de, &st);
-    80203ba6:	e2040493          	addi	s1,s0,-480
-    80203baa:	85a6                	mv	a1,s1
-    80203bac:	e5840513          	addi	a0,s0,-424
-    80203bb0:	00003097          	auipc	ra,0x3
-    80203bb4:	81a080e7          	jalr	-2022(ra) # 802063ca <estat>
+    80203ba8:	e2040493          	addi	s1,s0,-480
+    80203bac:	85a6                	mv	a1,s1
+    80203bae:	e5840513          	addi	a0,s0,-424
+    80203bb2:	00003097          	auipc	ra,0x3
+    80203bb6:	828080e7          	jalr	-2008(ra) # 802063da <estat>
   if(copyout2(addr, (char *)&st, sizeof(st)) < 0)
-    80203bb8:	03800613          	li	a2,56
-    80203bbc:	85a6                	mv	a1,s1
-    80203bbe:	8556                	mv	a0,s5
-    80203bc0:	ffffd097          	auipc	ra,0xffffd
-    80203bc4:	7b2080e7          	jalr	1970(ra) # 80201372 <copyout2>
+    80203bba:	03800613          	li	a2,56
+    80203bbe:	85a6                	mv	a1,s1
+    80203bc0:	8556                	mv	a0,s5
+    80203bc2:	ffffd097          	auipc	ra,0xffffd
+    80203bc6:	7b0080e7          	jalr	1968(ra) # 80201372 <copyout2>
     return -1;
-    80203bc8:	fff54513          	not	a0,a0
-    80203bcc:	957d                	srai	a0,a0,0x3f
-    80203bce:	8909                	andi	a0,a0,2
-    80203bd0:	157d                	addi	a0,a0,-1
-    80203bd2:	b7a5                	j	80203b3a <dirnext+0x28>
+    80203bca:	fff54513          	not	a0,a0
+    80203bce:	957d                	srai	a0,a0,0x3f
+    80203bd0:	8909                	andi	a0,a0,2
+    80203bd2:	157d                	addi	a0,a0,-1
+    80203bd4:	b7a5                	j	80203b3c <dirnext+0x28>
     return -1;
-    80203bd4:	557d                	li	a0,-1
-    80203bd6:	8082                	ret
+    80203bd6:	557d                	li	a0,-1
+    80203bd8:	8082                	ret
 
-0000000080203bd8 <pipealloc>:
+0000000080203bda <pipealloc>:
 #include "include/kalloc.h"
 #include "include/vm.h"
 
 int
 pipealloc(struct file **f0, struct file **f1)
 {
-    80203bd8:	7179                	addi	sp,sp,-48
-    80203bda:	f406                	sd	ra,40(sp)
-    80203bdc:	f022                	sd	s0,32(sp)
-    80203bde:	ec26                	sd	s1,24(sp)
-    80203be0:	e84a                	sd	s2,16(sp)
-    80203be2:	e44e                	sd	s3,8(sp)
-    80203be4:	e052                	sd	s4,0(sp)
-    80203be6:	1800                	addi	s0,sp,48
-    80203be8:	84aa                	mv	s1,a0
-    80203bea:	8a2e                	mv	s4,a1
+    80203bda:	7179                	addi	sp,sp,-48
+    80203bdc:	f406                	sd	ra,40(sp)
+    80203bde:	f022                	sd	s0,32(sp)
+    80203be0:	ec26                	sd	s1,24(sp)
+    80203be2:	e84a                	sd	s2,16(sp)
+    80203be4:	e44e                	sd	s3,8(sp)
+    80203be6:	e052                	sd	s4,0(sp)
+    80203be8:	1800                	addi	s0,sp,48
+    80203bea:	84aa                	mv	s1,a0
+    80203bec:	8a2e                	mv	s4,a1
   struct pipe *pi;
 
   pi = 0;
   *f0 = *f1 = 0;
-    80203bec:	0005b023          	sd	zero,0(a1)
-    80203bf0:	00053023          	sd	zero,0(a0)
+    80203bee:	0005b023          	sd	zero,0(a1)
+    80203bf2:	00053023          	sd	zero,0(a0)
   if((*f0 = filealloc()) == NULL || (*f1 = filealloc()) == NULL)
-    80203bf4:	00000097          	auipc	ra,0x0
-    80203bf8:	bb6080e7          	jalr	-1098(ra) # 802037aa <filealloc>
-    80203bfc:	e088                	sd	a0,0(s1)
-    80203bfe:	c551                	beqz	a0,80203c8a <pipealloc+0xb2>
-    80203c00:	00000097          	auipc	ra,0x0
-    80203c04:	baa080e7          	jalr	-1110(ra) # 802037aa <filealloc>
-    80203c08:	00aa3023          	sd	a0,0(s4)
-    80203c0c:	c92d                	beqz	a0,80203c7e <pipealloc+0xa6>
+    80203bf6:	00000097          	auipc	ra,0x0
+    80203bfa:	bb6080e7          	jalr	-1098(ra) # 802037ac <filealloc>
+    80203bfe:	e088                	sd	a0,0(s1)
+    80203c00:	c551                	beqz	a0,80203c8c <pipealloc+0xb2>
+    80203c02:	00000097          	auipc	ra,0x0
+    80203c06:	baa080e7          	jalr	-1110(ra) # 802037ac <filealloc>
+    80203c0a:	00aa3023          	sd	a0,0(s4)
+    80203c0e:	c92d                	beqz	a0,80203c80 <pipealloc+0xa6>
     goto bad;
   if((pi = (struct pipe*)kalloc()) == NULL)
-    80203c0e:	ffffd097          	auipc	ra,0xffffd
-    80203c12:	94c080e7          	jalr	-1716(ra) # 8020055a <kalloc>
-    80203c16:	892a                	mv	s2,a0
-    80203c18:	c125                	beqz	a0,80203c78 <pipealloc+0xa0>
+    80203c10:	ffffd097          	auipc	ra,0xffffd
+    80203c14:	94a080e7          	jalr	-1718(ra) # 8020055a <kalloc>
+    80203c18:	892a                	mv	s2,a0
+    80203c1a:	c125                	beqz	a0,80203c7a <pipealloc+0xa0>
     goto bad;
   pi->readopen = 1;
-    80203c1a:	4985                	li	s3,1
-    80203c1c:	23352023          	sw	s3,544(a0)
+    80203c1c:	4985                	li	s3,1
+    80203c1e:	23352023          	sw	s3,544(a0)
   pi->writeopen = 1;
-    80203c20:	23352223          	sw	s3,548(a0)
+    80203c22:	23352223          	sw	s3,548(a0)
   pi->nwrite = 0;
-    80203c24:	20052e23          	sw	zero,540(a0)
+    80203c26:	20052e23          	sw	zero,540(a0)
   pi->nread = 0;
-    80203c28:	20052c23          	sw	zero,536(a0)
+    80203c2a:	20052c23          	sw	zero,536(a0)
   initlock(&pi->lock, "pipe");
-    80203c2c:	00006597          	auipc	a1,0x6
-    80203c30:	e5458593          	addi	a1,a1,-428 # 80209a80 <digits+0x700>
-    80203c34:	ffffd097          	auipc	ra,0xffffd
-    80203c38:	a4e080e7          	jalr	-1458(ra) # 80200682 <initlock>
+    80203c2e:	00006597          	auipc	a1,0x6
+    80203c32:	e5258593          	addi	a1,a1,-430 # 80209a80 <digits+0x700>
+    80203c36:	ffffd097          	auipc	ra,0xffffd
+    80203c3a:	a4c080e7          	jalr	-1460(ra) # 80200682 <initlock>
   (*f0)->type = FD_PIPE;
-    80203c3c:	609c                	ld	a5,0(s1)
-    80203c3e:	0137a023          	sw	s3,0(a5)
+    80203c3e:	609c                	ld	a5,0(s1)
+    80203c40:	0137a023          	sw	s3,0(a5)
   (*f0)->readable = 1;
-    80203c42:	609c                	ld	a5,0(s1)
-    80203c44:	01378423          	sb	s3,8(a5)
+    80203c44:	609c                	ld	a5,0(s1)
+    80203c46:	01378423          	sb	s3,8(a5)
   (*f0)->writable = 0;
-    80203c48:	609c                	ld	a5,0(s1)
-    80203c4a:	000784a3          	sb	zero,9(a5)
+    80203c4a:	609c                	ld	a5,0(s1)
+    80203c4c:	000784a3          	sb	zero,9(a5)
   (*f0)->pipe = pi;
-    80203c4e:	609c                	ld	a5,0(s1)
-    80203c50:	0127b823          	sd	s2,16(a5)
+    80203c50:	609c                	ld	a5,0(s1)
+    80203c52:	0127b823          	sd	s2,16(a5)
   (*f1)->type = FD_PIPE;
-    80203c54:	000a3783          	ld	a5,0(s4)
-    80203c58:	0137a023          	sw	s3,0(a5)
+    80203c56:	000a3783          	ld	a5,0(s4)
+    80203c5a:	0137a023          	sw	s3,0(a5)
   (*f1)->readable = 0;
-    80203c5c:	000a3783          	ld	a5,0(s4)
-    80203c60:	00078423          	sb	zero,8(a5)
+    80203c5e:	000a3783          	ld	a5,0(s4)
+    80203c62:	00078423          	sb	zero,8(a5)
   (*f1)->writable = 1;
-    80203c64:	000a3783          	ld	a5,0(s4)
-    80203c68:	013784a3          	sb	s3,9(a5)
+    80203c66:	000a3783          	ld	a5,0(s4)
+    80203c6a:	013784a3          	sb	s3,9(a5)
   (*f1)->pipe = pi;
-    80203c6c:	000a3783          	ld	a5,0(s4)
-    80203c70:	0127b823          	sd	s2,16(a5)
+    80203c6e:	000a3783          	ld	a5,0(s4)
+    80203c72:	0127b823          	sd	s2,16(a5)
   return 0;
-    80203c74:	4501                	li	a0,0
-    80203c76:	a025                	j	80203c9e <pipealloc+0xc6>
+    80203c76:	4501                	li	a0,0
+    80203c78:	a025                	j	80203ca0 <pipealloc+0xc6>
 
  bad:
   if(pi)
     kfree((char*)pi);
   if(*f0)
-    80203c78:	6088                	ld	a0,0(s1)
-    80203c7a:	e501                	bnez	a0,80203c82 <pipealloc+0xaa>
-    80203c7c:	a039                	j	80203c8a <pipealloc+0xb2>
-    80203c7e:	6088                	ld	a0,0(s1)
-    80203c80:	c51d                	beqz	a0,80203cae <pipealloc+0xd6>
+    80203c7a:	6088                	ld	a0,0(s1)
+    80203c7c:	e501                	bnez	a0,80203c84 <pipealloc+0xaa>
+    80203c7e:	a039                	j	80203c8c <pipealloc+0xb2>
+    80203c80:	6088                	ld	a0,0(s1)
+    80203c82:	c51d                	beqz	a0,80203cb0 <pipealloc+0xd6>
     fileclose(*f0);
-    80203c82:	00000097          	auipc	ra,0x0
-    80203c86:	be4080e7          	jalr	-1052(ra) # 80203866 <fileclose>
+    80203c84:	00000097          	auipc	ra,0x0
+    80203c88:	be4080e7          	jalr	-1052(ra) # 80203868 <fileclose>
   if(*f1)
-    80203c8a:	000a3783          	ld	a5,0(s4)
+    80203c8c:	000a3783          	ld	a5,0(s4)
     fileclose(*f1);
   return -1;
-    80203c8e:	557d                	li	a0,-1
+    80203c90:	557d                	li	a0,-1
   if(*f1)
-    80203c90:	c799                	beqz	a5,80203c9e <pipealloc+0xc6>
+    80203c92:	c799                	beqz	a5,80203ca0 <pipealloc+0xc6>
     fileclose(*f1);
-    80203c92:	853e                	mv	a0,a5
-    80203c94:	00000097          	auipc	ra,0x0
-    80203c98:	bd2080e7          	jalr	-1070(ra) # 80203866 <fileclose>
+    80203c94:	853e                	mv	a0,a5
+    80203c96:	00000097          	auipc	ra,0x0
+    80203c9a:	bd2080e7          	jalr	-1070(ra) # 80203868 <fileclose>
   return -1;
-    80203c9c:	557d                	li	a0,-1
-}
-    80203c9e:	70a2                	ld	ra,40(sp)
-    80203ca0:	7402                	ld	s0,32(sp)
-    80203ca2:	64e2                	ld	s1,24(sp)
-    80203ca4:	6942                	ld	s2,16(sp)
-    80203ca6:	69a2                	ld	s3,8(sp)
-    80203ca8:	6a02                	ld	s4,0(sp)
-    80203caa:	6145                	addi	sp,sp,48
-    80203cac:	8082                	ret
+    80203c9e:	557d                	li	a0,-1
+}
+    80203ca0:	70a2                	ld	ra,40(sp)
+    80203ca2:	7402                	ld	s0,32(sp)
+    80203ca4:	64e2                	ld	s1,24(sp)
+    80203ca6:	6942                	ld	s2,16(sp)
+    80203ca8:	69a2                	ld	s3,8(sp)
+    80203caa:	6a02                	ld	s4,0(sp)
+    80203cac:	6145                	addi	sp,sp,48
+    80203cae:	8082                	ret
   return -1;
-    80203cae:	557d                	li	a0,-1
-    80203cb0:	b7fd                	j	80203c9e <pipealloc+0xc6>
+    80203cb0:	557d                	li	a0,-1
+    80203cb2:	b7fd                	j	80203ca0 <pipealloc+0xc6>
 
-0000000080203cb2 <pipeclose>:
+0000000080203cb4 <pipeclose>:
 
 void
 pipeclose(struct pipe *pi, int writable)
 {
-    80203cb2:	1101                	addi	sp,sp,-32
-    80203cb4:	ec06                	sd	ra,24(sp)
-    80203cb6:	e822                	sd	s0,16(sp)
-    80203cb8:	e426                	sd	s1,8(sp)
-    80203cba:	e04a                	sd	s2,0(sp)
-    80203cbc:	1000                	addi	s0,sp,32
-    80203cbe:	84aa                	mv	s1,a0
-    80203cc0:	892e                	mv	s2,a1
+    80203cb4:	1101                	addi	sp,sp,-32
+    80203cb6:	ec06                	sd	ra,24(sp)
+    80203cb8:	e822                	sd	s0,16(sp)
+    80203cba:	e426                	sd	s1,8(sp)
+    80203cbc:	e04a                	sd	s2,0(sp)
+    80203cbe:	1000                	addi	s0,sp,32
+    80203cc0:	84aa                	mv	s1,a0
+    80203cc2:	892e                	mv	s2,a1
   acquire(&pi->lock);
-    80203cc2:	ffffd097          	auipc	ra,0xffffd
-    80203cc6:	a04080e7          	jalr	-1532(ra) # 802006c6 <acquire>
+    80203cc4:	ffffd097          	auipc	ra,0xffffd
+    80203cc8:	a02080e7          	jalr	-1534(ra) # 802006c6 <acquire>
   if(writable){
-    80203cca:	02090d63          	beqz	s2,80203d04 <pipeclose+0x52>
+    80203ccc:	02090d63          	beqz	s2,80203d06 <pipeclose+0x52>
     pi->writeopen = 0;
-    80203cce:	2204a223          	sw	zero,548(s1)
+    80203cd0:	2204a223          	sw	zero,548(s1)
     wakeup(&pi->nread);
-    80203cd2:	21848513          	addi	a0,s1,536
-    80203cd6:	ffffe097          	auipc	ra,0xffffe
-    80203cda:	762080e7          	jalr	1890(ra) # 80202438 <wakeup>
+    80203cd4:	21848513          	addi	a0,s1,536
+    80203cd8:	ffffe097          	auipc	ra,0xffffe
+    80203cdc:	760080e7          	jalr	1888(ra) # 80202438 <wakeup>
   } else {
     pi->readopen = 0;
     wakeup(&pi->nwrite);
   }
   if(pi->readopen == 0 && pi->writeopen == 0){
-    80203cde:	2204b783          	ld	a5,544(s1)
-    80203ce2:	eb95                	bnez	a5,80203d16 <pipeclose+0x64>
+    80203ce0:	2204b783          	ld	a5,544(s1)
+    80203ce4:	eb95                	bnez	a5,80203d18 <pipeclose+0x64>
     release(&pi->lock);
-    80203ce4:	8526                	mv	a0,s1
-    80203ce6:	ffffd097          	auipc	ra,0xffffd
-    80203cea:	a34080e7          	jalr	-1484(ra) # 8020071a <release>
+    80203ce6:	8526                	mv	a0,s1
+    80203ce8:	ffffd097          	auipc	ra,0xffffd
+    80203cec:	a32080e7          	jalr	-1486(ra) # 8020071a <release>
     kfree((char*)pi);
-    80203cee:	8526                	mv	a0,s1
-    80203cf0:	ffffc097          	auipc	ra,0xffffc
-    80203cf4:	750080e7          	jalr	1872(ra) # 80200440 <kfree>
+    80203cf0:	8526                	mv	a0,s1
+    80203cf2:	ffffc097          	auipc	ra,0xffffc
+    80203cf6:	74e080e7          	jalr	1870(ra) # 80200440 <kfree>
   } else
     release(&pi->lock);
 }
-    80203cf8:	60e2                	ld	ra,24(sp)
-    80203cfa:	6442                	ld	s0,16(sp)
-    80203cfc:	64a2                	ld	s1,8(sp)
-    80203cfe:	6902                	ld	s2,0(sp)
-    80203d00:	6105                	addi	sp,sp,32
-    80203d02:	8082                	ret
+    80203cfa:	60e2                	ld	ra,24(sp)
+    80203cfc:	6442                	ld	s0,16(sp)
+    80203cfe:	64a2                	ld	s1,8(sp)
+    80203d00:	6902                	ld	s2,0(sp)
+    80203d02:	6105                	addi	sp,sp,32
+    80203d04:	8082                	ret
     pi->readopen = 0;
-    80203d04:	2204a023          	sw	zero,544(s1)
+    80203d06:	2204a023          	sw	zero,544(s1)
     wakeup(&pi->nwrite);
-    80203d08:	21c48513          	addi	a0,s1,540
-    80203d0c:	ffffe097          	auipc	ra,0xffffe
-    80203d10:	72c080e7          	jalr	1836(ra) # 80202438 <wakeup>
-    80203d14:	b7e9                	j	80203cde <pipeclose+0x2c>
+    80203d0a:	21c48513          	addi	a0,s1,540
+    80203d0e:	ffffe097          	auipc	ra,0xffffe
+    80203d12:	72a080e7          	jalr	1834(ra) # 80202438 <wakeup>
+    80203d16:	b7e9                	j	80203ce0 <pipeclose+0x2c>
     release(&pi->lock);
-    80203d16:	8526                	mv	a0,s1
-    80203d18:	ffffd097          	auipc	ra,0xffffd
-    80203d1c:	a02080e7          	jalr	-1534(ra) # 8020071a <release>
+    80203d18:	8526                	mv	a0,s1
+    80203d1a:	ffffd097          	auipc	ra,0xffffd
+    80203d1e:	a00080e7          	jalr	-1536(ra) # 8020071a <release>
 }
-    80203d20:	bfe1                	j	80203cf8 <pipeclose+0x46>
+    80203d22:	bfe1                	j	80203cfa <pipeclose+0x46>
 
-0000000080203d22 <pipewrite>:
+0000000080203d24 <pipewrite>:
 
 int
 pipewrite(struct pipe *pi, uint64 addr, int n)
 {
-    80203d22:	7159                	addi	sp,sp,-112
-    80203d24:	f486                	sd	ra,104(sp)
-    80203d26:	f0a2                	sd	s0,96(sp)
-    80203d28:	eca6                	sd	s1,88(sp)
-    80203d2a:	e8ca                	sd	s2,80(sp)
-    80203d2c:	e4ce                	sd	s3,72(sp)
-    80203d2e:	e0d2                	sd	s4,64(sp)
-    80203d30:	fc56                	sd	s5,56(sp)
-    80203d32:	f85a                	sd	s6,48(sp)
-    80203d34:	f45e                	sd	s7,40(sp)
-    80203d36:	f062                	sd	s8,32(sp)
-    80203d38:	ec66                	sd	s9,24(sp)
-    80203d3a:	1880                	addi	s0,sp,112
-    80203d3c:	84aa                	mv	s1,a0
-    80203d3e:	8b2e                	mv	s6,a1
-    80203d40:	8ab2                	mv	s5,a2
+    80203d24:	7159                	addi	sp,sp,-112
+    80203d26:	f486                	sd	ra,104(sp)
+    80203d28:	f0a2                	sd	s0,96(sp)
+    80203d2a:	eca6                	sd	s1,88(sp)
+    80203d2c:	e8ca                	sd	s2,80(sp)
+    80203d2e:	e4ce                	sd	s3,72(sp)
+    80203d30:	e0d2                	sd	s4,64(sp)
+    80203d32:	fc56                	sd	s5,56(sp)
+    80203d34:	f85a                	sd	s6,48(sp)
+    80203d36:	f45e                	sd	s7,40(sp)
+    80203d38:	f062                	sd	s8,32(sp)
+    80203d3a:	ec66                	sd	s9,24(sp)
+    80203d3c:	1880                	addi	s0,sp,112
+    80203d3e:	84aa                	mv	s1,a0
+    80203d40:	8b2e                	mv	s6,a1
+    80203d42:	8ab2                	mv	s5,a2
   int i;
   char ch;
   struct proc *pr = myproc();
-    80203d42:	ffffe097          	auipc	ra,0xffffe
-    80203d46:	cfa080e7          	jalr	-774(ra) # 80201a3c <myproc>
-    80203d4a:	892a                	mv	s2,a0
+    80203d44:	ffffe097          	auipc	ra,0xffffe
+    80203d48:	cf8080e7          	jalr	-776(ra) # 80201a3c <myproc>
+    80203d4c:	892a                	mv	s2,a0
 
   acquire(&pi->lock);
-    80203d4c:	8526                	mv	a0,s1
-    80203d4e:	ffffd097          	auipc	ra,0xffffd
-    80203d52:	978080e7          	jalr	-1672(ra) # 802006c6 <acquire>
+    80203d4e:	8526                	mv	a0,s1
+    80203d50:	ffffd097          	auipc	ra,0xffffd
+    80203d54:	976080e7          	jalr	-1674(ra) # 802006c6 <acquire>
   for(i = 0; i < n; i++){
-    80203d56:	09505763          	blez	s5,80203de4 <pipewrite+0xc2>
-    80203d5a:	4b81                	li	s7,0
+    80203d58:	09505763          	blez	s5,80203de6 <pipewrite+0xc2>
+    80203d5c:	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);
-    80203d5c:	21848a13          	addi	s4,s1,536
+    80203d5e:	21848a13          	addi	s4,s1,536
       sleep(&pi->nwrite, &pi->lock);
-    80203d60:	21c48993          	addi	s3,s1,540
+    80203d62:	21c48993          	addi	s3,s1,540
     }
     // if(copyin(pr->pagetable, &ch, addr + i, 1) == -1)
     if(copyin2(&ch, addr + i, 1) == -1)
-    80203d64:	f9f40c93          	addi	s9,s0,-97
-    80203d68:	5c7d                	li	s8,-1
+    80203d66:	f9f40c93          	addi	s9,s0,-97
+    80203d6a:	5c7d                	li	s8,-1
     while(pi->nwrite == pi->nread + PIPESIZE){  //DOC: pipewrite-full
-    80203d6a:	2184a783          	lw	a5,536(s1)
-    80203d6e:	21c4a703          	lw	a4,540(s1)
-    80203d72:	2007879b          	addiw	a5,a5,512
-    80203d76:	02f71b63          	bne	a4,a5,80203dac <pipewrite+0x8a>
+    80203d6c:	2184a783          	lw	a5,536(s1)
+    80203d70:	21c4a703          	lw	a4,540(s1)
+    80203d74:	2007879b          	addiw	a5,a5,512
+    80203d78:	02f71b63          	bne	a4,a5,80203dae <pipewrite+0x8a>
       if(pi->readopen == 0 || pr->killed){
-    80203d7a:	2204a783          	lw	a5,544(s1)
-    80203d7e:	c3c1                	beqz	a5,80203dfe <pipewrite+0xdc>
-    80203d80:	03092783          	lw	a5,48(s2)
-    80203d84:	efad                	bnez	a5,80203dfe <pipewrite+0xdc>
+    80203d7c:	2204a783          	lw	a5,544(s1)
+    80203d80:	c3c1                	beqz	a5,80203e00 <pipewrite+0xdc>
+    80203d82:	03092783          	lw	a5,48(s2)
+    80203d86:	efad                	bnez	a5,80203e00 <pipewrite+0xdc>
       wakeup(&pi->nread);
-    80203d86:	8552                	mv	a0,s4
-    80203d88:	ffffe097          	auipc	ra,0xffffe
-    80203d8c:	6b0080e7          	jalr	1712(ra) # 80202438 <wakeup>
+    80203d88:	8552                	mv	a0,s4
+    80203d8a:	ffffe097          	auipc	ra,0xffffe
+    80203d8e:	6ae080e7          	jalr	1710(ra) # 80202438 <wakeup>
       sleep(&pi->nwrite, &pi->lock);
-    80203d90:	85a6                	mv	a1,s1
-    80203d92:	854e                	mv	a0,s3
-    80203d94:	ffffe097          	auipc	ra,0xffffe
-    80203d98:	528080e7          	jalr	1320(ra) # 802022bc <sleep>
+    80203d92:	85a6                	mv	a1,s1
+    80203d94:	854e                	mv	a0,s3
+    80203d96:	ffffe097          	auipc	ra,0xffffe
+    80203d9a:	526080e7          	jalr	1318(ra) # 802022bc <sleep>
     while(pi->nwrite == pi->nread + PIPESIZE){  //DOC: pipewrite-full
-    80203d9c:	2184a783          	lw	a5,536(s1)
-    80203da0:	21c4a703          	lw	a4,540(s1)
-    80203da4:	2007879b          	addiw	a5,a5,512
-    80203da8:	fcf709e3          	beq	a4,a5,80203d7a <pipewrite+0x58>
+    80203d9e:	2184a783          	lw	a5,536(s1)
+    80203da2:	21c4a703          	lw	a4,540(s1)
+    80203da6:	2007879b          	addiw	a5,a5,512
+    80203daa:	fcf709e3          	beq	a4,a5,80203d7c <pipewrite+0x58>
     if(copyin2(&ch, addr + i, 1) == -1)
-    80203dac:	4605                	li	a2,1
-    80203dae:	85da                	mv	a1,s6
-    80203db0:	8566                	mv	a0,s9
-    80203db2:	ffffd097          	auipc	ra,0xffffd
-    80203db6:	6a0080e7          	jalr	1696(ra) # 80201452 <copyin2>
-    80203dba:	03850663          	beq	a0,s8,80203de6 <pipewrite+0xc4>
+    80203dae:	4605                	li	a2,1
+    80203db0:	85da                	mv	a1,s6
+    80203db2:	8566                	mv	a0,s9
+    80203db4:	ffffd097          	auipc	ra,0xffffd
+    80203db8:	69e080e7          	jalr	1694(ra) # 80201452 <copyin2>
+    80203dbc:	03850663          	beq	a0,s8,80203de8 <pipewrite+0xc4>
       break;
     pi->data[pi->nwrite++ % PIPESIZE] = ch;
-    80203dbe:	21c4a783          	lw	a5,540(s1)
-    80203dc2:	0017871b          	addiw	a4,a5,1
-    80203dc6:	20e4ae23          	sw	a4,540(s1)
-    80203dca:	1ff7f793          	andi	a5,a5,511
-    80203dce:	97a6                	add	a5,a5,s1
-    80203dd0:	f9f44703          	lbu	a4,-97(s0)
-    80203dd4:	00e78c23          	sb	a4,24(a5)
+    80203dc0:	21c4a783          	lw	a5,540(s1)
+    80203dc4:	0017871b          	addiw	a4,a5,1
+    80203dc8:	20e4ae23          	sw	a4,540(s1)
+    80203dcc:	1ff7f793          	andi	a5,a5,511
+    80203dd0:	97a6                	add	a5,a5,s1
+    80203dd2:	f9f44703          	lbu	a4,-97(s0)
+    80203dd6:	00e78c23          	sb	a4,24(a5)
   for(i = 0; i < n; i++){
-    80203dd8:	2b85                	addiw	s7,s7,1
-    80203dda:	0b05                	addi	s6,s6,1
-    80203ddc:	f97a97e3          	bne	s5,s7,80203d6a <pipewrite+0x48>
-    80203de0:	8bd6                	mv	s7,s5
-    80203de2:	a011                	j	80203de6 <pipewrite+0xc4>
-    80203de4:	4b81                	li	s7,0
+    80203dda:	2b85                	addiw	s7,s7,1
+    80203ddc:	0b05                	addi	s6,s6,1
+    80203dde:	f97a97e3          	bne	s5,s7,80203d6c <pipewrite+0x48>
+    80203de2:	8bd6                	mv	s7,s5
+    80203de4:	a011                	j	80203de8 <pipewrite+0xc4>
+    80203de6:	4b81                	li	s7,0
   }
   wakeup(&pi->nread);
-    80203de6:	21848513          	addi	a0,s1,536
-    80203dea:	ffffe097          	auipc	ra,0xffffe
-    80203dee:	64e080e7          	jalr	1614(ra) # 80202438 <wakeup>
+    80203de8:	21848513          	addi	a0,s1,536
+    80203dec:	ffffe097          	auipc	ra,0xffffe
+    80203df0:	64c080e7          	jalr	1612(ra) # 80202438 <wakeup>
   release(&pi->lock);
-    80203df2:	8526                	mv	a0,s1
-    80203df4:	ffffd097          	auipc	ra,0xffffd
-    80203df8:	926080e7          	jalr	-1754(ra) # 8020071a <release>
+    80203df4:	8526                	mv	a0,s1
+    80203df6:	ffffd097          	auipc	ra,0xffffd
+    80203dfa:	924080e7          	jalr	-1756(ra) # 8020071a <release>
   return i;
-    80203dfc:	a039                	j	80203e0a <pipewrite+0xe8>
+    80203dfe:	a039                	j	80203e0c <pipewrite+0xe8>
         release(&pi->lock);
-    80203dfe:	8526                	mv	a0,s1
-    80203e00:	ffffd097          	auipc	ra,0xffffd
-    80203e04:	91a080e7          	jalr	-1766(ra) # 8020071a <release>
+    80203e00:	8526                	mv	a0,s1
+    80203e02:	ffffd097          	auipc	ra,0xffffd
+    80203e06:	918080e7          	jalr	-1768(ra) # 8020071a <release>
         return -1;
-    80203e08:	5bfd                	li	s7,-1
-}
-    80203e0a:	855e                	mv	a0,s7
-    80203e0c:	70a6                	ld	ra,104(sp)
-    80203e0e:	7406                	ld	s0,96(sp)
-    80203e10:	64e6                	ld	s1,88(sp)
-    80203e12:	6946                	ld	s2,80(sp)
-    80203e14:	69a6                	ld	s3,72(sp)
-    80203e16:	6a06                	ld	s4,64(sp)
-    80203e18:	7ae2                	ld	s5,56(sp)
-    80203e1a:	7b42                	ld	s6,48(sp)
-    80203e1c:	7ba2                	ld	s7,40(sp)
-    80203e1e:	7c02                	ld	s8,32(sp)
-    80203e20:	6ce2                	ld	s9,24(sp)
-    80203e22:	6165                	addi	sp,sp,112
-    80203e24:	8082                	ret
-
-0000000080203e26 <piperead>:
+    80203e0a:	5bfd                	li	s7,-1
+}
+    80203e0c:	855e                	mv	a0,s7
+    80203e0e:	70a6                	ld	ra,104(sp)
+    80203e10:	7406                	ld	s0,96(sp)
+    80203e12:	64e6                	ld	s1,88(sp)
+    80203e14:	6946                	ld	s2,80(sp)
+    80203e16:	69a6                	ld	s3,72(sp)
+    80203e18:	6a06                	ld	s4,64(sp)
+    80203e1a:	7ae2                	ld	s5,56(sp)
+    80203e1c:	7b42                	ld	s6,48(sp)
+    80203e1e:	7ba2                	ld	s7,40(sp)
+    80203e20:	7c02                	ld	s8,32(sp)
+    80203e22:	6ce2                	ld	s9,24(sp)
+    80203e24:	6165                	addi	sp,sp,112
+    80203e26:	8082                	ret
+
+0000000080203e28 <piperead>:
 
 int
 piperead(struct pipe *pi, uint64 addr, int n)
 {
-    80203e26:	715d                	addi	sp,sp,-80
-    80203e28:	e486                	sd	ra,72(sp)
-    80203e2a:	e0a2                	sd	s0,64(sp)
-    80203e2c:	fc26                	sd	s1,56(sp)
-    80203e2e:	f84a                	sd	s2,48(sp)
-    80203e30:	f44e                	sd	s3,40(sp)
-    80203e32:	f052                	sd	s4,32(sp)
-    80203e34:	ec56                	sd	s5,24(sp)
-    80203e36:	e85a                	sd	s6,16(sp)
-    80203e38:	0880                	addi	s0,sp,80
-    80203e3a:	84aa                	mv	s1,a0
-    80203e3c:	892e                	mv	s2,a1
-    80203e3e:	8a32                	mv	s4,a2
+    80203e28:	715d                	addi	sp,sp,-80
+    80203e2a:	e486                	sd	ra,72(sp)
+    80203e2c:	e0a2                	sd	s0,64(sp)
+    80203e2e:	fc26                	sd	s1,56(sp)
+    80203e30:	f84a                	sd	s2,48(sp)
+    80203e32:	f44e                	sd	s3,40(sp)
+    80203e34:	f052                	sd	s4,32(sp)
+    80203e36:	ec56                	sd	s5,24(sp)
+    80203e38:	e85a                	sd	s6,16(sp)
+    80203e3a:	0880                	addi	s0,sp,80
+    80203e3c:	84aa                	mv	s1,a0
+    80203e3e:	892e                	mv	s2,a1
+    80203e40:	8a32                	mv	s4,a2
   int i;
   struct proc *pr = myproc();
-    80203e40:	ffffe097          	auipc	ra,0xffffe
-    80203e44:	bfc080e7          	jalr	-1028(ra) # 80201a3c <myproc>
-    80203e48:	89aa                	mv	s3,a0
+    80203e42:	ffffe097          	auipc	ra,0xffffe
+    80203e46:	bfa080e7          	jalr	-1030(ra) # 80201a3c <myproc>
+    80203e4a:	89aa                	mv	s3,a0
   char ch;
 
   acquire(&pi->lock);
-    80203e4a:	8526                	mv	a0,s1
-    80203e4c:	ffffd097          	auipc	ra,0xffffd
-    80203e50:	87a080e7          	jalr	-1926(ra) # 802006c6 <acquire>
+    80203e4c:	8526                	mv	a0,s1
+    80203e4e:	ffffd097          	auipc	ra,0xffffd
+    80203e52:	878080e7          	jalr	-1928(ra) # 802006c6 <acquire>
   while(pi->nread == pi->nwrite && pi->writeopen){  //DOC: pipe-empty
-    80203e54:	2184a703          	lw	a4,536(s1)
-    80203e58:	21c4a783          	lw	a5,540(s1)
+    80203e56:	2184a703          	lw	a4,536(s1)
+    80203e5a:	21c4a783          	lw	a5,540(s1)
     if(pr->killed){
       release(&pi->lock);
       return -1;
     }
     sleep(&pi->nread, &pi->lock); //DOC: piperead-sleep
-    80203e5c:	21848a93          	addi	s5,s1,536
+    80203e5e:	21848a93          	addi	s5,s1,536
   while(pi->nread == pi->nwrite && pi->writeopen){  //DOC: pipe-empty
-    80203e60:	02f71463          	bne	a4,a5,80203e88 <piperead+0x62>
-    80203e64:	2244a783          	lw	a5,548(s1)
-    80203e68:	c385                	beqz	a5,80203e88 <piperead+0x62>
+    80203e62:	02f71463          	bne	a4,a5,80203e8a <piperead+0x62>
+    80203e66:	2244a783          	lw	a5,548(s1)
+    80203e6a:	c385                	beqz	a5,80203e8a <piperead+0x62>
     if(pr->killed){
-    80203e6a:	0309a783          	lw	a5,48(s3)
-    80203e6e:	ebc1                	bnez	a5,80203efe <piperead+0xd8>
+    80203e6c:	0309a783          	lw	a5,48(s3)
+    80203e70:	ebc1                	bnez	a5,80203f00 <piperead+0xd8>
     sleep(&pi->nread, &pi->lock); //DOC: piperead-sleep
-    80203e70:	85a6                	mv	a1,s1
-    80203e72:	8556                	mv	a0,s5
-    80203e74:	ffffe097          	auipc	ra,0xffffe
-    80203e78:	448080e7          	jalr	1096(ra) # 802022bc <sleep>
+    80203e72:	85a6                	mv	a1,s1
+    80203e74:	8556                	mv	a0,s5
+    80203e76:	ffffe097          	auipc	ra,0xffffe
+    80203e7a:	446080e7          	jalr	1094(ra) # 802022bc <sleep>
   while(pi->nread == pi->nwrite && pi->writeopen){  //DOC: pipe-empty
-    80203e7c:	2184a703          	lw	a4,536(s1)
-    80203e80:	21c4a783          	lw	a5,540(s1)
-    80203e84:	fef700e3          	beq	a4,a5,80203e64 <piperead+0x3e>
+    80203e7e:	2184a703          	lw	a4,536(s1)
+    80203e82:	21c4a783          	lw	a5,540(s1)
+    80203e86:	fef700e3          	beq	a4,a5,80203e66 <piperead+0x3e>
   }
   for(i = 0; i < n; i++){  //DOC: piperead-copy
-    80203e88:	4981                	li	s3,0
+    80203e8a:	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)
-    80203e8a:	fbf40b13          	addi	s6,s0,-65
-    80203e8e:	5afd                	li	s5,-1
+    80203e8c:	fbf40b13          	addi	s6,s0,-65
+    80203e90:	5afd                	li	s5,-1
   for(i = 0; i < n; i++){  //DOC: piperead-copy
-    80203e90:	05405163          	blez	s4,80203ed2 <piperead+0xac>
+    80203e92:	05405163          	blez	s4,80203ed4 <piperead+0xac>
     if(pi->nread == pi->nwrite)
-    80203e94:	2184a783          	lw	a5,536(s1)
-    80203e98:	21c4a703          	lw	a4,540(s1)
-    80203e9c:	02f70b63          	beq	a4,a5,80203ed2 <piperead+0xac>
+    80203e96:	2184a783          	lw	a5,536(s1)
+    80203e9a:	21c4a703          	lw	a4,540(s1)
+    80203e9e:	02f70b63          	beq	a4,a5,80203ed4 <piperead+0xac>
     ch = pi->data[pi->nread++ % PIPESIZE];
-    80203ea0:	0017871b          	addiw	a4,a5,1
-    80203ea4:	20e4ac23          	sw	a4,536(s1)
-    80203ea8:	1ff7f793          	andi	a5,a5,511
-    80203eac:	97a6                	add	a5,a5,s1
-    80203eae:	0187c783          	lbu	a5,24(a5)
-    80203eb2:	faf40fa3          	sb	a5,-65(s0)
+    80203ea2:	0017871b          	addiw	a4,a5,1
+    80203ea6:	20e4ac23          	sw	a4,536(s1)
+    80203eaa:	1ff7f793          	andi	a5,a5,511
+    80203eae:	97a6                	add	a5,a5,s1
+    80203eb0:	0187c783          	lbu	a5,24(a5)
+    80203eb4:	faf40fa3          	sb	a5,-65(s0)
     if(copyout2(addr + i, &ch, 1) == -1)
-    80203eb6:	4605                	li	a2,1
-    80203eb8:	85da                	mv	a1,s6
-    80203eba:	854a                	mv	a0,s2
-    80203ebc:	ffffd097          	auipc	ra,0xffffd
-    80203ec0:	4b6080e7          	jalr	1206(ra) # 80201372 <copyout2>
-    80203ec4:	01550763          	beq	a0,s5,80203ed2 <piperead+0xac>
+    80203eb8:	4605                	li	a2,1
+    80203eba:	85da                	mv	a1,s6
+    80203ebc:	854a                	mv	a0,s2
+    80203ebe:	ffffd097          	auipc	ra,0xffffd
+    80203ec2:	4b4080e7          	jalr	1204(ra) # 80201372 <copyout2>
+    80203ec6:	01550763          	beq	a0,s5,80203ed4 <piperead+0xac>
   for(i = 0; i < n; i++){  //DOC: piperead-copy
-    80203ec8:	2985                	addiw	s3,s3,1
-    80203eca:	0905                	addi	s2,s2,1
-    80203ecc:	fd3a14e3          	bne	s4,s3,80203e94 <piperead+0x6e>
-    80203ed0:	89d2                	mv	s3,s4
+    80203eca:	2985                	addiw	s3,s3,1
+    80203ecc:	0905                	addi	s2,s2,1
+    80203ece:	fd3a14e3          	bne	s4,s3,80203e96 <piperead+0x6e>
+    80203ed2:	89d2                	mv	s3,s4
       break;
   }
   wakeup(&pi->nwrite);  //DOC: piperead-wakeup
-    80203ed2:	21c48513          	addi	a0,s1,540
-    80203ed6:	ffffe097          	auipc	ra,0xffffe
-    80203eda:	562080e7          	jalr	1378(ra) # 80202438 <wakeup>
+    80203ed4:	21c48513          	addi	a0,s1,540
+    80203ed8:	ffffe097          	auipc	ra,0xffffe
+    80203edc:	560080e7          	jalr	1376(ra) # 80202438 <wakeup>
   release(&pi->lock);
-    80203ede:	8526                	mv	a0,s1
-    80203ee0:	ffffd097          	auipc	ra,0xffffd
-    80203ee4:	83a080e7          	jalr	-1990(ra) # 8020071a <release>
+    80203ee0:	8526                	mv	a0,s1
+    80203ee2:	ffffd097          	auipc	ra,0xffffd
+    80203ee6:	838080e7          	jalr	-1992(ra) # 8020071a <release>
   return i;
 }
-    80203ee8:	854e                	mv	a0,s3
-    80203eea:	60a6                	ld	ra,72(sp)
-    80203eec:	6406                	ld	s0,64(sp)
-    80203eee:	74e2                	ld	s1,56(sp)
-    80203ef0:	7942                	ld	s2,48(sp)
-    80203ef2:	79a2                	ld	s3,40(sp)
-    80203ef4:	7a02                	ld	s4,32(sp)
-    80203ef6:	6ae2                	ld	s5,24(sp)
-    80203ef8:	6b42                	ld	s6,16(sp)
-    80203efa:	6161                	addi	sp,sp,80
-    80203efc:	8082                	ret
+    80203eea:	854e                	mv	a0,s3
+    80203eec:	60a6                	ld	ra,72(sp)
+    80203eee:	6406                	ld	s0,64(sp)
+    80203ef0:	74e2                	ld	s1,56(sp)
+    80203ef2:	7942                	ld	s2,48(sp)
+    80203ef4:	79a2                	ld	s3,40(sp)
+    80203ef6:	7a02                	ld	s4,32(sp)
+    80203ef8:	6ae2                	ld	s5,24(sp)
+    80203efa:	6b42                	ld	s6,16(sp)
+    80203efc:	6161                	addi	sp,sp,80
+    80203efe:	8082                	ret
       release(&pi->lock);
-    80203efe:	8526                	mv	a0,s1
-    80203f00:	ffffd097          	auipc	ra,0xffffd
-    80203f04:	81a080e7          	jalr	-2022(ra) # 8020071a <release>
+    80203f00:	8526                	mv	a0,s1
+    80203f02:	ffffd097          	auipc	ra,0xffffd
+    80203f06:	818080e7          	jalr	-2024(ra) # 8020071a <release>
       return -1;
-    80203f08:	59fd                	li	s3,-1
-    80203f0a:	bff9                	j	80203ee8 <piperead+0xc2>
+    80203f0a:	59fd                	li	s3,-1
+    80203f0c:	bff9                	j	80203eea <piperead+0xc2>
 
-0000000080203f0c <exec>:
+0000000080203f0e <exec>:
   return 0;
 }
 
 
 int exec(char *path, char **argv)
 {
-    80203f0c:	dd010113          	addi	sp,sp,-560
-    80203f10:	22113423          	sd	ra,552(sp)
-    80203f14:	22813023          	sd	s0,544(sp)
-    80203f18:	20913c23          	sd	s1,536(sp)
-    80203f1c:	21213823          	sd	s2,528(sp)
-    80203f20:	21313423          	sd	s3,520(sp)
-    80203f24:	21413023          	sd	s4,512(sp)
-    80203f28:	ffd6                	sd	s5,504(sp)
-    80203f2a:	fbda                	sd	s6,496(sp)
-    80203f2c:	f7de                	sd	s7,488(sp)
-    80203f2e:	f3e2                	sd	s8,480(sp)
-    80203f30:	efe6                	sd	s9,472(sp)
-    80203f32:	ebea                	sd	s10,464(sp)
-    80203f34:	e7ee                	sd	s11,456(sp)
-    80203f36:	1c00                	addi	s0,sp,560
-    80203f38:	892a                	mv	s2,a0
-    80203f3a:	dca43c23          	sd	a0,-552(s0)
-    80203f3e:	deb43423          	sd	a1,-536(s0)
+    80203f0e:	dd010113          	addi	sp,sp,-560
+    80203f12:	22113423          	sd	ra,552(sp)
+    80203f16:	22813023          	sd	s0,544(sp)
+    80203f1a:	20913c23          	sd	s1,536(sp)
+    80203f1e:	21213823          	sd	s2,528(sp)
+    80203f22:	21313423          	sd	s3,520(sp)
+    80203f26:	21413023          	sd	s4,512(sp)
+    80203f2a:	ffd6                	sd	s5,504(sp)
+    80203f2c:	fbda                	sd	s6,496(sp)
+    80203f2e:	f7de                	sd	s7,488(sp)
+    80203f30:	f3e2                	sd	s8,480(sp)
+    80203f32:	efe6                	sd	s9,472(sp)
+    80203f34:	ebea                	sd	s10,464(sp)
+    80203f36:	e7ee                	sd	s11,456(sp)
+    80203f38:	1c00                	addi	s0,sp,560
+    80203f3a:	892a                	mv	s2,a0
+    80203f3c:	dca43c23          	sd	a0,-552(s0)
+    80203f40:	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();
-    80203f42:	ffffe097          	auipc	ra,0xffffe
-    80203f46:	afa080e7          	jalr	-1286(ra) # 80201a3c <myproc>
-    80203f4a:	84aa                	mv	s1,a0
+    80203f44:	ffffe097          	auipc	ra,0xffffe
+    80203f48:	af8080e7          	jalr	-1288(ra) # 80201a3c <myproc>
+    80203f4c:	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) {
-    80203f4c:	ffffc097          	auipc	ra,0xffffc
-    80203f50:	60e080e7          	jalr	1550(ra) # 8020055a <kalloc>
-    80203f54:	2a050863          	beqz	a0,80204204 <exec+0x2f8>
-    80203f58:	8b2a                	mv	s6,a0
+    80203f4e:	ffffc097          	auipc	ra,0xffffc
+    80203f52:	60c080e7          	jalr	1548(ra) # 8020055a <kalloc>
+    80203f56:	2a050863          	beqz	a0,80204206 <exec+0x2f8>
+    80203f5a:	8b2a                	mv	s6,a0
     return -1;
   }
   memmove(kpagetable, p->kpagetable, PGSIZE);
-    80203f5a:	6605                	lui	a2,0x1
-    80203f5c:	6cac                	ld	a1,88(s1)
-    80203f5e:	ffffd097          	auipc	ra,0xffffd
-    80203f62:	860080e7          	jalr	-1952(ra) # 802007be <memmove>
+    80203f5c:	6605                	lui	a2,0x1
+    80203f5e:	6cac                	ld	a1,88(s1)
+    80203f60:	ffffd097          	auipc	ra,0xffffd
+    80203f64:	85e080e7          	jalr	-1954(ra) # 802007be <memmove>
   for (int i = 0; i < PX(2, MAXUVA); i++) {
     kpagetable[i] = 0;
-    80203f66:	000b3023          	sd	zero,0(s6)
-    80203f6a:	000b3423          	sd	zero,8(s6)
+    80203f68:	000b3023          	sd	zero,0(s6)
+    80203f6c:	000b3423          	sd	zero,8(s6)
   }
 
   if((ep = ename(path)) == NULL) {
-    80203f6e:	854a                	mv	a0,s2
-    80203f70:	00003097          	auipc	ra,0x3
-    80203f74:	a46080e7          	jalr	-1466(ra) # 802069b6 <ename>
-    80203f78:	8a2a                	mv	s4,a0
-    80203f7a:	3a050e63          	beqz	a0,80204336 <exec+0x42a>
+    80203f70:	854a                	mv	a0,s2
+    80203f72:	00003097          	auipc	ra,0x3
+    80203f76:	a54080e7          	jalr	-1452(ra) # 802069c6 <ename>
+    80203f7a:	8a2a                	mv	s4,a0
+    80203f7c:	3a050e63          	beqz	a0,80204338 <exec+0x42a>
     #ifdef DEBUG
     printf("[exec] %s not found\n", path);
     #endif
     goto bad;
   }
   elock(ep);
-    80203f7e:	00002097          	auipc	ra,0x2
-    80203f82:	290080e7          	jalr	656(ra) # 8020620e <elock>
+    80203f80:	00002097          	auipc	ra,0x2
+    80203f84:	29e080e7          	jalr	670(ra) # 8020621e <elock>
 
   // Check ELF header
   if(eread(ep, 0, (uint64) &elf, 0, sizeof(elf)) != sizeof(elf))
-    80203f86:	04000713          	li	a4,64
-    80203f8a:	4681                	li	a3,0
-    80203f8c:	e4840613          	addi	a2,s0,-440
-    80203f90:	4581                	li	a1,0
-    80203f92:	8552                	mv	a0,s4
-    80203f94:	00002097          	auipc	ra,0x2
-    80203f98:	976080e7          	jalr	-1674(ra) # 8020590a <eread>
-    80203f9c:	04000793          	li	a5,64
-    80203fa0:	00f51a63          	bne	a0,a5,80203fb4 <exec+0xa8>
+    80203f88:	04000713          	li	a4,64
+    80203f8c:	4681                	li	a3,0
+    80203f8e:	e4840613          	addi	a2,s0,-440
+    80203f92:	4581                	li	a1,0
+    80203f94:	8552                	mv	a0,s4
+    80203f96:	00002097          	auipc	ra,0x2
+    80203f9a:	984080e7          	jalr	-1660(ra) # 8020591a <eread>
+    80203f9e:	04000793          	li	a5,64
+    80203fa2:	00f51a63          	bne	a0,a5,80203fb6 <exec+0xa8>
     goto bad;
   if(elf.magic != ELF_MAGIC)
-    80203fa4:	e4842703          	lw	a4,-440(s0)
-    80203fa8:	464c47b7          	lui	a5,0x464c4
-    80203fac:	57f78793          	addi	a5,a5,1407 # 464c457f <_entry-0x39d3ba81>
-    80203fb0:	00f70963          	beq	a4,a5,80203fc2 <exec+0xb6>
+    80203fa6:	e4842703          	lw	a4,-440(s0)
+    80203faa:	464c47b7          	lui	a5,0x464c4
+    80203fae:	57f78793          	addi	a5,a5,1407 # 464c457f <_entry-0x39d3ba81>
+    80203fb2:	00f70963          	beq	a4,a5,80203fc4 <exec+0xb6>
   printf("[exec] reach bad\n");
   #endif
   if(pagetable)
     proc_freepagetable(pagetable, sz);
   if(kpagetable)
     kvmfree(kpagetable, 0);
-    80203fb4:	4581                	li	a1,0
-    80203fb6:	855a                	mv	a0,s6
-    80203fb8:	ffffd097          	auipc	ra,0xffffd
-    80203fbc:	6ba080e7          	jalr	1722(ra) # 80201672 <kvmfree>
+    80203fb6:	4581                	li	a1,0
+    80203fb8:	855a                	mv	a0,s6
+    80203fba:	ffffd097          	auipc	ra,0xffffd
+    80203fbe:	6b8080e7          	jalr	1720(ra) # 80201672 <kvmfree>
   if(ep){
-    80203fc0:	a4bd                	j	8020422e <exec+0x322>
+    80203fc2:	a4bd                	j	80204230 <exec+0x322>
   if((pagetable = proc_pagetable(p)) == NULL)
-    80203fc2:	8526                	mv	a0,s1
-    80203fc4:	ffffe097          	auipc	ra,0xffffe
-    80203fc8:	b5c080e7          	jalr	-1188(ra) # 80201b20 <proc_pagetable>
-    80203fcc:	e0a43423          	sd	a0,-504(s0)
-    80203fd0:	d175                	beqz	a0,80203fb4 <exec+0xa8>
+    80203fc4:	8526                	mv	a0,s1
+    80203fc6:	ffffe097          	auipc	ra,0xffffe
+    80203fca:	b5a080e7          	jalr	-1190(ra) # 80201b20 <proc_pagetable>
+    80203fce:	e0a43423          	sd	a0,-504(s0)
+    80203fd2:	d175                	beqz	a0,80203fb6 <exec+0xa8>
   for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){
-    80203fd2:	e6842783          	lw	a5,-408(s0)
-    80203fd6:	e8045703          	lhu	a4,-384(s0)
-    80203fda:	cb3d                	beqz	a4,80204050 <exec+0x144>
+    80203fd4:	e6842783          	lw	a5,-408(s0)
+    80203fd8:	e8045703          	lhu	a4,-384(s0)
+    80203fdc:	cb3d                	beqz	a4,80204052 <exec+0x144>
   uint64 argc, sz = 0, sp, ustack[MAXARG+1], stackbase;
-    80203fdc:	4481                	li	s1,0
+    80203fde:	4481                	li	s1,0
   for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){
-    80203fde:	e0043023          	sd	zero,-512(s0)
+    80203fe0:	e0043023          	sd	zero,-512(s0)
     if(eread(ep, 0, (uint64)&ph, off, sizeof(ph)) != sizeof(ph))
-    80203fe2:	e1040713          	addi	a4,s0,-496
-    80203fe6:	dee43023          	sd	a4,-544(s0)
+    80203fe4:	e1040713          	addi	a4,s0,-496
+    80203fe8:	dee43023          	sd	a4,-544(s0)
     if(ph.vaddr % PGSIZE != 0)
-    80203fea:	6a85                	lui	s5,0x1
-    80203fec:	fffa8713          	addi	a4,s5,-1 # fff <_entry-0x801ff001>
-    80203ff0:	dce43823          	sd	a4,-560(s0)
+    80203fec:	6a85                	lui	s5,0x1
+    80203fee:	fffa8713          	addi	a4,s5,-1 # fff <_entry-0x801ff001>
+    80203ff2:	dce43823          	sd	a4,-560(s0)
   for(i = 0; i < sz; i += PGSIZE){
-    80203ff4:	6d85                	lui	s11,0x1
-    80203ff6:	7d7d                	lui	s10,0xfffff
-    80203ff8:	a4c9                	j	802042ba <exec+0x3ae>
+    80203ff6:	6d85                	lui	s11,0x1
+    80203ff8:	7d7d                	lui	s10,0xfffff
+    80203ffa:	a4c9                	j	802042bc <exec+0x3ae>
       panic("loadseg: address should exist");
-    80203ffa:	00006517          	auipc	a0,0x6
-    80203ffe:	b6e50513          	addi	a0,a0,-1170 # 80209b68 <digits+0x7e8>
-    80204002:	ffffc097          	auipc	ra,0xffffc
-    80204006:	142080e7          	jalr	322(ra) # 80200144 <panic>
+    80203ffc:	00006517          	auipc	a0,0x6
+    80204000:	b7450513          	addi	a0,a0,-1164 # 80209b70 <digits+0x7f0>
+    80204004:	ffffc097          	auipc	ra,0xffffc
+    80204008:	140080e7          	jalr	320(ra) # 80200144 <panic>
     if(eread(ep, 0, (uint64)pa, offset+i, n) != n)
-    8020400a:	874a                	mv	a4,s2
-    8020400c:	009c86bb          	addw	a3,s9,s1
-    80204010:	4581                	li	a1,0
-    80204012:	8552                	mv	a0,s4
-    80204014:	00002097          	auipc	ra,0x2
-    80204018:	8f6080e7          	jalr	-1802(ra) # 8020590a <eread>
-    8020401c:	2501                	sext.w	a0,a0
-    8020401e:	1ea91763          	bne	s2,a0,8020420c <exec+0x300>
+    8020400c:	874a                	mv	a4,s2
+    8020400e:	009c86bb          	addw	a3,s9,s1
+    80204012:	4581                	li	a1,0
+    80204014:	8552                	mv	a0,s4
+    80204016:	00002097          	auipc	ra,0x2
+    8020401a:	904080e7          	jalr	-1788(ra) # 8020591a <eread>
+    8020401e:	2501                	sext.w	a0,a0
+    80204020:	1ea91763          	bne	s2,a0,8020420e <exec+0x300>
   for(i = 0; i < sz; i += PGSIZE){
-    80204022:	009d84bb          	addw	s1,s11,s1
-    80204026:	013d09bb          	addw	s3,s10,s3
-    8020402a:	2774f863          	bgeu	s1,s7,8020429a <exec+0x38e>
+    80204024:	009d84bb          	addw	s1,s11,s1
+    80204028:	013d09bb          	addw	s3,s10,s3
+    8020402c:	2774f863          	bgeu	s1,s7,8020429c <exec+0x38e>
     pa = walkaddr(pagetable, va + i);
-    8020402e:	02049593          	slli	a1,s1,0x20
-    80204032:	9181                	srli	a1,a1,0x20
-    80204034:	95e2                	add	a1,a1,s8
-    80204036:	e0843503          	ld	a0,-504(s0)
-    8020403a:	ffffd097          	auipc	ra,0xffffd
-    8020403e:	b74080e7          	jalr	-1164(ra) # 80200bae <walkaddr>
-    80204042:	862a                	mv	a2,a0
+    80204030:	02049593          	slli	a1,s1,0x20
+    80204034:	9181                	srli	a1,a1,0x20
+    80204036:	95e2                	add	a1,a1,s8
+    80204038:	e0843503          	ld	a0,-504(s0)
+    8020403c:	ffffd097          	auipc	ra,0xffffd
+    80204040:	b72080e7          	jalr	-1166(ra) # 80200bae <walkaddr>
+    80204044:	862a                	mv	a2,a0
     if(pa == NULL)
-    80204044:	d95d                	beqz	a0,80203ffa <exec+0xee>
+    80204046:	d95d                	beqz	a0,80203ffc <exec+0xee>
       n = PGSIZE;
-    80204046:	8956                	mv	s2,s5
+    80204048:	8956                	mv	s2,s5
     if(sz - i < PGSIZE)
-    80204048:	fd59f1e3          	bgeu	s3,s5,8020400a <exec+0xfe>
+    8020404a:	fd59f1e3          	bgeu	s3,s5,8020400c <exec+0xfe>
       n = sz - i;
-    8020404c:	894e                	mv	s2,s3
-    8020404e:	bf75                	j	8020400a <exec+0xfe>
+    8020404e:	894e                	mv	s2,s3
+    80204050:	bf75                	j	8020400c <exec+0xfe>
   uint64 argc, sz = 0, sp, ustack[MAXARG+1], stackbase;
-    80204050:	4481                	li	s1,0
+    80204052:	4481                	li	s1,0
   eunlock(ep);
-    80204052:	8552                	mv	a0,s4
-    80204054:	00002097          	auipc	ra,0x2
-    80204058:	1f0080e7          	jalr	496(ra) # 80206244 <eunlock>
+    80204054:	8552                	mv	a0,s4
+    80204056:	00002097          	auipc	ra,0x2
+    8020405a:	1fe080e7          	jalr	510(ra) # 80206254 <eunlock>
   eput(ep);
-    8020405c:	8552                	mv	a0,s4
-    8020405e:	00002097          	auipc	ra,0x2
-    80204062:	234080e7          	jalr	564(ra) # 80206292 <eput>
+    8020405e:	8552                	mv	a0,s4
+    80204060:	00002097          	auipc	ra,0x2
+    80204064:	242080e7          	jalr	578(ra) # 802062a2 <eput>
   p = myproc();
-    80204066:	ffffe097          	auipc	ra,0xffffe
-    8020406a:	9d6080e7          	jalr	-1578(ra) # 80201a3c <myproc>
-    8020406e:	8aaa                	mv	s5,a0
+    80204068:	ffffe097          	auipc	ra,0xffffe
+    8020406c:	9d4080e7          	jalr	-1580(ra) # 80201a3c <myproc>
+    80204070:	8aaa                	mv	s5,a0
   uint64 oldsz = p->sz;
-    80204070:	04853d03          	ld	s10,72(a0)
+    80204072:	04853d03          	ld	s10,72(a0)
   sz = PGROUNDUP(sz);
-    80204074:	6785                	lui	a5,0x1
-    80204076:	17fd                	addi	a5,a5,-1 # fff <_entry-0x801ff001>
-    80204078:	97a6                	add	a5,a5,s1
-    8020407a:	777d                	lui	a4,0xfffff
-    8020407c:	8ff9                	and	a5,a5,a4
-    8020407e:	def43823          	sd	a5,-528(s0)
+    80204076:	6785                	lui	a5,0x1
+    80204078:	17fd                	addi	a5,a5,-1 # fff <_entry-0x801ff001>
+    8020407a:	97a6                	add	a5,a5,s1
+    8020407c:	777d                	lui	a4,0xfffff
+    8020407e:	8ff9                	and	a5,a5,a4
+    80204080:	def43823          	sd	a5,-528(s0)
   if((sz1 = uvmalloc(pagetable, kpagetable, sz, sz + 2*PGSIZE)) == 0)
-    80204082:	6689                	lui	a3,0x2
-    80204084:	96be                	add	a3,a3,a5
-    80204086:	863e                	mv	a2,a5
-    80204088:	85da                	mv	a1,s6
-    8020408a:	e0843483          	ld	s1,-504(s0)
-    8020408e:	8526                	mv	a0,s1
-    80204090:	ffffd097          	auipc	ra,0xffffd
-    80204094:	f7a080e7          	jalr	-134(ra) # 8020100a <uvmalloc>
-    80204098:	8caa                	mv	s9,a0
+    80204084:	6689                	lui	a3,0x2
+    80204086:	96be                	add	a3,a3,a5
+    80204088:	863e                	mv	a2,a5
+    8020408a:	85da                	mv	a1,s6
+    8020408c:	e0843483          	ld	s1,-504(s0)
+    80204090:	8526                	mv	a0,s1
+    80204092:	ffffd097          	auipc	ra,0xffffd
+    80204096:	f78080e7          	jalr	-136(ra) # 8020100a <uvmalloc>
+    8020409a:	8caa                	mv	s9,a0
   ep = 0;
-    8020409a:	4a01                	li	s4,0
+    8020409c:	4a01                	li	s4,0
   if((sz1 = uvmalloc(pagetable, kpagetable, sz, sz + 2*PGSIZE)) == 0)
-    8020409c:	16050863          	beqz	a0,8020420c <exec+0x300>
+    8020409e:	16050863          	beqz	a0,8020420e <exec+0x300>
   uvmclear(pagetable, sz-2*PGSIZE);
-    802040a0:	75f9                	lui	a1,0xffffe
-    802040a2:	95aa                	add	a1,a1,a0
-    802040a4:	8526                	mv	a0,s1
-    802040a6:	ffffd097          	auipc	ra,0xffffd
-    802040aa:	20e080e7          	jalr	526(ra) # 802012b4 <uvmclear>
+    802040a2:	75f9                	lui	a1,0xffffe
+    802040a4:	95aa                	add	a1,a1,a0
+    802040a6:	8526                	mv	a0,s1
+    802040a8:	ffffd097          	auipc	ra,0xffffd
+    802040ac:	20c080e7          	jalr	524(ra) # 802012b4 <uvmclear>
   stackbase = sp - PGSIZE;
-    802040ae:	7bfd                	lui	s7,0xfffff
-    802040b0:	9be6                	add	s7,s7,s9
+    802040b0:	7bfd                	lui	s7,0xfffff
+    802040b2:	9be6                	add	s7,s7,s9
   for(argc = 0; argv[argc]; argc++) {
-    802040b2:	de843783          	ld	a5,-536(s0)
-    802040b6:	6388                	ld	a0,0(a5)
-    802040b8:	c92d                	beqz	a0,8020412a <exec+0x21e>
-    802040ba:	e8840993          	addi	s3,s0,-376
-    802040be:	f8840c13          	addi	s8,s0,-120
+    802040b4:	de843783          	ld	a5,-536(s0)
+    802040b8:	6388                	ld	a0,0(a5)
+    802040ba:	c92d                	beqz	a0,8020412c <exec+0x21e>
+    802040bc:	e8840993          	addi	s3,s0,-376
+    802040c0:	f8840c13          	addi	s8,s0,-120
   sp = sz;
-    802040c2:	8966                	mv	s2,s9
+    802040c4:	8966                	mv	s2,s9
   for(argc = 0; argv[argc]; argc++) {
-    802040c4:	4481                	li	s1,0
+    802040c6:	4481                	li	s1,0
     sp -= strlen(argv[argc]) + 1;
-    802040c6:	ffffd097          	auipc	ra,0xffffd
-    802040ca:	820080e7          	jalr	-2016(ra) # 802008e6 <strlen>
-    802040ce:	0015079b          	addiw	a5,a0,1
-    802040d2:	40f907b3          	sub	a5,s2,a5
+    802040c8:	ffffd097          	auipc	ra,0xffffd
+    802040cc:	81e080e7          	jalr	-2018(ra) # 802008e6 <strlen>
+    802040d0:	0015079b          	addiw	a5,a0,1
+    802040d4:	40f907b3          	sub	a5,s2,a5
     sp -= sp % 16; // riscv sp must be 16-byte aligned
-    802040d6:	ff07f913          	andi	s2,a5,-16
+    802040d8:	ff07f913          	andi	s2,a5,-16
     if(sp < stackbase)
-    802040da:	1b796463          	bltu	s2,s7,80204282 <exec+0x376>
+    802040dc:	1b796463          	bltu	s2,s7,80204284 <exec+0x376>
     if(copyout(pagetable, sp, argv[argc], strlen(argv[argc]) + 1) < 0)
-    802040de:	de843d83          	ld	s11,-536(s0)
-    802040e2:	000dba03          	ld	s4,0(s11) # 1000 <_entry-0x801ff000>
-    802040e6:	8552                	mv	a0,s4
-    802040e8:	ffffc097          	auipc	ra,0xffffc
-    802040ec:	7fe080e7          	jalr	2046(ra) # 802008e6 <strlen>
-    802040f0:	0015069b          	addiw	a3,a0,1
-    802040f4:	8652                	mv	a2,s4
-    802040f6:	85ca                	mv	a1,s2
-    802040f8:	e0843503          	ld	a0,-504(s0)
-    802040fc:	ffffd097          	auipc	ra,0xffffd
-    80204100:	1ea080e7          	jalr	490(ra) # 802012e6 <copyout>
-    80204104:	18054363          	bltz	a0,8020428a <exec+0x37e>
+    802040e0:	de843d83          	ld	s11,-536(s0)
+    802040e4:	000dba03          	ld	s4,0(s11) # 1000 <_entry-0x801ff000>
+    802040e8:	8552                	mv	a0,s4
+    802040ea:	ffffc097          	auipc	ra,0xffffc
+    802040ee:	7fc080e7          	jalr	2044(ra) # 802008e6 <strlen>
+    802040f2:	0015069b          	addiw	a3,a0,1
+    802040f6:	8652                	mv	a2,s4
+    802040f8:	85ca                	mv	a1,s2
+    802040fa:	e0843503          	ld	a0,-504(s0)
+    802040fe:	ffffd097          	auipc	ra,0xffffd
+    80204102:	1e8080e7          	jalr	488(ra) # 802012e6 <copyout>
+    80204106:	18054363          	bltz	a0,8020428c <exec+0x37e>
     ustack[argc] = sp;
-    80204108:	0129b023          	sd	s2,0(s3)
+    8020410a:	0129b023          	sd	s2,0(s3)
   for(argc = 0; argv[argc]; argc++) {
-    8020410c:	0485                	addi	s1,s1,1
-    8020410e:	008d8793          	addi	a5,s11,8
-    80204112:	def43423          	sd	a5,-536(s0)
-    80204116:	008db503          	ld	a0,8(s11)
-    8020411a:	c911                	beqz	a0,8020412e <exec+0x222>
+    8020410e:	0485                	addi	s1,s1,1
+    80204110:	008d8793          	addi	a5,s11,8
+    80204114:	def43423          	sd	a5,-536(s0)
+    80204118:	008db503          	ld	a0,8(s11)
+    8020411c:	c911                	beqz	a0,80204130 <exec+0x222>
     if(argc >= MAXARG)
-    8020411c:	09a1                	addi	s3,s3,8
-    8020411e:	fb3c14e3          	bne	s8,s3,802040c6 <exec+0x1ba>
+    8020411e:	09a1                	addi	s3,s3,8
+    80204120:	fb3c14e3          	bne	s8,s3,802040c8 <exec+0x1ba>
   sz = sz1;
-    80204122:	df943823          	sd	s9,-528(s0)
+    80204124:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    80204126:	4a01                	li	s4,0
-    80204128:	a0d5                	j	8020420c <exec+0x300>
+    80204128:	4a01                	li	s4,0
+    8020412a:	a0d5                	j	8020420e <exec+0x300>
   sp = sz;
-    8020412a:	8966                	mv	s2,s9
+    8020412c:	8966                	mv	s2,s9
   for(argc = 0; argv[argc]; argc++) {
-    8020412c:	4481                	li	s1,0
+    8020412e:	4481                	li	s1,0
   ustack[argc] = 0;
-    8020412e:	00349793          	slli	a5,s1,0x3
-    80204132:	f9078793          	addi	a5,a5,-112
-    80204136:	97a2                	add	a5,a5,s0
-    80204138:	ee07bc23          	sd	zero,-264(a5)
+    80204130:	00349793          	slli	a5,s1,0x3
+    80204134:	f9078793          	addi	a5,a5,-112
+    80204138:	97a2                	add	a5,a5,s0
+    8020413a:	ee07bc23          	sd	zero,-264(a5)
   sp -= (argc+1) * sizeof(uint64);
-    8020413c:	00148693          	addi	a3,s1,1
-    80204140:	068e                	slli	a3,a3,0x3
-    80204142:	40d90933          	sub	s2,s2,a3
+    8020413e:	00148693          	addi	a3,s1,1
+    80204142:	068e                	slli	a3,a3,0x3
+    80204144:	40d90933          	sub	s2,s2,a3
   sp -= sp % 16;
-    80204146:	ff097913          	andi	s2,s2,-16
+    80204148:	ff097913          	andi	s2,s2,-16
   if(sp < stackbase)
-    8020414a:	01797663          	bgeu	s2,s7,80204156 <exec+0x24a>
+    8020414c:	01797663          	bgeu	s2,s7,80204158 <exec+0x24a>
   sz = sz1;
-    8020414e:	df943823          	sd	s9,-528(s0)
+    80204150:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    80204152:	4a01                	li	s4,0
-    80204154:	a865                	j	8020420c <exec+0x300>
+    80204154:	4a01                	li	s4,0
+    80204156:	a865                	j	8020420e <exec+0x300>
   if(copyout(pagetable, sp, (char *)ustack, (argc+1)*sizeof(uint64)) < 0)
-    80204156:	e8840613          	addi	a2,s0,-376
-    8020415a:	85ca                	mv	a1,s2
-    8020415c:	e0843503          	ld	a0,-504(s0)
-    80204160:	ffffd097          	auipc	ra,0xffffd
-    80204164:	186080e7          	jalr	390(ra) # 802012e6 <copyout>
-    80204168:	12054563          	bltz	a0,80204292 <exec+0x386>
+    80204158:	e8840613          	addi	a2,s0,-376
+    8020415c:	85ca                	mv	a1,s2
+    8020415e:	e0843503          	ld	a0,-504(s0)
+    80204162:	ffffd097          	auipc	ra,0xffffd
+    80204166:	184080e7          	jalr	388(ra) # 802012e6 <copyout>
+    8020416a:	12054563          	bltz	a0,80204294 <exec+0x386>
   p->trapframe->a1 = sp;
-    8020416c:	060ab783          	ld	a5,96(s5)
-    80204170:	0727bc23          	sd	s2,120(a5)
+    8020416e:	060ab783          	ld	a5,96(s5)
+    80204172:	0727bc23          	sd	s2,120(a5)
   for(last=s=path; *s; s++)
-    80204174:	dd843783          	ld	a5,-552(s0)
-    80204178:	0007c703          	lbu	a4,0(a5)
-    8020417c:	cf11                	beqz	a4,80204198 <exec+0x28c>
-    8020417e:	0785                	addi	a5,a5,1
+    80204176:	dd843783          	ld	a5,-552(s0)
+    8020417a:	0007c703          	lbu	a4,0(a5)
+    8020417e:	cf11                	beqz	a4,8020419a <exec+0x28c>
+    80204180:	0785                	addi	a5,a5,1
     if(*s == '/')
-    80204180:	02f00693          	li	a3,47
-    80204184:	a039                	j	80204192 <exec+0x286>
+    80204182:	02f00693          	li	a3,47
+    80204186:	a039                	j	80204194 <exec+0x286>
       last = s+1;
-    80204186:	dcf43c23          	sd	a5,-552(s0)
+    80204188:	dcf43c23          	sd	a5,-552(s0)
   for(last=s=path; *s; s++)
-    8020418a:	0785                	addi	a5,a5,1
-    8020418c:	fff7c703          	lbu	a4,-1(a5)
-    80204190:	c701                	beqz	a4,80204198 <exec+0x28c>
+    8020418c:	0785                	addi	a5,a5,1
+    8020418e:	fff7c703          	lbu	a4,-1(a5)
+    80204192:	c701                	beqz	a4,8020419a <exec+0x28c>
     if(*s == '/')
-    80204192:	fed71ce3          	bne	a4,a3,8020418a <exec+0x27e>
-    80204196:	bfc5                	j	80204186 <exec+0x27a>
+    80204194:	fed71ce3          	bne	a4,a3,8020418c <exec+0x27e>
+    80204198:	bfc5                	j	80204188 <exec+0x27a>
   safestrcpy(p->name, last, sizeof(p->name));
-    80204198:	4641                	li	a2,16
-    8020419a:	dd843583          	ld	a1,-552(s0)
-    8020419e:	160a8513          	addi	a0,s5,352
-    802041a2:	ffffc097          	auipc	ra,0xffffc
-    802041a6:	712080e7          	jalr	1810(ra) # 802008b4 <safestrcpy>
+    8020419a:	4641                	li	a2,16
+    8020419c:	dd843583          	ld	a1,-552(s0)
+    802041a0:	160a8513          	addi	a0,s5,352
+    802041a4:	ffffc097          	auipc	ra,0xffffc
+    802041a8:	710080e7          	jalr	1808(ra) # 802008b4 <safestrcpy>
   oldpagetable = p->pagetable;
-    802041aa:	050ab503          	ld	a0,80(s5)
+    802041ac:	050ab503          	ld	a0,80(s5)
   oldkpagetable = p->kpagetable;
-    802041ae:	058ab983          	ld	s3,88(s5)
+    802041b0:	058ab983          	ld	s3,88(s5)
   p->pagetable = pagetable;
-    802041b2:	e0843783          	ld	a5,-504(s0)
-    802041b6:	04fab823          	sd	a5,80(s5)
+    802041b4:	e0843783          	ld	a5,-504(s0)
+    802041b8:	04fab823          	sd	a5,80(s5)
   p->kpagetable = kpagetable;
-    802041ba:	056abc23          	sd	s6,88(s5)
+    802041bc:	056abc23          	sd	s6,88(s5)
   p->sz = sz;
-    802041be:	059ab423          	sd	s9,72(s5)
+    802041c0:	059ab423          	sd	s9,72(s5)
   p->trapframe->epc = elf.entry;  // initial program counter = main
-    802041c2:	060ab783          	ld	a5,96(s5)
-    802041c6:	e6043703          	ld	a4,-416(s0)
-    802041ca:	ef98                	sd	a4,24(a5)
+    802041c4:	060ab783          	ld	a5,96(s5)
+    802041c8:	e6043703          	ld	a4,-416(s0)
+    802041cc:	ef98                	sd	a4,24(a5)
   p->trapframe->sp = sp; // initial stack pointer
-    802041cc:	060ab783          	ld	a5,96(s5)
-    802041d0:	0327b823          	sd	s2,48(a5)
+    802041ce:	060ab783          	ld	a5,96(s5)
+    802041d2:	0327b823          	sd	s2,48(a5)
   proc_freepagetable(oldpagetable, oldsz);
-    802041d4:	85ea                	mv	a1,s10
-    802041d6:	ffffe097          	auipc	ra,0xffffe
-    802041da:	9e6080e7          	jalr	-1562(ra) # 80201bbc <proc_freepagetable>
+    802041d6:	85ea                	mv	a1,s10
+    802041d8:	ffffe097          	auipc	ra,0xffffe
+    802041dc:	9e4080e7          	jalr	-1564(ra) # 80201bbc <proc_freepagetable>
   w_satp(MAKE_SATP(p->kpagetable));
-    802041de:	058ab783          	ld	a5,88(s5)
-    802041e2:	83b1                	srli	a5,a5,0xc
-    802041e4:	577d                	li	a4,-1
-    802041e6:	177e                	slli	a4,a4,0x3f
-    802041e8:	8fd9                	or	a5,a5,a4
+    802041e0:	058ab783          	ld	a5,88(s5)
+    802041e4:	83b1                	srli	a5,a5,0xc
+    802041e6:	577d                	li	a4,-1
+    802041e8:	177e                	slli	a4,a4,0x3f
+    802041ea:	8fd9                	or	a5,a5,a4
   asm volatile("csrw satp, %0" : : "r" (x));
-    802041ea:	18079073          	csrw	satp,a5
+    802041ec:	18079073          	csrw	satp,a5
   asm volatile("sfence.vma");
-    802041ee:	12000073          	sfence.vma
+    802041f0:	12000073          	sfence.vma
   kvmfree(oldkpagetable, 0);
-    802041f2:	4581                	li	a1,0
-    802041f4:	854e                	mv	a0,s3
-    802041f6:	ffffd097          	auipc	ra,0xffffd
-    802041fa:	47c080e7          	jalr	1148(ra) # 80201672 <kvmfree>
+    802041f4:	4581                	li	a1,0
+    802041f6:	854e                	mv	a0,s3
+    802041f8:	ffffd097          	auipc	ra,0xffffd
+    802041fc:	47a080e7          	jalr	1146(ra) # 80201672 <kvmfree>
   return argc; // this ends up in a0, the first argument to main(argc, argv)
-    802041fe:	0004851b          	sext.w	a0,s1
-    80204202:	a089                	j	80204244 <exec+0x338>
+    80204200:	0004851b          	sext.w	a0,s1
+    80204204:	a089                	j	80204246 <exec+0x338>
     return -1;
-    80204204:	557d                	li	a0,-1
-    80204206:	a83d                	j	80204244 <exec+0x338>
-    80204208:	de943823          	sd	s1,-528(s0)
+    80204206:	557d                	li	a0,-1
+    80204208:	a83d                	j	80204246 <exec+0x338>
+    8020420a:	de943823          	sd	s1,-528(s0)
     proc_freepagetable(pagetable, sz);
-    8020420c:	df043583          	ld	a1,-528(s0)
-    80204210:	e0843503          	ld	a0,-504(s0)
-    80204214:	ffffe097          	auipc	ra,0xffffe
-    80204218:	9a8080e7          	jalr	-1624(ra) # 80201bbc <proc_freepagetable>
+    8020420e:	df043583          	ld	a1,-528(s0)
+    80204212:	e0843503          	ld	a0,-504(s0)
+    80204216:	ffffe097          	auipc	ra,0xffffe
+    8020421a:	9a6080e7          	jalr	-1626(ra) # 80201bbc <proc_freepagetable>
     kvmfree(kpagetable, 0);
-    8020421c:	4581                	li	a1,0
-    8020421e:	855a                	mv	a0,s6
-    80204220:	ffffd097          	auipc	ra,0xffffd
-    80204224:	452080e7          	jalr	1106(ra) # 80201672 <kvmfree>
+    8020421e:	4581                	li	a1,0
+    80204220:	855a                	mv	a0,s6
+    80204222:	ffffd097          	auipc	ra,0xffffd
+    80204226:	450080e7          	jalr	1104(ra) # 80201672 <kvmfree>
     eunlock(ep);
     eput(ep);
   }
   return -1;
-    80204228:	557d                	li	a0,-1
+    8020422a:	557d                	li	a0,-1
   if(ep){
-    8020422a:	000a0d63          	beqz	s4,80204244 <exec+0x338>
+    8020422c:	000a0d63          	beqz	s4,80204246 <exec+0x338>
     eunlock(ep);
-    8020422e:	8552                	mv	a0,s4
-    80204230:	00002097          	auipc	ra,0x2
-    80204234:	014080e7          	jalr	20(ra) # 80206244 <eunlock>
+    80204230:	8552                	mv	a0,s4
+    80204232:	00002097          	auipc	ra,0x2
+    80204236:	022080e7          	jalr	34(ra) # 80206254 <eunlock>
     eput(ep);
-    80204238:	8552                	mv	a0,s4
-    8020423a:	00002097          	auipc	ra,0x2
-    8020423e:	058080e7          	jalr	88(ra) # 80206292 <eput>
+    8020423a:	8552                	mv	a0,s4
+    8020423c:	00002097          	auipc	ra,0x2
+    80204240:	066080e7          	jalr	102(ra) # 802062a2 <eput>
   return -1;
-    80204242:	557d                	li	a0,-1
-}
-    80204244:	22813083          	ld	ra,552(sp)
-    80204248:	22013403          	ld	s0,544(sp)
-    8020424c:	21813483          	ld	s1,536(sp)
-    80204250:	21013903          	ld	s2,528(sp)
-    80204254:	20813983          	ld	s3,520(sp)
-    80204258:	20013a03          	ld	s4,512(sp)
-    8020425c:	7afe                	ld	s5,504(sp)
-    8020425e:	7b5e                	ld	s6,496(sp)
-    80204260:	7bbe                	ld	s7,488(sp)
-    80204262:	7c1e                	ld	s8,480(sp)
-    80204264:	6cfe                	ld	s9,472(sp)
-    80204266:	6d5e                	ld	s10,464(sp)
-    80204268:	6dbe                	ld	s11,456(sp)
-    8020426a:	23010113          	addi	sp,sp,560
-    8020426e:	8082                	ret
-    80204270:	de943823          	sd	s1,-528(s0)
-    80204274:	bf61                	j	8020420c <exec+0x300>
-    80204276:	de943823          	sd	s1,-528(s0)
-    8020427a:	bf49                	j	8020420c <exec+0x300>
-    8020427c:	de943823          	sd	s1,-528(s0)
-    80204280:	b771                	j	8020420c <exec+0x300>
+    80204244:	557d                	li	a0,-1
+}
+    80204246:	22813083          	ld	ra,552(sp)
+    8020424a:	22013403          	ld	s0,544(sp)
+    8020424e:	21813483          	ld	s1,536(sp)
+    80204252:	21013903          	ld	s2,528(sp)
+    80204256:	20813983          	ld	s3,520(sp)
+    8020425a:	20013a03          	ld	s4,512(sp)
+    8020425e:	7afe                	ld	s5,504(sp)
+    80204260:	7b5e                	ld	s6,496(sp)
+    80204262:	7bbe                	ld	s7,488(sp)
+    80204264:	7c1e                	ld	s8,480(sp)
+    80204266:	6cfe                	ld	s9,472(sp)
+    80204268:	6d5e                	ld	s10,464(sp)
+    8020426a:	6dbe                	ld	s11,456(sp)
+    8020426c:	23010113          	addi	sp,sp,560
+    80204270:	8082                	ret
+    80204272:	de943823          	sd	s1,-528(s0)
+    80204276:	bf61                	j	8020420e <exec+0x300>
+    80204278:	de943823          	sd	s1,-528(s0)
+    8020427c:	bf49                	j	8020420e <exec+0x300>
+    8020427e:	de943823          	sd	s1,-528(s0)
+    80204282:	b771                	j	8020420e <exec+0x300>
   sz = sz1;
-    80204282:	df943823          	sd	s9,-528(s0)
+    80204284:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    80204286:	4a01                	li	s4,0
-    80204288:	b751                	j	8020420c <exec+0x300>
+    80204288:	4a01                	li	s4,0
+    8020428a:	b751                	j	8020420e <exec+0x300>
   sz = sz1;
-    8020428a:	df943823          	sd	s9,-528(s0)
+    8020428c:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    8020428e:	4a01                	li	s4,0
-    80204290:	bfb5                	j	8020420c <exec+0x300>
+    80204290:	4a01                	li	s4,0
+    80204292:	bfb5                	j	8020420e <exec+0x300>
   sz = sz1;
-    80204292:	df943823          	sd	s9,-528(s0)
+    80204294:	df943823          	sd	s9,-528(s0)
   ep = 0;
-    80204296:	4a01                	li	s4,0
-    80204298:	bf95                	j	8020420c <exec+0x300>
+    80204298:	4a01                	li	s4,0
+    8020429a:	bf95                	j	8020420e <exec+0x300>
     if((sz1 = uvmalloc(pagetable, kpagetable, sz, ph.vaddr + ph.memsz)) == 0)
-    8020429a:	df043483          	ld	s1,-528(s0)
+    8020429c:	df043483          	ld	s1,-528(s0)
   for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){
-    8020429e:	e0043783          	ld	a5,-512(s0)
-    802042a2:	0017869b          	addiw	a3,a5,1
-    802042a6:	e0d43023          	sd	a3,-512(s0)
-    802042aa:	df843783          	ld	a5,-520(s0)
-    802042ae:	0387879b          	addiw	a5,a5,56
-    802042b2:	e8045703          	lhu	a4,-384(s0)
-    802042b6:	d8e6dee3          	bge	a3,a4,80204052 <exec+0x146>
+    802042a0:	e0043783          	ld	a5,-512(s0)
+    802042a4:	0017869b          	addiw	a3,a5,1
+    802042a8:	e0d43023          	sd	a3,-512(s0)
+    802042ac:	df843783          	ld	a5,-520(s0)
+    802042b0:	0387879b          	addiw	a5,a5,56
+    802042b4:	e8045703          	lhu	a4,-384(s0)
+    802042b8:	d8e6dee3          	bge	a3,a4,80204054 <exec+0x146>
     if(eread(ep, 0, (uint64)&ph, off, sizeof(ph)) != sizeof(ph))
-    802042ba:	2781                	sext.w	a5,a5
-    802042bc:	def43c23          	sd	a5,-520(s0)
-    802042c0:	03800713          	li	a4,56
-    802042c4:	86be                	mv	a3,a5
-    802042c6:	de043603          	ld	a2,-544(s0)
-    802042ca:	4581                	li	a1,0
-    802042cc:	8552                	mv	a0,s4
-    802042ce:	00001097          	auipc	ra,0x1
-    802042d2:	63c080e7          	jalr	1596(ra) # 8020590a <eread>
-    802042d6:	03800793          	li	a5,56
-    802042da:	f2f517e3          	bne	a0,a5,80204208 <exec+0x2fc>
+    802042bc:	2781                	sext.w	a5,a5
+    802042be:	def43c23          	sd	a5,-520(s0)
+    802042c2:	03800713          	li	a4,56
+    802042c6:	86be                	mv	a3,a5
+    802042c8:	de043603          	ld	a2,-544(s0)
+    802042cc:	4581                	li	a1,0
+    802042ce:	8552                	mv	a0,s4
+    802042d0:	00001097          	auipc	ra,0x1
+    802042d4:	64a080e7          	jalr	1610(ra) # 8020591a <eread>
+    802042d8:	03800793          	li	a5,56
+    802042dc:	f2f517e3          	bne	a0,a5,8020420a <exec+0x2fc>
     if(ph.type != ELF_PROG_LOAD)
-    802042de:	e1042783          	lw	a5,-496(s0)
-    802042e2:	4705                	li	a4,1
-    802042e4:	fae79de3          	bne	a5,a4,8020429e <exec+0x392>
+    802042e0:	e1042783          	lw	a5,-496(s0)
+    802042e4:	4705                	li	a4,1
+    802042e6:	fae79de3          	bne	a5,a4,802042a0 <exec+0x392>
     if(ph.memsz < ph.filesz)
-    802042e8:	e3843683          	ld	a3,-456(s0)
-    802042ec:	e3043783          	ld	a5,-464(s0)
-    802042f0:	f8f6e0e3          	bltu	a3,a5,80204270 <exec+0x364>
+    802042ea:	e3843683          	ld	a3,-456(s0)
+    802042ee:	e3043783          	ld	a5,-464(s0)
+    802042f2:	f8f6e0e3          	bltu	a3,a5,80204272 <exec+0x364>
     if(ph.vaddr + ph.memsz < ph.vaddr)
-    802042f4:	e2043783          	ld	a5,-480(s0)
-    802042f8:	96be                	add	a3,a3,a5
-    802042fa:	f6f6eee3          	bltu	a3,a5,80204276 <exec+0x36a>
+    802042f6:	e2043783          	ld	a5,-480(s0)
+    802042fa:	96be                	add	a3,a3,a5
+    802042fc:	f6f6eee3          	bltu	a3,a5,80204278 <exec+0x36a>
     if((sz1 = uvmalloc(pagetable, kpagetable, sz, ph.vaddr + ph.memsz)) == 0)
-    802042fe:	8626                	mv	a2,s1
-    80204300:	85da                	mv	a1,s6
-    80204302:	e0843503          	ld	a0,-504(s0)
-    80204306:	ffffd097          	auipc	ra,0xffffd
-    8020430a:	d04080e7          	jalr	-764(ra) # 8020100a <uvmalloc>
-    8020430e:	dea43823          	sd	a0,-528(s0)
-    80204312:	d52d                	beqz	a0,8020427c <exec+0x370>
+    80204300:	8626                	mv	a2,s1
+    80204302:	85da                	mv	a1,s6
+    80204304:	e0843503          	ld	a0,-504(s0)
+    80204308:	ffffd097          	auipc	ra,0xffffd
+    8020430c:	d02080e7          	jalr	-766(ra) # 8020100a <uvmalloc>
+    80204310:	dea43823          	sd	a0,-528(s0)
+    80204314:	d52d                	beqz	a0,8020427e <exec+0x370>
     if(ph.vaddr % PGSIZE != 0)
-    80204314:	e2043c03          	ld	s8,-480(s0)
-    80204318:	dd043783          	ld	a5,-560(s0)
-    8020431c:	00fc77b3          	and	a5,s8,a5
-    80204320:	ee0796e3          	bnez	a5,8020420c <exec+0x300>
+    80204316:	e2043c03          	ld	s8,-480(s0)
+    8020431a:	dd043783          	ld	a5,-560(s0)
+    8020431e:	00fc77b3          	and	a5,s8,a5
+    80204322:	ee0796e3          	bnez	a5,8020420e <exec+0x300>
     if(loadseg(pagetable, ph.vaddr, ep, ph.off, ph.filesz) < 0)
-    80204324:	e1842c83          	lw	s9,-488(s0)
-    80204328:	e3042b83          	lw	s7,-464(s0)
+    80204326:	e1842c83          	lw	s9,-488(s0)
+    8020432a:	e3042b83          	lw	s7,-464(s0)
   for(i = 0; i < sz; i += PGSIZE){
-    8020432c:	f60b87e3          	beqz	s7,8020429a <exec+0x38e>
-    80204330:	89de                	mv	s3,s7
-    80204332:	4481                	li	s1,0
-    80204334:	b9ed                	j	8020402e <exec+0x122>
+    8020432e:	f60b87e3          	beqz	s7,8020429c <exec+0x38e>
+    80204332:	89de                	mv	s3,s7
+    80204334:	4481                	li	s1,0
+    80204336:	b9ed                	j	80204030 <exec+0x122>
     kvmfree(kpagetable, 0);
-    80204336:	4581                	li	a1,0
-    80204338:	855a                	mv	a0,s6
-    8020433a:	ffffd097          	auipc	ra,0xffffd
-    8020433e:	338080e7          	jalr	824(ra) # 80201672 <kvmfree>
+    80204338:	4581                	li	a1,0
+    8020433a:	855a                	mv	a0,s6
+    8020433c:	ffffd097          	auipc	ra,0xffffd
+    80204340:	336080e7          	jalr	822(ra) # 80201672 <kvmfree>
   return -1;
-    80204342:	557d                	li	a0,-1
-    80204344:	b701                	j	80204244 <exec+0x338>
+    80204344:	557d                	li	a0,-1
+    80204346:	b701                	j	80204246 <exec+0x338>
 
-0000000080204346 <argfd>:
+0000000080204348 <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)
 {
-    80204346:	7179                	addi	sp,sp,-48
-    80204348:	f406                	sd	ra,40(sp)
-    8020434a:	f022                	sd	s0,32(sp)
-    8020434c:	ec26                	sd	s1,24(sp)
-    8020434e:	e84a                	sd	s2,16(sp)
-    80204350:	1800                	addi	s0,sp,48
-    80204352:	892e                	mv	s2,a1
-    80204354:	84b2                	mv	s1,a2
+    80204348:	7179                	addi	sp,sp,-48
+    8020434a:	f406                	sd	ra,40(sp)
+    8020434c:	f022                	sd	s0,32(sp)
+    8020434e:	ec26                	sd	s1,24(sp)
+    80204350:	e84a                	sd	s2,16(sp)
+    80204352:	1800                	addi	s0,sp,48
+    80204354:	892e                	mv	s2,a1
+    80204356:	84b2                	mv	s1,a2
   int fd;
   struct file *f;
 
   if(argint(n, &fd) < 0)
-    80204356:	fdc40593          	addi	a1,s0,-36
-    8020435a:	fffff097          	auipc	ra,0xfffff
-    8020435e:	b12080e7          	jalr	-1262(ra) # 80202e6c <argint>
-    80204362:	04054063          	bltz	a0,802043a2 <argfd+0x5c>
+    80204358:	fdc40593          	addi	a1,s0,-36
+    8020435c:	fffff097          	auipc	ra,0xfffff
+    80204360:	b12080e7          	jalr	-1262(ra) # 80202e6e <argint>
+    80204364:	04054063          	bltz	a0,802043a4 <argfd+0x5c>
     return -1;
   if(fd < 0 || fd >= NOFILE || (f=myproc()->ofile[fd]) == NULL)
-    80204366:	fdc42703          	lw	a4,-36(s0)
-    8020436a:	47bd                	li	a5,15
-    8020436c:	02e7ed63          	bltu	a5,a4,802043a6 <argfd+0x60>
-    80204370:	ffffd097          	auipc	ra,0xffffd
-    80204374:	6cc080e7          	jalr	1740(ra) # 80201a3c <myproc>
-    80204378:	fdc42703          	lw	a4,-36(s0)
-    8020437c:	01a70793          	addi	a5,a4,26 # fffffffffffff01a <ebss_clear+0xffffffff7fdd901a>
-    80204380:	078e                	slli	a5,a5,0x3
-    80204382:	953e                	add	a0,a0,a5
-    80204384:	651c                	ld	a5,8(a0)
-    80204386:	c395                	beqz	a5,802043aa <argfd+0x64>
+    80204368:	fdc42703          	lw	a4,-36(s0)
+    8020436c:	47bd                	li	a5,15
+    8020436e:	02e7ed63          	bltu	a5,a4,802043a8 <argfd+0x60>
+    80204372:	ffffd097          	auipc	ra,0xffffd
+    80204376:	6ca080e7          	jalr	1738(ra) # 80201a3c <myproc>
+    8020437a:	fdc42703          	lw	a4,-36(s0)
+    8020437e:	01a70793          	addi	a5,a4,26 # fffffffffffff01a <ebss_clear+0xffffffff7fdd901a>
+    80204382:	078e                	slli	a5,a5,0x3
+    80204384:	953e                	add	a0,a0,a5
+    80204386:	651c                	ld	a5,8(a0)
+    80204388:	c395                	beqz	a5,802043ac <argfd+0x64>
     return -1;
   if(pfd)
-    80204388:	00090463          	beqz	s2,80204390 <argfd+0x4a>
+    8020438a:	00090463          	beqz	s2,80204392 <argfd+0x4a>
     *pfd = fd;
-    8020438c:	00e92023          	sw	a4,0(s2)
+    8020438e:	00e92023          	sw	a4,0(s2)
   if(pf)
     *pf = f;
   return 0;
-    80204390:	4501                	li	a0,0
+    80204392:	4501                	li	a0,0
   if(pf)
-    80204392:	c091                	beqz	s1,80204396 <argfd+0x50>
+    80204394:	c091                	beqz	s1,80204398 <argfd+0x50>
     *pf = f;
-    80204394:	e09c                	sd	a5,0(s1)
-}
-    80204396:	70a2                	ld	ra,40(sp)
-    80204398:	7402                	ld	s0,32(sp)
-    8020439a:	64e2                	ld	s1,24(sp)
-    8020439c:	6942                	ld	s2,16(sp)
-    8020439e:	6145                	addi	sp,sp,48
-    802043a0:	8082                	ret
+    80204396:	e09c                	sd	a5,0(s1)
+}
+    80204398:	70a2                	ld	ra,40(sp)
+    8020439a:	7402                	ld	s0,32(sp)
+    8020439c:	64e2                	ld	s1,24(sp)
+    8020439e:	6942                	ld	s2,16(sp)
+    802043a0:	6145                	addi	sp,sp,48
+    802043a2:	8082                	ret
     return -1;
-    802043a2:	557d                	li	a0,-1
-    802043a4:	bfcd                	j	80204396 <argfd+0x50>
+    802043a4:	557d                	li	a0,-1
+    802043a6:	bfcd                	j	80204398 <argfd+0x50>
     return -1;
-    802043a6:	557d                	li	a0,-1
-    802043a8:	b7fd                	j	80204396 <argfd+0x50>
-    802043aa:	557d                	li	a0,-1
-    802043ac:	b7ed                	j	80204396 <argfd+0x50>
+    802043a8:	557d                	li	a0,-1
+    802043aa:	b7fd                	j	80204398 <argfd+0x50>
+    802043ac:	557d                	li	a0,-1
+    802043ae:	b7ed                	j	80204398 <argfd+0x50>
 
-00000000802043ae <fdalloc>:
+00000000802043b0 <fdalloc>:
 
 // Allocate a file descriptor for the given file.
 // Takes over file reference from caller on success.
 static int
 fdalloc(struct file *f)
 {
-    802043ae:	1101                	addi	sp,sp,-32
-    802043b0:	ec06                	sd	ra,24(sp)
-    802043b2:	e822                	sd	s0,16(sp)
-    802043b4:	e426                	sd	s1,8(sp)
-    802043b6:	1000                	addi	s0,sp,32
-    802043b8:	84aa                	mv	s1,a0
+    802043b0:	1101                	addi	sp,sp,-32
+    802043b2:	ec06                	sd	ra,24(sp)
+    802043b4:	e822                	sd	s0,16(sp)
+    802043b6:	e426                	sd	s1,8(sp)
+    802043b8:	1000                	addi	s0,sp,32
+    802043ba:	84aa                	mv	s1,a0
   int fd;
   struct proc *p = myproc();
-    802043ba:	ffffd097          	auipc	ra,0xffffd
-    802043be:	682080e7          	jalr	1666(ra) # 80201a3c <myproc>
-    802043c2:	862a                	mv	a2,a0
+    802043bc:	ffffd097          	auipc	ra,0xffffd
+    802043c0:	680080e7          	jalr	1664(ra) # 80201a3c <myproc>
+    802043c4:	862a                	mv	a2,a0
 
   for(fd = 0; fd < NOFILE; fd++){
-    802043c4:	0d850793          	addi	a5,a0,216
-    802043c8:	4501                	li	a0,0
-    802043ca:	46c1                	li	a3,16
+    802043c6:	0d850793          	addi	a5,a0,216
+    802043ca:	4501                	li	a0,0
+    802043cc:	46c1                	li	a3,16
     if(p->ofile[fd] == 0){
-    802043cc:	6398                	ld	a4,0(a5)
-    802043ce:	cb19                	beqz	a4,802043e4 <fdalloc+0x36>
+    802043ce:	6398                	ld	a4,0(a5)
+    802043d0:	cb19                	beqz	a4,802043e6 <fdalloc+0x36>
   for(fd = 0; fd < NOFILE; fd++){
-    802043d0:	2505                	addiw	a0,a0,1
-    802043d2:	07a1                	addi	a5,a5,8
-    802043d4:	fed51ce3          	bne	a0,a3,802043cc <fdalloc+0x1e>
+    802043d2:	2505                	addiw	a0,a0,1
+    802043d4:	07a1                	addi	a5,a5,8
+    802043d6:	fed51ce3          	bne	a0,a3,802043ce <fdalloc+0x1e>
       p->ofile[fd] = f;
       return fd;
     }
   }
   return -1;
-    802043d8:	557d                	li	a0,-1
+    802043da:	557d                	li	a0,-1
 }
-    802043da:	60e2                	ld	ra,24(sp)
-    802043dc:	6442                	ld	s0,16(sp)
-    802043de:	64a2                	ld	s1,8(sp)
-    802043e0:	6105                	addi	sp,sp,32
-    802043e2:	8082                	ret
+    802043dc:	60e2                	ld	ra,24(sp)
+    802043de:	6442                	ld	s0,16(sp)
+    802043e0:	64a2                	ld	s1,8(sp)
+    802043e2:	6105                	addi	sp,sp,32
+    802043e4:	8082                	ret
       p->ofile[fd] = f;
-    802043e4:	01a50793          	addi	a5,a0,26
-    802043e8:	078e                	slli	a5,a5,0x3
-    802043ea:	963e                	add	a2,a2,a5
-    802043ec:	e604                	sd	s1,8(a2)
+    802043e6:	01a50793          	addi	a5,a0,26
+    802043ea:	078e                	slli	a5,a5,0x3
+    802043ec:	963e                	add	a2,a2,a5
+    802043ee:	e604                	sd	s1,8(a2)
       return fd;
-    802043ee:	b7f5                	j	802043da <fdalloc+0x2c>
+    802043f0:	b7f5                	j	802043dc <fdalloc+0x2c>
 
-00000000802043f0 <create>:
+00000000802043f2 <create>:
   return filestat(f, st);
 }
 
 static struct dirent*
 create(char *path, short type, int mode)
 {
-    802043f0:	7169                	addi	sp,sp,-304
-    802043f2:	f606                	sd	ra,296(sp)
-    802043f4:	f222                	sd	s0,288(sp)
-    802043f6:	ee26                	sd	s1,280(sp)
-    802043f8:	ea4a                	sd	s2,272(sp)
-    802043fa:	e64e                	sd	s3,264(sp)
-    802043fc:	1a00                	addi	s0,sp,304
-    802043fe:	892e                	mv	s2,a1
+    802043f2:	7169                	addi	sp,sp,-304
+    802043f4:	f606                	sd	ra,296(sp)
+    802043f6:	f222                	sd	s0,288(sp)
+    802043f8:	ee26                	sd	s1,280(sp)
+    802043fa:	ea4a                	sd	s2,272(sp)
+    802043fc:	e64e                	sd	s3,264(sp)
+    802043fe:	1a00                	addi	s0,sp,304
+    80204400:	892e                	mv	s2,a1
   struct dirent *ep, *dp;
   char name[FAT32_MAX_FILENAME + 1];
 
   if((dp = enameparent(path, name)) == NULL)
-    80204400:	ed040593          	addi	a1,s0,-304
-    80204404:	00002097          	auipc	ra,0x2
-    80204408:	5d0080e7          	jalr	1488(ra) # 802069d4 <enameparent>
-    8020440c:	84aa                	mv	s1,a0
-    8020440e:	c945                	beqz	a0,802044be <create+0xce>
+    80204402:	ed040593          	addi	a1,s0,-304
+    80204406:	00002097          	auipc	ra,0x2
+    8020440a:	5de080e7          	jalr	1502(ra) # 802069e4 <enameparent>
+    8020440e:	84aa                	mv	s1,a0
+    80204410:	c945                	beqz	a0,802044c0 <create+0xce>
     mode = ATTR_READ_ONLY;
   } else {
     mode = 0;  
   }
 
   elock(dp);
-    80204410:	00002097          	auipc	ra,0x2
-    80204414:	dfe080e7          	jalr	-514(ra) # 8020620e <elock>
+    80204412:	00002097          	auipc	ra,0x2
+    80204416:	e0c080e7          	jalr	-500(ra) # 8020621e <elock>
   if (type == T_DIR) {
-    80204418:	fff90613          	addi	a2,s2,-1
-    8020441c:	00163613          	seqz	a2,a2
+    8020441a:	fff90613          	addi	a2,s2,-1
+    8020441e:	00163613          	seqz	a2,a2
   if ((ep = ealloc(dp, name, mode)) == NULL) {
-    80204420:	0046161b          	slliw	a2,a2,0x4
-    80204424:	ed040593          	addi	a1,s0,-304
-    80204428:	8526                	mv	a0,s1
-    8020442a:	00002097          	auipc	ra,0x2
-    8020442e:	2d0080e7          	jalr	720(ra) # 802066fa <ealloc>
-    80204432:	89aa                	mv	s3,a0
-    80204434:	c529                	beqz	a0,8020447e <create+0x8e>
+    80204422:	0046161b          	slliw	a2,a2,0x4
+    80204426:	ed040593          	addi	a1,s0,-304
+    8020442a:	8526                	mv	a0,s1
+    8020442c:	00002097          	auipc	ra,0x2
+    80204430:	2de080e7          	jalr	734(ra) # 8020670a <ealloc>
+    80204434:	89aa                	mv	s3,a0
+    80204436:	c529                	beqz	a0,80204480 <create+0x8e>
     eunlock(dp);
     eput(dp);
     return NULL;
   }
   
   if ((type == T_DIR && !(ep->attribute & ATTR_DIRECTORY)) ||
-    80204436:	0009079b          	sext.w	a5,s2
-    8020443a:	4705                	li	a4,1
-    8020443c:	04e78c63          	beq	a5,a4,80204494 <create+0xa4>
-    80204440:	2901                	sext.w	s2,s2
-    80204442:	4789                	li	a5,2
-    80204444:	00f91663          	bne	s2,a5,80204450 <create+0x60>
+    80204438:	0009079b          	sext.w	a5,s2
+    8020443c:	4705                	li	a4,1
+    8020443e:	04e78c63          	beq	a5,a4,80204496 <create+0xa4>
+    80204442:	2901                	sext.w	s2,s2
+    80204444:	4789                	li	a5,2
+    80204446:	00f91663          	bne	s2,a5,80204452 <create+0x60>
       (type == T_FILE && (ep->attribute & ATTR_DIRECTORY))) {
-    80204448:	10054783          	lbu	a5,256(a0)
-    8020444c:	8bc1                	andi	a5,a5,16
-    8020444e:	e7b9                	bnez	a5,8020449c <create+0xac>
+    8020444a:	10054783          	lbu	a5,256(a0)
+    8020444e:	8bc1                	andi	a5,a5,16
+    80204450:	e7b9                	bnez	a5,8020449e <create+0xac>
     eput(ep);
     eput(dp);
     return NULL;
   }
 
   eunlock(dp);
-    80204450:	8526                	mv	a0,s1
-    80204452:	00002097          	auipc	ra,0x2
-    80204456:	df2080e7          	jalr	-526(ra) # 80206244 <eunlock>
+    80204452:	8526                	mv	a0,s1
+    80204454:	00002097          	auipc	ra,0x2
+    80204458:	e00080e7          	jalr	-512(ra) # 80206254 <eunlock>
   eput(dp);
-    8020445a:	8526                	mv	a0,s1
-    8020445c:	00002097          	auipc	ra,0x2
-    80204460:	e36080e7          	jalr	-458(ra) # 80206292 <eput>
+    8020445c:	8526                	mv	a0,s1
+    8020445e:	00002097          	auipc	ra,0x2
+    80204462:	e44080e7          	jalr	-444(ra) # 802062a2 <eput>
 
   elock(ep);
-    80204464:	854e                	mv	a0,s3
-    80204466:	00002097          	auipc	ra,0x2
-    8020446a:	da8080e7          	jalr	-600(ra) # 8020620e <elock>
+    80204466:	854e                	mv	a0,s3
+    80204468:	00002097          	auipc	ra,0x2
+    8020446c:	db6080e7          	jalr	-586(ra) # 8020621e <elock>
   return ep;
 }
-    8020446e:	854e                	mv	a0,s3
-    80204470:	70b2                	ld	ra,296(sp)
-    80204472:	7412                	ld	s0,288(sp)
-    80204474:	64f2                	ld	s1,280(sp)
-    80204476:	6952                	ld	s2,272(sp)
-    80204478:	69b2                	ld	s3,264(sp)
-    8020447a:	6155                	addi	sp,sp,304
-    8020447c:	8082                	ret
+    80204470:	854e                	mv	a0,s3
+    80204472:	70b2                	ld	ra,296(sp)
+    80204474:	7412                	ld	s0,288(sp)
+    80204476:	64f2                	ld	s1,280(sp)
+    80204478:	6952                	ld	s2,272(sp)
+    8020447a:	69b2                	ld	s3,264(sp)
+    8020447c:	6155                	addi	sp,sp,304
+    8020447e:	8082                	ret
     eunlock(dp);
-    8020447e:	8526                	mv	a0,s1
-    80204480:	00002097          	auipc	ra,0x2
-    80204484:	dc4080e7          	jalr	-572(ra) # 80206244 <eunlock>
+    80204480:	8526                	mv	a0,s1
+    80204482:	00002097          	auipc	ra,0x2
+    80204486:	dd2080e7          	jalr	-558(ra) # 80206254 <eunlock>
     eput(dp);
-    80204488:	8526                	mv	a0,s1
-    8020448a:	00002097          	auipc	ra,0x2
-    8020448e:	e08080e7          	jalr	-504(ra) # 80206292 <eput>
+    8020448a:	8526                	mv	a0,s1
+    8020448c:	00002097          	auipc	ra,0x2
+    80204490:	e16080e7          	jalr	-490(ra) # 802062a2 <eput>
     return NULL;
-    80204492:	bff1                	j	8020446e <create+0x7e>
+    80204494:	bff1                	j	80204470 <create+0x7e>
   if ((type == T_DIR && !(ep->attribute & ATTR_DIRECTORY)) ||
-    80204494:	10054783          	lbu	a5,256(a0)
-    80204498:	8bc1                	andi	a5,a5,16
-    8020449a:	fbdd                	bnez	a5,80204450 <create+0x60>
+    80204496:	10054783          	lbu	a5,256(a0)
+    8020449a:	8bc1                	andi	a5,a5,16
+    8020449c:	fbdd                	bnez	a5,80204452 <create+0x60>
     eunlock(dp);
-    8020449c:	8526                	mv	a0,s1
-    8020449e:	00002097          	auipc	ra,0x2
-    802044a2:	da6080e7          	jalr	-602(ra) # 80206244 <eunlock>
+    8020449e:	8526                	mv	a0,s1
+    802044a0:	00002097          	auipc	ra,0x2
+    802044a4:	db4080e7          	jalr	-588(ra) # 80206254 <eunlock>
     eput(ep);
-    802044a6:	854e                	mv	a0,s3
-    802044a8:	00002097          	auipc	ra,0x2
-    802044ac:	dea080e7          	jalr	-534(ra) # 80206292 <eput>
+    802044a8:	854e                	mv	a0,s3
+    802044aa:	00002097          	auipc	ra,0x2
+    802044ae:	df8080e7          	jalr	-520(ra) # 802062a2 <eput>
     eput(dp);
-    802044b0:	8526                	mv	a0,s1
-    802044b2:	00002097          	auipc	ra,0x2
-    802044b6:	de0080e7          	jalr	-544(ra) # 80206292 <eput>
+    802044b2:	8526                	mv	a0,s1
+    802044b4:	00002097          	auipc	ra,0x2
+    802044b8:	dee080e7          	jalr	-530(ra) # 802062a2 <eput>
     return NULL;
-    802044ba:	4981                	li	s3,0
-    802044bc:	bf4d                	j	8020446e <create+0x7e>
+    802044bc:	4981                	li	s3,0
+    802044be:	bf4d                	j	80204470 <create+0x7e>
     return NULL;
-    802044be:	89aa                	mv	s3,a0
-    802044c0:	b77d                	j	8020446e <create+0x7e>
+    802044c0:	89aa                	mv	s3,a0
+    802044c2:	b77d                	j	80204470 <create+0x7e>
 
-00000000802044c2 <sys_dup>:
+00000000802044c4 <sys_dup>:
 {
-    802044c2:	7179                	addi	sp,sp,-48
-    802044c4:	f406                	sd	ra,40(sp)
-    802044c6:	f022                	sd	s0,32(sp)
-    802044c8:	ec26                	sd	s1,24(sp)
-    802044ca:	e84a                	sd	s2,16(sp)
-    802044cc:	1800                	addi	s0,sp,48
+    802044c4:	7179                	addi	sp,sp,-48
+    802044c6:	f406                	sd	ra,40(sp)
+    802044c8:	f022                	sd	s0,32(sp)
+    802044ca:	ec26                	sd	s1,24(sp)
+    802044cc:	e84a                	sd	s2,16(sp)
+    802044ce:	1800                	addi	s0,sp,48
   if(argfd(0, 0, &f) < 0)
-    802044ce:	fd840613          	addi	a2,s0,-40
-    802044d2:	4581                	li	a1,0
-    802044d4:	4501                	li	a0,0
-    802044d6:	00000097          	auipc	ra,0x0
-    802044da:	e70080e7          	jalr	-400(ra) # 80204346 <argfd>
+    802044d0:	fd840613          	addi	a2,s0,-40
+    802044d4:	4581                	li	a1,0
+    802044d6:	4501                	li	a0,0
+    802044d8:	00000097          	auipc	ra,0x0
+    802044dc:	e70080e7          	jalr	-400(ra) # 80204348 <argfd>
     return -1;
-    802044de:	57fd                	li	a5,-1
+    802044e0:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0)
-    802044e0:	02054363          	bltz	a0,80204506 <sys_dup+0x44>
+    802044e2:	02054363          	bltz	a0,80204508 <sys_dup+0x44>
   if((fd=fdalloc(f)) < 0)
-    802044e4:	fd843903          	ld	s2,-40(s0)
-    802044e8:	854a                	mv	a0,s2
-    802044ea:	00000097          	auipc	ra,0x0
-    802044ee:	ec4080e7          	jalr	-316(ra) # 802043ae <fdalloc>
-    802044f2:	84aa                	mv	s1,a0
+    802044e6:	fd843903          	ld	s2,-40(s0)
+    802044ea:	854a                	mv	a0,s2
+    802044ec:	00000097          	auipc	ra,0x0
+    802044f0:	ec4080e7          	jalr	-316(ra) # 802043b0 <fdalloc>
+    802044f4:	84aa                	mv	s1,a0
     return -1;
-    802044f4:	57fd                	li	a5,-1
+    802044f6:	57fd                	li	a5,-1
   if((fd=fdalloc(f)) < 0)
-    802044f6:	00054863          	bltz	a0,80204506 <sys_dup+0x44>
+    802044f8:	00054863          	bltz	a0,80204508 <sys_dup+0x44>
   filedup(f);
-    802044fa:	854a                	mv	a0,s2
-    802044fc:	fffff097          	auipc	ra,0xfffff
-    80204500:	318080e7          	jalr	792(ra) # 80203814 <filedup>
+    802044fc:	854a                	mv	a0,s2
+    802044fe:	fffff097          	auipc	ra,0xfffff
+    80204502:	318080e7          	jalr	792(ra) # 80203816 <filedup>
   return fd;
-    80204504:	87a6                	mv	a5,s1
-}
-    80204506:	853e                	mv	a0,a5
-    80204508:	70a2                	ld	ra,40(sp)
-    8020450a:	7402                	ld	s0,32(sp)
-    8020450c:	64e2                	ld	s1,24(sp)
-    8020450e:	6942                	ld	s2,16(sp)
-    80204510:	6145                	addi	sp,sp,48
-    80204512:	8082                	ret
-
-0000000080204514 <sys_read>:
-{
-    80204514:	7179                	addi	sp,sp,-48
-    80204516:	f406                	sd	ra,40(sp)
-    80204518:	f022                	sd	s0,32(sp)
-    8020451a:	1800                	addi	s0,sp,48
+    80204506:	87a6                	mv	a5,s1
+}
+    80204508:	853e                	mv	a0,a5
+    8020450a:	70a2                	ld	ra,40(sp)
+    8020450c:	7402                	ld	s0,32(sp)
+    8020450e:	64e2                	ld	s1,24(sp)
+    80204510:	6942                	ld	s2,16(sp)
+    80204512:	6145                	addi	sp,sp,48
+    80204514:	8082                	ret
+
+0000000080204516 <sys_read>:
+{
+    80204516:	7179                	addi	sp,sp,-48
+    80204518:	f406                	sd	ra,40(sp)
+    8020451a:	f022                	sd	s0,32(sp)
+    8020451c:	1800                	addi	s0,sp,48
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    8020451c:	fe840613          	addi	a2,s0,-24
-    80204520:	4581                	li	a1,0
-    80204522:	4501                	li	a0,0
-    80204524:	00000097          	auipc	ra,0x0
-    80204528:	e22080e7          	jalr	-478(ra) # 80204346 <argfd>
+    8020451e:	fe840613          	addi	a2,s0,-24
+    80204522:	4581                	li	a1,0
+    80204524:	4501                	li	a0,0
+    80204526:	00000097          	auipc	ra,0x0
+    8020452a:	e22080e7          	jalr	-478(ra) # 80204348 <argfd>
     return -1;
-    8020452c:	57fd                	li	a5,-1
+    8020452e:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    8020452e:	04054163          	bltz	a0,80204570 <sys_read+0x5c>
-    80204532:	fe440593          	addi	a1,s0,-28
-    80204536:	4509                	li	a0,2
-    80204538:	fffff097          	auipc	ra,0xfffff
-    8020453c:	934080e7          	jalr	-1740(ra) # 80202e6c <argint>
+    80204530:	04054163          	bltz	a0,80204572 <sys_read+0x5c>
+    80204534:	fe440593          	addi	a1,s0,-28
+    80204538:	4509                	li	a0,2
+    8020453a:	fffff097          	auipc	ra,0xfffff
+    8020453e:	934080e7          	jalr	-1740(ra) # 80202e6e <argint>
     return -1;
-    80204540:	57fd                	li	a5,-1
+    80204542:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    80204542:	02054763          	bltz	a0,80204570 <sys_read+0x5c>
-    80204546:	fd840593          	addi	a1,s0,-40
-    8020454a:	4505                	li	a0,1
-    8020454c:	fffff097          	auipc	ra,0xfffff
-    80204550:	982080e7          	jalr	-1662(ra) # 80202ece <argaddr>
+    80204544:	02054763          	bltz	a0,80204572 <sys_read+0x5c>
+    80204548:	fd840593          	addi	a1,s0,-40
+    8020454c:	4505                	li	a0,1
+    8020454e:	fffff097          	auipc	ra,0xfffff
+    80204552:	982080e7          	jalr	-1662(ra) # 80202ed0 <argaddr>
     return -1;
-    80204554:	57fd                	li	a5,-1
+    80204556:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    80204556:	00054d63          	bltz	a0,80204570 <sys_read+0x5c>
+    80204558:	00054d63          	bltz	a0,80204572 <sys_read+0x5c>
   return fileread(f, p, n);
-    8020455a:	fe442603          	lw	a2,-28(s0)
-    8020455e:	fd843583          	ld	a1,-40(s0)
-    80204562:	fe843503          	ld	a0,-24(s0)
-    80204566:	fffff097          	auipc	ra,0xfffff
-    8020456a:	41a080e7          	jalr	1050(ra) # 80203980 <fileread>
-    8020456e:	87aa                	mv	a5,a0
-}
-    80204570:	853e                	mv	a0,a5
-    80204572:	70a2                	ld	ra,40(sp)
-    80204574:	7402                	ld	s0,32(sp)
-    80204576:	6145                	addi	sp,sp,48
-    80204578:	8082                	ret
-
-000000008020457a <sys_write>:
-{
-    8020457a:	7179                	addi	sp,sp,-48
-    8020457c:	f406                	sd	ra,40(sp)
-    8020457e:	f022                	sd	s0,32(sp)
-    80204580:	1800                	addi	s0,sp,48
+    8020455c:	fe442603          	lw	a2,-28(s0)
+    80204560:	fd843583          	ld	a1,-40(s0)
+    80204564:	fe843503          	ld	a0,-24(s0)
+    80204568:	fffff097          	auipc	ra,0xfffff
+    8020456c:	41a080e7          	jalr	1050(ra) # 80203982 <fileread>
+    80204570:	87aa                	mv	a5,a0
+}
+    80204572:	853e                	mv	a0,a5
+    80204574:	70a2                	ld	ra,40(sp)
+    80204576:	7402                	ld	s0,32(sp)
+    80204578:	6145                	addi	sp,sp,48
+    8020457a:	8082                	ret
+
+000000008020457c <sys_write>:
+{
+    8020457c:	7179                	addi	sp,sp,-48
+    8020457e:	f406                	sd	ra,40(sp)
+    80204580:	f022                	sd	s0,32(sp)
+    80204582:	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:	dbc080e7          	jalr	-580(ra) # 80204346 <argfd>
+    80204584:	fe840613          	addi	a2,s0,-24
+    80204588:	4581                	li	a1,0
+    8020458a:	4501                	li	a0,0
+    8020458c:	00000097          	auipc	ra,0x0
+    80204590:	dbc080e7          	jalr	-580(ra) # 80204348 <argfd>
     return -1;
-    80204592:	57fd                	li	a5,-1
+    80204594:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    80204594:	04054163          	bltz	a0,802045d6 <sys_write+0x5c>
-    80204598:	fe440593          	addi	a1,s0,-28
-    8020459c:	4509                	li	a0,2
-    8020459e:	fffff097          	auipc	ra,0xfffff
-    802045a2:	8ce080e7          	jalr	-1842(ra) # 80202e6c <argint>
+    80204596:	04054163          	bltz	a0,802045d8 <sys_write+0x5c>
+    8020459a:	fe440593          	addi	a1,s0,-28
+    8020459e:	4509                	li	a0,2
+    802045a0:	fffff097          	auipc	ra,0xfffff
+    802045a4:	8ce080e7          	jalr	-1842(ra) # 80202e6e <argint>
     return -1;
-    802045a6:	57fd                	li	a5,-1
+    802045a8:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    802045a8:	02054763          	bltz	a0,802045d6 <sys_write+0x5c>
-    802045ac:	fd840593          	addi	a1,s0,-40
-    802045b0:	4505                	li	a0,1
-    802045b2:	fffff097          	auipc	ra,0xfffff
-    802045b6:	91c080e7          	jalr	-1764(ra) # 80202ece <argaddr>
+    802045aa:	02054763          	bltz	a0,802045d8 <sys_write+0x5c>
+    802045ae:	fd840593          	addi	a1,s0,-40
+    802045b2:	4505                	li	a0,1
+    802045b4:	fffff097          	auipc	ra,0xfffff
+    802045b8:	91c080e7          	jalr	-1764(ra) # 80202ed0 <argaddr>
     return -1;
-    802045ba:	57fd                	li	a5,-1
+    802045bc:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0)
-    802045bc:	00054d63          	bltz	a0,802045d6 <sys_write+0x5c>
+    802045be:	00054d63          	bltz	a0,802045d8 <sys_write+0x5c>
   return filewrite(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:	476080e7          	jalr	1142(ra) # 80203a42 <filewrite>
-    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_close>:
-{
-    802045e0:	1101                	addi	sp,sp,-32
-    802045e2:	ec06                	sd	ra,24(sp)
-    802045e4:	e822                	sd	s0,16(sp)
-    802045e6:	1000                	addi	s0,sp,32
+    802045c2:	fe442603          	lw	a2,-28(s0)
+    802045c6:	fd843583          	ld	a1,-40(s0)
+    802045ca:	fe843503          	ld	a0,-24(s0)
+    802045ce:	fffff097          	auipc	ra,0xfffff
+    802045d2:	476080e7          	jalr	1142(ra) # 80203a44 <filewrite>
+    802045d6:	87aa                	mv	a5,a0
+}
+    802045d8:	853e                	mv	a0,a5
+    802045da:	70a2                	ld	ra,40(sp)
+    802045dc:	7402                	ld	s0,32(sp)
+    802045de:	6145                	addi	sp,sp,48
+    802045e0:	8082                	ret
+
+00000000802045e2 <sys_close>:
+{
+    802045e2:	1101                	addi	sp,sp,-32
+    802045e4:	ec06                	sd	ra,24(sp)
+    802045e6:	e822                	sd	s0,16(sp)
+    802045e8:	1000                	addi	s0,sp,32
   if(argfd(0, &fd, &f) < 0)
-    802045e8:	fe040613          	addi	a2,s0,-32
-    802045ec:	fec40593          	addi	a1,s0,-20
-    802045f0:	4501                	li	a0,0
-    802045f2:	00000097          	auipc	ra,0x0
-    802045f6:	d54080e7          	jalr	-684(ra) # 80204346 <argfd>
+    802045ea:	fe040613          	addi	a2,s0,-32
+    802045ee:	fec40593          	addi	a1,s0,-20
+    802045f2:	4501                	li	a0,0
+    802045f4:	00000097          	auipc	ra,0x0
+    802045f8:	d54080e7          	jalr	-684(ra) # 80204348 <argfd>
     return -1;
-    802045fa:	57fd                	li	a5,-1
+    802045fc:	57fd                	li	a5,-1
   if(argfd(0, &fd, &f) < 0)
-    802045fc:	02054463          	bltz	a0,80204624 <sys_close+0x44>
+    802045fe:	02054463          	bltz	a0,80204626 <sys_close+0x44>
   myproc()->ofile[fd] = 0;
-    80204600:	ffffd097          	auipc	ra,0xffffd
-    80204604:	43c080e7          	jalr	1084(ra) # 80201a3c <myproc>
-    80204608:	fec42783          	lw	a5,-20(s0)
-    8020460c:	07e9                	addi	a5,a5,26
-    8020460e:	078e                	slli	a5,a5,0x3
-    80204610:	953e                	add	a0,a0,a5
-    80204612:	00053423          	sd	zero,8(a0)
+    80204602:	ffffd097          	auipc	ra,0xffffd
+    80204606:	43a080e7          	jalr	1082(ra) # 80201a3c <myproc>
+    8020460a:	fec42783          	lw	a5,-20(s0)
+    8020460e:	07e9                	addi	a5,a5,26
+    80204610:	078e                	slli	a5,a5,0x3
+    80204612:	953e                	add	a0,a0,a5
+    80204614:	00053423          	sd	zero,8(a0)
   fileclose(f);
-    80204616:	fe043503          	ld	a0,-32(s0)
-    8020461a:	fffff097          	auipc	ra,0xfffff
-    8020461e:	24c080e7          	jalr	588(ra) # 80203866 <fileclose>
+    80204618:	fe043503          	ld	a0,-32(s0)
+    8020461c:	fffff097          	auipc	ra,0xfffff
+    80204620:	24c080e7          	jalr	588(ra) # 80203868 <fileclose>
   return 0;
-    80204622:	4781                	li	a5,0
+    80204624:	4781                	li	a5,0
 }
-    80204624:	853e                	mv	a0,a5
-    80204626:	60e2                	ld	ra,24(sp)
-    80204628:	6442                	ld	s0,16(sp)
-    8020462a:	6105                	addi	sp,sp,32
-    8020462c:	8082                	ret
+    80204626:	853e                	mv	a0,a5
+    80204628:	60e2                	ld	ra,24(sp)
+    8020462a:	6442                	ld	s0,16(sp)
+    8020462c:	6105                	addi	sp,sp,32
+    8020462e:	8082                	ret
 
-000000008020462e <sys_fstat>:
+0000000080204630 <sys_fstat>:
 {
-    8020462e:	1101                	addi	sp,sp,-32
-    80204630:	ec06                	sd	ra,24(sp)
-    80204632:	e822                	sd	s0,16(sp)
-    80204634:	1000                	addi	s0,sp,32
+    80204630:	1101                	addi	sp,sp,-32
+    80204632:	ec06                	sd	ra,24(sp)
+    80204634:	e822                	sd	s0,16(sp)
+    80204636:	1000                	addi	s0,sp,32
   if(argfd(0, 0, &f) < 0 || argaddr(1, &st) < 0)
-    80204636:	fe840613          	addi	a2,s0,-24
-    8020463a:	4581                	li	a1,0
-    8020463c:	4501                	li	a0,0
-    8020463e:	00000097          	auipc	ra,0x0
-    80204642:	d08080e7          	jalr	-760(ra) # 80204346 <argfd>
+    80204638:	fe840613          	addi	a2,s0,-24
+    8020463c:	4581                	li	a1,0
+    8020463e:	4501                	li	a0,0
+    80204640:	00000097          	auipc	ra,0x0
+    80204644:	d08080e7          	jalr	-760(ra) # 80204348 <argfd>
     return -1;
-    80204646:	57fd                	li	a5,-1
+    80204648:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argaddr(1, &st) < 0)
-    80204648:	02054563          	bltz	a0,80204672 <sys_fstat+0x44>
-    8020464c:	fe040593          	addi	a1,s0,-32
-    80204650:	4505                	li	a0,1
-    80204652:	fffff097          	auipc	ra,0xfffff
-    80204656:	87c080e7          	jalr	-1924(ra) # 80202ece <argaddr>
+    8020464a:	02054563          	bltz	a0,80204674 <sys_fstat+0x44>
+    8020464e:	fe040593          	addi	a1,s0,-32
+    80204652:	4505                	li	a0,1
+    80204654:	fffff097          	auipc	ra,0xfffff
+    80204658:	87c080e7          	jalr	-1924(ra) # 80202ed0 <argaddr>
     return -1;
-    8020465a:	57fd                	li	a5,-1
+    8020465c:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argaddr(1, &st) < 0)
-    8020465c:	00054b63          	bltz	a0,80204672 <sys_fstat+0x44>
+    8020465e:	00054b63          	bltz	a0,80204674 <sys_fstat+0x44>
   return filestat(f, st);
-    80204660:	fe043583          	ld	a1,-32(s0)
-    80204664:	fe843503          	ld	a0,-24(s0)
-    80204668:	fffff097          	auipc	ra,0xfffff
-    8020466c:	2b4080e7          	jalr	692(ra) # 8020391c <filestat>
-    80204670:	87aa                	mv	a5,a0
+    80204662:	fe043583          	ld	a1,-32(s0)
+    80204666:	fe843503          	ld	a0,-24(s0)
+    8020466a:	fffff097          	auipc	ra,0xfffff
+    8020466e:	2b4080e7          	jalr	692(ra) # 8020391e <filestat>
+    80204672:	87aa                	mv	a5,a0
 }
-    80204672:	853e                	mv	a0,a5
-    80204674:	60e2                	ld	ra,24(sp)
-    80204676:	6442                	ld	s0,16(sp)
-    80204678:	6105                	addi	sp,sp,32
-    8020467a:	8082                	ret
+    80204674:	853e                	mv	a0,a5
+    80204676:	60e2                	ld	ra,24(sp)
+    80204678:	6442                	ld	s0,16(sp)
+    8020467a:	6105                	addi	sp,sp,32
+    8020467c:	8082                	ret
 
-000000008020467c <sys_open>:
+000000008020467e <sys_open>:
 
 uint64
 sys_open(void)
 {
-    8020467c:	7129                	addi	sp,sp,-320
-    8020467e:	fe06                	sd	ra,312(sp)
-    80204680:	fa22                	sd	s0,304(sp)
-    80204682:	f626                	sd	s1,296(sp)
-    80204684:	f24a                	sd	s2,288(sp)
-    80204686:	ee4e                	sd	s3,280(sp)
-    80204688:	0280                	addi	s0,sp,320
+    8020467e:	7129                	addi	sp,sp,-320
+    80204680:	fe06                	sd	ra,312(sp)
+    80204682:	fa22                	sd	s0,304(sp)
+    80204684:	f626                	sd	s1,296(sp)
+    80204686:	f24a                	sd	s2,288(sp)
+    80204688:	ee4e                	sd	s3,280(sp)
+    8020468a:	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)
-    8020468a:	10400613          	li	a2,260
-    8020468e:	ec840593          	addi	a1,s0,-312
-    80204692:	4501                	li	a0,0
-    80204694:	fffff097          	auipc	ra,0xfffff
-    80204698:	85c080e7          	jalr	-1956(ra) # 80202ef0 <argstr>
-    8020469c:	87aa                	mv	a5,a0
+    8020468c:	10400613          	li	a2,260
+    80204690:	ec840593          	addi	a1,s0,-312
+    80204694:	4501                	li	a0,0
+    80204696:	fffff097          	auipc	ra,0xfffff
+    8020469a:	85c080e7          	jalr	-1956(ra) # 80202ef2 <argstr>
+    8020469e:	87aa                	mv	a5,a0
     return -1;
-    8020469e:	557d                	li	a0,-1
+    802046a0:	557d                	li	a0,-1
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || argint(1, &omode) < 0)
-    802046a0:	0807ce63          	bltz	a5,8020473c <sys_open+0xc0>
-    802046a4:	ec440593          	addi	a1,s0,-316
-    802046a8:	4505                	li	a0,1
-    802046aa:	ffffe097          	auipc	ra,0xffffe
-    802046ae:	7c2080e7          	jalr	1986(ra) # 80202e6c <argint>
-    802046b2:	0e054163          	bltz	a0,80204794 <sys_open+0x118>
+    802046a2:	0807ce63          	bltz	a5,8020473e <sys_open+0xc0>
+    802046a6:	ec440593          	addi	a1,s0,-316
+    802046aa:	4505                	li	a0,1
+    802046ac:	ffffe097          	auipc	ra,0xffffe
+    802046b0:	7c2080e7          	jalr	1986(ra) # 80202e6e <argint>
+    802046b4:	0e054163          	bltz	a0,80204796 <sys_open+0x118>
 
   if(omode & O_CREATE){
-    802046b6:	ec442603          	lw	a2,-316(s0)
-    802046ba:	20067793          	andi	a5,a2,512
-    802046be:	c7d1                	beqz	a5,8020474a <sys_open+0xce>
+    802046b8:	ec442603          	lw	a2,-316(s0)
+    802046bc:	20067793          	andi	a5,a2,512
+    802046c0:	c7d1                	beqz	a5,8020474c <sys_open+0xce>
     ep = create(path, T_FILE, omode);
-    802046c0:	4589                	li	a1,2
-    802046c2:	ec840513          	addi	a0,s0,-312
-    802046c6:	00000097          	auipc	ra,0x0
-    802046ca:	d2a080e7          	jalr	-726(ra) # 802043f0 <create>
-    802046ce:	892a                	mv	s2,a0
+    802046c2:	4589                	li	a1,2
+    802046c4:	ec840513          	addi	a0,s0,-312
+    802046c8:	00000097          	auipc	ra,0x0
+    802046cc:	d2a080e7          	jalr	-726(ra) # 802043f2 <create>
+    802046d0:	892a                	mv	s2,a0
     if(ep == NULL){
-    802046d0:	c561                	beqz	a0,80204798 <sys_open+0x11c>
+    802046d2:	c561                	beqz	a0,8020479a <sys_open+0x11c>
       eput(ep);
       return -1;
     }
   }
 
   if((f = filealloc()) == NULL || (fd = fdalloc(f)) < 0){
-    802046d2:	fffff097          	auipc	ra,0xfffff
-    802046d6:	0d8080e7          	jalr	216(ra) # 802037aa <filealloc>
-    802046da:	89aa                	mv	s3,a0
-    802046dc:	c579                	beqz	a0,802047aa <sys_open+0x12e>
-    802046de:	00000097          	auipc	ra,0x0
-    802046e2:	cd0080e7          	jalr	-816(ra) # 802043ae <fdalloc>
-    802046e6:	84aa                	mv	s1,a0
-    802046e8:	0a054c63          	bltz	a0,802047a0 <sys_open+0x124>
+    802046d4:	fffff097          	auipc	ra,0xfffff
+    802046d8:	0d8080e7          	jalr	216(ra) # 802037ac <filealloc>
+    802046dc:	89aa                	mv	s3,a0
+    802046de:	c579                	beqz	a0,802047ac <sys_open+0x12e>
+    802046e0:	00000097          	auipc	ra,0x0
+    802046e4:	cd0080e7          	jalr	-816(ra) # 802043b0 <fdalloc>
+    802046e8:	84aa                	mv	s1,a0
+    802046ea:	0a054c63          	bltz	a0,802047a2 <sys_open+0x124>
     eunlock(ep);
     eput(ep);
     return -1;
   }
 
   if(!(ep->attribute & ATTR_DIRECTORY) && (omode & O_TRUNC)){
-    802046ec:	10094783          	lbu	a5,256(s2)
-    802046f0:	8bc1                	andi	a5,a5,16
-    802046f2:	e791                	bnez	a5,802046fe <sys_open+0x82>
-    802046f4:	ec442783          	lw	a5,-316(s0)
-    802046f8:	4007f793          	andi	a5,a5,1024
-    802046fc:	e7d1                	bnez	a5,80204788 <sys_open+0x10c>
+    802046ee:	10094783          	lbu	a5,256(s2)
+    802046f2:	8bc1                	andi	a5,a5,16
+    802046f4:	e791                	bnez	a5,80204700 <sys_open+0x82>
+    802046f6:	ec442783          	lw	a5,-316(s0)
+    802046fa:	4007f793          	andi	a5,a5,1024
+    802046fe:	e7d1                	bnez	a5,8020478a <sys_open+0x10c>
     etrunc(ep);
   }
 
   f->type = FD_ENTRY;
-    802046fe:	4789                	li	a5,2
-    80204700:	00f9a023          	sw	a5,0(s3)
+    80204700:	4789                	li	a5,2
+    80204702:	00f9a023          	sw	a5,0(s3)
   f->off = (omode & O_APPEND) ? ep->file_size : 0;
-    80204704:	ec442783          	lw	a5,-316(s0)
-    80204708:	0047f693          	andi	a3,a5,4
-    8020470c:	4701                	li	a4,0
-    8020470e:	c299                	beqz	a3,80204714 <sys_open+0x98>
-    80204710:	10892703          	lw	a4,264(s2)
-    80204714:	02e9a023          	sw	a4,32(s3)
+    80204706:	ec442783          	lw	a5,-316(s0)
+    8020470a:	0047f693          	andi	a3,a5,4
+    8020470e:	4701                	li	a4,0
+    80204710:	c299                	beqz	a3,80204716 <sys_open+0x98>
+    80204712:	10892703          	lw	a4,264(s2)
+    80204716:	02e9a023          	sw	a4,32(s3)
   f->ep = ep;
-    80204718:	0129bc23          	sd	s2,24(s3)
+    8020471a:	0129bc23          	sd	s2,24(s3)
   f->readable = !(omode & O_WRONLY);
-    8020471c:	0017c713          	xori	a4,a5,1
-    80204720:	8b05                	andi	a4,a4,1
-    80204722:	00e98423          	sb	a4,8(s3)
+    8020471e:	0017c713          	xori	a4,a5,1
+    80204722:	8b05                	andi	a4,a4,1
+    80204724:	00e98423          	sb	a4,8(s3)
   f->writable = (omode & O_WRONLY) || (omode & O_RDWR);
-    80204726:	8b8d                	andi	a5,a5,3
-    80204728:	00f037b3          	snez	a5,a5
-    8020472c:	00f984a3          	sb	a5,9(s3)
+    80204728:	8b8d                	andi	a5,a5,3
+    8020472a:	00f037b3          	snez	a5,a5
+    8020472e:	00f984a3          	sb	a5,9(s3)
 
   eunlock(ep);
-    80204730:	854a                	mv	a0,s2
-    80204732:	00002097          	auipc	ra,0x2
-    80204736:	b12080e7          	jalr	-1262(ra) # 80206244 <eunlock>
+    80204732:	854a                	mv	a0,s2
+    80204734:	00002097          	auipc	ra,0x2
+    80204738:	b20080e7          	jalr	-1248(ra) # 80206254 <eunlock>
 
   return fd;
-    8020473a:	8526                	mv	a0,s1
-}
-    8020473c:	70f2                	ld	ra,312(sp)
-    8020473e:	7452                	ld	s0,304(sp)
-    80204740:	74b2                	ld	s1,296(sp)
-    80204742:	7912                	ld	s2,288(sp)
-    80204744:	69f2                	ld	s3,280(sp)
-    80204746:	6131                	addi	sp,sp,320
-    80204748:	8082                	ret
+    8020473c:	8526                	mv	a0,s1
+}
+    8020473e:	70f2                	ld	ra,312(sp)
+    80204740:	7452                	ld	s0,304(sp)
+    80204742:	74b2                	ld	s1,296(sp)
+    80204744:	7912                	ld	s2,288(sp)
+    80204746:	69f2                	ld	s3,280(sp)
+    80204748:	6131                	addi	sp,sp,320
+    8020474a:	8082                	ret
     if((ep = ename(path)) == NULL){
-    8020474a:	ec840513          	addi	a0,s0,-312
-    8020474e:	00002097          	auipc	ra,0x2
-    80204752:	268080e7          	jalr	616(ra) # 802069b6 <ename>
-    80204756:	892a                	mv	s2,a0
-    80204758:	c131                	beqz	a0,8020479c <sys_open+0x120>
+    8020474c:	ec840513          	addi	a0,s0,-312
+    80204750:	00002097          	auipc	ra,0x2
+    80204754:	276080e7          	jalr	630(ra) # 802069c6 <ename>
+    80204758:	892a                	mv	s2,a0
+    8020475a:	c131                	beqz	a0,8020479e <sys_open+0x120>
     elock(ep);
-    8020475a:	00002097          	auipc	ra,0x2
-    8020475e:	ab4080e7          	jalr	-1356(ra) # 8020620e <elock>
+    8020475c:	00002097          	auipc	ra,0x2
+    80204760:	ac2080e7          	jalr	-1342(ra) # 8020621e <elock>
     if((ep->attribute & ATTR_DIRECTORY) && omode != O_RDONLY){
-    80204762:	10094783          	lbu	a5,256(s2)
-    80204766:	8bc1                	andi	a5,a5,16
-    80204768:	d7ad                	beqz	a5,802046d2 <sys_open+0x56>
-    8020476a:	ec442783          	lw	a5,-316(s0)
-    8020476e:	d3b5                	beqz	a5,802046d2 <sys_open+0x56>
+    80204764:	10094783          	lbu	a5,256(s2)
+    80204768:	8bc1                	andi	a5,a5,16
+    8020476a:	d7ad                	beqz	a5,802046d4 <sys_open+0x56>
+    8020476c:	ec442783          	lw	a5,-316(s0)
+    80204770:	d3b5                	beqz	a5,802046d4 <sys_open+0x56>
       eunlock(ep);
-    80204770:	854a                	mv	a0,s2
-    80204772:	00002097          	auipc	ra,0x2
-    80204776:	ad2080e7          	jalr	-1326(ra) # 80206244 <eunlock>
+    80204772:	854a                	mv	a0,s2
+    80204774:	00002097          	auipc	ra,0x2
+    80204778:	ae0080e7          	jalr	-1312(ra) # 80206254 <eunlock>
       eput(ep);
-    8020477a:	854a                	mv	a0,s2
-    8020477c:	00002097          	auipc	ra,0x2
-    80204780:	b16080e7          	jalr	-1258(ra) # 80206292 <eput>
+    8020477c:	854a                	mv	a0,s2
+    8020477e:	00002097          	auipc	ra,0x2
+    80204782:	b24080e7          	jalr	-1244(ra) # 802062a2 <eput>
       return -1;
-    80204784:	557d                	li	a0,-1
-    80204786:	bf5d                	j	8020473c <sys_open+0xc0>
+    80204786:	557d                	li	a0,-1
+    80204788:	bf5d                	j	8020473e <sys_open+0xc0>
     etrunc(ep);
-    80204788:	854a                	mv	a0,s2
-    8020478a:	00002097          	auipc	ra,0x2
-    8020478e:	a1a080e7          	jalr	-1510(ra) # 802061a4 <etrunc>
-    80204792:	b7b5                	j	802046fe <sys_open+0x82>
+    8020478a:	854a                	mv	a0,s2
+    8020478c:	00002097          	auipc	ra,0x2
+    80204790:	a28080e7          	jalr	-1496(ra) # 802061b4 <etrunc>
+    80204794:	b7b5                	j	80204700 <sys_open+0x82>
     return -1;
-    80204794:	557d                	li	a0,-1
-    80204796:	b75d                	j	8020473c <sys_open+0xc0>
+    80204796:	557d                	li	a0,-1
+    80204798:	b75d                	j	8020473e <sys_open+0xc0>
       return -1;
-    80204798:	557d                	li	a0,-1
-    8020479a:	b74d                	j	8020473c <sys_open+0xc0>
+    8020479a:	557d                	li	a0,-1
+    8020479c:	b74d                	j	8020473e <sys_open+0xc0>
       return -1;
-    8020479c:	557d                	li	a0,-1
-    8020479e:	bf79                	j	8020473c <sys_open+0xc0>
+    8020479e:	557d                	li	a0,-1
+    802047a0:	bf79                	j	8020473e <sys_open+0xc0>
       fileclose(f);
-    802047a0:	854e                	mv	a0,s3
-    802047a2:	fffff097          	auipc	ra,0xfffff
-    802047a6:	0c4080e7          	jalr	196(ra) # 80203866 <fileclose>
+    802047a2:	854e                	mv	a0,s3
+    802047a4:	fffff097          	auipc	ra,0xfffff
+    802047a8:	0c4080e7          	jalr	196(ra) # 80203868 <fileclose>
     eunlock(ep);
-    802047aa:	854a                	mv	a0,s2
-    802047ac:	00002097          	auipc	ra,0x2
-    802047b0:	a98080e7          	jalr	-1384(ra) # 80206244 <eunlock>
+    802047ac:	854a                	mv	a0,s2
+    802047ae:	00002097          	auipc	ra,0x2
+    802047b2:	aa6080e7          	jalr	-1370(ra) # 80206254 <eunlock>
     eput(ep);
-    802047b4:	854a                	mv	a0,s2
-    802047b6:	00002097          	auipc	ra,0x2
-    802047ba:	adc080e7          	jalr	-1316(ra) # 80206292 <eput>
+    802047b6:	854a                	mv	a0,s2
+    802047b8:	00002097          	auipc	ra,0x2
+    802047bc:	aea080e7          	jalr	-1302(ra) # 802062a2 <eput>
     return -1;
-    802047be:	557d                	li	a0,-1
-    802047c0:	bfb5                	j	8020473c <sys_open+0xc0>
+    802047c0:	557d                	li	a0,-1
+    802047c2:	bfb5                	j	8020473e <sys_open+0xc0>
 
-00000000802047c2 <sys_mkdir>:
+00000000802047c4 <sys_mkdir>:
 
 uint64
 sys_mkdir(void)
 {
-    802047c2:	7169                	addi	sp,sp,-304
-    802047c4:	f606                	sd	ra,296(sp)
-    802047c6:	f222                	sd	s0,288(sp)
-    802047c8:	ee26                	sd	s1,280(sp)
-    802047ca:	1a00                	addi	s0,sp,304
+    802047c4:	7169                	addi	sp,sp,-304
+    802047c6:	f606                	sd	ra,296(sp)
+    802047c8:	f222                	sd	s0,288(sp)
+    802047ca:	ee26                	sd	s1,280(sp)
+    802047cc:	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){
-    802047cc:	10400613          	li	a2,260
-    802047d0:	ed840593          	addi	a1,s0,-296
-    802047d4:	4501                	li	a0,0
-    802047d6:	ffffe097          	auipc	ra,0xffffe
-    802047da:	71a080e7          	jalr	1818(ra) # 80202ef0 <argstr>
+    802047ce:	10400613          	li	a2,260
+    802047d2:	ed840593          	addi	a1,s0,-296
+    802047d6:	4501                	li	a0,0
+    802047d8:	ffffe097          	auipc	ra,0xffffe
+    802047dc:	71a080e7          	jalr	1818(ra) # 80202ef2 <argstr>
     return -1;
-    802047de:	57fd                	li	a5,-1
+    802047e0:	57fd                	li	a5,-1
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = create(path, T_DIR, 0)) == 0){
-    802047e0:	02054663          	bltz	a0,8020480c <sys_mkdir+0x4a>
-    802047e4:	4601                	li	a2,0
-    802047e6:	4585                	li	a1,1
-    802047e8:	ed840513          	addi	a0,s0,-296
-    802047ec:	00000097          	auipc	ra,0x0
-    802047f0:	c04080e7          	jalr	-1020(ra) # 802043f0 <create>
-    802047f4:	84aa                	mv	s1,a0
-    802047f6:	c10d                	beqz	a0,80204818 <sys_mkdir+0x56>
+    802047e2:	02054663          	bltz	a0,8020480e <sys_mkdir+0x4a>
+    802047e6:	4601                	li	a2,0
+    802047e8:	4585                	li	a1,1
+    802047ea:	ed840513          	addi	a0,s0,-296
+    802047ee:	00000097          	auipc	ra,0x0
+    802047f2:	c04080e7          	jalr	-1020(ra) # 802043f2 <create>
+    802047f6:	84aa                	mv	s1,a0
+    802047f8:	c10d                	beqz	a0,8020481a <sys_mkdir+0x56>
   }
   eunlock(ep);
-    802047f8:	00002097          	auipc	ra,0x2
-    802047fc:	a4c080e7          	jalr	-1460(ra) # 80206244 <eunlock>
+    802047fa:	00002097          	auipc	ra,0x2
+    802047fe:	a5a080e7          	jalr	-1446(ra) # 80206254 <eunlock>
   eput(ep);
-    80204800:	8526                	mv	a0,s1
-    80204802:	00002097          	auipc	ra,0x2
-    80204806:	a90080e7          	jalr	-1392(ra) # 80206292 <eput>
+    80204802:	8526                	mv	a0,s1
+    80204804:	00002097          	auipc	ra,0x2
+    80204808:	a9e080e7          	jalr	-1378(ra) # 802062a2 <eput>
   return 0;
-    8020480a:	4781                	li	a5,0
-}
-    8020480c:	853e                	mv	a0,a5
-    8020480e:	70b2                	ld	ra,296(sp)
-    80204810:	7412                	ld	s0,288(sp)
-    80204812:	64f2                	ld	s1,280(sp)
-    80204814:	6155                	addi	sp,sp,304
-    80204816:	8082                	ret
+    8020480c:	4781                	li	a5,0
+}
+    8020480e:	853e                	mv	a0,a5
+    80204810:	70b2                	ld	ra,296(sp)
+    80204812:	7412                	ld	s0,288(sp)
+    80204814:	64f2                	ld	s1,280(sp)
+    80204816:	6155                	addi	sp,sp,304
+    80204818:	8082                	ret
     return -1;
-    80204818:	57fd                	li	a5,-1
-    8020481a:	bfcd                	j	8020480c <sys_mkdir+0x4a>
+    8020481a:	57fd                	li	a5,-1
+    8020481c:	bfcd                	j	8020480e <sys_mkdir+0x4a>
 
-000000008020481c <sys_chdir>:
+000000008020481e <sys_chdir>:
 
 uint64
 sys_chdir(void)
 {
-    8020481c:	7169                	addi	sp,sp,-304
-    8020481e:	f606                	sd	ra,296(sp)
-    80204820:	f222                	sd	s0,288(sp)
-    80204822:	ee26                	sd	s1,280(sp)
-    80204824:	ea4a                	sd	s2,272(sp)
-    80204826:	1a00                	addi	s0,sp,304
+    8020481e:	7169                	addi	sp,sp,-304
+    80204820:	f606                	sd	ra,296(sp)
+    80204822:	f222                	sd	s0,288(sp)
+    80204824:	ee26                	sd	s1,280(sp)
+    80204826:	ea4a                	sd	s2,272(sp)
+    80204828:	1a00                	addi	s0,sp,304
   char path[FAT32_MAX_PATH];
   struct dirent *ep;
   struct proc *p = myproc();
-    80204828:	ffffd097          	auipc	ra,0xffffd
-    8020482c:	214080e7          	jalr	532(ra) # 80201a3c <myproc>
-    80204830:	892a                	mv	s2,a0
+    8020482a:	ffffd097          	auipc	ra,0xffffd
+    8020482e:	212080e7          	jalr	530(ra) # 80201a3c <myproc>
+    80204832:	892a                	mv	s2,a0
   
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = ename(path)) == NULL){
-    80204832:	10400613          	li	a2,260
-    80204836:	ed840593          	addi	a1,s0,-296
-    8020483a:	4501                	li	a0,0
-    8020483c:	ffffe097          	auipc	ra,0xffffe
-    80204840:	6b4080e7          	jalr	1716(ra) # 80202ef0 <argstr>
+    80204834:	10400613          	li	a2,260
+    80204838:	ed840593          	addi	a1,s0,-296
+    8020483c:	4501                	li	a0,0
+    8020483e:	ffffe097          	auipc	ra,0xffffe
+    80204842:	6b4080e7          	jalr	1716(ra) # 80202ef2 <argstr>
     return -1;
-    80204844:	57fd                	li	a5,-1
+    80204846:	57fd                	li	a5,-1
   if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = ename(path)) == NULL){
-    80204846:	04054063          	bltz	a0,80204886 <sys_chdir+0x6a>
-    8020484a:	ed840513          	addi	a0,s0,-296
-    8020484e:	00002097          	auipc	ra,0x2
-    80204852:	168080e7          	jalr	360(ra) # 802069b6 <ename>
-    80204856:	84aa                	mv	s1,a0
-    80204858:	c931                	beqz	a0,802048ac <sys_chdir+0x90>
+    80204848:	04054063          	bltz	a0,80204888 <sys_chdir+0x6a>
+    8020484c:	ed840513          	addi	a0,s0,-296
+    80204850:	00002097          	auipc	ra,0x2
+    80204854:	176080e7          	jalr	374(ra) # 802069c6 <ename>
+    80204858:	84aa                	mv	s1,a0
+    8020485a:	c931                	beqz	a0,802048ae <sys_chdir+0x90>
   }
   elock(ep);
-    8020485a:	00002097          	auipc	ra,0x2
-    8020485e:	9b4080e7          	jalr	-1612(ra) # 8020620e <elock>
+    8020485c:	00002097          	auipc	ra,0x2
+    80204860:	9c2080e7          	jalr	-1598(ra) # 8020621e <elock>
   if(!(ep->attribute & ATTR_DIRECTORY)){
-    80204862:	1004c783          	lbu	a5,256(s1)
-    80204866:	8bc1                	andi	a5,a5,16
-    80204868:	c795                	beqz	a5,80204894 <sys_chdir+0x78>
+    80204864:	1004c783          	lbu	a5,256(s1)
+    80204868:	8bc1                	andi	a5,a5,16
+    8020486a:	c795                	beqz	a5,80204896 <sys_chdir+0x78>
     eunlock(ep);
     eput(ep);
     return -1;
   }
   eunlock(ep);
-    8020486a:	8526                	mv	a0,s1
-    8020486c:	00002097          	auipc	ra,0x2
-    80204870:	9d8080e7          	jalr	-1576(ra) # 80206244 <eunlock>
+    8020486c:	8526                	mv	a0,s1
+    8020486e:	00002097          	auipc	ra,0x2
+    80204872:	9e6080e7          	jalr	-1562(ra) # 80206254 <eunlock>
   eput(p->cwd);
-    80204874:	15893503          	ld	a0,344(s2)
-    80204878:	00002097          	auipc	ra,0x2
-    8020487c:	a1a080e7          	jalr	-1510(ra) # 80206292 <eput>
+    80204876:	15893503          	ld	a0,344(s2)
+    8020487a:	00002097          	auipc	ra,0x2
+    8020487e:	a28080e7          	jalr	-1496(ra) # 802062a2 <eput>
   p->cwd = ep;
-    80204880:	14993c23          	sd	s1,344(s2)
+    80204882:	14993c23          	sd	s1,344(s2)
   return 0;
-    80204884:	4781                	li	a5,0
-}
-    80204886:	853e                	mv	a0,a5
-    80204888:	70b2                	ld	ra,296(sp)
-    8020488a:	7412                	ld	s0,288(sp)
-    8020488c:	64f2                	ld	s1,280(sp)
-    8020488e:	6952                	ld	s2,272(sp)
-    80204890:	6155                	addi	sp,sp,304
-    80204892:	8082                	ret
+    80204886:	4781                	li	a5,0
+}
+    80204888:	853e                	mv	a0,a5
+    8020488a:	70b2                	ld	ra,296(sp)
+    8020488c:	7412                	ld	s0,288(sp)
+    8020488e:	64f2                	ld	s1,280(sp)
+    80204890:	6952                	ld	s2,272(sp)
+    80204892:	6155                	addi	sp,sp,304
+    80204894:	8082                	ret
     eunlock(ep);
-    80204894:	8526                	mv	a0,s1
-    80204896:	00002097          	auipc	ra,0x2
-    8020489a:	9ae080e7          	jalr	-1618(ra) # 80206244 <eunlock>
+    80204896:	8526                	mv	a0,s1
+    80204898:	00002097          	auipc	ra,0x2
+    8020489c:	9bc080e7          	jalr	-1604(ra) # 80206254 <eunlock>
     eput(ep);
-    8020489e:	8526                	mv	a0,s1
-    802048a0:	00002097          	auipc	ra,0x2
-    802048a4:	9f2080e7          	jalr	-1550(ra) # 80206292 <eput>
+    802048a0:	8526                	mv	a0,s1
+    802048a2:	00002097          	auipc	ra,0x2
+    802048a6:	a00080e7          	jalr	-1536(ra) # 802062a2 <eput>
     return -1;
-    802048a8:	57fd                	li	a5,-1
-    802048aa:	bff1                	j	80204886 <sys_chdir+0x6a>
+    802048aa:	57fd                	li	a5,-1
+    802048ac:	bff1                	j	80204888 <sys_chdir+0x6a>
     return -1;
-    802048ac:	57fd                	li	a5,-1
-    802048ae:	bfe1                	j	80204886 <sys_chdir+0x6a>
+    802048ae:	57fd                	li	a5,-1
+    802048b0:	bfe1                	j	80204888 <sys_chdir+0x6a>
 
-00000000802048b0 <sys_pipe>:
+00000000802048b2 <sys_pipe>:
 
 uint64
 sys_pipe(void)
 {
-    802048b0:	7139                	addi	sp,sp,-64
-    802048b2:	fc06                	sd	ra,56(sp)
-    802048b4:	f822                	sd	s0,48(sp)
-    802048b6:	f426                	sd	s1,40(sp)
-    802048b8:	0080                	addi	s0,sp,64
+    802048b2:	7139                	addi	sp,sp,-64
+    802048b4:	fc06                	sd	ra,56(sp)
+    802048b6:	f822                	sd	s0,48(sp)
+    802048b8:	f426                	sd	s1,40(sp)
+    802048ba:	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();
-    802048ba:	ffffd097          	auipc	ra,0xffffd
-    802048be:	182080e7          	jalr	386(ra) # 80201a3c <myproc>
-    802048c2:	84aa                	mv	s1,a0
+    802048bc:	ffffd097          	auipc	ra,0xffffd
+    802048c0:	180080e7          	jalr	384(ra) # 80201a3c <myproc>
+    802048c4:	84aa                	mv	s1,a0
 
   if(argaddr(0, &fdarray) < 0)
-    802048c4:	fd840593          	addi	a1,s0,-40
-    802048c8:	4501                	li	a0,0
-    802048ca:	ffffe097          	auipc	ra,0xffffe
-    802048ce:	604080e7          	jalr	1540(ra) # 80202ece <argaddr>
+    802048c6:	fd840593          	addi	a1,s0,-40
+    802048ca:	4501                	li	a0,0
+    802048cc:	ffffe097          	auipc	ra,0xffffe
+    802048d0:	604080e7          	jalr	1540(ra) # 80202ed0 <argaddr>
     return -1;
-    802048d2:	57fd                	li	a5,-1
+    802048d4:	57fd                	li	a5,-1
   if(argaddr(0, &fdarray) < 0)
-    802048d4:	0c054e63          	bltz	a0,802049b0 <sys_pipe+0x100>
+    802048d6:	0c054e63          	bltz	a0,802049b2 <sys_pipe+0x100>
   if(pipealloc(&rf, &wf) < 0)
-    802048d8:	fc840593          	addi	a1,s0,-56
-    802048dc:	fd040513          	addi	a0,s0,-48
-    802048e0:	fffff097          	auipc	ra,0xfffff
-    802048e4:	2f8080e7          	jalr	760(ra) # 80203bd8 <pipealloc>
+    802048da:	fc840593          	addi	a1,s0,-56
+    802048de:	fd040513          	addi	a0,s0,-48
+    802048e2:	fffff097          	auipc	ra,0xfffff
+    802048e6:	2f8080e7          	jalr	760(ra) # 80203bda <pipealloc>
     return -1;
-    802048e8:	57fd                	li	a5,-1
+    802048ea:	57fd                	li	a5,-1
   if(pipealloc(&rf, &wf) < 0)
-    802048ea:	0c054363          	bltz	a0,802049b0 <sys_pipe+0x100>
+    802048ec:	0c054363          	bltz	a0,802049b2 <sys_pipe+0x100>
   fd0 = -1;
-    802048ee:	fcf42223          	sw	a5,-60(s0)
+    802048f0:	fcf42223          	sw	a5,-60(s0)
   if((fd0 = fdalloc(rf)) < 0 || (fd1 = fdalloc(wf)) < 0){
-    802048f2:	fd043503          	ld	a0,-48(s0)
-    802048f6:	00000097          	auipc	ra,0x0
-    802048fa:	ab8080e7          	jalr	-1352(ra) # 802043ae <fdalloc>
-    802048fe:	fca42223          	sw	a0,-60(s0)
-    80204902:	08054a63          	bltz	a0,80204996 <sys_pipe+0xe6>
-    80204906:	fc843503          	ld	a0,-56(s0)
-    8020490a:	00000097          	auipc	ra,0x0
-    8020490e:	aa4080e7          	jalr	-1372(ra) # 802043ae <fdalloc>
-    80204912:	fca42023          	sw	a0,-64(s0)
-    80204916:	06054763          	bltz	a0,80204984 <sys_pipe+0xd4>
+    802048f4:	fd043503          	ld	a0,-48(s0)
+    802048f8:	00000097          	auipc	ra,0x0
+    802048fc:	ab8080e7          	jalr	-1352(ra) # 802043b0 <fdalloc>
+    80204900:	fca42223          	sw	a0,-60(s0)
+    80204904:	08054a63          	bltz	a0,80204998 <sys_pipe+0xe6>
+    80204908:	fc843503          	ld	a0,-56(s0)
+    8020490c:	00000097          	auipc	ra,0x0
+    80204910:	aa4080e7          	jalr	-1372(ra) # 802043b0 <fdalloc>
+    80204914:	fca42023          	sw	a0,-64(s0)
+    80204918:	06054763          	bltz	a0,80204986 <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 ||
-    8020491a:	4611                	li	a2,4
-    8020491c:	fc440593          	addi	a1,s0,-60
-    80204920:	fd843503          	ld	a0,-40(s0)
-    80204924:	ffffd097          	auipc	ra,0xffffd
-    80204928:	a4e080e7          	jalr	-1458(ra) # 80201372 <copyout2>
-    8020492c:	00054f63          	bltz	a0,8020494a <sys_pipe+0x9a>
+    8020491c:	4611                	li	a2,4
+    8020491e:	fc440593          	addi	a1,s0,-60
+    80204922:	fd843503          	ld	a0,-40(s0)
+    80204926:	ffffd097          	auipc	ra,0xffffd
+    8020492a:	a4c080e7          	jalr	-1460(ra) # 80201372 <copyout2>
+    8020492e:	00054f63          	bltz	a0,8020494c <sys_pipe+0x9a>
      copyout2(fdarray+sizeof(fd0), (char *)&fd1, sizeof(fd1)) < 0){
-    80204930:	4611                	li	a2,4
-    80204932:	fc040593          	addi	a1,s0,-64
-    80204936:	fd843503          	ld	a0,-40(s0)
-    8020493a:	0511                	addi	a0,a0,4
-    8020493c:	ffffd097          	auipc	ra,0xffffd
-    80204940:	a36080e7          	jalr	-1482(ra) # 80201372 <copyout2>
+    80204932:	4611                	li	a2,4
+    80204934:	fc040593          	addi	a1,s0,-64
+    80204938:	fd843503          	ld	a0,-40(s0)
+    8020493c:	0511                	addi	a0,a0,4
+    8020493e:	ffffd097          	auipc	ra,0xffffd
+    80204942:	a34080e7          	jalr	-1484(ra) # 80201372 <copyout2>
     p->ofile[fd1] = 0;
     fileclose(rf);
     fileclose(wf);
     return -1;
   }
   return 0;
-    80204944:	4781                	li	a5,0
+    80204946:	4781                	li	a5,0
   if(copyout2(fdarray, (char*)&fd0, sizeof(fd0)) < 0 ||
-    80204946:	06055563          	bgez	a0,802049b0 <sys_pipe+0x100>
+    80204948:	06055563          	bgez	a0,802049b2 <sys_pipe+0x100>
     p->ofile[fd0] = 0;
-    8020494a:	fc442783          	lw	a5,-60(s0)
-    8020494e:	07e9                	addi	a5,a5,26
-    80204950:	078e                	slli	a5,a5,0x3
-    80204952:	97a6                	add	a5,a5,s1
-    80204954:	0007b423          	sd	zero,8(a5)
+    8020494c:	fc442783          	lw	a5,-60(s0)
+    80204950:	07e9                	addi	a5,a5,26
+    80204952:	078e                	slli	a5,a5,0x3
+    80204954:	97a6                	add	a5,a5,s1
+    80204956:	0007b423          	sd	zero,8(a5)
     p->ofile[fd1] = 0;
-    80204958:	fc042783          	lw	a5,-64(s0)
-    8020495c:	07e9                	addi	a5,a5,26
-    8020495e:	078e                	slli	a5,a5,0x3
-    80204960:	00f48533          	add	a0,s1,a5
-    80204964:	00053423          	sd	zero,8(a0)
+    8020495a:	fc042783          	lw	a5,-64(s0)
+    8020495e:	07e9                	addi	a5,a5,26
+    80204960:	078e                	slli	a5,a5,0x3
+    80204962:	00f48533          	add	a0,s1,a5
+    80204966:	00053423          	sd	zero,8(a0)
     fileclose(rf);
-    80204968:	fd043503          	ld	a0,-48(s0)
-    8020496c:	fffff097          	auipc	ra,0xfffff
-    80204970:	efa080e7          	jalr	-262(ra) # 80203866 <fileclose>
+    8020496a:	fd043503          	ld	a0,-48(s0)
+    8020496e:	fffff097          	auipc	ra,0xfffff
+    80204972:	efa080e7          	jalr	-262(ra) # 80203868 <fileclose>
     fileclose(wf);
-    80204974:	fc843503          	ld	a0,-56(s0)
-    80204978:	fffff097          	auipc	ra,0xfffff
-    8020497c:	eee080e7          	jalr	-274(ra) # 80203866 <fileclose>
+    80204976:	fc843503          	ld	a0,-56(s0)
+    8020497a:	fffff097          	auipc	ra,0xfffff
+    8020497e:	eee080e7          	jalr	-274(ra) # 80203868 <fileclose>
     return -1;
-    80204980:	57fd                	li	a5,-1
-    80204982:	a03d                	j	802049b0 <sys_pipe+0x100>
+    80204982:	57fd                	li	a5,-1
+    80204984:	a03d                	j	802049b2 <sys_pipe+0x100>
     if(fd0 >= 0)
-    80204984:	fc442783          	lw	a5,-60(s0)
-    80204988:	0007c763          	bltz	a5,80204996 <sys_pipe+0xe6>
+    80204986:	fc442783          	lw	a5,-60(s0)
+    8020498a:	0007c763          	bltz	a5,80204998 <sys_pipe+0xe6>
       p->ofile[fd0] = 0;
-    8020498c:	07e9                	addi	a5,a5,26
-    8020498e:	078e                	slli	a5,a5,0x3
-    80204990:	97a6                	add	a5,a5,s1
-    80204992:	0007b423          	sd	zero,8(a5)
+    8020498e:	07e9                	addi	a5,a5,26
+    80204990:	078e                	slli	a5,a5,0x3
+    80204992:	97a6                	add	a5,a5,s1
+    80204994:	0007b423          	sd	zero,8(a5)
     fileclose(rf);
-    80204996:	fd043503          	ld	a0,-48(s0)
-    8020499a:	fffff097          	auipc	ra,0xfffff
-    8020499e:	ecc080e7          	jalr	-308(ra) # 80203866 <fileclose>
+    80204998:	fd043503          	ld	a0,-48(s0)
+    8020499c:	fffff097          	auipc	ra,0xfffff
+    802049a0:	ecc080e7          	jalr	-308(ra) # 80203868 <fileclose>
     fileclose(wf);
-    802049a2:	fc843503          	ld	a0,-56(s0)
-    802049a6:	fffff097          	auipc	ra,0xfffff
-    802049aa:	ec0080e7          	jalr	-320(ra) # 80203866 <fileclose>
+    802049a4:	fc843503          	ld	a0,-56(s0)
+    802049a8:	fffff097          	auipc	ra,0xfffff
+    802049ac:	ec0080e7          	jalr	-320(ra) # 80203868 <fileclose>
     return -1;
-    802049ae:	57fd                	li	a5,-1
+    802049b0:	57fd                	li	a5,-1
 }
-    802049b0:	853e                	mv	a0,a5
-    802049b2:	70e2                	ld	ra,56(sp)
-    802049b4:	7442                	ld	s0,48(sp)
-    802049b6:	74a2                	ld	s1,40(sp)
-    802049b8:	6121                	addi	sp,sp,64
-    802049ba:	8082                	ret
+    802049b2:	853e                	mv	a0,a5
+    802049b4:	70e2                	ld	ra,56(sp)
+    802049b6:	7442                	ld	s0,48(sp)
+    802049b8:	74a2                	ld	s1,40(sp)
+    802049ba:	6121                	addi	sp,sp,64
+    802049bc:	8082                	ret
 
-00000000802049bc <sys_dev>:
+00000000802049be <sys_dev>:
 
 // To open console device.
 uint64
 sys_dev(void)
 {
-    802049bc:	7179                	addi	sp,sp,-48
-    802049be:	f406                	sd	ra,40(sp)
-    802049c0:	f022                	sd	s0,32(sp)
-    802049c2:	ec26                	sd	s1,24(sp)
-    802049c4:	1800                	addi	s0,sp,48
+    802049be:	7179                	addi	sp,sp,-48
+    802049c0:	f406                	sd	ra,40(sp)
+    802049c2:	f022                	sd	s0,32(sp)
+    802049c4:	ec26                	sd	s1,24(sp)
+    802049c6:	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){
-    802049c6:	fdc40593          	addi	a1,s0,-36
-    802049ca:	4501                	li	a0,0
-    802049cc:	ffffe097          	auipc	ra,0xffffe
-    802049d0:	4a0080e7          	jalr	1184(ra) # 80202e6c <argint>
-    802049d4:	08054a63          	bltz	a0,80204a68 <sys_dev+0xac>
-    802049d8:	fd840593          	addi	a1,s0,-40
-    802049dc:	4505                	li	a0,1
-    802049de:	ffffe097          	auipc	ra,0xffffe
-    802049e2:	48e080e7          	jalr	1166(ra) # 80202e6c <argint>
-    802049e6:	08054763          	bltz	a0,80204a74 <sys_dev+0xb8>
-    802049ea:	fd440593          	addi	a1,s0,-44
-    802049ee:	4509                	li	a0,2
-    802049f0:	ffffe097          	auipc	ra,0xffffe
-    802049f4:	47c080e7          	jalr	1148(ra) # 80202e6c <argint>
-    802049f8:	08054063          	bltz	a0,80204a78 <sys_dev+0xbc>
+    802049c8:	fdc40593          	addi	a1,s0,-36
+    802049cc:	4501                	li	a0,0
+    802049ce:	ffffe097          	auipc	ra,0xffffe
+    802049d2:	4a0080e7          	jalr	1184(ra) # 80202e6e <argint>
+    802049d6:	08054a63          	bltz	a0,80204a6a <sys_dev+0xac>
+    802049da:	fd840593          	addi	a1,s0,-40
+    802049de:	4505                	li	a0,1
+    802049e0:	ffffe097          	auipc	ra,0xffffe
+    802049e4:	48e080e7          	jalr	1166(ra) # 80202e6e <argint>
+    802049e8:	08054763          	bltz	a0,80204a76 <sys_dev+0xb8>
+    802049ec:	fd440593          	addi	a1,s0,-44
+    802049f0:	4509                	li	a0,2
+    802049f2:	ffffe097          	auipc	ra,0xffffe
+    802049f6:	47c080e7          	jalr	1148(ra) # 80202e6e <argint>
+    802049fa:	08054063          	bltz	a0,80204a7a <sys_dev+0xbc>
     return -1;
   }
 
   if(omode & O_CREATE){
-    802049fc:	fdc42783          	lw	a5,-36(s0)
-    80204a00:	2007f793          	andi	a5,a5,512
-    80204a04:	ebb1                	bnez	a5,80204a58 <sys_dev+0x9c>
+    802049fe:	fdc42783          	lw	a5,-36(s0)
+    80204a02:	2007f793          	andi	a5,a5,512
+    80204a06:	ebb1                	bnez	a5,80204a5a <sys_dev+0x9c>
     panic("dev file on FAT");
   }
 
   if(major < 0 || major >= NDEV)
-    80204a06:	fd842703          	lw	a4,-40(s0)
-    80204a0a:	47a5                	li	a5,9
+    80204a08:	fd842703          	lw	a4,-40(s0)
+    80204a0c:	47a5                	li	a5,9
     return -1;
-    80204a0c:	557d                	li	a0,-1
+    80204a0e:	557d                	li	a0,-1
   if(major < 0 || major >= NDEV)
-    80204a0e:	04e7ee63          	bltu	a5,a4,80204a6a <sys_dev+0xae>
+    80204a10:	04e7ee63          	bltu	a5,a4,80204a6c <sys_dev+0xae>
 
   if((f = filealloc()) == NULL || (fd = fdalloc(f)) < 0){
-    80204a12:	fffff097          	auipc	ra,0xfffff
-    80204a16:	d98080e7          	jalr	-616(ra) # 802037aa <filealloc>
-    80204a1a:	84aa                	mv	s1,a0
-    80204a1c:	c125                	beqz	a0,80204a7c <sys_dev+0xc0>
-    80204a1e:	00000097          	auipc	ra,0x0
-    80204a22:	990080e7          	jalr	-1648(ra) # 802043ae <fdalloc>
-    80204a26:	04054d63          	bltz	a0,80204a80 <sys_dev+0xc4>
+    80204a14:	fffff097          	auipc	ra,0xfffff
+    80204a18:	d98080e7          	jalr	-616(ra) # 802037ac <filealloc>
+    80204a1c:	84aa                	mv	s1,a0
+    80204a1e:	c125                	beqz	a0,80204a7e <sys_dev+0xc0>
+    80204a20:	00000097          	auipc	ra,0x0
+    80204a24:	990080e7          	jalr	-1648(ra) # 802043b0 <fdalloc>
+    80204a28:	04054d63          	bltz	a0,80204a82 <sys_dev+0xc4>
     if(f)
       fileclose(f);
     return -1;
   }
 
   f->type = FD_DEVICE;
-    80204a2a:	478d                	li	a5,3
-    80204a2c:	c09c                	sw	a5,0(s1)
+    80204a2c:	478d                	li	a5,3
+    80204a2e:	c09c                	sw	a5,0(s1)
   f->off = 0;
-    80204a2e:	0204a023          	sw	zero,32(s1)
+    80204a30:	0204a023          	sw	zero,32(s1)
   f->ep = 0;
-    80204a32:	0004bc23          	sd	zero,24(s1)
+    80204a34:	0004bc23          	sd	zero,24(s1)
   f->major = major;
-    80204a36:	fd842783          	lw	a5,-40(s0)
-    80204a3a:	02f49223          	sh	a5,36(s1)
+    80204a38:	fd842783          	lw	a5,-40(s0)
+    80204a3c:	02f49223          	sh	a5,36(s1)
   f->readable = !(omode & O_WRONLY);
-    80204a3e:	fdc42783          	lw	a5,-36(s0)
-    80204a42:	0017c713          	xori	a4,a5,1
-    80204a46:	8b05                	andi	a4,a4,1
-    80204a48:	00e48423          	sb	a4,8(s1)
+    80204a40:	fdc42783          	lw	a5,-36(s0)
+    80204a44:	0017c713          	xori	a4,a5,1
+    80204a48:	8b05                	andi	a4,a4,1
+    80204a4a:	00e48423          	sb	a4,8(s1)
   f->writable = (omode & O_WRONLY) || (omode & O_RDWR);
-    80204a4c:	8b8d                	andi	a5,a5,3
-    80204a4e:	00f037b3          	snez	a5,a5
-    80204a52:	00f484a3          	sb	a5,9(s1)
+    80204a4e:	8b8d                	andi	a5,a5,3
+    80204a50:	00f037b3          	snez	a5,a5
+    80204a54:	00f484a3          	sb	a5,9(s1)
 
   return fd;
-    80204a56:	a811                	j	80204a6a <sys_dev+0xae>
+    80204a58:	a811                	j	80204a6c <sys_dev+0xae>
     panic("dev file on FAT");
-    80204a58:	00005517          	auipc	a0,0x5
-    80204a5c:	13050513          	addi	a0,a0,304 # 80209b88 <digits+0x808>
-    80204a60:	ffffb097          	auipc	ra,0xffffb
-    80204a64:	6e4080e7          	jalr	1764(ra) # 80200144 <panic>
+    80204a5a:	00005517          	auipc	a0,0x5
+    80204a5e:	13650513          	addi	a0,a0,310 # 80209b90 <digits+0x810>
+    80204a62:	ffffb097          	auipc	ra,0xffffb
+    80204a66:	6e2080e7          	jalr	1762(ra) # 80200144 <panic>
     return -1;
-    80204a68:	557d                	li	a0,-1
+    80204a6a:	557d                	li	a0,-1
 }
-    80204a6a:	70a2                	ld	ra,40(sp)
-    80204a6c:	7402                	ld	s0,32(sp)
-    80204a6e:	64e2                	ld	s1,24(sp)
-    80204a70:	6145                	addi	sp,sp,48
-    80204a72:	8082                	ret
+    80204a6c:	70a2                	ld	ra,40(sp)
+    80204a6e:	7402                	ld	s0,32(sp)
+    80204a70:	64e2                	ld	s1,24(sp)
+    80204a72:	6145                	addi	sp,sp,48
+    80204a74:	8082                	ret
     return -1;
-    80204a74:	557d                	li	a0,-1
-    80204a76:	bfd5                	j	80204a6a <sys_dev+0xae>
-    80204a78:	557d                	li	a0,-1
-    80204a7a:	bfc5                	j	80204a6a <sys_dev+0xae>
+    80204a76:	557d                	li	a0,-1
+    80204a78:	bfd5                	j	80204a6c <sys_dev+0xae>
+    80204a7a:	557d                	li	a0,-1
+    80204a7c:	bfc5                	j	80204a6c <sys_dev+0xae>
     return -1;
-    80204a7c:	557d                	li	a0,-1
-    80204a7e:	b7f5                	j	80204a6a <sys_dev+0xae>
+    80204a7e:	557d                	li	a0,-1
+    80204a80:	b7f5                	j	80204a6c <sys_dev+0xae>
       fileclose(f);
-    80204a80:	8526                	mv	a0,s1
-    80204a82:	fffff097          	auipc	ra,0xfffff
-    80204a86:	de4080e7          	jalr	-540(ra) # 80203866 <fileclose>
+    80204a82:	8526                	mv	a0,s1
+    80204a84:	fffff097          	auipc	ra,0xfffff
+    80204a88:	de4080e7          	jalr	-540(ra) # 80203868 <fileclose>
     return -1;
-    80204a8a:	557d                	li	a0,-1
-    80204a8c:	bff9                	j	80204a6a <sys_dev+0xae>
+    80204a8c:	557d                	li	a0,-1
+    80204a8e:	bff9                	j	80204a6c <sys_dev+0xae>
 
-0000000080204a8e <sys_readdir>:
+0000000080204a90 <sys_readdir>:
 
 // To support ls command
 uint64
 sys_readdir(void)
 {
-    80204a8e:	1101                	addi	sp,sp,-32
-    80204a90:	ec06                	sd	ra,24(sp)
-    80204a92:	e822                	sd	s0,16(sp)
-    80204a94:	1000                	addi	s0,sp,32
+    80204a90:	1101                	addi	sp,sp,-32
+    80204a92:	ec06                	sd	ra,24(sp)
+    80204a94:	e822                	sd	s0,16(sp)
+    80204a96:	1000                	addi	s0,sp,32
   struct file *f;
   uint64 p;
 
   if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0)
-    80204a96:	fe840613          	addi	a2,s0,-24
-    80204a9a:	4581                	li	a1,0
-    80204a9c:	4501                	li	a0,0
-    80204a9e:	00000097          	auipc	ra,0x0
-    80204aa2:	8a8080e7          	jalr	-1880(ra) # 80204346 <argfd>
+    80204a98:	fe840613          	addi	a2,s0,-24
+    80204a9c:	4581                	li	a1,0
+    80204a9e:	4501                	li	a0,0
+    80204aa0:	00000097          	auipc	ra,0x0
+    80204aa4:	8a8080e7          	jalr	-1880(ra) # 80204348 <argfd>
     return -1;
-    80204aa6:	57fd                	li	a5,-1
+    80204aa8:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0)
-    80204aa8:	02054563          	bltz	a0,80204ad2 <sys_readdir+0x44>
-    80204aac:	fe040593          	addi	a1,s0,-32
-    80204ab0:	4505                	li	a0,1
-    80204ab2:	ffffe097          	auipc	ra,0xffffe
-    80204ab6:	41c080e7          	jalr	1052(ra) # 80202ece <argaddr>
+    80204aaa:	02054563          	bltz	a0,80204ad4 <sys_readdir+0x44>
+    80204aae:	fe040593          	addi	a1,s0,-32
+    80204ab2:	4505                	li	a0,1
+    80204ab4:	ffffe097          	auipc	ra,0xffffe
+    80204ab8:	41c080e7          	jalr	1052(ra) # 80202ed0 <argaddr>
     return -1;
-    80204aba:	57fd                	li	a5,-1
+    80204abc:	57fd                	li	a5,-1
   if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0)
-    80204abc:	00054b63          	bltz	a0,80204ad2 <sys_readdir+0x44>
+    80204abe:	00054b63          	bltz	a0,80204ad4 <sys_readdir+0x44>
   return dirnext(f, p);
-    80204ac0:	fe043583          	ld	a1,-32(s0)
-    80204ac4:	fe843503          	ld	a0,-24(s0)
-    80204ac8:	fffff097          	auipc	ra,0xfffff
-    80204acc:	04a080e7          	jalr	74(ra) # 80203b12 <dirnext>
-    80204ad0:	87aa                	mv	a5,a0
+    80204ac2:	fe043583          	ld	a1,-32(s0)
+    80204ac6:	fe843503          	ld	a0,-24(s0)
+    80204aca:	fffff097          	auipc	ra,0xfffff
+    80204ace:	04a080e7          	jalr	74(ra) # 80203b14 <dirnext>
+    80204ad2:	87aa                	mv	a5,a0
 }
-    80204ad2:	853e                	mv	a0,a5
-    80204ad4:	60e2                	ld	ra,24(sp)
-    80204ad6:	6442                	ld	s0,16(sp)
-    80204ad8:	6105                	addi	sp,sp,32
-    80204ada:	8082                	ret
+    80204ad4:	853e                	mv	a0,a5
+    80204ad6:	60e2                	ld	ra,24(sp)
+    80204ad8:	6442                	ld	s0,16(sp)
+    80204ada:	6105                	addi	sp,sp,32
+    80204adc:	8082                	ret
 
-0000000080204adc <sys_getcwd>:
+0000000080204ade <sys_getcwd>:
 
 }
 */
 uint64
 sys_getcwd(void)
 {
-    80204adc:	714d                	addi	sp,sp,-336
-    80204ade:	e686                	sd	ra,328(sp)
-    80204ae0:	e2a2                	sd	s0,320(sp)
-    80204ae2:	fe26                	sd	s1,312(sp)
-    80204ae4:	fa4a                	sd	s2,304(sp)
-    80204ae6:	f64e                	sd	s3,296(sp)
-    80204ae8:	f252                	sd	s4,288(sp)
-    80204aea:	ee56                	sd	s5,280(sp)
-    80204aec:	0a80                	addi	s0,sp,336
+    80204ade:	714d                	addi	sp,sp,-336
+    80204ae0:	e686                	sd	ra,328(sp)
+    80204ae2:	e2a2                	sd	s0,320(sp)
+    80204ae4:	fe26                	sd	s1,312(sp)
+    80204ae6:	fa4a                	sd	s2,304(sp)
+    80204ae8:	f64e                	sd	s3,296(sp)
+    80204aea:	f252                	sd	s4,288(sp)
+    80204aec:	ee56                	sd	s5,280(sp)
+    80204aee:	0a80                	addi	s0,sp,336
   char path[FAT32_MAX_PATH];  // 用于构建路径的缓冲区
   char *s;                    // 指向路径字符串的指针
   int len;                    // 目录名的长度
 
   // 从系统调用参数中提取 buf 和 size
   if (argaddr(0, &buf_addr) < 0 || argint(1, (int *)&size) < 0) {
-    80204aee:	fb840593          	addi	a1,s0,-72
-    80204af2:	4501                	li	a0,0
-    80204af4:	ffffe097          	auipc	ra,0xffffe
-    80204af8:	3da080e7          	jalr	986(ra) # 80202ece <argaddr>
+    80204af0:	fb840593          	addi	a1,s0,-72
+    80204af4:	4501                	li	a0,0
+    80204af6:	ffffe097          	auipc	ra,0xffffe
+    80204afa:	3da080e7          	jalr	986(ra) # 80202ed0 <argaddr>
     return -1;  // 提取参数失败,返回错误
-    80204afc:	57fd                	li	a5,-1
+    80204afe:	57fd                	li	a5,-1
   if (argaddr(0, &buf_addr) < 0 || argint(1, (int *)&size) < 0) {
-    80204afe:	0c054263          	bltz	a0,80204bc2 <sys_getcwd+0xe6>
-    80204b02:	fb440593          	addi	a1,s0,-76
-    80204b06:	4505                	li	a0,1
-    80204b08:	ffffe097          	auipc	ra,0xffffe
-    80204b0c:	364080e7          	jalr	868(ra) # 80202e6c <argint>
-    80204b10:	0a054663          	bltz	a0,80204bbc <sys_getcwd+0xe0>
+    80204b00:	0c054263          	bltz	a0,80204bc4 <sys_getcwd+0xe6>
+    80204b04:	fb440593          	addi	a1,s0,-76
+    80204b08:	4505                	li	a0,1
+    80204b0a:	ffffe097          	auipc	ra,0xffffe
+    80204b0e:	364080e7          	jalr	868(ra) # 80202e6e <argint>
+    80204b12:	0a054663          	bltz	a0,80204bbe <sys_getcwd+0xe0>
   }
 
   // 如果用户提供的缓冲区地址为 0(NULL),直接返回错误
   if (buf_addr == 0) {
-    80204b14:	fb843703          	ld	a4,-72(s0)
+    80204b16:	fb843703          	ld	a4,-72(s0)
     return -1;
-    80204b18:	57fd                	li	a5,-1
+    80204b1a:	57fd                	li	a5,-1
   if (buf_addr == 0) {
-    80204b1a:	c745                	beqz	a4,80204bc2 <sys_getcwd+0xe6>
+    80204b1c:	c745                	beqz	a4,80204bc4 <sys_getcwd+0xe6>
   }
 
   // 获取当前进程的当前工作目录
   struct dirent *de = myproc()->cwd;
-    80204b1c:	ffffd097          	auipc	ra,0xffffd
-    80204b20:	f20080e7          	jalr	-224(ra) # 80201a3c <myproc>
-    80204b24:	15853483          	ld	s1,344(a0)
+    80204b1e:	ffffd097          	auipc	ra,0xffffd
+    80204b22:	f1e080e7          	jalr	-226(ra) # 80201a3c <myproc>
+    80204b26:	15853483          	ld	s1,344(a0)
 
   // 处理根目录
   if (de->parent == NULL) {
-    80204b28:	1204b783          	ld	a5,288(s1)
-    80204b2c:	cbb5                	beqz	a5,80204ba0 <sys_getcwd+0xc4>
+    80204b2a:	1204b783          	ld	a5,288(s1)
+    80204b2e:	cbb5                	beqz	a5,80204ba2 <sys_getcwd+0xc4>
     s = path;  // 指向 path
   }
   // 处理非根目录
   else {
     s = path + FAT32_MAX_PATH - 1;  // 指向缓冲区末尾
     *s = '\0';                       // 添加字符串结束符
-    80204b2e:	fa0409a3          	sb	zero,-77(s0)
+    80204b30:	fa0409a3          	sb	zero,-77(s0)
     s = path + FAT32_MAX_PATH - 1;  // 指向缓冲区末尾
-    80204b32:	fb340993          	addi	s3,s0,-77
+    80204b34:	fb340993          	addi	s3,s0,-77
     while (de->parent) {             // 逐级向上遍历父目录
       len = strlen(de->filename);    // 获取当前目录名的长度
       s -= len;                      // 移动指针,为目录名腾出空间
       if (s <= path) {               // 检查是否超出缓冲区
-    80204b36:	eb040a13          	addi	s4,s0,-336
+    80204b38:	eb040a13          	addi	s4,s0,-336
         return -1;                   // 路径过长,返回错误
       }
       strncpy(s, de->filename, len);  // 复制目录名
       *--s = '/';                     // 添加斜杠
-    80204b3a:	02f00a93          	li	s5,47
+    80204b3c:	02f00a93          	li	s5,47
       len = strlen(de->filename);    // 获取当前目录名的长度
-    80204b3e:	8526                	mv	a0,s1
-    80204b40:	ffffc097          	auipc	ra,0xffffc
-    80204b44:	da6080e7          	jalr	-602(ra) # 802008e6 <strlen>
-    80204b48:	862a                	mv	a2,a0
+    80204b40:	8526                	mv	a0,s1
+    80204b42:	ffffc097          	auipc	ra,0xffffc
+    80204b46:	da4080e7          	jalr	-604(ra) # 802008e6 <strlen>
+    80204b4a:	862a                	mv	a2,a0
       s -= len;                      // 移动指针,为目录名腾出空间
-    80204b4a:	40a98933          	sub	s2,s3,a0
+    80204b4c:	40a98933          	sub	s2,s3,a0
       if (s <= path) {               // 检查是否超出缓冲区
-    80204b4e:	072a7963          	bgeu	s4,s2,80204bc0 <sys_getcwd+0xe4>
+    80204b50:	072a7963          	bgeu	s4,s2,80204bc2 <sys_getcwd+0xe4>
       strncpy(s, de->filename, len);  // 复制目录名
-    80204b52:	85a6                	mv	a1,s1
-    80204b54:	854a                	mv	a0,s2
-    80204b56:	ffffc097          	auipc	ra,0xffffc
-    80204b5a:	d20080e7          	jalr	-736(ra) # 80200876 <strncpy>
+    80204b54:	85a6                	mv	a1,s1
+    80204b56:	854a                	mv	a0,s2
+    80204b58:	ffffc097          	auipc	ra,0xffffc
+    80204b5c:	d1e080e7          	jalr	-738(ra) # 80200876 <strncpy>
       *--s = '/';                     // 添加斜杠
-    80204b5e:	fff90993          	addi	s3,s2,-1
-    80204b62:	ff590fa3          	sb	s5,-1(s2)
+    80204b60:	fff90993          	addi	s3,s2,-1
+    80204b64:	ff590fa3          	sb	s5,-1(s2)
       de = de->parent;                // 移动到父目录
-    80204b66:	1204b483          	ld	s1,288(s1)
+    80204b68:	1204b483          	ld	s1,288(s1)
     while (de->parent) {             // 逐级向上遍历父目录
-    80204b6a:	1204b783          	ld	a5,288(s1)
-    80204b6e:	fbe1                	bnez	a5,80204b3e <sys_getcwd+0x62>
+    80204b6c:	1204b783          	ld	a5,288(s1)
+    80204b70:	fbe1                	bnez	a5,80204b40 <sys_getcwd+0x62>
     }
   }
 
   // 计算路径长度
   int path_len = strlen(s);
-    80204b70:	854e                	mv	a0,s3
-    80204b72:	ffffc097          	auipc	ra,0xffffc
-    80204b76:	d74080e7          	jalr	-652(ra) # 802008e6 <strlen>
+    80204b72:	854e                	mv	a0,s3
+    80204b74:	ffffc097          	auipc	ra,0xffffc
+    80204b78:	d72080e7          	jalr	-654(ra) # 802008e6 <strlen>
 
   // 检查用户提供的缓冲区大小是否足够
   if (size < path_len + 1) {
-    80204b7a:	fb442703          	lw	a4,-76(s0)
+    80204b7c:	fb442703          	lw	a4,-76(s0)
     return -1;  // 缓冲区不足,返回错误
-    80204b7e:	57fd                	li	a5,-1
+    80204b80:	57fd                	li	a5,-1
   if (size < path_len + 1) {
-    80204b80:	04e55163          	bge	a0,a4,80204bc2 <sys_getcwd+0xe6>
+    80204b82:	04e55163          	bge	a0,a4,80204bc4 <sys_getcwd+0xe6>
   }
 
   // 将路径复制到用户提供的缓冲区
   if (copyout2(buf_addr, s, path_len + 1) < 0) {
-    80204b84:	0015061b          	addiw	a2,a0,1
-    80204b88:	85ce                	mv	a1,s3
-    80204b8a:	fb843503          	ld	a0,-72(s0)
-    80204b8e:	ffffc097          	auipc	ra,0xffffc
-    80204b92:	7e4080e7          	jalr	2020(ra) # 80201372 <copyout2>
-    80204b96:	04054063          	bltz	a0,80204bd6 <sys_getcwd+0xfa>
+    80204b86:	0015061b          	addiw	a2,a0,1
+    80204b8a:	85ce                	mv	a1,s3
+    80204b8c:	fb843503          	ld	a0,-72(s0)
+    80204b90:	ffffc097          	auipc	ra,0xffffc
+    80204b94:	7e2080e7          	jalr	2018(ra) # 80201372 <copyout2>
+    80204b98:	04054063          	bltz	a0,80204bd8 <sys_getcwd+0xfa>
     return -1;  // 复制失败
   }
   return buf_addr;  // 成功
-    80204b9a:	fb843783          	ld	a5,-72(s0)
-    80204b9e:	a015                	j	80204bc2 <sys_getcwd+0xe6>
+    80204b9c:	fb843783          	ld	a5,-72(s0)
+    80204ba0:	a015                	j	80204bc4 <sys_getcwd+0xe6>
     strncpy(path, "/", FAT32_MAX_PATH);  // 将根目录复制到 path
-    80204ba0:	10400613          	li	a2,260
-    80204ba4:	00005597          	auipc	a1,0x5
-    80204ba8:	a8c58593          	addi	a1,a1,-1396 # 80209630 <digits+0x2b0>
-    80204bac:	eb040993          	addi	s3,s0,-336
-    80204bb0:	854e                	mv	a0,s3
-    80204bb2:	ffffc097          	auipc	ra,0xffffc
-    80204bb6:	cc4080e7          	jalr	-828(ra) # 80200876 <strncpy>
+    80204ba2:	10400613          	li	a2,260
+    80204ba6:	00005597          	auipc	a1,0x5
+    80204baa:	a8a58593          	addi	a1,a1,-1398 # 80209630 <digits+0x2b0>
+    80204bae:	eb040993          	addi	s3,s0,-336
+    80204bb2:	854e                	mv	a0,s3
+    80204bb4:	ffffc097          	auipc	ra,0xffffc
+    80204bb8:	cc2080e7          	jalr	-830(ra) # 80200876 <strncpy>
     s = path;  // 指向 path
-    80204bba:	bf5d                	j	80204b70 <sys_getcwd+0x94>
+    80204bbc:	bf5d                	j	80204b72 <sys_getcwd+0x94>
     return -1;  // 提取参数失败,返回错误
-    80204bbc:	57fd                	li	a5,-1
-    80204bbe:	a011                	j	80204bc2 <sys_getcwd+0xe6>
+    80204bbe:	57fd                	li	a5,-1
+    80204bc0:	a011                	j	80204bc4 <sys_getcwd+0xe6>
         return -1;                   // 路径过长,返回错误
-    80204bc0:	57fd                	li	a5,-1
-}
-    80204bc2:	853e                	mv	a0,a5
-    80204bc4:	60b6                	ld	ra,328(sp)
-    80204bc6:	6416                	ld	s0,320(sp)
-    80204bc8:	74f2                	ld	s1,312(sp)
-    80204bca:	7952                	ld	s2,304(sp)
-    80204bcc:	79b2                	ld	s3,296(sp)
-    80204bce:	7a12                	ld	s4,288(sp)
-    80204bd0:	6af2                	ld	s5,280(sp)
-    80204bd2:	6171                	addi	sp,sp,336
-    80204bd4:	8082                	ret
+    80204bc2:	57fd                	li	a5,-1
+}
+    80204bc4:	853e                	mv	a0,a5
+    80204bc6:	60b6                	ld	ra,328(sp)
+    80204bc8:	6416                	ld	s0,320(sp)
+    80204bca:	74f2                	ld	s1,312(sp)
+    80204bcc:	7952                	ld	s2,304(sp)
+    80204bce:	79b2                	ld	s3,296(sp)
+    80204bd0:	7a12                	ld	s4,288(sp)
+    80204bd2:	6af2                	ld	s5,280(sp)
+    80204bd4:	6171                	addi	sp,sp,336
+    80204bd6:	8082                	ret
     return -1;  // 复制失败
-    80204bd6:	57fd                	li	a5,-1
-    80204bd8:	b7ed                	j	80204bc2 <sys_getcwd+0xe6>
+    80204bd8:	57fd                	li	a5,-1
+    80204bda:	b7ed                	j	80204bc4 <sys_getcwd+0xe6>
 
-0000000080204bda <sys_remove>:
+0000000080204bdc <sys_remove>:
   return ret == -1;
 }
 
 uint64
 sys_remove(void)
 {
-    80204bda:	d6010113          	addi	sp,sp,-672
-    80204bde:	28113c23          	sd	ra,664(sp)
-    80204be2:	28813823          	sd	s0,656(sp)
-    80204be6:	28913423          	sd	s1,648(sp)
-    80204bea:	1500                	addi	s0,sp,672
+    80204bdc:	d6010113          	addi	sp,sp,-672
+    80204be0:	28113c23          	sd	ra,664(sp)
+    80204be4:	28813823          	sd	s0,656(sp)
+    80204be8:	28913423          	sd	s1,648(sp)
+    80204bec:	1500                	addi	s0,sp,672
   char path[FAT32_MAX_PATH];
   struct dirent *ep;
   int len;
   if((len = argstr(0, path, FAT32_MAX_PATH)) <= 0)
-    80204bec:	10400613          	li	a2,260
-    80204bf0:	ed840593          	addi	a1,s0,-296
-    80204bf4:	4501                	li	a0,0
-    80204bf6:	ffffe097          	auipc	ra,0xffffe
-    80204bfa:	2fa080e7          	jalr	762(ra) # 80202ef0 <argstr>
-    80204bfe:	0ea05a63          	blez	a0,80204cf2 <sys_remove+0x118>
+    80204bee:	10400613          	li	a2,260
+    80204bf2:	ed840593          	addi	a1,s0,-296
+    80204bf6:	4501                	li	a0,0
+    80204bf8:	ffffe097          	auipc	ra,0xffffe
+    80204bfc:	2fa080e7          	jalr	762(ra) # 80202ef2 <argstr>
+    80204c00:	0ea05a63          	blez	a0,80204cf4 <sys_remove+0x118>
     return -1;
 
   char *s = path + len - 1;
-    80204c02:	157d                	addi	a0,a0,-1
-    80204c04:	ed840713          	addi	a4,s0,-296
-    80204c08:	00a707b3          	add	a5,a4,a0
+    80204c04:	157d                	addi	a0,a0,-1
+    80204c06:	ed840713          	addi	a4,s0,-296
+    80204c0a:	00a707b3          	add	a5,a4,a0
   while (s >= path && *s == '/') {
-    80204c0c:	02f00693          	li	a3,47
-    80204c10:	863a                	mv	a2,a4
-    80204c12:	00e7e963          	bltu	a5,a4,80204c24 <sys_remove+0x4a>
-    80204c16:	0007c703          	lbu	a4,0(a5)
-    80204c1a:	08d71a63          	bne	a4,a3,80204cae <sys_remove+0xd4>
+    80204c0e:	02f00693          	li	a3,47
+    80204c12:	863a                	mv	a2,a4
+    80204c14:	00e7e963          	bltu	a5,a4,80204c26 <sys_remove+0x4a>
+    80204c18:	0007c703          	lbu	a4,0(a5)
+    80204c1c:	08d71a63          	bne	a4,a3,80204cb0 <sys_remove+0xd4>
     s--;
-    80204c1e:	17fd                	addi	a5,a5,-1
+    80204c20:	17fd                	addi	a5,a5,-1
   while (s >= path && *s == '/') {
-    80204c20:	fec7fbe3          	bgeu	a5,a2,80204c16 <sys_remove+0x3c>
+    80204c22:	fec7fbe3          	bgeu	a5,a2,80204c18 <sys_remove+0x3c>
   }
   if (s >= path && *s == '.' && (s == path || *--s == '/')) {
     return -1;
   }
   
   if((ep = ename(path)) == NULL){
-    80204c24:	ed840513          	addi	a0,s0,-296
-    80204c28:	00002097          	auipc	ra,0x2
-    80204c2c:	d8e080e7          	jalr	-626(ra) # 802069b6 <ename>
-    80204c30:	84aa                	mv	s1,a0
-    80204c32:	c561                	beqz	a0,80204cfa <sys_remove+0x120>
+    80204c26:	ed840513          	addi	a0,s0,-296
+    80204c2a:	00002097          	auipc	ra,0x2
+    80204c2e:	d9c080e7          	jalr	-612(ra) # 802069c6 <ename>
+    80204c32:	84aa                	mv	s1,a0
+    80204c34:	c561                	beqz	a0,80204cfc <sys_remove+0x120>
     return -1;
   }
   elock(ep);
-    80204c34:	00001097          	auipc	ra,0x1
-    80204c38:	5da080e7          	jalr	1498(ra) # 8020620e <elock>
+    80204c36:	00001097          	auipc	ra,0x1
+    80204c3a:	5e8080e7          	jalr	1512(ra) # 8020621e <elock>
   if((ep->attribute & ATTR_DIRECTORY) && !isdirempty(ep)){
-    80204c3c:	1004c783          	lbu	a5,256(s1)
-    80204c40:	8bc1                	andi	a5,a5,16
-    80204c42:	c38d                	beqz	a5,80204c64 <sys_remove+0x8a>
+    80204c3e:	1004c783          	lbu	a5,256(s1)
+    80204c42:	8bc1                	andi	a5,a5,16
+    80204c44:	c38d                	beqz	a5,80204c66 <sys_remove+0x8a>
   ep.valid = 0;
-    80204c44:	e8041323          	sh	zero,-378(s0)
+    80204c46:	e8041323          	sh	zero,-378(s0)
   ret = enext(dp, &ep, 2 * 32, &count);   // skip the "." and ".."
-    80204c48:	d6c40693          	addi	a3,s0,-660
-    80204c4c:	04000613          	li	a2,64
-    80204c50:	d7040593          	addi	a1,s0,-656
-    80204c54:	8526                	mv	a0,s1
-    80204c56:	00001097          	auipc	ra,0x1
-    80204c5a:	7bc080e7          	jalr	1980(ra) # 80206412 <enext>
+    80204c4a:	d6c40693          	addi	a3,s0,-660
+    80204c4e:	04000613          	li	a2,64
+    80204c52:	d7040593          	addi	a1,s0,-656
+    80204c56:	8526                	mv	a0,s1
+    80204c58:	00001097          	auipc	ra,0x1
+    80204c5c:	7ca080e7          	jalr	1994(ra) # 80206422 <enext>
   if((ep->attribute & ATTR_DIRECTORY) && !isdirempty(ep)){
-    80204c5e:	57fd                	li	a5,-1
-    80204c60:	06f51d63          	bne	a0,a5,80204cda <sys_remove+0x100>
+    80204c60:	57fd                	li	a5,-1
+    80204c62:	06f51d63          	bne	a0,a5,80204cdc <sys_remove+0x100>
       eunlock(ep);
       eput(ep);
       return -1;
   }
   elock(ep->parent);      // Will this lead to deadlock?
-    80204c64:	1204b503          	ld	a0,288(s1)
-    80204c68:	00001097          	auipc	ra,0x1
-    80204c6c:	5a6080e7          	jalr	1446(ra) # 8020620e <elock>
+    80204c66:	1204b503          	ld	a0,288(s1)
+    80204c6a:	00001097          	auipc	ra,0x1
+    80204c6e:	5b4080e7          	jalr	1460(ra) # 8020621e <elock>
   eremove(ep);
-    80204c70:	8526                	mv	a0,s1
-    80204c72:	00001097          	auipc	ra,0x1
-    80204c76:	468080e7          	jalr	1128(ra) # 802060da <eremove>
+    80204c72:	8526                	mv	a0,s1
+    80204c74:	00001097          	auipc	ra,0x1
+    80204c78:	476080e7          	jalr	1142(ra) # 802060ea <eremove>
   eunlock(ep->parent);
-    80204c7a:	1204b503          	ld	a0,288(s1)
-    80204c7e:	00001097          	auipc	ra,0x1
-    80204c82:	5c6080e7          	jalr	1478(ra) # 80206244 <eunlock>
+    80204c7c:	1204b503          	ld	a0,288(s1)
+    80204c80:	00001097          	auipc	ra,0x1
+    80204c84:	5d4080e7          	jalr	1492(ra) # 80206254 <eunlock>
   eunlock(ep);
-    80204c86:	8526                	mv	a0,s1
-    80204c88:	00001097          	auipc	ra,0x1
-    80204c8c:	5bc080e7          	jalr	1468(ra) # 80206244 <eunlock>
+    80204c88:	8526                	mv	a0,s1
+    80204c8a:	00001097          	auipc	ra,0x1
+    80204c8e:	5ca080e7          	jalr	1482(ra) # 80206254 <eunlock>
   eput(ep);
-    80204c90:	8526                	mv	a0,s1
-    80204c92:	00001097          	auipc	ra,0x1
-    80204c96:	600080e7          	jalr	1536(ra) # 80206292 <eput>
+    80204c92:	8526                	mv	a0,s1
+    80204c94:	00001097          	auipc	ra,0x1
+    80204c98:	60e080e7          	jalr	1550(ra) # 802062a2 <eput>
 
   return 0;
-    80204c9a:	4501                	li	a0,0
+    80204c9c:	4501                	li	a0,0
 }
-    80204c9c:	29813083          	ld	ra,664(sp)
-    80204ca0:	29013403          	ld	s0,656(sp)
-    80204ca4:	28813483          	ld	s1,648(sp)
-    80204ca8:	2a010113          	addi	sp,sp,672
-    80204cac:	8082                	ret
+    80204c9e:	29813083          	ld	ra,664(sp)
+    80204ca2:	29013403          	ld	s0,656(sp)
+    80204ca6:	28813483          	ld	s1,648(sp)
+    80204caa:	2a010113          	addi	sp,sp,672
+    80204cae:	8082                	ret
   if (s >= path && *s == '.' && (s == path || *--s == '/')) {
-    80204cae:	ed840713          	addi	a4,s0,-296
-    80204cb2:	f6e7e9e3          	bltu	a5,a4,80204c24 <sys_remove+0x4a>
-    80204cb6:	0007c683          	lbu	a3,0(a5)
-    80204cba:	02e00713          	li	a4,46
-    80204cbe:	f6e693e3          	bne	a3,a4,80204c24 <sys_remove+0x4a>
-    80204cc2:	ed840713          	addi	a4,s0,-296
-    80204cc6:	02e78863          	beq	a5,a4,80204cf6 <sys_remove+0x11c>
-    80204cca:	fff7c703          	lbu	a4,-1(a5)
-    80204cce:	02f00793          	li	a5,47
-    80204cd2:	f4f719e3          	bne	a4,a5,80204c24 <sys_remove+0x4a>
+    80204cb0:	ed840713          	addi	a4,s0,-296
+    80204cb4:	f6e7e9e3          	bltu	a5,a4,80204c26 <sys_remove+0x4a>
+    80204cb8:	0007c683          	lbu	a3,0(a5)
+    80204cbc:	02e00713          	li	a4,46
+    80204cc0:	f6e693e3          	bne	a3,a4,80204c26 <sys_remove+0x4a>
+    80204cc4:	ed840713          	addi	a4,s0,-296
+    80204cc8:	02e78863          	beq	a5,a4,80204cf8 <sys_remove+0x11c>
+    80204ccc:	fff7c703          	lbu	a4,-1(a5)
+    80204cd0:	02f00793          	li	a5,47
+    80204cd4:	f4f719e3          	bne	a4,a5,80204c26 <sys_remove+0x4a>
     return -1;
-    80204cd6:	557d                	li	a0,-1
-    80204cd8:	b7d1                	j	80204c9c <sys_remove+0xc2>
+    80204cd8:	557d                	li	a0,-1
+    80204cda:	b7d1                	j	80204c9e <sys_remove+0xc2>
       eunlock(ep);
-    80204cda:	8526                	mv	a0,s1
-    80204cdc:	00001097          	auipc	ra,0x1
-    80204ce0:	568080e7          	jalr	1384(ra) # 80206244 <eunlock>
+    80204cdc:	8526                	mv	a0,s1
+    80204cde:	00001097          	auipc	ra,0x1
+    80204ce2:	576080e7          	jalr	1398(ra) # 80206254 <eunlock>
       eput(ep);
-    80204ce4:	8526                	mv	a0,s1
-    80204ce6:	00001097          	auipc	ra,0x1
-    80204cea:	5ac080e7          	jalr	1452(ra) # 80206292 <eput>
+    80204ce6:	8526                	mv	a0,s1
+    80204ce8:	00001097          	auipc	ra,0x1
+    80204cec:	5ba080e7          	jalr	1466(ra) # 802062a2 <eput>
       return -1;
-    80204cee:	557d                	li	a0,-1
-    80204cf0:	b775                	j	80204c9c <sys_remove+0xc2>
+    80204cf0:	557d                	li	a0,-1
+    80204cf2:	b775                	j	80204c9e <sys_remove+0xc2>
     return -1;
-    80204cf2:	557d                	li	a0,-1
-    80204cf4:	b765                	j	80204c9c <sys_remove+0xc2>
+    80204cf4:	557d                	li	a0,-1
+    80204cf6:	b765                	j	80204c9e <sys_remove+0xc2>
     return -1;
-    80204cf6:	557d                	li	a0,-1
-    80204cf8:	b755                	j	80204c9c <sys_remove+0xc2>
+    80204cf8:	557d                	li	a0,-1
+    80204cfa:	b755                	j	80204c9e <sys_remove+0xc2>
     return -1;
-    80204cfa:	557d                	li	a0,-1
-    80204cfc:	b745                	j	80204c9c <sys_remove+0xc2>
+    80204cfc:	557d                	li	a0,-1
+    80204cfe:	b745                	j	80204c9e <sys_remove+0xc2>
 
-0000000080204cfe <sys_rename>:
+0000000080204d00 <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)
 {
-    80204cfe:	c4010113          	addi	sp,sp,-960
-    80204d02:	3a113c23          	sd	ra,952(sp)
-    80204d06:	3a813823          	sd	s0,944(sp)
-    80204d0a:	3a913423          	sd	s1,936(sp)
-    80204d0e:	3b213023          	sd	s2,928(sp)
-    80204d12:	39313c23          	sd	s3,920(sp)
-    80204d16:	39413823          	sd	s4,912(sp)
-    80204d1a:	0780                	addi	s0,sp,960
+    80204d00:	c4010113          	addi	sp,sp,-960
+    80204d04:	3a113c23          	sd	ra,952(sp)
+    80204d08:	3a813823          	sd	s0,944(sp)
+    80204d0c:	3a913423          	sd	s1,936(sp)
+    80204d10:	3b213023          	sd	s2,928(sp)
+    80204d14:	39313c23          	sd	s3,920(sp)
+    80204d18:	39413823          	sd	s4,912(sp)
+    80204d1c:	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) {
-    80204d1c:	10400613          	li	a2,260
-    80204d20:	ec840593          	addi	a1,s0,-312
-    80204d24:	4501                	li	a0,0
-    80204d26:	ffffe097          	auipc	ra,0xffffe
-    80204d2a:	1ca080e7          	jalr	458(ra) # 80202ef0 <argstr>
+    80204d1e:	10400613          	li	a2,260
+    80204d22:	ec840593          	addi	a1,s0,-312
+    80204d26:	4501                	li	a0,0
+    80204d28:	ffffe097          	auipc	ra,0xffffe
+    80204d2c:	1ca080e7          	jalr	458(ra) # 80202ef2 <argstr>
       return -1;
-    80204d2e:	57fd                	li	a5,-1
+    80204d30:	57fd                	li	a5,-1
   if (argstr(0, old, FAT32_MAX_PATH) < 0 || argstr(1, new, FAT32_MAX_PATH) < 0) {
-    80204d30:	0c054d63          	bltz	a0,80204e0a <sys_rename+0x10c>
-    80204d34:	10400613          	li	a2,260
-    80204d38:	dc040593          	addi	a1,s0,-576
-    80204d3c:	4505                	li	a0,1
-    80204d3e:	ffffe097          	auipc	ra,0xffffe
-    80204d42:	1b2080e7          	jalr	434(ra) # 80202ef0 <argstr>
+    80204d32:	0c054d63          	bltz	a0,80204e0c <sys_rename+0x10c>
+    80204d36:	10400613          	li	a2,260
+    80204d3a:	dc040593          	addi	a1,s0,-576
+    80204d3e:	4505                	li	a0,1
+    80204d40:	ffffe097          	auipc	ra,0xffffe
+    80204d44:	1b2080e7          	jalr	434(ra) # 80202ef2 <argstr>
       return -1;
-    80204d46:	57fd                	li	a5,-1
+    80204d48:	57fd                	li	a5,-1
   if (argstr(0, old, FAT32_MAX_PATH) < 0 || argstr(1, new, FAT32_MAX_PATH) < 0) {
-    80204d48:	0c054163          	bltz	a0,80204e0a <sys_rename+0x10c>
+    80204d4a:	0c054163          	bltz	a0,80204e0c <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
-    80204d4c:	ec840513          	addi	a0,s0,-312
-    80204d50:	00002097          	auipc	ra,0x2
-    80204d54:	c66080e7          	jalr	-922(ra) # 802069b6 <ename>
-    80204d58:	84aa                	mv	s1,a0
-    80204d5a:	1c050963          	beqz	a0,80204f2c <sys_rename+0x22e>
-    80204d5e:	ec840593          	addi	a1,s0,-312
-    80204d62:	dc040513          	addi	a0,s0,-576
-    80204d66:	00002097          	auipc	ra,0x2
-    80204d6a:	c6e080e7          	jalr	-914(ra) # 802069d4 <enameparent>
-    80204d6e:	892a                	mv	s2,a0
-    80204d70:	cd35                	beqz	a0,80204dec <sys_rename+0xee>
+    80204d4e:	ec840513          	addi	a0,s0,-312
+    80204d52:	00002097          	auipc	ra,0x2
+    80204d56:	c74080e7          	jalr	-908(ra) # 802069c6 <ename>
+    80204d5a:	84aa                	mv	s1,a0
+    80204d5c:	1c050963          	beqz	a0,80204f2e <sys_rename+0x22e>
+    80204d60:	ec840593          	addi	a1,s0,-312
+    80204d64:	dc040513          	addi	a0,s0,-576
+    80204d68:	00002097          	auipc	ra,0x2
+    80204d6c:	c7c080e7          	jalr	-900(ra) # 802069e4 <enameparent>
+    80204d70:	892a                	mv	s2,a0
+    80204d72:	cd35                	beqz	a0,80204dee <sys_rename+0xee>
       || (name = formatname(old)) == NULL) {
-    80204d72:	ec840513          	addi	a0,s0,-312
-    80204d76:	00001097          	auipc	ra,0x1
-    80204d7a:	db8080e7          	jalr	-584(ra) # 80205b2e <formatname>
-    80204d7e:	89aa                	mv	s3,a0
-    80204d80:	c535                	beqz	a0,80204dec <sys_rename+0xee>
+    80204d74:	ec840513          	addi	a0,s0,-312
+    80204d78:	00001097          	auipc	ra,0x1
+    80204d7c:	dc6080e7          	jalr	-570(ra) # 80205b3e <formatname>
+    80204d80:	89aa                	mv	s3,a0
+    80204d82:	c535                	beqz	a0,80204dee <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?
-    80204d82:	07248563          	beq	s1,s2,80204dec <sys_rename+0xee>
+    80204d84:	07248563          	beq	s1,s2,80204dee <sys_rename+0xee>
   for (struct dirent *ep = pdst; ep != NULL; ep = ep->parent) {
-    80204d86:	87ca                	mv	a5,s2
-    80204d88:	1207b783          	ld	a5,288(a5)
-    80204d8c:	c781                	beqz	a5,80204d94 <sys_rename+0x96>
+    80204d88:	87ca                	mv	a5,s2
+    80204d8a:	1207b783          	ld	a5,288(a5)
+    80204d8e:	c781                	beqz	a5,80204d96 <sys_rename+0x96>
     if (ep == src) {    // In what universe can we move a directory into its child?
-    80204d8e:	fef49de3          	bne	s1,a5,80204d88 <sys_rename+0x8a>
-    80204d92:	a8a9                	j	80204dec <sys_rename+0xee>
+    80204d90:	fef49de3          	bne	s1,a5,80204d8a <sys_rename+0x8a>
+    80204d94:	a8a9                	j	80204dee <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
-    80204d94:	8526                	mv	a0,s1
-    80204d96:	00001097          	auipc	ra,0x1
-    80204d9a:	478080e7          	jalr	1144(ra) # 8020620e <elock>
+    80204d96:	8526                	mv	a0,s1
+    80204d98:	00001097          	auipc	ra,0x1
+    80204d9c:	486080e7          	jalr	1158(ra) # 8020621e <elock>
   srclock = 1;
   elock(pdst);
-    80204d9e:	854a                	mv	a0,s2
-    80204da0:	00001097          	auipc	ra,0x1
-    80204da4:	46e080e7          	jalr	1134(ra) # 8020620e <elock>
+    80204da0:	854a                	mv	a0,s2
+    80204da2:	00001097          	auipc	ra,0x1
+    80204da6:	47c080e7          	jalr	1148(ra) # 8020621e <elock>
   dst = dirlookup(pdst, name, &off);
-    80204da8:	dbc40613          	addi	a2,s0,-580
-    80204dac:	85ce                	mv	a1,s3
-    80204dae:	854a                	mv	a0,s2
-    80204db0:	00001097          	auipc	ra,0x1
-    80204db4:	7ec080e7          	jalr	2028(ra) # 8020659c <dirlookup>
-    80204db8:	8a2a                	mv	s4,a0
+    80204daa:	dbc40613          	addi	a2,s0,-580
+    80204dae:	85ce                	mv	a1,s3
+    80204db0:	854a                	mv	a0,s2
+    80204db2:	00001097          	auipc	ra,0x1
+    80204db6:	7fa080e7          	jalr	2042(ra) # 802065ac <dirlookup>
+    80204dba:	8a2a                	mv	s4,a0
   if (dst != NULL) {
-    80204dba:	cd45                	beqz	a0,80204e72 <sys_rename+0x174>
+    80204dbc:	cd45                	beqz	a0,80204e74 <sys_rename+0x174>
     eunlock(pdst);
-    80204dbc:	854a                	mv	a0,s2
-    80204dbe:	00001097          	auipc	ra,0x1
-    80204dc2:	486080e7          	jalr	1158(ra) # 80206244 <eunlock>
+    80204dbe:	854a                	mv	a0,s2
+    80204dc0:	00001097          	auipc	ra,0x1
+    80204dc4:	494080e7          	jalr	1172(ra) # 80206254 <eunlock>
     if (src == dst) {
-    80204dc6:	01448963          	beq	s1,s4,80204dd8 <sys_rename+0xda>
+    80204dc8:	01448963          	beq	s1,s4,80204dda <sys_rename+0xda>
       goto fail;
     } else if (src->attribute & dst->attribute & ATTR_DIRECTORY) {
-    80204dca:	1004c783          	lbu	a5,256(s1)
-    80204dce:	100a4703          	lbu	a4,256(s4)
-    80204dd2:	8ff9                	and	a5,a5,a4
-    80204dd4:	8bc1                	andi	a5,a5,16
-    80204dd6:	ebb1                	bnez	a5,80204e2a <sys_rename+0x12c>
+    80204dcc:	1004c783          	lbu	a5,256(s1)
+    80204dd0:	100a4703          	lbu	a4,256(s4)
+    80204dd4:	8ff9                	and	a5,a5,a4
+    80204dd6:	8bc1                	andi	a5,a5,16
+    80204dd8:	ebb1                	bnez	a5,80204e2c <sys_rename+0x12c>
 
   return 0;
 
 fail:
   if (srclock)
     eunlock(src);
-    80204dd8:	8526                	mv	a0,s1
-    80204dda:	00001097          	auipc	ra,0x1
-    80204dde:	46a080e7          	jalr	1130(ra) # 80206244 <eunlock>
+    80204dda:	8526                	mv	a0,s1
+    80204ddc:	00001097          	auipc	ra,0x1
+    80204de0:	478080e7          	jalr	1144(ra) # 80206254 <eunlock>
   if (dst)
     eput(dst);
-    80204de2:	8552                	mv	a0,s4
-    80204de4:	00001097          	auipc	ra,0x1
-    80204de8:	4ae080e7          	jalr	1198(ra) # 80206292 <eput>
+    80204de4:	8552                	mv	a0,s4
+    80204de6:	00001097          	auipc	ra,0x1
+    80204dea:	4bc080e7          	jalr	1212(ra) # 802062a2 <eput>
   if (pdst)
-    80204dec:	00090763          	beqz	s2,80204dfa <sys_rename+0xfc>
+    80204dee:	00090763          	beqz	s2,80204dfc <sys_rename+0xfc>
     eput(pdst);
-    80204df0:	854a                	mv	a0,s2
-    80204df2:	00001097          	auipc	ra,0x1
-    80204df6:	4a0080e7          	jalr	1184(ra) # 80206292 <eput>
+    80204df2:	854a                	mv	a0,s2
+    80204df4:	00001097          	auipc	ra,0x1
+    80204df8:	4ae080e7          	jalr	1198(ra) # 802062a2 <eput>
   if (src)
     eput(src);
   return -1;
-    80204dfa:	57fd                	li	a5,-1
+    80204dfc:	57fd                	li	a5,-1
   if (src)
-    80204dfc:	c499                	beqz	s1,80204e0a <sys_rename+0x10c>
+    80204dfe:	c499                	beqz	s1,80204e0c <sys_rename+0x10c>
     eput(src);
-    80204dfe:	8526                	mv	a0,s1
-    80204e00:	00001097          	auipc	ra,0x1
-    80204e04:	492080e7          	jalr	1170(ra) # 80206292 <eput>
+    80204e00:	8526                	mv	a0,s1
+    80204e02:	00001097          	auipc	ra,0x1
+    80204e06:	4a0080e7          	jalr	1184(ra) # 802062a2 <eput>
   return -1;
-    80204e08:	57fd                	li	a5,-1
-}
-    80204e0a:	853e                	mv	a0,a5
-    80204e0c:	3b813083          	ld	ra,952(sp)
-    80204e10:	3b013403          	ld	s0,944(sp)
-    80204e14:	3a813483          	ld	s1,936(sp)
-    80204e18:	3a013903          	ld	s2,928(sp)
-    80204e1c:	39813983          	ld	s3,920(sp)
-    80204e20:	39013a03          	ld	s4,912(sp)
-    80204e24:	3c010113          	addi	sp,sp,960
-    80204e28:	8082                	ret
+    80204e0a:	57fd                	li	a5,-1
+}
+    80204e0c:	853e                	mv	a0,a5
+    80204e0e:	3b813083          	ld	ra,952(sp)
+    80204e12:	3b013403          	ld	s0,944(sp)
+    80204e16:	3a813483          	ld	s1,936(sp)
+    80204e1a:	3a013903          	ld	s2,928(sp)
+    80204e1e:	39813983          	ld	s3,920(sp)
+    80204e22:	39013a03          	ld	s4,912(sp)
+    80204e26:	3c010113          	addi	sp,sp,960
+    80204e2a:	8082                	ret
       elock(dst);
-    80204e2a:	8552                	mv	a0,s4
-    80204e2c:	00001097          	auipc	ra,0x1
-    80204e30:	3e2080e7          	jalr	994(ra) # 8020620e <elock>
+    80204e2c:	8552                	mv	a0,s4
+    80204e2e:	00001097          	auipc	ra,0x1
+    80204e32:	3f0080e7          	jalr	1008(ra) # 8020621e <elock>
   ep.valid = 0;
-    80204e34:	d6041323          	sh	zero,-666(s0)
+    80204e36:	d6041323          	sh	zero,-666(s0)
   ret = enext(dp, &ep, 2 * 32, &count);   // skip the "." and ".."
-    80204e38:	c4c40693          	addi	a3,s0,-948
-    80204e3c:	04000613          	li	a2,64
-    80204e40:	c5040593          	addi	a1,s0,-944
-    80204e44:	8552                	mv	a0,s4
-    80204e46:	00001097          	auipc	ra,0x1
-    80204e4a:	5cc080e7          	jalr	1484(ra) # 80206412 <enext>
+    80204e3a:	c4c40693          	addi	a3,s0,-948
+    80204e3e:	04000613          	li	a2,64
+    80204e42:	c5040593          	addi	a1,s0,-944
+    80204e46:	8552                	mv	a0,s4
+    80204e48:	00001097          	auipc	ra,0x1
+    80204e4c:	5da080e7          	jalr	1498(ra) # 80206422 <enext>
       if (!isdirempty(dst)) {    // it's ok to overwrite an empty dir
-    80204e4e:	57fd                	li	a5,-1
-    80204e50:	0cf51863          	bne	a0,a5,80204f20 <sys_rename+0x222>
+    80204e50:	57fd                	li	a5,-1
+    80204e52:	0cf51863          	bne	a0,a5,80204f22 <sys_rename+0x222>
       elock(pdst);
-    80204e54:	854a                	mv	a0,s2
-    80204e56:	00001097          	auipc	ra,0x1
-    80204e5a:	3b8080e7          	jalr	952(ra) # 8020620e <elock>
+    80204e56:	854a                	mv	a0,s2
+    80204e58:	00001097          	auipc	ra,0x1
+    80204e5c:	3c6080e7          	jalr	966(ra) # 8020621e <elock>
     eremove(dst);
-    80204e5e:	8552                	mv	a0,s4
-    80204e60:	00001097          	auipc	ra,0x1
-    80204e64:	27a080e7          	jalr	634(ra) # 802060da <eremove>
+    80204e60:	8552                	mv	a0,s4
+    80204e62:	00001097          	auipc	ra,0x1
+    80204e66:	288080e7          	jalr	648(ra) # 802060ea <eremove>
     eunlock(dst);
-    80204e68:	8552                	mv	a0,s4
-    80204e6a:	00001097          	auipc	ra,0x1
-    80204e6e:	3da080e7          	jalr	986(ra) # 80206244 <eunlock>
+    80204e6a:	8552                	mv	a0,s4
+    80204e6c:	00001097          	auipc	ra,0x1
+    80204e70:	3e8080e7          	jalr	1000(ra) # 80206254 <eunlock>
   memmove(src->filename, name, FAT32_MAX_FILENAME);
-    80204e72:	0ff00613          	li	a2,255
-    80204e76:	85ce                	mv	a1,s3
-    80204e78:	8526                	mv	a0,s1
-    80204e7a:	ffffc097          	auipc	ra,0xffffc
-    80204e7e:	944080e7          	jalr	-1724(ra) # 802007be <memmove>
+    80204e74:	0ff00613          	li	a2,255
+    80204e78:	85ce                	mv	a1,s3
+    80204e7a:	8526                	mv	a0,s1
+    80204e7c:	ffffc097          	auipc	ra,0xffffc
+    80204e80:	942080e7          	jalr	-1726(ra) # 802007be <memmove>
   emake(pdst, src, off);
-    80204e82:	dbc42603          	lw	a2,-580(s0)
-    80204e86:	85a6                	mv	a1,s1
-    80204e88:	854a                	mv	a0,s2
-    80204e8a:	00001097          	auipc	ra,0x1
-    80204e8e:	d5c080e7          	jalr	-676(ra) # 80205be6 <emake>
+    80204e84:	dbc42603          	lw	a2,-580(s0)
+    80204e88:	85a6                	mv	a1,s1
+    80204e8a:	854a                	mv	a0,s2
+    80204e8c:	00001097          	auipc	ra,0x1
+    80204e90:	d6a080e7          	jalr	-662(ra) # 80205bf6 <emake>
   if (src->parent != pdst) {
-    80204e92:	1204b783          	ld	a5,288(s1)
-    80204e96:	01278d63          	beq	a5,s2,80204eb0 <sys_rename+0x1b2>
+    80204e94:	1204b783          	ld	a5,288(s1)
+    80204e98:	01278d63          	beq	a5,s2,80204eb2 <sys_rename+0x1b2>
     eunlock(pdst);
-    80204e9a:	854a                	mv	a0,s2
-    80204e9c:	00001097          	auipc	ra,0x1
-    80204ea0:	3a8080e7          	jalr	936(ra) # 80206244 <eunlock>
+    80204e9c:	854a                	mv	a0,s2
+    80204e9e:	00001097          	auipc	ra,0x1
+    80204ea2:	3b6080e7          	jalr	950(ra) # 80206254 <eunlock>
     elock(src->parent);
-    80204ea4:	1204b503          	ld	a0,288(s1)
-    80204ea8:	00001097          	auipc	ra,0x1
-    80204eac:	366080e7          	jalr	870(ra) # 8020620e <elock>
+    80204ea6:	1204b503          	ld	a0,288(s1)
+    80204eaa:	00001097          	auipc	ra,0x1
+    80204eae:	374080e7          	jalr	884(ra) # 8020621e <elock>
   eremove(src);
-    80204eb0:	8526                	mv	a0,s1
-    80204eb2:	00001097          	auipc	ra,0x1
-    80204eb6:	228080e7          	jalr	552(ra) # 802060da <eremove>
+    80204eb2:	8526                	mv	a0,s1
+    80204eb4:	00001097          	auipc	ra,0x1
+    80204eb8:	236080e7          	jalr	566(ra) # 802060ea <eremove>
   eunlock(src->parent);
-    80204eba:	1204b503          	ld	a0,288(s1)
-    80204ebe:	00001097          	auipc	ra,0x1
-    80204ec2:	386080e7          	jalr	902(ra) # 80206244 <eunlock>
+    80204ebc:	1204b503          	ld	a0,288(s1)
+    80204ec0:	00001097          	auipc	ra,0x1
+    80204ec4:	394080e7          	jalr	916(ra) # 80206254 <eunlock>
   struct dirent *psrc = src->parent;  // src must not be root, or it won't pass the for-loop test
-    80204ec6:	1204b983          	ld	s3,288(s1)
+    80204ec8:	1204b983          	ld	s3,288(s1)
   src->parent = edup(pdst);
-    80204eca:	854a                	mv	a0,s2
-    80204ecc:	00001097          	auipc	ra,0x1
-    80204ed0:	0e4080e7          	jalr	228(ra) # 80205fb0 <edup>
-    80204ed4:	12a4b023          	sd	a0,288(s1)
+    80204ecc:	854a                	mv	a0,s2
+    80204ece:	00001097          	auipc	ra,0x1
+    80204ed2:	0f2080e7          	jalr	242(ra) # 80205fc0 <edup>
+    80204ed6:	12a4b023          	sd	a0,288(s1)
   src->off = off;
-    80204ed8:	dbc42783          	lw	a5,-580(s0)
-    80204edc:	10f4ae23          	sw	a5,284(s1)
+    80204eda:	dbc42783          	lw	a5,-580(s0)
+    80204ede:	10f4ae23          	sw	a5,284(s1)
   src->valid = 1;
-    80204ee0:	4785                	li	a5,1
-    80204ee2:	10f49b23          	sh	a5,278(s1)
+    80204ee2:	4785                	li	a5,1
+    80204ee4:	10f49b23          	sh	a5,278(s1)
   eunlock(src);
-    80204ee6:	8526                	mv	a0,s1
-    80204ee8:	00001097          	auipc	ra,0x1
-    80204eec:	35c080e7          	jalr	860(ra) # 80206244 <eunlock>
+    80204ee8:	8526                	mv	a0,s1
+    80204eea:	00001097          	auipc	ra,0x1
+    80204eee:	36a080e7          	jalr	874(ra) # 80206254 <eunlock>
   eput(psrc);
-    80204ef0:	854e                	mv	a0,s3
-    80204ef2:	00001097          	auipc	ra,0x1
-    80204ef6:	3a0080e7          	jalr	928(ra) # 80206292 <eput>
+    80204ef2:	854e                	mv	a0,s3
+    80204ef4:	00001097          	auipc	ra,0x1
+    80204ef8:	3ae080e7          	jalr	942(ra) # 802062a2 <eput>
   if (dst) {
-    80204efa:	000a0763          	beqz	s4,80204f08 <sys_rename+0x20a>
+    80204efc:	000a0763          	beqz	s4,80204f0a <sys_rename+0x20a>
     eput(dst);
-    80204efe:	8552                	mv	a0,s4
-    80204f00:	00001097          	auipc	ra,0x1
-    80204f04:	392080e7          	jalr	914(ra) # 80206292 <eput>
+    80204f00:	8552                	mv	a0,s4
+    80204f02:	00001097          	auipc	ra,0x1
+    80204f06:	3a0080e7          	jalr	928(ra) # 802062a2 <eput>
   eput(pdst);
-    80204f08:	854a                	mv	a0,s2
-    80204f0a:	00001097          	auipc	ra,0x1
-    80204f0e:	388080e7          	jalr	904(ra) # 80206292 <eput>
+    80204f0a:	854a                	mv	a0,s2
+    80204f0c:	00001097          	auipc	ra,0x1
+    80204f10:	396080e7          	jalr	918(ra) # 802062a2 <eput>
   eput(src);
-    80204f12:	8526                	mv	a0,s1
-    80204f14:	00001097          	auipc	ra,0x1
-    80204f18:	37e080e7          	jalr	894(ra) # 80206292 <eput>
+    80204f14:	8526                	mv	a0,s1
+    80204f16:	00001097          	auipc	ra,0x1
+    80204f1a:	38c080e7          	jalr	908(ra) # 802062a2 <eput>
   return 0;
-    80204f1c:	4781                	li	a5,0
-    80204f1e:	b5f5                	j	80204e0a <sys_rename+0x10c>
+    80204f1e:	4781                	li	a5,0
+    80204f20:	b5f5                	j	80204e0c <sys_rename+0x10c>
         eunlock(dst);
-    80204f20:	8552                	mv	a0,s4
-    80204f22:	00001097          	auipc	ra,0x1
-    80204f26:	322080e7          	jalr	802(ra) # 80206244 <eunlock>
+    80204f22:	8552                	mv	a0,s4
+    80204f24:	00001097          	auipc	ra,0x1
+    80204f28:	330080e7          	jalr	816(ra) # 80206254 <eunlock>
         goto fail;
-    80204f2a:	b57d                	j	80204dd8 <sys_rename+0xda>
+    80204f2c:	b57d                	j	80204dda <sys_rename+0xda>
   struct dirent *src = NULL, *dst = NULL, *pdst = NULL;
-    80204f2c:	892a                	mv	s2,a0
+    80204f2e:	892a                	mv	s2,a0
   if (dst)
-    80204f2e:	bd7d                	j	80204dec <sys_rename+0xee>
-
-0000000080204f30 <kernelvec>:
-    80204f30:	7111                	addi	sp,sp,-256
-    80204f32:	e006                	sd	ra,0(sp)
-    80204f34:	e40a                	sd	sp,8(sp)
-    80204f36:	e80e                	sd	gp,16(sp)
-    80204f38:	ec12                	sd	tp,24(sp)
-    80204f3a:	f016                	sd	t0,32(sp)
-    80204f3c:	f41a                	sd	t1,40(sp)
-    80204f3e:	f81e                	sd	t2,48(sp)
-    80204f40:	fc22                	sd	s0,56(sp)
-    80204f42:	e0a6                	sd	s1,64(sp)
-    80204f44:	e4aa                	sd	a0,72(sp)
-    80204f46:	e8ae                	sd	a1,80(sp)
-    80204f48:	ecb2                	sd	a2,88(sp)
-    80204f4a:	f0b6                	sd	a3,96(sp)
-    80204f4c:	f4ba                	sd	a4,104(sp)
-    80204f4e:	f8be                	sd	a5,112(sp)
-    80204f50:	fcc2                	sd	a6,120(sp)
-    80204f52:	e146                	sd	a7,128(sp)
-    80204f54:	e54a                	sd	s2,136(sp)
-    80204f56:	e94e                	sd	s3,144(sp)
-    80204f58:	ed52                	sd	s4,152(sp)
-    80204f5a:	f156                	sd	s5,160(sp)
-    80204f5c:	f55a                	sd	s6,168(sp)
-    80204f5e:	f95e                	sd	s7,176(sp)
-    80204f60:	fd62                	sd	s8,184(sp)
-    80204f62:	e1e6                	sd	s9,192(sp)
-    80204f64:	e5ea                	sd	s10,200(sp)
-    80204f66:	e9ee                	sd	s11,208(sp)
-    80204f68:	edf2                	sd	t3,216(sp)
-    80204f6a:	f1f6                	sd	t4,224(sp)
-    80204f6c:	f5fa                	sd	t5,232(sp)
-    80204f6e:	f9fe                	sd	t6,240(sp)
-    80204f70:	9d1fd0ef          	jal	ra,80202940 <kerneltrap>
-    80204f74:	6082                	ld	ra,0(sp)
-    80204f76:	6122                	ld	sp,8(sp)
-    80204f78:	61c2                	ld	gp,16(sp)
-    80204f7a:	7282                	ld	t0,32(sp)
-    80204f7c:	7322                	ld	t1,40(sp)
-    80204f7e:	73c2                	ld	t2,48(sp)
-    80204f80:	7462                	ld	s0,56(sp)
-    80204f82:	6486                	ld	s1,64(sp)
-    80204f84:	6526                	ld	a0,72(sp)
-    80204f86:	65c6                	ld	a1,80(sp)
-    80204f88:	6666                	ld	a2,88(sp)
-    80204f8a:	7686                	ld	a3,96(sp)
-    80204f8c:	7726                	ld	a4,104(sp)
-    80204f8e:	77c6                	ld	a5,112(sp)
-    80204f90:	7866                	ld	a6,120(sp)
-    80204f92:	688a                	ld	a7,128(sp)
-    80204f94:	692a                	ld	s2,136(sp)
-    80204f96:	69ca                	ld	s3,144(sp)
-    80204f98:	6a6a                	ld	s4,152(sp)
-    80204f9a:	7a8a                	ld	s5,160(sp)
-    80204f9c:	7b2a                	ld	s6,168(sp)
-    80204f9e:	7bca                	ld	s7,176(sp)
-    80204fa0:	7c6a                	ld	s8,184(sp)
-    80204fa2:	6c8e                	ld	s9,192(sp)
-    80204fa4:	6d2e                	ld	s10,200(sp)
-    80204fa6:	6dce                	ld	s11,208(sp)
-    80204fa8:	6e6e                	ld	t3,216(sp)
-    80204faa:	7e8e                	ld	t4,224(sp)
-    80204fac:	7f2e                	ld	t5,232(sp)
-    80204fae:	7fce                	ld	t6,240(sp)
-    80204fb0:	6111                	addi	sp,sp,256
-    80204fb2:	10200073          	sret
+    80204f30:	bd7d                	j	80204dee <sys_rename+0xee>
 	...
 
-0000000080204fbe <timerinit>:
+0000000080204f40 <kernelvec>:
+    80204f40:	7111                	addi	sp,sp,-256
+    80204f42:	e006                	sd	ra,0(sp)
+    80204f44:	e40a                	sd	sp,8(sp)
+    80204f46:	e80e                	sd	gp,16(sp)
+    80204f48:	ec12                	sd	tp,24(sp)
+    80204f4a:	f016                	sd	t0,32(sp)
+    80204f4c:	f41a                	sd	t1,40(sp)
+    80204f4e:	f81e                	sd	t2,48(sp)
+    80204f50:	fc22                	sd	s0,56(sp)
+    80204f52:	e0a6                	sd	s1,64(sp)
+    80204f54:	e4aa                	sd	a0,72(sp)
+    80204f56:	e8ae                	sd	a1,80(sp)
+    80204f58:	ecb2                	sd	a2,88(sp)
+    80204f5a:	f0b6                	sd	a3,96(sp)
+    80204f5c:	f4ba                	sd	a4,104(sp)
+    80204f5e:	f8be                	sd	a5,112(sp)
+    80204f60:	fcc2                	sd	a6,120(sp)
+    80204f62:	e146                	sd	a7,128(sp)
+    80204f64:	e54a                	sd	s2,136(sp)
+    80204f66:	e94e                	sd	s3,144(sp)
+    80204f68:	ed52                	sd	s4,152(sp)
+    80204f6a:	f156                	sd	s5,160(sp)
+    80204f6c:	f55a                	sd	s6,168(sp)
+    80204f6e:	f95e                	sd	s7,176(sp)
+    80204f70:	fd62                	sd	s8,184(sp)
+    80204f72:	e1e6                	sd	s9,192(sp)
+    80204f74:	e5ea                	sd	s10,200(sp)
+    80204f76:	e9ee                	sd	s11,208(sp)
+    80204f78:	edf2                	sd	t3,216(sp)
+    80204f7a:	f1f6                	sd	t4,224(sp)
+    80204f7c:	f5fa                	sd	t5,232(sp)
+    80204f7e:	f9fe                	sd	t6,240(sp)
+    80204f80:	9c1fd0ef          	jal	ra,80202940 <kerneltrap>
+    80204f84:	6082                	ld	ra,0(sp)
+    80204f86:	6122                	ld	sp,8(sp)
+    80204f88:	61c2                	ld	gp,16(sp)
+    80204f8a:	7282                	ld	t0,32(sp)
+    80204f8c:	7322                	ld	t1,40(sp)
+    80204f8e:	73c2                	ld	t2,48(sp)
+    80204f90:	7462                	ld	s0,56(sp)
+    80204f92:	6486                	ld	s1,64(sp)
+    80204f94:	6526                	ld	a0,72(sp)
+    80204f96:	65c6                	ld	a1,80(sp)
+    80204f98:	6666                	ld	a2,88(sp)
+    80204f9a:	7686                	ld	a3,96(sp)
+    80204f9c:	7726                	ld	a4,104(sp)
+    80204f9e:	77c6                	ld	a5,112(sp)
+    80204fa0:	7866                	ld	a6,120(sp)
+    80204fa2:	688a                	ld	a7,128(sp)
+    80204fa4:	692a                	ld	s2,136(sp)
+    80204fa6:	69ca                	ld	s3,144(sp)
+    80204fa8:	6a6a                	ld	s4,152(sp)
+    80204faa:	7a8a                	ld	s5,160(sp)
+    80204fac:	7b2a                	ld	s6,168(sp)
+    80204fae:	7bca                	ld	s7,176(sp)
+    80204fb0:	7c6a                	ld	s8,184(sp)
+    80204fb2:	6c8e                	ld	s9,192(sp)
+    80204fb4:	6d2e                	ld	s10,200(sp)
+    80204fb6:	6dce                	ld	s11,208(sp)
+    80204fb8:	6e6e                	ld	t3,216(sp)
+    80204fba:	7e8e                	ld	t4,224(sp)
+    80204fbc:	7f2e                	ld	t5,232(sp)
+    80204fbe:	7fce                	ld	t6,240(sp)
+    80204fc0:	6111                	addi	sp,sp,256
+    80204fc2:	10200073          	sret
+	...
+
+0000000080204fce <timerinit>:
 #include "include/proc.h"
 
 struct spinlock tickslock;
 uint ticks;
 
 void timerinit() {
-    80204fbe:	1141                	addi	sp,sp,-16
-    80204fc0:	e406                	sd	ra,8(sp)
-    80204fc2:	e022                	sd	s0,0(sp)
-    80204fc4:	0800                	addi	s0,sp,16
+    80204fce:	1141                	addi	sp,sp,-16
+    80204fd0:	e406                	sd	ra,8(sp)
+    80204fd2:	e022                	sd	s0,0(sp)
+    80204fd4:	0800                	addi	s0,sp,16
     initlock(&tickslock, "time");
-    80204fc6:	00005597          	auipc	a1,0x5
-    80204fca:	bd258593          	addi	a1,a1,-1070 # 80209b98 <digits+0x818>
-    80204fce:	00019517          	auipc	a0,0x19
-    80204fd2:	43a50513          	addi	a0,a0,1082 # 8021e408 <tickslock>
-    80204fd6:	ffffb097          	auipc	ra,0xffffb
-    80204fda:	6ac080e7          	jalr	1708(ra) # 80200682 <initlock>
+    80204fd6:	00005597          	auipc	a1,0x5
+    80204fda:	bca58593          	addi	a1,a1,-1078 # 80209ba0 <digits+0x820>
+    80204fde:	00019517          	auipc	a0,0x19
+    80204fe2:	42a50513          	addi	a0,a0,1066 # 8021e408 <tickslock>
+    80204fe6:	ffffb097          	auipc	ra,0xffffb
+    80204fea:	69c080e7          	jalr	1692(ra) # 80200682 <initlock>
     #ifdef DEBUG
     printf("timerinit\n");
     #endif
 }
-    80204fde:	60a2                	ld	ra,8(sp)
-    80204fe0:	6402                	ld	s0,0(sp)
-    80204fe2:	0141                	addi	sp,sp,16
-    80204fe4:	8082                	ret
+    80204fee:	60a2                	ld	ra,8(sp)
+    80204ff0:	6402                	ld	s0,0(sp)
+    80204ff2:	0141                	addi	sp,sp,16
+    80204ff4:	8082                	ret
 
-0000000080204fe6 <set_next_timeout>:
+0000000080204ff6 <set_next_timeout>:
 
 void
 set_next_timeout() {
-    80204fe6:	1141                	addi	sp,sp,-16
-    80204fe8:	e422                	sd	s0,8(sp)
-    80204fea:	0800                	addi	s0,sp,16
+    80204ff6:	1141                	addi	sp,sp,-16
+    80204ff8:	e422                	sd	s0,8(sp)
+    80204ffa:	0800                	addi	s0,sp,16
   asm volatile("rdtime %0" : "=r" (x) );
-    80204fec:	c0102573          	rdtime	a0
+    80204ffc:	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);
-    80204ff0:	001dc7b7          	lui	a5,0x1dc
-    80204ff4:	13078793          	addi	a5,a5,304 # 1dc130 <_entry-0x80023ed0>
-    80204ff8:	953e                	add	a0,a0,a5
+    80205000:	001dc7b7          	lui	a5,0x1dc
+    80205004:	13078793          	addi	a5,a5,304 # 1dc130 <_entry-0x80023ed0>
+    80205008:	953e                	add	a0,a0,a5
 	SBI_CALL_1(SBI_SET_TIMER, stime_value);
-    80204ffa:	4581                	li	a1,0
-    80204ffc:	4601                	li	a2,0
-    80204ffe:	4681                	li	a3,0
-    80205000:	4881                	li	a7,0
-    80205002:	00000073          	ecall
+    8020500a:	4581                	li	a1,0
+    8020500c:	4601                	li	a2,0
+    8020500e:	4681                	li	a3,0
+    80205010:	4881                	li	a7,0
+    80205012:	00000073          	ecall
 }
-    80205006:	6422                	ld	s0,8(sp)
-    80205008:	0141                	addi	sp,sp,16
-    8020500a:	8082                	ret
+    80205016:	6422                	ld	s0,8(sp)
+    80205018:	0141                	addi	sp,sp,16
+    8020501a:	8082                	ret
 
-000000008020500c <timer_tick>:
+000000008020501c <timer_tick>:
 
 void timer_tick() {
-    8020500c:	1101                	addi	sp,sp,-32
-    8020500e:	ec06                	sd	ra,24(sp)
-    80205010:	e822                	sd	s0,16(sp)
-    80205012:	e426                	sd	s1,8(sp)
-    80205014:	1000                	addi	s0,sp,32
+    8020501c:	1101                	addi	sp,sp,-32
+    8020501e:	ec06                	sd	ra,24(sp)
+    80205020:	e822                	sd	s0,16(sp)
+    80205022:	e426                	sd	s1,8(sp)
+    80205024:	1000                	addi	s0,sp,32
     acquire(&tickslock);
-    80205016:	00019497          	auipc	s1,0x19
-    8020501a:	3f248493          	addi	s1,s1,1010 # 8021e408 <tickslock>
-    8020501e:	8526                	mv	a0,s1
-    80205020:	ffffb097          	auipc	ra,0xffffb
-    80205024:	6a6080e7          	jalr	1702(ra) # 802006c6 <acquire>
+    80205026:	00019497          	auipc	s1,0x19
+    8020502a:	3e248493          	addi	s1,s1,994 # 8021e408 <tickslock>
+    8020502e:	8526                	mv	a0,s1
+    80205030:	ffffb097          	auipc	ra,0xffffb
+    80205034:	696080e7          	jalr	1686(ra) # 802006c6 <acquire>
     ticks++;
-    80205028:	4c9c                	lw	a5,24(s1)
-    8020502a:	2785                	addiw	a5,a5,1
-    8020502c:	cc9c                	sw	a5,24(s1)
+    80205038:	4c9c                	lw	a5,24(s1)
+    8020503a:	2785                	addiw	a5,a5,1
+    8020503c:	cc9c                	sw	a5,24(s1)
     wakeup(&ticks);
-    8020502e:	00019517          	auipc	a0,0x19
-    80205032:	3f250513          	addi	a0,a0,1010 # 8021e420 <ticks>
-    80205036:	ffffd097          	auipc	ra,0xffffd
-    8020503a:	402080e7          	jalr	1026(ra) # 80202438 <wakeup>
+    8020503e:	00019517          	auipc	a0,0x19
+    80205042:	3e250513          	addi	a0,a0,994 # 8021e420 <ticks>
+    80205046:	ffffd097          	auipc	ra,0xffffd
+    8020504a:	3f2080e7          	jalr	1010(ra) # 80202438 <wakeup>
     release(&tickslock);
-    8020503e:	8526                	mv	a0,s1
-    80205040:	ffffb097          	auipc	ra,0xffffb
-    80205044:	6da080e7          	jalr	1754(ra) # 8020071a <release>
+    8020504e:	8526                	mv	a0,s1
+    80205050:	ffffb097          	auipc	ra,0xffffb
+    80205054:	6ca080e7          	jalr	1738(ra) # 8020071a <release>
     set_next_timeout();
-    80205048:	00000097          	auipc	ra,0x0
-    8020504c:	f9e080e7          	jalr	-98(ra) # 80204fe6 <set_next_timeout>
+    80205058:	00000097          	auipc	ra,0x0
+    8020505c:	f9e080e7          	jalr	-98(ra) # 80204ff6 <set_next_timeout>
 }
-    80205050:	60e2                	ld	ra,24(sp)
-    80205052:	6442                	ld	s0,16(sp)
-    80205054:	64a2                	ld	s1,8(sp)
-    80205056:	6105                	addi	sp,sp,32
-    80205058:	8082                	ret
+    80205060:	60e2                	ld	ra,24(sp)
+    80205062:	6442                	ld	s0,16(sp)
+    80205064:	64a2                	ld	s1,8(sp)
+    80205066:	6105                	addi	sp,sp,32
+    80205068:	8082                	ret
 
-000000008020505a <disk_init>:
+000000008020506a <disk_init>:
 #else
 #include "include/virtio.h"
 #endif 
 
 void disk_init(void)
 {
-    8020505a:	1141                	addi	sp,sp,-16
-    8020505c:	e406                	sd	ra,8(sp)
-    8020505e:	e022                	sd	s0,0(sp)
-    80205060:	0800                	addi	s0,sp,16
+    8020506a:	1141                	addi	sp,sp,-16
+    8020506c:	e406                	sd	ra,8(sp)
+    8020506e:	e022                	sd	s0,0(sp)
+    80205070:	0800                	addi	s0,sp,16
     #ifdef QEMU
     virtio_disk_init();
-    80205062:	00002097          	auipc	ra,0x2
-    80205066:	eaa080e7          	jalr	-342(ra) # 80206f0c <virtio_disk_init>
+    80205072:	00002097          	auipc	ra,0x2
+    80205076:	f30080e7          	jalr	-208(ra) # 80206fa2 <virtio_disk_init>
 	#else 
 	sdcard_init();
     #endif
 }
-    8020506a:	60a2                	ld	ra,8(sp)
-    8020506c:	6402                	ld	s0,0(sp)
-    8020506e:	0141                	addi	sp,sp,16
-    80205070:	8082                	ret
+    8020507a:	60a2                	ld	ra,8(sp)
+    8020507c:	6402                	ld	s0,0(sp)
+    8020507e:	0141                	addi	sp,sp,16
+    80205080:	8082                	ret
 
-0000000080205072 <disk_read>:
+0000000080205082 <disk_read>:
 
 void disk_read(struct buf *b)
 {
-    80205072:	1141                	addi	sp,sp,-16
-    80205074:	e406                	sd	ra,8(sp)
-    80205076:	e022                	sd	s0,0(sp)
-    80205078:	0800                	addi	s0,sp,16
+    80205082:	1141                	addi	sp,sp,-16
+    80205084:	e406                	sd	ra,8(sp)
+    80205086:	e022                	sd	s0,0(sp)
+    80205088:	0800                	addi	s0,sp,16
     #ifdef QEMU
 	virtio_disk_rw(b, 0);
-    8020507a:	4581                	li	a1,0
-    8020507c:	00002097          	auipc	ra,0x2
-    80205080:	016080e7          	jalr	22(ra) # 80207092 <virtio_disk_rw>
+    8020508a:	4581                	li	a1,0
+    8020508c:	00002097          	auipc	ra,0x2
+    80205090:	09c080e7          	jalr	156(ra) # 80207128 <virtio_disk_rw>
     #else 
 	sdcard_read_sector(b->data, b->sectorno);
 	#endif
 }
-    80205084:	60a2                	ld	ra,8(sp)
-    80205086:	6402                	ld	s0,0(sp)
-    80205088:	0141                	addi	sp,sp,16
-    8020508a:	8082                	ret
+    80205094:	60a2                	ld	ra,8(sp)
+    80205096:	6402                	ld	s0,0(sp)
+    80205098:	0141                	addi	sp,sp,16
+    8020509a:	8082                	ret
 
-000000008020508c <disk_write>:
+000000008020509c <disk_write>:
 
 void disk_write(struct buf *b)
 {
-    8020508c:	1141                	addi	sp,sp,-16
-    8020508e:	e406                	sd	ra,8(sp)
-    80205090:	e022                	sd	s0,0(sp)
-    80205092:	0800                	addi	s0,sp,16
+    8020509c:	1141                	addi	sp,sp,-16
+    8020509e:	e406                	sd	ra,8(sp)
+    802050a0:	e022                	sd	s0,0(sp)
+    802050a2:	0800                	addi	s0,sp,16
     #ifdef QEMU
 	virtio_disk_rw(b, 1);
-    80205094:	4585                	li	a1,1
-    80205096:	00002097          	auipc	ra,0x2
-    8020509a:	ffc080e7          	jalr	-4(ra) # 80207092 <virtio_disk_rw>
+    802050a4:	4585                	li	a1,1
+    802050a6:	00002097          	auipc	ra,0x2
+    802050aa:	082080e7          	jalr	130(ra) # 80207128 <virtio_disk_rw>
     #else 
 	sdcard_write_sector(b->data, b->sectorno);
 	#endif
 }
-    8020509e:	60a2                	ld	ra,8(sp)
-    802050a0:	6402                	ld	s0,0(sp)
-    802050a2:	0141                	addi	sp,sp,16
-    802050a4:	8082                	ret
+    802050ae:	60a2                	ld	ra,8(sp)
+    802050b0:	6402                	ld	s0,0(sp)
+    802050b2:	0141                	addi	sp,sp,16
+    802050b4:	8082                	ret
 
-00000000802050a6 <disk_intr>:
+00000000802050b6 <disk_intr>:
 
 void disk_intr(void)
 {
-    802050a6:	1141                	addi	sp,sp,-16
-    802050a8:	e406                	sd	ra,8(sp)
-    802050aa:	e022                	sd	s0,0(sp)
-    802050ac:	0800                	addi	s0,sp,16
+    802050b6:	1141                	addi	sp,sp,-16
+    802050b8:	e406                	sd	ra,8(sp)
+    802050ba:	e022                	sd	s0,0(sp)
+    802050bc:	0800                	addi	s0,sp,16
     #ifdef QEMU
     virtio_disk_intr();
-    802050ae:	00002097          	auipc	ra,0x2
-    802050b2:	270080e7          	jalr	624(ra) # 8020731e <virtio_disk_intr>
+    802050be:	00002097          	auipc	ra,0x2
+    802050c2:	2f6080e7          	jalr	758(ra) # 802073b4 <virtio_disk_intr>
     #else 
     dmac_intr(DMAC_CHANNEL0);
     #endif
 }
-    802050b6:	60a2                	ld	ra,8(sp)
-    802050b8:	6402                	ld	s0,0(sp)
-    802050ba:	0141                	addi	sp,sp,16
-    802050bc:	8082                	ret
+    802050c6:	60a2                	ld	ra,8(sp)
+    802050c8:	6402                	ld	s0,0(sp)
+    802050ca:	0141                	addi	sp,sp,16
+    802050cc:	8082                	ret
 
-00000000802050be <read_fat>:
+00000000802050ce <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)
 {
-    802050be:	1101                	addi	sp,sp,-32
-    802050c0:	ec06                	sd	ra,24(sp)
-    802050c2:	e822                	sd	s0,16(sp)
-    802050c4:	e426                	sd	s1,8(sp)
-    802050c6:	e04a                	sd	s2,0(sp)
-    802050c8:	1000                	addi	s0,sp,32
+    802050ce:	1101                	addi	sp,sp,-32
+    802050d0:	ec06                	sd	ra,24(sp)
+    802050d2:	e822                	sd	s0,16(sp)
+    802050d4:	e426                	sd	s1,8(sp)
+    802050d6:	e04a                	sd	s2,0(sp)
+    802050d8:	1000                	addi	s0,sp,32
     if (cluster >= FAT32_EOC) {
-    802050ca:	100007b7          	lui	a5,0x10000
-    802050ce:	17dd                	addi	a5,a5,-9 # ffffff7 <_entry-0x70200009>
+    802050da:	100007b7          	lui	a5,0x10000
+    802050de:	17dd                	addi	a5,a5,-9 # ffffff7 <_entry-0x70200009>
         return cluster;
-    802050d0:	84aa                	mv	s1,a0
+    802050e0:	84aa                	mv	s1,a0
     if (cluster >= FAT32_EOC) {
-    802050d2:	00a7ea63          	bltu	a5,a0,802050e6 <read_fat+0x28>
+    802050e2:	00a7ea63          	bltu	a5,a0,802050f6 <read_fat+0x28>
     }
     if (cluster > fat.data_clus_cnt + 1) {     // because cluster number starts at 2, not 0
-    802050d6:	00019797          	auipc	a5,0x19
-    802050da:	35a7a783          	lw	a5,858(a5) # 8021e430 <fat+0x8>
-    802050de:	2785                	addiw	a5,a5,1
+    802050e6:	00019797          	auipc	a5,0x19
+    802050ea:	34a7a783          	lw	a5,842(a5) # 8021e430 <fat+0x8>
+    802050ee:	2785                	addiw	a5,a5,1
         return 0;
-    802050e0:	4481                	li	s1,0
+    802050f0:	4481                	li	s1,0
     if (cluster > fat.data_clus_cnt + 1) {     // because cluster number starts at 2, not 0
-    802050e2:	00a7f963          	bgeu	a5,a0,802050f4 <read_fat+0x36>
+    802050f2:	00a7f963          	bgeu	a5,a0,80205104 <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;
 }
-    802050e6:	8526                	mv	a0,s1
-    802050e8:	60e2                	ld	ra,24(sp)
-    802050ea:	6442                	ld	s0,16(sp)
-    802050ec:	64a2                	ld	s1,8(sp)
-    802050ee:	6902                	ld	s2,0(sp)
-    802050f0:	6105                	addi	sp,sp,32
-    802050f2:	8082                	ret
+    802050f6:	8526                	mv	a0,s1
+    802050f8:	60e2                	ld	ra,24(sp)
+    802050fa:	6442                	ld	s0,16(sp)
+    802050fc:	64a2                	ld	s1,8(sp)
+    802050fe:	6902                	ld	s2,0(sp)
+    80205100:	6105                	addi	sp,sp,32
+    80205102:	8082                	ret
     return fat.bpb.rsvd_sec_cnt + (cluster << 2) / fat.bpb.byts_per_sec + fat.bpb.fat_sz * (fat_num - 1);
-    802050f4:	0025149b          	slliw	s1,a0,0x2
-    802050f8:	00019917          	auipc	s2,0x19
-    802050fc:	33090913          	addi	s2,s2,816 # 8021e428 <fat>
-    80205100:	01095783          	lhu	a5,16(s2)
-    80205104:	02f4d7bb          	divuw	a5,s1,a5
-    80205108:	01495583          	lhu	a1,20(s2)
+    80205104:	0025149b          	slliw	s1,a0,0x2
+    80205108:	00019917          	auipc	s2,0x19
+    8020510c:	32090913          	addi	s2,s2,800 # 8021e428 <fat>
+    80205110:	01095783          	lhu	a5,16(s2)
+    80205114:	02f4d7bb          	divuw	a5,s1,a5
+    80205118:	01495583          	lhu	a1,20(s2)
     struct buf *b = bread(0, fat_sec);
-    8020510c:	9dbd                	addw	a1,a1,a5
-    8020510e:	4501                	li	a0,0
-    80205110:	ffffe097          	auipc	ra,0xffffe
-    80205114:	2d6080e7          	jalr	726(ra) # 802033e6 <bread>
+    8020511c:	9dbd                	addw	a1,a1,a5
+    8020511e:	4501                	li	a0,0
+    80205120:	ffffe097          	auipc	ra,0xffffe
+    80205124:	2c8080e7          	jalr	712(ra) # 802033e8 <bread>
     return (cluster << 2) % fat.bpb.byts_per_sec;
-    80205118:	01095783          	lhu	a5,16(s2)
-    8020511c:	02f4f4bb          	remuw	s1,s1,a5
+    80205128:	01095783          	lhu	a5,16(s2)
+    8020512c:	02f4f4bb          	remuw	s1,s1,a5
     uint32 next_clus = *(uint32 *)(b->data + fat_offset_of_clus(cluster));
-    80205120:	1482                	slli	s1,s1,0x20
-    80205122:	9081                	srli	s1,s1,0x20
-    80205124:	009507b3          	add	a5,a0,s1
-    80205128:	4fa4                	lw	s1,88(a5)
+    80205130:	1482                	slli	s1,s1,0x20
+    80205132:	9081                	srli	s1,s1,0x20
+    80205134:	009507b3          	add	a5,a0,s1
+    80205138:	4fa4                	lw	s1,88(a5)
     brelse(b);
-    8020512a:	ffffe097          	auipc	ra,0xffffe
-    8020512e:	3e8080e7          	jalr	1000(ra) # 80203512 <brelse>
+    8020513a:	ffffe097          	auipc	ra,0xffffe
+    8020513e:	3da080e7          	jalr	986(ra) # 80203514 <brelse>
     return next_clus;
-    80205132:	bf55                	j	802050e6 <read_fat+0x28>
+    80205142:	bf55                	j	802050f6 <read_fat+0x28>
 
-0000000080205134 <alloc_clus>:
+0000000080205144 <alloc_clus>:
         brelse(b);
     }
 }
 
 static uint32 alloc_clus(uint8 dev)
 {
-    80205134:	711d                	addi	sp,sp,-96
-    80205136:	ec86                	sd	ra,88(sp)
-    80205138:	e8a2                	sd	s0,80(sp)
-    8020513a:	e4a6                	sd	s1,72(sp)
-    8020513c:	e0ca                	sd	s2,64(sp)
-    8020513e:	fc4e                	sd	s3,56(sp)
-    80205140:	f852                	sd	s4,48(sp)
-    80205142:	f456                	sd	s5,40(sp)
-    80205144:	f05a                	sd	s6,32(sp)
-    80205146:	ec5e                	sd	s7,24(sp)
-    80205148:	e862                	sd	s8,16(sp)
-    8020514a:	e466                	sd	s9,8(sp)
-    8020514c:	1080                	addi	s0,sp,96
+    80205144:	711d                	addi	sp,sp,-96
+    80205146:	ec86                	sd	ra,88(sp)
+    80205148:	e8a2                	sd	s0,80(sp)
+    8020514a:	e4a6                	sd	s1,72(sp)
+    8020514c:	e0ca                	sd	s2,64(sp)
+    8020514e:	fc4e                	sd	s3,56(sp)
+    80205150:	f852                	sd	s4,48(sp)
+    80205152:	f456                	sd	s5,40(sp)
+    80205154:	f05a                	sd	s6,32(sp)
+    80205156:	ec5e                	sd	s7,24(sp)
+    80205158:	e862                	sd	s8,16(sp)
+    8020515a:	e466                	sd	s9,8(sp)
+    8020515c:	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;
-    8020514e:	00019797          	auipc	a5,0x19
-    80205152:	2da78793          	addi	a5,a5,730 # 8021e428 <fat>
-    80205156:	0147db83          	lhu	s7,20(a5)
+    8020515e:	00019797          	auipc	a5,0x19
+    80205162:	2ca78793          	addi	a5,a5,714 # 8021e428 <fat>
+    80205166:	0147db83          	lhu	s7,20(a5)
     uint32 const ent_per_sec = fat.bpb.byts_per_sec / sizeof(uint32);
-    8020515a:	0107d903          	lhu	s2,16(a5)
+    8020516a:	0107d903          	lhu	s2,16(a5)
     for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) {
-    8020515e:	539c                	lw	a5,32(a5)
-    80205160:	10078363          	beqz	a5,80205266 <alloc_clus+0x132>
-    80205164:	0029591b          	srliw	s2,s2,0x2
-    80205168:	0009099b          	sext.w	s3,s2
-    8020516c:	4b01                	li	s6,0
+    8020516e:	539c                	lw	a5,32(a5)
+    80205170:	10078363          	beqz	a5,80205276 <alloc_clus+0x132>
+    80205174:	0029591b          	srliw	s2,s2,0x2
+    80205178:	0009099b          	sext.w	s3,s2
+    8020517c:	4b01                	li	s6,0
         b = bread(dev, sec);
-    8020516e:	00050a9b          	sext.w	s5,a0
+    8020517e:	00050a9b          	sext.w	s5,a0
         for (uint32 j = 0; j < ent_per_sec; j++) {
-    80205172:	4c01                	li	s8,0
+    80205182:	4c01                	li	s8,0
     for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) {
-    80205174:	00019c97          	auipc	s9,0x19
-    80205178:	2b4c8c93          	addi	s9,s9,692 # 8021e428 <fat>
-    8020517c:	a0c9                	j	8020523e <alloc_clus+0x10a>
+    80205184:	00019c97          	auipc	s9,0x19
+    80205188:	2a4c8c93          	addi	s9,s9,676 # 8021e428 <fat>
+    8020518c:	a0c9                	j	8020524e <alloc_clus+0x10a>
             if (((uint32 *)(b->data))[j] == 0) {
                 ((uint32 *)(b->data))[j] = FAT32_EOC + 7;
-    8020517e:	100007b7          	lui	a5,0x10000
-    80205182:	17fd                	addi	a5,a5,-1 # fffffff <_entry-0x70200001>
-    80205184:	c29c                	sw	a5,0(a3)
+    8020518e:	100007b7          	lui	a5,0x10000
+    80205192:	17fd                	addi	a5,a5,-1 # fffffff <_entry-0x70200001>
+    80205194:	c29c                	sw	a5,0(a3)
                 bwrite(b);
-    80205186:	8552                	mv	a0,s4
-    80205188:	ffffe097          	auipc	ra,0xffffe
-    8020518c:	34e080e7          	jalr	846(ra) # 802034d6 <bwrite>
+    80205196:	8552                	mv	a0,s4
+    80205198:	ffffe097          	auipc	ra,0xffffe
+    8020519c:	340080e7          	jalr	832(ra) # 802034d8 <bwrite>
                 brelse(b);
-    80205190:	8552                	mv	a0,s4
-    80205192:	ffffe097          	auipc	ra,0xffffe
-    80205196:	380080e7          	jalr	896(ra) # 80203512 <brelse>
+    802051a0:	8552                	mv	a0,s4
+    802051a2:	ffffe097          	auipc	ra,0xffffe
+    802051a6:	372080e7          	jalr	882(ra) # 80203514 <brelse>
                 uint32 clus = i * ent_per_sec + j;
-    8020519a:	0369093b          	mulw	s2,s2,s6
-    8020519e:	0099093b          	addw	s2,s2,s1
-    802051a2:	00090a9b          	sext.w	s5,s2
+    802051aa:	0369093b          	mulw	s2,s2,s6
+    802051ae:	0099093b          	addw	s2,s2,s1
+    802051b2:	00090a9b          	sext.w	s5,s2
     return ((cluster - 2) * fat.bpb.sec_per_clus) + fat.first_data_sec;
-    802051a6:	00019717          	auipc	a4,0x19
-    802051aa:	28270713          	addi	a4,a4,642 # 8021e428 <fat>
-    802051ae:	01274783          	lbu	a5,18(a4)
-    802051b2:	ffe9099b          	addiw	s3,s2,-2
-    802051b6:	02f989bb          	mulw	s3,s3,a5
-    802051ba:	4318                	lw	a4,0(a4)
-    802051bc:	00e989bb          	addw	s3,s3,a4
+    802051b6:	00019717          	auipc	a4,0x19
+    802051ba:	27270713          	addi	a4,a4,626 # 8021e428 <fat>
+    802051be:	01274783          	lbu	a5,18(a4)
+    802051c2:	ffe9099b          	addiw	s3,s2,-2
+    802051c6:	02f989bb          	mulw	s3,s3,a5
+    802051ca:	4318                	lw	a4,0(a4)
+    802051cc:	00e989bb          	addw	s3,s3,a4
     for (int i = 0; i < fat.bpb.sec_per_clus; i++) {
-    802051c0:	c7b1                	beqz	a5,8020520c <alloc_clus+0xd8>
-    802051c2:	4901                	li	s2,0
-    802051c4:	00019a17          	auipc	s4,0x19
-    802051c8:	264a0a13          	addi	s4,s4,612 # 8021e428 <fat>
+    802051d0:	c7b1                	beqz	a5,8020521c <alloc_clus+0xd8>
+    802051d2:	4901                	li	s2,0
+    802051d4:	00019a17          	auipc	s4,0x19
+    802051d8:	254a0a13          	addi	s4,s4,596 # 8021e428 <fat>
         b = bread(0, sec++);
-    802051cc:	013905bb          	addw	a1,s2,s3
-    802051d0:	4501                	li	a0,0
-    802051d2:	ffffe097          	auipc	ra,0xffffe
-    802051d6:	214080e7          	jalr	532(ra) # 802033e6 <bread>
-    802051da:	84aa                	mv	s1,a0
+    802051dc:	013905bb          	addw	a1,s2,s3
+    802051e0:	4501                	li	a0,0
+    802051e2:	ffffe097          	auipc	ra,0xffffe
+    802051e6:	206080e7          	jalr	518(ra) # 802033e8 <bread>
+    802051ea:	84aa                	mv	s1,a0
         memset(b->data, 0, BSIZE);
-    802051dc:	20000613          	li	a2,512
-    802051e0:	4581                	li	a1,0
-    802051e2:	05850513          	addi	a0,a0,88
-    802051e6:	ffffb097          	auipc	ra,0xffffb
-    802051ea:	57c080e7          	jalr	1404(ra) # 80200762 <memset>
+    802051ec:	20000613          	li	a2,512
+    802051f0:	4581                	li	a1,0
+    802051f2:	05850513          	addi	a0,a0,88
+    802051f6:	ffffb097          	auipc	ra,0xffffb
+    802051fa:	56c080e7          	jalr	1388(ra) # 80200762 <memset>
         bwrite(b);
-    802051ee:	8526                	mv	a0,s1
-    802051f0:	ffffe097          	auipc	ra,0xffffe
-    802051f4:	2e6080e7          	jalr	742(ra) # 802034d6 <bwrite>
+    802051fe:	8526                	mv	a0,s1
+    80205200:	ffffe097          	auipc	ra,0xffffe
+    80205204:	2d8080e7          	jalr	728(ra) # 802034d8 <bwrite>
         brelse(b);
-    802051f8:	8526                	mv	a0,s1
-    802051fa:	ffffe097          	auipc	ra,0xffffe
-    802051fe:	318080e7          	jalr	792(ra) # 80203512 <brelse>
+    80205208:	8526                	mv	a0,s1
+    8020520a:	ffffe097          	auipc	ra,0xffffe
+    8020520e:	30a080e7          	jalr	778(ra) # 80203514 <brelse>
     for (int i = 0; i < fat.bpb.sec_per_clus; i++) {
-    80205202:	2905                	addiw	s2,s2,1
-    80205204:	012a4783          	lbu	a5,18(s4)
-    80205208:	fcf942e3          	blt	s2,a5,802051cc <alloc_clus+0x98>
+    80205212:	2905                	addiw	s2,s2,1
+    80205214:	012a4783          	lbu	a5,18(s4)
+    80205218:	fcf942e3          	blt	s2,a5,802051dc <alloc_clus+0x98>
             }
         }
         brelse(b);
     }
     panic("no clusters");
 }
-    8020520c:	8556                	mv	a0,s5
-    8020520e:	60e6                	ld	ra,88(sp)
-    80205210:	6446                	ld	s0,80(sp)
-    80205212:	64a6                	ld	s1,72(sp)
-    80205214:	6906                	ld	s2,64(sp)
-    80205216:	79e2                	ld	s3,56(sp)
-    80205218:	7a42                	ld	s4,48(sp)
-    8020521a:	7aa2                	ld	s5,40(sp)
-    8020521c:	7b02                	ld	s6,32(sp)
-    8020521e:	6be2                	ld	s7,24(sp)
-    80205220:	6c42                	ld	s8,16(sp)
-    80205222:	6ca2                	ld	s9,8(sp)
-    80205224:	6125                	addi	sp,sp,96
-    80205226:	8082                	ret
+    8020521c:	8556                	mv	a0,s5
+    8020521e:	60e6                	ld	ra,88(sp)
+    80205220:	6446                	ld	s0,80(sp)
+    80205222:	64a6                	ld	s1,72(sp)
+    80205224:	6906                	ld	s2,64(sp)
+    80205226:	79e2                	ld	s3,56(sp)
+    80205228:	7a42                	ld	s4,48(sp)
+    8020522a:	7aa2                	ld	s5,40(sp)
+    8020522c:	7b02                	ld	s6,32(sp)
+    8020522e:	6be2                	ld	s7,24(sp)
+    80205230:	6c42                	ld	s8,16(sp)
+    80205232:	6ca2                	ld	s9,8(sp)
+    80205234:	6125                	addi	sp,sp,96
+    80205236:	8082                	ret
         brelse(b);
-    80205228:	8552                	mv	a0,s4
-    8020522a:	ffffe097          	auipc	ra,0xffffe
-    8020522e:	2e8080e7          	jalr	744(ra) # 80203512 <brelse>
+    80205238:	8552                	mv	a0,s4
+    8020523a:	ffffe097          	auipc	ra,0xffffe
+    8020523e:	2da080e7          	jalr	730(ra) # 80203514 <brelse>
     for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) {
-    80205232:	2b05                	addiw	s6,s6,1
-    80205234:	2b85                	addiw	s7,s7,1 # fffffffffffff001 <ebss_clear+0xffffffff7fdd9001>
-    80205236:	020ca783          	lw	a5,32(s9)
-    8020523a:	02fb7663          	bgeu	s6,a5,80205266 <alloc_clus+0x132>
+    80205242:	2b05                	addiw	s6,s6,1
+    80205244:	2b85                	addiw	s7,s7,1 # fffffffffffff001 <ebss_clear+0xffffffff7fdd9001>
+    80205246:	020ca783          	lw	a5,32(s9)
+    8020524a:	02fb7663          	bgeu	s6,a5,80205276 <alloc_clus+0x132>
         b = bread(dev, sec);
-    8020523e:	85de                	mv	a1,s7
-    80205240:	8556                	mv	a0,s5
-    80205242:	ffffe097          	auipc	ra,0xffffe
-    80205246:	1a4080e7          	jalr	420(ra) # 802033e6 <bread>
-    8020524a:	8a2a                	mv	s4,a0
+    8020524e:	85de                	mv	a1,s7
+    80205250:	8556                	mv	a0,s5
+    80205252:	ffffe097          	auipc	ra,0xffffe
+    80205256:	196080e7          	jalr	406(ra) # 802033e8 <bread>
+    8020525a:	8a2a                	mv	s4,a0
         for (uint32 j = 0; j < ent_per_sec; j++) {
-    8020524c:	fc098ee3          	beqz	s3,80205228 <alloc_clus+0xf4>
-    80205250:	05850793          	addi	a5,a0,88
-    80205254:	84e2                	mv	s1,s8
+    8020525c:	fc098ee3          	beqz	s3,80205238 <alloc_clus+0xf4>
+    80205260:	05850793          	addi	a5,a0,88
+    80205264:	84e2                	mv	s1,s8
             if (((uint32 *)(b->data))[j] == 0) {
-    80205256:	86be                	mv	a3,a5
-    80205258:	4398                	lw	a4,0(a5)
-    8020525a:	d315                	beqz	a4,8020517e <alloc_clus+0x4a>
+    80205266:	86be                	mv	a3,a5
+    80205268:	4398                	lw	a4,0(a5)
+    8020526a:	d315                	beqz	a4,8020518e <alloc_clus+0x4a>
         for (uint32 j = 0; j < ent_per_sec; j++) {
-    8020525c:	2485                	addiw	s1,s1,1
-    8020525e:	0791                	addi	a5,a5,4
-    80205260:	fe999be3          	bne	s3,s1,80205256 <alloc_clus+0x122>
-    80205264:	b7d1                	j	80205228 <alloc_clus+0xf4>
+    8020526c:	2485                	addiw	s1,s1,1
+    8020526e:	0791                	addi	a5,a5,4
+    80205270:	fe999be3          	bne	s3,s1,80205266 <alloc_clus+0x122>
+    80205274:	b7d1                	j	80205238 <alloc_clus+0xf4>
     panic("no clusters");
-    80205266:	00005517          	auipc	a0,0x5
-    8020526a:	93a50513          	addi	a0,a0,-1734 # 80209ba0 <digits+0x820>
-    8020526e:	ffffb097          	auipc	ra,0xffffb
-    80205272:	ed6080e7          	jalr	-298(ra) # 80200144 <panic>
+    80205276:	00005517          	auipc	a0,0x5
+    8020527a:	93250513          	addi	a0,a0,-1742 # 80209ba8 <digits+0x828>
+    8020527e:	ffffb097          	auipc	ra,0xffffb
+    80205282:	ec6080e7          	jalr	-314(ra) # 80200144 <panic>
 
-0000000080205276 <write_fat>:
+0000000080205286 <write_fat>:
     if (cluster > fat.data_clus_cnt + 1) {
-    80205276:	00019797          	auipc	a5,0x19
-    8020527a:	1ba7a783          	lw	a5,442(a5) # 8021e430 <fat+0x8>
-    8020527e:	2785                	addiw	a5,a5,1
-    80205280:	06a7e963          	bltu	a5,a0,802052f2 <write_fat+0x7c>
-{
-    80205284:	7179                	addi	sp,sp,-48
-    80205286:	f406                	sd	ra,40(sp)
-    80205288:	f022                	sd	s0,32(sp)
-    8020528a:	ec26                	sd	s1,24(sp)
-    8020528c:	e84a                	sd	s2,16(sp)
-    8020528e:	e44e                	sd	s3,8(sp)
-    80205290:	e052                	sd	s4,0(sp)
-    80205292:	1800                	addi	s0,sp,48
-    80205294:	89ae                	mv	s3,a1
+    80205286:	00019797          	auipc	a5,0x19
+    8020528a:	1aa7a783          	lw	a5,426(a5) # 8021e430 <fat+0x8>
+    8020528e:	2785                	addiw	a5,a5,1
+    80205290:	06a7e963          	bltu	a5,a0,80205302 <write_fat+0x7c>
+{
+    80205294:	7179                	addi	sp,sp,-48
+    80205296:	f406                	sd	ra,40(sp)
+    80205298:	f022                	sd	s0,32(sp)
+    8020529a:	ec26                	sd	s1,24(sp)
+    8020529c:	e84a                	sd	s2,16(sp)
+    8020529e:	e44e                	sd	s3,8(sp)
+    802052a0:	e052                	sd	s4,0(sp)
+    802052a2:	1800                	addi	s0,sp,48
+    802052a4:	89ae                	mv	s3,a1
     return fat.bpb.rsvd_sec_cnt + (cluster << 2) / fat.bpb.byts_per_sec + fat.bpb.fat_sz * (fat_num - 1);
-    80205296:	0025149b          	slliw	s1,a0,0x2
-    8020529a:	00019a17          	auipc	s4,0x19
-    8020529e:	18ea0a13          	addi	s4,s4,398 # 8021e428 <fat>
-    802052a2:	010a5783          	lhu	a5,16(s4)
-    802052a6:	02f4d7bb          	divuw	a5,s1,a5
-    802052aa:	014a5583          	lhu	a1,20(s4)
+    802052a6:	0025149b          	slliw	s1,a0,0x2
+    802052aa:	00019a17          	auipc	s4,0x19
+    802052ae:	17ea0a13          	addi	s4,s4,382 # 8021e428 <fat>
+    802052b2:	010a5783          	lhu	a5,16(s4)
+    802052b6:	02f4d7bb          	divuw	a5,s1,a5
+    802052ba:	014a5583          	lhu	a1,20(s4)
     struct buf *b = bread(0, fat_sec);
-    802052ae:	9dbd                	addw	a1,a1,a5
-    802052b0:	4501                	li	a0,0
-    802052b2:	ffffe097          	auipc	ra,0xffffe
-    802052b6:	134080e7          	jalr	308(ra) # 802033e6 <bread>
-    802052ba:	892a                	mv	s2,a0
+    802052be:	9dbd                	addw	a1,a1,a5
+    802052c0:	4501                	li	a0,0
+    802052c2:	ffffe097          	auipc	ra,0xffffe
+    802052c6:	126080e7          	jalr	294(ra) # 802033e8 <bread>
+    802052ca:	892a                	mv	s2,a0
     return (cluster << 2) % fat.bpb.byts_per_sec;
-    802052bc:	010a5783          	lhu	a5,16(s4)
-    802052c0:	02f4f4bb          	remuw	s1,s1,a5
+    802052cc:	010a5783          	lhu	a5,16(s4)
+    802052d0:	02f4f4bb          	remuw	s1,s1,a5
     *(uint32 *)(b->data + off) = content;
-    802052c4:	1482                	slli	s1,s1,0x20
-    802052c6:	9081                	srli	s1,s1,0x20
-    802052c8:	94aa                	add	s1,s1,a0
-    802052ca:	0534ac23          	sw	s3,88(s1)
+    802052d4:	1482                	slli	s1,s1,0x20
+    802052d6:	9081                	srli	s1,s1,0x20
+    802052d8:	94aa                	add	s1,s1,a0
+    802052da:	0534ac23          	sw	s3,88(s1)
     bwrite(b);
-    802052ce:	ffffe097          	auipc	ra,0xffffe
-    802052d2:	208080e7          	jalr	520(ra) # 802034d6 <bwrite>
+    802052de:	ffffe097          	auipc	ra,0xffffe
+    802052e2:	1fa080e7          	jalr	506(ra) # 802034d8 <bwrite>
     brelse(b);
-    802052d6:	854a                	mv	a0,s2
-    802052d8:	ffffe097          	auipc	ra,0xffffe
-    802052dc:	23a080e7          	jalr	570(ra) # 80203512 <brelse>
+    802052e6:	854a                	mv	a0,s2
+    802052e8:	ffffe097          	auipc	ra,0xffffe
+    802052ec:	22c080e7          	jalr	556(ra) # 80203514 <brelse>
     return 0;
-    802052e0:	4501                	li	a0,0
-}
-    802052e2:	70a2                	ld	ra,40(sp)
-    802052e4:	7402                	ld	s0,32(sp)
-    802052e6:	64e2                	ld	s1,24(sp)
-    802052e8:	6942                	ld	s2,16(sp)
-    802052ea:	69a2                	ld	s3,8(sp)
-    802052ec:	6a02                	ld	s4,0(sp)
-    802052ee:	6145                	addi	sp,sp,48
-    802052f0:	8082                	ret
+    802052f0:	4501                	li	a0,0
+}
+    802052f2:	70a2                	ld	ra,40(sp)
+    802052f4:	7402                	ld	s0,32(sp)
+    802052f6:	64e2                	ld	s1,24(sp)
+    802052f8:	6942                	ld	s2,16(sp)
+    802052fa:	69a2                	ld	s3,8(sp)
+    802052fc:	6a02                	ld	s4,0(sp)
+    802052fe:	6145                	addi	sp,sp,48
+    80205300:	8082                	ret
         return -1;
-    802052f2:	557d                	li	a0,-1
+    80205302:	557d                	li	a0,-1
 }
-    802052f4:	8082                	ret
+    80205304:	8082                	ret
 
-00000000802052f6 <reloc_clus>:
+0000000080205306 <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)
 {
-    802052f6:	715d                	addi	sp,sp,-80
-    802052f8:	e486                	sd	ra,72(sp)
-    802052fa:	e0a2                	sd	s0,64(sp)
-    802052fc:	fc26                	sd	s1,56(sp)
-    802052fe:	f84a                	sd	s2,48(sp)
-    80205300:	f44e                	sd	s3,40(sp)
-    80205302:	f052                	sd	s4,32(sp)
-    80205304:	ec56                	sd	s5,24(sp)
-    80205306:	e85a                	sd	s6,16(sp)
-    80205308:	e45e                	sd	s7,8(sp)
-    8020530a:	0880                	addi	s0,sp,80
-    8020530c:	84aa                	mv	s1,a0
-    8020530e:	8a2e                	mv	s4,a1
+    80205306:	715d                	addi	sp,sp,-80
+    80205308:	e486                	sd	ra,72(sp)
+    8020530a:	e0a2                	sd	s0,64(sp)
+    8020530c:	fc26                	sd	s1,56(sp)
+    8020530e:	f84a                	sd	s2,48(sp)
+    80205310:	f44e                	sd	s3,40(sp)
+    80205312:	f052                	sd	s4,32(sp)
+    80205314:	ec56                	sd	s5,24(sp)
+    80205316:	e85a                	sd	s6,16(sp)
+    80205318:	e45e                	sd	s7,8(sp)
+    8020531a:	0880                	addi	s0,sp,80
+    8020531c:	84aa                	mv	s1,a0
+    8020531e:	8a2e                	mv	s4,a1
     int clus_num = off / fat.byts_per_clus;
-    80205310:	00019b97          	auipc	s7,0x19
-    80205314:	124bab83          	lw	s7,292(s7) # 8021e434 <fat+0xc>
-    80205318:	0375d9bb          	divuw	s3,a1,s7
+    80205320:	00019b97          	auipc	s7,0x19
+    80205324:	114bab83          	lw	s7,276(s7) # 8021e434 <fat+0xc>
+    80205328:	0375d9bb          	divuw	s3,a1,s7
     while (clus_num > entry->clus_cnt) {
-    8020531c:	11052703          	lw	a4,272(a0)
-    80205320:	07377563          	bgeu	a4,s3,8020538a <reloc_clus+0x94>
-    80205324:	8b32                	mv	s6,a2
+    8020532c:	11052703          	lw	a4,272(a0)
+    80205330:	07377563          	bgeu	a4,s3,8020539a <reloc_clus+0x94>
+    80205334:	8b32                	mv	s6,a2
         int clus = read_fat(entry->cur_clus);
         if (clus >= FAT32_EOC) {
-    80205326:	10000ab7          	lui	s5,0x10000
-    8020532a:	1add                	addi	s5,s5,-9 # ffffff7 <_entry-0x70200009>
-    8020532c:	a81d                	j	80205362 <reloc_clus+0x6c>
+    80205336:	10000ab7          	lui	s5,0x10000
+    8020533a:	1add                	addi	s5,s5,-9 # ffffff7 <_entry-0x70200009>
+    8020533c:	a81d                	j	80205372 <reloc_clus+0x6c>
             if (alloc) {
                 clus = alloc_clus(entry->dev);
-    8020532e:	1144c503          	lbu	a0,276(s1)
-    80205332:	00000097          	auipc	ra,0x0
-    80205336:	e02080e7          	jalr	-510(ra) # 80205134 <alloc_clus>
-    8020533a:	0005091b          	sext.w	s2,a0
+    8020533e:	1144c503          	lbu	a0,276(s1)
+    80205342:	00000097          	auipc	ra,0x0
+    80205346:	e02080e7          	jalr	-510(ra) # 80205144 <alloc_clus>
+    8020534a:	0005091b          	sext.w	s2,a0
                 write_fat(entry->cur_clus, clus);
-    8020533e:	85ca                	mv	a1,s2
-    80205340:	10c4a503          	lw	a0,268(s1)
-    80205344:	00000097          	auipc	ra,0x0
-    80205348:	f32080e7          	jalr	-206(ra) # 80205276 <write_fat>
+    8020534e:	85ca                	mv	a1,s2
+    80205350:	10c4a503          	lw	a0,268(s1)
+    80205354:	00000097          	auipc	ra,0x0
+    80205358:	f32080e7          	jalr	-206(ra) # 80205286 <write_fat>
                 entry->cur_clus = entry->first_clus;
                 entry->clus_cnt = 0;
                 return -1;
             }
         }
         entry->cur_clus = clus;
-    8020534c:	1124a623          	sw	s2,268(s1)
+    8020535c:	1124a623          	sw	s2,268(s1)
         entry->clus_cnt++;
-    80205350:	1104a783          	lw	a5,272(s1)
-    80205354:	2785                	addiw	a5,a5,1
-    80205356:	0007871b          	sext.w	a4,a5
-    8020535a:	10f4a823          	sw	a5,272(s1)
+    80205360:	1104a783          	lw	a5,272(s1)
+    80205364:	2785                	addiw	a5,a5,1
+    80205366:	0007871b          	sext.w	a4,a5
+    8020536a:	10f4a823          	sw	a5,272(s1)
     while (clus_num > entry->clus_cnt) {
-    8020535e:	03377663          	bgeu	a4,s3,8020538a <reloc_clus+0x94>
+    8020536e:	03377663          	bgeu	a4,s3,8020539a <reloc_clus+0x94>
         int clus = read_fat(entry->cur_clus);
-    80205362:	10c4a503          	lw	a0,268(s1)
-    80205366:	00000097          	auipc	ra,0x0
-    8020536a:	d58080e7          	jalr	-680(ra) # 802050be <read_fat>
-    8020536e:	0005091b          	sext.w	s2,a0
+    80205372:	10c4a503          	lw	a0,268(s1)
+    80205376:	00000097          	auipc	ra,0x0
+    8020537a:	d58080e7          	jalr	-680(ra) # 802050ce <read_fat>
+    8020537e:	0005091b          	sext.w	s2,a0
         if (clus >= FAT32_EOC) {
-    80205372:	fd2adde3          	bge	s5,s2,8020534c <reloc_clus+0x56>
+    80205382:	fd2adde3          	bge	s5,s2,8020535c <reloc_clus+0x56>
             if (alloc) {
-    80205376:	fa0b1ce3          	bnez	s6,8020532e <reloc_clus+0x38>
+    80205386:	fa0b1ce3          	bnez	s6,8020533e <reloc_clus+0x38>
                 entry->cur_clus = entry->first_clus;
-    8020537a:	1044a783          	lw	a5,260(s1)
-    8020537e:	10f4a623          	sw	a5,268(s1)
+    8020538a:	1044a783          	lw	a5,260(s1)
+    8020538e:	10f4a623          	sw	a5,268(s1)
                 entry->clus_cnt = 0;
-    80205382:	1004a823          	sw	zero,272(s1)
+    80205392:	1004a823          	sw	zero,272(s1)
                 return -1;
-    80205386:	557d                	li	a0,-1
-    80205388:	a881                	j	802053d8 <reloc_clus+0xe2>
+    80205396:	557d                	li	a0,-1
+    80205398:	a881                	j	802053e8 <reloc_clus+0xe2>
     }
     if (clus_num < entry->clus_cnt) {
-    8020538a:	04e9f163          	bgeu	s3,a4,802053cc <reloc_clus+0xd6>
+    8020539a:	04e9f163          	bgeu	s3,a4,802053dc <reloc_clus+0xd6>
         entry->cur_clus = entry->first_clus;
-    8020538e:	1044a783          	lw	a5,260(s1)
-    80205392:	10f4a623          	sw	a5,268(s1)
+    8020539e:	1044a783          	lw	a5,260(s1)
+    802053a2:	10f4a623          	sw	a5,268(s1)
         entry->clus_cnt = 0;
-    80205396:	1004a823          	sw	zero,272(s1)
+    802053a6:	1004a823          	sw	zero,272(s1)
         while (entry->clus_cnt < clus_num) {
-    8020539a:	037a6963          	bltu	s4,s7,802053cc <reloc_clus+0xd6>
+    802053aa:	037a6963          	bltu	s4,s7,802053dc <reloc_clus+0xd6>
             entry->cur_clus = read_fat(entry->cur_clus);
             if (entry->cur_clus >= FAT32_EOC) {
-    8020539e:	10000937          	lui	s2,0x10000
-    802053a2:	195d                	addi	s2,s2,-9 # ffffff7 <_entry-0x70200009>
+    802053ae:	10000937          	lui	s2,0x10000
+    802053b2:	195d                	addi	s2,s2,-9 # ffffff7 <_entry-0x70200009>
             entry->cur_clus = read_fat(entry->cur_clus);
-    802053a4:	10c4a503          	lw	a0,268(s1)
-    802053a8:	00000097          	auipc	ra,0x0
-    802053ac:	d16080e7          	jalr	-746(ra) # 802050be <read_fat>
-    802053b0:	2501                	sext.w	a0,a0
-    802053b2:	10a4a623          	sw	a0,268(s1)
+    802053b4:	10c4a503          	lw	a0,268(s1)
+    802053b8:	00000097          	auipc	ra,0x0
+    802053bc:	d16080e7          	jalr	-746(ra) # 802050ce <read_fat>
+    802053c0:	2501                	sext.w	a0,a0
+    802053c2:	10a4a623          	sw	a0,268(s1)
             if (entry->cur_clus >= FAT32_EOC) {
-    802053b6:	02a96c63          	bltu	s2,a0,802053ee <reloc_clus+0xf8>
+    802053c6:	02a96c63          	bltu	s2,a0,802053fe <reloc_clus+0xf8>
                 panic("reloc_clus");
             }
             entry->clus_cnt++;
-    802053ba:	1104a783          	lw	a5,272(s1)
-    802053be:	2785                	addiw	a5,a5,1
-    802053c0:	0007871b          	sext.w	a4,a5
-    802053c4:	10f4a823          	sw	a5,272(s1)
+    802053ca:	1104a783          	lw	a5,272(s1)
+    802053ce:	2785                	addiw	a5,a5,1
+    802053d0:	0007871b          	sext.w	a4,a5
+    802053d4:	10f4a823          	sw	a5,272(s1)
         while (entry->clus_cnt < clus_num) {
-    802053c8:	fd376ee3          	bltu	a4,s3,802053a4 <reloc_clus+0xae>
+    802053d8:	fd376ee3          	bltu	a4,s3,802053b4 <reloc_clus+0xae>
         }
     }
     return off % fat.byts_per_clus;
-    802053cc:	00019797          	auipc	a5,0x19
-    802053d0:	0687a783          	lw	a5,104(a5) # 8021e434 <fat+0xc>
-    802053d4:	02fa753b          	remuw	a0,s4,a5
-}
-    802053d8:	60a6                	ld	ra,72(sp)
-    802053da:	6406                	ld	s0,64(sp)
-    802053dc:	74e2                	ld	s1,56(sp)
-    802053de:	7942                	ld	s2,48(sp)
-    802053e0:	79a2                	ld	s3,40(sp)
-    802053e2:	7a02                	ld	s4,32(sp)
-    802053e4:	6ae2                	ld	s5,24(sp)
-    802053e6:	6b42                	ld	s6,16(sp)
-    802053e8:	6ba2                	ld	s7,8(sp)
-    802053ea:	6161                	addi	sp,sp,80
-    802053ec:	8082                	ret
+    802053dc:	00019797          	auipc	a5,0x19
+    802053e0:	0587a783          	lw	a5,88(a5) # 8021e434 <fat+0xc>
+    802053e4:	02fa753b          	remuw	a0,s4,a5
+}
+    802053e8:	60a6                	ld	ra,72(sp)
+    802053ea:	6406                	ld	s0,64(sp)
+    802053ec:	74e2                	ld	s1,56(sp)
+    802053ee:	7942                	ld	s2,48(sp)
+    802053f0:	79a2                	ld	s3,40(sp)
+    802053f2:	7a02                	ld	s4,32(sp)
+    802053f4:	6ae2                	ld	s5,24(sp)
+    802053f6:	6b42                	ld	s6,16(sp)
+    802053f8:	6ba2                	ld	s7,8(sp)
+    802053fa:	6161                	addi	sp,sp,80
+    802053fc:	8082                	ret
                 panic("reloc_clus");
-    802053ee:	00004517          	auipc	a0,0x4
-    802053f2:	7c250513          	addi	a0,a0,1986 # 80209bb0 <digits+0x830>
-    802053f6:	ffffb097          	auipc	ra,0xffffb
-    802053fa:	d4e080e7          	jalr	-690(ra) # 80200144 <panic>
-
-00000000802053fe <rw_clus>:
-{
-    802053fe:	7119                	addi	sp,sp,-128
-    80205400:	fc86                	sd	ra,120(sp)
-    80205402:	f8a2                	sd	s0,112(sp)
-    80205404:	f4a6                	sd	s1,104(sp)
-    80205406:	f0ca                	sd	s2,96(sp)
-    80205408:	ecce                	sd	s3,88(sp)
-    8020540a:	e8d2                	sd	s4,80(sp)
-    8020540c:	e4d6                	sd	s5,72(sp)
-    8020540e:	e0da                	sd	s6,64(sp)
-    80205410:	fc5e                	sd	s7,56(sp)
-    80205412:	f862                	sd	s8,48(sp)
-    80205414:	f466                	sd	s9,40(sp)
-    80205416:	f06a                	sd	s10,32(sp)
-    80205418:	ec6e                	sd	s11,24(sp)
-    8020541a:	0100                	addi	s0,sp,128
-    8020541c:	f8c43423          	sd	a2,-120(s0)
-    80205420:	8b36                	mv	s6,a3
-    80205422:	8c3e                	mv	s8,a5
+    802053fe:	00004517          	auipc	a0,0x4
+    80205402:	7ba50513          	addi	a0,a0,1978 # 80209bb8 <digits+0x838>
+    80205406:	ffffb097          	auipc	ra,0xffffb
+    8020540a:	d3e080e7          	jalr	-706(ra) # 80200144 <panic>
+
+000000008020540e <rw_clus>:
+{
+    8020540e:	7119                	addi	sp,sp,-128
+    80205410:	fc86                	sd	ra,120(sp)
+    80205412:	f8a2                	sd	s0,112(sp)
+    80205414:	f4a6                	sd	s1,104(sp)
+    80205416:	f0ca                	sd	s2,96(sp)
+    80205418:	ecce                	sd	s3,88(sp)
+    8020541a:	e8d2                	sd	s4,80(sp)
+    8020541c:	e4d6                	sd	s5,72(sp)
+    8020541e:	e0da                	sd	s6,64(sp)
+    80205420:	fc5e                	sd	s7,56(sp)
+    80205422:	f862                	sd	s8,48(sp)
+    80205424:	f466                	sd	s9,40(sp)
+    80205426:	f06a                	sd	s10,32(sp)
+    80205428:	ec6e                	sd	s11,24(sp)
+    8020542a:	0100                	addi	s0,sp,128
+    8020542c:	f8c43423          	sd	a2,-120(s0)
+    80205430:	8b36                	mv	s6,a3
+    80205432:	8c3e                	mv	s8,a5
     if (off + n > fat.byts_per_clus)
-    80205424:	00f706bb          	addw	a3,a4,a5
-    80205428:	00019797          	auipc	a5,0x19
-    8020542c:	00c7a783          	lw	a5,12(a5) # 8021e434 <fat+0xc>
-    80205430:	02d7ef63          	bltu	a5,a3,8020546e <rw_clus+0x70>
-    80205434:	8cae                	mv	s9,a1
+    80205434:	00f706bb          	addw	a3,a4,a5
+    80205438:	00019797          	auipc	a5,0x19
+    8020543c:	ffc7a783          	lw	a5,-4(a5) # 8021e434 <fat+0xc>
+    80205440:	02d7ef63          	bltu	a5,a3,8020547e <rw_clus+0x70>
+    80205444:	8cae                	mv	s9,a1
     uint sec = first_sec_of_clus(cluster) + off / fat.bpb.byts_per_sec;
-    80205436:	00019797          	auipc	a5,0x19
-    8020543a:	ff278793          	addi	a5,a5,-14 # 8021e428 <fat>
-    8020543e:	0107d683          	lhu	a3,16(a5)
+    80205446:	00019797          	auipc	a5,0x19
+    8020544a:	fe278793          	addi	a5,a5,-30 # 8021e428 <fat>
+    8020544e:	0107d683          	lhu	a3,16(a5)
     return ((cluster - 2) * fat.bpb.sec_per_clus) + fat.first_data_sec;
-    80205442:	ffe5099b          	addiw	s3,a0,-2
-    80205446:	0127c603          	lbu	a2,18(a5)
-    8020544a:	02c989bb          	mulw	s3,s3,a2
-    8020544e:	439c                	lw	a5,0(a5)
-    80205450:	00f989bb          	addw	s3,s3,a5
+    80205452:	ffe5099b          	addiw	s3,a0,-2
+    80205456:	0127c603          	lbu	a2,18(a5)
+    8020545a:	02c989bb          	mulw	s3,s3,a2
+    8020545e:	439c                	lw	a5,0(a5)
+    80205460:	00f989bb          	addw	s3,s3,a5
     uint sec = first_sec_of_clus(cluster) + off / fat.bpb.byts_per_sec;
-    80205454:	02d757bb          	divuw	a5,a4,a3
-    80205458:	00f989bb          	addw	s3,s3,a5
+    80205464:	02d757bb          	divuw	a5,a4,a3
+    80205468:	00f989bb          	addw	s3,s3,a5
     off = off % fat.bpb.byts_per_sec;
-    8020545c:	02d77abb          	remuw	s5,a4,a3
+    8020546c:	02d77abb          	remuw	s5,a4,a3
     for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) {
-    80205460:	0e0c0363          	beqz	s8,80205546 <rw_clus+0x148>
-    80205464:	4a01                	li	s4,0
+    80205470:	0e0c0363          	beqz	s8,80205556 <rw_clus+0x148>
+    80205474:	4a01                	li	s4,0
         m = BSIZE - off % BSIZE;
-    80205466:	20000d93          	li	s11,512
+    80205476:	20000d93          	li	s11,512
         if (bad == -1) {
-    8020546a:	5d7d                	li	s10,-1
-    8020546c:	a095                	j	802054d0 <rw_clus+0xd2>
+    8020547a:	5d7d                	li	s10,-1
+    8020547c:	a095                	j	802054e0 <rw_clus+0xd2>
         panic("offset out of range");
-    8020546e:	00004517          	auipc	a0,0x4
-    80205472:	75250513          	addi	a0,a0,1874 # 80209bc0 <digits+0x840>
-    80205476:	ffffb097          	auipc	ra,0xffffb
-    8020547a:	cce080e7          	jalr	-818(ra) # 80200144 <panic>
+    8020547e:	00004517          	auipc	a0,0x4
+    80205482:	74a50513          	addi	a0,a0,1866 # 80209bc8 <digits+0x848>
+    80205486:	ffffb097          	auipc	ra,0xffffb
+    8020548a:	cbe080e7          	jalr	-834(ra) # 80200144 <panic>
                 bwrite(bp);
-    8020547e:	854a                	mv	a0,s2
-    80205480:	ffffe097          	auipc	ra,0xffffe
-    80205484:	056080e7          	jalr	86(ra) # 802034d6 <bwrite>
+    8020548e:	854a                	mv	a0,s2
+    80205490:	ffffe097          	auipc	ra,0xffffe
+    80205494:	048080e7          	jalr	72(ra) # 802034d8 <bwrite>
         brelse(bp);
-    80205488:	854a                	mv	a0,s2
-    8020548a:	ffffe097          	auipc	ra,0xffffe
-    8020548e:	088080e7          	jalr	136(ra) # 80203512 <brelse>
+    80205498:	854a                	mv	a0,s2
+    8020549a:	ffffe097          	auipc	ra,0xffffe
+    8020549e:	07a080e7          	jalr	122(ra) # 80203514 <brelse>
         if (bad == -1) {
-    80205492:	a02d                	j	802054bc <rw_clus+0xbe>
+    802054a2:	a02d                	j	802054cc <rw_clus+0xbe>
             bad = either_copyout(user, data, bp->data + (off % BSIZE), m);
-    80205494:	05890613          	addi	a2,s2,88
-    80205498:	1682                	slli	a3,a3,0x20
-    8020549a:	9281                	srli	a3,a3,0x20
-    8020549c:	963a                	add	a2,a2,a4
-    8020549e:	85da                	mv	a1,s6
-    802054a0:	f8843503          	ld	a0,-120(s0)
-    802054a4:	ffffd097          	auipc	ra,0xffffd
-    802054a8:	06e080e7          	jalr	110(ra) # 80202512 <either_copyout>
-    802054ac:	8baa                	mv	s7,a0
+    802054a4:	05890613          	addi	a2,s2,88
+    802054a8:	1682                	slli	a3,a3,0x20
+    802054aa:	9281                	srli	a3,a3,0x20
+    802054ac:	963a                	add	a2,a2,a4
+    802054ae:	85da                	mv	a1,s6
+    802054b0:	f8843503          	ld	a0,-120(s0)
+    802054b4:	ffffd097          	auipc	ra,0xffffd
+    802054b8:	05e080e7          	jalr	94(ra) # 80202512 <either_copyout>
+    802054bc:	8baa                	mv	s7,a0
         brelse(bp);
-    802054ae:	854a                	mv	a0,s2
-    802054b0:	ffffe097          	auipc	ra,0xffffe
-    802054b4:	062080e7          	jalr	98(ra) # 80203512 <brelse>
+    802054be:	854a                	mv	a0,s2
+    802054c0:	ffffe097          	auipc	ra,0xffffe
+    802054c4:	054080e7          	jalr	84(ra) # 80203514 <brelse>
         if (bad == -1) {
-    802054b8:	07ab8763          	beq	s7,s10,80205526 <rw_clus+0x128>
+    802054c8:	07ab8763          	beq	s7,s10,80205536 <rw_clus+0x128>
     for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) {
-    802054bc:	01448a3b          	addw	s4,s1,s4
-    802054c0:	01548abb          	addw	s5,s1,s5
-    802054c4:	1482                	slli	s1,s1,0x20
-    802054c6:	9081                	srli	s1,s1,0x20
-    802054c8:	9b26                	add	s6,s6,s1
-    802054ca:	2985                	addiw	s3,s3,1
-    802054cc:	058a7d63          	bgeu	s4,s8,80205526 <rw_clus+0x128>
+    802054cc:	01448a3b          	addw	s4,s1,s4
+    802054d0:	01548abb          	addw	s5,s1,s5
+    802054d4:	1482                	slli	s1,s1,0x20
+    802054d6:	9081                	srli	s1,s1,0x20
+    802054d8:	9b26                	add	s6,s6,s1
+    802054da:	2985                	addiw	s3,s3,1
+    802054dc:	058a7d63          	bgeu	s4,s8,80205536 <rw_clus+0x128>
         bp = bread(0, sec);
-    802054d0:	85ce                	mv	a1,s3
-    802054d2:	4501                	li	a0,0
-    802054d4:	ffffe097          	auipc	ra,0xffffe
-    802054d8:	f12080e7          	jalr	-238(ra) # 802033e6 <bread>
-    802054dc:	892a                	mv	s2,a0
+    802054e0:	85ce                	mv	a1,s3
+    802054e2:	4501                	li	a0,0
+    802054e4:	ffffe097          	auipc	ra,0xffffe
+    802054e8:	f04080e7          	jalr	-252(ra) # 802033e8 <bread>
+    802054ec:	892a                	mv	s2,a0
         m = BSIZE - off % BSIZE;
-    802054de:	1ffaf713          	andi	a4,s5,511
+    802054ee:	1ffaf713          	andi	a4,s5,511
         if (n - tot < m) {
-    802054e2:	414c07bb          	subw	a5,s8,s4
+    802054f2:	414c07bb          	subw	a5,s8,s4
         m = BSIZE - off % BSIZE;
-    802054e6:	40ed863b          	subw	a2,s11,a4
-    802054ea:	86be                	mv	a3,a5
-    802054ec:	2781                	sext.w	a5,a5
-    802054ee:	0006059b          	sext.w	a1,a2
-    802054f2:	00f5f363          	bgeu	a1,a5,802054f8 <rw_clus+0xfa>
-    802054f6:	86b2                	mv	a3,a2
-    802054f8:	0006849b          	sext.w	s1,a3
+    802054f6:	40ed863b          	subw	a2,s11,a4
+    802054fa:	86be                	mv	a3,a5
+    802054fc:	2781                	sext.w	a5,a5
+    802054fe:	0006059b          	sext.w	a1,a2
+    80205502:	00f5f363          	bgeu	a1,a5,80205508 <rw_clus+0xfa>
+    80205506:	86b2                	mv	a3,a2
+    80205508:	0006849b          	sext.w	s1,a3
         if (write) {
-    802054fc:	f80c8ce3          	beqz	s9,80205494 <rw_clus+0x96>
+    8020550c:	f80c8ce3          	beqz	s9,802054a4 <rw_clus+0x96>
             if ((bad = either_copyin(bp->data + (off % BSIZE), user, data, m)) != -1) {
-    80205500:	05890513          	addi	a0,s2,88
-    80205504:	1682                	slli	a3,a3,0x20
-    80205506:	9281                	srli	a3,a3,0x20
-    80205508:	865a                	mv	a2,s6
-    8020550a:	f8843583          	ld	a1,-120(s0)
-    8020550e:	953a                	add	a0,a0,a4
-    80205510:	ffffd097          	auipc	ra,0xffffd
-    80205514:	038080e7          	jalr	56(ra) # 80202548 <either_copyin>
-    80205518:	f7a513e3          	bne	a0,s10,8020547e <rw_clus+0x80>
+    80205510:	05890513          	addi	a0,s2,88
+    80205514:	1682                	slli	a3,a3,0x20
+    80205516:	9281                	srli	a3,a3,0x20
+    80205518:	865a                	mv	a2,s6
+    8020551a:	f8843583          	ld	a1,-120(s0)
+    8020551e:	953a                	add	a0,a0,a4
+    80205520:	ffffd097          	auipc	ra,0xffffd
+    80205524:	028080e7          	jalr	40(ra) # 80202548 <either_copyin>
+    80205528:	f7a513e3          	bne	a0,s10,8020548e <rw_clus+0x80>
         brelse(bp);
-    8020551c:	854a                	mv	a0,s2
-    8020551e:	ffffe097          	auipc	ra,0xffffe
-    80205522:	ff4080e7          	jalr	-12(ra) # 80203512 <brelse>
-}
-    80205526:	8552                	mv	a0,s4
-    80205528:	70e6                	ld	ra,120(sp)
-    8020552a:	7446                	ld	s0,112(sp)
-    8020552c:	74a6                	ld	s1,104(sp)
-    8020552e:	7906                	ld	s2,96(sp)
-    80205530:	69e6                	ld	s3,88(sp)
-    80205532:	6a46                	ld	s4,80(sp)
-    80205534:	6aa6                	ld	s5,72(sp)
-    80205536:	6b06                	ld	s6,64(sp)
-    80205538:	7be2                	ld	s7,56(sp)
-    8020553a:	7c42                	ld	s8,48(sp)
-    8020553c:	7ca2                	ld	s9,40(sp)
-    8020553e:	7d02                	ld	s10,32(sp)
-    80205540:	6de2                	ld	s11,24(sp)
-    80205542:	6109                	addi	sp,sp,128
-    80205544:	8082                	ret
+    8020552c:	854a                	mv	a0,s2
+    8020552e:	ffffe097          	auipc	ra,0xffffe
+    80205532:	fe6080e7          	jalr	-26(ra) # 80203514 <brelse>
+}
+    80205536:	8552                	mv	a0,s4
+    80205538:	70e6                	ld	ra,120(sp)
+    8020553a:	7446                	ld	s0,112(sp)
+    8020553c:	74a6                	ld	s1,104(sp)
+    8020553e:	7906                	ld	s2,96(sp)
+    80205540:	69e6                	ld	s3,88(sp)
+    80205542:	6a46                	ld	s4,80(sp)
+    80205544:	6aa6                	ld	s5,72(sp)
+    80205546:	6b06                	ld	s6,64(sp)
+    80205548:	7be2                	ld	s7,56(sp)
+    8020554a:	7c42                	ld	s8,48(sp)
+    8020554c:	7ca2                	ld	s9,40(sp)
+    8020554e:	7d02                	ld	s10,32(sp)
+    80205550:	6de2                	ld	s11,24(sp)
+    80205552:	6109                	addi	sp,sp,128
+    80205554:	8082                	ret
     for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) {
-    80205546:	8a62                	mv	s4,s8
-    80205548:	bff9                	j	80205526 <rw_clus+0x128>
+    80205556:	8a62                	mv	s4,s8
+    80205558:	bff9                	j	80205536 <rw_clus+0x128>
 
-000000008020554a <eget>:
+000000008020555a <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)
 {
-    8020554a:	7139                	addi	sp,sp,-64
-    8020554c:	fc06                	sd	ra,56(sp)
-    8020554e:	f822                	sd	s0,48(sp)
-    80205550:	f426                	sd	s1,40(sp)
-    80205552:	f04a                	sd	s2,32(sp)
-    80205554:	ec4e                	sd	s3,24(sp)
-    80205556:	e852                	sd	s4,16(sp)
-    80205558:	e456                	sd	s5,8(sp)
-    8020555a:	0080                	addi	s0,sp,64
-    8020555c:	8a2a                	mv	s4,a0
-    8020555e:	8aae                	mv	s5,a1
+    8020555a:	7139                	addi	sp,sp,-64
+    8020555c:	fc06                	sd	ra,56(sp)
+    8020555e:	f822                	sd	s0,48(sp)
+    80205560:	f426                	sd	s1,40(sp)
+    80205562:	f04a                	sd	s2,32(sp)
+    80205564:	ec4e                	sd	s3,24(sp)
+    80205566:	e852                	sd	s4,16(sp)
+    80205568:	e456                	sd	s5,8(sp)
+    8020556a:	0080                	addi	s0,sp,64
+    8020556c:	8a2a                	mv	s4,a0
+    8020556e:	8aae                	mv	s5,a1
     struct dirent *ep;
     acquire(&ecache.lock);
-    80205560:	00019517          	auipc	a0,0x19
-    80205564:	05850513          	addi	a0,a0,88 # 8021e5b8 <ecache>
-    80205568:	ffffb097          	auipc	ra,0xffffb
-    8020556c:	15e080e7          	jalr	350(ra) # 802006c6 <acquire>
+    80205570:	00019517          	auipc	a0,0x19
+    80205574:	04850513          	addi	a0,a0,72 # 8021e5b8 <ecache>
+    80205578:	ffffb097          	auipc	ra,0xffffb
+    8020557c:	14e080e7          	jalr	334(ra) # 802006c6 <acquire>
     if (name) {
-    80205570:	060a8b63          	beqz	s5,802055e6 <eget+0x9c>
+    80205580:	060a8b63          	beqz	s5,802055f6 <eget+0x9c>
         for (ep = root.next; ep != &root; ep = ep->next) {          // LRU algo
-    80205574:	00019497          	auipc	s1,0x19
-    80205578:	0044b483          	ld	s1,4(s1) # 8021e578 <root+0x128>
-    8020557c:	00019797          	auipc	a5,0x19
-    80205580:	ed478793          	addi	a5,a5,-300 # 8021e450 <root>
-    80205584:	06f48163          	beq	s1,a5,802055e6 <eget+0x9c>
+    80205584:	00019497          	auipc	s1,0x19
+    80205588:	ff44b483          	ld	s1,-12(s1) # 8021e578 <root+0x128>
+    8020558c:	00019797          	auipc	a5,0x19
+    80205590:	ec478793          	addi	a5,a5,-316 # 8021e450 <root>
+    80205594:	06f48163          	beq	s1,a5,802055f6 <eget+0x9c>
             if (ep->valid == 1 && ep->parent == parent
-    80205588:	4905                	li	s2,1
+    80205598:	4905                	li	s2,1
         for (ep = root.next; ep != &root; ep = ep->next) {          // LRU algo
-    8020558a:	89be                	mv	s3,a5
-    8020558c:	a029                	j	80205596 <eget+0x4c>
-    8020558e:	1284b483          	ld	s1,296(s1)
-    80205592:	05348a63          	beq	s1,s3,802055e6 <eget+0x9c>
+    8020559a:	89be                	mv	s3,a5
+    8020559c:	a029                	j	802055a6 <eget+0x4c>
+    8020559e:	1284b483          	ld	s1,296(s1)
+    802055a2:	05348a63          	beq	s1,s3,802055f6 <eget+0x9c>
             if (ep->valid == 1 && ep->parent == parent
-    80205596:	11649783          	lh	a5,278(s1)
-    8020559a:	ff279ae3          	bne	a5,s2,8020558e <eget+0x44>
-    8020559e:	1204b783          	ld	a5,288(s1)
-    802055a2:	ff4796e3          	bne	a5,s4,8020558e <eget+0x44>
+    802055a6:	11649783          	lh	a5,278(s1)
+    802055aa:	ff279ae3          	bne	a5,s2,8020559e <eget+0x44>
+    802055ae:	1204b783          	ld	a5,288(s1)
+    802055b2:	ff4796e3          	bne	a5,s4,8020559e <eget+0x44>
                 && strncmp(ep->filename, name, FAT32_MAX_FILENAME) == 0) {
-    802055a6:	0ff00613          	li	a2,255
-    802055aa:	85d6                	mv	a1,s5
-    802055ac:	8526                	mv	a0,s1
-    802055ae:	ffffb097          	auipc	ra,0xffffb
-    802055b2:	28c080e7          	jalr	652(ra) # 8020083a <strncmp>
-    802055b6:	fd61                	bnez	a0,8020558e <eget+0x44>
+    802055b6:	0ff00613          	li	a2,255
+    802055ba:	85d6                	mv	a1,s5
+    802055bc:	8526                	mv	a0,s1
+    802055be:	ffffb097          	auipc	ra,0xffffb
+    802055c2:	27c080e7          	jalr	636(ra) # 8020083a <strncmp>
+    802055c6:	fd61                	bnez	a0,8020559e <eget+0x44>
                 if (ep->ref++ == 0) {
-    802055b8:	1184a783          	lw	a5,280(s1)
-    802055bc:	0017871b          	addiw	a4,a5,1
-    802055c0:	10e4ac23          	sw	a4,280(s1)
-    802055c4:	eb81                	bnez	a5,802055d4 <eget+0x8a>
+    802055c8:	1184a783          	lw	a5,280(s1)
+    802055cc:	0017871b          	addiw	a4,a5,1
+    802055d0:	10e4ac23          	sw	a4,280(s1)
+    802055d4:	eb81                	bnez	a5,802055e4 <eget+0x8a>
                     ep->parent->ref++;
-    802055c6:	1204b703          	ld	a4,288(s1)
-    802055ca:	11872783          	lw	a5,280(a4)
-    802055ce:	2785                	addiw	a5,a5,1
-    802055d0:	10f72c23          	sw	a5,280(a4)
+    802055d6:	1204b703          	ld	a4,288(s1)
+    802055da:	11872783          	lw	a5,280(a4)
+    802055de:	2785                	addiw	a5,a5,1
+    802055e0:	10f72c23          	sw	a5,280(a4)
                 }
                 release(&ecache.lock);
-    802055d4:	00019517          	auipc	a0,0x19
-    802055d8:	fe450513          	addi	a0,a0,-28 # 8021e5b8 <ecache>
-    802055dc:	ffffb097          	auipc	ra,0xffffb
-    802055e0:	13e080e7          	jalr	318(ra) # 8020071a <release>
+    802055e4:	00019517          	auipc	a0,0x19
+    802055e8:	fd450513          	addi	a0,a0,-44 # 8021e5b8 <ecache>
+    802055ec:	ffffb097          	auipc	ra,0xffffb
+    802055f0:	12e080e7          	jalr	302(ra) # 8020071a <release>
                 // edup(ep->parent);
                 return ep;
-    802055e4:	a085                	j	80205644 <eget+0xfa>
+    802055f4:	a085                	j	80205654 <eget+0xfa>
             }
         }
     }
     for (ep = root.prev; ep != &root; ep = ep->prev) {              // LRU algo
-    802055e6:	00019497          	auipc	s1,0x19
-    802055ea:	f9a4b483          	ld	s1,-102(s1) # 8021e580 <root+0x130>
-    802055ee:	00019797          	auipc	a5,0x19
-    802055f2:	e6278793          	addi	a5,a5,-414 # 8021e450 <root>
-    802055f6:	00f48a63          	beq	s1,a5,8020560a <eget+0xc0>
-    802055fa:	873e                	mv	a4,a5
+    802055f6:	00019497          	auipc	s1,0x19
+    802055fa:	f8a4b483          	ld	s1,-118(s1) # 8021e580 <root+0x130>
+    802055fe:	00019797          	auipc	a5,0x19
+    80205602:	e5278793          	addi	a5,a5,-430 # 8021e450 <root>
+    80205606:	00f48a63          	beq	s1,a5,8020561a <eget+0xc0>
+    8020560a:	873e                	mv	a4,a5
         if (ep->ref == 0) {
-    802055fc:	1184a783          	lw	a5,280(s1)
-    80205600:	cf89                	beqz	a5,8020561a <eget+0xd0>
+    8020560c:	1184a783          	lw	a5,280(s1)
+    80205610:	cf89                	beqz	a5,8020562a <eget+0xd0>
     for (ep = root.prev; ep != &root; ep = ep->prev) {              // LRU algo
-    80205602:	1304b483          	ld	s1,304(s1)
-    80205606:	fee49be3          	bne	s1,a4,802055fc <eget+0xb2>
+    80205612:	1304b483          	ld	s1,304(s1)
+    80205616:	fee49be3          	bne	s1,a4,8020560c <eget+0xb2>
             ep->dirty = 0;
             release(&ecache.lock);
             return ep;
         }
     }
     panic("eget: insufficient ecache");
-    8020560a:	00004517          	auipc	a0,0x4
-    8020560e:	5ce50513          	addi	a0,a0,1486 # 80209bd8 <digits+0x858>
-    80205612:	ffffb097          	auipc	ra,0xffffb
-    80205616:	b32080e7          	jalr	-1230(ra) # 80200144 <panic>
+    8020561a:	00004517          	auipc	a0,0x4
+    8020561e:	5c650513          	addi	a0,a0,1478 # 80209be0 <digits+0x860>
+    80205622:	ffffb097          	auipc	ra,0xffffb
+    80205626:	b22080e7          	jalr	-1246(ra) # 80200144 <panic>
             ep->ref = 1;
-    8020561a:	4785                	li	a5,1
-    8020561c:	10f4ac23          	sw	a5,280(s1)
+    8020562a:	4785                	li	a5,1
+    8020562c:	10f4ac23          	sw	a5,280(s1)
             ep->dev = parent->dev;
-    80205620:	114a4783          	lbu	a5,276(s4)
-    80205624:	10f48a23          	sb	a5,276(s1)
+    80205630:	114a4783          	lbu	a5,276(s4)
+    80205634:	10f48a23          	sb	a5,276(s1)
             ep->off = 0;
-    80205628:	1004ae23          	sw	zero,284(s1)
+    80205638:	1004ae23          	sw	zero,284(s1)
             ep->valid = 0;
-    8020562c:	10049b23          	sh	zero,278(s1)
+    8020563c:	10049b23          	sh	zero,278(s1)
             ep->dirty = 0;
-    80205630:	10048aa3          	sb	zero,277(s1)
+    80205640:	10048aa3          	sb	zero,277(s1)
             release(&ecache.lock);
-    80205634:	00019517          	auipc	a0,0x19
-    80205638:	f8450513          	addi	a0,a0,-124 # 8021e5b8 <ecache>
-    8020563c:	ffffb097          	auipc	ra,0xffffb
-    80205640:	0de080e7          	jalr	222(ra) # 8020071a <release>
+    80205644:	00019517          	auipc	a0,0x19
+    80205648:	f7450513          	addi	a0,a0,-140 # 8021e5b8 <ecache>
+    8020564c:	ffffb097          	auipc	ra,0xffffb
+    80205650:	0ce080e7          	jalr	206(ra) # 8020071a <release>
     return 0;
 }
-    80205644:	8526                	mv	a0,s1
-    80205646:	70e2                	ld	ra,56(sp)
-    80205648:	7442                	ld	s0,48(sp)
-    8020564a:	74a2                	ld	s1,40(sp)
-    8020564c:	7902                	ld	s2,32(sp)
-    8020564e:	69e2                	ld	s3,24(sp)
-    80205650:	6a42                	ld	s4,16(sp)
-    80205652:	6aa2                	ld	s5,8(sp)
-    80205654:	6121                	addi	sp,sp,64
-    80205656:	8082                	ret
-
-0000000080205658 <read_entry_name>:
+    80205654:	8526                	mv	a0,s1
+    80205656:	70e2                	ld	ra,56(sp)
+    80205658:	7442                	ld	s0,48(sp)
+    8020565a:	74a2                	ld	s1,40(sp)
+    8020565c:	7902                	ld	s2,32(sp)
+    8020565e:	69e2                	ld	s3,24(sp)
+    80205660:	6a42                	ld	s4,16(sp)
+    80205662:	6aa2                	ld	s5,8(sp)
+    80205664:	6121                	addi	sp,sp,64
+    80205666:	8082                	ret
+
+0000000080205668 <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)
 {
-    80205658:	7139                	addi	sp,sp,-64
-    8020565a:	fc06                	sd	ra,56(sp)
-    8020565c:	f822                	sd	s0,48(sp)
-    8020565e:	f426                	sd	s1,40(sp)
-    80205660:	f04a                	sd	s2,32(sp)
-    80205662:	ec4e                	sd	s3,24(sp)
-    80205664:	0080                	addi	s0,sp,64
-    80205666:	84aa                	mv	s1,a0
-    80205668:	892e                	mv	s2,a1
+    80205668:	7139                	addi	sp,sp,-64
+    8020566a:	fc06                	sd	ra,56(sp)
+    8020566c:	f822                	sd	s0,48(sp)
+    8020566e:	f426                	sd	s1,40(sp)
+    80205670:	f04a                	sd	s2,32(sp)
+    80205672:	ec4e                	sd	s3,24(sp)
+    80205674:	0080                	addi	s0,sp,64
+    80205676:	84aa                	mv	s1,a0
+    80205678:	892e                	mv	s2,a1
     if (d->lne.attr == ATTR_LONG_NAME) {                       // long entry branch
-    8020566a:	00b5c703          	lbu	a4,11(a1)
-    8020566e:	47bd                	li	a5,15
-    80205670:	08f70563          	beq	a4,a5,802056fa <read_entry_name+0xa2>
+    8020567a:	00b5c703          	lbu	a4,11(a1)
+    8020567e:	47bd                	li	a5,15
+    80205680:	08f70563          	beq	a4,a5,8020570a <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'
-    80205674:	4635                	li	a2,13
-    80205676:	4581                	li	a1,0
-    80205678:	ffffb097          	auipc	ra,0xffffb
-    8020567c:	0ea080e7          	jalr	234(ra) # 80200762 <memset>
+    80205684:	4635                	li	a2,13
+    80205686:	4581                	li	a1,0
+    80205688:	ffffb097          	auipc	ra,0xffffb
+    8020568c:	0da080e7          	jalr	218(ra) # 80200762 <memset>
         int i;
         for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) {
-    80205680:	00094703          	lbu	a4,0(s2)
-    80205684:	02000793          	li	a5,32
-    80205688:	0af70c63          	beq	a4,a5,80205740 <read_entry_name+0xe8>
-    8020568c:	4785                	li	a5,1
-    8020568e:	02000613          	li	a2,32
-    80205692:	45a5                	li	a1,9
+    80205690:	00094703          	lbu	a4,0(s2)
+    80205694:	02000793          	li	a5,32
+    80205698:	0af70c63          	beq	a4,a5,80205750 <read_entry_name+0xe8>
+    8020569c:	4785                	li	a5,1
+    8020569e:	02000613          	li	a2,32
+    802056a2:	45a5                	li	a1,9
             buffer[i] = d->sne.name[i];
-    80205694:	00f486b3          	add	a3,s1,a5
-    80205698:	fee68fa3          	sb	a4,-1(a3) # 1fff <_entry-0x801fe001>
+    802056a4:	00f486b3          	add	a3,s1,a5
+    802056a8:	fee68fa3          	sb	a4,-1(a3) # 1fff <_entry-0x801fe001>
         for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) {
-    8020569c:	0007869b          	sext.w	a3,a5
-    802056a0:	00f90733          	add	a4,s2,a5
-    802056a4:	00074703          	lbu	a4,0(a4)
-    802056a8:	00c70563          	beq	a4,a2,802056b2 <read_entry_name+0x5a>
-    802056ac:	0785                	addi	a5,a5,1
-    802056ae:	feb793e3          	bne	a5,a1,80205694 <read_entry_name+0x3c>
+    802056ac:	0007869b          	sext.w	a3,a5
+    802056b0:	00f90733          	add	a4,s2,a5
+    802056b4:	00074703          	lbu	a4,0(a4)
+    802056b8:	00c70563          	beq	a4,a2,802056c2 <read_entry_name+0x5a>
+    802056bc:	0785                	addi	a5,a5,1
+    802056be:	feb793e3          	bne	a5,a1,802056a4 <read_entry_name+0x3c>
         }
         if (d->sne.name[8] != ' ') {
-    802056b2:	00894703          	lbu	a4,8(s2)
-    802056b6:	02000793          	li	a5,32
-    802056ba:	00f70963          	beq	a4,a5,802056cc <read_entry_name+0x74>
+    802056c2:	00894703          	lbu	a4,8(s2)
+    802056c6:	02000793          	li	a5,32
+    802056ca:	00f70963          	beq	a4,a5,802056dc <read_entry_name+0x74>
             buffer[i++] = '.';
-    802056be:	00d487b3          	add	a5,s1,a3
-    802056c2:	02e00713          	li	a4,46
-    802056c6:	00e78023          	sb	a4,0(a5)
-    802056ca:	2685                	addiw	a3,a3,1
+    802056ce:	00d487b3          	add	a5,s1,a3
+    802056d2:	02e00713          	li	a4,46
+    802056d6:	00e78023          	sb	a4,0(a5)
+    802056da:	2685                	addiw	a3,a3,1
         }
         for (int j = 8; j < CHAR_SHORT_NAME; j++, i++) {
-    802056cc:	00890793          	addi	a5,s2,8
-    802056d0:	94b6                	add	s1,s1,a3
-    802056d2:	092d                	addi	s2,s2,11
+    802056dc:	00890793          	addi	a5,s2,8
+    802056e0:	94b6                	add	s1,s1,a3
+    802056e2:	092d                	addi	s2,s2,11
             if (d->sne.name[j] == ' ') { break; }
-    802056d4:	02000693          	li	a3,32
-    802056d8:	0007c703          	lbu	a4,0(a5)
-    802056dc:	00d70863          	beq	a4,a3,802056ec <read_entry_name+0x94>
+    802056e4:	02000693          	li	a3,32
+    802056e8:	0007c703          	lbu	a4,0(a5)
+    802056ec:	00d70863          	beq	a4,a3,802056fc <read_entry_name+0x94>
             buffer[i] = d->sne.name[j];
-    802056e0:	00e48023          	sb	a4,0(s1)
+    802056f0:	00e48023          	sb	a4,0(s1)
         for (int j = 8; j < CHAR_SHORT_NAME; j++, i++) {
-    802056e4:	0785                	addi	a5,a5,1
-    802056e6:	0485                	addi	s1,s1,1
-    802056e8:	ff2798e3          	bne	a5,s2,802056d8 <read_entry_name+0x80>
+    802056f4:	0785                	addi	a5,a5,1
+    802056f6:	0485                	addi	s1,s1,1
+    802056f8:	ff2798e3          	bne	a5,s2,802056e8 <read_entry_name+0x80>
         }
     }
 }
-    802056ec:	70e2                	ld	ra,56(sp)
-    802056ee:	7442                	ld	s0,48(sp)
-    802056f0:	74a2                	ld	s1,40(sp)
-    802056f2:	7902                	ld	s2,32(sp)
-    802056f4:	69e2                	ld	s3,24(sp)
-    802056f6:	6121                	addi	sp,sp,64
-    802056f8:	8082                	ret
+    802056fc:	70e2                	ld	ra,56(sp)
+    802056fe:	7442                	ld	s0,48(sp)
+    80205700:	74a2                	ld	s1,40(sp)
+    80205702:	7902                	ld	s2,32(sp)
+    80205704:	69e2                	ld	s3,24(sp)
+    80205706:	6121                	addi	sp,sp,64
+    80205708:	8082                	ret
         memmove(temp, d->lne.name1, sizeof(temp));
-    802056fa:	4629                	li	a2,10
-    802056fc:	0585                	addi	a1,a1,1
-    802056fe:	fc040993          	addi	s3,s0,-64
-    80205702:	854e                	mv	a0,s3
-    80205704:	ffffb097          	auipc	ra,0xffffb
-    80205708:	0ba080e7          	jalr	186(ra) # 802007be <memmove>
+    8020570a:	4629                	li	a2,10
+    8020570c:	0585                	addi	a1,a1,1
+    8020570e:	fc040993          	addi	s3,s0,-64
+    80205712:	854e                	mv	a0,s3
+    80205714:	ffffb097          	auipc	ra,0xffffb
+    80205718:	0aa080e7          	jalr	170(ra) # 802007be <memmove>
         snstr(buffer, temp, NELEM(d->lne.name1));
-    8020570c:	4615                	li	a2,5
-    8020570e:	85ce                	mv	a1,s3
-    80205710:	8526                	mv	a0,s1
-    80205712:	ffffb097          	auipc	ra,0xffffb
-    80205716:	230080e7          	jalr	560(ra) # 80200942 <snstr>
+    8020571c:	4615                	li	a2,5
+    8020571e:	85ce                	mv	a1,s3
+    80205720:	8526                	mv	a0,s1
+    80205722:	ffffb097          	auipc	ra,0xffffb
+    80205726:	220080e7          	jalr	544(ra) # 80200942 <snstr>
         snstr(buffer, d->lne.name2, NELEM(d->lne.name2));
-    8020571a:	4619                	li	a2,6
-    8020571c:	00e90593          	addi	a1,s2,14
-    80205720:	00548513          	addi	a0,s1,5
-    80205724:	ffffb097          	auipc	ra,0xffffb
-    80205728:	21e080e7          	jalr	542(ra) # 80200942 <snstr>
+    8020572a:	4619                	li	a2,6
+    8020572c:	00e90593          	addi	a1,s2,14
+    80205730:	00548513          	addi	a0,s1,5
+    80205734:	ffffb097          	auipc	ra,0xffffb
+    80205738:	20e080e7          	jalr	526(ra) # 80200942 <snstr>
         snstr(buffer, d->lne.name3, NELEM(d->lne.name3));
-    8020572c:	4609                	li	a2,2
-    8020572e:	01c90593          	addi	a1,s2,28
-    80205732:	00b48513          	addi	a0,s1,11
-    80205736:	ffffb097          	auipc	ra,0xffffb
-    8020573a:	20c080e7          	jalr	524(ra) # 80200942 <snstr>
-    8020573e:	b77d                	j	802056ec <read_entry_name+0x94>
+    8020573c:	4609                	li	a2,2
+    8020573e:	01c90593          	addi	a1,s2,28
+    80205742:	00b48513          	addi	a0,s1,11
+    80205746:	ffffb097          	auipc	ra,0xffffb
+    8020574a:	1fc080e7          	jalr	508(ra) # 80200942 <snstr>
+    8020574e:	b77d                	j	802056fc <read_entry_name+0x94>
         for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) {
-    80205740:	4681                	li	a3,0
-    80205742:	bf85                	j	802056b2 <read_entry_name+0x5a>
-
-0000000080205744 <fat32_init>:
-{
-    80205744:	7139                	addi	sp,sp,-64
-    80205746:	fc06                	sd	ra,56(sp)
-    80205748:	f822                	sd	s0,48(sp)
-    8020574a:	f426                	sd	s1,40(sp)
-    8020574c:	f04a                	sd	s2,32(sp)
-    8020574e:	ec4e                	sd	s3,24(sp)
-    80205750:	e852                	sd	s4,16(sp)
-    80205752:	e456                	sd	s5,8(sp)
-    80205754:	0080                	addi	s0,sp,64
+    80205750:	4681                	li	a3,0
+    80205752:	bf85                	j	802056c2 <read_entry_name+0x5a>
+
+0000000080205754 <fat32_init>:
+{
+    80205754:	7139                	addi	sp,sp,-64
+    80205756:	fc06                	sd	ra,56(sp)
+    80205758:	f822                	sd	s0,48(sp)
+    8020575a:	f426                	sd	s1,40(sp)
+    8020575c:	f04a                	sd	s2,32(sp)
+    8020575e:	ec4e                	sd	s3,24(sp)
+    80205760:	e852                	sd	s4,16(sp)
+    80205762:	e456                	sd	s5,8(sp)
+    80205764:	0080                	addi	s0,sp,64
     struct buf *b = bread(0, 0);
-    80205756:	4581                	li	a1,0
-    80205758:	4501                	li	a0,0
-    8020575a:	ffffe097          	auipc	ra,0xffffe
-    8020575e:	c8c080e7          	jalr	-884(ra) # 802033e6 <bread>
-    80205762:	892a                	mv	s2,a0
+    80205766:	4581                	li	a1,0
+    80205768:	4501                	li	a0,0
+    8020576a:	ffffe097          	auipc	ra,0xffffe
+    8020576e:	c7e080e7          	jalr	-898(ra) # 802033e8 <bread>
+    80205772:	892a                	mv	s2,a0
     if (strncmp((char const*)(b->data + 82), "FAT32", 5))
-    80205764:	4615                	li	a2,5
-    80205766:	00004597          	auipc	a1,0x4
-    8020576a:	49258593          	addi	a1,a1,1170 # 80209bf8 <digits+0x878>
-    8020576e:	0aa50513          	addi	a0,a0,170
-    80205772:	ffffb097          	auipc	ra,0xffffb
-    80205776:	0c8080e7          	jalr	200(ra) # 8020083a <strncmp>
-    8020577a:	16051863          	bnez	a0,802058ea <fat32_init+0x1a6>
+    80205774:	4615                	li	a2,5
+    80205776:	00004597          	auipc	a1,0x4
+    8020577a:	48a58593          	addi	a1,a1,1162 # 80209c00 <digits+0x880>
+    8020577e:	0aa50513          	addi	a0,a0,170
+    80205782:	ffffb097          	auipc	ra,0xffffb
+    80205786:	0b8080e7          	jalr	184(ra) # 8020083a <strncmp>
+    8020578a:	16051863          	bnez	a0,802058fa <fat32_init+0x1a6>
     memmove(&fat.bpb.byts_per_sec, b->data + 11, 2);            // avoid misaligned load on k210
-    8020577e:	00019497          	auipc	s1,0x19
-    80205782:	caa48493          	addi	s1,s1,-854 # 8021e428 <fat>
-    80205786:	4609                	li	a2,2
-    80205788:	06390593          	addi	a1,s2,99
-    8020578c:	00019517          	auipc	a0,0x19
-    80205790:	cac50513          	addi	a0,a0,-852 # 8021e438 <fat+0x10>
-    80205794:	ffffb097          	auipc	ra,0xffffb
-    80205798:	02a080e7          	jalr	42(ra) # 802007be <memmove>
+    8020578e:	00019497          	auipc	s1,0x19
+    80205792:	c9a48493          	addi	s1,s1,-870 # 8021e428 <fat>
+    80205796:	4609                	li	a2,2
+    80205798:	06390593          	addi	a1,s2,99
+    8020579c:	00019517          	auipc	a0,0x19
+    802057a0:	c9c50513          	addi	a0,a0,-868 # 8021e438 <fat+0x10>
+    802057a4:	ffffb097          	auipc	ra,0xffffb
+    802057a8:	01a080e7          	jalr	26(ra) # 802007be <memmove>
     fat.bpb.sec_per_clus = *(b->data + 13);
-    8020579c:	06594683          	lbu	a3,101(s2)
-    802057a0:	00d48923          	sb	a3,18(s1)
+    802057ac:	06594683          	lbu	a3,101(s2)
+    802057b0:	00d48923          	sb	a3,18(s1)
     fat.bpb.rsvd_sec_cnt = *(uint16 *)(b->data + 14);
-    802057a4:	06695603          	lhu	a2,102(s2)
-    802057a8:	00c49a23          	sh	a2,20(s1)
+    802057b4:	06695603          	lhu	a2,102(s2)
+    802057b8:	00c49a23          	sh	a2,20(s1)
     fat.bpb.fat_cnt = *(b->data + 16);
-    802057ac:	06894703          	lbu	a4,104(s2)
-    802057b0:	00e48b23          	sb	a4,22(s1)
+    802057bc:	06894703          	lbu	a4,104(s2)
+    802057c0:	00e48b23          	sb	a4,22(s1)
     fat.bpb.hidd_sec = *(uint32 *)(b->data + 28);
-    802057b4:	07492783          	lw	a5,116(s2)
-    802057b8:	cc9c                	sw	a5,24(s1)
+    802057c4:	07492783          	lw	a5,116(s2)
+    802057c8:	cc9c                	sw	a5,24(s1)
     fat.bpb.tot_sec = *(uint32 *)(b->data + 32);
-    802057ba:	07892783          	lw	a5,120(s2)
-    802057be:	ccdc                	sw	a5,28(s1)
+    802057ca:	07892783          	lw	a5,120(s2)
+    802057ce:	ccdc                	sw	a5,28(s1)
     fat.bpb.fat_sz = *(uint32 *)(b->data + 36);
-    802057c0:	07c92583          	lw	a1,124(s2)
-    802057c4:	d08c                	sw	a1,32(s1)
+    802057d0:	07c92583          	lw	a1,124(s2)
+    802057d4:	d08c                	sw	a1,32(s1)
     fat.bpb.root_clus = *(uint32 *)(b->data + 44);
-    802057c6:	08492503          	lw	a0,132(s2)
-    802057ca:	d0c8                	sw	a0,36(s1)
+    802057d6:	08492503          	lw	a0,132(s2)
+    802057da:	d0c8                	sw	a0,36(s1)
     fat.first_data_sec = fat.bpb.rsvd_sec_cnt + fat.bpb.fat_cnt * fat.bpb.fat_sz;
-    802057cc:	02b7073b          	mulw	a4,a4,a1
-    802057d0:	9f31                	addw	a4,a4,a2
-    802057d2:	c098                	sw	a4,0(s1)
+    802057dc:	02b7073b          	mulw	a4,a4,a1
+    802057e0:	9f31                	addw	a4,a4,a2
+    802057e2:	c098                	sw	a4,0(s1)
     fat.data_sec_cnt = fat.bpb.tot_sec - fat.first_data_sec;
-    802057d4:	9f99                	subw	a5,a5,a4
-    802057d6:	c0dc                	sw	a5,4(s1)
+    802057e4:	9f99                	subw	a5,a5,a4
+    802057e6:	c0dc                	sw	a5,4(s1)
     fat.data_clus_cnt = fat.data_sec_cnt / fat.bpb.sec_per_clus;
-    802057d8:	02d7d7bb          	divuw	a5,a5,a3
-    802057dc:	c49c                	sw	a5,8(s1)
+    802057e8:	02d7d7bb          	divuw	a5,a5,a3
+    802057ec:	c49c                	sw	a5,8(s1)
     fat.byts_per_clus = fat.bpb.sec_per_clus * fat.bpb.byts_per_sec;
-    802057de:	0104d783          	lhu	a5,16(s1)
-    802057e2:	02d787bb          	mulw	a5,a5,a3
-    802057e6:	c4dc                	sw	a5,12(s1)
+    802057ee:	0104d783          	lhu	a5,16(s1)
+    802057f2:	02d787bb          	mulw	a5,a5,a3
+    802057f6:	c4dc                	sw	a5,12(s1)
     brelse(b);
-    802057e8:	854a                	mv	a0,s2
-    802057ea:	ffffe097          	auipc	ra,0xffffe
-    802057ee:	d28080e7          	jalr	-728(ra) # 80203512 <brelse>
+    802057f8:	854a                	mv	a0,s2
+    802057fa:	ffffe097          	auipc	ra,0xffffe
+    802057fe:	d1a080e7          	jalr	-742(ra) # 80203514 <brelse>
     if (BSIZE != fat.bpb.byts_per_sec) 
-    802057f2:	0104d703          	lhu	a4,16(s1)
-    802057f6:	20000793          	li	a5,512
-    802057fa:	10f71063          	bne	a4,a5,802058fa <fat32_init+0x1b6>
+    80205802:	0104d703          	lhu	a4,16(s1)
+    80205806:	20000793          	li	a5,512
+    8020580a:	10f71063          	bne	a4,a5,8020590a <fat32_init+0x1b6>
     initlock(&ecache.lock, "ecache");
-    802057fe:	00004597          	auipc	a1,0x4
-    80205802:	43258593          	addi	a1,a1,1074 # 80209c30 <digits+0x8b0>
-    80205806:	00019517          	auipc	a0,0x19
-    8020580a:	db250513          	addi	a0,a0,-590 # 8021e5b8 <ecache>
-    8020580e:	ffffb097          	auipc	ra,0xffffb
-    80205812:	e74080e7          	jalr	-396(ra) # 80200682 <initlock>
+    8020580e:	00004597          	auipc	a1,0x4
+    80205812:	42a58593          	addi	a1,a1,1066 # 80209c38 <digits+0x8b8>
+    80205816:	00019517          	auipc	a0,0x19
+    8020581a:	da250513          	addi	a0,a0,-606 # 8021e5b8 <ecache>
+    8020581e:	ffffb097          	auipc	ra,0xffffb
+    80205822:	e64080e7          	jalr	-412(ra) # 80200682 <initlock>
     memset(&root, 0, sizeof(root));
-    80205816:	00019497          	auipc	s1,0x19
-    8020581a:	c1248493          	addi	s1,s1,-1006 # 8021e428 <fat>
-    8020581e:	00019917          	auipc	s2,0x19
-    80205822:	c3290913          	addi	s2,s2,-974 # 8021e450 <root>
-    80205826:	16800613          	li	a2,360
-    8020582a:	4581                	li	a1,0
-    8020582c:	854a                	mv	a0,s2
-    8020582e:	ffffb097          	auipc	ra,0xffffb
-    80205832:	f34080e7          	jalr	-204(ra) # 80200762 <memset>
+    80205826:	00019497          	auipc	s1,0x19
+    8020582a:	c0248493          	addi	s1,s1,-1022 # 8021e428 <fat>
+    8020582e:	00019917          	auipc	s2,0x19
+    80205832:	c2290913          	addi	s2,s2,-990 # 8021e450 <root>
+    80205836:	16800613          	li	a2,360
+    8020583a:	4581                	li	a1,0
+    8020583c:	854a                	mv	a0,s2
+    8020583e:	ffffb097          	auipc	ra,0xffffb
+    80205842:	f24080e7          	jalr	-220(ra) # 80200762 <memset>
     initsleeplock(&root.lock, "entry");
-    80205836:	00004597          	auipc	a1,0x4
-    8020583a:	40258593          	addi	a1,a1,1026 # 80209c38 <digits+0x8b8>
-    8020583e:	00019517          	auipc	a0,0x19
-    80205842:	d4a50513          	addi	a0,a0,-694 # 8021e588 <root+0x138>
-    80205846:	ffffe097          	auipc	ra,0xffffe
-    8020584a:	de2080e7          	jalr	-542(ra) # 80203628 <initsleeplock>
+    80205846:	00004597          	auipc	a1,0x4
+    8020584a:	3fa58593          	addi	a1,a1,1018 # 80209c40 <digits+0x8c0>
+    8020584e:	00019517          	auipc	a0,0x19
+    80205852:	d3a50513          	addi	a0,a0,-710 # 8021e588 <root+0x138>
+    80205856:	ffffe097          	auipc	ra,0xffffe
+    8020585a:	dd4080e7          	jalr	-556(ra) # 8020362a <initsleeplock>
     root.attribute = (ATTR_DIRECTORY | ATTR_SYSTEM);
-    8020584e:	47d1                	li	a5,20
-    80205850:	12f48423          	sb	a5,296(s1)
+    8020585e:	47d1                	li	a5,20
+    80205860:	12f48423          	sb	a5,296(s1)
     root.first_clus = root.cur_clus = fat.bpb.root_clus;
-    80205854:	50dc                	lw	a5,36(s1)
-    80205856:	12f4aa23          	sw	a5,308(s1)
-    8020585a:	12f4a623          	sw	a5,300(s1)
+    80205864:	50dc                	lw	a5,36(s1)
+    80205866:	12f4aa23          	sw	a5,308(s1)
+    8020586a:	12f4a623          	sw	a5,300(s1)
     root.valid = 1;
-    8020585e:	4785                	li	a5,1
-    80205860:	12f49f23          	sh	a5,318(s1)
+    8020586e:	4785                	li	a5,1
+    80205870:	12f49f23          	sh	a5,318(s1)
     root.prev = &root;
-    80205864:	1524bc23          	sd	s2,344(s1)
+    80205874:	1524bc23          	sd	s2,344(s1)
     root.next = &root;
-    80205868:	1524b823          	sd	s2,336(s1)
+    80205878:	1524b823          	sd	s2,336(s1)
     for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) {
-    8020586c:	00019497          	auipc	s1,0x19
-    80205870:	d6448493          	addi	s1,s1,-668 # 8021e5d0 <ecache+0x18>
+    8020587c:	00019497          	auipc	s1,0x19
+    80205880:	d5448493          	addi	s1,s1,-684 # 8021e5d0 <ecache+0x18>
         de->next = root.next;
-    80205874:	00019917          	auipc	s2,0x19
-    80205878:	bb490913          	addi	s2,s2,-1100 # 8021e428 <fat>
+    80205884:	00019917          	auipc	s2,0x19
+    80205888:	ba490913          	addi	s2,s2,-1116 # 8021e428 <fat>
         de->prev = &root;
-    8020587c:	00019a97          	auipc	s5,0x19
-    80205880:	bd4a8a93          	addi	s5,s5,-1068 # 8021e450 <root>
+    8020588c:	00019a97          	auipc	s5,0x19
+    80205890:	bc4a8a93          	addi	s5,s5,-1084 # 8021e450 <root>
         initsleeplock(&de->lock, "entry");
-    80205884:	00004a17          	auipc	s4,0x4
-    80205888:	3b4a0a13          	addi	s4,s4,948 # 80209c38 <digits+0x8b8>
+    80205894:	00004a17          	auipc	s4,0x4
+    80205898:	3aca0a13          	addi	s4,s4,940 # 80209c40 <digits+0x8c0>
     for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) {
-    8020588c:	0001d997          	auipc	s3,0x1d
-    80205890:	39498993          	addi	s3,s3,916 # 80222c20 <cons>
+    8020589c:	0001d997          	auipc	s3,0x1d
+    802058a0:	38498993          	addi	s3,s3,900 # 80222c20 <cons>
         de->dev = 0;
-    80205894:	10048a23          	sb	zero,276(s1)
+    802058a4:	10048a23          	sb	zero,276(s1)
         de->valid = 0;
-    80205898:	10049b23          	sh	zero,278(s1)
+    802058a8:	10049b23          	sh	zero,278(s1)
         de->ref = 0;
-    8020589c:	1004ac23          	sw	zero,280(s1)
+    802058ac:	1004ac23          	sw	zero,280(s1)
         de->dirty = 0;
-    802058a0:	10048aa3          	sb	zero,277(s1)
+    802058b0:	10048aa3          	sb	zero,277(s1)
         de->parent = 0;
-    802058a4:	1204b023          	sd	zero,288(s1)
+    802058b4:	1204b023          	sd	zero,288(s1)
         de->next = root.next;
-    802058a8:	15093783          	ld	a5,336(s2)
-    802058ac:	12f4b423          	sd	a5,296(s1)
+    802058b8:	15093783          	ld	a5,336(s2)
+    802058bc:	12f4b423          	sd	a5,296(s1)
         de->prev = &root;
-    802058b0:	1354b823          	sd	s5,304(s1)
+    802058c0:	1354b823          	sd	s5,304(s1)
         initsleeplock(&de->lock, "entry");
-    802058b4:	85d2                	mv	a1,s4
-    802058b6:	13848513          	addi	a0,s1,312
-    802058ba:	ffffe097          	auipc	ra,0xffffe
-    802058be:	d6e080e7          	jalr	-658(ra) # 80203628 <initsleeplock>
+    802058c4:	85d2                	mv	a1,s4
+    802058c6:	13848513          	addi	a0,s1,312
+    802058ca:	ffffe097          	auipc	ra,0xffffe
+    802058ce:	d60080e7          	jalr	-672(ra) # 8020362a <initsleeplock>
         root.next->prev = de;
-    802058c2:	15093783          	ld	a5,336(s2)
-    802058c6:	1297b823          	sd	s1,304(a5)
+    802058d2:	15093783          	ld	a5,336(s2)
+    802058d6:	1297b823          	sd	s1,304(a5)
         root.next = de;
-    802058ca:	14993823          	sd	s1,336(s2)
+    802058da:	14993823          	sd	s1,336(s2)
     for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) {
-    802058ce:	16848493          	addi	s1,s1,360
-    802058d2:	fd3491e3          	bne	s1,s3,80205894 <fat32_init+0x150>
-}
-    802058d6:	4501                	li	a0,0
-    802058d8:	70e2                	ld	ra,56(sp)
-    802058da:	7442                	ld	s0,48(sp)
-    802058dc:	74a2                	ld	s1,40(sp)
-    802058de:	7902                	ld	s2,32(sp)
-    802058e0:	69e2                	ld	s3,24(sp)
-    802058e2:	6a42                	ld	s4,16(sp)
-    802058e4:	6aa2                	ld	s5,8(sp)
-    802058e6:	6121                	addi	sp,sp,64
-    802058e8:	8082                	ret
+    802058de:	16848493          	addi	s1,s1,360
+    802058e2:	fd3491e3          	bne	s1,s3,802058a4 <fat32_init+0x150>
+}
+    802058e6:	4501                	li	a0,0
+    802058e8:	70e2                	ld	ra,56(sp)
+    802058ea:	7442                	ld	s0,48(sp)
+    802058ec:	74a2                	ld	s1,40(sp)
+    802058ee:	7902                	ld	s2,32(sp)
+    802058f0:	69e2                	ld	s3,24(sp)
+    802058f2:	6a42                	ld	s4,16(sp)
+    802058f4:	6aa2                	ld	s5,8(sp)
+    802058f6:	6121                	addi	sp,sp,64
+    802058f8:	8082                	ret
         panic("not FAT32 volume");
-    802058ea:	00004517          	auipc	a0,0x4
-    802058ee:	31650513          	addi	a0,a0,790 # 80209c00 <digits+0x880>
-    802058f2:	ffffb097          	auipc	ra,0xffffb
-    802058f6:	852080e7          	jalr	-1966(ra) # 80200144 <panic>
-        panic("byts_per_sec != BSIZE");
     802058fa:	00004517          	auipc	a0,0x4
-    802058fe:	31e50513          	addi	a0,a0,798 # 80209c18 <digits+0x898>
+    802058fe:	30e50513          	addi	a0,a0,782 # 80209c08 <digits+0x888>
     80205902:	ffffb097          	auipc	ra,0xffffb
     80205906:	842080e7          	jalr	-1982(ra) # 80200144 <panic>
+        panic("byts_per_sec != BSIZE");
+    8020590a:	00004517          	auipc	a0,0x4
+    8020590e:	31650513          	addi	a0,a0,790 # 80209c20 <digits+0x8a0>
+    80205912:	ffffb097          	auipc	ra,0xffffb
+    80205916:	832080e7          	jalr	-1998(ra) # 80200144 <panic>
 
-000000008020590a <eread>:
+000000008020591a <eread>:
     if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) {
-    8020590a:	10852783          	lw	a5,264(a0)
-    8020590e:	0ed7e863          	bltu	a5,a3,802059fe <eread+0xf4>
-{
-    80205912:	711d                	addi	sp,sp,-96
-    80205914:	ec86                	sd	ra,88(sp)
-    80205916:	e8a2                	sd	s0,80(sp)
-    80205918:	e4a6                	sd	s1,72(sp)
-    8020591a:	e0ca                	sd	s2,64(sp)
-    8020591c:	fc4e                	sd	s3,56(sp)
-    8020591e:	f852                	sd	s4,48(sp)
-    80205920:	f456                	sd	s5,40(sp)
-    80205922:	f05a                	sd	s6,32(sp)
-    80205924:	ec5e                	sd	s7,24(sp)
-    80205926:	e862                	sd	s8,16(sp)
-    80205928:	e466                	sd	s9,8(sp)
-    8020592a:	e06a                	sd	s10,0(sp)
-    8020592c:	1080                	addi	s0,sp,96
-    8020592e:	8a2a                	mv	s4,a0
-    80205930:	8bae                	mv	s7,a1
-    80205932:	8ab2                	mv	s5,a2
-    80205934:	8936                	mv	s2,a3
-    80205936:	8b3a                	mv	s6,a4
+    8020591a:	10852783          	lw	a5,264(a0)
+    8020591e:	0ed7e863          	bltu	a5,a3,80205a0e <eread+0xf4>
+{
+    80205922:	711d                	addi	sp,sp,-96
+    80205924:	ec86                	sd	ra,88(sp)
+    80205926:	e8a2                	sd	s0,80(sp)
+    80205928:	e4a6                	sd	s1,72(sp)
+    8020592a:	e0ca                	sd	s2,64(sp)
+    8020592c:	fc4e                	sd	s3,56(sp)
+    8020592e:	f852                	sd	s4,48(sp)
+    80205930:	f456                	sd	s5,40(sp)
+    80205932:	f05a                	sd	s6,32(sp)
+    80205934:	ec5e                	sd	s7,24(sp)
+    80205936:	e862                	sd	s8,16(sp)
+    80205938:	e466                	sd	s9,8(sp)
+    8020593a:	e06a                	sd	s10,0(sp)
+    8020593c:	1080                	addi	s0,sp,96
+    8020593e:	8a2a                	mv	s4,a0
+    80205940:	8bae                	mv	s7,a1
+    80205942:	8ab2                	mv	s5,a2
+    80205944:	8936                	mv	s2,a3
+    80205946:	8b3a                	mv	s6,a4
     if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) {
-    80205938:	9eb9                	addw	a3,a3,a4
+    80205948:	9eb9                	addw	a3,a3,a4
         return 0;
-    8020593a:	4501                	li	a0,0
+    8020594a:	4501                	li	a0,0
     if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) {
-    8020593c:	0b26e163          	bltu	a3,s2,802059de <eread+0xd4>
-    80205940:	100a4703          	lbu	a4,256(s4)
-    80205944:	8b41                	andi	a4,a4,16
-    80205946:	ef41                	bnez	a4,802059de <eread+0xd4>
+    8020594c:	0b26e163          	bltu	a3,s2,802059ee <eread+0xd4>
+    80205950:	100a4703          	lbu	a4,256(s4)
+    80205954:	8b41                	andi	a4,a4,16
+    80205956:	ef41                	bnez	a4,802059ee <eread+0xd4>
     if (off + n > entry->file_size) {
-    80205948:	00d7f463          	bgeu	a5,a3,80205950 <eread+0x46>
+    80205958:	00d7f463          	bgeu	a5,a3,80205960 <eread+0x46>
         n = entry->file_size - off;
-    8020594c:	41278b3b          	subw	s6,a5,s2
+    8020595c:	41278b3b          	subw	s6,a5,s2
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    80205950:	10ca2703          	lw	a4,268(s4)
-    80205954:	100007b7          	lui	a5,0x10000
-    80205958:	17dd                	addi	a5,a5,-9 # ffffff7 <_entry-0x70200009>
-    8020595a:	06e7ef63          	bltu	a5,a4,802059d8 <eread+0xce>
-    8020595e:	080b0e63          	beqz	s6,802059fa <eread+0xf0>
-    80205962:	4981                	li	s3,0
+    80205960:	10ca2703          	lw	a4,268(s4)
+    80205964:	100007b7          	lui	a5,0x10000
+    80205968:	17dd                	addi	a5,a5,-9 # ffffff7 <_entry-0x70200009>
+    8020596a:	06e7ef63          	bltu	a5,a4,802059e8 <eread+0xce>
+    8020596e:	080b0e63          	beqz	s6,80205a0a <eread+0xf0>
+    80205972:	4981                	li	s3,0
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    80205964:	00019c97          	auipc	s9,0x19
-    80205968:	ac4c8c93          	addi	s9,s9,-1340 # 8021e428 <fat>
+    80205974:	00019c97          	auipc	s9,0x19
+    80205978:	ab4c8c93          	addi	s9,s9,-1356 # 8021e428 <fat>
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    8020596c:	8c3e                	mv	s8,a5
-    8020596e:	a82d                	j	802059a8 <eread+0x9e>
-    80205970:	00048d1b          	sext.w	s10,s1
+    8020597c:	8c3e                	mv	s8,a5
+    8020597e:	a82d                	j	802059b8 <eread+0x9e>
+    80205980:	00048d1b          	sext.w	s10,s1
         if (rw_clus(entry->cur_clus, 0, user_dst, dst, off % fat.byts_per_clus, m) != m) {
-    80205974:	87ea                	mv	a5,s10
-    80205976:	86d6                	mv	a3,s5
-    80205978:	865e                	mv	a2,s7
-    8020597a:	4581                	li	a1,0
-    8020597c:	10ca2503          	lw	a0,268(s4)
-    80205980:	00000097          	auipc	ra,0x0
-    80205984:	a7e080e7          	jalr	-1410(ra) # 802053fe <rw_clus>
-    80205988:	2501                	sext.w	a0,a0
-    8020598a:	04ad1863          	bne	s10,a0,802059da <eread+0xd0>
+    80205984:	87ea                	mv	a5,s10
+    80205986:	86d6                	mv	a3,s5
+    80205988:	865e                	mv	a2,s7
+    8020598a:	4581                	li	a1,0
+    8020598c:	10ca2503          	lw	a0,268(s4)
+    80205990:	00000097          	auipc	ra,0x0
+    80205994:	a7e080e7          	jalr	-1410(ra) # 8020540e <rw_clus>
+    80205998:	2501                	sext.w	a0,a0
+    8020599a:	04ad1863          	bne	s10,a0,802059ea <eread+0xd0>
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    8020598e:	013489bb          	addw	s3,s1,s3
-    80205992:	0124893b          	addw	s2,s1,s2
-    80205996:	1482                	slli	s1,s1,0x20
-    80205998:	9081                	srli	s1,s1,0x20
-    8020599a:	9aa6                	add	s5,s5,s1
-    8020599c:	10ca2783          	lw	a5,268(s4)
-    802059a0:	02fc6d63          	bltu	s8,a5,802059da <eread+0xd0>
-    802059a4:	0369fb63          	bgeu	s3,s6,802059da <eread+0xd0>
+    8020599e:	013489bb          	addw	s3,s1,s3
+    802059a2:	0124893b          	addw	s2,s1,s2
+    802059a6:	1482                	slli	s1,s1,0x20
+    802059a8:	9081                	srli	s1,s1,0x20
+    802059aa:	9aa6                	add	s5,s5,s1
+    802059ac:	10ca2783          	lw	a5,268(s4)
+    802059b0:	02fc6d63          	bltu	s8,a5,802059ea <eread+0xd0>
+    802059b4:	0369fb63          	bgeu	s3,s6,802059ea <eread+0xd0>
         reloc_clus(entry, off, 0);
-    802059a8:	4601                	li	a2,0
-    802059aa:	85ca                	mv	a1,s2
-    802059ac:	8552                	mv	a0,s4
-    802059ae:	00000097          	auipc	ra,0x0
-    802059b2:	948080e7          	jalr	-1720(ra) # 802052f6 <reloc_clus>
+    802059b8:	4601                	li	a2,0
+    802059ba:	85ca                	mv	a1,s2
+    802059bc:	8552                	mv	a0,s4
+    802059be:	00000097          	auipc	ra,0x0
+    802059c2:	948080e7          	jalr	-1720(ra) # 80205306 <reloc_clus>
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    802059b6:	00cca683          	lw	a3,12(s9)
-    802059ba:	02d9763b          	remuw	a2,s2,a3
-    802059be:	0006071b          	sext.w	a4,a2
+    802059c6:	00cca683          	lw	a3,12(s9)
+    802059ca:	02d9763b          	remuw	a2,s2,a3
+    802059ce:	0006071b          	sext.w	a4,a2
         if (n - tot < m) {
-    802059c2:	413b07bb          	subw	a5,s6,s3
+    802059d2:	413b07bb          	subw	a5,s6,s3
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    802059c6:	9e91                	subw	a3,a3,a2
-    802059c8:	84be                	mv	s1,a5
-    802059ca:	2781                	sext.w	a5,a5
-    802059cc:	0006861b          	sext.w	a2,a3
-    802059d0:	faf670e3          	bgeu	a2,a5,80205970 <eread+0x66>
-    802059d4:	84b6                	mv	s1,a3
-    802059d6:	bf69                	j	80205970 <eread+0x66>
+    802059d6:	9e91                	subw	a3,a3,a2
+    802059d8:	84be                	mv	s1,a5
+    802059da:	2781                	sext.w	a5,a5
+    802059dc:	0006861b          	sext.w	a2,a3
+    802059e0:	faf670e3          	bgeu	a2,a5,80205980 <eread+0x66>
+    802059e4:	84b6                	mv	s1,a3
+    802059e6:	bf69                	j	80205980 <eread+0x66>
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    802059d8:	4981                	li	s3,0
+    802059e8:	4981                	li	s3,0
     return tot;
-    802059da:	0009851b          	sext.w	a0,s3
-}
-    802059de:	60e6                	ld	ra,88(sp)
-    802059e0:	6446                	ld	s0,80(sp)
-    802059e2:	64a6                	ld	s1,72(sp)
-    802059e4:	6906                	ld	s2,64(sp)
-    802059e6:	79e2                	ld	s3,56(sp)
-    802059e8:	7a42                	ld	s4,48(sp)
-    802059ea:	7aa2                	ld	s5,40(sp)
-    802059ec:	7b02                	ld	s6,32(sp)
-    802059ee:	6be2                	ld	s7,24(sp)
-    802059f0:	6c42                	ld	s8,16(sp)
-    802059f2:	6ca2                	ld	s9,8(sp)
-    802059f4:	6d02                	ld	s10,0(sp)
-    802059f6:	6125                	addi	sp,sp,96
-    802059f8:	8082                	ret
+    802059ea:	0009851b          	sext.w	a0,s3
+}
+    802059ee:	60e6                	ld	ra,88(sp)
+    802059f0:	6446                	ld	s0,80(sp)
+    802059f2:	64a6                	ld	s1,72(sp)
+    802059f4:	6906                	ld	s2,64(sp)
+    802059f6:	79e2                	ld	s3,56(sp)
+    802059f8:	7a42                	ld	s4,48(sp)
+    802059fa:	7aa2                	ld	s5,40(sp)
+    802059fc:	7b02                	ld	s6,32(sp)
+    802059fe:	6be2                	ld	s7,24(sp)
+    80205a00:	6c42                	ld	s8,16(sp)
+    80205a02:	6ca2                	ld	s9,8(sp)
+    80205a04:	6d02                	ld	s10,0(sp)
+    80205a06:	6125                	addi	sp,sp,96
+    80205a08:	8082                	ret
     for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) {
-    802059fa:	89da                	mv	s3,s6
-    802059fc:	bff9                	j	802059da <eread+0xd0>
+    80205a0a:	89da                	mv	s3,s6
+    80205a0c:	bff9                	j	802059ea <eread+0xd0>
         return 0;
-    802059fe:	4501                	li	a0,0
+    80205a0e:	4501                	li	a0,0
 }
-    80205a00:	8082                	ret
+    80205a10:	8082                	ret
 
-0000000080205a02 <ewrite>:
+0000000080205a12 <ewrite>:
     if (off > entry->file_size || off + n < off || (uint64)off + n > 0xffffffff
-    80205a02:	10852783          	lw	a5,264(a0)
-    80205a06:	0ed7e463          	bltu	a5,a3,80205aee <ewrite+0xec>
-{
-    80205a0a:	711d                	addi	sp,sp,-96
-    80205a0c:	ec86                	sd	ra,88(sp)
-    80205a0e:	e8a2                	sd	s0,80(sp)
-    80205a10:	e4a6                	sd	s1,72(sp)
-    80205a12:	e0ca                	sd	s2,64(sp)
-    80205a14:	fc4e                	sd	s3,56(sp)
-    80205a16:	f852                	sd	s4,48(sp)
-    80205a18:	f456                	sd	s5,40(sp)
-    80205a1a:	f05a                	sd	s6,32(sp)
-    80205a1c:	ec5e                	sd	s7,24(sp)
-    80205a1e:	e862                	sd	s8,16(sp)
-    80205a20:	e466                	sd	s9,8(sp)
-    80205a22:	1080                	addi	s0,sp,96
-    80205a24:	8aaa                	mv	s5,a0
-    80205a26:	8bae                	mv	s7,a1
-    80205a28:	8a32                	mv	s4,a2
-    80205a2a:	8936                	mv	s2,a3
-    80205a2c:	8b3a                	mv	s6,a4
+    80205a12:	10852783          	lw	a5,264(a0)
+    80205a16:	0ed7e463          	bltu	a5,a3,80205afe <ewrite+0xec>
+{
+    80205a1a:	711d                	addi	sp,sp,-96
+    80205a1c:	ec86                	sd	ra,88(sp)
+    80205a1e:	e8a2                	sd	s0,80(sp)
+    80205a20:	e4a6                	sd	s1,72(sp)
+    80205a22:	e0ca                	sd	s2,64(sp)
+    80205a24:	fc4e                	sd	s3,56(sp)
+    80205a26:	f852                	sd	s4,48(sp)
+    80205a28:	f456                	sd	s5,40(sp)
+    80205a2a:	f05a                	sd	s6,32(sp)
+    80205a2c:	ec5e                	sd	s7,24(sp)
+    80205a2e:	e862                	sd	s8,16(sp)
+    80205a30:	e466                	sd	s9,8(sp)
+    80205a32:	1080                	addi	s0,sp,96
+    80205a34:	8aaa                	mv	s5,a0
+    80205a36:	8bae                	mv	s7,a1
+    80205a38:	8a32                	mv	s4,a2
+    80205a3a:	8936                	mv	s2,a3
+    80205a3c:	8b3a                	mv	s6,a4
     if (off > entry->file_size || off + n < off || (uint64)off + n > 0xffffffff
-    80205a2e:	00e687bb          	addw	a5,a3,a4
-    80205a32:	0cd7e063          	bltu	a5,a3,80205af2 <ewrite+0xf0>
-    80205a36:	02069793          	slli	a5,a3,0x20
-    80205a3a:	9381                	srli	a5,a5,0x20
-    80205a3c:	1702                	slli	a4,a4,0x20
-    80205a3e:	9301                	srli	a4,a4,0x20
-    80205a40:	97ba                	add	a5,a5,a4
-    80205a42:	577d                	li	a4,-1
-    80205a44:	9301                	srli	a4,a4,0x20
-    80205a46:	0af76863          	bltu	a4,a5,80205af6 <ewrite+0xf4>
+    80205a3e:	00e687bb          	addw	a5,a3,a4
+    80205a42:	0cd7e063          	bltu	a5,a3,80205b02 <ewrite+0xf0>
+    80205a46:	02069793          	slli	a5,a3,0x20
+    80205a4a:	9381                	srli	a5,a5,0x20
+    80205a4c:	1702                	slli	a4,a4,0x20
+    80205a4e:	9301                	srli	a4,a4,0x20
+    80205a50:	97ba                	add	a5,a5,a4
+    80205a52:	577d                	li	a4,-1
+    80205a54:	9301                	srli	a4,a4,0x20
+    80205a56:	0af76863          	bltu	a4,a5,80205b06 <ewrite+0xf4>
         || (entry->attribute & ATTR_READ_ONLY)) {
-    80205a4a:	10054783          	lbu	a5,256(a0)
-    80205a4e:	8b85                	andi	a5,a5,1
-    80205a50:	e7cd                	bnez	a5,80205afa <ewrite+0xf8>
+    80205a5a:	10054783          	lbu	a5,256(a0)
+    80205a5e:	8b85                	andi	a5,a5,1
+    80205a60:	e7cd                	bnez	a5,80205b0a <ewrite+0xf8>
     if (entry->first_clus == 0) {   // so file_size if 0 too, which requests off == 0
-    80205a52:	10452783          	lw	a5,260(a0)
-    80205a56:	cb89                	beqz	a5,80205a68 <ewrite+0x66>
+    80205a62:	10452783          	lw	a5,260(a0)
+    80205a66:	cb89                	beqz	a5,80205a78 <ewrite+0x66>
     for (tot = 0; tot < n; tot += m, off += m, src += m) {
-    80205a58:	080b0963          	beqz	s6,80205aea <ewrite+0xe8>
-    80205a5c:	4981                	li	s3,0
+    80205a68:	080b0963          	beqz	s6,80205afa <ewrite+0xe8>
+    80205a6c:	4981                	li	s3,0
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    80205a5e:	00019c17          	auipc	s8,0x19
-    80205a62:	9cac0c13          	addi	s8,s8,-1590 # 8021e428 <fat>
-    80205a66:	a891                	j	80205aba <ewrite+0xb8>
+    80205a6e:	00019c17          	auipc	s8,0x19
+    80205a72:	9bac0c13          	addi	s8,s8,-1606 # 8021e428 <fat>
+    80205a76:	a891                	j	80205aca <ewrite+0xb8>
         entry->cur_clus = entry->first_clus = alloc_clus(entry->dev);
-    80205a68:	11454503          	lbu	a0,276(a0)
-    80205a6c:	fffff097          	auipc	ra,0xfffff
-    80205a70:	6c8080e7          	jalr	1736(ra) # 80205134 <alloc_clus>
-    80205a74:	2501                	sext.w	a0,a0
-    80205a76:	10aaa223          	sw	a0,260(s5)
-    80205a7a:	10aaa623          	sw	a0,268(s5)
+    80205a78:	11454503          	lbu	a0,276(a0)
+    80205a7c:	fffff097          	auipc	ra,0xfffff
+    80205a80:	6c8080e7          	jalr	1736(ra) # 80205144 <alloc_clus>
+    80205a84:	2501                	sext.w	a0,a0
+    80205a86:	10aaa223          	sw	a0,260(s5)
+    80205a8a:	10aaa623          	sw	a0,268(s5)
         entry->clus_cnt = 0;
-    80205a7e:	100aa823          	sw	zero,272(s5)
+    80205a8e:	100aa823          	sw	zero,272(s5)
         entry->dirty = 1;
-    80205a82:	4785                	li	a5,1
-    80205a84:	10fa8aa3          	sb	a5,277(s5)
-    80205a88:	bfc1                	j	80205a58 <ewrite+0x56>
-    80205a8a:	00048c9b          	sext.w	s9,s1
+    80205a92:	4785                	li	a5,1
+    80205a94:	10fa8aa3          	sb	a5,277(s5)
+    80205a98:	bfc1                	j	80205a68 <ewrite+0x56>
+    80205a9a:	00048c9b          	sext.w	s9,s1
         if (rw_clus(entry->cur_clus, 1, user_src, src, off % fat.byts_per_clus, m) != m) {
-    80205a8e:	87e6                	mv	a5,s9
-    80205a90:	86d2                	mv	a3,s4
-    80205a92:	865e                	mv	a2,s7
-    80205a94:	4585                	li	a1,1
-    80205a96:	10caa503          	lw	a0,268(s5)
-    80205a9a:	00000097          	auipc	ra,0x0
-    80205a9e:	964080e7          	jalr	-1692(ra) # 802053fe <rw_clus>
-    80205aa2:	2501                	sext.w	a0,a0
-    80205aa4:	04ac9d63          	bne	s9,a0,80205afe <ewrite+0xfc>
+    80205a9e:	87e6                	mv	a5,s9
+    80205aa0:	86d2                	mv	a3,s4
+    80205aa2:	865e                	mv	a2,s7
+    80205aa4:	4585                	li	a1,1
+    80205aa6:	10caa503          	lw	a0,268(s5)
+    80205aaa:	00000097          	auipc	ra,0x0
+    80205aae:	964080e7          	jalr	-1692(ra) # 8020540e <rw_clus>
+    80205ab2:	2501                	sext.w	a0,a0
+    80205ab4:	04ac9d63          	bne	s9,a0,80205b0e <ewrite+0xfc>
     for (tot = 0; tot < n; tot += m, off += m, src += m) {
-    80205aa8:	013489bb          	addw	s3,s1,s3
-    80205aac:	0124893b          	addw	s2,s1,s2
-    80205ab0:	1482                	slli	s1,s1,0x20
-    80205ab2:	9081                	srli	s1,s1,0x20
-    80205ab4:	9a26                	add	s4,s4,s1
-    80205ab6:	0569f463          	bgeu	s3,s6,80205afe <ewrite+0xfc>
+    80205ab8:	013489bb          	addw	s3,s1,s3
+    80205abc:	0124893b          	addw	s2,s1,s2
+    80205ac0:	1482                	slli	s1,s1,0x20
+    80205ac2:	9081                	srli	s1,s1,0x20
+    80205ac4:	9a26                	add	s4,s4,s1
+    80205ac6:	0569f463          	bgeu	s3,s6,80205b0e <ewrite+0xfc>
         reloc_clus(entry, off, 1);
-    80205aba:	4605                	li	a2,1
-    80205abc:	85ca                	mv	a1,s2
-    80205abe:	8556                	mv	a0,s5
-    80205ac0:	00000097          	auipc	ra,0x0
-    80205ac4:	836080e7          	jalr	-1994(ra) # 802052f6 <reloc_clus>
+    80205aca:	4605                	li	a2,1
+    80205acc:	85ca                	mv	a1,s2
+    80205ace:	8556                	mv	a0,s5
+    80205ad0:	00000097          	auipc	ra,0x0
+    80205ad4:	836080e7          	jalr	-1994(ra) # 80205306 <reloc_clus>
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    80205ac8:	00cc2683          	lw	a3,12(s8)
-    80205acc:	02d9763b          	remuw	a2,s2,a3
-    80205ad0:	0006071b          	sext.w	a4,a2
+    80205ad8:	00cc2683          	lw	a3,12(s8)
+    80205adc:	02d9763b          	remuw	a2,s2,a3
+    80205ae0:	0006071b          	sext.w	a4,a2
         if (n - tot < m) {
-    80205ad4:	413b07bb          	subw	a5,s6,s3
+    80205ae4:	413b07bb          	subw	a5,s6,s3
         m = fat.byts_per_clus - off % fat.byts_per_clus;
-    80205ad8:	9e91                	subw	a3,a3,a2
-    80205ada:	84be                	mv	s1,a5
-    80205adc:	2781                	sext.w	a5,a5
-    80205ade:	0006861b          	sext.w	a2,a3
-    80205ae2:	faf674e3          	bgeu	a2,a5,80205a8a <ewrite+0x88>
-    80205ae6:	84b6                	mv	s1,a3
-    80205ae8:	b74d                	j	80205a8a <ewrite+0x88>
+    80205ae8:	9e91                	subw	a3,a3,a2
+    80205aea:	84be                	mv	s1,a5
+    80205aec:	2781                	sext.w	a5,a5
+    80205aee:	0006861b          	sext.w	a2,a3
+    80205af2:	faf674e3          	bgeu	a2,a5,80205a9a <ewrite+0x88>
+    80205af6:	84b6                	mv	s1,a3
+    80205af8:	b74d                	j	80205a9a <ewrite+0x88>
     for (tot = 0; tot < n; tot += m, off += m, src += m) {
-    80205aea:	89da                	mv	s3,s6
-    80205aec:	a015                	j	80205b10 <ewrite+0x10e>
+    80205afa:	89da                	mv	s3,s6
+    80205afc:	a015                	j	80205b20 <ewrite+0x10e>
         return -1;
-    80205aee:	557d                	li	a0,-1
+    80205afe:	557d                	li	a0,-1
 }
-    80205af0:	8082                	ret
+    80205b00:	8082                	ret
         return -1;
-    80205af2:	557d                	li	a0,-1
-    80205af4:	a005                	j	80205b14 <ewrite+0x112>
-    80205af6:	557d                	li	a0,-1
-    80205af8:	a831                	j	80205b14 <ewrite+0x112>
-    80205afa:	557d                	li	a0,-1
-    80205afc:	a821                	j	80205b14 <ewrite+0x112>
+    80205b02:	557d                	li	a0,-1
+    80205b04:	a005                	j	80205b24 <ewrite+0x112>
+    80205b06:	557d                	li	a0,-1
+    80205b08:	a831                	j	80205b24 <ewrite+0x112>
+    80205b0a:	557d                	li	a0,-1
+    80205b0c:	a821                	j	80205b24 <ewrite+0x112>
         if(off > entry->file_size) {
-    80205afe:	108aa783          	lw	a5,264(s5)
-    80205b02:	0127f763          	bgeu	a5,s2,80205b10 <ewrite+0x10e>
+    80205b0e:	108aa783          	lw	a5,264(s5)
+    80205b12:	0127f763          	bgeu	a5,s2,80205b20 <ewrite+0x10e>
             entry->file_size = off;
-    80205b06:	112aa423          	sw	s2,264(s5)
+    80205b16:	112aa423          	sw	s2,264(s5)
             entry->dirty = 1;
-    80205b0a:	4785                	li	a5,1
-    80205b0c:	10fa8aa3          	sb	a5,277(s5)
+    80205b1a:	4785                	li	a5,1
+    80205b1c:	10fa8aa3          	sb	a5,277(s5)
     return tot;
-    80205b10:	0009851b          	sext.w	a0,s3
-}
-    80205b14:	60e6                	ld	ra,88(sp)
-    80205b16:	6446                	ld	s0,80(sp)
-    80205b18:	64a6                	ld	s1,72(sp)
-    80205b1a:	6906                	ld	s2,64(sp)
-    80205b1c:	79e2                	ld	s3,56(sp)
-    80205b1e:	7a42                	ld	s4,48(sp)
-    80205b20:	7aa2                	ld	s5,40(sp)
-    80205b22:	7b02                	ld	s6,32(sp)
-    80205b24:	6be2                	ld	s7,24(sp)
-    80205b26:	6c42                	ld	s8,16(sp)
-    80205b28:	6ca2                	ld	s9,8(sp)
-    80205b2a:	6125                	addi	sp,sp,96
-    80205b2c:	8082                	ret
-
-0000000080205b2e <formatname>:
-{
-    80205b2e:	7179                	addi	sp,sp,-48
-    80205b30:	f406                	sd	ra,40(sp)
-    80205b32:	f022                	sd	s0,32(sp)
-    80205b34:	ec26                	sd	s1,24(sp)
-    80205b36:	e84a                	sd	s2,16(sp)
-    80205b38:	e44e                	sd	s3,8(sp)
-    80205b3a:	e052                	sd	s4,0(sp)
-    80205b3c:	1800                	addi	s0,sp,48
-    80205b3e:	84aa                	mv	s1,a0
+    80205b20:	0009851b          	sext.w	a0,s3
+}
+    80205b24:	60e6                	ld	ra,88(sp)
+    80205b26:	6446                	ld	s0,80(sp)
+    80205b28:	64a6                	ld	s1,72(sp)
+    80205b2a:	6906                	ld	s2,64(sp)
+    80205b2c:	79e2                	ld	s3,56(sp)
+    80205b2e:	7a42                	ld	s4,48(sp)
+    80205b30:	7aa2                	ld	s5,40(sp)
+    80205b32:	7b02                	ld	s6,32(sp)
+    80205b34:	6be2                	ld	s7,24(sp)
+    80205b36:	6c42                	ld	s8,16(sp)
+    80205b38:	6ca2                	ld	s9,8(sp)
+    80205b3a:	6125                	addi	sp,sp,96
+    80205b3c:	8082                	ret
+
+0000000080205b3e <formatname>:
+{
+    80205b3e:	7179                	addi	sp,sp,-48
+    80205b40:	f406                	sd	ra,40(sp)
+    80205b42:	f022                	sd	s0,32(sp)
+    80205b44:	ec26                	sd	s1,24(sp)
+    80205b46:	e84a                	sd	s2,16(sp)
+    80205b48:	e44e                	sd	s3,8(sp)
+    80205b4a:	e052                	sd	s4,0(sp)
+    80205b4c:	1800                	addi	s0,sp,48
+    80205b4e:	84aa                	mv	s1,a0
     while (*name == ' ' || *name == '.') { name++; }
-    80205b40:	02000793          	li	a5,32
-    80205b44:	02e00713          	li	a4,46
-    80205b48:	a011                	j	80205b4c <formatname+0x1e>
-    80205b4a:	0485                	addi	s1,s1,1
-    80205b4c:	0004c583          	lbu	a1,0(s1)
-    80205b50:	fef58de3          	beq	a1,a5,80205b4a <formatname+0x1c>
-    80205b54:	fee58be3          	beq	a1,a4,80205b4a <formatname+0x1c>
+    80205b50:	02000793          	li	a5,32
+    80205b54:	02e00713          	li	a4,46
+    80205b58:	a011                	j	80205b5c <formatname+0x1e>
+    80205b5a:	0485                	addi	s1,s1,1
+    80205b5c:	0004c583          	lbu	a1,0(s1)
+    80205b60:	fef58de3          	beq	a1,a5,80205b5a <formatname+0x1c>
+    80205b64:	fee58be3          	beq	a1,a4,80205b5a <formatname+0x1c>
     for (p = name; *p; p++) {
-    80205b58:	c1b9                	beqz	a1,80205b9e <formatname+0x70>
-    80205b5a:	8926                	mv	s2,s1
+    80205b68:	c1b9                	beqz	a1,80205bae <formatname+0x70>
+    80205b6a:	8926                	mv	s2,s1
         if (c < 0x20 || strchr(illegal, c)) {
-    80205b5c:	49fd                	li	s3,31
-    80205b5e:	00006a17          	auipc	s4,0x6
-    80205b62:	d4aa0a13          	addi	s4,s4,-694 # 8020b8a8 <illegal.1>
-    80205b66:	02b9fe63          	bgeu	s3,a1,80205ba2 <formatname+0x74>
-    80205b6a:	8552                	mv	a0,s4
-    80205b6c:	ffffb097          	auipc	ra,0xffffb
-    80205b70:	e54080e7          	jalr	-428(ra) # 802009c0 <strchr>
-    80205b74:	e121                	bnez	a0,80205bb4 <formatname+0x86>
+    80205b6c:	49fd                	li	s3,31
+    80205b6e:	00006a17          	auipc	s4,0x6
+    80205b72:	d62a0a13          	addi	s4,s4,-670 # 8020b8d0 <illegal.1>
+    80205b76:	02b9fe63          	bgeu	s3,a1,80205bb2 <formatname+0x74>
+    80205b7a:	8552                	mv	a0,s4
+    80205b7c:	ffffb097          	auipc	ra,0xffffb
+    80205b80:	e44080e7          	jalr	-444(ra) # 802009c0 <strchr>
+    80205b84:	e121                	bnez	a0,80205bc4 <formatname+0x86>
     for (p = name; *p; p++) {
-    80205b76:	0905                	addi	s2,s2,1
-    80205b78:	00094583          	lbu	a1,0(s2)
-    80205b7c:	f5ed                	bnez	a1,80205b66 <formatname+0x38>
+    80205b86:	0905                	addi	s2,s2,1
+    80205b88:	00094583          	lbu	a1,0(s2)
+    80205b8c:	f5ed                	bnez	a1,80205b76 <formatname+0x38>
         if (*p != ' ') {
-    80205b7e:	02000693          	li	a3,32
-    80205b82:	874a                	mv	a4,s2
+    80205b8e:	02000693          	li	a3,32
+    80205b92:	874a                	mv	a4,s2
     while (p-- > name) {
-    80205b84:	0124fb63          	bgeu	s1,s2,80205b9a <formatname+0x6c>
+    80205b94:	0124fb63          	bgeu	s1,s2,80205baa <formatname+0x6c>
         if (*p != ' ') {
-    80205b88:	197d                	addi	s2,s2,-1
-    80205b8a:	00094783          	lbu	a5,0(s2)
-    80205b8e:	fed78ae3          	beq	a5,a3,80205b82 <formatname+0x54>
+    80205b98:	197d                	addi	s2,s2,-1
+    80205b9a:	00094783          	lbu	a5,0(s2)
+    80205b9e:	fed78ae3          	beq	a5,a3,80205b92 <formatname+0x54>
             p[1] = '\0';
-    80205b92:	00070023          	sb	zero,0(a4)
+    80205ba2:	00070023          	sb	zero,0(a4)
             break;
-    80205b96:	8526                	mv	a0,s1
-    80205b98:	a031                	j	80205ba4 <formatname+0x76>
-    80205b9a:	8526                	mv	a0,s1
-    80205b9c:	a021                	j	80205ba4 <formatname+0x76>
+    80205ba6:	8526                	mv	a0,s1
+    80205ba8:	a031                	j	80205bb4 <formatname+0x76>
+    80205baa:	8526                	mv	a0,s1
+    80205bac:	a021                	j	80205bb4 <formatname+0x76>
     for (p = name; *p; p++) {
-    80205b9e:	8526                	mv	a0,s1
-    80205ba0:	a011                	j	80205ba4 <formatname+0x76>
+    80205bae:	8526                	mv	a0,s1
+    80205bb0:	a011                	j	80205bb4 <formatname+0x76>
             return 0;
-    80205ba2:	4501                	li	a0,0
-}
-    80205ba4:	70a2                	ld	ra,40(sp)
-    80205ba6:	7402                	ld	s0,32(sp)
-    80205ba8:	64e2                	ld	s1,24(sp)
-    80205baa:	6942                	ld	s2,16(sp)
-    80205bac:	69a2                	ld	s3,8(sp)
-    80205bae:	6a02                	ld	s4,0(sp)
-    80205bb0:	6145                	addi	sp,sp,48
-    80205bb2:	8082                	ret
+    80205bb2:	4501                	li	a0,0
+}
+    80205bb4:	70a2                	ld	ra,40(sp)
+    80205bb6:	7402                	ld	s0,32(sp)
+    80205bb8:	64e2                	ld	s1,24(sp)
+    80205bba:	6942                	ld	s2,16(sp)
+    80205bbc:	69a2                	ld	s3,8(sp)
+    80205bbe:	6a02                	ld	s4,0(sp)
+    80205bc0:	6145                	addi	sp,sp,48
+    80205bc2:	8082                	ret
             return 0;
-    80205bb4:	4501                	li	a0,0
-    80205bb6:	b7fd                	j	80205ba4 <formatname+0x76>
+    80205bc4:	4501                	li	a0,0
+    80205bc6:	b7fd                	j	80205bb4 <formatname+0x76>
 
-0000000080205bb8 <cal_checksum>:
+0000000080205bc8 <cal_checksum>:
 {
-    80205bb8:	1141                	addi	sp,sp,-16
-    80205bba:	e422                	sd	s0,8(sp)
-    80205bbc:	0800                	addi	s0,sp,16
-    80205bbe:	87aa                	mv	a5,a0
+    80205bc8:	1141                	addi	sp,sp,-16
+    80205bca:	e422                	sd	s0,8(sp)
+    80205bcc:	0800                	addi	s0,sp,16
+    80205bce:	87aa                	mv	a5,a0
     for (int i = CHAR_SHORT_NAME; i != 0; i--) {
-    80205bc0:	00b50613          	addi	a2,a0,11
+    80205bd0:	00b50613          	addi	a2,a0,11
     uint8 sum = 0;
-    80205bc4:	4501                	li	a0,0
+    80205bd4:	4501                	li	a0,0
         sum = ((sum & 1) ? 0x80 : 0) + (sum >> 1) + *shortname++;
-    80205bc6:	0075171b          	slliw	a4,a0,0x7
-    80205bca:	0785                	addi	a5,a5,1
-    80205bcc:	0015551b          	srliw	a0,a0,0x1
-    80205bd0:	fff7c683          	lbu	a3,-1(a5)
-    80205bd4:	9d35                	addw	a0,a0,a3
-    80205bd6:	953a                	add	a0,a0,a4
-    80205bd8:	0ff57513          	zext.b	a0,a0
+    80205bd6:	0075171b          	slliw	a4,a0,0x7
+    80205bda:	0785                	addi	a5,a5,1
+    80205bdc:	0015551b          	srliw	a0,a0,0x1
+    80205be0:	fff7c683          	lbu	a3,-1(a5)
+    80205be4:	9d35                	addw	a0,a0,a3
+    80205be6:	953a                	add	a0,a0,a4
+    80205be8:	0ff57513          	zext.b	a0,a0
     for (int i = CHAR_SHORT_NAME; i != 0; i--) {
-    80205bdc:	fef615e3          	bne	a2,a5,80205bc6 <cal_checksum+0xe>
-}
-    80205be0:	6422                	ld	s0,8(sp)
-    80205be2:	0141                	addi	sp,sp,16
-    80205be4:	8082                	ret
-
-0000000080205be6 <emake>:
-{
-    80205be6:	7131                	addi	sp,sp,-192
-    80205be8:	fd06                	sd	ra,184(sp)
-    80205bea:	f922                	sd	s0,176(sp)
-    80205bec:	f526                	sd	s1,168(sp)
-    80205bee:	f14a                	sd	s2,160(sp)
-    80205bf0:	ed4e                	sd	s3,152(sp)
-    80205bf2:	e952                	sd	s4,144(sp)
-    80205bf4:	e556                	sd	s5,136(sp)
-    80205bf6:	e15a                	sd	s6,128(sp)
-    80205bf8:	fcde                	sd	s7,120(sp)
-    80205bfa:	f8e2                	sd	s8,112(sp)
-    80205bfc:	f4e6                	sd	s9,104(sp)
-    80205bfe:	f0ea                	sd	s10,96(sp)
-    80205c00:	ecee                	sd	s11,88(sp)
-    80205c02:	0180                	addi	s0,sp,192
+    80205bec:	fef615e3          	bne	a2,a5,80205bd6 <cal_checksum+0xe>
+}
+    80205bf0:	6422                	ld	s0,8(sp)
+    80205bf2:	0141                	addi	sp,sp,16
+    80205bf4:	8082                	ret
+
+0000000080205bf6 <emake>:
+{
+    80205bf6:	7131                	addi	sp,sp,-192
+    80205bf8:	fd06                	sd	ra,184(sp)
+    80205bfa:	f922                	sd	s0,176(sp)
+    80205bfc:	f526                	sd	s1,168(sp)
+    80205bfe:	f14a                	sd	s2,160(sp)
+    80205c00:	ed4e                	sd	s3,152(sp)
+    80205c02:	e952                	sd	s4,144(sp)
+    80205c04:	e556                	sd	s5,136(sp)
+    80205c06:	e15a                	sd	s6,128(sp)
+    80205c08:	fcde                	sd	s7,120(sp)
+    80205c0a:	f8e2                	sd	s8,112(sp)
+    80205c0c:	f4e6                	sd	s9,104(sp)
+    80205c0e:	f0ea                	sd	s10,96(sp)
+    80205c10:	ecee                	sd	s11,88(sp)
+    80205c12:	0180                	addi	s0,sp,192
     if (!(dp->attribute & ATTR_DIRECTORY))
-    80205c04:	10054783          	lbu	a5,256(a0)
-    80205c08:	8bc1                	andi	a5,a5,16
-    80205c0a:	c3d5                	beqz	a5,80205cae <emake+0xc8>
-    80205c0c:	8b2a                	mv	s6,a0
-    80205c0e:	8d2e                	mv	s10,a1
-    80205c10:	8cb2                	mv	s9,a2
+    80205c14:	10054783          	lbu	a5,256(a0)
+    80205c18:	8bc1                	andi	a5,a5,16
+    80205c1a:	c3d5                	beqz	a5,80205cbe <emake+0xc8>
+    80205c1c:	8b2a                	mv	s6,a0
+    80205c1e:	8d2e                	mv	s10,a1
+    80205c20:	8cb2                	mv	s9,a2
     if (off % sizeof(union dentry))
-    80205c12:	01f67793          	andi	a5,a2,31
-    80205c16:	e7c5                	bnez	a5,80205cbe <emake+0xd8>
+    80205c22:	01f67793          	andi	a5,a2,31
+    80205c26:	e7c5                	bnez	a5,80205cce <emake+0xd8>
     memset(&de, 0, sizeof(de));
-    80205c18:	02000613          	li	a2,32
-    80205c1c:	4581                	li	a1,0
-    80205c1e:	f7040513          	addi	a0,s0,-144
-    80205c22:	ffffb097          	auipc	ra,0xffffb
-    80205c26:	b40080e7          	jalr	-1216(ra) # 80200762 <memset>
+    80205c28:	02000613          	li	a2,32
+    80205c2c:	4581                	li	a1,0
+    80205c2e:	f7040513          	addi	a0,s0,-144
+    80205c32:	ffffb097          	auipc	ra,0xffffb
+    80205c36:	b30080e7          	jalr	-1232(ra) # 80200762 <memset>
     if (off <= 32) {
-    80205c2a:	02000793          	li	a5,32
-    80205c2e:	0b97ec63          	bltu	a5,s9,80205ce6 <emake+0x100>
+    80205c3a:	02000793          	li	a5,32
+    80205c3e:	0b97ec63          	bltu	a5,s9,80205cf6 <emake+0x100>
         if (off == 0) {
-    80205c32:	080c9e63          	bnez	s9,80205cce <emake+0xe8>
+    80205c42:	080c9e63          	bnez	s9,80205cde <emake+0xe8>
             strncpy(de.sne.name, ".          ", sizeof(de.sne.name));
-    80205c36:	462d                	li	a2,11
-    80205c38:	00004597          	auipc	a1,0x4
-    80205c3c:	03058593          	addi	a1,a1,48 # 80209c68 <digits+0x8e8>
-    80205c40:	f7040513          	addi	a0,s0,-144
-    80205c44:	ffffb097          	auipc	ra,0xffffb
-    80205c48:	c32080e7          	jalr	-974(ra) # 80200876 <strncpy>
+    80205c46:	462d                	li	a2,11
+    80205c48:	00004597          	auipc	a1,0x4
+    80205c4c:	02858593          	addi	a1,a1,40 # 80209c70 <digits+0x8f0>
+    80205c50:	f7040513          	addi	a0,s0,-144
+    80205c54:	ffffb097          	auipc	ra,0xffffb
+    80205c58:	c22080e7          	jalr	-990(ra) # 80200876 <strncpy>
         de.sne.attr = ATTR_DIRECTORY;
-    80205c4c:	47c1                	li	a5,16
-    80205c4e:	f6f40da3          	sb	a5,-133(s0)
+    80205c5c:	47c1                	li	a5,16
+    80205c5e:	f6f40da3          	sb	a5,-133(s0)
         de.sne.fst_clus_hi = (uint16)(ep->first_clus >> 16);        // first clus high 16 bits
-    80205c52:	104d2783          	lw	a5,260(s10) # fffffffffffff104 <ebss_clear+0xffffffff7fdd9104>
-    80205c56:	0107d71b          	srliw	a4,a5,0x10
-    80205c5a:	f8e41223          	sh	a4,-124(s0)
+    80205c62:	104d2783          	lw	a5,260(s10) # fffffffffffff104 <ebss_clear+0xffffffff7fdd9104>
+    80205c66:	0107d71b          	srliw	a4,a5,0x10
+    80205c6a:	f8e41223          	sh	a4,-124(s0)
         de.sne.fst_clus_lo = (uint16)(ep->first_clus & 0xffff);       // low 16 bits
-    80205c5e:	f8f41523          	sh	a5,-118(s0)
+    80205c6e:	f8f41523          	sh	a5,-118(s0)
         de.sne.file_size = 0;                                       // filesize is updated in eupdate()
-    80205c62:	f8042623          	sw	zero,-116(s0)
+    80205c72:	f8042623          	sw	zero,-116(s0)
         off = reloc_clus(dp, off, 1);
-    80205c66:	4605                	li	a2,1
-    80205c68:	85e6                	mv	a1,s9
-    80205c6a:	855a                	mv	a0,s6
-    80205c6c:	fffff097          	auipc	ra,0xfffff
-    80205c70:	68a080e7          	jalr	1674(ra) # 802052f6 <reloc_clus>
+    80205c76:	4605                	li	a2,1
+    80205c78:	85e6                	mv	a1,s9
+    80205c7a:	855a                	mv	a0,s6
+    80205c7c:	fffff097          	auipc	ra,0xfffff
+    80205c80:	68a080e7          	jalr	1674(ra) # 80205306 <reloc_clus>
         rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off, sizeof(de));
-    80205c74:	02000793          	li	a5,32
-    80205c78:	0005071b          	sext.w	a4,a0
-    80205c7c:	f7040693          	addi	a3,s0,-144
-    80205c80:	4601                	li	a2,0
-    80205c82:	4585                	li	a1,1
-    80205c84:	10cb2503          	lw	a0,268(s6)
-    80205c88:	fffff097          	auipc	ra,0xfffff
-    80205c8c:	776080e7          	jalr	1910(ra) # 802053fe <rw_clus>
-}
-    80205c90:	70ea                	ld	ra,184(sp)
-    80205c92:	744a                	ld	s0,176(sp)
-    80205c94:	74aa                	ld	s1,168(sp)
-    80205c96:	790a                	ld	s2,160(sp)
-    80205c98:	69ea                	ld	s3,152(sp)
-    80205c9a:	6a4a                	ld	s4,144(sp)
-    80205c9c:	6aaa                	ld	s5,136(sp)
-    80205c9e:	6b0a                	ld	s6,128(sp)
-    80205ca0:	7be6                	ld	s7,120(sp)
-    80205ca2:	7c46                	ld	s8,112(sp)
-    80205ca4:	7ca6                	ld	s9,104(sp)
-    80205ca6:	7d06                	ld	s10,96(sp)
-    80205ca8:	6de6                	ld	s11,88(sp)
-    80205caa:	6129                	addi	sp,sp,192
-    80205cac:	8082                	ret
+    80205c84:	02000793          	li	a5,32
+    80205c88:	0005071b          	sext.w	a4,a0
+    80205c8c:	f7040693          	addi	a3,s0,-144
+    80205c90:	4601                	li	a2,0
+    80205c92:	4585                	li	a1,1
+    80205c94:	10cb2503          	lw	a0,268(s6)
+    80205c98:	fffff097          	auipc	ra,0xfffff
+    80205c9c:	776080e7          	jalr	1910(ra) # 8020540e <rw_clus>
+}
+    80205ca0:	70ea                	ld	ra,184(sp)
+    80205ca2:	744a                	ld	s0,176(sp)
+    80205ca4:	74aa                	ld	s1,168(sp)
+    80205ca6:	790a                	ld	s2,160(sp)
+    80205ca8:	69ea                	ld	s3,152(sp)
+    80205caa:	6a4a                	ld	s4,144(sp)
+    80205cac:	6aaa                	ld	s5,136(sp)
+    80205cae:	6b0a                	ld	s6,128(sp)
+    80205cb0:	7be6                	ld	s7,120(sp)
+    80205cb2:	7c46                	ld	s8,112(sp)
+    80205cb4:	7ca6                	ld	s9,104(sp)
+    80205cb6:	7d06                	ld	s10,96(sp)
+    80205cb8:	6de6                	ld	s11,88(sp)
+    80205cba:	6129                	addi	sp,sp,192
+    80205cbc:	8082                	ret
         panic("emake: not dir");
-    80205cae:	00004517          	auipc	a0,0x4
-    80205cb2:	f9250513          	addi	a0,a0,-110 # 80209c40 <digits+0x8c0>
-    80205cb6:	ffffa097          	auipc	ra,0xffffa
-    80205cba:	48e080e7          	jalr	1166(ra) # 80200144 <panic>
-        panic("emake: not aligned");
     80205cbe:	00004517          	auipc	a0,0x4
-    80205cc2:	f9250513          	addi	a0,a0,-110 # 80209c50 <digits+0x8d0>
+    80205cc2:	f8a50513          	addi	a0,a0,-118 # 80209c48 <digits+0x8c8>
     80205cc6:	ffffa097          	auipc	ra,0xffffa
     80205cca:	47e080e7          	jalr	1150(ra) # 80200144 <panic>
+        panic("emake: not aligned");
+    80205cce:	00004517          	auipc	a0,0x4
+    80205cd2:	f8a50513          	addi	a0,a0,-118 # 80209c58 <digits+0x8d8>
+    80205cd6:	ffffa097          	auipc	ra,0xffffa
+    80205cda:	46e080e7          	jalr	1134(ra) # 80200144 <panic>
             strncpy(de.sne.name, "..         ", sizeof(de.sne.name));
-    80205cce:	462d                	li	a2,11
-    80205cd0:	00004597          	auipc	a1,0x4
-    80205cd4:	fa858593          	addi	a1,a1,-88 # 80209c78 <digits+0x8f8>
-    80205cd8:	f7040513          	addi	a0,s0,-144
-    80205cdc:	ffffb097          	auipc	ra,0xffffb
-    80205ce0:	b9a080e7          	jalr	-1126(ra) # 80200876 <strncpy>
-    80205ce4:	b7a5                	j	80205c4c <emake+0x66>
+    80205cde:	462d                	li	a2,11
+    80205ce0:	00004597          	auipc	a1,0x4
+    80205ce4:	fa058593          	addi	a1,a1,-96 # 80209c80 <digits+0x900>
+    80205ce8:	f7040513          	addi	a0,s0,-144
+    80205cec:	ffffb097          	auipc	ra,0xffffb
+    80205cf0:	b8a080e7          	jalr	-1142(ra) # 80200876 <strncpy>
+    80205cf4:	b7a5                	j	80205c5c <emake+0x66>
         int entcnt = (strlen(ep->filename) + CHAR_LONG_NAME - 1) / CHAR_LONG_NAME;   // count of l-n-entries, rounds up
-    80205ce6:	896a                	mv	s2,s10
-    80205ce8:	856a                	mv	a0,s10
-    80205cea:	ffffb097          	auipc	ra,0xffffb
-    80205cee:	bfc080e7          	jalr	-1028(ra) # 802008e6 <strlen>
-    80205cf2:	f4a43423          	sd	a0,-184(s0)
-    80205cf6:	00c5071b          	addiw	a4,a0,12
-    80205cfa:	47b5                	li	a5,13
-    80205cfc:	02f747bb          	divw	a5,a4,a5
-    80205d00:	f4f42c23          	sw	a5,-168(s0)
-    80205d04:	00078d9b          	sext.w	s11,a5
+    80205cf6:	896a                	mv	s2,s10
+    80205cf8:	856a                	mv	a0,s10
+    80205cfa:	ffffb097          	auipc	ra,0xffffb
+    80205cfe:	bec080e7          	jalr	-1044(ra) # 802008e6 <strlen>
+    80205d02:	f4a43423          	sd	a0,-184(s0)
+    80205d06:	00c5071b          	addiw	a4,a0,12
+    80205d0a:	47b5                	li	a5,13
+    80205d0c:	02f747bb          	divw	a5,a4,a5
+    80205d10:	f4f42c23          	sw	a5,-168(s0)
+    80205d14:	00078d9b          	sext.w	s11,a5
         memset(shortname, 0, sizeof(shortname));
-    80205d08:	4631                	li	a2,12
-    80205d0a:	4581                	li	a1,0
-    80205d0c:	f6040513          	addi	a0,s0,-160
-    80205d10:	ffffb097          	auipc	ra,0xffffb
-    80205d14:	a52080e7          	jalr	-1454(ra) # 80200762 <memset>
+    80205d18:	4631                	li	a2,12
+    80205d1a:	4581                	li	a1,0
+    80205d1c:	f6040513          	addi	a0,s0,-160
+    80205d20:	ffffb097          	auipc	ra,0xffffb
+    80205d24:	a42080e7          	jalr	-1470(ra) # 80200762 <memset>
     for (int j = strlen(name) - 1; j >= 0; j--) {
-    80205d18:	856a                	mv	a0,s10
-    80205d1a:	ffffb097          	auipc	ra,0xffffb
-    80205d1e:	bcc080e7          	jalr	-1076(ra) # 802008e6 <strlen>
-    80205d22:	fff5079b          	addiw	a5,a0,-1
-    80205d26:	0207cf63          	bltz	a5,80205d64 <emake+0x17e>
-    80205d2a:	97ea                	add	a5,a5,s10
-    80205d2c:	ffed0693          	addi	a3,s10,-2
-    80205d30:	96aa                	add	a3,a3,a0
-    80205d32:	fff5071b          	addiw	a4,a0,-1
-    80205d36:	1702                	slli	a4,a4,0x20
-    80205d38:	9301                	srli	a4,a4,0x20
-    80205d3a:	8e99                	sub	a3,a3,a4
+    80205d28:	856a                	mv	a0,s10
+    80205d2a:	ffffb097          	auipc	ra,0xffffb
+    80205d2e:	bbc080e7          	jalr	-1092(ra) # 802008e6 <strlen>
+    80205d32:	fff5079b          	addiw	a5,a0,-1
+    80205d36:	0207cf63          	bltz	a5,80205d74 <emake+0x17e>
+    80205d3a:	97ea                	add	a5,a5,s10
+    80205d3c:	ffed0693          	addi	a3,s10,-2
+    80205d40:	96aa                	add	a3,a3,a0
+    80205d42:	fff5071b          	addiw	a4,a0,-1
+    80205d46:	1702                	slli	a4,a4,0x20
+    80205d48:	9301                	srli	a4,a4,0x20
+    80205d4a:	8e99                	sub	a3,a3,a4
         if (name[j] == '.') {
-    80205d3c:	02e00613          	li	a2,46
-    80205d40:	89be                	mv	s3,a5
-    80205d42:	0007c703          	lbu	a4,0(a5)
-    80205d46:	00c70663          	beq	a4,a2,80205d52 <emake+0x16c>
+    80205d4c:	02e00613          	li	a2,46
+    80205d50:	89be                	mv	s3,a5
+    80205d52:	0007c703          	lbu	a4,0(a5)
+    80205d56:	00c70663          	beq	a4,a2,80205d62 <emake+0x16c>
     for (int j = strlen(name) - 1; j >= 0; j--) {
-    80205d4a:	17fd                	addi	a5,a5,-1
-    80205d4c:	fed79ae3          	bne	a5,a3,80205d40 <emake+0x15a>
+    80205d5a:	17fd                	addi	a5,a5,-1
+    80205d5c:	fed79ae3          	bne	a5,a3,80205d50 <emake+0x15a>
     char c, *p = name;
-    80205d50:	89ea                	mv	s3,s10
+    80205d60:	89ea                	mv	s3,s10
         shortname[i++] = c;
-    80205d52:	4481                	li	s1,0
+    80205d62:	4481                	li	s1,0
         if (i == 8 && p) {
-    80205d54:	4aa1                	li	s5,8
+    80205d64:	4aa1                	li	s5,8
     while (i < CHAR_SHORT_NAME && (c = *name++)) {
-    80205d56:	4ba9                	li	s7,10
+    80205d66:	4ba9                	li	s7,10
         if (c >= 'a' && c <= 'z') {
-    80205d58:	4c65                	li	s8,25
+    80205d68:	4c65                	li	s8,25
                 memset(shortname + i, ' ', 8 - i);
-    80205d5a:	f6040793          	addi	a5,s0,-160
-    80205d5e:	f4f43823          	sd	a5,-176(s0)
-    80205d62:	a8d9                	j	80205e38 <emake+0x252>
+    80205d6a:	f6040793          	addi	a5,s0,-160
+    80205d6e:	f4f43823          	sd	a5,-176(s0)
+    80205d72:	a8d9                	j	80205e48 <emake+0x252>
     char c, *p = name;
-    80205d64:	89ea                	mv	s3,s10
-    80205d66:	b7f5                	j	80205d52 <emake+0x16c>
+    80205d74:	89ea                	mv	s3,s10
+    80205d76:	b7f5                	j	80205d62 <emake+0x16c>
         if (i == 8 && p) {
-    80205d68:	22098b63          	beqz	s3,80205f9e <emake+0x3b8>
+    80205d78:	22098b63          	beqz	s3,80205fae <emake+0x3b8>
             if (p + 1 < name) { break; }            // no '.'
-    80205d6c:	0985                	addi	s3,s3,1
-    80205d6e:	0949fc63          	bgeu	s3,s4,80205e06 <emake+0x220>
-    80205d72:	f6040793          	addi	a5,s0,-160
-    80205d76:	97a6                	add	a5,a5,s1
+    80205d7c:	0985                	addi	s3,s3,1
+    80205d7e:	0949fc63          	bgeu	s3,s4,80205e16 <emake+0x220>
+    80205d82:	f6040793          	addi	a5,s0,-160
+    80205d86:	97a6                	add	a5,a5,s1
         shortname[i++] = ' ';
-    80205d78:	02000693          	li	a3,32
+    80205d88:	02000693          	li	a3,32
     while (i < CHAR_SHORT_NAME) {
-    80205d7c:	4729                	li	a4,10
+    80205d8c:	4729                	li	a4,10
         shortname[i++] = ' ';
-    80205d7e:	2485                	addiw	s1,s1,1
-    80205d80:	00d78023          	sb	a3,0(a5)
+    80205d8e:	2485                	addiw	s1,s1,1
+    80205d90:	00d78023          	sb	a3,0(a5)
     while (i < CHAR_SHORT_NAME) {
-    80205d84:	0785                	addi	a5,a5,1
-    80205d86:	fe975ce3          	bge	a4,s1,80205d7e <emake+0x198>
+    80205d94:	0785                	addi	a5,a5,1
+    80205d96:	fe975ce3          	bge	a4,s1,80205d8e <emake+0x198>
         de.lne.checksum = cal_checksum((uchar *)shortname);
-    80205d8a:	f6040513          	addi	a0,s0,-160
-    80205d8e:	00000097          	auipc	ra,0x0
-    80205d92:	e2a080e7          	jalr	-470(ra) # 80205bb8 <cal_checksum>
-    80205d96:	f6a40ea3          	sb	a0,-131(s0)
+    80205d9a:	f6040513          	addi	a0,s0,-160
+    80205d9e:	00000097          	auipc	ra,0x0
+    80205da2:	e2a080e7          	jalr	-470(ra) # 80205bc8 <cal_checksum>
+    80205da6:	f6a40ea3          	sb	a0,-131(s0)
         de.lne.attr = ATTR_LONG_NAME;
-    80205d9a:	47bd                	li	a5,15
-    80205d9c:	f6f40da3          	sb	a5,-133(s0)
+    80205daa:	47bd                	li	a5,15
+    80205dac:	f6f40da3          	sb	a5,-133(s0)
         for (int i = entcnt; i > 0; i--) {
-    80205da0:	f4843783          	ld	a5,-184(s0)
-    80205da4:	14f05c63          	blez	a5,80205efc <emake+0x316>
-    80205da8:	f5842783          	lw	a5,-168(s0)
-    80205dac:	37fd                	addiw	a5,a5,-1
-    80205dae:	f4f42223          	sw	a5,-188(s0)
-    80205db2:	00179b9b          	slliw	s7,a5,0x1
-    80205db6:	00fb8bbb          	addw	s7,s7,a5
-    80205dba:	002b9b9b          	slliw	s7,s7,0x2
-    80205dbe:	00fb8bbb          	addw	s7,s7,a5
-    80205dc2:	9bea                	add	s7,s7,s10
-    80205dc4:	8aee                	mv	s5,s11
-    80205dc6:	8c66                	mv	s8,s9
+    80205db0:	f4843783          	ld	a5,-184(s0)
+    80205db4:	14f05c63          	blez	a5,80205f0c <emake+0x316>
+    80205db8:	f5842783          	lw	a5,-168(s0)
+    80205dbc:	37fd                	addiw	a5,a5,-1
+    80205dbe:	f4f42223          	sw	a5,-188(s0)
+    80205dc2:	00179b9b          	slliw	s7,a5,0x1
+    80205dc6:	00fb8bbb          	addw	s7,s7,a5
+    80205dca:	002b9b9b          	slliw	s7,s7,0x2
+    80205dce:	00fb8bbb          	addw	s7,s7,a5
+    80205dd2:	9bea                	add	s7,s7,s10
+    80205dd4:	8aee                	mv	s5,s11
+    80205dd6:	8c66                	mv	s8,s9
             int end = 0;
-    80205dc8:	4981                	li	s3,0
+    80205dd8:	4981                	li	s3,0
             uint8 *w = (uint8 *)de.lne.name1;
-    80205dca:	f7140793          	addi	a5,s0,-143
-    80205dce:	f4f43823          	sd	a5,-176(s0)
-    80205dd2:	0ff00913          	li	s2,255
+    80205dda:	f7140793          	addi	a5,s0,-143
+    80205dde:	f4f43823          	sd	a5,-176(s0)
+    80205de2:	0ff00913          	li	s2,255
                     case 5:     w = (uint8 *)de.lne.name2; break;
-    80205dd6:	f7e40793          	addi	a5,s0,-130
-    80205dda:	f4f43c23          	sd	a5,-168(s0)
+    80205de6:	f7e40793          	addi	a5,s0,-130
+    80205dea:	f4f43c23          	sd	a5,-168(s0)
                 switch (j) {
-    80205dde:	44ad                	li	s1,11
-    80205de0:	f8c40a13          	addi	s4,s0,-116
-    80205de4:	a0c5                	j	80205ec4 <emake+0x2de>
+    80205dee:	44ad                	li	s1,11
+    80205df0:	f8c40a13          	addi	s4,s0,-116
+    80205df4:	a0c5                	j	80205ed4 <emake+0x2de>
             if (name > p) {                    // last '.'
-    80205de6:	0549f663          	bgeu	s3,s4,80205e32 <emake+0x24c>
+    80205df6:	0549f663          	bgeu	s3,s4,80205e42 <emake+0x24c>
                 memset(shortname + i, ' ', 8 - i);
-    80205dea:	47a1                	li	a5,8
-    80205dec:	4097863b          	subw	a2,a5,s1
-    80205df0:	02000593          	li	a1,32
-    80205df4:	f5043783          	ld	a5,-176(s0)
-    80205df8:	00978533          	add	a0,a5,s1
-    80205dfc:	ffffb097          	auipc	ra,0xffffb
-    80205e00:	966080e7          	jalr	-1690(ra) # 80200762 <memset>
+    80205dfa:	47a1                	li	a5,8
+    80205dfc:	4097863b          	subw	a2,a5,s1
+    80205e00:	02000593          	li	a1,32
+    80205e04:	f5043783          	ld	a5,-176(s0)
+    80205e08:	00978533          	add	a0,a5,s1
+    80205e0c:	ffffb097          	auipc	ra,0xffffb
+    80205e10:	956080e7          	jalr	-1706(ra) # 80200762 <memset>
     while (i < CHAR_SHORT_NAME && (c = *name++)) {
-    80205e04:	89d2                	mv	s3,s4
+    80205e14:	89d2                	mv	s3,s4
         shortname[i++] = c;
-    80205e06:	8a4e                	mv	s4,s3
-    80205e08:	84d6                	mv	s1,s5
-    80205e0a:	4981                	li	s3,0
-    80205e0c:	a02d                	j	80205e36 <emake+0x250>
+    80205e16:	8a4e                	mv	s4,s3
+    80205e18:	84d6                	mv	s1,s5
+    80205e1a:	4981                	li	s3,0
+    80205e1c:	a02d                	j	80205e46 <emake+0x250>
             if (strchr(illegal, c) != NULL) {
-    80205e0e:	85ca                	mv	a1,s2
-    80205e10:	00006517          	auipc	a0,0x6
-    80205e14:	aa850513          	addi	a0,a0,-1368 # 8020b8b8 <illegal.0>
-    80205e18:	ffffb097          	auipc	ra,0xffffb
-    80205e1c:	ba8080e7          	jalr	-1112(ra) # 802009c0 <strchr>
-    80205e20:	c119                	beqz	a0,80205e26 <emake+0x240>
+    80205e1e:	85ca                	mv	a1,s2
+    80205e20:	00006517          	auipc	a0,0x6
+    80205e24:	ac050513          	addi	a0,a0,-1344 # 8020b8e0 <illegal.0>
+    80205e28:	ffffb097          	auipc	ra,0xffffb
+    80205e2c:	b98080e7          	jalr	-1128(ra) # 802009c0 <strchr>
+    80205e30:	c119                	beqz	a0,80205e36 <emake+0x240>
                 c = '_';
-    80205e22:	05f00913          	li	s2,95
+    80205e32:	05f00913          	li	s2,95
         shortname[i++] = c;
-    80205e26:	f9048793          	addi	a5,s1,-112
-    80205e2a:	97a2                	add	a5,a5,s0
-    80205e2c:	fd278823          	sb	s2,-48(a5)
-    80205e30:	2485                	addiw	s1,s1,1
+    80205e36:	f9048793          	addi	a5,s1,-112
+    80205e3a:	97a2                	add	a5,a5,s0
+    80205e3c:	fd278823          	sb	s2,-48(a5)
+    80205e40:	2485                	addiw	s1,s1,1
     while (i < CHAR_SHORT_NAME && (c = *name++)) {
-    80205e32:	f49bcce3          	blt	s7,s1,80205d8a <emake+0x1a4>
+    80205e42:	f49bcce3          	blt	s7,s1,80205d9a <emake+0x1a4>
         shortname[i++] = c;
-    80205e36:	8952                	mv	s2,s4
+    80205e46:	8952                	mv	s2,s4
     while (i < CHAR_SHORT_NAME && (c = *name++)) {
-    80205e38:	00190a13          	addi	s4,s2,1
-    80205e3c:	00094903          	lbu	s2,0(s2)
-    80205e40:	02090663          	beqz	s2,80205e6c <emake+0x286>
+    80205e48:	00190a13          	addi	s4,s2,1
+    80205e4c:	00094903          	lbu	s2,0(s2)
+    80205e50:	02090663          	beqz	s2,80205e7c <emake+0x286>
         if (i == 8 && p) {
-    80205e44:	f35482e3          	beq	s1,s5,80205d68 <emake+0x182>
+    80205e54:	f35482e3          	beq	s1,s5,80205d78 <emake+0x182>
         if (c == ' ') { continue; }
-    80205e48:	02000793          	li	a5,32
-    80205e4c:	fef903e3          	beq	s2,a5,80205e32 <emake+0x24c>
+    80205e58:	02000793          	li	a5,32
+    80205e5c:	fef903e3          	beq	s2,a5,80205e42 <emake+0x24c>
         if (c == '.') {
-    80205e50:	02e00793          	li	a5,46
-    80205e54:	f8f909e3          	beq	s2,a5,80205de6 <emake+0x200>
+    80205e60:	02e00793          	li	a5,46
+    80205e64:	f8f909e3          	beq	s2,a5,80205df6 <emake+0x200>
         if (c >= 'a' && c <= 'z') {
-    80205e58:	f9f9079b          	addiw	a5,s2,-97
-    80205e5c:	0ff7f793          	zext.b	a5,a5
-    80205e60:	fafc67e3          	bltu	s8,a5,80205e0e <emake+0x228>
+    80205e68:	f9f9079b          	addiw	a5,s2,-97
+    80205e6c:	0ff7f793          	zext.b	a5,a5
+    80205e70:	fafc67e3          	bltu	s8,a5,80205e1e <emake+0x228>
             c += 'A' - 'a';
-    80205e64:	3901                	addiw	s2,s2,-32
-    80205e66:	0ff97913          	zext.b	s2,s2
-    80205e6a:	bf75                	j	80205e26 <emake+0x240>
+    80205e74:	3901                	addiw	s2,s2,-32
+    80205e76:	0ff97913          	zext.b	s2,s2
+    80205e7a:	bf75                	j	80205e36 <emake+0x240>
     while (i < CHAR_SHORT_NAME) {
-    80205e6c:	47a9                	li	a5,10
-    80205e6e:	f097d2e3          	bge	a5,s1,80205d72 <emake+0x18c>
-    80205e72:	bf21                	j	80205d8a <emake+0x1a4>
+    80205e7c:	47a9                	li	a5,10
+    80205e7e:	f097d2e3          	bge	a5,s1,80205d82 <emake+0x18c>
+    80205e82:	bf21                	j	80205d9a <emake+0x1a4>
                 de.lne.order |= LAST_LONG_ENTRY;
-    80205e74:	0407e793          	ori	a5,a5,64
-    80205e78:	f6f40823          	sb	a5,-144(s0)
-    80205e7c:	a891                	j	80205ed0 <emake+0x2ea>
+    80205e84:	0407e793          	ori	a5,a5,64
+    80205e88:	f6f40823          	sb	a5,-144(s0)
+    80205e8c:	a891                	j	80205ee0 <emake+0x2ea>
                     if ((*w++ = *p++) == 0) {
-    80205e7e:	00084603          	lbu	a2,0(a6)
+    80205e8e:	00084603          	lbu	a2,0(a6)
                         end = 1;
-    80205e82:	00163513          	seqz	a0,a2
+    80205e92:	00163513          	seqz	a0,a2
                     *w++ = 0;
-    80205e86:	00278893          	addi	a7,a5,2
+    80205e96:	00278893          	addi	a7,a5,2
                     if ((*w++ = *p++) == 0) {
-    80205e8a:	0805                	addi	a6,a6,1
+    80205e9a:	0805                	addi	a6,a6,1
                     *w++ = 0;
-    80205e8c:	85ce                	mv	a1,s3
-    80205e8e:	a8d5                	j	80205f82 <emake+0x39c>
+    80205e9c:	85ce                	mv	a1,s3
+    80205e9e:	a8d5                	j	80205f92 <emake+0x39c>
             uint off2 = reloc_clus(dp, off, 1);
-    80205e90:	4605                	li	a2,1
-    80205e92:	85e2                	mv	a1,s8
-    80205e94:	855a                	mv	a0,s6
-    80205e96:	fffff097          	auipc	ra,0xfffff
-    80205e9a:	460080e7          	jalr	1120(ra) # 802052f6 <reloc_clus>
+    80205ea0:	4605                	li	a2,1
+    80205ea2:	85e2                	mv	a1,s8
+    80205ea4:	855a                	mv	a0,s6
+    80205ea6:	fffff097          	auipc	ra,0xfffff
+    80205eaa:	460080e7          	jalr	1120(ra) # 80205306 <reloc_clus>
             rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off2, sizeof(de));
-    80205e9e:	02000793          	li	a5,32
-    80205ea2:	0005071b          	sext.w	a4,a0
-    80205ea6:	f7040693          	addi	a3,s0,-144
-    80205eaa:	864e                	mv	a2,s3
-    80205eac:	4585                	li	a1,1
-    80205eae:	10cb2503          	lw	a0,268(s6)
-    80205eb2:	fffff097          	auipc	ra,0xfffff
-    80205eb6:	54c080e7          	jalr	1356(ra) # 802053fe <rw_clus>
+    80205eae:	02000793          	li	a5,32
+    80205eb2:	0005071b          	sext.w	a4,a0
+    80205eb6:	f7040693          	addi	a3,s0,-144
+    80205eba:	864e                	mv	a2,s3
+    80205ebc:	4585                	li	a1,1
+    80205ebe:	10cb2503          	lw	a0,268(s6)
+    80205ec2:	fffff097          	auipc	ra,0xfffff
+    80205ec6:	54c080e7          	jalr	1356(ra) # 8020540e <rw_clus>
             off += sizeof(de);
-    80205eba:	020c0c1b          	addiw	s8,s8,32
+    80205eca:	020c0c1b          	addiw	s8,s8,32
         for (int i = entcnt; i > 0; i--) {
-    80205ebe:	1bcd                	addi	s7,s7,-13
-    80205ec0:	03505163          	blez	s5,80205ee2 <emake+0x2fc>
+    80205ece:	1bcd                	addi	s7,s7,-13
+    80205ed0:	03505163          	blez	s5,80205ef2 <emake+0x2fc>
             if ((de.lne.order = i) == entcnt) {
-    80205ec4:	0ffaf793          	zext.b	a5,s5
-    80205ec8:	fafd86e3          	beq	s11,a5,80205e74 <emake+0x28e>
-    80205ecc:	f6f40823          	sb	a5,-144(s0)
+    80205ed4:	0ffaf793          	zext.b	a5,s5
+    80205ed8:	fafd86e3          	beq	s11,a5,80205e84 <emake+0x28e>
+    80205edc:	f6f40823          	sb	a5,-144(s0)
             char *p = ep->filename + (i - 1) * CHAR_LONG_NAME;
-    80205ed0:	3afd                	addiw	s5,s5,-1
-    80205ed2:	885e                	mv	a6,s7
-    80205ed4:	4709                	li	a4,2
+    80205ee0:	3afd                	addiw	s5,s5,-1
+    80205ee2:	885e                	mv	a6,s7
+    80205ee4:	4709                	li	a4,2
             int end = 0;
-    80205ed6:	854e                	mv	a0,s3
+    80205ee6:	854e                	mv	a0,s3
             uint8 *w = (uint8 *)de.lne.name1;
-    80205ed8:	f5043783          	ld	a5,-176(s0)
+    80205ee8:	f5043783          	ld	a5,-176(s0)
                 switch (j) {
-    80205edc:	4315                	li	t1,5
+    80205eec:	4315                	li	t1,5
             for (int j = 1; j <= CHAR_LONG_NAME; j++) {
-    80205ede:	4e35                	li	t3,13
-    80205ee0:	a851                	j	80205f74 <emake+0x38e>
-    80205ee2:	020c8c9b          	addiw	s9,s9,32
+    80205eee:	4e35                	li	t3,13
+    80205ef0:	a851                	j	80205f84 <emake+0x38e>
+    80205ef2:	020c8c9b          	addiw	s9,s9,32
             off += sizeof(de);
-    80205ee6:	4781                	li	a5,0
-    80205ee8:	f4843703          	ld	a4,-184(s0)
-    80205eec:	00e05663          	blez	a4,80205ef8 <emake+0x312>
-    80205ef0:	f4442783          	lw	a5,-188(s0)
-    80205ef4:	0057979b          	slliw	a5,a5,0x5
-    80205ef8:	01978cbb          	addw	s9,a5,s9
+    80205ef6:	4781                	li	a5,0
+    80205ef8:	f4843703          	ld	a4,-184(s0)
+    80205efc:	00e05663          	blez	a4,80205f08 <emake+0x312>
+    80205f00:	f4442783          	lw	a5,-188(s0)
+    80205f04:	0057979b          	slliw	a5,a5,0x5
+    80205f08:	01978cbb          	addw	s9,a5,s9
         memset(&de, 0, sizeof(de));
-    80205efc:	02000613          	li	a2,32
-    80205f00:	4581                	li	a1,0
-    80205f02:	f7040493          	addi	s1,s0,-144
-    80205f06:	8526                	mv	a0,s1
-    80205f08:	ffffb097          	auipc	ra,0xffffb
-    80205f0c:	85a080e7          	jalr	-1958(ra) # 80200762 <memset>
-        strncpy(de.sne.name, shortname, sizeof(de.sne.name));
-    80205f10:	462d                	li	a2,11
-    80205f12:	f6040593          	addi	a1,s0,-160
+    80205f0c:	02000613          	li	a2,32
+    80205f10:	4581                	li	a1,0
+    80205f12:	f7040493          	addi	s1,s0,-144
     80205f16:	8526                	mv	a0,s1
     80205f18:	ffffb097          	auipc	ra,0xffffb
-    80205f1c:	95e080e7          	jalr	-1698(ra) # 80200876 <strncpy>
+    80205f1c:	84a080e7          	jalr	-1974(ra) # 80200762 <memset>
+        strncpy(de.sne.name, shortname, sizeof(de.sne.name));
+    80205f20:	462d                	li	a2,11
+    80205f22:	f6040593          	addi	a1,s0,-160
+    80205f26:	8526                	mv	a0,s1
+    80205f28:	ffffb097          	auipc	ra,0xffffb
+    80205f2c:	94e080e7          	jalr	-1714(ra) # 80200876 <strncpy>
         de.sne.attr = ep->attribute;
-    80205f20:	100d4783          	lbu	a5,256(s10)
-    80205f24:	f6f40da3          	sb	a5,-133(s0)
+    80205f30:	100d4783          	lbu	a5,256(s10)
+    80205f34:	f6f40da3          	sb	a5,-133(s0)
         de.sne.fst_clus_hi = (uint16)(ep->first_clus >> 16);      // first clus high 16 bits
-    80205f28:	104d2783          	lw	a5,260(s10)
-    80205f2c:	0107d71b          	srliw	a4,a5,0x10
-    80205f30:	f8e41223          	sh	a4,-124(s0)
+    80205f38:	104d2783          	lw	a5,260(s10)
+    80205f3c:	0107d71b          	srliw	a4,a5,0x10
+    80205f40:	f8e41223          	sh	a4,-124(s0)
         de.sne.fst_clus_lo = (uint16)(ep->first_clus & 0xffff);     // low 16 bits
-    80205f34:	f8f41523          	sh	a5,-118(s0)
+    80205f44:	f8f41523          	sh	a5,-118(s0)
         de.sne.file_size = ep->file_size;                         // filesize is updated in eupdate()
-    80205f38:	108d2783          	lw	a5,264(s10)
-    80205f3c:	f8f42623          	sw	a5,-116(s0)
+    80205f48:	108d2783          	lw	a5,264(s10)
+    80205f4c:	f8f42623          	sw	a5,-116(s0)
         off = reloc_clus(dp, off, 1);
-    80205f40:	4605                	li	a2,1
-    80205f42:	85e6                	mv	a1,s9
-    80205f44:	855a                	mv	a0,s6
-    80205f46:	fffff097          	auipc	ra,0xfffff
-    80205f4a:	3b0080e7          	jalr	944(ra) # 802052f6 <reloc_clus>
+    80205f50:	4605                	li	a2,1
+    80205f52:	85e6                	mv	a1,s9
+    80205f54:	855a                	mv	a0,s6
+    80205f56:	fffff097          	auipc	ra,0xfffff
+    80205f5a:	3b0080e7          	jalr	944(ra) # 80205306 <reloc_clus>
         rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off, sizeof(de));
-    80205f4e:	02000793          	li	a5,32
-    80205f52:	0005071b          	sext.w	a4,a0
-    80205f56:	86a6                	mv	a3,s1
-    80205f58:	4601                	li	a2,0
-    80205f5a:	4585                	li	a1,1
-    80205f5c:	10cb2503          	lw	a0,268(s6)
-    80205f60:	fffff097          	auipc	ra,0xfffff
-    80205f64:	49e080e7          	jalr	1182(ra) # 802053fe <rw_clus>
-}
-    80205f68:	b325                	j	80205c90 <emake+0xaa>
+    80205f5e:	02000793          	li	a5,32
+    80205f62:	0005071b          	sext.w	a4,a0
+    80205f66:	86a6                	mv	a3,s1
+    80205f68:	4601                	li	a2,0
+    80205f6a:	4585                	li	a1,1
+    80205f6c:	10cb2503          	lw	a0,268(s6)
+    80205f70:	fffff097          	auipc	ra,0xfffff
+    80205f74:	49e080e7          	jalr	1182(ra) # 8020540e <rw_clus>
+}
+    80205f78:	b325                	j	80205ca0 <emake+0xaa>
                     case 5:     w = (uint8 *)de.lne.name2; break;
-    80205f6a:	f5843783          	ld	a5,-168(s0)
-    80205f6e:	a011                	j	80205f72 <emake+0x38c>
+    80205f7a:	f5843783          	ld	a5,-168(s0)
+    80205f7e:	a011                	j	80205f82 <emake+0x38c>
                 switch (j) {
-    80205f70:	87d2                	mv	a5,s4
+    80205f80:	87d2                	mv	a5,s4
             for (int j = 1; j <= CHAR_LONG_NAME; j++) {
-    80205f72:	2705                	addiw	a4,a4,1
-    80205f74:	fff7069b          	addiw	a3,a4,-1
+    80205f82:	2705                	addiw	a4,a4,1
+    80205f84:	fff7069b          	addiw	a3,a4,-1
                 if (end) {
-    80205f78:	d119                	beqz	a0,80205e7e <emake+0x298>
+    80205f88:	d119                	beqz	a0,80205e8e <emake+0x298>
                     *w++ = 0xff;
-    80205f7a:	00278893          	addi	a7,a5,2
-    80205f7e:	864a                	mv	a2,s2
-    80205f80:	85ca                	mv	a1,s2
+    80205f8a:	00278893          	addi	a7,a5,2
+    80205f8e:	864a                	mv	a2,s2
+    80205f90:	85ca                	mv	a1,s2
                     *w++ = 0xff;            // on k210, unaligned reading is illegal
-    80205f82:	00c78023          	sb	a2,0(a5)
+    80205f92:	00c78023          	sb	a2,0(a5)
                     *w++ = 0xff;
-    80205f86:	00b780a3          	sb	a1,1(a5)
+    80205f96:	00b780a3          	sb	a1,1(a5)
                 switch (j) {
-    80205f8a:	fe6680e3          	beq	a3,t1,80205f6a <emake+0x384>
-    80205f8e:	fe9681e3          	beq	a3,s1,80205f70 <emake+0x38a>
+    80205f9a:	fe6680e3          	beq	a3,t1,80205f7a <emake+0x384>
+    80205f9e:	fe9681e3          	beq	a3,s1,80205f80 <emake+0x38a>
             for (int j = 1; j <= CHAR_LONG_NAME; j++) {
-    80205f92:	0007079b          	sext.w	a5,a4
-    80205f96:	eefe4de3          	blt	t3,a5,80205e90 <emake+0x2aa>
-    80205f9a:	87c6                	mv	a5,a7
-    80205f9c:	bfd9                	j	80205f72 <emake+0x38c>
+    80205fa2:	0007079b          	sext.w	a5,a4
+    80205fa6:	eefe4de3          	blt	t3,a5,80205ea0 <emake+0x2aa>
+    80205faa:	87c6                	mv	a5,a7
+    80205fac:	bfd9                	j	80205f82 <emake+0x38c>
         if (c == ' ') { continue; }
-    80205f9e:	02000793          	li	a5,32
-    80205fa2:	e8f90ae3          	beq	s2,a5,80205e36 <emake+0x250>
+    80205fae:	02000793          	li	a5,32
+    80205fb2:	e8f90ae3          	beq	s2,a5,80205e46 <emake+0x250>
         if (c == '.') {
-    80205fa6:	02e00793          	li	a5,46
-    80205faa:	eaf917e3          	bne	s2,a5,80205e58 <emake+0x272>
-    80205fae:	bd35                	j	80205dea <emake+0x204>
-
-0000000080205fb0 <edup>:
-{
-    80205fb0:	1101                	addi	sp,sp,-32
-    80205fb2:	ec06                	sd	ra,24(sp)
-    80205fb4:	e822                	sd	s0,16(sp)
-    80205fb6:	e426                	sd	s1,8(sp)
-    80205fb8:	1000                	addi	s0,sp,32
-    80205fba:	84aa                	mv	s1,a0
+    80205fb6:	02e00793          	li	a5,46
+    80205fba:	eaf917e3          	bne	s2,a5,80205e68 <emake+0x272>
+    80205fbe:	bd35                	j	80205dfa <emake+0x204>
+
+0000000080205fc0 <edup>:
+{
+    80205fc0:	1101                	addi	sp,sp,-32
+    80205fc2:	ec06                	sd	ra,24(sp)
+    80205fc4:	e822                	sd	s0,16(sp)
+    80205fc6:	e426                	sd	s1,8(sp)
+    80205fc8:	1000                	addi	s0,sp,32
+    80205fca:	84aa                	mv	s1,a0
     if (entry != 0) {
-    80205fbc:	c515                	beqz	a0,80205fe8 <edup+0x38>
+    80205fcc:	c515                	beqz	a0,80205ff8 <edup+0x38>
         acquire(&ecache.lock);
-    80205fbe:	00018517          	auipc	a0,0x18
-    80205fc2:	5fa50513          	addi	a0,a0,1530 # 8021e5b8 <ecache>
-    80205fc6:	ffffa097          	auipc	ra,0xffffa
-    80205fca:	700080e7          	jalr	1792(ra) # 802006c6 <acquire>
+    80205fce:	00018517          	auipc	a0,0x18
+    80205fd2:	5ea50513          	addi	a0,a0,1514 # 8021e5b8 <ecache>
+    80205fd6:	ffffa097          	auipc	ra,0xffffa
+    80205fda:	6f0080e7          	jalr	1776(ra) # 802006c6 <acquire>
         entry->ref++;
-    80205fce:	1184a783          	lw	a5,280(s1)
-    80205fd2:	2785                	addiw	a5,a5,1
-    80205fd4:	10f4ac23          	sw	a5,280(s1)
+    80205fde:	1184a783          	lw	a5,280(s1)
+    80205fe2:	2785                	addiw	a5,a5,1
+    80205fe4:	10f4ac23          	sw	a5,280(s1)
         release(&ecache.lock);
-    80205fd8:	00018517          	auipc	a0,0x18
-    80205fdc:	5e050513          	addi	a0,a0,1504 # 8021e5b8 <ecache>
-    80205fe0:	ffffa097          	auipc	ra,0xffffa
-    80205fe4:	73a080e7          	jalr	1850(ra) # 8020071a <release>
-}
-    80205fe8:	8526                	mv	a0,s1
-    80205fea:	60e2                	ld	ra,24(sp)
-    80205fec:	6442                	ld	s0,16(sp)
-    80205fee:	64a2                	ld	s1,8(sp)
-    80205ff0:	6105                	addi	sp,sp,32
-    80205ff2:	8082                	ret
-
-0000000080205ff4 <eupdate>:
+    80205fe8:	00018517          	auipc	a0,0x18
+    80205fec:	5d050513          	addi	a0,a0,1488 # 8021e5b8 <ecache>
+    80205ff0:	ffffa097          	auipc	ra,0xffffa
+    80205ff4:	72a080e7          	jalr	1834(ra) # 8020071a <release>
+}
+    80205ff8:	8526                	mv	a0,s1
+    80205ffa:	60e2                	ld	ra,24(sp)
+    80205ffc:	6442                	ld	s0,16(sp)
+    80205ffe:	64a2                	ld	s1,8(sp)
+    80206000:	6105                	addi	sp,sp,32
+    80206002:	8082                	ret
+
+0000000080206004 <eupdate>:
     if (!entry->dirty || entry->valid != 1) { return; }
-    80205ff4:	11554783          	lbu	a5,277(a0)
-    80205ff8:	c3e5                	beqz	a5,802060d8 <eupdate+0xe4>
-{
-    80205ffa:	711d                	addi	sp,sp,-96
-    80205ffc:	ec86                	sd	ra,88(sp)
-    80205ffe:	e8a2                	sd	s0,80(sp)
-    80206000:	e4a6                	sd	s1,72(sp)
-    80206002:	e0ca                	sd	s2,64(sp)
-    80206004:	fc4e                	sd	s3,56(sp)
-    80206006:	1080                	addi	s0,sp,96
-    80206008:	84aa                	mv	s1,a0
+    80206004:	11554783          	lbu	a5,277(a0)
+    80206008:	c3e5                	beqz	a5,802060e8 <eupdate+0xe4>
+{
+    8020600a:	711d                	addi	sp,sp,-96
+    8020600c:	ec86                	sd	ra,88(sp)
+    8020600e:	e8a2                	sd	s0,80(sp)
+    80206010:	e4a6                	sd	s1,72(sp)
+    80206012:	e0ca                	sd	s2,64(sp)
+    80206014:	fc4e                	sd	s3,56(sp)
+    80206016:	1080                	addi	s0,sp,96
+    80206018:	84aa                	mv	s1,a0
     if (!entry->dirty || entry->valid != 1) { return; }
-    8020600a:	11651703          	lh	a4,278(a0)
-    8020600e:	4785                	li	a5,1
-    80206010:	00f70963          	beq	a4,a5,80206022 <eupdate+0x2e>
-}
-    80206014:	60e6                	ld	ra,88(sp)
-    80206016:	6446                	ld	s0,80(sp)
-    80206018:	64a6                	ld	s1,72(sp)
-    8020601a:	6906                	ld	s2,64(sp)
-    8020601c:	79e2                	ld	s3,56(sp)
-    8020601e:	6125                	addi	sp,sp,96
-    80206020:	8082                	ret
+    8020601a:	11651703          	lh	a4,278(a0)
+    8020601e:	4785                	li	a5,1
+    80206020:	00f70963          	beq	a4,a5,80206032 <eupdate+0x2e>
+}
+    80206024:	60e6                	ld	ra,88(sp)
+    80206026:	6446                	ld	s0,80(sp)
+    80206028:	64a6                	ld	s1,72(sp)
+    8020602a:	6906                	ld	s2,64(sp)
+    8020602c:	79e2                	ld	s3,56(sp)
+    8020602e:	6125                	addi	sp,sp,96
+    80206030:	8082                	ret
     uint entcnt = 0;
-    80206022:	fc042623          	sw	zero,-52(s0)
+    80206032:	fc042623          	sw	zero,-52(s0)
     uint32 off = reloc_clus(entry->parent, entry->off, 0);
-    80206026:	4601                	li	a2,0
-    80206028:	11c52583          	lw	a1,284(a0)
-    8020602c:	12053503          	ld	a0,288(a0)
-    80206030:	fffff097          	auipc	ra,0xfffff
-    80206034:	2c6080e7          	jalr	710(ra) # 802052f6 <reloc_clus>
+    80206036:	4601                	li	a2,0
+    80206038:	11c52583          	lw	a1,284(a0)
+    8020603c:	12053503          	ld	a0,288(a0)
+    80206040:	fffff097          	auipc	ra,0xfffff
+    80206044:	2c6080e7          	jalr	710(ra) # 80205306 <reloc_clus>
     rw_clus(entry->parent->cur_clus, 0, 0, (uint64) &entcnt, off, 1);
-    80206038:	1204b803          	ld	a6,288(s1)
-    8020603c:	4785                	li	a5,1
-    8020603e:	0005071b          	sext.w	a4,a0
-    80206042:	fcc40693          	addi	a3,s0,-52
-    80206046:	4601                	li	a2,0
-    80206048:	4581                	li	a1,0
-    8020604a:	10c82503          	lw	a0,268(a6)
-    8020604e:	fffff097          	auipc	ra,0xfffff
-    80206052:	3b0080e7          	jalr	944(ra) # 802053fe <rw_clus>
+    80206048:	1204b803          	ld	a6,288(s1)
+    8020604c:	4785                	li	a5,1
+    8020604e:	0005071b          	sext.w	a4,a0
+    80206052:	fcc40693          	addi	a3,s0,-52
+    80206056:	4601                	li	a2,0
+    80206058:	4581                	li	a1,0
+    8020605a:	10c82503          	lw	a0,268(a6)
+    8020605e:	fffff097          	auipc	ra,0xfffff
+    80206062:	3b0080e7          	jalr	944(ra) # 8020540e <rw_clus>
     entcnt &= ~LAST_LONG_ENTRY;
-    80206056:	fcc42583          	lw	a1,-52(s0)
-    8020605a:	fbf5f593          	andi	a1,a1,-65
-    8020605e:	fcb42623          	sw	a1,-52(s0)
+    80206066:	fcc42583          	lw	a1,-52(s0)
+    8020606a:	fbf5f593          	andi	a1,a1,-65
+    8020606e:	fcb42623          	sw	a1,-52(s0)
     off = reloc_clus(entry->parent, entry->off + (entcnt << 5), 0);
-    80206062:	0055959b          	slliw	a1,a1,0x5
-    80206066:	11c4a783          	lw	a5,284(s1)
-    8020606a:	4601                	li	a2,0
-    8020606c:	9dbd                	addw	a1,a1,a5
-    8020606e:	1204b503          	ld	a0,288(s1)
-    80206072:	fffff097          	auipc	ra,0xfffff
-    80206076:	284080e7          	jalr	644(ra) # 802052f6 <reloc_clus>
-    8020607a:	0005099b          	sext.w	s3,a0
-    rw_clus(entry->parent->cur_clus, 0, 0, (uint64)&de, off, sizeof(de));
+    80206072:	0055959b          	slliw	a1,a1,0x5
+    80206076:	11c4a783          	lw	a5,284(s1)
+    8020607a:	4601                	li	a2,0
+    8020607c:	9dbd                	addw	a1,a1,a5
     8020607e:	1204b503          	ld	a0,288(s1)
-    80206082:	02000793          	li	a5,32
-    80206086:	874e                	mv	a4,s3
-    80206088:	fa840913          	addi	s2,s0,-88
-    8020608c:	86ca                	mv	a3,s2
-    8020608e:	4601                	li	a2,0
-    80206090:	4581                	li	a1,0
-    80206092:	10c52503          	lw	a0,268(a0)
-    80206096:	fffff097          	auipc	ra,0xfffff
-    8020609a:	368080e7          	jalr	872(ra) # 802053fe <rw_clus>
+    80206082:	fffff097          	auipc	ra,0xfffff
+    80206086:	284080e7          	jalr	644(ra) # 80205306 <reloc_clus>
+    8020608a:	0005099b          	sext.w	s3,a0
+    rw_clus(entry->parent->cur_clus, 0, 0, (uint64)&de, off, sizeof(de));
+    8020608e:	1204b503          	ld	a0,288(s1)
+    80206092:	02000793          	li	a5,32
+    80206096:	874e                	mv	a4,s3
+    80206098:	fa840913          	addi	s2,s0,-88
+    8020609c:	86ca                	mv	a3,s2
+    8020609e:	4601                	li	a2,0
+    802060a0:	4581                	li	a1,0
+    802060a2:	10c52503          	lw	a0,268(a0)
+    802060a6:	fffff097          	auipc	ra,0xfffff
+    802060aa:	368080e7          	jalr	872(ra) # 8020540e <rw_clus>
     de.sne.fst_clus_hi = (uint16)(entry->first_clus >> 16);
-    8020609e:	1044a783          	lw	a5,260(s1)
-    802060a2:	0107d71b          	srliw	a4,a5,0x10
-    802060a6:	fae41e23          	sh	a4,-68(s0)
+    802060ae:	1044a783          	lw	a5,260(s1)
+    802060b2:	0107d71b          	srliw	a4,a5,0x10
+    802060b6:	fae41e23          	sh	a4,-68(s0)
     de.sne.fst_clus_lo = (uint16)(entry->first_clus & 0xffff);
-    802060aa:	fcf41123          	sh	a5,-62(s0)
+    802060ba:	fcf41123          	sh	a5,-62(s0)
     de.sne.file_size = entry->file_size;
-    802060ae:	1084a783          	lw	a5,264(s1)
-    802060b2:	fcf42223          	sw	a5,-60(s0)
+    802060be:	1084a783          	lw	a5,264(s1)
+    802060c2:	fcf42223          	sw	a5,-60(s0)
     rw_clus(entry->parent->cur_clus, 1, 0, (uint64)&de, off, sizeof(de));
-    802060b6:	1204b503          	ld	a0,288(s1)
-    802060ba:	02000793          	li	a5,32
-    802060be:	874e                	mv	a4,s3
-    802060c0:	86ca                	mv	a3,s2
-    802060c2:	4601                	li	a2,0
-    802060c4:	4585                	li	a1,1
-    802060c6:	10c52503          	lw	a0,268(a0)
-    802060ca:	fffff097          	auipc	ra,0xfffff
-    802060ce:	334080e7          	jalr	820(ra) # 802053fe <rw_clus>
+    802060c6:	1204b503          	ld	a0,288(s1)
+    802060ca:	02000793          	li	a5,32
+    802060ce:	874e                	mv	a4,s3
+    802060d0:	86ca                	mv	a3,s2
+    802060d2:	4601                	li	a2,0
+    802060d4:	4585                	li	a1,1
+    802060d6:	10c52503          	lw	a0,268(a0)
+    802060da:	fffff097          	auipc	ra,0xfffff
+    802060de:	334080e7          	jalr	820(ra) # 8020540e <rw_clus>
     entry->dirty = 0;
-    802060d2:	10048aa3          	sb	zero,277(s1)
-    802060d6:	bf3d                	j	80206014 <eupdate+0x20>
-    802060d8:	8082                	ret
+    802060e2:	10048aa3          	sb	zero,277(s1)
+    802060e6:	bf3d                	j	80206024 <eupdate+0x20>
+    802060e8:	8082                	ret
 
-00000000802060da <eremove>:
+00000000802060ea <eremove>:
     if (entry->valid != 1) { return; }
-    802060da:	11651703          	lh	a4,278(a0)
-    802060de:	4785                	li	a5,1
-    802060e0:	00f70363          	beq	a4,a5,802060e6 <eremove+0xc>
-    802060e4:	8082                	ret
-{
-    802060e6:	715d                	addi	sp,sp,-80
-    802060e8:	e486                	sd	ra,72(sp)
-    802060ea:	e0a2                	sd	s0,64(sp)
-    802060ec:	fc26                	sd	s1,56(sp)
-    802060ee:	f84a                	sd	s2,48(sp)
-    802060f0:	f44e                	sd	s3,40(sp)
-    802060f2:	f052                	sd	s4,32(sp)
-    802060f4:	ec56                	sd	s5,24(sp)
-    802060f6:	0880                	addi	s0,sp,80
-    802060f8:	89aa                	mv	s3,a0
+    802060ea:	11651703          	lh	a4,278(a0)
+    802060ee:	4785                	li	a5,1
+    802060f0:	00f70363          	beq	a4,a5,802060f6 <eremove+0xc>
+    802060f4:	8082                	ret
+{
+    802060f6:	715d                	addi	sp,sp,-80
+    802060f8:	e486                	sd	ra,72(sp)
+    802060fa:	e0a2                	sd	s0,64(sp)
+    802060fc:	fc26                	sd	s1,56(sp)
+    802060fe:	f84a                	sd	s2,48(sp)
+    80206100:	f44e                	sd	s3,40(sp)
+    80206102:	f052                	sd	s4,32(sp)
+    80206104:	ec56                	sd	s5,24(sp)
+    80206106:	0880                	addi	s0,sp,80
+    80206108:	89aa                	mv	s3,a0
     uint entcnt = 0;
-    802060fa:	fa042e23          	sw	zero,-68(s0)
+    8020610a:	fa042e23          	sw	zero,-68(s0)
     uint32 off = entry->off;
-    802060fe:	11c52a03          	lw	s4,284(a0)
+    8020610e:	11c52a03          	lw	s4,284(a0)
     uint32 off2 = reloc_clus(entry->parent, off, 0);
-    80206102:	4601                	li	a2,0
-    80206104:	85d2                	mv	a1,s4
-    80206106:	12053503          	ld	a0,288(a0)
-    8020610a:	fffff097          	auipc	ra,0xfffff
-    8020610e:	1ec080e7          	jalr	492(ra) # 802052f6 <reloc_clus>
-    80206112:	0005049b          	sext.w	s1,a0
+    80206112:	4601                	li	a2,0
+    80206114:	85d2                	mv	a1,s4
+    80206116:	12053503          	ld	a0,288(a0)
+    8020611a:	fffff097          	auipc	ra,0xfffff
+    8020611e:	1ec080e7          	jalr	492(ra) # 80205306 <reloc_clus>
+    80206122:	0005049b          	sext.w	s1,a0
     rw_clus(entry->parent->cur_clus, 0, 0, (uint64) &entcnt, off2, 1);
-    80206116:	1209b503          	ld	a0,288(s3)
-    8020611a:	4785                	li	a5,1
-    8020611c:	8726                	mv	a4,s1
-    8020611e:	fbc40693          	addi	a3,s0,-68
-    80206122:	4601                	li	a2,0
-    80206124:	4581                	li	a1,0
-    80206126:	10c52503          	lw	a0,268(a0)
-    8020612a:	fffff097          	auipc	ra,0xfffff
-    8020612e:	2d4080e7          	jalr	724(ra) # 802053fe <rw_clus>
+    80206126:	1209b503          	ld	a0,288(s3)
+    8020612a:	4785                	li	a5,1
+    8020612c:	8726                	mv	a4,s1
+    8020612e:	fbc40693          	addi	a3,s0,-68
+    80206132:	4601                	li	a2,0
+    80206134:	4581                	li	a1,0
+    80206136:	10c52503          	lw	a0,268(a0)
+    8020613a:	fffff097          	auipc	ra,0xfffff
+    8020613e:	2d4080e7          	jalr	724(ra) # 8020540e <rw_clus>
     entcnt &= ~LAST_LONG_ENTRY;
-    80206132:	fbc42783          	lw	a5,-68(s0)
-    80206136:	fbf7f793          	andi	a5,a5,-65
-    8020613a:	faf42e23          	sw	a5,-68(s0)
+    80206142:	fbc42783          	lw	a5,-68(s0)
+    80206146:	fbf7f793          	andi	a5,a5,-65
+    8020614a:	faf42e23          	sw	a5,-68(s0)
     uint8 flag = EMPTY_ENTRY;
-    8020613e:	5795                	li	a5,-27
-    80206140:	faf40da3          	sb	a5,-69(s0)
+    8020614e:	5795                	li	a5,-27
+    80206150:	faf40da3          	sb	a5,-69(s0)
     for (int i = 0; i <= entcnt; i++) {
-    80206144:	4901                	li	s2,0
+    80206154:	4901                	li	s2,0
         rw_clus(entry->parent->cur_clus, 1, 0, (uint64) &flag, off2, 1);
-    80206146:	fbb40a93          	addi	s5,s0,-69
-    8020614a:	1209b503          	ld	a0,288(s3)
-    8020614e:	4785                	li	a5,1
-    80206150:	8726                	mv	a4,s1
-    80206152:	86d6                	mv	a3,s5
-    80206154:	4601                	li	a2,0
-    80206156:	4585                	li	a1,1
-    80206158:	10c52503          	lw	a0,268(a0)
-    8020615c:	fffff097          	auipc	ra,0xfffff
-    80206160:	2a2080e7          	jalr	674(ra) # 802053fe <rw_clus>
+    80206156:	fbb40a93          	addi	s5,s0,-69
+    8020615a:	1209b503          	ld	a0,288(s3)
+    8020615e:	4785                	li	a5,1
+    80206160:	8726                	mv	a4,s1
+    80206162:	86d6                	mv	a3,s5
+    80206164:	4601                	li	a2,0
+    80206166:	4585                	li	a1,1
+    80206168:	10c52503          	lw	a0,268(a0)
+    8020616c:	fffff097          	auipc	ra,0xfffff
+    80206170:	2a2080e7          	jalr	674(ra) # 8020540e <rw_clus>
         off += 32;
-    80206164:	020a0a1b          	addiw	s4,s4,32
+    80206174:	020a0a1b          	addiw	s4,s4,32
         off2 = reloc_clus(entry->parent, off, 0);
-    80206168:	4601                	li	a2,0
-    8020616a:	85d2                	mv	a1,s4
-    8020616c:	1209b503          	ld	a0,288(s3)
-    80206170:	fffff097          	auipc	ra,0xfffff
-    80206174:	186080e7          	jalr	390(ra) # 802052f6 <reloc_clus>
-    80206178:	0005049b          	sext.w	s1,a0
+    80206178:	4601                	li	a2,0
+    8020617a:	85d2                	mv	a1,s4
+    8020617c:	1209b503          	ld	a0,288(s3)
+    80206180:	fffff097          	auipc	ra,0xfffff
+    80206184:	186080e7          	jalr	390(ra) # 80205306 <reloc_clus>
+    80206188:	0005049b          	sext.w	s1,a0
     for (int i = 0; i <= entcnt; i++) {
-    8020617c:	0019079b          	addiw	a5,s2,1
-    80206180:	0007891b          	sext.w	s2,a5
-    80206184:	fbc42703          	lw	a4,-68(s0)
-    80206188:	fd2771e3          	bgeu	a4,s2,8020614a <eremove+0x70>
+    8020618c:	0019079b          	addiw	a5,s2,1
+    80206190:	0007891b          	sext.w	s2,a5
+    80206194:	fbc42703          	lw	a4,-68(s0)
+    80206198:	fd2771e3          	bgeu	a4,s2,8020615a <eremove+0x70>
     entry->valid = -1;
-    8020618c:	57fd                	li	a5,-1
-    8020618e:	10f99b23          	sh	a5,278(s3)
-}
-    80206192:	60a6                	ld	ra,72(sp)
-    80206194:	6406                	ld	s0,64(sp)
-    80206196:	74e2                	ld	s1,56(sp)
-    80206198:	7942                	ld	s2,48(sp)
-    8020619a:	79a2                	ld	s3,40(sp)
-    8020619c:	7a02                	ld	s4,32(sp)
-    8020619e:	6ae2                	ld	s5,24(sp)
-    802061a0:	6161                	addi	sp,sp,80
-    802061a2:	8082                	ret
-
-00000000802061a4 <etrunc>:
-{
-    802061a4:	7179                	addi	sp,sp,-48
-    802061a6:	f406                	sd	ra,40(sp)
-    802061a8:	f022                	sd	s0,32(sp)
-    802061aa:	ec26                	sd	s1,24(sp)
-    802061ac:	e84a                	sd	s2,16(sp)
-    802061ae:	e44e                	sd	s3,8(sp)
-    802061b0:	e052                	sd	s4,0(sp)
-    802061b2:	1800                	addi	s0,sp,48
-    802061b4:	8a2a                	mv	s4,a0
+    8020619c:	57fd                	li	a5,-1
+    8020619e:	10f99b23          	sh	a5,278(s3)
+}
+    802061a2:	60a6                	ld	ra,72(sp)
+    802061a4:	6406                	ld	s0,64(sp)
+    802061a6:	74e2                	ld	s1,56(sp)
+    802061a8:	7942                	ld	s2,48(sp)
+    802061aa:	79a2                	ld	s3,40(sp)
+    802061ac:	7a02                	ld	s4,32(sp)
+    802061ae:	6ae2                	ld	s5,24(sp)
+    802061b0:	6161                	addi	sp,sp,80
+    802061b2:	8082                	ret
+
+00000000802061b4 <etrunc>:
+{
+    802061b4:	7179                	addi	sp,sp,-48
+    802061b6:	f406                	sd	ra,40(sp)
+    802061b8:	f022                	sd	s0,32(sp)
+    802061ba:	ec26                	sd	s1,24(sp)
+    802061bc:	e84a                	sd	s2,16(sp)
+    802061be:	e44e                	sd	s3,8(sp)
+    802061c0:	e052                	sd	s4,0(sp)
+    802061c2:	1800                	addi	s0,sp,48
+    802061c4:	8a2a                	mv	s4,a0
     for (uint32 clus = entry->first_clus; clus >= 2 && clus < FAT32_EOC; ) {
-    802061b6:	10452483          	lw	s1,260(a0)
-    802061ba:	ffe4871b          	addiw	a4,s1,-2
-    802061be:	100007b7          	lui	a5,0x10000
-    802061c2:	17d5                	addi	a5,a5,-11 # ffffff5 <_entry-0x7020000b>
-    802061c4:	02e7e663          	bltu	a5,a4,802061f0 <etrunc+0x4c>
-    802061c8:	89be                	mv	s3,a5
+    802061c6:	10452483          	lw	s1,260(a0)
+    802061ca:	ffe4871b          	addiw	a4,s1,-2
+    802061ce:	100007b7          	lui	a5,0x10000
+    802061d2:	17d5                	addi	a5,a5,-11 # ffffff5 <_entry-0x7020000b>
+    802061d4:	02e7e663          	bltu	a5,a4,80206200 <etrunc+0x4c>
+    802061d8:	89be                	mv	s3,a5
         uint32 next = read_fat(clus);
-    802061ca:	0004891b          	sext.w	s2,s1
-    802061ce:	8526                	mv	a0,s1
-    802061d0:	fffff097          	auipc	ra,0xfffff
-    802061d4:	eee080e7          	jalr	-274(ra) # 802050be <read_fat>
-    802061d8:	0005049b          	sext.w	s1,a0
-    write_fat(cluster, 0);
-    802061dc:	4581                	li	a1,0
-    802061de:	854a                	mv	a0,s2
+    802061da:	0004891b          	sext.w	s2,s1
+    802061de:	8526                	mv	a0,s1
     802061e0:	fffff097          	auipc	ra,0xfffff
-    802061e4:	096080e7          	jalr	150(ra) # 80205276 <write_fat>
+    802061e4:	eee080e7          	jalr	-274(ra) # 802050ce <read_fat>
+    802061e8:	0005049b          	sext.w	s1,a0
+    write_fat(cluster, 0);
+    802061ec:	4581                	li	a1,0
+    802061ee:	854a                	mv	a0,s2
+    802061f0:	fffff097          	auipc	ra,0xfffff
+    802061f4:	096080e7          	jalr	150(ra) # 80205286 <write_fat>
     for (uint32 clus = entry->first_clus; clus >= 2 && clus < FAT32_EOC; ) {
-    802061e8:	ffe4879b          	addiw	a5,s1,-2
-    802061ec:	fcf9ffe3          	bgeu	s3,a5,802061ca <etrunc+0x26>
+    802061f8:	ffe4879b          	addiw	a5,s1,-2
+    802061fc:	fcf9ffe3          	bgeu	s3,a5,802061da <etrunc+0x26>
     entry->file_size = 0;
-    802061f0:	100a2423          	sw	zero,264(s4)
+    80206200:	100a2423          	sw	zero,264(s4)
     entry->first_clus = 0;
-    802061f4:	100a2223          	sw	zero,260(s4)
+    80206204:	100a2223          	sw	zero,260(s4)
     entry->dirty = 1;
-    802061f8:	4785                	li	a5,1
-    802061fa:	10fa0aa3          	sb	a5,277(s4)
-}
-    802061fe:	70a2                	ld	ra,40(sp)
-    80206200:	7402                	ld	s0,32(sp)
-    80206202:	64e2                	ld	s1,24(sp)
-    80206204:	6942                	ld	s2,16(sp)
-    80206206:	69a2                	ld	s3,8(sp)
-    80206208:	6a02                	ld	s4,0(sp)
-    8020620a:	6145                	addi	sp,sp,48
-    8020620c:	8082                	ret
-
-000000008020620e <elock>:
-{
-    8020620e:	1141                	addi	sp,sp,-16
-    80206210:	e406                	sd	ra,8(sp)
-    80206212:	e022                	sd	s0,0(sp)
-    80206214:	0800                	addi	s0,sp,16
+    80206208:	4785                	li	a5,1
+    8020620a:	10fa0aa3          	sb	a5,277(s4)
+}
+    8020620e:	70a2                	ld	ra,40(sp)
+    80206210:	7402                	ld	s0,32(sp)
+    80206212:	64e2                	ld	s1,24(sp)
+    80206214:	6942                	ld	s2,16(sp)
+    80206216:	69a2                	ld	s3,8(sp)
+    80206218:	6a02                	ld	s4,0(sp)
+    8020621a:	6145                	addi	sp,sp,48
+    8020621c:	8082                	ret
+
+000000008020621e <elock>:
+{
+    8020621e:	1141                	addi	sp,sp,-16
+    80206220:	e406                	sd	ra,8(sp)
+    80206222:	e022                	sd	s0,0(sp)
+    80206224:	0800                	addi	s0,sp,16
     if (entry == 0 || entry->ref < 1)
-    80206216:	cd19                	beqz	a0,80206234 <elock+0x26>
-    80206218:	11852783          	lw	a5,280(a0)
-    8020621c:	00f05c63          	blez	a5,80206234 <elock+0x26>
+    80206226:	cd19                	beqz	a0,80206244 <elock+0x26>
+    80206228:	11852783          	lw	a5,280(a0)
+    8020622c:	00f05c63          	blez	a5,80206244 <elock+0x26>
     acquiresleep(&entry->lock);
-    80206220:	13850513          	addi	a0,a0,312
-    80206224:	ffffd097          	auipc	ra,0xffffd
-    80206228:	43e080e7          	jalr	1086(ra) # 80203662 <acquiresleep>
-}
-    8020622c:	60a2                	ld	ra,8(sp)
-    8020622e:	6402                	ld	s0,0(sp)
-    80206230:	0141                	addi	sp,sp,16
-    80206232:	8082                	ret
+    80206230:	13850513          	addi	a0,a0,312
+    80206234:	ffffd097          	auipc	ra,0xffffd
+    80206238:	430080e7          	jalr	1072(ra) # 80203664 <acquiresleep>
+}
+    8020623c:	60a2                	ld	ra,8(sp)
+    8020623e:	6402                	ld	s0,0(sp)
+    80206240:	0141                	addi	sp,sp,16
+    80206242:	8082                	ret
         panic("elock");
-    80206234:	00004517          	auipc	a0,0x4
-    80206238:	a5450513          	addi	a0,a0,-1452 # 80209c88 <digits+0x908>
-    8020623c:	ffffa097          	auipc	ra,0xffffa
-    80206240:	f08080e7          	jalr	-248(ra) # 80200144 <panic>
-
-0000000080206244 <eunlock>:
-{
-    80206244:	1101                	addi	sp,sp,-32
-    80206246:	ec06                	sd	ra,24(sp)
-    80206248:	e822                	sd	s0,16(sp)
-    8020624a:	e426                	sd	s1,8(sp)
-    8020624c:	e04a                	sd	s2,0(sp)
-    8020624e:	1000                	addi	s0,sp,32
+    80206244:	00004517          	auipc	a0,0x4
+    80206248:	a4c50513          	addi	a0,a0,-1460 # 80209c90 <digits+0x910>
+    8020624c:	ffffa097          	auipc	ra,0xffffa
+    80206250:	ef8080e7          	jalr	-264(ra) # 80200144 <panic>
+
+0000000080206254 <eunlock>:
+{
+    80206254:	1101                	addi	sp,sp,-32
+    80206256:	ec06                	sd	ra,24(sp)
+    80206258:	e822                	sd	s0,16(sp)
+    8020625a:	e426                	sd	s1,8(sp)
+    8020625c:	e04a                	sd	s2,0(sp)
+    8020625e:	1000                	addi	s0,sp,32
     if (entry == 0 || !holdingsleep(&entry->lock) || entry->ref < 1)
-    80206250:	c90d                	beqz	a0,80206282 <eunlock+0x3e>
-    80206252:	84aa                	mv	s1,a0
-    80206254:	13850913          	addi	s2,a0,312
-    80206258:	854a                	mv	a0,s2
-    8020625a:	ffffd097          	auipc	ra,0xffffd
-    8020625e:	4a2080e7          	jalr	1186(ra) # 802036fc <holdingsleep>
-    80206262:	c105                	beqz	a0,80206282 <eunlock+0x3e>
-    80206264:	1184a783          	lw	a5,280(s1)
-    80206268:	00f05d63          	blez	a5,80206282 <eunlock+0x3e>
+    80206260:	c90d                	beqz	a0,80206292 <eunlock+0x3e>
+    80206262:	84aa                	mv	s1,a0
+    80206264:	13850913          	addi	s2,a0,312
+    80206268:	854a                	mv	a0,s2
+    8020626a:	ffffd097          	auipc	ra,0xffffd
+    8020626e:	494080e7          	jalr	1172(ra) # 802036fe <holdingsleep>
+    80206272:	c105                	beqz	a0,80206292 <eunlock+0x3e>
+    80206274:	1184a783          	lw	a5,280(s1)
+    80206278:	00f05d63          	blez	a5,80206292 <eunlock+0x3e>
     releasesleep(&entry->lock);
-    8020626c:	854a                	mv	a0,s2
-    8020626e:	ffffd097          	auipc	ra,0xffffd
-    80206272:	44a080e7          	jalr	1098(ra) # 802036b8 <releasesleep>
-}
-    80206276:	60e2                	ld	ra,24(sp)
-    80206278:	6442                	ld	s0,16(sp)
-    8020627a:	64a2                	ld	s1,8(sp)
-    8020627c:	6902                	ld	s2,0(sp)
-    8020627e:	6105                	addi	sp,sp,32
-    80206280:	8082                	ret
+    8020627c:	854a                	mv	a0,s2
+    8020627e:	ffffd097          	auipc	ra,0xffffd
+    80206282:	43c080e7          	jalr	1084(ra) # 802036ba <releasesleep>
+}
+    80206286:	60e2                	ld	ra,24(sp)
+    80206288:	6442                	ld	s0,16(sp)
+    8020628a:	64a2                	ld	s1,8(sp)
+    8020628c:	6902                	ld	s2,0(sp)
+    8020628e:	6105                	addi	sp,sp,32
+    80206290:	8082                	ret
         panic("eunlock");
-    80206282:	00004517          	auipc	a0,0x4
-    80206286:	a0e50513          	addi	a0,a0,-1522 # 80209c90 <digits+0x910>
-    8020628a:	ffffa097          	auipc	ra,0xffffa
-    8020628e:	eba080e7          	jalr	-326(ra) # 80200144 <panic>
-
-0000000080206292 <eput>:
-{
-    80206292:	1101                	addi	sp,sp,-32
-    80206294:	ec06                	sd	ra,24(sp)
-    80206296:	e822                	sd	s0,16(sp)
-    80206298:	e426                	sd	s1,8(sp)
-    8020629a:	e04a                	sd	s2,0(sp)
-    8020629c:	1000                	addi	s0,sp,32
-    8020629e:	84aa                	mv	s1,a0
+    80206292:	00004517          	auipc	a0,0x4
+    80206296:	a0650513          	addi	a0,a0,-1530 # 80209c98 <digits+0x918>
+    8020629a:	ffffa097          	auipc	ra,0xffffa
+    8020629e:	eaa080e7          	jalr	-342(ra) # 80200144 <panic>
+
+00000000802062a2 <eput>:
+{
+    802062a2:	1101                	addi	sp,sp,-32
+    802062a4:	ec06                	sd	ra,24(sp)
+    802062a6:	e822                	sd	s0,16(sp)
+    802062a8:	e426                	sd	s1,8(sp)
+    802062aa:	e04a                	sd	s2,0(sp)
+    802062ac:	1000                	addi	s0,sp,32
+    802062ae:	84aa                	mv	s1,a0
     acquire(&ecache.lock);
-    802062a0:	00018517          	auipc	a0,0x18
-    802062a4:	31850513          	addi	a0,a0,792 # 8021e5b8 <ecache>
-    802062a8:	ffffa097          	auipc	ra,0xffffa
-    802062ac:	41e080e7          	jalr	1054(ra) # 802006c6 <acquire>
+    802062b0:	00018517          	auipc	a0,0x18
+    802062b4:	30850513          	addi	a0,a0,776 # 8021e5b8 <ecache>
+    802062b8:	ffffa097          	auipc	ra,0xffffa
+    802062bc:	40e080e7          	jalr	1038(ra) # 802006c6 <acquire>
     if (entry != &root && entry->valid != 0 && entry->ref == 1) {
-    802062b0:	00018797          	auipc	a5,0x18
-    802062b4:	1a078793          	addi	a5,a5,416 # 8021e450 <root>
-    802062b8:	00f48a63          	beq	s1,a5,802062cc <eput+0x3a>
-    802062bc:	11649783          	lh	a5,278(s1)
-    802062c0:	c791                	beqz	a5,802062cc <eput+0x3a>
-    802062c2:	1184a703          	lw	a4,280(s1)
-    802062c6:	4785                	li	a5,1
-    802062c8:	02f70563          	beq	a4,a5,802062f2 <eput+0x60>
+    802062c0:	00018797          	auipc	a5,0x18
+    802062c4:	19078793          	addi	a5,a5,400 # 8021e450 <root>
+    802062c8:	00f48a63          	beq	s1,a5,802062dc <eput+0x3a>
+    802062cc:	11649783          	lh	a5,278(s1)
+    802062d0:	c791                	beqz	a5,802062dc <eput+0x3a>
+    802062d2:	1184a703          	lw	a4,280(s1)
+    802062d6:	4785                	li	a5,1
+    802062d8:	02f70563          	beq	a4,a5,80206302 <eput+0x60>
     entry->ref--;
-    802062cc:	1184a783          	lw	a5,280(s1)
-    802062d0:	37fd                	addiw	a5,a5,-1
-    802062d2:	10f4ac23          	sw	a5,280(s1)
+    802062dc:	1184a783          	lw	a5,280(s1)
+    802062e0:	37fd                	addiw	a5,a5,-1
+    802062e2:	10f4ac23          	sw	a5,280(s1)
     release(&ecache.lock);
-    802062d6:	00018517          	auipc	a0,0x18
-    802062da:	2e250513          	addi	a0,a0,738 # 8021e5b8 <ecache>
-    802062de:	ffffa097          	auipc	ra,0xffffa
-    802062e2:	43c080e7          	jalr	1084(ra) # 8020071a <release>
-}
-    802062e6:	60e2                	ld	ra,24(sp)
-    802062e8:	6442                	ld	s0,16(sp)
-    802062ea:	64a2                	ld	s1,8(sp)
-    802062ec:	6902                	ld	s2,0(sp)
-    802062ee:	6105                	addi	sp,sp,32
-    802062f0:	8082                	ret
+    802062e6:	00018517          	auipc	a0,0x18
+    802062ea:	2d250513          	addi	a0,a0,722 # 8021e5b8 <ecache>
+    802062ee:	ffffa097          	auipc	ra,0xffffa
+    802062f2:	42c080e7          	jalr	1068(ra) # 8020071a <release>
+}
+    802062f6:	60e2                	ld	ra,24(sp)
+    802062f8:	6442                	ld	s0,16(sp)
+    802062fa:	64a2                	ld	s1,8(sp)
+    802062fc:	6902                	ld	s2,0(sp)
+    802062fe:	6105                	addi	sp,sp,32
+    80206300:	8082                	ret
         acquiresleep(&entry->lock);
-    802062f2:	13848913          	addi	s2,s1,312
-    802062f6:	854a                	mv	a0,s2
-    802062f8:	ffffd097          	auipc	ra,0xffffd
-    802062fc:	36a080e7          	jalr	874(ra) # 80203662 <acquiresleep>
+    80206302:	13848913          	addi	s2,s1,312
+    80206306:	854a                	mv	a0,s2
+    80206308:	ffffd097          	auipc	ra,0xffffd
+    8020630c:	35c080e7          	jalr	860(ra) # 80203664 <acquiresleep>
         entry->next->prev = entry->prev;
-    80206300:	1284b703          	ld	a4,296(s1)
-    80206304:	1304b783          	ld	a5,304(s1)
-    80206308:	12f73823          	sd	a5,304(a4)
+    80206310:	1284b703          	ld	a4,296(s1)
+    80206314:	1304b783          	ld	a5,304(s1)
+    80206318:	12f73823          	sd	a5,304(a4)
         entry->prev->next = entry->next;
-    8020630c:	1284b703          	ld	a4,296(s1)
-    80206310:	12e7b423          	sd	a4,296(a5)
+    8020631c:	1284b703          	ld	a4,296(s1)
+    80206320:	12e7b423          	sd	a4,296(a5)
         entry->next = root.next;
-    80206314:	00018797          	auipc	a5,0x18
-    80206318:	11478793          	addi	a5,a5,276 # 8021e428 <fat>
-    8020631c:	1507b703          	ld	a4,336(a5)
-    80206320:	12e4b423          	sd	a4,296(s1)
+    80206324:	00018797          	auipc	a5,0x18
+    80206328:	10478793          	addi	a5,a5,260 # 8021e428 <fat>
+    8020632c:	1507b703          	ld	a4,336(a5)
+    80206330:	12e4b423          	sd	a4,296(s1)
         entry->prev = &root;
-    80206324:	00018697          	auipc	a3,0x18
-    80206328:	12c68693          	addi	a3,a3,300 # 8021e450 <root>
-    8020632c:	12d4b823          	sd	a3,304(s1)
+    80206334:	00018697          	auipc	a3,0x18
+    80206338:	11c68693          	addi	a3,a3,284 # 8021e450 <root>
+    8020633c:	12d4b823          	sd	a3,304(s1)
         root.next->prev = entry;
-    80206330:	12973823          	sd	s1,304(a4)
+    80206340:	12973823          	sd	s1,304(a4)
         root.next = entry;
-    80206334:	1497b823          	sd	s1,336(a5)
+    80206344:	1497b823          	sd	s1,336(a5)
         release(&ecache.lock);
-    80206338:	00018517          	auipc	a0,0x18
-    8020633c:	28050513          	addi	a0,a0,640 # 8021e5b8 <ecache>
-    80206340:	ffffa097          	auipc	ra,0xffffa
-    80206344:	3da080e7          	jalr	986(ra) # 8020071a <release>
+    80206348:	00018517          	auipc	a0,0x18
+    8020634c:	27050513          	addi	a0,a0,624 # 8021e5b8 <ecache>
+    80206350:	ffffa097          	auipc	ra,0xffffa
+    80206354:	3ca080e7          	jalr	970(ra) # 8020071a <release>
         if (entry->valid == -1) {       // this means some one has called eremove()
-    80206348:	11649703          	lh	a4,278(s1)
-    8020634c:	57fd                	li	a5,-1
-    8020634e:	06f70863          	beq	a4,a5,802063be <eput+0x12c>
+    80206358:	11649703          	lh	a4,278(s1)
+    8020635c:	57fd                	li	a5,-1
+    8020635e:	06f70863          	beq	a4,a5,802063ce <eput+0x12c>
             elock(entry->parent);
-    80206352:	1204b503          	ld	a0,288(s1)
-    80206356:	00000097          	auipc	ra,0x0
-    8020635a:	eb8080e7          	jalr	-328(ra) # 8020620e <elock>
+    80206362:	1204b503          	ld	a0,288(s1)
+    80206366:	00000097          	auipc	ra,0x0
+    8020636a:	eb8080e7          	jalr	-328(ra) # 8020621e <elock>
             eupdate(entry);
-    8020635e:	8526                	mv	a0,s1
-    80206360:	00000097          	auipc	ra,0x0
-    80206364:	c94080e7          	jalr	-876(ra) # 80205ff4 <eupdate>
+    8020636e:	8526                	mv	a0,s1
+    80206370:	00000097          	auipc	ra,0x0
+    80206374:	c94080e7          	jalr	-876(ra) # 80206004 <eupdate>
             eunlock(entry->parent);
-    80206368:	1204b503          	ld	a0,288(s1)
-    8020636c:	00000097          	auipc	ra,0x0
-    80206370:	ed8080e7          	jalr	-296(ra) # 80206244 <eunlock>
+    80206378:	1204b503          	ld	a0,288(s1)
+    8020637c:	00000097          	auipc	ra,0x0
+    80206380:	ed8080e7          	jalr	-296(ra) # 80206254 <eunlock>
         releasesleep(&entry->lock);
-    80206374:	854a                	mv	a0,s2
-    80206376:	ffffd097          	auipc	ra,0xffffd
-    8020637a:	342080e7          	jalr	834(ra) # 802036b8 <releasesleep>
+    80206384:	854a                	mv	a0,s2
+    80206386:	ffffd097          	auipc	ra,0xffffd
+    8020638a:	334080e7          	jalr	820(ra) # 802036ba <releasesleep>
         struct dirent *eparent = entry->parent;
-    8020637e:	1204b903          	ld	s2,288(s1)
+    8020638e:	1204b903          	ld	s2,288(s1)
         acquire(&ecache.lock);
-    80206382:	00018517          	auipc	a0,0x18
-    80206386:	23650513          	addi	a0,a0,566 # 8021e5b8 <ecache>
-    8020638a:	ffffa097          	auipc	ra,0xffffa
-    8020638e:	33c080e7          	jalr	828(ra) # 802006c6 <acquire>
+    80206392:	00018517          	auipc	a0,0x18
+    80206396:	22650513          	addi	a0,a0,550 # 8021e5b8 <ecache>
+    8020639a:	ffffa097          	auipc	ra,0xffffa
+    8020639e:	32c080e7          	jalr	812(ra) # 802006c6 <acquire>
         entry->ref--;
-    80206392:	1184a783          	lw	a5,280(s1)
-    80206396:	37fd                	addiw	a5,a5,-1
-    80206398:	10f4ac23          	sw	a5,280(s1)
+    802063a2:	1184a783          	lw	a5,280(s1)
+    802063a6:	37fd                	addiw	a5,a5,-1
+    802063a8:	10f4ac23          	sw	a5,280(s1)
         release(&ecache.lock);
-    8020639c:	00018517          	auipc	a0,0x18
-    802063a0:	21c50513          	addi	a0,a0,540 # 8021e5b8 <ecache>
-    802063a4:	ffffa097          	auipc	ra,0xffffa
-    802063a8:	376080e7          	jalr	886(ra) # 8020071a <release>
+    802063ac:	00018517          	auipc	a0,0x18
+    802063b0:	20c50513          	addi	a0,a0,524 # 8021e5b8 <ecache>
+    802063b4:	ffffa097          	auipc	ra,0xffffa
+    802063b8:	366080e7          	jalr	870(ra) # 8020071a <release>
         if (entry->ref == 0) {
-    802063ac:	1184a783          	lw	a5,280(s1)
-    802063b0:	fb9d                	bnez	a5,802062e6 <eput+0x54>
+    802063bc:	1184a783          	lw	a5,280(s1)
+    802063c0:	fb9d                	bnez	a5,802062f6 <eput+0x54>
             eput(eparent);
-    802063b2:	854a                	mv	a0,s2
-    802063b4:	00000097          	auipc	ra,0x0
-    802063b8:	ede080e7          	jalr	-290(ra) # 80206292 <eput>
-    802063bc:	b72d                	j	802062e6 <eput+0x54>
+    802063c2:	854a                	mv	a0,s2
+    802063c4:	00000097          	auipc	ra,0x0
+    802063c8:	ede080e7          	jalr	-290(ra) # 802062a2 <eput>
+    802063cc:	b72d                	j	802062f6 <eput+0x54>
             etrunc(entry);
-    802063be:	8526                	mv	a0,s1
-    802063c0:	00000097          	auipc	ra,0x0
-    802063c4:	de4080e7          	jalr	-540(ra) # 802061a4 <etrunc>
-    802063c8:	b775                	j	80206374 <eput+0xe2>
-
-00000000802063ca <estat>:
-{
-    802063ca:	1101                	addi	sp,sp,-32
-    802063cc:	ec06                	sd	ra,24(sp)
-    802063ce:	e822                	sd	s0,16(sp)
-    802063d0:	e426                	sd	s1,8(sp)
-    802063d2:	e04a                	sd	s2,0(sp)
-    802063d4:	1000                	addi	s0,sp,32
-    802063d6:	892a                	mv	s2,a0
-    802063d8:	84ae                	mv	s1,a1
+    802063ce:	8526                	mv	a0,s1
+    802063d0:	00000097          	auipc	ra,0x0
+    802063d4:	de4080e7          	jalr	-540(ra) # 802061b4 <etrunc>
+    802063d8:	b775                	j	80206384 <eput+0xe2>
+
+00000000802063da <estat>:
+{
+    802063da:	1101                	addi	sp,sp,-32
+    802063dc:	ec06                	sd	ra,24(sp)
+    802063de:	e822                	sd	s0,16(sp)
+    802063e0:	e426                	sd	s1,8(sp)
+    802063e2:	e04a                	sd	s2,0(sp)
+    802063e4:	1000                	addi	s0,sp,32
+    802063e6:	892a                	mv	s2,a0
+    802063e8:	84ae                	mv	s1,a1
     strncpy(st->name, de->filename, STAT_MAX_NAME);
-    802063da:	02000613          	li	a2,32
-    802063de:	85aa                	mv	a1,a0
-    802063e0:	8526                	mv	a0,s1
-    802063e2:	ffffa097          	auipc	ra,0xffffa
-    802063e6:	494080e7          	jalr	1172(ra) # 80200876 <strncpy>
+    802063ea:	02000613          	li	a2,32
+    802063ee:	85aa                	mv	a1,a0
+    802063f0:	8526                	mv	a0,s1
+    802063f2:	ffffa097          	auipc	ra,0xffffa
+    802063f6:	484080e7          	jalr	1156(ra) # 80200876 <strncpy>
     st->type = (de->attribute & ATTR_DIRECTORY) ? T_DIR : T_FILE;
-    802063ea:	10094783          	lbu	a5,256(s2)
-    802063ee:	8bc1                	andi	a5,a5,16
-    802063f0:	0017b793          	seqz	a5,a5
-    802063f4:	0785                	addi	a5,a5,1
-    802063f6:	02f49423          	sh	a5,40(s1)
+    802063fa:	10094783          	lbu	a5,256(s2)
+    802063fe:	8bc1                	andi	a5,a5,16
+    80206400:	0017b793          	seqz	a5,a5
+    80206404:	0785                	addi	a5,a5,1
+    80206406:	02f49423          	sh	a5,40(s1)
     st->dev = de->dev;
-    802063fa:	11494783          	lbu	a5,276(s2)
-    802063fe:	d0dc                	sw	a5,36(s1)
+    8020640a:	11494783          	lbu	a5,276(s2)
+    8020640e:	d0dc                	sw	a5,36(s1)
     st->size = de->file_size;
-    80206400:	10896783          	lwu	a5,264(s2)
-    80206404:	f89c                	sd	a5,48(s1)
+    80206410:	10896783          	lwu	a5,264(s2)
+    80206414:	f89c                	sd	a5,48(s1)
 }
-    80206406:	60e2                	ld	ra,24(sp)
-    80206408:	6442                	ld	s0,16(sp)
-    8020640a:	64a2                	ld	s1,8(sp)
-    8020640c:	6902                	ld	s2,0(sp)
-    8020640e:	6105                	addi	sp,sp,32
-    80206410:	8082                	ret
+    80206416:	60e2                	ld	ra,24(sp)
+    80206418:	6442                	ld	s0,16(sp)
+    8020641a:	64a2                	ld	s1,8(sp)
+    8020641c:	6902                	ld	s2,0(sp)
+    8020641e:	6105                	addi	sp,sp,32
+    80206420:	8082                	ret
 
-0000000080206412 <enext>:
+0000000080206422 <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)
 {
-    80206412:	7119                	addi	sp,sp,-128
-    80206414:	fc86                	sd	ra,120(sp)
-    80206416:	f8a2                	sd	s0,112(sp)
-    80206418:	f4a6                	sd	s1,104(sp)
-    8020641a:	f0ca                	sd	s2,96(sp)
-    8020641c:	ecce                	sd	s3,88(sp)
-    8020641e:	e8d2                	sd	s4,80(sp)
-    80206420:	e4d6                	sd	s5,72(sp)
-    80206422:	e0da                	sd	s6,64(sp)
-    80206424:	fc5e                	sd	s7,56(sp)
-    80206426:	f862                	sd	s8,48(sp)
-    80206428:	f466                	sd	s9,40(sp)
-    8020642a:	0100                	addi	s0,sp,128
+    80206422:	7119                	addi	sp,sp,-128
+    80206424:	fc86                	sd	ra,120(sp)
+    80206426:	f8a2                	sd	s0,112(sp)
+    80206428:	f4a6                	sd	s1,104(sp)
+    8020642a:	f0ca                	sd	s2,96(sp)
+    8020642c:	ecce                	sd	s3,88(sp)
+    8020642e:	e8d2                	sd	s4,80(sp)
+    80206430:	e4d6                	sd	s5,72(sp)
+    80206432:	e0da                	sd	s6,64(sp)
+    80206434:	fc5e                	sd	s7,56(sp)
+    80206436:	f862                	sd	s8,48(sp)
+    80206438:	f466                	sd	s9,40(sp)
+    8020643a:	0100                	addi	s0,sp,128
     if (!(dp->attribute & ATTR_DIRECTORY))
-    8020642c:	10054783          	lbu	a5,256(a0)
-    80206430:	8bc1                	andi	a5,a5,16
-    80206432:	cf95                	beqz	a5,8020646e <enext+0x5c>
-    80206434:	892a                	mv	s2,a0
-    80206436:	89ae                	mv	s3,a1
-    80206438:	84b2                	mv	s1,a2
-    8020643a:	8ab6                	mv	s5,a3
+    8020643c:	10054783          	lbu	a5,256(a0)
+    80206440:	8bc1                	andi	a5,a5,16
+    80206442:	cf95                	beqz	a5,8020647e <enext+0x5c>
+    80206444:	892a                	mv	s2,a0
+    80206446:	89ae                	mv	s3,a1
+    80206448:	84b2                	mv	s1,a2
+    8020644a:	8ab6                	mv	s5,a3
         panic("enext not dir");
     if (ep->valid)
-    8020643c:	11659783          	lh	a5,278(a1)
-    80206440:	ef9d                	bnez	a5,8020647e <enext+0x6c>
+    8020644c:	11659783          	lh	a5,278(a1)
+    80206450:	ef9d                	bnez	a5,8020648e <enext+0x6c>
         panic("enext ep valid");
     if (off % 32)
-    80206442:	01f67793          	andi	a5,a2,31
-    80206446:	e7a1                	bnez	a5,8020648e <enext+0x7c>
+    80206452:	01f67793          	andi	a5,a2,31
+    80206456:	e7a1                	bnez	a5,8020649e <enext+0x7c>
         panic("enext not align");
     if (dp->valid != 1) { return -1; }
-    80206448:	11651703          	lh	a4,278(a0)
-    8020644c:	4785                	li	a5,1
-    8020644e:	557d                	li	a0,-1
-    80206450:	04f70763          	beq	a4,a5,8020649e <enext+0x8c>
+    80206458:	11651703          	lh	a4,278(a0)
+    8020645c:	4785                	li	a5,1
+    8020645e:	557d                	li	a0,-1
+    80206460:	04f70763          	beq	a4,a5,802064ae <enext+0x8c>
             read_entry_info(ep, &de);
             return 1;
         }
     }
     return -1;
 }
-    80206454:	70e6                	ld	ra,120(sp)
-    80206456:	7446                	ld	s0,112(sp)
-    80206458:	74a6                	ld	s1,104(sp)
-    8020645a:	7906                	ld	s2,96(sp)
-    8020645c:	69e6                	ld	s3,88(sp)
-    8020645e:	6a46                	ld	s4,80(sp)
-    80206460:	6aa6                	ld	s5,72(sp)
-    80206462:	6b06                	ld	s6,64(sp)
-    80206464:	7be2                	ld	s7,56(sp)
-    80206466:	7c42                	ld	s8,48(sp)
-    80206468:	7ca2                	ld	s9,40(sp)
-    8020646a:	6109                	addi	sp,sp,128
-    8020646c:	8082                	ret
+    80206464:	70e6                	ld	ra,120(sp)
+    80206466:	7446                	ld	s0,112(sp)
+    80206468:	74a6                	ld	s1,104(sp)
+    8020646a:	7906                	ld	s2,96(sp)
+    8020646c:	69e6                	ld	s3,88(sp)
+    8020646e:	6a46                	ld	s4,80(sp)
+    80206470:	6aa6                	ld	s5,72(sp)
+    80206472:	6b06                	ld	s6,64(sp)
+    80206474:	7be2                	ld	s7,56(sp)
+    80206476:	7c42                	ld	s8,48(sp)
+    80206478:	7ca2                	ld	s9,40(sp)
+    8020647a:	6109                	addi	sp,sp,128
+    8020647c:	8082                	ret
         panic("enext not dir");
-    8020646e:	00004517          	auipc	a0,0x4
-    80206472:	82a50513          	addi	a0,a0,-2006 # 80209c98 <digits+0x918>
-    80206476:	ffffa097          	auipc	ra,0xffffa
-    8020647a:	cce080e7          	jalr	-818(ra) # 80200144 <panic>
-        panic("enext ep valid");
     8020647e:	00004517          	auipc	a0,0x4
-    80206482:	82a50513          	addi	a0,a0,-2006 # 80209ca8 <digits+0x928>
+    80206482:	82250513          	addi	a0,a0,-2014 # 80209ca0 <digits+0x920>
     80206486:	ffffa097          	auipc	ra,0xffffa
     8020648a:	cbe080e7          	jalr	-834(ra) # 80200144 <panic>
-        panic("enext not align");
+        panic("enext ep valid");
     8020648e:	00004517          	auipc	a0,0x4
-    80206492:	82a50513          	addi	a0,a0,-2006 # 80209cb8 <digits+0x938>
+    80206492:	82250513          	addi	a0,a0,-2014 # 80209cb0 <digits+0x930>
     80206496:	ffffa097          	auipc	ra,0xffffa
     8020649a:	cae080e7          	jalr	-850(ra) # 80200144 <panic>
-    memset(ep->filename, 0, FAT32_MAX_FILENAME + 1);
-    8020649e:	10000613          	li	a2,256
-    802064a2:	4581                	li	a1,0
-    802064a4:	854e                	mv	a0,s3
+        panic("enext not align");
+    8020649e:	00004517          	auipc	a0,0x4
+    802064a2:	82250513          	addi	a0,a0,-2014 # 80209cc0 <digits+0x940>
     802064a6:	ffffa097          	auipc	ra,0xffffa
-    802064aa:	2bc080e7          	jalr	700(ra) # 80200762 <memset>
+    802064aa:	c9e080e7          	jalr	-866(ra) # 80200144 <panic>
+    memset(ep->filename, 0, FAT32_MAX_FILENAME + 1);
+    802064ae:	10000613          	li	a2,256
+    802064b2:	4581                	li	a1,0
+    802064b4:	854e                	mv	a0,s3
+    802064b6:	ffffa097          	auipc	ra,0xffffa
+    802064ba:	2ac080e7          	jalr	684(ra) # 80200762 <memset>
     int cnt = 0;
-    802064ae:	4b01                	li	s6,0
+    802064be:	4b01                	li	s6,0
     for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) {
-    802064b0:	5bfd                	li	s7,-1
+    802064c0:	5bfd                	li	s7,-1
         if (rw_clus(dp->cur_clus, 0, 0, (uint64)&de, off2, 32) != 32 || de.lne.order == END_OF_ENTRY) {
-    802064b2:	f8040a13          	addi	s4,s0,-128
+    802064c2:	f8040a13          	addi	s4,s0,-128
         if (de.lne.order == EMPTY_ENTRY) {
-    802064b6:	0e500c13          	li	s8,229
+    802064c6:	0e500c13          	li	s8,229
         if (de.lne.attr == ATTR_LONG_NAME) {
-    802064ba:	4cbd                	li	s9,15
+    802064ca:	4cbd                	li	s9,15
     for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) {
-    802064bc:	a03d                	j	802064ea <enext+0xd8>
+    802064cc:	a03d                	j	802064fa <enext+0xd8>
             cnt++;
-    802064be:	2b05                	addiw	s6,s6,1
+    802064ce:	2b05                	addiw	s6,s6,1
             continue;
-    802064c0:	a01d                	j	802064e6 <enext+0xd4>
+    802064d0:	a01d                	j	802064f6 <enext+0xd4>
             *count = cnt;
-    802064c2:	016aa023          	sw	s6,0(s5)
+    802064d2:	016aa023          	sw	s6,0(s5)
             return 0;
-    802064c6:	4501                	li	a0,0
-    802064c8:	b771                	j	80206454 <enext+0x42>
+    802064d6:	4501                	li	a0,0
+    802064d8:	b771                	j	80206464 <enext+0x42>
             read_entry_name(ep->filename + (lcnt - 1) * CHAR_LONG_NAME, &de);
-    802064ca:	fff7079b          	addiw	a5,a4,-1
-    802064ce:	0017951b          	slliw	a0,a5,0x1
-    802064d2:	9d3d                	addw	a0,a0,a5
-    802064d4:	0025151b          	slliw	a0,a0,0x2
-    802064d8:	9d3d                	addw	a0,a0,a5
-    802064da:	85d2                	mv	a1,s4
-    802064dc:	954e                	add	a0,a0,s3
-    802064de:	fffff097          	auipc	ra,0xfffff
-    802064e2:	17a080e7          	jalr	378(ra) # 80205658 <read_entry_name>
+    802064da:	fff7079b          	addiw	a5,a4,-1
+    802064de:	0017951b          	slliw	a0,a5,0x1
+    802064e2:	9d3d                	addw	a0,a0,a5
+    802064e4:	0025151b          	slliw	a0,a0,0x2
+    802064e8:	9d3d                	addw	a0,a0,a5
+    802064ea:	85d2                	mv	a1,s4
+    802064ec:	954e                	add	a0,a0,s3
+    802064ee:	fffff097          	auipc	ra,0xfffff
+    802064f2:	17a080e7          	jalr	378(ra) # 80205668 <read_entry_name>
     for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) {
-    802064e6:	0204849b          	addiw	s1,s1,32
-    802064ea:	4601                	li	a2,0
-    802064ec:	85a6                	mv	a1,s1
-    802064ee:	854a                	mv	a0,s2
-    802064f0:	fffff097          	auipc	ra,0xfffff
-    802064f4:	e06080e7          	jalr	-506(ra) # 802052f6 <reloc_clus>
-    802064f8:	f5750ee3          	beq	a0,s7,80206454 <enext+0x42>
+    802064f6:	0204849b          	addiw	s1,s1,32
+    802064fa:	4601                	li	a2,0
+    802064fc:	85a6                	mv	a1,s1
+    802064fe:	854a                	mv	a0,s2
+    80206500:	fffff097          	auipc	ra,0xfffff
+    80206504:	e06080e7          	jalr	-506(ra) # 80205306 <reloc_clus>
+    80206508:	f5750ee3          	beq	a0,s7,80206464 <enext+0x42>
         if (rw_clus(dp->cur_clus, 0, 0, (uint64)&de, off2, 32) != 32 || de.lne.order == END_OF_ENTRY) {
-    802064fc:	02000793          	li	a5,32
-    80206500:	0005071b          	sext.w	a4,a0
-    80206504:	86d2                	mv	a3,s4
-    80206506:	4601                	li	a2,0
-    80206508:	4581                	li	a1,0
-    8020650a:	10c92503          	lw	a0,268(s2)
-    8020650e:	fffff097          	auipc	ra,0xfffff
-    80206512:	ef0080e7          	jalr	-272(ra) # 802053fe <rw_clus>
-    80206516:	2501                	sext.w	a0,a0
-    80206518:	02000793          	li	a5,32
-    8020651c:	06f51c63          	bne	a0,a5,80206594 <enext+0x182>
-    80206520:	f8044783          	lbu	a5,-128(s0)
-    80206524:	cbb5                	beqz	a5,80206598 <enext+0x186>
+    8020650c:	02000793          	li	a5,32
+    80206510:	0005071b          	sext.w	a4,a0
+    80206514:	86d2                	mv	a3,s4
+    80206516:	4601                	li	a2,0
+    80206518:	4581                	li	a1,0
+    8020651a:	10c92503          	lw	a0,268(s2)
+    8020651e:	fffff097          	auipc	ra,0xfffff
+    80206522:	ef0080e7          	jalr	-272(ra) # 8020540e <rw_clus>
+    80206526:	2501                	sext.w	a0,a0
+    80206528:	02000793          	li	a5,32
+    8020652c:	06f51c63          	bne	a0,a5,802065a4 <enext+0x182>
+    80206530:	f8044783          	lbu	a5,-128(s0)
+    80206534:	cbb5                	beqz	a5,802065a8 <enext+0x186>
         if (de.lne.order == EMPTY_ENTRY) {
-    80206526:	f9878ce3          	beq	a5,s8,802064be <enext+0xac>
+    80206536:	f9878ce3          	beq	a5,s8,802064ce <enext+0xac>
         } else if (cnt) {
-    8020652a:	f80b1ce3          	bnez	s6,802064c2 <enext+0xb0>
+    8020653a:	f80b1ce3          	bnez	s6,802064d2 <enext+0xb0>
         if (de.lne.attr == ATTR_LONG_NAME) {
-    8020652e:	f8b44703          	lbu	a4,-117(s0)
-    80206532:	01971d63          	bne	a4,s9,8020654c <enext+0x13a>
+    8020653e:	f8b44703          	lbu	a4,-117(s0)
+    80206542:	01971d63          	bne	a4,s9,8020655c <enext+0x13a>
             int lcnt = de.lne.order & ~LAST_LONG_ENTRY;
-    80206536:	0bf7f713          	andi	a4,a5,191
+    80206546:	0bf7f713          	andi	a4,a5,191
             if (de.lne.order & LAST_LONG_ENTRY) {
-    8020653a:	0407f793          	andi	a5,a5,64
-    8020653e:	d7d1                	beqz	a5,802064ca <enext+0xb8>
+    8020654a:	0407f793          	andi	a5,a5,64
+    8020654e:	d7d1                	beqz	a5,802064da <enext+0xb8>
                 *count = lcnt + 1;                              // plus the s-n-e;
-    80206540:	0017079b          	addiw	a5,a4,1
-    80206544:	00faa023          	sw	a5,0(s5)
+    80206550:	0017079b          	addiw	a5,a4,1
+    80206554:	00faa023          	sw	a5,0(s5)
                 count = 0;
-    80206548:	4a81                	li	s5,0
-    8020654a:	b741                	j	802064ca <enext+0xb8>
+    80206558:	4a81                	li	s5,0
+    8020655a:	b741                	j	802064da <enext+0xb8>
             if (count) {
-    8020654c:	000a8c63          	beqz	s5,80206564 <enext+0x152>
+    8020655c:	000a8c63          	beqz	s5,80206574 <enext+0x152>
                 *count = 1;
-    80206550:	4785                	li	a5,1
-    80206552:	00faa023          	sw	a5,0(s5)
+    80206560:	4785                	li	a5,1
+    80206562:	00faa023          	sw	a5,0(s5)
                 read_entry_name(ep->filename, &de);
-    80206556:	f8040593          	addi	a1,s0,-128
-    8020655a:	854e                	mv	a0,s3
-    8020655c:	fffff097          	auipc	ra,0xfffff
-    80206560:	0fc080e7          	jalr	252(ra) # 80205658 <read_entry_name>
+    80206566:	f8040593          	addi	a1,s0,-128
+    8020656a:	854e                	mv	a0,s3
+    8020656c:	fffff097          	auipc	ra,0xfffff
+    80206570:	0fc080e7          	jalr	252(ra) # 80205668 <read_entry_name>
     entry->attribute = d->sne.attr;
-    80206564:	f8b44783          	lbu	a5,-117(s0)
-    80206568:	10f98023          	sb	a5,256(s3)
+    80206574:	f8b44783          	lbu	a5,-117(s0)
+    80206578:	10f98023          	sb	a5,256(s3)
     entry->first_clus = ((uint32)d->sne.fst_clus_hi << 16) | d->sne.fst_clus_lo;
-    8020656c:	f9445783          	lhu	a5,-108(s0)
-    80206570:	0107979b          	slliw	a5,a5,0x10
-    80206574:	f9a45703          	lhu	a4,-102(s0)
-    80206578:	8fd9                	or	a5,a5,a4
-    8020657a:	2781                	sext.w	a5,a5
-    8020657c:	10f9a223          	sw	a5,260(s3)
+    8020657c:	f9445783          	lhu	a5,-108(s0)
+    80206580:	0107979b          	slliw	a5,a5,0x10
+    80206584:	f9a45703          	lhu	a4,-102(s0)
+    80206588:	8fd9                	or	a5,a5,a4
+    8020658a:	2781                	sext.w	a5,a5
+    8020658c:	10f9a223          	sw	a5,260(s3)
     entry->file_size = d->sne.file_size;
-    80206580:	f9c42703          	lw	a4,-100(s0)
-    80206584:	10e9a423          	sw	a4,264(s3)
+    80206590:	f9c42703          	lw	a4,-100(s0)
+    80206594:	10e9a423          	sw	a4,264(s3)
     entry->cur_clus = entry->first_clus;
-    80206588:	10f9a623          	sw	a5,268(s3)
+    80206598:	10f9a623          	sw	a5,268(s3)
     entry->clus_cnt = 0;
-    8020658c:	1009a823          	sw	zero,272(s3)
+    8020659c:	1009a823          	sw	zero,272(s3)
             return 1;
-    80206590:	4505                	li	a0,1
+    802065a0:	4505                	li	a0,1
 }
-    80206592:	b5c9                	j	80206454 <enext+0x42>
+    802065a2:	b5c9                	j	80206464 <enext+0x42>
             return -1;
-    80206594:	557d                	li	a0,-1
-    80206596:	bd7d                	j	80206454 <enext+0x42>
-    80206598:	557d                	li	a0,-1
-    8020659a:	bd6d                	j	80206454 <enext+0x42>
+    802065a4:	557d                	li	a0,-1
+    802065a6:	bd7d                	j	80206464 <enext+0x42>
+    802065a8:	557d                	li	a0,-1
+    802065aa:	bd6d                	j	80206464 <enext+0x42>
 
-000000008020659c <dirlookup>:
+00000000802065ac <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)
 {
-    8020659c:	711d                	addi	sp,sp,-96
-    8020659e:	ec86                	sd	ra,88(sp)
-    802065a0:	e8a2                	sd	s0,80(sp)
-    802065a2:	e4a6                	sd	s1,72(sp)
-    802065a4:	e0ca                	sd	s2,64(sp)
-    802065a6:	fc4e                	sd	s3,56(sp)
-    802065a8:	f852                	sd	s4,48(sp)
-    802065aa:	f456                	sd	s5,40(sp)
-    802065ac:	f05a                	sd	s6,32(sp)
-    802065ae:	ec5e                	sd	s7,24(sp)
-    802065b0:	1080                	addi	s0,sp,96
+    802065ac:	711d                	addi	sp,sp,-96
+    802065ae:	ec86                	sd	ra,88(sp)
+    802065b0:	e8a2                	sd	s0,80(sp)
+    802065b2:	e4a6                	sd	s1,72(sp)
+    802065b4:	e0ca                	sd	s2,64(sp)
+    802065b6:	fc4e                	sd	s3,56(sp)
+    802065b8:	f852                	sd	s4,48(sp)
+    802065ba:	f456                	sd	s5,40(sp)
+    802065bc:	f05a                	sd	s6,32(sp)
+    802065be:	ec5e                	sd	s7,24(sp)
+    802065c0:	1080                	addi	s0,sp,96
     if (!(dp->attribute & ATTR_DIRECTORY))
-    802065b2:	10054783          	lbu	a5,256(a0)
-    802065b6:	8bc1                	andi	a5,a5,16
-    802065b8:	cbb1                	beqz	a5,8020660c <dirlookup+0x70>
-    802065ba:	84aa                	mv	s1,a0
-    802065bc:	89ae                	mv	s3,a1
-    802065be:	8ab2                	mv	s5,a2
+    802065c2:	10054783          	lbu	a5,256(a0)
+    802065c6:	8bc1                	andi	a5,a5,16
+    802065c8:	cbb1                	beqz	a5,8020661c <dirlookup+0x70>
+    802065ca:	84aa                	mv	s1,a0
+    802065cc:	89ae                	mv	s3,a1
+    802065ce:	8ab2                	mv	s5,a2
         panic("dirlookup not DIR");
     if (strncmp(filename, ".", FAT32_MAX_FILENAME) == 0) {
-    802065c0:	0ff00613          	li	a2,255
-    802065c4:	00003597          	auipc	a1,0x3
-    802065c8:	71c58593          	addi	a1,a1,1820 # 80209ce0 <digits+0x960>
-    802065cc:	854e                	mv	a0,s3
-    802065ce:	ffffa097          	auipc	ra,0xffffa
-    802065d2:	26c080e7          	jalr	620(ra) # 8020083a <strncmp>
-    802065d6:	c139                	beqz	a0,8020661c <dirlookup+0x80>
+    802065d0:	0ff00613          	li	a2,255
+    802065d4:	00003597          	auipc	a1,0x3
+    802065d8:	71458593          	addi	a1,a1,1812 # 80209ce8 <digits+0x968>
+    802065dc:	854e                	mv	a0,s3
+    802065de:	ffffa097          	auipc	ra,0xffffa
+    802065e2:	25c080e7          	jalr	604(ra) # 8020083a <strncmp>
+    802065e6:	c139                	beqz	a0,8020662c <dirlookup+0x80>
         return edup(dp);
     } else if (strncmp(filename, "..", FAT32_MAX_FILENAME) == 0) {
-    802065d8:	0ff00613          	li	a2,255
-    802065dc:	00003597          	auipc	a1,0x3
-    802065e0:	70c58593          	addi	a1,a1,1804 # 80209ce8 <digits+0x968>
-    802065e4:	854e                	mv	a0,s3
-    802065e6:	ffffa097          	auipc	ra,0xffffa
-    802065ea:	254080e7          	jalr	596(ra) # 8020083a <strncmp>
-    802065ee:	e125                	bnez	a0,8020664e <dirlookup+0xb2>
+    802065e8:	0ff00613          	li	a2,255
+    802065ec:	00003597          	auipc	a1,0x3
+    802065f0:	70458593          	addi	a1,a1,1796 # 80209cf0 <digits+0x970>
+    802065f4:	854e                	mv	a0,s3
+    802065f6:	ffffa097          	auipc	ra,0xffffa
+    802065fa:	244080e7          	jalr	580(ra) # 8020083a <strncmp>
+    802065fe:	e125                	bnez	a0,8020665e <dirlookup+0xb2>
         if (dp == &root) {
-    802065f0:	00018797          	auipc	a5,0x18
-    802065f4:	e6078793          	addi	a5,a5,-416 # 8021e450 <root>
-    802065f8:	04f48463          	beq	s1,a5,80206640 <dirlookup+0xa4>
+    80206600:	00018797          	auipc	a5,0x18
+    80206604:	e5078793          	addi	a5,a5,-432 # 8021e450 <root>
+    80206608:	04f48463          	beq	s1,a5,80206650 <dirlookup+0xa4>
             return edup(&root);
         }
         return edup(dp->parent);
-    802065fc:	1204b503          	ld	a0,288(s1)
-    80206600:	00000097          	auipc	ra,0x0
-    80206604:	9b0080e7          	jalr	-1616(ra) # 80205fb0 <edup>
-    80206608:	892a                	mv	s2,a0
-    8020660a:	a839                	j	80206628 <dirlookup+0x8c>
+    8020660c:	1204b503          	ld	a0,288(s1)
+    80206610:	00000097          	auipc	ra,0x0
+    80206614:	9b0080e7          	jalr	-1616(ra) # 80205fc0 <edup>
+    80206618:	892a                	mv	s2,a0
+    8020661a:	a839                	j	80206638 <dirlookup+0x8c>
         panic("dirlookup not DIR");
-    8020660c:	00003517          	auipc	a0,0x3
-    80206610:	6bc50513          	addi	a0,a0,1724 # 80209cc8 <digits+0x948>
-    80206614:	ffffa097          	auipc	ra,0xffffa
-    80206618:	b30080e7          	jalr	-1232(ra) # 80200144 <panic>
+    8020661c:	00003517          	auipc	a0,0x3
+    80206620:	6b450513          	addi	a0,a0,1716 # 80209cd0 <digits+0x950>
+    80206624:	ffffa097          	auipc	ra,0xffffa
+    80206628:	b20080e7          	jalr	-1248(ra) # 80200144 <panic>
         return edup(dp);
-    8020661c:	8526                	mv	a0,s1
-    8020661e:	00000097          	auipc	ra,0x0
-    80206622:	992080e7          	jalr	-1646(ra) # 80205fb0 <edup>
-    80206626:	892a                	mv	s2,a0
+    8020662c:	8526                	mv	a0,s1
+    8020662e:	00000097          	auipc	ra,0x0
+    80206632:	992080e7          	jalr	-1646(ra) # 80205fc0 <edup>
+    80206636:	892a                	mv	s2,a0
     if (poff) {
         *poff = off;
     }
     eput(ep);
     return NULL;
 }
-    80206628:	854a                	mv	a0,s2
-    8020662a:	60e6                	ld	ra,88(sp)
-    8020662c:	6446                	ld	s0,80(sp)
-    8020662e:	64a6                	ld	s1,72(sp)
-    80206630:	6906                	ld	s2,64(sp)
-    80206632:	79e2                	ld	s3,56(sp)
-    80206634:	7a42                	ld	s4,48(sp)
-    80206636:	7aa2                	ld	s5,40(sp)
-    80206638:	7b02                	ld	s6,32(sp)
-    8020663a:	6be2                	ld	s7,24(sp)
-    8020663c:	6125                	addi	sp,sp,96
-    8020663e:	8082                	ret
+    80206638:	854a                	mv	a0,s2
+    8020663a:	60e6                	ld	ra,88(sp)
+    8020663c:	6446                	ld	s0,80(sp)
+    8020663e:	64a6                	ld	s1,72(sp)
+    80206640:	6906                	ld	s2,64(sp)
+    80206642:	79e2                	ld	s3,56(sp)
+    80206644:	7a42                	ld	s4,48(sp)
+    80206646:	7aa2                	ld	s5,40(sp)
+    80206648:	7b02                	ld	s6,32(sp)
+    8020664a:	6be2                	ld	s7,24(sp)
+    8020664c:	6125                	addi	sp,sp,96
+    8020664e:	8082                	ret
             return edup(&root);
-    80206640:	853e                	mv	a0,a5
-    80206642:	00000097          	auipc	ra,0x0
-    80206646:	96e080e7          	jalr	-1682(ra) # 80205fb0 <edup>
-    8020664a:	892a                	mv	s2,a0
-    8020664c:	bff1                	j	80206628 <dirlookup+0x8c>
+    80206650:	853e                	mv	a0,a5
+    80206652:	00000097          	auipc	ra,0x0
+    80206656:	96e080e7          	jalr	-1682(ra) # 80205fc0 <edup>
+    8020665a:	892a                	mv	s2,a0
+    8020665c:	bff1                	j	80206638 <dirlookup+0x8c>
     if (dp->valid != 1) {
-    8020664e:	11649703          	lh	a4,278(s1)
-    80206652:	4785                	li	a5,1
+    8020665e:	11649703          	lh	a4,278(s1)
+    80206662:	4785                	li	a5,1
         return NULL;
-    80206654:	4901                	li	s2,0
+    80206664:	4901                	li	s2,0
     if (dp->valid != 1) {
-    80206656:	fcf719e3          	bne	a4,a5,80206628 <dirlookup+0x8c>
+    80206666:	fcf719e3          	bne	a4,a5,80206638 <dirlookup+0x8c>
     struct dirent *ep = eget(dp, filename);
-    8020665a:	85ce                	mv	a1,s3
-    8020665c:	8526                	mv	a0,s1
-    8020665e:	fffff097          	auipc	ra,0xfffff
-    80206662:	eec080e7          	jalr	-276(ra) # 8020554a <eget>
-    80206666:	892a                	mv	s2,a0
+    8020666a:	85ce                	mv	a1,s3
+    8020666c:	8526                	mv	a0,s1
+    8020666e:	fffff097          	auipc	ra,0xfffff
+    80206672:	eec080e7          	jalr	-276(ra) # 8020555a <eget>
+    80206676:	892a                	mv	s2,a0
     if (ep->valid == 1) { return ep; }                               // ecache hits
-    80206668:	11651703          	lh	a4,278(a0)
-    8020666c:	4785                	li	a5,1
-    8020666e:	faf70de3          	beq	a4,a5,80206628 <dirlookup+0x8c>
+    80206678:	11651703          	lh	a4,278(a0)
+    8020667c:	4785                	li	a5,1
+    8020667e:	faf70de3          	beq	a4,a5,80206638 <dirlookup+0x8c>
     int len = strlen(filename);
-    80206672:	854e                	mv	a0,s3
-    80206674:	ffffa097          	auipc	ra,0xffffa
-    80206678:	272080e7          	jalr	626(ra) # 802008e6 <strlen>
+    80206682:	854e                	mv	a0,s3
+    80206684:	ffffa097          	auipc	ra,0xffffa
+    80206688:	262080e7          	jalr	610(ra) # 802008e6 <strlen>
     int count = 0;
-    8020667c:	fa042623          	sw	zero,-84(s0)
+    8020668c:	fa042623          	sw	zero,-84(s0)
     reloc_clus(dp, 0, 0);
-    80206680:	4601                	li	a2,0
-    80206682:	4581                	li	a1,0
-    80206684:	8526                	mv	a0,s1
-    80206686:	fffff097          	auipc	ra,0xfffff
-    8020668a:	c70080e7          	jalr	-912(ra) # 802052f6 <reloc_clus>
+    80206690:	4601                	li	a2,0
+    80206692:	4581                	li	a1,0
+    80206694:	8526                	mv	a0,s1
+    80206696:	fffff097          	auipc	ra,0xfffff
+    8020669a:	c70080e7          	jalr	-912(ra) # 80205306 <reloc_clus>
     uint off = 0;
-    8020668e:	4a01                	li	s4,0
+    8020669e:	4a01                	li	s4,0
     while ((type = enext(dp, ep, off, &count) != -1)) {
-    80206690:	fac40b93          	addi	s7,s0,-84
-    80206694:	5b7d                	li	s6,-1
-    80206696:	86de                	mv	a3,s7
-    80206698:	8652                	mv	a2,s4
-    8020669a:	85ca                	mv	a1,s2
-    8020669c:	8526                	mv	a0,s1
-    8020669e:	00000097          	auipc	ra,0x0
-    802066a2:	d74080e7          	jalr	-652(ra) # 80206412 <enext>
-    802066a6:	03650f63          	beq	a0,s6,802066e4 <dirlookup+0x148>
+    802066a0:	fac40b93          	addi	s7,s0,-84
+    802066a4:	5b7d                	li	s6,-1
+    802066a6:	86de                	mv	a3,s7
+    802066a8:	8652                	mv	a2,s4
+    802066aa:	85ca                	mv	a1,s2
+    802066ac:	8526                	mv	a0,s1
+    802066ae:	00000097          	auipc	ra,0x0
+    802066b2:	d74080e7          	jalr	-652(ra) # 80206422 <enext>
+    802066b6:	03650f63          	beq	a0,s6,802066f4 <dirlookup+0x148>
         } else if (strncmp(filename, ep->filename, FAT32_MAX_FILENAME) == 0) {
-    802066aa:	0ff00613          	li	a2,255
-    802066ae:	85ca                	mv	a1,s2
-    802066b0:	854e                	mv	a0,s3
-    802066b2:	ffffa097          	auipc	ra,0xffffa
-    802066b6:	188080e7          	jalr	392(ra) # 8020083a <strncmp>
-    802066ba:	c901                	beqz	a0,802066ca <dirlookup+0x12e>
+    802066ba:	0ff00613          	li	a2,255
+    802066be:	85ca                	mv	a1,s2
+    802066c0:	854e                	mv	a0,s3
+    802066c2:	ffffa097          	auipc	ra,0xffffa
+    802066c6:	178080e7          	jalr	376(ra) # 8020083a <strncmp>
+    802066ca:	c901                	beqz	a0,802066da <dirlookup+0x12e>
         off += count << 5;
-    802066bc:	fac42783          	lw	a5,-84(s0)
-    802066c0:	0057979b          	slliw	a5,a5,0x5
-    802066c4:	01478a3b          	addw	s4,a5,s4
-    802066c8:	b7f9                	j	80206696 <dirlookup+0xfa>
+    802066cc:	fac42783          	lw	a5,-84(s0)
+    802066d0:	0057979b          	slliw	a5,a5,0x5
+    802066d4:	01478a3b          	addw	s4,a5,s4
+    802066d8:	b7f9                	j	802066a6 <dirlookup+0xfa>
             ep->parent = edup(dp);
-    802066ca:	8526                	mv	a0,s1
-    802066cc:	00000097          	auipc	ra,0x0
-    802066d0:	8e4080e7          	jalr	-1820(ra) # 80205fb0 <edup>
-    802066d4:	12a93023          	sd	a0,288(s2)
+    802066da:	8526                	mv	a0,s1
+    802066dc:	00000097          	auipc	ra,0x0
+    802066e0:	8e4080e7          	jalr	-1820(ra) # 80205fc0 <edup>
+    802066e4:	12a93023          	sd	a0,288(s2)
             ep->off = off;
-    802066d8:	11492e23          	sw	s4,284(s2)
+    802066e8:	11492e23          	sw	s4,284(s2)
             ep->valid = 1;
-    802066dc:	4785                	li	a5,1
-    802066de:	10f91b23          	sh	a5,278(s2)
+    802066ec:	4785                	li	a5,1
+    802066ee:	10f91b23          	sh	a5,278(s2)
             return ep;
-    802066e2:	b799                	j	80206628 <dirlookup+0x8c>
+    802066f2:	b799                	j	80206638 <dirlookup+0x8c>
     if (poff) {
-    802066e4:	000a8463          	beqz	s5,802066ec <dirlookup+0x150>
+    802066f4:	000a8463          	beqz	s5,802066fc <dirlookup+0x150>
         *poff = off;
-    802066e8:	014aa023          	sw	s4,0(s5)
+    802066f8:	014aa023          	sw	s4,0(s5)
     eput(ep);
-    802066ec:	854a                	mv	a0,s2
-    802066ee:	00000097          	auipc	ra,0x0
-    802066f2:	ba4080e7          	jalr	-1116(ra) # 80206292 <eput>
+    802066fc:	854a                	mv	a0,s2
+    802066fe:	00000097          	auipc	ra,0x0
+    80206702:	ba4080e7          	jalr	-1116(ra) # 802062a2 <eput>
     return NULL;
-    802066f6:	4901                	li	s2,0
-    802066f8:	bf05                	j	80206628 <dirlookup+0x8c>
-
-00000000802066fa <ealloc>:
-{
-    802066fa:	715d                	addi	sp,sp,-80
-    802066fc:	e486                	sd	ra,72(sp)
-    802066fe:	e0a2                	sd	s0,64(sp)
-    80206700:	fc26                	sd	s1,56(sp)
-    80206702:	f84a                	sd	s2,48(sp)
-    80206704:	f44e                	sd	s3,40(sp)
-    80206706:	f052                	sd	s4,32(sp)
-    80206708:	ec56                	sd	s5,24(sp)
-    8020670a:	0880                	addi	s0,sp,80
-    8020670c:	892a                	mv	s2,a0
+    80206706:	4901                	li	s2,0
+    80206708:	bf05                	j	80206638 <dirlookup+0x8c>
+
+000000008020670a <ealloc>:
+{
+    8020670a:	715d                	addi	sp,sp,-80
+    8020670c:	e486                	sd	ra,72(sp)
+    8020670e:	e0a2                	sd	s0,64(sp)
+    80206710:	fc26                	sd	s1,56(sp)
+    80206712:	f84a                	sd	s2,48(sp)
+    80206714:	f44e                	sd	s3,40(sp)
+    80206716:	f052                	sd	s4,32(sp)
+    80206718:	ec56                	sd	s5,24(sp)
+    8020671a:	0880                	addi	s0,sp,80
+    8020671c:	892a                	mv	s2,a0
     if (!(dp->attribute & ATTR_DIRECTORY)) {
-    8020670e:	10054783          	lbu	a5,256(a0)
-    80206712:	8bc1                	andi	a5,a5,16
-    80206714:	c7b1                	beqz	a5,80206760 <ealloc+0x66>
-    80206716:	852e                	mv	a0,a1
-    80206718:	8a32                	mv	s4,a2
+    8020671e:	10054783          	lbu	a5,256(a0)
+    80206722:	8bc1                	andi	a5,a5,16
+    80206724:	c7b1                	beqz	a5,80206770 <ealloc+0x66>
+    80206726:	852e                	mv	a0,a1
+    80206728:	8a32                	mv	s4,a2
     if (dp->valid != 1 || !(name = formatname(name))) {        // detect illegal character
-    8020671a:	11691703          	lh	a4,278(s2)
-    8020671e:	4785                	li	a5,1
+    8020672a:	11691703          	lh	a4,278(s2)
+    8020672e:	4785                	li	a5,1
         return NULL;
-    80206720:	4481                	li	s1,0
+    80206730:	4481                	li	s1,0
     if (dp->valid != 1 || !(name = formatname(name))) {        // detect illegal character
-    80206722:	02f71563          	bne	a4,a5,8020674c <ealloc+0x52>
-    80206726:	fffff097          	auipc	ra,0xfffff
-    8020672a:	408080e7          	jalr	1032(ra) # 80205b2e <formatname>
-    8020672e:	89aa                	mv	s3,a0
-    80206730:	10050663          	beqz	a0,8020683c <ealloc+0x142>
+    80206732:	02f71563          	bne	a4,a5,8020675c <ealloc+0x52>
+    80206736:	fffff097          	auipc	ra,0xfffff
+    8020673a:	408080e7          	jalr	1032(ra) # 80205b3e <formatname>
+    8020673e:	89aa                	mv	s3,a0
+    80206740:	10050663          	beqz	a0,8020684c <ealloc+0x142>
     uint off = 0;
-    80206734:	fa042e23          	sw	zero,-68(s0)
+    80206744:	fa042e23          	sw	zero,-68(s0)
     if ((ep = dirlookup(dp, name, &off)) != 0) {      // entry exists
-    80206738:	fbc40613          	addi	a2,s0,-68
-    8020673c:	85aa                	mv	a1,a0
-    8020673e:	854a                	mv	a0,s2
-    80206740:	00000097          	auipc	ra,0x0
-    80206744:	e5c080e7          	jalr	-420(ra) # 8020659c <dirlookup>
-    80206748:	84aa                	mv	s1,a0
-    8020674a:	c11d                	beqz	a0,80206770 <ealloc+0x76>
-}
-    8020674c:	8526                	mv	a0,s1
-    8020674e:	60a6                	ld	ra,72(sp)
-    80206750:	6406                	ld	s0,64(sp)
-    80206752:	74e2                	ld	s1,56(sp)
-    80206754:	7942                	ld	s2,48(sp)
-    80206756:	79a2                	ld	s3,40(sp)
-    80206758:	7a02                	ld	s4,32(sp)
-    8020675a:	6ae2                	ld	s5,24(sp)
-    8020675c:	6161                	addi	sp,sp,80
-    8020675e:	8082                	ret
+    80206748:	fbc40613          	addi	a2,s0,-68
+    8020674c:	85aa                	mv	a1,a0
+    8020674e:	854a                	mv	a0,s2
+    80206750:	00000097          	auipc	ra,0x0
+    80206754:	e5c080e7          	jalr	-420(ra) # 802065ac <dirlookup>
+    80206758:	84aa                	mv	s1,a0
+    8020675a:	c11d                	beqz	a0,80206780 <ealloc+0x76>
+}
+    8020675c:	8526                	mv	a0,s1
+    8020675e:	60a6                	ld	ra,72(sp)
+    80206760:	6406                	ld	s0,64(sp)
+    80206762:	74e2                	ld	s1,56(sp)
+    80206764:	7942                	ld	s2,48(sp)
+    80206766:	79a2                	ld	s3,40(sp)
+    80206768:	7a02                	ld	s4,32(sp)
+    8020676a:	6ae2                	ld	s5,24(sp)
+    8020676c:	6161                	addi	sp,sp,80
+    8020676e:	8082                	ret
         panic("ealloc not dir");
-    80206760:	00003517          	auipc	a0,0x3
-    80206764:	59050513          	addi	a0,a0,1424 # 80209cf0 <digits+0x970>
-    80206768:	ffffa097          	auipc	ra,0xffffa
-    8020676c:	9dc080e7          	jalr	-1572(ra) # 80200144 <panic>
+    80206770:	00003517          	auipc	a0,0x3
+    80206774:	58850513          	addi	a0,a0,1416 # 80209cf8 <digits+0x978>
+    80206778:	ffffa097          	auipc	ra,0xffffa
+    8020677c:	9cc080e7          	jalr	-1588(ra) # 80200144 <panic>
     ep = eget(dp, name);
-    80206770:	85ce                	mv	a1,s3
-    80206772:	854a                	mv	a0,s2
-    80206774:	fffff097          	auipc	ra,0xfffff
-    80206778:	dd6080e7          	jalr	-554(ra) # 8020554a <eget>
-    8020677c:	84aa                	mv	s1,a0
+    80206780:	85ce                	mv	a1,s3
+    80206782:	854a                	mv	a0,s2
+    80206784:	fffff097          	auipc	ra,0xfffff
+    80206788:	dd6080e7          	jalr	-554(ra) # 8020555a <eget>
+    8020678c:	84aa                	mv	s1,a0
     elock(ep);
-    8020677e:	00000097          	auipc	ra,0x0
-    80206782:	a90080e7          	jalr	-1392(ra) # 8020620e <elock>
+    8020678e:	00000097          	auipc	ra,0x0
+    80206792:	a90080e7          	jalr	-1392(ra) # 8020621e <elock>
     ep->attribute = attr;
-    80206786:	11448023          	sb	s4,256(s1)
+    80206796:	11448023          	sb	s4,256(s1)
     ep->file_size = 0;
-    8020678a:	1004a423          	sw	zero,264(s1)
+    8020679a:	1004a423          	sw	zero,264(s1)
     ep->first_clus = 0;
-    8020678e:	1004a223          	sw	zero,260(s1)
+    8020679e:	1004a223          	sw	zero,260(s1)
     ep->parent = edup(dp);
-    80206792:	854a                	mv	a0,s2
-    80206794:	00000097          	auipc	ra,0x0
-    80206798:	81c080e7          	jalr	-2020(ra) # 80205fb0 <edup>
-    8020679c:	12a4b023          	sd	a0,288(s1)
+    802067a2:	854a                	mv	a0,s2
+    802067a4:	00000097          	auipc	ra,0x0
+    802067a8:	81c080e7          	jalr	-2020(ra) # 80205fc0 <edup>
+    802067ac:	12a4b023          	sd	a0,288(s1)
     ep->off = off;
-    802067a0:	fbc42a83          	lw	s5,-68(s0)
-    802067a4:	1154ae23          	sw	s5,284(s1)
+    802067b0:	fbc42a83          	lw	s5,-68(s0)
+    802067b4:	1154ae23          	sw	s5,284(s1)
     ep->clus_cnt = 0;
-    802067a8:	1004a823          	sw	zero,272(s1)
+    802067b8:	1004a823          	sw	zero,272(s1)
     ep->cur_clus = 0;
-    802067ac:	1004a623          	sw	zero,268(s1)
+    802067bc:	1004a623          	sw	zero,268(s1)
     ep->dirty = 0;
-    802067b0:	10048aa3          	sb	zero,277(s1)
+    802067c0:	10048aa3          	sb	zero,277(s1)
     strncpy(ep->filename, name, FAT32_MAX_FILENAME);
-    802067b4:	0ff00613          	li	a2,255
-    802067b8:	85ce                	mv	a1,s3
-    802067ba:	8526                	mv	a0,s1
-    802067bc:	ffffa097          	auipc	ra,0xffffa
-    802067c0:	0ba080e7          	jalr	186(ra) # 80200876 <strncpy>
+    802067c4:	0ff00613          	li	a2,255
+    802067c8:	85ce                	mv	a1,s3
+    802067ca:	8526                	mv	a0,s1
+    802067cc:	ffffa097          	auipc	ra,0xffffa
+    802067d0:	0aa080e7          	jalr	170(ra) # 80200876 <strncpy>
     ep->filename[FAT32_MAX_FILENAME] = '\0';
-    802067c4:	0e048fa3          	sb	zero,255(s1)
+    802067d4:	0e048fa3          	sb	zero,255(s1)
     if (attr == ATTR_DIRECTORY) {    // generate "." and ".." for ep
-    802067c8:	47c1                	li	a5,16
-    802067ca:	02fa0863          	beq	s4,a5,802067fa <ealloc+0x100>
+    802067d8:	47c1                	li	a5,16
+    802067da:	02fa0863          	beq	s4,a5,8020680a <ealloc+0x100>
         ep->attribute |= ATTR_ARCHIVE;
-    802067ce:	1004c783          	lbu	a5,256(s1)
-    802067d2:	0207e793          	ori	a5,a5,32
-    802067d6:	10f48023          	sb	a5,256(s1)
+    802067de:	1004c783          	lbu	a5,256(s1)
+    802067e2:	0207e793          	ori	a5,a5,32
+    802067e6:	10f48023          	sb	a5,256(s1)
     emake(dp, ep, off);
-    802067da:	8656                	mv	a2,s5
-    802067dc:	85a6                	mv	a1,s1
-    802067de:	854a                	mv	a0,s2
-    802067e0:	fffff097          	auipc	ra,0xfffff
-    802067e4:	406080e7          	jalr	1030(ra) # 80205be6 <emake>
+    802067ea:	8656                	mv	a2,s5
+    802067ec:	85a6                	mv	a1,s1
+    802067ee:	854a                	mv	a0,s2
+    802067f0:	fffff097          	auipc	ra,0xfffff
+    802067f4:	406080e7          	jalr	1030(ra) # 80205bf6 <emake>
     ep->valid = 1;
-    802067e8:	4785                	li	a5,1
-    802067ea:	10f49b23          	sh	a5,278(s1)
+    802067f8:	4785                	li	a5,1
+    802067fa:	10f49b23          	sh	a5,278(s1)
     eunlock(ep);
-    802067ee:	8526                	mv	a0,s1
-    802067f0:	00000097          	auipc	ra,0x0
-    802067f4:	a54080e7          	jalr	-1452(ra) # 80206244 <eunlock>
+    802067fe:	8526                	mv	a0,s1
+    80206800:	00000097          	auipc	ra,0x0
+    80206804:	a54080e7          	jalr	-1452(ra) # 80206254 <eunlock>
     return ep;
-    802067f8:	bf91                	j	8020674c <ealloc+0x52>
+    80206808:	bf91                	j	8020675c <ealloc+0x52>
         ep->attribute |= ATTR_DIRECTORY;
-    802067fa:	1004c783          	lbu	a5,256(s1)
-    802067fe:	0107e793          	ori	a5,a5,16
-    80206802:	10f48023          	sb	a5,256(s1)
+    8020680a:	1004c783          	lbu	a5,256(s1)
+    8020680e:	0107e793          	ori	a5,a5,16
+    80206812:	10f48023          	sb	a5,256(s1)
         ep->cur_clus = ep->first_clus = alloc_clus(dp->dev);
-    80206806:	11494503          	lbu	a0,276(s2)
-    8020680a:	fffff097          	auipc	ra,0xfffff
-    8020680e:	92a080e7          	jalr	-1750(ra) # 80205134 <alloc_clus>
-    80206812:	2501                	sext.w	a0,a0
-    80206814:	10a4a223          	sw	a0,260(s1)
-    80206818:	10a4a623          	sw	a0,268(s1)
+    80206816:	11494503          	lbu	a0,276(s2)
+    8020681a:	fffff097          	auipc	ra,0xfffff
+    8020681e:	92a080e7          	jalr	-1750(ra) # 80205144 <alloc_clus>
+    80206822:	2501                	sext.w	a0,a0
+    80206824:	10a4a223          	sw	a0,260(s1)
+    80206828:	10a4a623          	sw	a0,268(s1)
         emake(ep, ep, 0);
-    8020681c:	4601                	li	a2,0
-    8020681e:	85a6                	mv	a1,s1
-    80206820:	8526                	mv	a0,s1
-    80206822:	fffff097          	auipc	ra,0xfffff
-    80206826:	3c4080e7          	jalr	964(ra) # 80205be6 <emake>
-        emake(ep, dp, 32);
-    8020682a:	02000613          	li	a2,32
-    8020682e:	85ca                	mv	a1,s2
+    8020682c:	4601                	li	a2,0
+    8020682e:	85a6                	mv	a1,s1
     80206830:	8526                	mv	a0,s1
     80206832:	fffff097          	auipc	ra,0xfffff
-    80206836:	3b4080e7          	jalr	948(ra) # 80205be6 <emake>
-    8020683a:	b745                	j	802067da <ealloc+0xe0>
+    80206836:	3c4080e7          	jalr	964(ra) # 80205bf6 <emake>
+        emake(ep, dp, 32);
+    8020683a:	02000613          	li	a2,32
+    8020683e:	85ca                	mv	a1,s2
+    80206840:	8526                	mv	a0,s1
+    80206842:	fffff097          	auipc	ra,0xfffff
+    80206846:	3b4080e7          	jalr	948(ra) # 80205bf6 <emake>
+    8020684a:	b745                	j	802067ea <ealloc+0xe0>
         return NULL;
-    8020683c:	84aa                	mv	s1,a0
-    8020683e:	b739                	j	8020674c <ealloc+0x52>
+    8020684c:	84aa                	mv	s1,a0
+    8020684e:	b739                	j	8020675c <ealloc+0x52>
 
-0000000080206840 <lookup_path>:
+0000000080206850 <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)
 {
-    80206840:	715d                	addi	sp,sp,-80
-    80206842:	e486                	sd	ra,72(sp)
-    80206844:	e0a2                	sd	s0,64(sp)
-    80206846:	fc26                	sd	s1,56(sp)
-    80206848:	f84a                	sd	s2,48(sp)
-    8020684a:	f44e                	sd	s3,40(sp)
-    8020684c:	f052                	sd	s4,32(sp)
-    8020684e:	ec56                	sd	s5,24(sp)
-    80206850:	e85a                	sd	s6,16(sp)
-    80206852:	e45e                	sd	s7,8(sp)
-    80206854:	e062                	sd	s8,0(sp)
-    80206856:	0880                	addi	s0,sp,80
-    80206858:	892a                	mv	s2,a0
-    8020685a:	8b2e                	mv	s6,a1
-    8020685c:	8ab2                	mv	s5,a2
+    80206850:	715d                	addi	sp,sp,-80
+    80206852:	e486                	sd	ra,72(sp)
+    80206854:	e0a2                	sd	s0,64(sp)
+    80206856:	fc26                	sd	s1,56(sp)
+    80206858:	f84a                	sd	s2,48(sp)
+    8020685a:	f44e                	sd	s3,40(sp)
+    8020685c:	f052                	sd	s4,32(sp)
+    8020685e:	ec56                	sd	s5,24(sp)
+    80206860:	e85a                	sd	s6,16(sp)
+    80206862:	e45e                	sd	s7,8(sp)
+    80206864:	e062                	sd	s8,0(sp)
+    80206866:	0880                	addi	s0,sp,80
+    80206868:	892a                	mv	s2,a0
+    8020686a:	8b2e                	mv	s6,a1
+    8020686c:	8ab2                	mv	s5,a2
     struct dirent *entry, *next;
     if (*path == '/') {
-    8020685e:	00054783          	lbu	a5,0(a0)
-    80206862:	02f00713          	li	a4,47
-    80206866:	02e78663          	beq	a5,a4,80206892 <lookup_path+0x52>
+    8020686e:	00054783          	lbu	a5,0(a0)
+    80206872:	02f00713          	li	a4,47
+    80206876:	02e78663          	beq	a5,a4,802068a2 <lookup_path+0x52>
         entry = edup(&root);
     } else if (*path != '\0') {
         entry = edup(myproc()->cwd);
     } else {
         return NULL;
-    8020686a:	4a01                	li	s4,0
+    8020687a:	4a01                	li	s4,0
     } else if (*path != '\0') {
-    8020686c:	cba1                	beqz	a5,802068bc <lookup_path+0x7c>
+    8020687c:	cba1                	beqz	a5,802068cc <lookup_path+0x7c>
         entry = edup(myproc()->cwd);
-    8020686e:	ffffb097          	auipc	ra,0xffffb
-    80206872:	1ce080e7          	jalr	462(ra) # 80201a3c <myproc>
-    80206876:	15853503          	ld	a0,344(a0)
-    8020687a:	fffff097          	auipc	ra,0xfffff
-    8020687e:	736080e7          	jalr	1846(ra) # 80205fb0 <edup>
-    80206882:	8a2a                	mv	s4,a0
+    8020687e:	ffffb097          	auipc	ra,0xffffb
+    80206882:	1be080e7          	jalr	446(ra) # 80201a3c <myproc>
+    80206886:	15853503          	ld	a0,344(a0)
+    8020688a:	fffff097          	auipc	ra,0xfffff
+    8020688e:	736080e7          	jalr	1846(ra) # 80205fc0 <edup>
+    80206892:	8a2a                	mv	s4,a0
     while (*path == '/') {
-    80206884:	02f00993          	li	s3,47
-    80206888:	0ff00b93          	li	s7,255
-    8020688c:	0ff00c13          	li	s8,255
-    80206890:	a0e5                	j	80206978 <lookup_path+0x138>
+    80206894:	02f00993          	li	s3,47
+    80206898:	0ff00b93          	li	s7,255
+    8020689c:	0ff00c13          	li	s8,255
+    802068a0:	a0e5                	j	80206988 <lookup_path+0x138>
         entry = edup(&root);
-    80206892:	00018517          	auipc	a0,0x18
-    80206896:	bbe50513          	addi	a0,a0,-1090 # 8021e450 <root>
-    8020689a:	fffff097          	auipc	ra,0xfffff
-    8020689e:	716080e7          	jalr	1814(ra) # 80205fb0 <edup>
-    802068a2:	8a2a                	mv	s4,a0
-    802068a4:	b7c5                	j	80206884 <lookup_path+0x44>
+    802068a2:	00018517          	auipc	a0,0x18
+    802068a6:	bae50513          	addi	a0,a0,-1106 # 8021e450 <root>
+    802068aa:	fffff097          	auipc	ra,0xfffff
+    802068ae:	716080e7          	jalr	1814(ra) # 80205fc0 <edup>
+    802068b2:	8a2a                	mv	s4,a0
+    802068b4:	b7c5                	j	80206894 <lookup_path+0x44>
     }
     while ((path = skipelem(path, name)) != 0) {
         elock(entry);
         if (!(entry->attribute & ATTR_DIRECTORY)) {
             eunlock(entry);
-    802068a6:	8552                	mv	a0,s4
-    802068a8:	00000097          	auipc	ra,0x0
-    802068ac:	99c080e7          	jalr	-1636(ra) # 80206244 <eunlock>
+    802068b6:	8552                	mv	a0,s4
+    802068b8:	00000097          	auipc	ra,0x0
+    802068bc:	99c080e7          	jalr	-1636(ra) # 80206254 <eunlock>
             eput(entry);
-    802068b0:	8552                	mv	a0,s4
-    802068b2:	00000097          	auipc	ra,0x0
-    802068b6:	9e0080e7          	jalr	-1568(ra) # 80206292 <eput>
+    802068c0:	8552                	mv	a0,s4
+    802068c2:	00000097          	auipc	ra,0x0
+    802068c6:	9e0080e7          	jalr	-1568(ra) # 802062a2 <eput>
             return NULL;
-    802068ba:	4a01                	li	s4,0
+    802068ca:	4a01                	li	s4,0
     if (parent) {
         eput(entry);
         return NULL;
     }
     return entry;
 }
-    802068bc:	8552                	mv	a0,s4
-    802068be:	60a6                	ld	ra,72(sp)
-    802068c0:	6406                	ld	s0,64(sp)
-    802068c2:	74e2                	ld	s1,56(sp)
-    802068c4:	7942                	ld	s2,48(sp)
-    802068c6:	79a2                	ld	s3,40(sp)
-    802068c8:	7a02                	ld	s4,32(sp)
-    802068ca:	6ae2                	ld	s5,24(sp)
-    802068cc:	6b42                	ld	s6,16(sp)
-    802068ce:	6ba2                	ld	s7,8(sp)
-    802068d0:	6c02                	ld	s8,0(sp)
-    802068d2:	6161                	addi	sp,sp,80
-    802068d4:	8082                	ret
+    802068cc:	8552                	mv	a0,s4
+    802068ce:	60a6                	ld	ra,72(sp)
+    802068d0:	6406                	ld	s0,64(sp)
+    802068d2:	74e2                	ld	s1,56(sp)
+    802068d4:	7942                	ld	s2,48(sp)
+    802068d6:	79a2                	ld	s3,40(sp)
+    802068d8:	7a02                	ld	s4,32(sp)
+    802068da:	6ae2                	ld	s5,24(sp)
+    802068dc:	6b42                	ld	s6,16(sp)
+    802068de:	6ba2                	ld	s7,8(sp)
+    802068e0:	6c02                	ld	s8,0(sp)
+    802068e2:	6161                	addi	sp,sp,80
+    802068e4:	8082                	ret
             eunlock(entry);
-    802068d6:	8552                	mv	a0,s4
-    802068d8:	00000097          	auipc	ra,0x0
-    802068dc:	96c080e7          	jalr	-1684(ra) # 80206244 <eunlock>
+    802068e6:	8552                	mv	a0,s4
+    802068e8:	00000097          	auipc	ra,0x0
+    802068ec:	96c080e7          	jalr	-1684(ra) # 80206254 <eunlock>
             return entry;
-    802068e0:	bff1                	j	802068bc <lookup_path+0x7c>
+    802068f0:	bff1                	j	802068cc <lookup_path+0x7c>
             eunlock(entry);
-    802068e2:	8552                	mv	a0,s4
-    802068e4:	00000097          	auipc	ra,0x0
-    802068e8:	960080e7          	jalr	-1696(ra) # 80206244 <eunlock>
+    802068f2:	8552                	mv	a0,s4
+    802068f4:	00000097          	auipc	ra,0x0
+    802068f8:	960080e7          	jalr	-1696(ra) # 80206254 <eunlock>
             eput(entry);
-    802068ec:	8552                	mv	a0,s4
-    802068ee:	00000097          	auipc	ra,0x0
-    802068f2:	9a4080e7          	jalr	-1628(ra) # 80206292 <eput>
+    802068fc:	8552                	mv	a0,s4
+    802068fe:	00000097          	auipc	ra,0x0
+    80206902:	9a4080e7          	jalr	-1628(ra) # 802062a2 <eput>
             return NULL;
-    802068f6:	8a4a                	mv	s4,s2
-    802068f8:	b7d1                	j	802068bc <lookup_path+0x7c>
+    80206906:	8a4a                	mv	s4,s2
+    80206908:	b7d1                	j	802068cc <lookup_path+0x7c>
     int len = path - s;
-    802068fa:	412487b3          	sub	a5,s1,s2
-    802068fe:	863e                	mv	a2,a5
-    80206900:	2781                	sext.w	a5,a5
-    80206902:	00fbd363          	bge	s7,a5,80206908 <lookup_path+0xc8>
-    80206906:	8662                	mv	a2,s8
-    80206908:	0006079b          	sext.w	a5,a2
+    8020690a:	412487b3          	sub	a5,s1,s2
+    8020690e:	863e                	mv	a2,a5
+    80206910:	2781                	sext.w	a5,a5
+    80206912:	00fbd363          	bge	s7,a5,80206918 <lookup_path+0xc8>
+    80206916:	8662                	mv	a2,s8
+    80206918:	0006079b          	sext.w	a5,a2
     name[len] = 0;
-    8020690c:	97d6                	add	a5,a5,s5
-    8020690e:	00078023          	sb	zero,0(a5)
+    8020691c:	97d6                	add	a5,a5,s5
+    8020691e:	00078023          	sb	zero,0(a5)
     memmove(name, s, len);
-    80206912:	2601                	sext.w	a2,a2
-    80206914:	85ca                	mv	a1,s2
-    80206916:	8556                	mv	a0,s5
-    80206918:	ffffa097          	auipc	ra,0xffffa
-    8020691c:	ea6080e7          	jalr	-346(ra) # 802007be <memmove>
+    80206922:	2601                	sext.w	a2,a2
+    80206924:	85ca                	mv	a1,s2
+    80206926:	8556                	mv	a0,s5
+    80206928:	ffffa097          	auipc	ra,0xffffa
+    8020692c:	e96080e7          	jalr	-362(ra) # 802007be <memmove>
     while (*path == '/') {
-    80206920:	0004c783          	lbu	a5,0(s1)
-    80206924:	01379763          	bne	a5,s3,80206932 <lookup_path+0xf2>
+    80206930:	0004c783          	lbu	a5,0(s1)
+    80206934:	01379763          	bne	a5,s3,80206942 <lookup_path+0xf2>
         path++;
-    80206928:	0485                	addi	s1,s1,1
+    80206938:	0485                	addi	s1,s1,1
     while (*path == '/') {
-    8020692a:	0004c783          	lbu	a5,0(s1)
-    8020692e:	ff378de3          	beq	a5,s3,80206928 <lookup_path+0xe8>
+    8020693a:	0004c783          	lbu	a5,0(s1)
+    8020693e:	ff378de3          	beq	a5,s3,80206938 <lookup_path+0xe8>
         elock(entry);
-    80206932:	8552                	mv	a0,s4
-    80206934:	00000097          	auipc	ra,0x0
-    80206938:	8da080e7          	jalr	-1830(ra) # 8020620e <elock>
+    80206942:	8552                	mv	a0,s4
+    80206944:	00000097          	auipc	ra,0x0
+    80206948:	8da080e7          	jalr	-1830(ra) # 8020621e <elock>
         if (!(entry->attribute & ATTR_DIRECTORY)) {
-    8020693c:	100a4783          	lbu	a5,256(s4)
-    80206940:	8bc1                	andi	a5,a5,16
-    80206942:	d3b5                	beqz	a5,802068a6 <lookup_path+0x66>
+    8020694c:	100a4783          	lbu	a5,256(s4)
+    80206950:	8bc1                	andi	a5,a5,16
+    80206952:	d3b5                	beqz	a5,802068b6 <lookup_path+0x66>
         if (parent && *path == '\0') {
-    80206944:	000b0563          	beqz	s6,8020694e <lookup_path+0x10e>
-    80206948:	0004c783          	lbu	a5,0(s1)
-    8020694c:	d7c9                	beqz	a5,802068d6 <lookup_path+0x96>
+    80206954:	000b0563          	beqz	s6,8020695e <lookup_path+0x10e>
+    80206958:	0004c783          	lbu	a5,0(s1)
+    8020695c:	d7c9                	beqz	a5,802068e6 <lookup_path+0x96>
         if ((next = dirlookup(entry, name, 0)) == 0) {
-    8020694e:	4601                	li	a2,0
-    80206950:	85d6                	mv	a1,s5
-    80206952:	8552                	mv	a0,s4
-    80206954:	00000097          	auipc	ra,0x0
-    80206958:	c48080e7          	jalr	-952(ra) # 8020659c <dirlookup>
-    8020695c:	892a                	mv	s2,a0
-    8020695e:	d151                	beqz	a0,802068e2 <lookup_path+0xa2>
+    8020695e:	4601                	li	a2,0
+    80206960:	85d6                	mv	a1,s5
+    80206962:	8552                	mv	a0,s4
+    80206964:	00000097          	auipc	ra,0x0
+    80206968:	c48080e7          	jalr	-952(ra) # 802065ac <dirlookup>
+    8020696c:	892a                	mv	s2,a0
+    8020696e:	d151                	beqz	a0,802068f2 <lookup_path+0xa2>
         eunlock(entry);
-    80206960:	8552                	mv	a0,s4
-    80206962:	00000097          	auipc	ra,0x0
-    80206966:	8e2080e7          	jalr	-1822(ra) # 80206244 <eunlock>
+    80206970:	8552                	mv	a0,s4
+    80206972:	00000097          	auipc	ra,0x0
+    80206976:	8e2080e7          	jalr	-1822(ra) # 80206254 <eunlock>
         eput(entry);
-    8020696a:	8552                	mv	a0,s4
-    8020696c:	00000097          	auipc	ra,0x0
-    80206970:	926080e7          	jalr	-1754(ra) # 80206292 <eput>
+    8020697a:	8552                	mv	a0,s4
+    8020697c:	00000097          	auipc	ra,0x0
+    80206980:	926080e7          	jalr	-1754(ra) # 802062a2 <eput>
         entry = next;
-    80206974:	8a4a                	mv	s4,s2
+    80206984:	8a4a                	mv	s4,s2
         eput(entry);
-    80206976:	8926                	mv	s2,s1
+    80206986:	8926                	mv	s2,s1
     while (*path == '/') {
-    80206978:	00094783          	lbu	a5,0(s2)
-    8020697c:	03379363          	bne	a5,s3,802069a2 <lookup_path+0x162>
+    80206988:	00094783          	lbu	a5,0(s2)
+    8020698c:	03379363          	bne	a5,s3,802069b2 <lookup_path+0x162>
         path++;
-    80206980:	0905                	addi	s2,s2,1
+    80206990:	0905                	addi	s2,s2,1
     while (*path == '/') {
-    80206982:	00094783          	lbu	a5,0(s2)
-    80206986:	ff378de3          	beq	a5,s3,80206980 <lookup_path+0x140>
+    80206992:	00094783          	lbu	a5,0(s2)
+    80206996:	ff378de3          	beq	a5,s3,80206990 <lookup_path+0x140>
     if (*path == 0) { return NULL; }
-    8020698a:	cf89                	beqz	a5,802069a4 <lookup_path+0x164>
+    8020699a:	cf89                	beqz	a5,802069b4 <lookup_path+0x164>
         path++;
-    8020698c:	84ca                	mv	s1,s2
+    8020699c:	84ca                	mv	s1,s2
     while (*path != '/' && *path != 0) {
-    8020698e:	f73786e3          	beq	a5,s3,802068fa <lookup_path+0xba>
+    8020699e:	f73786e3          	beq	a5,s3,8020690a <lookup_path+0xba>
         eput(entry);
-    80206992:	84ca                	mv	s1,s2
+    802069a2:	84ca                	mv	s1,s2
     while (*path != '/' && *path != 0) {
-    80206994:	d3bd                	beqz	a5,802068fa <lookup_path+0xba>
+    802069a4:	d3bd                	beqz	a5,8020690a <lookup_path+0xba>
         path++;
-    80206996:	0485                	addi	s1,s1,1
+    802069a6:	0485                	addi	s1,s1,1
     while (*path != '/' && *path != 0) {
-    80206998:	0004c783          	lbu	a5,0(s1)
-    8020699c:	ff379ce3          	bne	a5,s3,80206994 <lookup_path+0x154>
-    802069a0:	bfa9                	j	802068fa <lookup_path+0xba>
+    802069a8:	0004c783          	lbu	a5,0(s1)
+    802069ac:	ff379ce3          	bne	a5,s3,802069a4 <lookup_path+0x154>
+    802069b0:	bfa9                	j	8020690a <lookup_path+0xba>
     if (*path == 0) { return NULL; }
-    802069a2:	fbe5                	bnez	a5,80206992 <lookup_path+0x152>
+    802069b2:	fbe5                	bnez	a5,802069a2 <lookup_path+0x152>
     if (parent) {
-    802069a4:	f00b0ce3          	beqz	s6,802068bc <lookup_path+0x7c>
+    802069b4:	f00b0ce3          	beqz	s6,802068cc <lookup_path+0x7c>
         eput(entry);
-    802069a8:	8552                	mv	a0,s4
-    802069aa:	00000097          	auipc	ra,0x0
-    802069ae:	8e8080e7          	jalr	-1816(ra) # 80206292 <eput>
+    802069b8:	8552                	mv	a0,s4
+    802069ba:	00000097          	auipc	ra,0x0
+    802069be:	8e8080e7          	jalr	-1816(ra) # 802062a2 <eput>
         return NULL;
-    802069b2:	4a01                	li	s4,0
-    802069b4:	b721                	j	802068bc <lookup_path+0x7c>
+    802069c2:	4a01                	li	s4,0
+    802069c4:	b721                	j	802068cc <lookup_path+0x7c>
 
-00000000802069b6 <ename>:
+00000000802069c6 <ename>:
 
 struct dirent *ename(char *path)
 {
-    802069b6:	716d                	addi	sp,sp,-272
-    802069b8:	e606                	sd	ra,264(sp)
-    802069ba:	e222                	sd	s0,256(sp)
-    802069bc:	0a00                	addi	s0,sp,272
+    802069c6:	716d                	addi	sp,sp,-272
+    802069c8:	e606                	sd	ra,264(sp)
+    802069ca:	e222                	sd	s0,256(sp)
+    802069cc:	0a00                	addi	s0,sp,272
     char name[FAT32_MAX_FILENAME + 1];
     return lookup_path(path, 0, name);
-    802069be:	ef040613          	addi	a2,s0,-272
-    802069c2:	4581                	li	a1,0
-    802069c4:	00000097          	auipc	ra,0x0
-    802069c8:	e7c080e7          	jalr	-388(ra) # 80206840 <lookup_path>
+    802069ce:	ef040613          	addi	a2,s0,-272
+    802069d2:	4581                	li	a1,0
+    802069d4:	00000097          	auipc	ra,0x0
+    802069d8:	e7c080e7          	jalr	-388(ra) # 80206850 <lookup_path>
 }
-    802069cc:	60b2                	ld	ra,264(sp)
-    802069ce:	6412                	ld	s0,256(sp)
-    802069d0:	6151                	addi	sp,sp,272
-    802069d2:	8082                	ret
+    802069dc:	60b2                	ld	ra,264(sp)
+    802069de:	6412                	ld	s0,256(sp)
+    802069e0:	6151                	addi	sp,sp,272
+    802069e2:	8082                	ret
 
-00000000802069d4 <enameparent>:
+00000000802069e4 <enameparent>:
 
 struct dirent *enameparent(char *path, char *name)
 {
-    802069d4:	1141                	addi	sp,sp,-16
-    802069d6:	e406                	sd	ra,8(sp)
-    802069d8:	e022                	sd	s0,0(sp)
-    802069da:	0800                	addi	s0,sp,16
-    802069dc:	862e                	mv	a2,a1
+    802069e4:	1141                	addi	sp,sp,-16
+    802069e6:	e406                	sd	ra,8(sp)
+    802069e8:	e022                	sd	s0,0(sp)
+    802069ea:	0800                	addi	s0,sp,16
+    802069ec:	862e                	mv	a2,a1
     return lookup_path(path, 1, name);
-    802069de:	4585                	li	a1,1
-    802069e0:	00000097          	auipc	ra,0x0
-    802069e4:	e60080e7          	jalr	-416(ra) # 80206840 <lookup_path>
+    802069ee:	4585                	li	a1,1
+    802069f0:	00000097          	auipc	ra,0x0
+    802069f4:	e60080e7          	jalr	-416(ra) # 80206850 <lookup_path>
 }
-    802069e8:	60a2                	ld	ra,8(sp)
-    802069ea:	6402                	ld	s0,0(sp)
-    802069ec:	0141                	addi	sp,sp,16
-    802069ee:	8082                	ret
+    802069f8:	60a2                	ld	ra,8(sp)
+    802069fa:	6402                	ld	s0,0(sp)
+    802069fc:	0141                	addi	sp,sp,16
+    802069fe:	8082                	ret
 
-00000000802069f0 <plicinit>:
+0000000080206a00 <plicinit>:
 
 //
 // the riscv Platform Level Interrupt Controller (PLIC).
 //
 
 void plicinit(void) {
-    802069f0:	1141                	addi	sp,sp,-16
-    802069f2:	e422                	sd	s0,8(sp)
-    802069f4:	0800                	addi	s0,sp,16
+    80206a00:	1141                	addi	sp,sp,-16
+    80206a02:	e422                	sd	s0,8(sp)
+    80206a04:	0800                	addi	s0,sp,16
 	writed(1, PLIC_V + DISK_IRQ * sizeof(uint32));
-    802069f6:	00fc37b7          	lui	a5,0xfc3
-    802069fa:	07ba                	slli	a5,a5,0xe
-    802069fc:	4705                	li	a4,1
-    802069fe:	c3d8                	sw	a4,4(a5)
+    80206a06:	00fc37b7          	lui	a5,0xfc3
+    80206a0a:	07ba                	slli	a5,a5,0xe
+    80206a0c:	4705                	li	a4,1
+    80206a0e:	c3d8                	sw	a4,4(a5)
 	writed(1, PLIC_V + UART_IRQ * sizeof(uint32));
-    80206a00:	d798                	sw	a4,40(a5)
+    80206a10:	d798                	sw	a4,40(a5)
 
 	#ifdef DEBUG 
 	printf("plicinit\n");
 	#endif 
 }
-    80206a02:	6422                	ld	s0,8(sp)
-    80206a04:	0141                	addi	sp,sp,16
-    80206a06:	8082                	ret
+    80206a12:	6422                	ld	s0,8(sp)
+    80206a14:	0141                	addi	sp,sp,16
+    80206a16:	8082                	ret
 
-0000000080206a08 <plicinithart>:
+0000000080206a18 <plicinithart>:
 
 void
 plicinithart(void)
 {
-    80206a08:	1141                	addi	sp,sp,-16
-    80206a0a:	e406                	sd	ra,8(sp)
-    80206a0c:	e022                	sd	s0,0(sp)
-    80206a0e:	0800                	addi	s0,sp,16
+    80206a18:	1141                	addi	sp,sp,-16
+    80206a1a:	e406                	sd	ra,8(sp)
+    80206a1c:	e022                	sd	s0,0(sp)
+    80206a1e:	0800                	addi	s0,sp,16
   int hart = cpuid();
-    80206a10:	ffffb097          	auipc	ra,0xffffb
-    80206a14:	000080e7          	jalr	ra # 80201a10 <cpuid>
+    80206a20:	ffffb097          	auipc	ra,0xffffb
+    80206a24:	ff0080e7          	jalr	-16(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);
-    80206a18:	0085171b          	slliw	a4,a0,0x8
-    80206a1c:	01f867b7          	lui	a5,0x1f86
-    80206a20:	0785                	addi	a5,a5,1 # 1f86001 <_entry-0x7e279fff>
-    80206a22:	07b6                	slli	a5,a5,0xd
-    80206a24:	97ba                	add	a5,a5,a4
-    80206a26:	40200713          	li	a4,1026
-    80206a2a:	08e7a023          	sw	a4,128(a5)
+    80206a28:	0085171b          	slliw	a4,a0,0x8
+    80206a2c:	01f867b7          	lui	a5,0x1f86
+    80206a30:	0785                	addi	a5,a5,1 # 1f86001 <_entry-0x7e279fff>
+    80206a32:	07b6                	slli	a5,a5,0xd
+    80206a34:	97ba                	add	a5,a5,a4
+    80206a36:	40200713          	li	a4,1026
+    80206a3a:	08e7a023          	sw	a4,128(a5)
   // set this hart's S-mode priority threshold to 0.
   *(uint32*)PLIC_SPRIORITY(hart) = 0;
-    80206a2e:	00d5151b          	slliw	a0,a0,0xd
-    80206a32:	03f0c7b7          	lui	a5,0x3f0c
-    80206a36:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
-    80206a3a:	07b2                	slli	a5,a5,0xc
-    80206a3c:	97aa                	add	a5,a5,a0
-    80206a3e:	0007a023          	sw	zero,0(a5)
+    80206a3e:	00d5151b          	slliw	a0,a0,0xd
+    80206a42:	03f0c7b7          	lui	a5,0x3f0c
+    80206a46:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
+    80206a4a:	07b2                	slli	a5,a5,0xc
+    80206a4c:	97aa                	add	a5,a5,a0
+    80206a4e:	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
 }
-    80206a42:	60a2                	ld	ra,8(sp)
-    80206a44:	6402                	ld	s0,0(sp)
-    80206a46:	0141                	addi	sp,sp,16
-    80206a48:	8082                	ret
+    80206a52:	60a2                	ld	ra,8(sp)
+    80206a54:	6402                	ld	s0,0(sp)
+    80206a56:	0141                	addi	sp,sp,16
+    80206a58:	8082                	ret
 
-0000000080206a4a <plic_claim>:
+0000000080206a5a <plic_claim>:
 
 // ask the PLIC what interrupt we should serve.
 int
 plic_claim(void)
 {
-    80206a4a:	1141                	addi	sp,sp,-16
-    80206a4c:	e406                	sd	ra,8(sp)
-    80206a4e:	e022                	sd	s0,0(sp)
-    80206a50:	0800                	addi	s0,sp,16
+    80206a5a:	1141                	addi	sp,sp,-16
+    80206a5c:	e406                	sd	ra,8(sp)
+    80206a5e:	e022                	sd	s0,0(sp)
+    80206a60:	0800                	addi	s0,sp,16
   int hart = cpuid();
-    80206a52:	ffffb097          	auipc	ra,0xffffb
-    80206a56:	fbe080e7          	jalr	-66(ra) # 80201a10 <cpuid>
+    80206a62:	ffffb097          	auipc	ra,0xffffb
+    80206a66:	fae080e7          	jalr	-82(ra) # 80201a10 <cpuid>
   int irq;
   #ifndef QEMU
   irq = *(uint32*)PLIC_MCLAIM(hart);
   #else
   irq = *(uint32*)PLIC_SCLAIM(hart);
-    80206a5a:	00d5151b          	slliw	a0,a0,0xd
-    80206a5e:	03f0c7b7          	lui	a5,0x3f0c
-    80206a62:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
-    80206a66:	07b2                	slli	a5,a5,0xc
-    80206a68:	97aa                	add	a5,a5,a0
+    80206a6a:	00d5151b          	slliw	a0,a0,0xd
+    80206a6e:	03f0c7b7          	lui	a5,0x3f0c
+    80206a72:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
+    80206a76:	07b2                	slli	a5,a5,0xc
+    80206a78:	97aa                	add	a5,a5,a0
   #endif
   return irq;
 }
-    80206a6a:	43c8                	lw	a0,4(a5)
-    80206a6c:	60a2                	ld	ra,8(sp)
-    80206a6e:	6402                	ld	s0,0(sp)
-    80206a70:	0141                	addi	sp,sp,16
-    80206a72:	8082                	ret
+    80206a7a:	43c8                	lw	a0,4(a5)
+    80206a7c:	60a2                	ld	ra,8(sp)
+    80206a7e:	6402                	ld	s0,0(sp)
+    80206a80:	0141                	addi	sp,sp,16
+    80206a82:	8082                	ret
 
-0000000080206a74 <plic_complete>:
+0000000080206a84 <plic_complete>:
 
 // tell the PLIC we've served this IRQ.
 void
 plic_complete(int irq)
 {
-    80206a74:	1101                	addi	sp,sp,-32
-    80206a76:	ec06                	sd	ra,24(sp)
-    80206a78:	e822                	sd	s0,16(sp)
-    80206a7a:	e426                	sd	s1,8(sp)
-    80206a7c:	1000                	addi	s0,sp,32
-    80206a7e:	84aa                	mv	s1,a0
+    80206a84:	1101                	addi	sp,sp,-32
+    80206a86:	ec06                	sd	ra,24(sp)
+    80206a88:	e822                	sd	s0,16(sp)
+    80206a8a:	e426                	sd	s1,8(sp)
+    80206a8c:	1000                	addi	s0,sp,32
+    80206a8e:	84aa                	mv	s1,a0
   int hart = cpuid();
-    80206a80:	ffffb097          	auipc	ra,0xffffb
-    80206a84:	f90080e7          	jalr	-112(ra) # 80201a10 <cpuid>
+    80206a90:	ffffb097          	auipc	ra,0xffffb
+    80206a94:	f80080e7          	jalr	-128(ra) # 80201a10 <cpuid>
   #ifndef QEMU
   *(uint32*)PLIC_MCLAIM(hart) = irq;
   #else
   *(uint32*)PLIC_SCLAIM(hart) = irq;
-    80206a88:	00d5151b          	slliw	a0,a0,0xd
-    80206a8c:	03f0c7b7          	lui	a5,0x3f0c
-    80206a90:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
-    80206a94:	07b2                	slli	a5,a5,0xc
-    80206a96:	97aa                	add	a5,a5,a0
-    80206a98:	c3c4                	sw	s1,4(a5)
+    80206a98:	00d5151b          	slliw	a0,a0,0xd
+    80206a9c:	03f0c7b7          	lui	a5,0x3f0c
+    80206aa0:	20178793          	addi	a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff>
+    80206aa4:	07b2                	slli	a5,a5,0xc
+    80206aa6:	97aa                	add	a5,a5,a0
+    80206aa8:	c3c4                	sw	s1,4(a5)
   #endif
 }
-    80206a9a:	60e2                	ld	ra,24(sp)
-    80206a9c:	6442                	ld	s0,16(sp)
-    80206a9e:	64a2                	ld	s1,8(sp)
-    80206aa0:	6105                	addi	sp,sp,32
-    80206aa2:	8082                	ret
+    80206aaa:	60e2                	ld	ra,24(sp)
+    80206aac:	6442                	ld	s0,16(sp)
+    80206aae:	64a2                	ld	s1,8(sp)
+    80206ab0:	6105                	addi	sp,sp,32
+    80206ab2:	8082                	ret
 
-0000000080206aa4 <consolewrite>:
+0000000080206ab4 <consolewrite>:
 //
 // user write()s to the console go here.
 //
 int
 consolewrite(int user_src, uint64 src, int n)
 {
-    80206aa4:	715d                	addi	sp,sp,-80
-    80206aa6:	e486                	sd	ra,72(sp)
-    80206aa8:	e0a2                	sd	s0,64(sp)
-    80206aaa:	fc26                	sd	s1,56(sp)
-    80206aac:	f84a                	sd	s2,48(sp)
-    80206aae:	f44e                	sd	s3,40(sp)
-    80206ab0:	f052                	sd	s4,32(sp)
-    80206ab2:	ec56                	sd	s5,24(sp)
-    80206ab4:	e85a                	sd	s6,16(sp)
-    80206ab6:	0880                	addi	s0,sp,80
-    80206ab8:	8a2a                	mv	s4,a0
-    80206aba:	84ae                	mv	s1,a1
-    80206abc:	89b2                	mv	s3,a2
+    80206ab4:	715d                	addi	sp,sp,-80
+    80206ab6:	e486                	sd	ra,72(sp)
+    80206ab8:	e0a2                	sd	s0,64(sp)
+    80206aba:	fc26                	sd	s1,56(sp)
+    80206abc:	f84a                	sd	s2,48(sp)
+    80206abe:	f44e                	sd	s3,40(sp)
+    80206ac0:	f052                	sd	s4,32(sp)
+    80206ac2:	ec56                	sd	s5,24(sp)
+    80206ac4:	e85a                	sd	s6,16(sp)
+    80206ac6:	0880                	addi	s0,sp,80
+    80206ac8:	8a2a                	mv	s4,a0
+    80206aca:	84ae                	mv	s1,a1
+    80206acc:	89b2                	mv	s3,a2
   int i;
 
   acquire(&cons.lock);
-    80206abe:	0001c517          	auipc	a0,0x1c
-    80206ac2:	16250513          	addi	a0,a0,354 # 80222c20 <cons>
-    80206ac6:	ffffa097          	auipc	ra,0xffffa
-    80206aca:	c00080e7          	jalr	-1024(ra) # 802006c6 <acquire>
+    80206ace:	0001c517          	auipc	a0,0x1c
+    80206ad2:	15250513          	addi	a0,a0,338 # 80222c20 <cons>
+    80206ad6:	ffffa097          	auipc	ra,0xffffa
+    80206ada:	bf0080e7          	jalr	-1040(ra) # 802006c6 <acquire>
   for(i = 0; i < n; i++){
-    80206ace:	07305063          	blez	s3,80206b2e <consolewrite+0x8a>
-    80206ad2:	4901                	li	s2,0
+    80206ade:	07305063          	blez	s3,80206b3e <consolewrite+0x8a>
+    80206ae2:	4901                	li	s2,0
     char c;
     if(either_copyin(&c, user_src, src+i, 1) == -1)
-    80206ad4:	fbf40b13          	addi	s6,s0,-65
-    80206ad8:	5afd                	li	s5,-1
-    80206ada:	4685                	li	a3,1
-    80206adc:	8626                	mv	a2,s1
-    80206ade:	85d2                	mv	a1,s4
-    80206ae0:	855a                	mv	a0,s6
-    80206ae2:	ffffc097          	auipc	ra,0xffffc
-    80206ae6:	a66080e7          	jalr	-1434(ra) # 80202548 <either_copyin>
-    80206aea:	01550f63          	beq	a0,s5,80206b08 <consolewrite+0x64>
+    80206ae4:	fbf40b13          	addi	s6,s0,-65
+    80206ae8:	5afd                	li	s5,-1
+    80206aea:	4685                	li	a3,1
+    80206aec:	8626                	mv	a2,s1
+    80206aee:	85d2                	mv	a1,s4
+    80206af0:	855a                	mv	a0,s6
+    80206af2:	ffffc097          	auipc	ra,0xffffc
+    80206af6:	a56080e7          	jalr	-1450(ra) # 80202548 <either_copyin>
+    80206afa:	01550f63          	beq	a0,s5,80206b18 <consolewrite+0x64>
 	SBI_CALL_1(SBI_CONSOLE_PUTCHAR, ch);
-    80206aee:	fbf44503          	lbu	a0,-65(s0)
-    80206af2:	4581                	li	a1,0
-    80206af4:	4601                	li	a2,0
-    80206af6:	4681                	li	a3,0
-    80206af8:	4885                	li	a7,1
-    80206afa:	00000073          	ecall
+    80206afe:	fbf44503          	lbu	a0,-65(s0)
+    80206b02:	4581                	li	a1,0
+    80206b04:	4601                	li	a2,0
+    80206b06:	4681                	li	a3,0
+    80206b08:	4885                	li	a7,1
+    80206b0a:	00000073          	ecall
   for(i = 0; i < n; i++){
-    80206afe:	2905                	addiw	s2,s2,1
-    80206b00:	0485                	addi	s1,s1,1
-    80206b02:	fd299ce3          	bne	s3,s2,80206ada <consolewrite+0x36>
-    80206b06:	894e                	mv	s2,s3
+    80206b0e:	2905                	addiw	s2,s2,1
+    80206b10:	0485                	addi	s1,s1,1
+    80206b12:	fd299ce3          	bne	s3,s2,80206aea <consolewrite+0x36>
+    80206b16:	894e                	mv	s2,s3
       break;
     sbi_console_putchar(c);
   }
   release(&cons.lock);
-    80206b08:	0001c517          	auipc	a0,0x1c
-    80206b0c:	11850513          	addi	a0,a0,280 # 80222c20 <cons>
-    80206b10:	ffffa097          	auipc	ra,0xffffa
-    80206b14:	c0a080e7          	jalr	-1014(ra) # 8020071a <release>
+    80206b18:	0001c517          	auipc	a0,0x1c
+    80206b1c:	10850513          	addi	a0,a0,264 # 80222c20 <cons>
+    80206b20:	ffffa097          	auipc	ra,0xffffa
+    80206b24:	bfa080e7          	jalr	-1030(ra) # 8020071a <release>
 
   return i;
 }
-    80206b18:	854a                	mv	a0,s2
-    80206b1a:	60a6                	ld	ra,72(sp)
-    80206b1c:	6406                	ld	s0,64(sp)
-    80206b1e:	74e2                	ld	s1,56(sp)
-    80206b20:	7942                	ld	s2,48(sp)
-    80206b22:	79a2                	ld	s3,40(sp)
-    80206b24:	7a02                	ld	s4,32(sp)
-    80206b26:	6ae2                	ld	s5,24(sp)
-    80206b28:	6b42                	ld	s6,16(sp)
-    80206b2a:	6161                	addi	sp,sp,80
-    80206b2c:	8082                	ret
+    80206b28:	854a                	mv	a0,s2
+    80206b2a:	60a6                	ld	ra,72(sp)
+    80206b2c:	6406                	ld	s0,64(sp)
+    80206b2e:	74e2                	ld	s1,56(sp)
+    80206b30:	7942                	ld	s2,48(sp)
+    80206b32:	79a2                	ld	s3,40(sp)
+    80206b34:	7a02                	ld	s4,32(sp)
+    80206b36:	6ae2                	ld	s5,24(sp)
+    80206b38:	6b42                	ld	s6,16(sp)
+    80206b3a:	6161                	addi	sp,sp,80
+    80206b3c:	8082                	ret
   for(i = 0; i < n; i++){
-    80206b2e:	4901                	li	s2,0
-    80206b30:	bfe1                	j	80206b08 <consolewrite+0x64>
+    80206b3e:	4901                	li	s2,0
+    80206b40:	bfe1                	j	80206b18 <consolewrite+0x64>
 
-0000000080206b32 <consoleread>:
+0000000080206b42 <consoleread>:
 // user_dist indicates whether dst is a user
 // or kernel address.
 //
 int
 consoleread(int user_dst, uint64 dst, int n)
 {
-    80206b32:	7119                	addi	sp,sp,-128
-    80206b34:	fc86                	sd	ra,120(sp)
-    80206b36:	f8a2                	sd	s0,112(sp)
-    80206b38:	f4a6                	sd	s1,104(sp)
-    80206b3a:	f0ca                	sd	s2,96(sp)
-    80206b3c:	ecce                	sd	s3,88(sp)
-    80206b3e:	e8d2                	sd	s4,80(sp)
-    80206b40:	e4d6                	sd	s5,72(sp)
-    80206b42:	e0da                	sd	s6,64(sp)
-    80206b44:	fc5e                	sd	s7,56(sp)
-    80206b46:	f862                	sd	s8,48(sp)
-    80206b48:	f466                	sd	s9,40(sp)
-    80206b4a:	f06a                	sd	s10,32(sp)
-    80206b4c:	ec6e                	sd	s11,24(sp)
-    80206b4e:	0100                	addi	s0,sp,128
-    80206b50:	8aaa                	mv	s5,a0
-    80206b52:	8a2e                	mv	s4,a1
-    80206b54:	89b2                	mv	s3,a2
+    80206b42:	7119                	addi	sp,sp,-128
+    80206b44:	fc86                	sd	ra,120(sp)
+    80206b46:	f8a2                	sd	s0,112(sp)
+    80206b48:	f4a6                	sd	s1,104(sp)
+    80206b4a:	f0ca                	sd	s2,96(sp)
+    80206b4c:	ecce                	sd	s3,88(sp)
+    80206b4e:	e8d2                	sd	s4,80(sp)
+    80206b50:	e4d6                	sd	s5,72(sp)
+    80206b52:	e0da                	sd	s6,64(sp)
+    80206b54:	fc5e                	sd	s7,56(sp)
+    80206b56:	f862                	sd	s8,48(sp)
+    80206b58:	f466                	sd	s9,40(sp)
+    80206b5a:	f06a                	sd	s10,32(sp)
+    80206b5c:	ec6e                	sd	s11,24(sp)
+    80206b5e:	0100                	addi	s0,sp,128
+    80206b60:	8aaa                	mv	s5,a0
+    80206b62:	8a2e                	mv	s4,a1
+    80206b64:	89b2                	mv	s3,a2
   uint target;
   int c;
   char cbuf;
 
   target = n;
-    80206b56:	00060b1b          	sext.w	s6,a2
+    80206b66:	00060b1b          	sext.w	s6,a2
   acquire(&cons.lock);
-    80206b5a:	0001c517          	auipc	a0,0x1c
-    80206b5e:	0c650513          	addi	a0,a0,198 # 80222c20 <cons>
-    80206b62:	ffffa097          	auipc	ra,0xffffa
-    80206b66:	b64080e7          	jalr	-1180(ra) # 802006c6 <acquire>
+    80206b6a:	0001c517          	auipc	a0,0x1c
+    80206b6e:	0b650513          	addi	a0,a0,182 # 80222c20 <cons>
+    80206b72:	ffffa097          	auipc	ra,0xffffa
+    80206b76:	b54080e7          	jalr	-1196(ra) # 802006c6 <acquire>
   while(n > 0){
     // wait until interrupt handler has put some
     // input into cons.buffer.
     while(cons.r == cons.w){
-    80206b6a:	0001c497          	auipc	s1,0x1c
-    80206b6e:	0b648493          	addi	s1,s1,182 # 80222c20 <cons>
+    80206b7a:	0001c497          	auipc	s1,0x1c
+    80206b7e:	0a648493          	addi	s1,s1,166 # 80222c20 <cons>
       if(myproc()->killed){
         release(&cons.lock);
         return -1;
       }
       sleep(&cons.r, &cons.lock);
-    80206b72:	0001c917          	auipc	s2,0x1c
-    80206b76:	14690913          	addi	s2,s2,326 # 80222cb8 <cons+0x98>
+    80206b82:	0001c917          	auipc	s2,0x1c
+    80206b86:	13690913          	addi	s2,s2,310 # 80222cb8 <cons+0x98>
     }
 
     c = cons.buf[cons.r++ % INPUT_BUF];
 
     if(c == C('D')){  // end-of-file
-    80206b7a:	4c11                	li	s8,4
+    80206b8a:	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)
-    80206b7c:	f8f40d13          	addi	s10,s0,-113
-    80206b80:	5cfd                	li	s9,-1
+    80206b8c:	f8f40d13          	addi	s10,s0,-113
+    80206b90:	5cfd                	li	s9,-1
       break;
 
     dst++;
     --n;
 
     if(c == '\n'){
-    80206b82:	4da9                	li	s11,10
+    80206b92:	4da9                	li	s11,10
   while(n > 0){
-    80206b84:	07305763          	blez	s3,80206bf2 <consoleread+0xc0>
+    80206b94:	07305763          	blez	s3,80206c02 <consoleread+0xc0>
     while(cons.r == cons.w){
-    80206b88:	0984a783          	lw	a5,152(s1)
-    80206b8c:	09c4a703          	lw	a4,156(s1)
-    80206b90:	02f71463          	bne	a4,a5,80206bb8 <consoleread+0x86>
+    80206b98:	0984a783          	lw	a5,152(s1)
+    80206b9c:	09c4a703          	lw	a4,156(s1)
+    80206ba0:	02f71463          	bne	a4,a5,80206bc8 <consoleread+0x86>
       if(myproc()->killed){
-    80206b94:	ffffb097          	auipc	ra,0xffffb
-    80206b98:	ea8080e7          	jalr	-344(ra) # 80201a3c <myproc>
-    80206b9c:	591c                	lw	a5,48(a0)
-    80206b9e:	e7ad                	bnez	a5,80206c08 <consoleread+0xd6>
-      sleep(&cons.r, &cons.lock);
-    80206ba0:	85a6                	mv	a1,s1
-    80206ba2:	854a                	mv	a0,s2
     80206ba4:	ffffb097          	auipc	ra,0xffffb
-    80206ba8:	718080e7          	jalr	1816(ra) # 802022bc <sleep>
+    80206ba8:	e98080e7          	jalr	-360(ra) # 80201a3c <myproc>
+    80206bac:	591c                	lw	a5,48(a0)
+    80206bae:	e7ad                	bnez	a5,80206c18 <consoleread+0xd6>
+      sleep(&cons.r, &cons.lock);
+    80206bb0:	85a6                	mv	a1,s1
+    80206bb2:	854a                	mv	a0,s2
+    80206bb4:	ffffb097          	auipc	ra,0xffffb
+    80206bb8:	708080e7          	jalr	1800(ra) # 802022bc <sleep>
     while(cons.r == cons.w){
-    80206bac:	0984a783          	lw	a5,152(s1)
-    80206bb0:	09c4a703          	lw	a4,156(s1)
-    80206bb4:	fef700e3          	beq	a4,a5,80206b94 <consoleread+0x62>
+    80206bbc:	0984a783          	lw	a5,152(s1)
+    80206bc0:	09c4a703          	lw	a4,156(s1)
+    80206bc4:	fef700e3          	beq	a4,a5,80206ba4 <consoleread+0x62>
     c = cons.buf[cons.r++ % INPUT_BUF];
-    80206bb8:	0017871b          	addiw	a4,a5,1
-    80206bbc:	08e4ac23          	sw	a4,152(s1)
-    80206bc0:	07f7f713          	andi	a4,a5,127
-    80206bc4:	9726                	add	a4,a4,s1
-    80206bc6:	01874703          	lbu	a4,24(a4)
-    80206bca:	00070b9b          	sext.w	s7,a4
+    80206bc8:	0017871b          	addiw	a4,a5,1
+    80206bcc:	08e4ac23          	sw	a4,152(s1)
+    80206bd0:	07f7f713          	andi	a4,a5,127
+    80206bd4:	9726                	add	a4,a4,s1
+    80206bd6:	01874703          	lbu	a4,24(a4)
+    80206bda:	00070b9b          	sext.w	s7,a4
     if(c == C('D')){  // end-of-file
-    80206bce:	078b8563          	beq	s7,s8,80206c38 <consoleread+0x106>
+    80206bde:	078b8563          	beq	s7,s8,80206c48 <consoleread+0x106>
     cbuf = c;
-    80206bd2:	f8e407a3          	sb	a4,-113(s0)
+    80206be2:	f8e407a3          	sb	a4,-113(s0)
     if(either_copyout(user_dst, dst, &cbuf, 1) == -1)
-    80206bd6:	4685                	li	a3,1
-    80206bd8:	866a                	mv	a2,s10
-    80206bda:	85d2                	mv	a1,s4
-    80206bdc:	8556                	mv	a0,s5
-    80206bde:	ffffc097          	auipc	ra,0xffffc
-    80206be2:	934080e7          	jalr	-1740(ra) # 80202512 <either_copyout>
-    80206be6:	01950663          	beq	a0,s9,80206bf2 <consoleread+0xc0>
+    80206be6:	4685                	li	a3,1
+    80206be8:	866a                	mv	a2,s10
+    80206bea:	85d2                	mv	a1,s4
+    80206bec:	8556                	mv	a0,s5
+    80206bee:	ffffc097          	auipc	ra,0xffffc
+    80206bf2:	924080e7          	jalr	-1756(ra) # 80202512 <either_copyout>
+    80206bf6:	01950663          	beq	a0,s9,80206c02 <consoleread+0xc0>
     dst++;
-    80206bea:	0a05                	addi	s4,s4,1
+    80206bfa:	0a05                	addi	s4,s4,1
     --n;
-    80206bec:	39fd                	addiw	s3,s3,-1
+    80206bfc:	39fd                	addiw	s3,s3,-1
     if(c == '\n'){
-    80206bee:	f9bb9be3          	bne	s7,s11,80206b84 <consoleread+0x52>
+    80206bfe:	f9bb9be3          	bne	s7,s11,80206b94 <consoleread+0x52>
       // a whole line has arrived, return to
       // the user-level read().
       break;
     }
   }
   release(&cons.lock);
-    80206bf2:	0001c517          	auipc	a0,0x1c
-    80206bf6:	02e50513          	addi	a0,a0,46 # 80222c20 <cons>
-    80206bfa:	ffffa097          	auipc	ra,0xffffa
-    80206bfe:	b20080e7          	jalr	-1248(ra) # 8020071a <release>
+    80206c02:	0001c517          	auipc	a0,0x1c
+    80206c06:	01e50513          	addi	a0,a0,30 # 80222c20 <cons>
+    80206c0a:	ffffa097          	auipc	ra,0xffffa
+    80206c0e:	b10080e7          	jalr	-1264(ra) # 8020071a <release>
 
   return target - n;
-    80206c02:	413b053b          	subw	a0,s6,s3
-    80206c06:	a811                	j	80206c1a <consoleread+0xe8>
+    80206c12:	413b053b          	subw	a0,s6,s3
+    80206c16:	a811                	j	80206c2a <consoleread+0xe8>
         release(&cons.lock);
-    80206c08:	0001c517          	auipc	a0,0x1c
-    80206c0c:	01850513          	addi	a0,a0,24 # 80222c20 <cons>
-    80206c10:	ffffa097          	auipc	ra,0xffffa
-    80206c14:	b0a080e7          	jalr	-1270(ra) # 8020071a <release>
+    80206c18:	0001c517          	auipc	a0,0x1c
+    80206c1c:	00850513          	addi	a0,a0,8 # 80222c20 <cons>
+    80206c20:	ffffa097          	auipc	ra,0xffffa
+    80206c24:	afa080e7          	jalr	-1286(ra) # 8020071a <release>
         return -1;
-    80206c18:	557d                	li	a0,-1
-}
-    80206c1a:	70e6                	ld	ra,120(sp)
-    80206c1c:	7446                	ld	s0,112(sp)
-    80206c1e:	74a6                	ld	s1,104(sp)
-    80206c20:	7906                	ld	s2,96(sp)
-    80206c22:	69e6                	ld	s3,88(sp)
-    80206c24:	6a46                	ld	s4,80(sp)
-    80206c26:	6aa6                	ld	s5,72(sp)
-    80206c28:	6b06                	ld	s6,64(sp)
-    80206c2a:	7be2                	ld	s7,56(sp)
-    80206c2c:	7c42                	ld	s8,48(sp)
-    80206c2e:	7ca2                	ld	s9,40(sp)
-    80206c30:	7d02                	ld	s10,32(sp)
-    80206c32:	6de2                	ld	s11,24(sp)
-    80206c34:	6109                	addi	sp,sp,128
-    80206c36:	8082                	ret
+    80206c28:	557d                	li	a0,-1
+}
+    80206c2a:	70e6                	ld	ra,120(sp)
+    80206c2c:	7446                	ld	s0,112(sp)
+    80206c2e:	74a6                	ld	s1,104(sp)
+    80206c30:	7906                	ld	s2,96(sp)
+    80206c32:	69e6                	ld	s3,88(sp)
+    80206c34:	6a46                	ld	s4,80(sp)
+    80206c36:	6aa6                	ld	s5,72(sp)
+    80206c38:	6b06                	ld	s6,64(sp)
+    80206c3a:	7be2                	ld	s7,56(sp)
+    80206c3c:	7c42                	ld	s8,48(sp)
+    80206c3e:	7ca2                	ld	s9,40(sp)
+    80206c40:	7d02                	ld	s10,32(sp)
+    80206c42:	6de2                	ld	s11,24(sp)
+    80206c44:	6109                	addi	sp,sp,128
+    80206c46:	8082                	ret
       if(n < target){
-    80206c38:	0009871b          	sext.w	a4,s3
-    80206c3c:	fb677be3          	bgeu	a4,s6,80206bf2 <consoleread+0xc0>
+    80206c48:	0009871b          	sext.w	a4,s3
+    80206c4c:	fb677be3          	bgeu	a4,s6,80206c02 <consoleread+0xc0>
         cons.r--;
-    80206c40:	0001c717          	auipc	a4,0x1c
-    80206c44:	06f72c23          	sw	a5,120(a4) # 80222cb8 <cons+0x98>
-    80206c48:	b76d                	j	80206bf2 <consoleread+0xc0>
+    80206c50:	0001c717          	auipc	a4,0x1c
+    80206c54:	06f72423          	sw	a5,104(a4) # 80222cb8 <cons+0x98>
+    80206c58:	b76d                	j	80206c02 <consoleread+0xc0>
 
-0000000080206c4a <consputc>:
+0000000080206c5a <consputc>:
 void consputc(int c) {
-    80206c4a:	1141                	addi	sp,sp,-16
-    80206c4c:	e422                	sd	s0,8(sp)
-    80206c4e:	0800                	addi	s0,sp,16
+    80206c5a:	1141                	addi	sp,sp,-16
+    80206c5c:	e422                	sd	s0,8(sp)
+    80206c5e:	0800                	addi	s0,sp,16
   if(c == BACKSPACE){
-    80206c50:	10000793          	li	a5,256
-    80206c54:	00f50b63          	beq	a0,a5,80206c6a <consputc+0x20>
-    80206c58:	4581                	li	a1,0
-    80206c5a:	4601                	li	a2,0
-    80206c5c:	4681                	li	a3,0
-    80206c5e:	4885                	li	a7,1
-    80206c60:	00000073          	ecall
-}
-    80206c64:	6422                	ld	s0,8(sp)
-    80206c66:	0141                	addi	sp,sp,16
-    80206c68:	8082                	ret
-    80206c6a:	4521                	li	a0,8
-    80206c6c:	4581                	li	a1,0
-    80206c6e:	4601                	li	a2,0
-    80206c70:	4681                	li	a3,0
-    80206c72:	4885                	li	a7,1
-    80206c74:	00000073          	ecall
-    80206c78:	02000513          	li	a0,32
-    80206c7c:	00000073          	ecall
-    80206c80:	4521                	li	a0,8
-    80206c82:	00000073          	ecall
-}
-    80206c86:	bff9                	j	80206c64 <consputc+0x1a>
-
-0000000080206c88 <consoleintr>:
+    80206c60:	10000793          	li	a5,256
+    80206c64:	00f50b63          	beq	a0,a5,80206c7a <consputc+0x20>
+    80206c68:	4581                	li	a1,0
+    80206c6a:	4601                	li	a2,0
+    80206c6c:	4681                	li	a3,0
+    80206c6e:	4885                	li	a7,1
+    80206c70:	00000073          	ecall
+}
+    80206c74:	6422                	ld	s0,8(sp)
+    80206c76:	0141                	addi	sp,sp,16
+    80206c78:	8082                	ret
+    80206c7a:	4521                	li	a0,8
+    80206c7c:	4581                	li	a1,0
+    80206c7e:	4601                	li	a2,0
+    80206c80:	4681                	li	a3,0
+    80206c82:	4885                	li	a7,1
+    80206c84:	00000073          	ecall
+    80206c88:	02000513          	li	a0,32
+    80206c8c:	00000073          	ecall
+    80206c90:	4521                	li	a0,8
+    80206c92:	00000073          	ecall
+}
+    80206c96:	bff9                	j	80206c74 <consputc+0x1a>
+
+0000000080206c98 <consoleintr>:
 // do erase/kill processing, append to cons.buf,
 // wake up consoleread() if a whole line has arrived.
 //
 void
 consoleintr(int c)
 {
-    80206c88:	1101                	addi	sp,sp,-32
-    80206c8a:	ec06                	sd	ra,24(sp)
-    80206c8c:	e822                	sd	s0,16(sp)
-    80206c8e:	e426                	sd	s1,8(sp)
-    80206c90:	e04a                	sd	s2,0(sp)
-    80206c92:	1000                	addi	s0,sp,32
-    80206c94:	84aa                	mv	s1,a0
+    80206c98:	1101                	addi	sp,sp,-32
+    80206c9a:	ec06                	sd	ra,24(sp)
+    80206c9c:	e822                	sd	s0,16(sp)
+    80206c9e:	e426                	sd	s1,8(sp)
+    80206ca0:	e04a                	sd	s2,0(sp)
+    80206ca2:	1000                	addi	s0,sp,32
+    80206ca4:	84aa                	mv	s1,a0
   acquire(&cons.lock);
-    80206c96:	0001c517          	auipc	a0,0x1c
-    80206c9a:	f8a50513          	addi	a0,a0,-118 # 80222c20 <cons>
-    80206c9e:	ffffa097          	auipc	ra,0xffffa
-    80206ca2:	a28080e7          	jalr	-1496(ra) # 802006c6 <acquire>
+    80206ca6:	0001c517          	auipc	a0,0x1c
+    80206caa:	f7a50513          	addi	a0,a0,-134 # 80222c20 <cons>
+    80206cae:	ffffa097          	auipc	ra,0xffffa
+    80206cb2:	a18080e7          	jalr	-1512(ra) # 802006c6 <acquire>
 
   switch(c){
-    80206ca6:	47d5                	li	a5,21
-    80206ca8:	0af48663          	beq	s1,a5,80206d54 <consoleintr+0xcc>
-    80206cac:	0297ca63          	blt	a5,s1,80206ce0 <consoleintr+0x58>
-    80206cb0:	47a1                	li	a5,8
-    80206cb2:	0ef48763          	beq	s1,a5,80206da0 <consoleintr+0x118>
-    80206cb6:	47c1                	li	a5,16
-    80206cb8:	10f49a63          	bne	s1,a5,80206dcc <consoleintr+0x144>
+    80206cb6:	47d5                	li	a5,21
+    80206cb8:	0af48663          	beq	s1,a5,80206d64 <consoleintr+0xcc>
+    80206cbc:	0297ca63          	blt	a5,s1,80206cf0 <consoleintr+0x58>
+    80206cc0:	47a1                	li	a5,8
+    80206cc2:	0ef48763          	beq	s1,a5,80206db0 <consoleintr+0x118>
+    80206cc6:	47c1                	li	a5,16
+    80206cc8:	10f49a63          	bne	s1,a5,80206ddc <consoleintr+0x144>
   case C('P'):  // Print process list.
     procdump();
-    80206cbc:	ffffc097          	auipc	ra,0xffffc
-    80206cc0:	8c0080e7          	jalr	-1856(ra) # 8020257c <procdump>
+    80206ccc:	ffffc097          	auipc	ra,0xffffc
+    80206cd0:	8b0080e7          	jalr	-1872(ra) # 8020257c <procdump>
       }
     }
     break;
   }
   
   release(&cons.lock);
-    80206cc4:	0001c517          	auipc	a0,0x1c
-    80206cc8:	f5c50513          	addi	a0,a0,-164 # 80222c20 <cons>
-    80206ccc:	ffffa097          	auipc	ra,0xffffa
-    80206cd0:	a4e080e7          	jalr	-1458(ra) # 8020071a <release>
-}
-    80206cd4:	60e2                	ld	ra,24(sp)
-    80206cd6:	6442                	ld	s0,16(sp)
-    80206cd8:	64a2                	ld	s1,8(sp)
-    80206cda:	6902                	ld	s2,0(sp)
-    80206cdc:	6105                	addi	sp,sp,32
-    80206cde:	8082                	ret
+    80206cd4:	0001c517          	auipc	a0,0x1c
+    80206cd8:	f4c50513          	addi	a0,a0,-180 # 80222c20 <cons>
+    80206cdc:	ffffa097          	auipc	ra,0xffffa
+    80206ce0:	a3e080e7          	jalr	-1474(ra) # 8020071a <release>
+}
+    80206ce4:	60e2                	ld	ra,24(sp)
+    80206ce6:	6442                	ld	s0,16(sp)
+    80206ce8:	64a2                	ld	s1,8(sp)
+    80206cea:	6902                	ld	s2,0(sp)
+    80206cec:	6105                	addi	sp,sp,32
+    80206cee:	8082                	ret
   switch(c){
-    80206ce0:	07f00793          	li	a5,127
-    80206ce4:	0af48e63          	beq	s1,a5,80206da0 <consoleintr+0x118>
+    80206cf0:	07f00793          	li	a5,127
+    80206cf4:	0af48e63          	beq	s1,a5,80206db0 <consoleintr+0x118>
     if(c != 0 && cons.e-cons.r < INPUT_BUF){
-    80206ce8:	0001c717          	auipc	a4,0x1c
-    80206cec:	f3870713          	addi	a4,a4,-200 # 80222c20 <cons>
-    80206cf0:	0a072783          	lw	a5,160(a4)
-    80206cf4:	09872703          	lw	a4,152(a4)
-    80206cf8:	9f99                	subw	a5,a5,a4
-    80206cfa:	07f00713          	li	a4,127
-    80206cfe:	fcf763e3          	bltu	a4,a5,80206cc4 <consoleintr+0x3c>
+    80206cf8:	0001c717          	auipc	a4,0x1c
+    80206cfc:	f2870713          	addi	a4,a4,-216 # 80222c20 <cons>
+    80206d00:	0a072783          	lw	a5,160(a4)
+    80206d04:	09872703          	lw	a4,152(a4)
+    80206d08:	9f99                	subw	a5,a5,a4
+    80206d0a:	07f00713          	li	a4,127
+    80206d0e:	fcf763e3          	bltu	a4,a5,80206cd4 <consoleintr+0x3c>
       c = (c == '\r') ? '\n' : c;
-    80206d02:	47b5                	li	a5,13
-    80206d04:	0cf48763          	beq	s1,a5,80206dd2 <consoleintr+0x14a>
+    80206d12:	47b5                	li	a5,13
+    80206d14:	0cf48763          	beq	s1,a5,80206de2 <consoleintr+0x14a>
       consputc(c);
-    80206d08:	8526                	mv	a0,s1
-    80206d0a:	00000097          	auipc	ra,0x0
-    80206d0e:	f40080e7          	jalr	-192(ra) # 80206c4a <consputc>
+    80206d18:	8526                	mv	a0,s1
+    80206d1a:	00000097          	auipc	ra,0x0
+    80206d1e:	f40080e7          	jalr	-192(ra) # 80206c5a <consputc>
       cons.buf[cons.e++ % INPUT_BUF] = c;
-    80206d12:	0001c797          	auipc	a5,0x1c
-    80206d16:	f0e78793          	addi	a5,a5,-242 # 80222c20 <cons>
-    80206d1a:	0a07a703          	lw	a4,160(a5)
-    80206d1e:	0017069b          	addiw	a3,a4,1
-    80206d22:	0006861b          	sext.w	a2,a3
-    80206d26:	0ad7a023          	sw	a3,160(a5)
-    80206d2a:	07f77713          	andi	a4,a4,127
-    80206d2e:	97ba                	add	a5,a5,a4
-    80206d30:	00978c23          	sb	s1,24(a5)
+    80206d22:	0001c797          	auipc	a5,0x1c
+    80206d26:	efe78793          	addi	a5,a5,-258 # 80222c20 <cons>
+    80206d2a:	0a07a703          	lw	a4,160(a5)
+    80206d2e:	0017069b          	addiw	a3,a4,1
+    80206d32:	0006861b          	sext.w	a2,a3
+    80206d36:	0ad7a023          	sw	a3,160(a5)
+    80206d3a:	07f77713          	andi	a4,a4,127
+    80206d3e:	97ba                	add	a5,a5,a4
+    80206d40:	00978c23          	sb	s1,24(a5)
       if(c == '\n' || c == C('D') || cons.e == cons.r+INPUT_BUF){
-    80206d34:	47a9                	li	a5,10
-    80206d36:	0cf48563          	beq	s1,a5,80206e00 <consoleintr+0x178>
-    80206d3a:	4791                	li	a5,4
-    80206d3c:	0cf48263          	beq	s1,a5,80206e00 <consoleintr+0x178>
-    80206d40:	0001c797          	auipc	a5,0x1c
-    80206d44:	f787a783          	lw	a5,-136(a5) # 80222cb8 <cons+0x98>
-    80206d48:	0807879b          	addiw	a5,a5,128
-    80206d4c:	f6f61ce3          	bne	a2,a5,80206cc4 <consoleintr+0x3c>
+    80206d44:	47a9                	li	a5,10
+    80206d46:	0cf48563          	beq	s1,a5,80206e10 <consoleintr+0x178>
+    80206d4a:	4791                	li	a5,4
+    80206d4c:	0cf48263          	beq	s1,a5,80206e10 <consoleintr+0x178>
+    80206d50:	0001c797          	auipc	a5,0x1c
+    80206d54:	f687a783          	lw	a5,-152(a5) # 80222cb8 <cons+0x98>
+    80206d58:	0807879b          	addiw	a5,a5,128
+    80206d5c:	f6f61ce3          	bne	a2,a5,80206cd4 <consoleintr+0x3c>
       cons.buf[cons.e++ % INPUT_BUF] = c;
-    80206d50:	863e                	mv	a2,a5
-    80206d52:	a07d                	j	80206e00 <consoleintr+0x178>
+    80206d60:	863e                	mv	a2,a5
+    80206d62:	a07d                	j	80206e10 <consoleintr+0x178>
     while(cons.e != cons.w &&
-    80206d54:	0001c717          	auipc	a4,0x1c
-    80206d58:	ecc70713          	addi	a4,a4,-308 # 80222c20 <cons>
-    80206d5c:	0a072783          	lw	a5,160(a4)
-    80206d60:	09c72703          	lw	a4,156(a4)
+    80206d64:	0001c717          	auipc	a4,0x1c
+    80206d68:	ebc70713          	addi	a4,a4,-324 # 80222c20 <cons>
+    80206d6c:	0a072783          	lw	a5,160(a4)
+    80206d70:	09c72703          	lw	a4,156(a4)
           cons.buf[(cons.e-1) % INPUT_BUF] != '\n'){
-    80206d64:	0001c497          	auipc	s1,0x1c
-    80206d68:	ebc48493          	addi	s1,s1,-324 # 80222c20 <cons>
+    80206d74:	0001c497          	auipc	s1,0x1c
+    80206d78:	eac48493          	addi	s1,s1,-340 # 80222c20 <cons>
     while(cons.e != cons.w &&
-    80206d6c:	4929                	li	s2,10
-    80206d6e:	f4f70be3          	beq	a4,a5,80206cc4 <consoleintr+0x3c>
+    80206d7c:	4929                	li	s2,10
+    80206d7e:	f4f70be3          	beq	a4,a5,80206cd4 <consoleintr+0x3c>
           cons.buf[(cons.e-1) % INPUT_BUF] != '\n'){
-    80206d72:	37fd                	addiw	a5,a5,-1
-    80206d74:	07f7f713          	andi	a4,a5,127
-    80206d78:	9726                	add	a4,a4,s1
+    80206d82:	37fd                	addiw	a5,a5,-1
+    80206d84:	07f7f713          	andi	a4,a5,127
+    80206d88:	9726                	add	a4,a4,s1
     while(cons.e != cons.w &&
-    80206d7a:	01874703          	lbu	a4,24(a4)
-    80206d7e:	f52703e3          	beq	a4,s2,80206cc4 <consoleintr+0x3c>
+    80206d8a:	01874703          	lbu	a4,24(a4)
+    80206d8e:	f52703e3          	beq	a4,s2,80206cd4 <consoleintr+0x3c>
       cons.e--;
-    80206d82:	0af4a023          	sw	a5,160(s1)
+    80206d92:	0af4a023          	sw	a5,160(s1)
       consputc(BACKSPACE);
-    80206d86:	10000513          	li	a0,256
-    80206d8a:	00000097          	auipc	ra,0x0
-    80206d8e:	ec0080e7          	jalr	-320(ra) # 80206c4a <consputc>
+    80206d96:	10000513          	li	a0,256
+    80206d9a:	00000097          	auipc	ra,0x0
+    80206d9e:	ec0080e7          	jalr	-320(ra) # 80206c5a <consputc>
     while(cons.e != cons.w &&
-    80206d92:	0a04a783          	lw	a5,160(s1)
-    80206d96:	09c4a703          	lw	a4,156(s1)
-    80206d9a:	fcf71ce3          	bne	a4,a5,80206d72 <consoleintr+0xea>
-    80206d9e:	b71d                	j	80206cc4 <consoleintr+0x3c>
+    80206da2:	0a04a783          	lw	a5,160(s1)
+    80206da6:	09c4a703          	lw	a4,156(s1)
+    80206daa:	fcf71ce3          	bne	a4,a5,80206d82 <consoleintr+0xea>
+    80206dae:	b71d                	j	80206cd4 <consoleintr+0x3c>
     if(cons.e != cons.w){
-    80206da0:	0001c717          	auipc	a4,0x1c
-    80206da4:	e8070713          	addi	a4,a4,-384 # 80222c20 <cons>
-    80206da8:	0a072783          	lw	a5,160(a4)
-    80206dac:	09c72703          	lw	a4,156(a4)
-    80206db0:	f0f70ae3          	beq	a4,a5,80206cc4 <consoleintr+0x3c>
+    80206db0:	0001c717          	auipc	a4,0x1c
+    80206db4:	e7070713          	addi	a4,a4,-400 # 80222c20 <cons>
+    80206db8:	0a072783          	lw	a5,160(a4)
+    80206dbc:	09c72703          	lw	a4,156(a4)
+    80206dc0:	f0f70ae3          	beq	a4,a5,80206cd4 <consoleintr+0x3c>
       cons.e--;
-    80206db4:	37fd                	addiw	a5,a5,-1
-    80206db6:	0001c717          	auipc	a4,0x1c
-    80206dba:	f0f72523          	sw	a5,-246(a4) # 80222cc0 <cons+0xa0>
+    80206dc4:	37fd                	addiw	a5,a5,-1
+    80206dc6:	0001c717          	auipc	a4,0x1c
+    80206dca:	eef72d23          	sw	a5,-262(a4) # 80222cc0 <cons+0xa0>
       consputc(BACKSPACE);
-    80206dbe:	10000513          	li	a0,256
-    80206dc2:	00000097          	auipc	ra,0x0
-    80206dc6:	e88080e7          	jalr	-376(ra) # 80206c4a <consputc>
-    80206dca:	bded                	j	80206cc4 <consoleintr+0x3c>
+    80206dce:	10000513          	li	a0,256
+    80206dd2:	00000097          	auipc	ra,0x0
+    80206dd6:	e88080e7          	jalr	-376(ra) # 80206c5a <consputc>
+    80206dda:	bded                	j	80206cd4 <consoleintr+0x3c>
     if(c != 0 && cons.e-cons.r < INPUT_BUF){
-    80206dcc:	ee048ce3          	beqz	s1,80206cc4 <consoleintr+0x3c>
-    80206dd0:	bf21                	j	80206ce8 <consoleintr+0x60>
+    80206ddc:	ee048ce3          	beqz	s1,80206cd4 <consoleintr+0x3c>
+    80206de0:	bf21                	j	80206cf8 <consoleintr+0x60>
       consputc(c);
-    80206dd2:	4529                	li	a0,10
-    80206dd4:	00000097          	auipc	ra,0x0
-    80206dd8:	e76080e7          	jalr	-394(ra) # 80206c4a <consputc>
+    80206de2:	4529                	li	a0,10
+    80206de4:	00000097          	auipc	ra,0x0
+    80206de8:	e76080e7          	jalr	-394(ra) # 80206c5a <consputc>
       cons.buf[cons.e++ % INPUT_BUF] = c;
-    80206ddc:	0001c797          	auipc	a5,0x1c
-    80206de0:	e4478793          	addi	a5,a5,-444 # 80222c20 <cons>
-    80206de4:	0a07a703          	lw	a4,160(a5)
-    80206de8:	0017069b          	addiw	a3,a4,1
-    80206dec:	0006861b          	sext.w	a2,a3
-    80206df0:	0ad7a023          	sw	a3,160(a5)
-    80206df4:	07f77713          	andi	a4,a4,127
-    80206df8:	97ba                	add	a5,a5,a4
-    80206dfa:	4729                	li	a4,10
-    80206dfc:	00e78c23          	sb	a4,24(a5)
+    80206dec:	0001c797          	auipc	a5,0x1c
+    80206df0:	e3478793          	addi	a5,a5,-460 # 80222c20 <cons>
+    80206df4:	0a07a703          	lw	a4,160(a5)
+    80206df8:	0017069b          	addiw	a3,a4,1
+    80206dfc:	0006861b          	sext.w	a2,a3
+    80206e00:	0ad7a023          	sw	a3,160(a5)
+    80206e04:	07f77713          	andi	a4,a4,127
+    80206e08:	97ba                	add	a5,a5,a4
+    80206e0a:	4729                	li	a4,10
+    80206e0c:	00e78c23          	sb	a4,24(a5)
         cons.w = cons.e;
-    80206e00:	0001c797          	auipc	a5,0x1c
-    80206e04:	eac7ae23          	sw	a2,-324(a5) # 80222cbc <cons+0x9c>
+    80206e10:	0001c797          	auipc	a5,0x1c
+    80206e14:	eac7a623          	sw	a2,-340(a5) # 80222cbc <cons+0x9c>
         wakeup(&cons.r);
-    80206e08:	0001c517          	auipc	a0,0x1c
-    80206e0c:	eb050513          	addi	a0,a0,-336 # 80222cb8 <cons+0x98>
-    80206e10:	ffffb097          	auipc	ra,0xffffb
-    80206e14:	628080e7          	jalr	1576(ra) # 80202438 <wakeup>
-    80206e18:	b575                	j	80206cc4 <consoleintr+0x3c>
+    80206e18:	0001c517          	auipc	a0,0x1c
+    80206e1c:	ea050513          	addi	a0,a0,-352 # 80222cb8 <cons+0x98>
+    80206e20:	ffffb097          	auipc	ra,0xffffb
+    80206e24:	618080e7          	jalr	1560(ra) # 80202438 <wakeup>
+    80206e28:	b575                	j	80206cd4 <consoleintr+0x3c>
 
-0000000080206e1a <consoleinit>:
+0000000080206e2a <consoleinit>:
 
 void
 consoleinit(void)
 {
-    80206e1a:	1101                	addi	sp,sp,-32
-    80206e1c:	ec06                	sd	ra,24(sp)
-    80206e1e:	e822                	sd	s0,16(sp)
-    80206e20:	e426                	sd	s1,8(sp)
-    80206e22:	1000                	addi	s0,sp,32
+    80206e2a:	1101                	addi	sp,sp,-32
+    80206e2c:	ec06                	sd	ra,24(sp)
+    80206e2e:	e822                	sd	s0,16(sp)
+    80206e30:	e426                	sd	s1,8(sp)
+    80206e32:	1000                	addi	s0,sp,32
   initlock(&cons.lock, "cons");
-    80206e24:	0001c497          	auipc	s1,0x1c
-    80206e28:	dfc48493          	addi	s1,s1,-516 # 80222c20 <cons>
-    80206e2c:	00003597          	auipc	a1,0x3
-    80206e30:	ed458593          	addi	a1,a1,-300 # 80209d00 <digits+0x980>
-    80206e34:	8526                	mv	a0,s1
-    80206e36:	ffffa097          	auipc	ra,0xffffa
-    80206e3a:	84c080e7          	jalr	-1972(ra) # 80200682 <initlock>
+    80206e34:	0001c497          	auipc	s1,0x1c
+    80206e38:	dec48493          	addi	s1,s1,-532 # 80222c20 <cons>
+    80206e3c:	00003597          	auipc	a1,0x3
+    80206e40:	ecc58593          	addi	a1,a1,-308 # 80209d08 <digits+0x988>
+    80206e44:	8526                	mv	a0,s1
+    80206e46:	ffffa097          	auipc	ra,0xffffa
+    80206e4a:	83c080e7          	jalr	-1988(ra) # 80200682 <initlock>
 
   cons.e = cons.w = cons.r = 0;
-    80206e3e:	0804ac23          	sw	zero,152(s1)
-    80206e42:	0804ae23          	sw	zero,156(s1)
-    80206e46:	0a04a023          	sw	zero,160(s1)
+    80206e4e:	0804ac23          	sw	zero,152(s1)
+    80206e52:	0804ae23          	sw	zero,156(s1)
+    80206e56:	0a04a023          	sw	zero,160(s1)
   
   // connect read and write system calls
   // to consoleread and consolewrite.
   devsw[CONSOLE].read = consoleread;
-    80206e4a:	00005797          	auipc	a5,0x5
-    80206e4e:	ace7b783          	ld	a5,-1330(a5) # 8020b918 <_GLOBAL_OFFSET_TABLE_+0x58>
-    80206e52:	00000717          	auipc	a4,0x0
-    80206e56:	ce070713          	addi	a4,a4,-800 # 80206b32 <consoleread>
-    80206e5a:	eb98                	sd	a4,16(a5)
+    80206e5a:	00005797          	auipc	a5,0x5
+    80206e5e:	ae67b783          	ld	a5,-1306(a5) # 8020b940 <_GLOBAL_OFFSET_TABLE_+0x58>
+    80206e62:	00000717          	auipc	a4,0x0
+    80206e66:	ce070713          	addi	a4,a4,-800 # 80206b42 <consoleread>
+    80206e6a:	eb98                	sd	a4,16(a5)
   devsw[CONSOLE].write = consolewrite;
-    80206e5c:	00000717          	auipc	a4,0x0
-    80206e60:	c4870713          	addi	a4,a4,-952 # 80206aa4 <consolewrite>
-    80206e64:	ef98                	sd	a4,24(a5)
+    80206e6c:	00000717          	auipc	a4,0x0
+    80206e70:	c4870713          	addi	a4,a4,-952 # 80206ab4 <consolewrite>
+    80206e74:	ef98                	sd	a4,24(a5)
 }
-    80206e66:	60e2                	ld	ra,24(sp)
-    80206e68:	6442                	ld	s0,16(sp)
-    80206e6a:	64a2                	ld	s1,8(sp)
-    80206e6c:	6105                	addi	sp,sp,32
-    80206e6e:	8082                	ret
+    80206e76:	60e2                	ld	ra,24(sp)
+    80206e78:	6442                	ld	s0,16(sp)
+    80206e7a:	64a2                	ld	s1,8(sp)
+    80206e7c:	6105                	addi	sp,sp,32
+    80206e7e:	8082                	ret
 
-0000000080206e70 <sys_shutdown>:
+0000000080206e80 <sys_shutdown>:
 #include "include/types.h"
 #include "include/sbi.h"
 
 uint64 sys_shutdown(void) {
-    80206e70:	1141                	addi	sp,sp,-16
-    80206e72:	e422                	sd	s0,8(sp)
-    80206e74:	0800                	addi	s0,sp,16
+    80206e80:	1141                	addi	sp,sp,-16
+    80206e82:	e422                	sd	s0,8(sp)
+    80206e84:	0800                	addi	s0,sp,16
 	SBI_CALL_0(SBI_SHUTDOWN);
-    80206e76:	4501                	li	a0,0
-    80206e78:	4581                	li	a1,0
-    80206e7a:	4601                	li	a2,0
-    80206e7c:	4681                	li	a3,0
-    80206e7e:	48a1                	li	a7,8
-    80206e80:	00000073          	ecall
+    80206e86:	4501                	li	a0,0
+    80206e88:	4581                	li	a1,0
+    80206e8a:	4601                	li	a2,0
+    80206e8c:	4681                	li	a3,0
+    80206e8e:	48a1                	li	a7,8
+    80206e90:	00000073          	ecall
     sbi_shutdown();
     return 0;
-    80206e84:	4501                	li	a0,0
-    80206e86:	6422                	ld	s0,8(sp)
-    80206e88:	0141                	addi	sp,sp,16
-    80206e8a:	8082                	ret
+    80206e94:	4501                	li	a0,0
+    80206e96:	6422                	ld	s0,8(sp)
+    80206e98:	0141                	addi	sp,sp,16
+    80206e9a:	8082                	ret
+
+0000000080206e9c <sys_times>:
+};
+
+// 系统调用 sys_times 实现
+uint64
+sys_times(void)
+{
+    80206e9c:	715d                	addi	sp,sp,-80
+    80206e9e:	e486                	sd	ra,72(sp)
+    80206ea0:	e0a2                	sd	s0,64(sp)
+    80206ea2:	fc26                	sd	s1,56(sp)
+    80206ea4:	0880                	addi	s0,sp,80
+  uint64 tms_addr;  // 用户空间 tms 结构体的地址
+  struct tms kernel_tms;
+
+  // 1. 从系统调用参数中获取用户空间 tms 结构体地址
+  if (argaddr(0, &tms_addr) < 0) {
+    80206ea6:	fd840593          	addi	a1,s0,-40
+    80206eaa:	4501                	li	a0,0
+    80206eac:	ffffc097          	auipc	ra,0xffffc
+    80206eb0:	024080e7          	jalr	36(ra) # 80202ed0 <argaddr>
+    return -1;  // 参数错误
+    80206eb4:	57fd                	li	a5,-1
+  if (argaddr(0, &tms_addr) < 0) {
+    80206eb6:	04054163          	bltz	a0,80206ef8 <sys_times+0x5c>
+  }
+
+  // 2. 获取当前进程的时间信息
+  struct proc *p = myproc();
+    80206eba:	ffffb097          	auipc	ra,0xffffb
+    80206ebe:	b82080e7          	jalr	-1150(ra) # 80201a3c <myproc>
+    80206ec2:	84aa                	mv	s1,a0
+  if (p == 0) {
+    80206ec4:	cd29                	beqz	a0,80206f1e <sys_times+0x82>
+    return -1;  // 当前进程无效
+  }
+
+  // 填充内核中的 tms 结构体
+  kernel_tms.utime = 0;    // 用户时间
+    80206ec6:	fa043c23          	sd	zero,-72(s0)
+  kernel_tms.stime = sys_uptime();    // 系统时间
+    80206eca:	ffffc097          	auipc	ra,0xffffc
+    80206ece:	402080e7          	jalr	1026(ra) # 802032cc <sys_uptime>
+    80206ed2:	fca43023          	sd	a0,-64(s0)
+  kernel_tms.cutime = 0;  // 子进程用户时间
+    80206ed6:	fc043423          	sd	zero,-56(s0)
+  kernel_tms.cstime = sys_uptime();  // 子进程系统时间
+    80206eda:	ffffc097          	auipc	ra,0xffffc
+    80206ede:	3f2080e7          	jalr	1010(ra) # 802032cc <sys_uptime>
+    80206ee2:	fca43823          	sd	a0,-48(s0)
+
+  // 3. 如果用户提供了 tms 结构体地址,将数据复制到用户空间
+  if (tms_addr != 0) {
+    80206ee6:	fd843583          	ld	a1,-40(s0)
+    80206eea:	ed89                	bnez	a1,80206f04 <sys_times+0x68>
+      return -1;  // 复制失败
+    }
+  }
 
-0000000080206e8c <free_desc>:
+  // 4. 返回系统启动以来的总滴答数(假设 ticks 是全局变量)
+  return ticks;
+    80206eec:	00005797          	auipc	a5,0x5
+    80206ef0:	a3c7b783          	ld	a5,-1476(a5) # 8020b928 <_GLOBAL_OFFSET_TABLE_+0x40>
+    80206ef4:	0007e783          	lwu	a5,0(a5)
+    80206ef8:	853e                	mv	a0,a5
+    80206efa:	60a6                	ld	ra,72(sp)
+    80206efc:	6406                	ld	s0,64(sp)
+    80206efe:	74e2                	ld	s1,56(sp)
+    80206f00:	6161                	addi	sp,sp,80
+    80206f02:	8082                	ret
+    if (copyout(p->pagetable, tms_addr, (char *)&kernel_tms, sizeof(kernel_tms)) < 0) {
+    80206f04:	02000693          	li	a3,32
+    80206f08:	fb840613          	addi	a2,s0,-72
+    80206f0c:	68a8                	ld	a0,80(s1)
+    80206f0e:	ffffa097          	auipc	ra,0xffffa
+    80206f12:	3d8080e7          	jalr	984(ra) # 802012e6 <copyout>
+    80206f16:	fc055be3          	bgez	a0,80206eec <sys_times+0x50>
+      return -1;  // 复制失败
+    80206f1a:	57fd                	li	a5,-1
+    80206f1c:	bff1                	j	80206ef8 <sys_times+0x5c>
+    return -1;  // 当前进程无效
+    80206f1e:	57fd                	li	a5,-1
+    80206f20:	bfe1                	j	80206ef8 <sys_times+0x5c>
+
+0000000080206f22 <free_desc>:
 }
 
 // mark a descriptor as free.
 static void
 free_desc(int i)
 {
-    80206e8c:	1141                	addi	sp,sp,-16
-    80206e8e:	e406                	sd	ra,8(sp)
-    80206e90:	e022                	sd	s0,0(sp)
-    80206e92:	0800                	addi	s0,sp,16
+    80206f22:	1141                	addi	sp,sp,-16
+    80206f24:	e406                	sd	ra,8(sp)
+    80206f26:	e022                	sd	s0,0(sp)
+    80206f28:	0800                	addi	s0,sp,16
   if(i >= NUM)
-    80206e94:	479d                	li	a5,7
-    80206e96:	04a7cb63          	blt	a5,a0,80206eec <free_desc+0x60>
+    80206f2a:	479d                	li	a5,7
+    80206f2c:	04a7cb63          	blt	a5,a0,80206f82 <free_desc+0x60>
     panic("virtio_disk_intr 1");
   if(disk.free[i])
-    80206e9a:	0001c717          	auipc	a4,0x1c
-    80206e9e:	16670713          	addi	a4,a4,358 # 80223000 <disk>
-    80206ea2:	972a                	add	a4,a4,a0
-    80206ea4:	6789                	lui	a5,0x2
-    80206ea6:	97ba                	add	a5,a5,a4
-    80206ea8:	0187c783          	lbu	a5,24(a5) # 2018 <_entry-0x801fdfe8>
-    80206eac:	eba1                	bnez	a5,80206efc <free_desc+0x70>
+    80206f30:	0001c717          	auipc	a4,0x1c
+    80206f34:	0d070713          	addi	a4,a4,208 # 80223000 <disk>
+    80206f38:	972a                	add	a4,a4,a0
+    80206f3a:	6789                	lui	a5,0x2
+    80206f3c:	97ba                	add	a5,a5,a4
+    80206f3e:	0187c783          	lbu	a5,24(a5) # 2018 <_entry-0x801fdfe8>
+    80206f42:	eba1                	bnez	a5,80206f92 <free_desc+0x70>
     panic("virtio_disk_intr 2");
   disk.desc[i].addr = 0;
-    80206eae:	00451713          	slli	a4,a0,0x4
-    80206eb2:	0001e797          	auipc	a5,0x1e
-    80206eb6:	14e7b783          	ld	a5,334(a5) # 80225000 <disk+0x2000>
-    80206eba:	97ba                	add	a5,a5,a4
-    80206ebc:	0007b023          	sd	zero,0(a5)
+    80206f44:	00451713          	slli	a4,a0,0x4
+    80206f48:	0001e797          	auipc	a5,0x1e
+    80206f4c:	0b87b783          	ld	a5,184(a5) # 80225000 <disk+0x2000>
+    80206f50:	97ba                	add	a5,a5,a4
+    80206f52:	0007b023          	sd	zero,0(a5)
   disk.free[i] = 1;
-    80206ec0:	0001c717          	auipc	a4,0x1c
-    80206ec4:	14070713          	addi	a4,a4,320 # 80223000 <disk>
-    80206ec8:	972a                	add	a4,a4,a0
-    80206eca:	6789                	lui	a5,0x2
-    80206ecc:	97ba                	add	a5,a5,a4
-    80206ece:	4705                	li	a4,1
-    80206ed0:	00e78c23          	sb	a4,24(a5) # 2018 <_entry-0x801fdfe8>
+    80206f56:	0001c717          	auipc	a4,0x1c
+    80206f5a:	0aa70713          	addi	a4,a4,170 # 80223000 <disk>
+    80206f5e:	972a                	add	a4,a4,a0
+    80206f60:	6789                	lui	a5,0x2
+    80206f62:	97ba                	add	a5,a5,a4
+    80206f64:	4705                	li	a4,1
+    80206f66:	00e78c23          	sb	a4,24(a5) # 2018 <_entry-0x801fdfe8>
   wakeup(&disk.free[0]);
-    80206ed4:	0001e517          	auipc	a0,0x1e
-    80206ed8:	14450513          	addi	a0,a0,324 # 80225018 <disk+0x2018>
-    80206edc:	ffffb097          	auipc	ra,0xffffb
-    80206ee0:	55c080e7          	jalr	1372(ra) # 80202438 <wakeup>
-}
-    80206ee4:	60a2                	ld	ra,8(sp)
-    80206ee6:	6402                	ld	s0,0(sp)
-    80206ee8:	0141                	addi	sp,sp,16
-    80206eea:	8082                	ret
+    80206f6a:	0001e517          	auipc	a0,0x1e
+    80206f6e:	0ae50513          	addi	a0,a0,174 # 80225018 <disk+0x2018>
+    80206f72:	ffffb097          	auipc	ra,0xffffb
+    80206f76:	4c6080e7          	jalr	1222(ra) # 80202438 <wakeup>
+}
+    80206f7a:	60a2                	ld	ra,8(sp)
+    80206f7c:	6402                	ld	s0,0(sp)
+    80206f7e:	0141                	addi	sp,sp,16
+    80206f80:	8082                	ret
     panic("virtio_disk_intr 1");
-    80206eec:	00003517          	auipc	a0,0x3
-    80206ef0:	e1c50513          	addi	a0,a0,-484 # 80209d08 <digits+0x988>
-    80206ef4:	ffff9097          	auipc	ra,0xffff9
-    80206ef8:	250080e7          	jalr	592(ra) # 80200144 <panic>
+    80206f82:	00003517          	auipc	a0,0x3
+    80206f86:	d8e50513          	addi	a0,a0,-626 # 80209d10 <digits+0x990>
+    80206f8a:	ffff9097          	auipc	ra,0xffff9
+    80206f8e:	1ba080e7          	jalr	442(ra) # 80200144 <panic>
     panic("virtio_disk_intr 2");
-    80206efc:	00003517          	auipc	a0,0x3
-    80206f00:	e2450513          	addi	a0,a0,-476 # 80209d20 <digits+0x9a0>
-    80206f04:	ffff9097          	auipc	ra,0xffff9
-    80206f08:	240080e7          	jalr	576(ra) # 80200144 <panic>
+    80206f92:	00003517          	auipc	a0,0x3
+    80206f96:	d9650513          	addi	a0,a0,-618 # 80209d28 <digits+0x9a8>
+    80206f9a:	ffff9097          	auipc	ra,0xffff9
+    80206f9e:	1aa080e7          	jalr	426(ra) # 80200144 <panic>
 
-0000000080206f0c <virtio_disk_init>:
+0000000080206fa2 <virtio_disk_init>:
 {
-    80206f0c:	1141                	addi	sp,sp,-16
-    80206f0e:	e406                	sd	ra,8(sp)
-    80206f10:	e022                	sd	s0,0(sp)
-    80206f12:	0800                	addi	s0,sp,16
+    80206fa2:	1141                	addi	sp,sp,-16
+    80206fa4:	e406                	sd	ra,8(sp)
+    80206fa6:	e022                	sd	s0,0(sp)
+    80206fa8:	0800                	addi	s0,sp,16
   initlock(&disk.vdisk_lock, "virtio_disk");
-    80206f14:	00003597          	auipc	a1,0x3
-    80206f18:	e2458593          	addi	a1,a1,-476 # 80209d38 <digits+0x9b8>
-    80206f1c:	0001e517          	auipc	a0,0x1e
-    80206f20:	18c50513          	addi	a0,a0,396 # 802250a8 <disk+0x20a8>
-    80206f24:	ffff9097          	auipc	ra,0xffff9
-    80206f28:	75e080e7          	jalr	1886(ra) # 80200682 <initlock>
+    80206faa:	00003597          	auipc	a1,0x3
+    80206fae:	d9658593          	addi	a1,a1,-618 # 80209d40 <digits+0x9c0>
+    80206fb2:	0001e517          	auipc	a0,0x1e
+    80206fb6:	0f650513          	addi	a0,a0,246 # 802250a8 <disk+0x20a8>
+    80206fba:	ffff9097          	auipc	ra,0xffff9
+    80206fbe:	6c8080e7          	jalr	1736(ra) # 80200682 <initlock>
   if(*R(VIRTIO_MMIO_MAGIC_VALUE) != 0x74726976 ||
-    80206f2c:	03f107b7          	lui	a5,0x3f10
-    80206f30:	0785                	addi	a5,a5,1 # 3f10001 <_entry-0x7c2effff>
-    80206f32:	07b2                	slli	a5,a5,0xc
-    80206f34:	4398                	lw	a4,0(a5)
-    80206f36:	2701                	sext.w	a4,a4
-    80206f38:	747277b7          	lui	a5,0x74727
-    80206f3c:	97678793          	addi	a5,a5,-1674 # 74726976 <_entry-0xbad968a>
-    80206f40:	12f71163          	bne	a4,a5,80207062 <virtio_disk_init+0x156>
+    80206fc2:	03f107b7          	lui	a5,0x3f10
+    80206fc6:	0785                	addi	a5,a5,1 # 3f10001 <_entry-0x7c2effff>
+    80206fc8:	07b2                	slli	a5,a5,0xc
+    80206fca:	4398                	lw	a4,0(a5)
+    80206fcc:	2701                	sext.w	a4,a4
+    80206fce:	747277b7          	lui	a5,0x74727
+    80206fd2:	97678793          	addi	a5,a5,-1674 # 74726976 <_entry-0xbad968a>
+    80206fd6:	12f71163          	bne	a4,a5,802070f8 <virtio_disk_init+0x156>
      *R(VIRTIO_MMIO_VERSION) != 1 ||
-    80206f44:	00003797          	auipc	a5,0x3
-    80206f48:	e7c7b783          	ld	a5,-388(a5) # 80209dc0 <digits+0xa40>
-    80206f4c:	439c                	lw	a5,0(a5)
-    80206f4e:	2781                	sext.w	a5,a5
+    80206fda:	00003797          	auipc	a5,0x3
+    80206fde:	dee7b783          	ld	a5,-530(a5) # 80209dc8 <digits+0xa48>
+    80206fe2:	439c                	lw	a5,0(a5)
+    80206fe4:	2781                	sext.w	a5,a5
   if(*R(VIRTIO_MMIO_MAGIC_VALUE) != 0x74726976 ||
-    80206f50:	4705                	li	a4,1
-    80206f52:	10e79863          	bne	a5,a4,80207062 <virtio_disk_init+0x156>
+    80206fe6:	4705                	li	a4,1
+    80206fe8:	10e79863          	bne	a5,a4,802070f8 <virtio_disk_init+0x156>
      *R(VIRTIO_MMIO_DEVICE_ID) != 2 ||
-    80206f56:	00003797          	auipc	a5,0x3
-    80206f5a:	e727b783          	ld	a5,-398(a5) # 80209dc8 <digits+0xa48>
-    80206f5e:	439c                	lw	a5,0(a5)
-    80206f60:	2781                	sext.w	a5,a5
+    80206fec:	00003797          	auipc	a5,0x3
+    80206ff0:	de47b783          	ld	a5,-540(a5) # 80209dd0 <digits+0xa50>
+    80206ff4:	439c                	lw	a5,0(a5)
+    80206ff6:	2781                	sext.w	a5,a5
      *R(VIRTIO_MMIO_VERSION) != 1 ||
-    80206f62:	4709                	li	a4,2
-    80206f64:	0ee79f63          	bne	a5,a4,80207062 <virtio_disk_init+0x156>
+    80206ff8:	4709                	li	a4,2
+    80206ffa:	0ee79f63          	bne	a5,a4,802070f8 <virtio_disk_init+0x156>
      *R(VIRTIO_MMIO_VENDOR_ID) != 0x554d4551){
-    80206f68:	00003797          	auipc	a5,0x3
-    80206f6c:	e687b783          	ld	a5,-408(a5) # 80209dd0 <digits+0xa50>
-    80206f70:	4398                	lw	a4,0(a5)
-    80206f72:	2701                	sext.w	a4,a4
+    80206ffe:	00003797          	auipc	a5,0x3
+    80207002:	dda7b783          	ld	a5,-550(a5) # 80209dd8 <digits+0xa58>
+    80207006:	4398                	lw	a4,0(a5)
+    80207008:	2701                	sext.w	a4,a4
      *R(VIRTIO_MMIO_DEVICE_ID) != 2 ||
-    80206f74:	554d47b7          	lui	a5,0x554d4
-    80206f78:	55178793          	addi	a5,a5,1361 # 554d4551 <_entry-0x2ad2baaf>
-    80206f7c:	0ef71363          	bne	a4,a5,80207062 <virtio_disk_init+0x156>
+    8020700a:	554d47b7          	lui	a5,0x554d4
+    8020700e:	55178793          	addi	a5,a5,1361 # 554d4551 <_entry-0x2ad2baaf>
+    80207012:	0ef71363          	bne	a4,a5,802070f8 <virtio_disk_init+0x156>
   *R(VIRTIO_MMIO_STATUS) = status;
-    80206f80:	00003797          	auipc	a5,0x3
-    80206f84:	e587b783          	ld	a5,-424(a5) # 80209dd8 <digits+0xa58>
-    80206f88:	4705                	li	a4,1
-    80206f8a:	c398                	sw	a4,0(a5)
+    80207016:	00003797          	auipc	a5,0x3
+    8020701a:	dca7b783          	ld	a5,-566(a5) # 80209de0 <digits+0xa60>
+    8020701e:	4705                	li	a4,1
+    80207020:	c398                	sw	a4,0(a5)
   *R(VIRTIO_MMIO_STATUS) = status;
-    80206f8c:	470d                	li	a4,3
-    80206f8e:	c398                	sw	a4,0(a5)
+    80207022:	470d                	li	a4,3
+    80207024:	c398                	sw	a4,0(a5)
   uint64 features = *R(VIRTIO_MMIO_DEVICE_FEATURES);
-    80206f90:	00003717          	auipc	a4,0x3
-    80206f94:	e5073703          	ld	a4,-432(a4) # 80209de0 <digits+0xa60>
-    80206f98:	4318                	lw	a4,0(a4)
+    80207026:	00003717          	auipc	a4,0x3
+    8020702a:	dc273703          	ld	a4,-574(a4) # 80209de8 <digits+0xa68>
+    8020702e:	4318                	lw	a4,0(a4)
   *R(VIRTIO_MMIO_DRIVER_FEATURES) = features;
-    80206f9a:	c7ffe6b7          	lui	a3,0xc7ffe
-    80206f9e:	75f68693          	addi	a3,a3,1887 # ffffffffc7ffe75f <ebss_clear+0xffffffff47dd875f>
-    80206fa2:	8f75                	and	a4,a4,a3
-    80206fa4:	00003697          	auipc	a3,0x3
-    80206fa8:	e446b683          	ld	a3,-444(a3) # 80209de8 <digits+0xa68>
-    80206fac:	c298                	sw	a4,0(a3)
+    80207030:	c7ffe6b7          	lui	a3,0xc7ffe
+    80207034:	75f68693          	addi	a3,a3,1887 # ffffffffc7ffe75f <ebss_clear+0xffffffff47dd875f>
+    80207038:	8f75                	and	a4,a4,a3
+    8020703a:	00003697          	auipc	a3,0x3
+    8020703e:	db66b683          	ld	a3,-586(a3) # 80209df0 <digits+0xa70>
+    80207042:	c298                	sw	a4,0(a3)
   *R(VIRTIO_MMIO_STATUS) = status;
-    80206fae:	472d                	li	a4,11
-    80206fb0:	c398                	sw	a4,0(a5)
+    80207044:	472d                	li	a4,11
+    80207046:	c398                	sw	a4,0(a5)
   *R(VIRTIO_MMIO_STATUS) = status;
-    80206fb2:	473d                	li	a4,15
-    80206fb4:	c398                	sw	a4,0(a5)
+    80207048:	473d                	li	a4,15
+    8020704a:	c398                	sw	a4,0(a5)
   *R(VIRTIO_MMIO_GUEST_PAGE_SIZE) = PGSIZE;
-    80206fb6:	00003797          	auipc	a5,0x3
-    80206fba:	e3a7b783          	ld	a5,-454(a5) # 80209df0 <digits+0xa70>
-    80206fbe:	6705                	lui	a4,0x1
-    80206fc0:	c398                	sw	a4,0(a5)
+    8020704c:	00003797          	auipc	a5,0x3
+    80207050:	dac7b783          	ld	a5,-596(a5) # 80209df8 <digits+0xa78>
+    80207054:	6705                	lui	a4,0x1
+    80207056:	c398                	sw	a4,0(a5)
   *R(VIRTIO_MMIO_QUEUE_SEL) = 0;
-    80206fc2:	00003797          	auipc	a5,0x3
-    80206fc6:	e367b783          	ld	a5,-458(a5) # 80209df8 <digits+0xa78>
-    80206fca:	0007a023          	sw	zero,0(a5)
+    80207058:	00003797          	auipc	a5,0x3
+    8020705c:	da87b783          	ld	a5,-600(a5) # 80209e00 <digits+0xa80>
+    80207060:	0007a023          	sw	zero,0(a5)
   uint32 max = *R(VIRTIO_MMIO_QUEUE_NUM_MAX);
-    80206fce:	00003797          	auipc	a5,0x3
-    80206fd2:	e327b783          	ld	a5,-462(a5) # 80209e00 <digits+0xa80>
-    80206fd6:	439c                	lw	a5,0(a5)
-    80206fd8:	2781                	sext.w	a5,a5
+    80207064:	00003797          	auipc	a5,0x3
+    80207068:	da47b783          	ld	a5,-604(a5) # 80209e08 <digits+0xa88>
+    8020706c:	439c                	lw	a5,0(a5)
+    8020706e:	2781                	sext.w	a5,a5
   if(max == 0)
-    80206fda:	cfc1                	beqz	a5,80207072 <virtio_disk_init+0x166>
+    80207070:	cfc1                	beqz	a5,80207108 <virtio_disk_init+0x166>
   if(max < NUM)
-    80206fdc:	471d                	li	a4,7
-    80206fde:	0af77263          	bgeu	a4,a5,80207082 <virtio_disk_init+0x176>
+    80207072:	471d                	li	a4,7
+    80207074:	0af77263          	bgeu	a4,a5,80207118 <virtio_disk_init+0x176>
   *R(VIRTIO_MMIO_QUEUE_NUM) = NUM;
-    80206fe2:	00003797          	auipc	a5,0x3
-    80206fe6:	e267b783          	ld	a5,-474(a5) # 80209e08 <digits+0xa88>
-    80206fea:	4721                	li	a4,8
-    80206fec:	c398                	sw	a4,0(a5)
+    80207078:	00003797          	auipc	a5,0x3
+    8020707c:	d987b783          	ld	a5,-616(a5) # 80209e10 <digits+0xa90>
+    80207080:	4721                	li	a4,8
+    80207082:	c398                	sw	a4,0(a5)
   memset(disk.pages, 0, sizeof(disk.pages));
-    80206fee:	6609                	lui	a2,0x2
-    80206ff0:	4581                	li	a1,0
-    80206ff2:	0001c517          	auipc	a0,0x1c
-    80206ff6:	00e50513          	addi	a0,a0,14 # 80223000 <disk>
-    80206ffa:	ffff9097          	auipc	ra,0xffff9
-    80206ffe:	768080e7          	jalr	1896(ra) # 80200762 <memset>
+    80207084:	6609                	lui	a2,0x2
+    80207086:	4581                	li	a1,0
+    80207088:	0001c517          	auipc	a0,0x1c
+    8020708c:	f7850513          	addi	a0,a0,-136 # 80223000 <disk>
+    80207090:	ffff9097          	auipc	ra,0xffff9
+    80207094:	6d2080e7          	jalr	1746(ra) # 80200762 <memset>
   *R(VIRTIO_MMIO_QUEUE_PFN) = ((uint64)disk.pages) >> PGSHIFT;
-    80207002:	0001c717          	auipc	a4,0x1c
-    80207006:	ffe70713          	addi	a4,a4,-2 # 80223000 <disk>
-    8020700a:	00c75793          	srli	a5,a4,0xc
-    8020700e:	2781                	sext.w	a5,a5
-    80207010:	00003697          	auipc	a3,0x3
-    80207014:	e006b683          	ld	a3,-512(a3) # 80209e10 <digits+0xa90>
-    80207018:	c29c                	sw	a5,0(a3)
+    80207098:	0001c717          	auipc	a4,0x1c
+    8020709c:	f6870713          	addi	a4,a4,-152 # 80223000 <disk>
+    802070a0:	00c75793          	srli	a5,a4,0xc
+    802070a4:	2781                	sext.w	a5,a5
+    802070a6:	00003697          	auipc	a3,0x3
+    802070aa:	d726b683          	ld	a3,-654(a3) # 80209e18 <digits+0xa98>
+    802070ae:	c29c                	sw	a5,0(a3)
   disk.desc = (struct VRingDesc *) disk.pages;
-    8020701a:	0001e797          	auipc	a5,0x1e
-    8020701e:	fe678793          	addi	a5,a5,-26 # 80225000 <disk+0x2000>
-    80207022:	e398                	sd	a4,0(a5)
+    802070b0:	0001e797          	auipc	a5,0x1e
+    802070b4:	f5078793          	addi	a5,a5,-176 # 80225000 <disk+0x2000>
+    802070b8:	e398                	sd	a4,0(a5)
   disk.avail = (uint16*)(((char*)disk.desc) + NUM*sizeof(struct VRingDesc));
-    80207024:	0001c717          	auipc	a4,0x1c
-    80207028:	05c70713          	addi	a4,a4,92 # 80223080 <disk+0x80>
-    8020702c:	e798                	sd	a4,8(a5)
+    802070ba:	0001c717          	auipc	a4,0x1c
+    802070be:	fc670713          	addi	a4,a4,-58 # 80223080 <disk+0x80>
+    802070c2:	e798                	sd	a4,8(a5)
   disk.used = (struct UsedArea *) (disk.pages + PGSIZE);
-    8020702e:	0001d717          	auipc	a4,0x1d
-    80207032:	fd270713          	addi	a4,a4,-46 # 80224000 <disk+0x1000>
-    80207036:	eb98                	sd	a4,16(a5)
+    802070c4:	0001d717          	auipc	a4,0x1d
+    802070c8:	f3c70713          	addi	a4,a4,-196 # 80224000 <disk+0x1000>
+    802070cc:	eb98                	sd	a4,16(a5)
     disk.free[i] = 1;
-    80207038:	4705                	li	a4,1
-    8020703a:	00e78c23          	sb	a4,24(a5)
-    8020703e:	00e78ca3          	sb	a4,25(a5)
-    80207042:	00e78d23          	sb	a4,26(a5)
-    80207046:	00e78da3          	sb	a4,27(a5)
-    8020704a:	00e78e23          	sb	a4,28(a5)
-    8020704e:	00e78ea3          	sb	a4,29(a5)
-    80207052:	00e78f23          	sb	a4,30(a5)
-    80207056:	00e78fa3          	sb	a4,31(a5)
-}
-    8020705a:	60a2                	ld	ra,8(sp)
-    8020705c:	6402                	ld	s0,0(sp)
-    8020705e:	0141                	addi	sp,sp,16
-    80207060:	8082                	ret
+    802070ce:	4705                	li	a4,1
+    802070d0:	00e78c23          	sb	a4,24(a5)
+    802070d4:	00e78ca3          	sb	a4,25(a5)
+    802070d8:	00e78d23          	sb	a4,26(a5)
+    802070dc:	00e78da3          	sb	a4,27(a5)
+    802070e0:	00e78e23          	sb	a4,28(a5)
+    802070e4:	00e78ea3          	sb	a4,29(a5)
+    802070e8:	00e78f23          	sb	a4,30(a5)
+    802070ec:	00e78fa3          	sb	a4,31(a5)
+}
+    802070f0:	60a2                	ld	ra,8(sp)
+    802070f2:	6402                	ld	s0,0(sp)
+    802070f4:	0141                	addi	sp,sp,16
+    802070f6:	8082                	ret
     panic("could not find virtio disk");
-    80207062:	00003517          	auipc	a0,0x3
-    80207066:	ce650513          	addi	a0,a0,-794 # 80209d48 <digits+0x9c8>
-    8020706a:	ffff9097          	auipc	ra,0xffff9
-    8020706e:	0da080e7          	jalr	218(ra) # 80200144 <panic>
+    802070f8:	00003517          	auipc	a0,0x3
+    802070fc:	c5850513          	addi	a0,a0,-936 # 80209d50 <digits+0x9d0>
+    80207100:	ffff9097          	auipc	ra,0xffff9
+    80207104:	044080e7          	jalr	68(ra) # 80200144 <panic>
     panic("virtio disk has no queue 0");
-    80207072:	00003517          	auipc	a0,0x3
-    80207076:	cf650513          	addi	a0,a0,-778 # 80209d68 <digits+0x9e8>
-    8020707a:	ffff9097          	auipc	ra,0xffff9
-    8020707e:	0ca080e7          	jalr	202(ra) # 80200144 <panic>
+    80207108:	00003517          	auipc	a0,0x3
+    8020710c:	c6850513          	addi	a0,a0,-920 # 80209d70 <digits+0x9f0>
+    80207110:	ffff9097          	auipc	ra,0xffff9
+    80207114:	034080e7          	jalr	52(ra) # 80200144 <panic>
     panic("virtio disk max queue too short");
-    80207082:	00003517          	auipc	a0,0x3
-    80207086:	d0650513          	addi	a0,a0,-762 # 80209d88 <digits+0xa08>
-    8020708a:	ffff9097          	auipc	ra,0xffff9
-    8020708e:	0ba080e7          	jalr	186(ra) # 80200144 <panic>
+    80207118:	00003517          	auipc	a0,0x3
+    8020711c:	c7850513          	addi	a0,a0,-904 # 80209d90 <digits+0xa10>
+    80207120:	ffff9097          	auipc	ra,0xffff9
+    80207124:	024080e7          	jalr	36(ra) # 80200144 <panic>
 
-0000000080207092 <virtio_disk_rw>:
+0000000080207128 <virtio_disk_rw>:
   return 0;
 }
 
 void
 virtio_disk_rw(struct buf *b, int write)
 {
-    80207092:	7175                	addi	sp,sp,-144
-    80207094:	e506                	sd	ra,136(sp)
-    80207096:	e122                	sd	s0,128(sp)
-    80207098:	fca6                	sd	s1,120(sp)
-    8020709a:	f8ca                	sd	s2,112(sp)
-    8020709c:	f4ce                	sd	s3,104(sp)
-    8020709e:	f0d2                	sd	s4,96(sp)
-    802070a0:	ecd6                	sd	s5,88(sp)
-    802070a2:	e8da                	sd	s6,80(sp)
-    802070a4:	e4de                	sd	s7,72(sp)
-    802070a6:	e0e2                	sd	s8,64(sp)
-    802070a8:	fc66                	sd	s9,56(sp)
-    802070aa:	f86a                	sd	s10,48(sp)
-    802070ac:	f46e                	sd	s11,40(sp)
-    802070ae:	0900                	addi	s0,sp,144
-    802070b0:	8aaa                	mv	s5,a0
-    802070b2:	8cae                	mv	s9,a1
+    80207128:	7175                	addi	sp,sp,-144
+    8020712a:	e506                	sd	ra,136(sp)
+    8020712c:	e122                	sd	s0,128(sp)
+    8020712e:	fca6                	sd	s1,120(sp)
+    80207130:	f8ca                	sd	s2,112(sp)
+    80207132:	f4ce                	sd	s3,104(sp)
+    80207134:	f0d2                	sd	s4,96(sp)
+    80207136:	ecd6                	sd	s5,88(sp)
+    80207138:	e8da                	sd	s6,80(sp)
+    8020713a:	e4de                	sd	s7,72(sp)
+    8020713c:	e0e2                	sd	s8,64(sp)
+    8020713e:	fc66                	sd	s9,56(sp)
+    80207140:	f86a                	sd	s10,48(sp)
+    80207142:	f46e                	sd	s11,40(sp)
+    80207144:	0900                	addi	s0,sp,144
+    80207146:	8aaa                	mv	s5,a0
+    80207148:	8cae                	mv	s9,a1
   uint64 sector = b->sectorno;
-    802070b4:	00c56d03          	lwu	s10,12(a0)
+    8020714a:	00c56d03          	lwu	s10,12(a0)
 
   acquire(&disk.vdisk_lock);
-    802070b8:	0001e517          	auipc	a0,0x1e
-    802070bc:	ff050513          	addi	a0,a0,-16 # 802250a8 <disk+0x20a8>
-    802070c0:	ffff9097          	auipc	ra,0xffff9
-    802070c4:	606080e7          	jalr	1542(ra) # 802006c6 <acquire>
+    8020714e:	0001e517          	auipc	a0,0x1e
+    80207152:	f5a50513          	addi	a0,a0,-166 # 802250a8 <disk+0x20a8>
+    80207156:	ffff9097          	auipc	ra,0xffff9
+    8020715a:	570080e7          	jalr	1392(ra) # 802006c6 <acquire>
   for(int i = 0; i < 3; i++){
-    802070c8:	4981                	li	s3,0
+    8020715e:	4981                	li	s3,0
   for(int i = 0; i < NUM; i++){
-    802070ca:	44a1                	li	s1,8
+    80207160:	44a1                	li	s1,8
       disk.free[i] = 0;
-    802070cc:	0001cc17          	auipc	s8,0x1c
-    802070d0:	f34c0c13          	addi	s8,s8,-204 # 80223000 <disk>
-    802070d4:	6b89                	lui	s7,0x2
+    80207162:	0001cc17          	auipc	s8,0x1c
+    80207166:	e9ec0c13          	addi	s8,s8,-354 # 80223000 <disk>
+    8020716a:	6b89                	lui	s7,0x2
   for(int i = 0; i < 3; i++){
-    802070d6:	4b0d                	li	s6,3
-    802070d8:	a0ad                	j	80207142 <virtio_disk_rw+0xb0>
+    8020716c:	4b0d                	li	s6,3
+    8020716e:	a0ad                	j	802071d8 <virtio_disk_rw+0xb0>
       disk.free[i] = 0;
-    802070da:	00fc0733          	add	a4,s8,a5
-    802070de:	975e                	add	a4,a4,s7
-    802070e0:	00070c23          	sb	zero,24(a4)
+    80207170:	00fc0733          	add	a4,s8,a5
+    80207174:	975e                	add	a4,a4,s7
+    80207176:	00070c23          	sb	zero,24(a4)
     idx[i] = alloc_desc();
-    802070e4:	c19c                	sw	a5,0(a1)
+    8020717a:	c19c                	sw	a5,0(a1)
     if(idx[i] < 0){
-    802070e6:	0207c563          	bltz	a5,80207110 <virtio_disk_rw+0x7e>
+    8020717c:	0207c563          	bltz	a5,802071a6 <virtio_disk_rw+0x7e>
   for(int i = 0; i < 3; i++){
-    802070ea:	2905                	addiw	s2,s2,1
-    802070ec:	0611                	addi	a2,a2,4 # 2004 <_entry-0x801fdffc>
-    802070ee:	19690e63          	beq	s2,s6,8020728a <virtio_disk_rw+0x1f8>
+    80207180:	2905                	addiw	s2,s2,1
+    80207182:	0611                	addi	a2,a2,4 # 2004 <_entry-0x801fdffc>
+    80207184:	19690e63          	beq	s2,s6,80207320 <virtio_disk_rw+0x1f8>
     idx[i] = alloc_desc();
-    802070f2:	85b2                	mv	a1,a2
+    80207188:	85b2                	mv	a1,a2
   for(int i = 0; i < NUM; i++){
-    802070f4:	0001e717          	auipc	a4,0x1e
-    802070f8:	f2470713          	addi	a4,a4,-220 # 80225018 <disk+0x2018>
-    802070fc:	87ce                	mv	a5,s3
+    8020718a:	0001e717          	auipc	a4,0x1e
+    8020718e:	e8e70713          	addi	a4,a4,-370 # 80225018 <disk+0x2018>
+    80207192:	87ce                	mv	a5,s3
     if(disk.free[i]){
-    802070fe:	00074683          	lbu	a3,0(a4)
-    80207102:	fee1                	bnez	a3,802070da <virtio_disk_rw+0x48>
+    80207194:	00074683          	lbu	a3,0(a4)
+    80207198:	fee1                	bnez	a3,80207170 <virtio_disk_rw+0x48>
   for(int i = 0; i < NUM; i++){
-    80207104:	2785                	addiw	a5,a5,1
-    80207106:	0705                	addi	a4,a4,1
-    80207108:	fe979be3          	bne	a5,s1,802070fe <virtio_disk_rw+0x6c>
+    8020719a:	2785                	addiw	a5,a5,1
+    8020719c:	0705                	addi	a4,a4,1
+    8020719e:	fe979be3          	bne	a5,s1,80207194 <virtio_disk_rw+0x6c>
     idx[i] = alloc_desc();
-    8020710c:	57fd                	li	a5,-1
-    8020710e:	c19c                	sw	a5,0(a1)
+    802071a2:	57fd                	li	a5,-1
+    802071a4:	c19c                	sw	a5,0(a1)
       for(int j = 0; j < i; j++)
-    80207110:	01205d63          	blez	s2,8020712a <virtio_disk_rw+0x98>
-    80207114:	8dce                	mv	s11,s3
+    802071a6:	01205d63          	blez	s2,802071c0 <virtio_disk_rw+0x98>
+    802071aa:	8dce                	mv	s11,s3
         free_desc(idx[j]);
-    80207116:	000a2503          	lw	a0,0(s4)
-    8020711a:	00000097          	auipc	ra,0x0
-    8020711e:	d72080e7          	jalr	-654(ra) # 80206e8c <free_desc>
+    802071ac:	000a2503          	lw	a0,0(s4)
+    802071b0:	00000097          	auipc	ra,0x0
+    802071b4:	d72080e7          	jalr	-654(ra) # 80206f22 <free_desc>
       for(int j = 0; j < i; j++)
-    80207122:	2d85                	addiw	s11,s11,1
-    80207124:	0a11                	addi	s4,s4,4
-    80207126:	ff2d98e3          	bne	s11,s2,80207116 <virtio_disk_rw+0x84>
+    802071b8:	2d85                	addiw	s11,s11,1
+    802071ba:	0a11                	addi	s4,s4,4
+    802071bc:	ff2d98e3          	bne	s11,s2,802071ac <virtio_disk_rw+0x84>
   int idx[3];
   while(1){
     if(alloc3_desc(idx) == 0) {
       break;
     }
     sleep(&disk.free[0], &disk.vdisk_lock);
-    8020712a:	0001e597          	auipc	a1,0x1e
-    8020712e:	f7e58593          	addi	a1,a1,-130 # 802250a8 <disk+0x20a8>
-    80207132:	0001e517          	auipc	a0,0x1e
-    80207136:	ee650513          	addi	a0,a0,-282 # 80225018 <disk+0x2018>
-    8020713a:	ffffb097          	auipc	ra,0xffffb
-    8020713e:	182080e7          	jalr	386(ra) # 802022bc <sleep>
+    802071c0:	0001e597          	auipc	a1,0x1e
+    802071c4:	ee858593          	addi	a1,a1,-280 # 802250a8 <disk+0x20a8>
+    802071c8:	0001e517          	auipc	a0,0x1e
+    802071cc:	e5050513          	addi	a0,a0,-432 # 80225018 <disk+0x2018>
+    802071d0:	ffffb097          	auipc	ra,0xffffb
+    802071d4:	0ec080e7          	jalr	236(ra) # 802022bc <sleep>
   for(int i = 0; i < 3; i++){
-    80207142:	f8040a13          	addi	s4,s0,-128
+    802071d8:	f8040a13          	addi	s4,s0,-128
 {
-    80207146:	8652                	mv	a2,s4
+    802071dc:	8652                	mv	a2,s4
   for(int i = 0; i < 3; i++){
-    80207148:	894e                	mv	s2,s3
-    8020714a:	b765                	j	802070f2 <virtio_disk_rw+0x60>
+    802071de:	894e                	mv	s2,s3
+    802071e0:	b765                	j	80207188 <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
-    8020714c:	0001e717          	auipc	a4,0x1e
-    80207150:	eb473703          	ld	a4,-332(a4) # 80225000 <disk+0x2000>
-    80207154:	973e                	add	a4,a4,a5
-    80207156:	00071623          	sh	zero,12(a4)
+    802071e2:	0001e717          	auipc	a4,0x1e
+    802071e6:	e1e73703          	ld	a4,-482(a4) # 80225000 <disk+0x2000>
+    802071ea:	973e                	add	a4,a4,a5
+    802071ec:	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;
-    8020715a:	0001c517          	auipc	a0,0x1c
-    8020715e:	ea650513          	addi	a0,a0,-346 # 80223000 <disk>
-    80207162:	0001e717          	auipc	a4,0x1e
-    80207166:	e9e70713          	addi	a4,a4,-354 # 80225000 <disk+0x2000>
-    8020716a:	6314                	ld	a3,0(a4)
-    8020716c:	96be                	add	a3,a3,a5
-    8020716e:	00c6d603          	lhu	a2,12(a3)
-    80207172:	00166613          	ori	a2,a2,1
-    80207176:	00c69623          	sh	a2,12(a3)
+    802071f0:	0001c517          	auipc	a0,0x1c
+    802071f4:	e1050513          	addi	a0,a0,-496 # 80223000 <disk>
+    802071f8:	0001e717          	auipc	a4,0x1e
+    802071fc:	e0870713          	addi	a4,a4,-504 # 80225000 <disk+0x2000>
+    80207200:	6314                	ld	a3,0(a4)
+    80207202:	96be                	add	a3,a3,a5
+    80207204:	00c6d603          	lhu	a2,12(a3)
+    80207208:	00166613          	ori	a2,a2,1
+    8020720c:	00c69623          	sh	a2,12(a3)
   disk.desc[idx[1]].next = idx[2];
-    8020717a:	f8842683          	lw	a3,-120(s0)
-    8020717e:	6310                	ld	a2,0(a4)
-    80207180:	97b2                	add	a5,a5,a2
-    80207182:	00d79723          	sh	a3,14(a5)
+    80207210:	f8842683          	lw	a3,-120(s0)
+    80207214:	6310                	ld	a2,0(a4)
+    80207216:	97b2                	add	a5,a5,a2
+    80207218:	00d79723          	sh	a3,14(a5)
 
   disk.info[idx[0]].status = 0;
-    80207186:	20048613          	addi	a2,s1,512
-    8020718a:	0612                	slli	a2,a2,0x4
-    8020718c:	962a                	add	a2,a2,a0
-    8020718e:	02060823          	sb	zero,48(a2)
+    8020721c:	20048613          	addi	a2,s1,512
+    80207220:	0612                	slli	a2,a2,0x4
+    80207222:	962a                	add	a2,a2,a0
+    80207224:	02060823          	sb	zero,48(a2)
   disk.desc[idx[2]].addr = (uint64) &disk.info[idx[0]].status;
-    80207192:	00469793          	slli	a5,a3,0x4
-    80207196:	630c                	ld	a1,0(a4)
-    80207198:	95be                	add	a1,a1,a5
-    8020719a:	6689                	lui	a3,0x2
-    8020719c:	03068693          	addi	a3,a3,48 # 2030 <_entry-0x801fdfd0>
-    802071a0:	96ca                	add	a3,a3,s2
-    802071a2:	96aa                	add	a3,a3,a0
-    802071a4:	e194                	sd	a3,0(a1)
+    80207228:	00469793          	slli	a5,a3,0x4
+    8020722c:	630c                	ld	a1,0(a4)
+    8020722e:	95be                	add	a1,a1,a5
+    80207230:	6689                	lui	a3,0x2
+    80207232:	03068693          	addi	a3,a3,48 # 2030 <_entry-0x801fdfd0>
+    80207236:	96ca                	add	a3,a3,s2
+    80207238:	96aa                	add	a3,a3,a0
+    8020723a:	e194                	sd	a3,0(a1)
   disk.desc[idx[2]].len = 1;
-    802071a6:	6314                	ld	a3,0(a4)
-    802071a8:	96be                	add	a3,a3,a5
-    802071aa:	4585                	li	a1,1
-    802071ac:	c68c                	sw	a1,8(a3)
+    8020723c:	6314                	ld	a3,0(a4)
+    8020723e:	96be                	add	a3,a3,a5
+    80207240:	4585                	li	a1,1
+    80207242:	c68c                	sw	a1,8(a3)
   disk.desc[idx[2]].flags = VRING_DESC_F_WRITE; // device writes the status
-    802071ae:	6314                	ld	a3,0(a4)
-    802071b0:	96be                	add	a3,a3,a5
-    802071b2:	4509                	li	a0,2
-    802071b4:	00a69623          	sh	a0,12(a3)
+    80207244:	6314                	ld	a3,0(a4)
+    80207246:	96be                	add	a3,a3,a5
+    80207248:	4509                	li	a0,2
+    8020724a:	00a69623          	sh	a0,12(a3)
   disk.desc[idx[2]].next = 0;
-    802071b8:	6314                	ld	a3,0(a4)
-    802071ba:	97b6                	add	a5,a5,a3
-    802071bc:	00079723          	sh	zero,14(a5)
+    8020724e:	6314                	ld	a3,0(a4)
+    80207250:	97b6                	add	a5,a5,a3
+    80207252:	00079723          	sh	zero,14(a5)
 
   // record struct buf for virtio_disk_intr().
   b->disk = 1;
-    802071c0:	00baa223          	sw	a1,4(s5)
+    80207256:	00baa223          	sw	a1,4(s5)
   disk.info[idx[0]].b = b;
-    802071c4:	03563423          	sd	s5,40(a2)
+    8020725a:	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];
-    802071c8:	6714                	ld	a3,8(a4)
-    802071ca:	0026d783          	lhu	a5,2(a3)
-    802071ce:	8b9d                	andi	a5,a5,7
-    802071d0:	0789                	addi	a5,a5,2
-    802071d2:	0786                	slli	a5,a5,0x1
-    802071d4:	96be                	add	a3,a3,a5
-    802071d6:	00969023          	sh	s1,0(a3)
+    8020725e:	6714                	ld	a3,8(a4)
+    80207260:	0026d783          	lhu	a5,2(a3)
+    80207264:	8b9d                	andi	a5,a5,7
+    80207266:	0789                	addi	a5,a5,2
+    80207268:	0786                	slli	a5,a5,0x1
+    8020726a:	96be                	add	a3,a3,a5
+    8020726c:	00969023          	sh	s1,0(a3)
   __sync_synchronize();
-    802071da:	0ff0000f          	fence
+    80207270:	0ff0000f          	fence
   disk.avail[1] = disk.avail[1] + 1;
-    802071de:	6718                	ld	a4,8(a4)
-    802071e0:	00275783          	lhu	a5,2(a4)
-    802071e4:	2785                	addiw	a5,a5,1
-    802071e6:	00f71123          	sh	a5,2(a4)
+    80207274:	6718                	ld	a4,8(a4)
+    80207276:	00275783          	lhu	a5,2(a4)
+    8020727a:	2785                	addiw	a5,a5,1
+    8020727c:	00f71123          	sh	a5,2(a4)
 
   *R(VIRTIO_MMIO_QUEUE_NOTIFY) = 0; // value is queue number
-    802071ea:	00003797          	auipc	a5,0x3
-    802071ee:	c2e7b783          	ld	a5,-978(a5) # 80209e18 <digits+0xa98>
-    802071f2:	0007a023          	sw	zero,0(a5)
+    80207280:	00003797          	auipc	a5,0x3
+    80207284:	ba07b783          	ld	a5,-1120(a5) # 80209e20 <digits+0xaa0>
+    80207288:	0007a023          	sw	zero,0(a5)
 
   // Wait for virtio_disk_intr() to say request has finished.
   while(b->disk == 1) {
-    802071f6:	004aa783          	lw	a5,4(s5)
-    802071fa:	02b79163          	bne	a5,a1,8020721c <virtio_disk_rw+0x18a>
+    8020728c:	004aa783          	lw	a5,4(s5)
+    80207290:	02b79163          	bne	a5,a1,802072b2 <virtio_disk_rw+0x18a>
     sleep(b, &disk.vdisk_lock);
-    802071fe:	0001e917          	auipc	s2,0x1e
-    80207202:	eaa90913          	addi	s2,s2,-342 # 802250a8 <disk+0x20a8>
+    80207294:	0001e917          	auipc	s2,0x1e
+    80207298:	e1490913          	addi	s2,s2,-492 # 802250a8 <disk+0x20a8>
   while(b->disk == 1) {
-    80207206:	4485                	li	s1,1
+    8020729c:	4485                	li	s1,1
     sleep(b, &disk.vdisk_lock);
-    80207208:	85ca                	mv	a1,s2
-    8020720a:	8556                	mv	a0,s5
-    8020720c:	ffffb097          	auipc	ra,0xffffb
-    80207210:	0b0080e7          	jalr	176(ra) # 802022bc <sleep>
+    8020729e:	85ca                	mv	a1,s2
+    802072a0:	8556                	mv	a0,s5
+    802072a2:	ffffb097          	auipc	ra,0xffffb
+    802072a6:	01a080e7          	jalr	26(ra) # 802022bc <sleep>
   while(b->disk == 1) {
-    80207214:	004aa783          	lw	a5,4(s5)
-    80207218:	fe9788e3          	beq	a5,s1,80207208 <virtio_disk_rw+0x176>
+    802072aa:	004aa783          	lw	a5,4(s5)
+    802072ae:	fe9788e3          	beq	a5,s1,8020729e <virtio_disk_rw+0x176>
   }
 
   disk.info[idx[0]].b = 0;
-    8020721c:	f8042483          	lw	s1,-128(s0)
-    80207220:	20048713          	addi	a4,s1,512
-    80207224:	0712                	slli	a4,a4,0x4
-    80207226:	0001c797          	auipc	a5,0x1c
-    8020722a:	dda78793          	addi	a5,a5,-550 # 80223000 <disk>
-    8020722e:	97ba                	add	a5,a5,a4
-    80207230:	0207b423          	sd	zero,40(a5)
+    802072b2:	f8042483          	lw	s1,-128(s0)
+    802072b6:	20048713          	addi	a4,s1,512
+    802072ba:	0712                	slli	a4,a4,0x4
+    802072bc:	0001c797          	auipc	a5,0x1c
+    802072c0:	d4478793          	addi	a5,a5,-700 # 80223000 <disk>
+    802072c4:	97ba                	add	a5,a5,a4
+    802072c6:	0207b423          	sd	zero,40(a5)
     if(disk.desc[i].flags & VRING_DESC_F_NEXT)
-    80207234:	0001e917          	auipc	s2,0x1e
-    80207238:	dcc90913          	addi	s2,s2,-564 # 80225000 <disk+0x2000>
-    8020723c:	a019                	j	80207242 <virtio_disk_rw+0x1b0>
+    802072ca:	0001e917          	auipc	s2,0x1e
+    802072ce:	d3690913          	addi	s2,s2,-714 # 80225000 <disk+0x2000>
+    802072d2:	a019                	j	802072d8 <virtio_disk_rw+0x1b0>
       i = disk.desc[i].next;
-    8020723e:	00e7d483          	lhu	s1,14(a5)
+    802072d4:	00e7d483          	lhu	s1,14(a5)
     free_desc(i);
-    80207242:	8526                	mv	a0,s1
-    80207244:	00000097          	auipc	ra,0x0
-    80207248:	c48080e7          	jalr	-952(ra) # 80206e8c <free_desc>
+    802072d8:	8526                	mv	a0,s1
+    802072da:	00000097          	auipc	ra,0x0
+    802072de:	c48080e7          	jalr	-952(ra) # 80206f22 <free_desc>
     if(disk.desc[i].flags & VRING_DESC_F_NEXT)
-    8020724c:	0492                	slli	s1,s1,0x4
-    8020724e:	00093783          	ld	a5,0(s2)
-    80207252:	97a6                	add	a5,a5,s1
-    80207254:	00c7d703          	lhu	a4,12(a5)
-    80207258:	8b05                	andi	a4,a4,1
-    8020725a:	f375                	bnez	a4,8020723e <virtio_disk_rw+0x1ac>
+    802072e2:	0492                	slli	s1,s1,0x4
+    802072e4:	00093783          	ld	a5,0(s2)
+    802072e8:	97a6                	add	a5,a5,s1
+    802072ea:	00c7d703          	lhu	a4,12(a5)
+    802072ee:	8b05                	andi	a4,a4,1
+    802072f0:	f375                	bnez	a4,802072d4 <virtio_disk_rw+0x1ac>
   free_chain(idx[0]);
 
   release(&disk.vdisk_lock);
-    8020725c:	0001e517          	auipc	a0,0x1e
-    80207260:	e4c50513          	addi	a0,a0,-436 # 802250a8 <disk+0x20a8>
-    80207264:	ffff9097          	auipc	ra,0xffff9
-    80207268:	4b6080e7          	jalr	1206(ra) # 8020071a <release>
-}
-    8020726c:	60aa                	ld	ra,136(sp)
-    8020726e:	640a                	ld	s0,128(sp)
-    80207270:	74e6                	ld	s1,120(sp)
-    80207272:	7946                	ld	s2,112(sp)
-    80207274:	79a6                	ld	s3,104(sp)
-    80207276:	7a06                	ld	s4,96(sp)
-    80207278:	6ae6                	ld	s5,88(sp)
-    8020727a:	6b46                	ld	s6,80(sp)
-    8020727c:	6ba6                	ld	s7,72(sp)
-    8020727e:	6c06                	ld	s8,64(sp)
-    80207280:	7ce2                	ld	s9,56(sp)
-    80207282:	7d42                	ld	s10,48(sp)
-    80207284:	7da2                	ld	s11,40(sp)
-    80207286:	6149                	addi	sp,sp,144
-    80207288:	8082                	ret
+    802072f2:	0001e517          	auipc	a0,0x1e
+    802072f6:	db650513          	addi	a0,a0,-586 # 802250a8 <disk+0x20a8>
+    802072fa:	ffff9097          	auipc	ra,0xffff9
+    802072fe:	420080e7          	jalr	1056(ra) # 8020071a <release>
+}
+    80207302:	60aa                	ld	ra,136(sp)
+    80207304:	640a                	ld	s0,128(sp)
+    80207306:	74e6                	ld	s1,120(sp)
+    80207308:	7946                	ld	s2,112(sp)
+    8020730a:	79a6                	ld	s3,104(sp)
+    8020730c:	7a06                	ld	s4,96(sp)
+    8020730e:	6ae6                	ld	s5,88(sp)
+    80207310:	6b46                	ld	s6,80(sp)
+    80207312:	6ba6                	ld	s7,72(sp)
+    80207314:	6c06                	ld	s8,64(sp)
+    80207316:	7ce2                	ld	s9,56(sp)
+    80207318:	7d42                	ld	s10,48(sp)
+    8020731a:	7da2                	ld	s11,40(sp)
+    8020731c:	6149                	addi	sp,sp,144
+    8020731e:	8082                	ret
   if(write)
-    8020728a:	019037b3          	snez	a5,s9
-    8020728e:	f6f42823          	sw	a5,-144(s0)
+    80207320:	019037b3          	snez	a5,s9
+    80207324:	f6f42823          	sw	a5,-144(s0)
   buf0.reserved = 0;
-    80207292:	f6042a23          	sw	zero,-140(s0)
+    80207328:	f6042a23          	sw	zero,-140(s0)
   buf0.sector = sector;
-    80207296:	f7a43c23          	sd	s10,-136(s0)
+    8020732c:	f7a43c23          	sd	s10,-136(s0)
   disk.desc[idx[0]].addr = (uint64) kwalkaddr(myproc()->kpagetable, (uint64) &buf0);
-    8020729a:	ffffa097          	auipc	ra,0xffffa
-    8020729e:	7a2080e7          	jalr	1954(ra) # 80201a3c <myproc>
-    802072a2:	f8042483          	lw	s1,-128(s0)
-    802072a6:	00449913          	slli	s2,s1,0x4
-    802072aa:	0001e997          	auipc	s3,0x1e
-    802072ae:	d5698993          	addi	s3,s3,-682 # 80225000 <disk+0x2000>
-    802072b2:	0009ba03          	ld	s4,0(s3)
-    802072b6:	9a4a                	add	s4,s4,s2
-    802072b8:	f7040593          	addi	a1,s0,-144
-    802072bc:	6d28                	ld	a0,88(a0)
-    802072be:	ffffa097          	auipc	ra,0xffffa
-    802072c2:	932080e7          	jalr	-1742(ra) # 80200bf0 <kwalkaddr>
-    802072c6:	00aa3023          	sd	a0,0(s4)
+    80207330:	ffffa097          	auipc	ra,0xffffa
+    80207334:	70c080e7          	jalr	1804(ra) # 80201a3c <myproc>
+    80207338:	f8042483          	lw	s1,-128(s0)
+    8020733c:	00449913          	slli	s2,s1,0x4
+    80207340:	0001e997          	auipc	s3,0x1e
+    80207344:	cc098993          	addi	s3,s3,-832 # 80225000 <disk+0x2000>
+    80207348:	0009ba03          	ld	s4,0(s3)
+    8020734c:	9a4a                	add	s4,s4,s2
+    8020734e:	f7040593          	addi	a1,s0,-144
+    80207352:	6d28                	ld	a0,88(a0)
+    80207354:	ffffa097          	auipc	ra,0xffffa
+    80207358:	89c080e7          	jalr	-1892(ra) # 80200bf0 <kwalkaddr>
+    8020735c:	00aa3023          	sd	a0,0(s4)
   disk.desc[idx[0]].len = sizeof(buf0);
-    802072ca:	0009b783          	ld	a5,0(s3)
-    802072ce:	97ca                	add	a5,a5,s2
-    802072d0:	4741                	li	a4,16
-    802072d2:	c798                	sw	a4,8(a5)
+    80207360:	0009b783          	ld	a5,0(s3)
+    80207364:	97ca                	add	a5,a5,s2
+    80207366:	4741                	li	a4,16
+    80207368:	c798                	sw	a4,8(a5)
   disk.desc[idx[0]].flags = VRING_DESC_F_NEXT;
-    802072d4:	0009b783          	ld	a5,0(s3)
-    802072d8:	97ca                	add	a5,a5,s2
-    802072da:	4705                	li	a4,1
-    802072dc:	00e79623          	sh	a4,12(a5)
+    8020736a:	0009b783          	ld	a5,0(s3)
+    8020736e:	97ca                	add	a5,a5,s2
+    80207370:	4705                	li	a4,1
+    80207372:	00e79623          	sh	a4,12(a5)
   disk.desc[idx[0]].next = idx[1];
-    802072e0:	f8442783          	lw	a5,-124(s0)
-    802072e4:	0009b703          	ld	a4,0(s3)
-    802072e8:	974a                	add	a4,a4,s2
-    802072ea:	00f71723          	sh	a5,14(a4)
+    80207376:	f8442783          	lw	a5,-124(s0)
+    8020737a:	0009b703          	ld	a4,0(s3)
+    8020737e:	974a                	add	a4,a4,s2
+    80207380:	00f71723          	sh	a5,14(a4)
   disk.desc[idx[1]].addr = (uint64) b->data;
-    802072ee:	0792                	slli	a5,a5,0x4
-    802072f0:	0009b703          	ld	a4,0(s3)
-    802072f4:	973e                	add	a4,a4,a5
-    802072f6:	058a8693          	addi	a3,s5,88
-    802072fa:	e314                	sd	a3,0(a4)
+    80207384:	0792                	slli	a5,a5,0x4
+    80207386:	0009b703          	ld	a4,0(s3)
+    8020738a:	973e                	add	a4,a4,a5
+    8020738c:	058a8693          	addi	a3,s5,88
+    80207390:	e314                	sd	a3,0(a4)
   disk.desc[idx[1]].len = BSIZE;
-    802072fc:	0009b703          	ld	a4,0(s3)
-    80207300:	973e                	add	a4,a4,a5
-    80207302:	20000693          	li	a3,512
-    80207306:	c714                	sw	a3,8(a4)
+    80207392:	0009b703          	ld	a4,0(s3)
+    80207396:	973e                	add	a4,a4,a5
+    80207398:	20000693          	li	a3,512
+    8020739c:	c714                	sw	a3,8(a4)
   if(write)
-    80207308:	e40c92e3          	bnez	s9,8020714c <virtio_disk_rw+0xba>
+    8020739e:	e40c92e3          	bnez	s9,802071e2 <virtio_disk_rw+0xba>
     disk.desc[idx[1]].flags = VRING_DESC_F_WRITE; // device writes b->data
-    8020730c:	0001e717          	auipc	a4,0x1e
-    80207310:	cf473703          	ld	a4,-780(a4) # 80225000 <disk+0x2000>
-    80207314:	973e                	add	a4,a4,a5
-    80207316:	4689                	li	a3,2
-    80207318:	00d71623          	sh	a3,12(a4)
-    8020731c:	bd3d                	j	8020715a <virtio_disk_rw+0xc8>
+    802073a2:	0001e717          	auipc	a4,0x1e
+    802073a6:	c5e73703          	ld	a4,-930(a4) # 80225000 <disk+0x2000>
+    802073aa:	973e                	add	a4,a4,a5
+    802073ac:	4689                	li	a3,2
+    802073ae:	00d71623          	sh	a3,12(a4)
+    802073b2:	bd3d                	j	802071f0 <virtio_disk_rw+0xc8>
 
-000000008020731e <virtio_disk_intr>:
+00000000802073b4 <virtio_disk_intr>:
 
 void
 virtio_disk_intr()
 {
-    8020731e:	1101                	addi	sp,sp,-32
-    80207320:	ec06                	sd	ra,24(sp)
-    80207322:	e822                	sd	s0,16(sp)
-    80207324:	e426                	sd	s1,8(sp)
-    80207326:	e04a                	sd	s2,0(sp)
-    80207328:	1000                	addi	s0,sp,32
+    802073b4:	1101                	addi	sp,sp,-32
+    802073b6:	ec06                	sd	ra,24(sp)
+    802073b8:	e822                	sd	s0,16(sp)
+    802073ba:	e426                	sd	s1,8(sp)
+    802073bc:	e04a                	sd	s2,0(sp)
+    802073be:	1000                	addi	s0,sp,32
   acquire(&disk.vdisk_lock);
-    8020732a:	0001e517          	auipc	a0,0x1e
-    8020732e:	d7e50513          	addi	a0,a0,-642 # 802250a8 <disk+0x20a8>
-    80207332:	ffff9097          	auipc	ra,0xffff9
-    80207336:	394080e7          	jalr	916(ra) # 802006c6 <acquire>
+    802073c0:	0001e517          	auipc	a0,0x1e
+    802073c4:	ce850513          	addi	a0,a0,-792 # 802250a8 <disk+0x20a8>
+    802073c8:	ffff9097          	auipc	ra,0xffff9
+    802073cc:	2fe080e7          	jalr	766(ra) # 802006c6 <acquire>
 
   while((disk.used_idx % NUM) != (disk.used->id % NUM)){
-    8020733a:	0001e717          	auipc	a4,0x1e
-    8020733e:	cc670713          	addi	a4,a4,-826 # 80225000 <disk+0x2000>
-    80207342:	02075783          	lhu	a5,32(a4)
-    80207346:	6b18                	ld	a4,16(a4)
-    80207348:	00275683          	lhu	a3,2(a4)
-    8020734c:	8ebd                	xor	a3,a3,a5
-    8020734e:	8a9d                	andi	a3,a3,7
-    80207350:	cab9                	beqz	a3,802073a6 <virtio_disk_intr+0x88>
+    802073d0:	0001e717          	auipc	a4,0x1e
+    802073d4:	c3070713          	addi	a4,a4,-976 # 80225000 <disk+0x2000>
+    802073d8:	02075783          	lhu	a5,32(a4)
+    802073dc:	6b18                	ld	a4,16(a4)
+    802073de:	00275683          	lhu	a3,2(a4)
+    802073e2:	8ebd                	xor	a3,a3,a5
+    802073e4:	8a9d                	andi	a3,a3,7
+    802073e6:	cab9                	beqz	a3,8020743c <virtio_disk_intr+0x88>
     int id = disk.used->elems[disk.used_idx].id;
 
     if(disk.info[id].status != 0)
-    80207352:	0001c917          	auipc	s2,0x1c
-    80207356:	cae90913          	addi	s2,s2,-850 # 80223000 <disk>
+    802073e8:	0001c917          	auipc	s2,0x1c
+    802073ec:	c1890913          	addi	s2,s2,-1000 # 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;
-    8020735a:	0001e497          	auipc	s1,0x1e
-    8020735e:	ca648493          	addi	s1,s1,-858 # 80225000 <disk+0x2000>
+    802073f0:	0001e497          	auipc	s1,0x1e
+    802073f4:	c1048493          	addi	s1,s1,-1008 # 80225000 <disk+0x2000>
     int id = disk.used->elems[disk.used_idx].id;
-    80207362:	078e                	slli	a5,a5,0x3
-    80207364:	973e                	add	a4,a4,a5
-    80207366:	435c                	lw	a5,4(a4)
+    802073f8:	078e                	slli	a5,a5,0x3
+    802073fa:	973e                	add	a4,a4,a5
+    802073fc:	435c                	lw	a5,4(a4)
     if(disk.info[id].status != 0)
-    80207368:	20078713          	addi	a4,a5,512
-    8020736c:	0712                	slli	a4,a4,0x4
-    8020736e:	974a                	add	a4,a4,s2
-    80207370:	03074703          	lbu	a4,48(a4)
-    80207374:	e335                	bnez	a4,802073d8 <virtio_disk_intr+0xba>
+    802073fe:	20078713          	addi	a4,a5,512
+    80207402:	0712                	slli	a4,a4,0x4
+    80207404:	974a                	add	a4,a4,s2
+    80207406:	03074703          	lbu	a4,48(a4)
+    8020740a:	e335                	bnez	a4,8020746e <virtio_disk_intr+0xba>
     disk.info[id].b->disk = 0;   // disk is done with buf
-    80207376:	20078793          	addi	a5,a5,512
-    8020737a:	0792                	slli	a5,a5,0x4
-    8020737c:	97ca                	add	a5,a5,s2
-    8020737e:	7798                	ld	a4,40(a5)
-    80207380:	00072223          	sw	zero,4(a4)
+    8020740c:	20078793          	addi	a5,a5,512
+    80207410:	0792                	slli	a5,a5,0x4
+    80207412:	97ca                	add	a5,a5,s2
+    80207414:	7798                	ld	a4,40(a5)
+    80207416:	00072223          	sw	zero,4(a4)
     wakeup(disk.info[id].b);
-    80207384:	7788                	ld	a0,40(a5)
-    80207386:	ffffb097          	auipc	ra,0xffffb
-    8020738a:	0b2080e7          	jalr	178(ra) # 80202438 <wakeup>
+    8020741a:	7788                	ld	a0,40(a5)
+    8020741c:	ffffb097          	auipc	ra,0xffffb
+    80207420:	01c080e7          	jalr	28(ra) # 80202438 <wakeup>
     disk.used_idx = (disk.used_idx + 1) % NUM;
-    8020738e:	0204d783          	lhu	a5,32(s1)
-    80207392:	2785                	addiw	a5,a5,1
-    80207394:	8b9d                	andi	a5,a5,7
-    80207396:	02f49023          	sh	a5,32(s1)
+    80207424:	0204d783          	lhu	a5,32(s1)
+    80207428:	2785                	addiw	a5,a5,1
+    8020742a:	8b9d                	andi	a5,a5,7
+    8020742c:	02f49023          	sh	a5,32(s1)
   while((disk.used_idx % NUM) != (disk.used->id % NUM)){
-    8020739a:	6898                	ld	a4,16(s1)
-    8020739c:	00275683          	lhu	a3,2(a4)
-    802073a0:	8a9d                	andi	a3,a3,7
-    802073a2:	fcf690e3          	bne	a3,a5,80207362 <virtio_disk_intr+0x44>
+    80207430:	6898                	ld	a4,16(s1)
+    80207432:	00275683          	lhu	a3,2(a4)
+    80207436:	8a9d                	andi	a3,a3,7
+    80207438:	fcf690e3          	bne	a3,a5,802073f8 <virtio_disk_intr+0x44>
   }
   *R(VIRTIO_MMIO_INTERRUPT_ACK) = *R(VIRTIO_MMIO_INTERRUPT_STATUS) & 0x3;
-    802073a6:	00003797          	auipc	a5,0x3
-    802073aa:	a7a7b783          	ld	a5,-1414(a5) # 80209e20 <digits+0xaa0>
-    802073ae:	439c                	lw	a5,0(a5)
-    802073b0:	8b8d                	andi	a5,a5,3
-    802073b2:	00003717          	auipc	a4,0x3
-    802073b6:	a7673703          	ld	a4,-1418(a4) # 80209e28 <digits+0xaa8>
-    802073ba:	c31c                	sw	a5,0(a4)
+    8020743c:	00003797          	auipc	a5,0x3
+    80207440:	9ec7b783          	ld	a5,-1556(a5) # 80209e28 <digits+0xaa8>
+    80207444:	439c                	lw	a5,0(a5)
+    80207446:	8b8d                	andi	a5,a5,3
+    80207448:	00003717          	auipc	a4,0x3
+    8020744c:	9e873703          	ld	a4,-1560(a4) # 80209e30 <digits+0xab0>
+    80207450:	c31c                	sw	a5,0(a4)
 
   release(&disk.vdisk_lock);
-    802073bc:	0001e517          	auipc	a0,0x1e
-    802073c0:	cec50513          	addi	a0,a0,-788 # 802250a8 <disk+0x20a8>
-    802073c4:	ffff9097          	auipc	ra,0xffff9
-    802073c8:	356080e7          	jalr	854(ra) # 8020071a <release>
-}
-    802073cc:	60e2                	ld	ra,24(sp)
-    802073ce:	6442                	ld	s0,16(sp)
-    802073d0:	64a2                	ld	s1,8(sp)
-    802073d2:	6902                	ld	s2,0(sp)
-    802073d4:	6105                	addi	sp,sp,32
-    802073d6:	8082                	ret
+    80207452:	0001e517          	auipc	a0,0x1e
+    80207456:	c5650513          	addi	a0,a0,-938 # 802250a8 <disk+0x20a8>
+    8020745a:	ffff9097          	auipc	ra,0xffff9
+    8020745e:	2c0080e7          	jalr	704(ra) # 8020071a <release>
+}
+    80207462:	60e2                	ld	ra,24(sp)
+    80207464:	6442                	ld	s0,16(sp)
+    80207466:	64a2                	ld	s1,8(sp)
+    80207468:	6902                	ld	s2,0(sp)
+    8020746a:	6105                	addi	sp,sp,32
+    8020746c:	8082                	ret
       panic("virtio_disk_intr status");
-    802073d8:	00003517          	auipc	a0,0x3
-    802073dc:	9d050513          	addi	a0,a0,-1584 # 80209da8 <digits+0xa28>
-    802073e0:	ffff9097          	auipc	ra,0xffff9
-    802073e4:	d64080e7          	jalr	-668(ra) # 80200144 <panic>
+    8020746e:	00003517          	auipc	a0,0x3
+    80207472:	94250513          	addi	a0,a0,-1726 # 80209db0 <digits+0xa30>
+    80207476:	ffff9097          	auipc	ra,0xffff9
+    8020747a:	cce080e7          	jalr	-818(ra) # 80200144 <panic>
 	...
 
 0000000080208000 <_trampoline>:
diff --git a/target/kernel.sym b/target/kernel.sym
index 66e9e9d..9cda02b 100644
--- a/target/kernel.sym
+++ b/target/kernel.sym
@@ -1,8 +1,8 @@
 0000000080200000 .text
 0000000080209000 .rodata
 000000008020a000 .data
-000000008020b8c0 .got
-000000008020b920 .got.plt
+000000008020b8e8 .got
+000000008020b948 .got.plt
 000000008020c000 .bss
 0000000000000000 .riscv.attributes
 0000000000000000 .comment
@@ -33,13 +33,13 @@
 0000000080201c0e freeproc
 0000000080201c78 allocproc
 000000008020a000 first.1
-000000008020ab50 states.0
+000000008020ab78 states.0
 0000000000000000 swtch.o
 0000000000000000 trap.c
 0000000000000000 syscall.c
 0000000080202c8c argraw
-000000008020ab78 syscalls
-000000008020b210 sysnames
+000000008020aba0 syscalls
+000000008020b238 sysnames
 0000000000000000 sysproc.c
 0000000000000000 bio.c
 0000000000000000 sleeplock.c
@@ -47,101 +47,102 @@
 0000000000000000 pipe.c
 0000000000000000 exec.c
 0000000000000000 sysfile.c
-0000000080204346 argfd
-00000000802043ae fdalloc
-00000000802043f0 create
+0000000080204348 argfd
+00000000802043b0 fdalloc
+00000000802043f2 create
 0000000000000000 kernelvec.o
 0000000000000000 timer.c
 0000000000000000 disk.c
 0000000000000000 fat32.c
-00000000802050be read_fat
-0000000080205134 alloc_clus
-0000000080205276 write_fat
-00000000802052f6 reloc_clus
-00000000802053fe rw_clus
-000000008020554a eget
+00000000802050ce read_fat
+0000000080205144 alloc_clus
+0000000080205286 write_fat
+0000000080205306 reloc_clus
+000000008020540e rw_clus
+000000008020555a eget
 000000008021e5b8 ecache
-0000000080205658 read_entry_name
-0000000080206840 lookup_path
-000000008020b8a8 illegal.1
-000000008020b8b8 illegal.0
+0000000080205668 read_entry_name
+0000000080206850 lookup_path
+000000008020b8d0 illegal.1
+000000008020b8e0 illegal.0
 000000008021e428 fat
 000000008021e450 root
 0000000000000000 plic.c
 0000000000000000 console.c
 0000000000000000 shutdown.c
+0000000000000000 times.c
 0000000000000000 virtio_disk.c
-0000000080206e8c free_desc
+0000000080206f22 free_desc
 0000000080223000 disk
-000000008020b8c0 _GLOBAL_OFFSET_TABLE_
-0000000080204bda sys_remove
-0000000080205fb0 edup
+000000008020b8e8 _GLOBAL_OFFSET_TABLE_
+0000000080204bdc sys_remove
+0000000080205fc0 edup
 0000000080200c68 mappages
 00000000802014a4 copyinstr
-0000000080206b32 consoleread
+0000000080206b42 consoleread
 00000000802008b4 safestrcpy
-00000000802045e0 sys_close
+00000000802045e2 sys_close
 0000000080202280 yield
 0000000080214028 kmem
 0000000080202512 either_copyout
-0000000080204fbe timerinit
+0000000080204fce timerinit
 0000000080214180 proc
 00000000802016cc proc_kpagetable
-0000000080203980 fileread
+0000000080203982 fileread
 000000008020018e printf
-000000008020319e sys_sbrk
+00000000802031a0 sys_sbrk
 0000000080208000 trampoline
 0000000080214000 panicked
-0000000080205be6 emake
-0000000080206a4a plic_claim
-00000000802049bc sys_dev
-00000000802069f0 plicinit
-0000000080206a74 plic_complete
+0000000080205bf6 emake
+0000000080206a5a plic_claim
+00000000802049be sys_dev
+0000000080206a00 plicinit
+0000000080206a84 plic_complete
 00000000802020aa sched
 00000000802007be memmove
-0000000080202f20 syscall
+0000000080202f22 syscall
 0000000080201a10 cpuid
-0000000080203154 sys_fork
+0000000080203156 sys_fork
 0000000080218af0 bcache
-00000000802047c2 sys_mkdir
-00000000802061a4 etrunc
-0000000080206a08 plicinithart
+00000000802047c4 sys_mkdir
+00000000802061b4 etrunc
+0000000080206a18 plicinithart
 0000000080201f5a reparent
-0000000080205744 fat32_init
-00000000802069d4 enameparent
-0000000080202ef0 argstr
+0000000080205754 fat32_init
+00000000802069e4 enameparent
+0000000080202ef2 argstr
 0000000080200f9e uvmdealloc
 000000008020a000 sdata
-0000000080203814 filedup
-0000000080203346 binit
+0000000080203816 filedup
+0000000080203348 binit
 00000000802012b4 uvmclear
-00000000802060da eremove
-0000000080204514 sys_read
+00000000802060ea eremove
+0000000080204516 sys_read
 0000000080200822 memcpy
 0000000080200cf6 kvmmap
 0000000080200440 kfree
 0000000080201a20 mycpu
 00000000802027a4 devintr
-000000008020590a eread
+000000008020591a eread
 000000008020a004 nextpid
-0000000080203752 fileinit
+0000000080203754 fileinit
 0000000080208090 userret
 0000000080200682 initlock
-0000000080205b2e formatname
+0000000080205b3e formatname
 00000000802012e6 copyout
 00000000802022bc sleep
 00000000802000b8 printstring
-0000000080204f30 kernelvec
-000000008020b8bf edata
+0000000080204f40 kernelvec
+000000008020b8e7 edata
 0000000080200988 wcsncmp
-0000000080203298 sys_kill
-0000000080203cb2 pipeclose
-000000008020462e sys_fstat
-0000000080206aa4 consolewrite
+000000008020329a sys_kill
+0000000080203cb4 pipeclose
+0000000080204630 sys_fstat
+0000000080206ab4 consolewrite
 0000000080209000 rodata_start
-00000000802069b6 ename
+00000000802069c6 ename
 00000000802004c2 freerange
-000000008020620e elock
+000000008020621e elock
 0000000080200ae4 kvminithart
 000000008020100a uvmalloc
 0000000080200f14 uvminit
@@ -150,61 +151,62 @@
 0000000080201bbc proc_freepagetable
 0000000080201894 reg_info
 0000000080201b20 proc_pagetable
-00000000802031e8 sys_sleep
+00000000802031ea sys_sleep
 0000000080201672 kvmfree
-000000008020505a disk_init
-0000000080203b12 dirnext
-00000000802037aa filealloc
+000000008020506a disk_init
+0000000080203b14 dirnext
+00000000802037ac filealloc
 0000000080202438 wakeup
-0000000080206f0c virtio_disk_init
+0000000080206fa2 virtio_disk_init
 0000000080201a3c myproc
 0000000080200000 BASE_ADDRESS
-0000000080204a8e sys_readdir
+0000000080204a90 sys_readdir
 0000000080200b08 walk
-000000008020467c sys_open
+000000008020467e sys_open
 00000000802000e4 backtrace
-0000000080206c88 consoleintr
-0000000080206c4a consputc
+0000000080206c98 consoleintr
+0000000080206c5a consputc
 00000000802024a2 kill
 0000000080201ada allocpid
 00000000802013c4 copyin
 0000000080200910 wnstr
 000000008020116c uvmfree
 0000000080201372 copyout2
-0000000080203a42 filewrite
+0000000080203a44 filewrite
 0000000080200942 snstr
-0000000080202e6c argint
+0000000080202e6e argint
 0000000080209000 srodata
 0000000080200e22 vmunmap
-000000008020330e sys_trace
-0000000080203f0c exec
+0000000080206e9c sys_times
+0000000080203310 sys_trace
+0000000080203f0e exec
 0000000080209000 etext
-000000008020457a sys_write
+000000008020457c sys_write
 000000008020071a release
-0000000080202e3c fetchstr
+0000000080202e3e fetchstr
 000000008020233a wait
-0000000080206292 eput
+00000000802062a2 eput
 0000000080214000 boot_stack_top
 0000000080202706 usertrapret
 0000000080201fc0 scheduler
-0000000080205bb8 cal_checksum
+0000000080205bc8 cal_checksum
 0000000080208000 _trampoline
 0000000080226000 kernel_end
-000000008020659c dirlookup
-0000000080203866 fileclose
-00000000802066fa ealloc
+00000000802065ac dirlookup
+0000000080203868 fileclose
+000000008020670a ealloc
 0000000080200bf0 kwalkaddr
 00000000802005c0 freemem_amount
 0000000080202848 usertrap
 000000008020083a strncmp
 000000008021e408 tickslock
-0000000080203d22 pipewrite
-00000000802050a6 disk_intr
+0000000080203d24 pipewrite
+00000000802050b6 disk_intr
 0000000080200876 strncpy
 000000008021d450 ftable
-000000008020731e virtio_disk_intr
-0000000080209e30 erodata
-00000000802044c2 sys_dup
+00000000802073b4 virtio_disk_intr
+0000000080209e38 erodata
+00000000802044c4 sys_dup
 0000000080201452 copyin2
 0000000080200144 panic
 000000008020c000 bss_start
@@ -214,7 +216,7 @@
 0000000080202548 either_copyin
 0000000080201e42 fork
 0000000080214078 cpus
-00000000802036b8 releasesleep
+00000000802036ba releasesleep
 0000000080200000 _entry
 0000000080200698 holding
 00000000802006c6 acquire
@@ -223,76 +225,76 @@
 000000008020a008 initcode
 00000000802026ca trapinithart
 0000000080200762 memset
-0000000080202e8e sys_test_proc
+0000000080202e90 sys_test_proc
 00000000802009e4 main
-0000000080203662 acquiresleep
+0000000080203664 acquiresleep
 0000000080208000 uservec
 0000000080200d2e kvminit
 00000000802015c4 kfreewalk
-00000000802035ec bunpin
-0000000080202ece argaddr
+00000000802035ee bunpin
+0000000080202ed0 argaddr
 0000000080200000 text_start
-0000000080206e70 sys_shutdown
-00000000802032ca sys_uptime
+0000000080206e80 sys_shutdown
+00000000802032cc sys_uptime
 000000008020a000 data_start
-0000000080204adc sys_getcwd
+0000000080204ade sys_getcwd
 000000008020036e printfinit
 0000000080201732 vmprint
 0000000080200ee6 uvmcreate
-0000000080205a02 ewrite
+0000000080205a12 ewrite
 0000000080201dc6 growproc
-00000000802036fc holdingsleep
+00000000802036fe holdingsleep
 0000000080201554 copyinstr2
 0000000080201d4a userinit
-00000000802033e6 bread
-0000000080203e26 piperead
+00000000802033e8 bread
+0000000080203e28 piperead
 00000000802003a0 print_logo
 000000008021e420 ticks
-0000000080206e1a consoleinit
+0000000080206e2a consoleinit
 0000000080200bae walkaddr
 0000000080202a2e trapframedump
 000000008020257c procdump
-0000000080203512 brelse
-0000000080202da2 sys_sysinfo
-0000000080204fe6 set_next_timeout
-0000000080202fc4 sys_exec
+0000000080203514 brelse
+0000000080202da4 sys_sysinfo
+0000000080204ff6 set_next_timeout
+0000000080202fc6 sys_exec
 0000000080200c46 kvmpa
-00000000802063ca estat
+00000000802063da estat
 0000000080202660 swtch
 0000000080226000 ebss_clear
 00000000802005d6 push_off
-0000000080204cfe sys_rename
+0000000080204d00 sys_rename
 0000000080200622 pop_off
-00000000802034d6 bwrite
-000000008020500c timer_tick
-000000008020508c disk_write
+00000000802034d8 bwrite
+000000008020501c timer_tick
+000000008020509c disk_write
 0000000080202180 exit
 0000000080201100 freewalk
-000000008020316c sys_wait
-0000000080203106 sys_exit
-0000000080203628 initsleeplock
-0000000080206244 eunlock
+000000008020316e sys_wait
+0000000080203108 sys_exit
+000000008020362a initsleeplock
+0000000080206254 eunlock
 0000000080214058 kernel_pagetable
-0000000080207092 virtio_disk_rw
+0000000080207128 virtio_disk_rw
 00000000802008e6 strlen
-0000000080205072 disk_read
-00000000802048b0 sys_pipe
+0000000080205082 disk_read
+00000000802048b2 sys_pipe
 000000008020c000 boot_stack
 0000000080202630 procnum
 00000000802009c0 strchr
-0000000080206412 enext
+0000000080206422 enext
 0000000080201620 kvmfreeusr
 0000000080222c20 cons
 000000008020055a kalloc
-0000000080202dec fetchaddr
+0000000080202dee fetchaddr
 000000008021d3b0 devsw
-000000008020313a sys_getpid
-0000000080203bd8 pipealloc
+000000008020313c sys_getpid
+0000000080203bda pipealloc
 0000000080200000 kernel_start
-000000008020481c sys_chdir
-0000000080205ff4 eupdate
+000000008020481e sys_chdir
+0000000080206004 eupdate
 0000000080202940 kerneltrap
-00000000802035b0 bpin
+00000000802035b2 bpin
 000000008020199a procinit
-000000008020391c filestat
+000000008020391e filestat
 0000000080214060 pid_lock
diff --git a/xv6-user/_cat b/xv6-user/_cat
index f6ee1ad02619e46f94fd04647975ea52a0d3d6fa..03987eef1e71d9e2f1e60cca3274fadef5fbe355 100755
GIT binary patch
delta 4377
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
Kb{@Jr=lvJC@r1?z

delta 4315
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
CbBGN9

diff --git a/xv6-user/_echo b/xv6-user/_echo
index 5f84c66ea3021fe8473329409d4005b8c4d1214a..cd80802f3f652e3176b314daf037c7d399ee63f3 100755
GIT binary patch
delta 4297
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
F|1YvfX14$U

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

diff --git a/xv6-user/_find b/xv6-user/_find
index 8552c038799efe9f4b27ac439c4eedc2e6b38f37..9484bdc59e572cf9bcbfec2e357fe594cc6b0b60 100755
GIT binary patch
delta 4578
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
G%lr>P!ovjs

delta 4487
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
aOA1!Et#tH-%;5=mux%Cok72BB(f<Js1-xni

diff --git a/xv6-user/_grep b/xv6-user/_grep
index e753f29013ddc0f642525d7d4cd27fd8d381d869..a5d08eb230669d5fc2b211dbf436706aa447cd06 100755
GIT binary patch
delta 4494
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

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

diff --git a/xv6-user/_init b/xv6-user/_init
index bae23268a19dfd1e0dfa45f7911413453345c4c5..281abcafb7e8255670884b4e1415ad553ea505db 100755
GIT binary patch
delta 4690
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

delta 4607
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
N8Fz4Y5r(&|`X6-6;oSfL

diff --git a/xv6-user/_kill b/xv6-user/_kill
index 3dbb2ee8f0f7e67b20a33ab9c8a5fa21820acf44..0afb6a5c07888b1eba6350a99a7fc5f6eb220020 100755
GIT binary patch
delta 4283
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
F{{>9aW`Y0!

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

diff --git a/xv6-user/_ls b/xv6-user/_ls
index ab8a173861a35c7134afa12f48334e77dd996254..527642860cc216d56b21861a3167a5bda4e86552 100755
GIT binary patch
delta 4356
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
PlQ;{sn6nEYqlNzi5-gtE

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

diff --git a/xv6-user/_mkdir b/xv6-user/_mkdir
index 8ab315c54443b1bab6889d4de790dc721d9eae57..5e46e7eafcc5e24f243cd1e64765abc30d6d0524 100755
GIT binary patch
delta 4452
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

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

diff --git a/xv6-user/_mv b/xv6-user/_mv
index 28a83cb039155539b8e4713b1bb5bafe1d941398..7231c100c24b4af21dfb07d6ca79328184d73899 100755
GIT binary patch
delta 4445
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
Slzt5ZD1FjmO5-pQS@2(s&YpY#

delta 4388
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
W1j~fdy|-Wrd*fZ{-dS*m7ylQ>ypgm3

diff --git a/xv6-user/_rm b/xv6-user/_rm
index 15f878a19328419c343f48b2e44d3f13b6e138ee..3264e8dcc17b07cbfb29513dd0ca5a813e0a48e0 100755
GIT binary patch
delta 4323
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

delta 4286
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
N@%u8p2`Jh)_kSypcq#w@

diff --git a/xv6-user/_sh b/xv6-user/_sh
index 9f0d107be5a53c117c7a29891538bf29ee947a64..8c2b7fc4e84667ef277c528269419e032203cb5a 100755
GIT binary patch
delta 5774
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

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

diff --git a/xv6-user/_sleep b/xv6-user/_sleep
index 39a942165f6a6f9780cca161a51547f4d05f9552..7e89ffcc9aea20b42e88008e144587c7f78370f6 100755
GIT binary patch
delta 4280
zcma)9eQZ<L6~E^>_O%nB<jW7IbbO^vnzlH6C8660iN;DPX+G)<$4*EH!3&HcvJNR@
zC=MB@sYt7^qmjXolC)|>wN0>Etun1;X-CsiX%j`$q)r_p^kZAm(6aq8s7SN(>~n1E
z1*Toe@BZ%ZeBE>IefK{1j>EZe7%YZ!#~)l`?9DuW*n7OK!qenY@z#BO^xMUs_IoxB
z(eSUm6T6*^uC5%)R|=25d{ktrGgb;092w{y^x%z*uNWiKxWKs@-oYy8ukRW7I?nGk
zs%nO^$m-Zbu`Jj902gtUo`NFGb$7yAJmg*tyYQ^LDF5%?nb6B;hBT=@TjVvV&(%eE
z-CY9Z==D6Asb2kfQR573+VmUT?`do7oSB^+yiGr=zsv9EHu)!M<JEVtc@OW;d<I7{
zyA1=VCRm!a5WHBG<%hypS5^Sv3{K8_6b553{|l$lXW&duake)jQMCn*ME@5o%Y7a;
z<AvNca074Vu7$<;NL~p{U@)&5KEt2pEro0NM&2PP#P#`>&eQq#!EHQ7&m4Rue+7IE
ze@FNPUe8|!ui|{~GWb3Ey~}GixDpZ0Qp6UD1`sliD&^Rd#ve%I52f*#<N?CQ5waS<
z5$}EQ6Fl#&g$i6?_QNC&nGaFIzcn9$Qk*u|WEavZSZyyP`m?xh(QDpL-Y3p&hEm>z
zGbHmk+J59)17o<>7od!u^Z6G<+zA^8DJ|;9Nnb5h(OdBE`LH#XSzK<QzvR2%jlEbh
znL&cx{^uRBo2xGw6#wEnKh5aYx=O0k`m$E4+{rROdA(RxNj3A7`(Z4$zT7b{dV>?p
z<7q-j3%pmTuofuEWV{5SVWlV7_*3r5SfKd5n`Stn8Knf%RKw)-8gGVDXCirWDp2CF
z(>a>qJ89n0XESS3{38-4q6MB7s$B~l5h|hujtkYU1->CvL<{_bQ0-daM?yt(RPaB9
zYt;gmb5$MP{ZTE02c*;yEifolyB63iR74BhFI2l0c-p0``qNtw(S+me#iW|jD;aMQ
zZf8<$Bt;1nOQWw_CD);v({lAG_iVwi-pXUCbW{YVSs=v~-d<VZrIugX0@&*$`u55&
zA5AYtyZ|gvTCr!@d`9W;oU}aOS1&<$1uP!clIb_tEK5WyAeFY%C}|g^4KIN<u%#79
za2<27Qwt2HsR=%nQj<cyo}#3Nms6CKFM2h_N$E;bYb#aTm!f3z^rWa>hNqI0(zn^~
z(lkzDNg&vzqDe(rNGp56Ic)6Q*r%w(GV}^vWzkAk@QKmEJ)IZ=|HM@M#LzO5g9Ad*
zly!qxhqXY_C+qNV()vnDQJ^@CE2dnIi)OPHnC7yXTt-<#96)o*Iw;mHT40)WOKL(%
z;}(^ix)i`FXM`Pfa_{J&Etwe5`#&IIwrhbSqS$K;YZ;sqvd7xAn|UOqvf>DqTwzDD
zW->)%71`FYZC{4Uj=ysd)`a725GNkbkJ{_%qy<<)mhz$CXKh+(ffY>g-5{F9q8Zi#
z#lrZ3QU~Z}b*jWQtH=1lyBw99FQhLs9OSE*-T#s4k3_Rods(A^`%H&i^21uV4J?CJ
z-M}!IqV_P{7Zom~_c44{s8*GnQ!;o+f64QZK>ss%Xm0S3-pc{LNBwqdDIlcu`|S2_
zl4ge%__<I!wZJVh$BtwGDI0VsEt&4Yb59g{dRX}d8m)+?q}#<wNDJJ>l;hz3Vcjow
zNxlEumTokjbc0O3MaSX8ly88!coZ3&NGS>&!=G*SeW#GmH@O{La<~=n;iPKFr)(|P
z4fgXd?p<FnkcD$4tHXJ@q(B4MRg;SwYjQA9vls?xWI|i)xte!@zVqs9O`mLaYtgJ$
zOg}?`s=&jwCVfSpto8fk!!52rk81jXa;P?(BArgWRa>;|6XJ4+mG7}KRt`|VP)*M^
zVO8B@+4J~?Vxj8B!*%B4J#4#$zj6<<_=j;@L&^UlvBEeH>I8jLr?*o$RcHD}iLz!Q
zFXZQ}at5>OP25=T&OT$adkw4VP2ZcOw~*}Kvq|5<E|R{_Qp1+PB^)KMm&j|i&F;_m
z0oi@bvzg$PUCFb#j?iF6|H;x`W<~lR=C5(ID_ogb;;lIzvBh$d+~T*}_)O*>u<`dK
zcpPfT_T>?_>h(6AW>$MN(W!g!tp?M#G_L7T-Ta?}h3a9PCh02nKW_8?Rb2Lz>8oa2
z`}#eJ^(1ZNxZ<&cK?o0%bO(FBY4f}XfBBRd-N({PHtB&lKX=DmA>USx7f5ckZzei*
z<SzQh;{4pK2je{8V}Wenj|p2oGr4YU?DG_M1!xy0G*!el!!aBs=`UD%&?b%H2LaRb
zEB0K7(}BK>-B0g&Cf3zhYvB29%jp%K+UEDj$=Hp)V7aG_*QN@af|XE(C+WF2_F+&1
z4B%8#x#3=e1)&XO+Z3vVTX>S5uj7aGd>4J;O3!BNw4rttcZAD5#f^#4c^swDXWvSU
JCUGjb<iA7~blv~}

delta 4260
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
E7uL^XjsO4v

diff --git a/xv6-user/_strace b/xv6-user/_strace
index 58d6e8175a5bf9b017e5844484b183e458ec68ed..77d53e5e04b9c20fb94fb11fa7a0b91f81f9ee98 100755
GIT binary patch
delta 4346
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

delta 4294
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
MpXhynJ%L&O104l<8~^|S

diff --git a/xv6-user/_test b/xv6-user/_test
index 553cd72ac200b3989ab6d099d1a916000ddb90ce..914c5060bb45af75d41f1993d70b005d7e5c8486 100755
GIT binary patch
delta 4438
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
VRr^cYtkEyv`>|^I0Zhi0{1<G1eS-i1

delta 4413
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
Pdkx+;>SYRKZ25lyN!fS8

diff --git a/xv6-user/_usertests b/xv6-user/_usertests
index 15fd0c07e18457bb4b623369dde7d15589f9f2b2..7dad61f16fd7c500382d3be1a3a3ddf0eb72e303 100755
GIT binary patch
delta 17397
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
SEW!2?>lge^sPq41_5TMBwQ^Gc

delta 17228
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
TKh)+4vHE=}p41Ni!Rr4HMhjyX

diff --git a/xv6-user/_wc b/xv6-user/_wc
index 97d1a0894dd6475139dc76ff60e5ac136e0a381d..73e82bdfe7555f001b8139320a2bb47b1a3c08b6 100755
GIT binary patch
delta 4472
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

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

diff --git a/xv6-user/_xargs b/xv6-user/_xargs
index cf08c86859fbbf7dad585c8d244ce3a3a1ff7a58..1e84a35e1ce11a468bbc3e1820a85738a0cade91 100755
GIT binary patch
delta 4333
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

delta 4241
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
F^1n{LdprOD

diff --git a/xv6-user/cat.asm b/xv6-user/cat.asm
index 77fc17d..93a83b9 100644
--- a/xv6-user/cat.asm
+++ b/xv6-user/cat.asm
@@ -23,7 +23,7 @@ cat(int fd)
 
   while((n = read(fd, buf, sizeof(buf))) > 0) {
   10:	00001917          	auipc	s2,0x1
-  14:	9f090913          	addi	s2,s2,-1552 # a00 <buf>
+  14:	a0090913          	addi	s2,s2,-1536 # a10 <buf>
   18:	20000613          	li	a2,512
   1c:	85ca                	mv	a1,s2
   1e:	854e                	mv	a0,s3
@@ -40,10 +40,10 @@ cat(int fd)
   3c:	fc950ee3          	beq	a0,s1,18 <cat+0x18>
       fprintf(2, "cat: write error\n");
   40:	00001597          	auipc	a1,0x1
-  44:	90058593          	addi	a1,a1,-1792 # 940 <malloc+0xea>
+  44:	91058593          	addi	a1,a1,-1776 # 950 <malloc+0xf0>
   48:	4509                	li	a0,2
   4a:	00000097          	auipc	ra,0x0
-  4e:	726080e7          	jalr	1830(ra) # 770 <fprintf>
+  4e:	730080e7          	jalr	1840(ra) # 77a <fprintf>
       exit(1);
   52:	4505                	li	a0,1
   54:	00000097          	auipc	ra,0x0
@@ -65,10 +65,10 @@ cat(int fd)
   6c:	8082                	ret
     fprintf(2, "cat: read error\n");
   6e:	00001597          	auipc	a1,0x1
-  72:	8ea58593          	addi	a1,a1,-1814 # 958 <malloc+0x102>
+  72:	8fa58593          	addi	a1,a1,-1798 # 968 <malloc+0x108>
   76:	4509                	li	a0,2
   78:	00000097          	auipc	ra,0x0
-  7c:	6f8080e7          	jalr	1784(ra) # 770 <fprintf>
+  7c:	702080e7          	jalr	1794(ra) # 77a <fprintf>
     exit(1);
   80:	4505                	li	a0,1
   82:	00000097          	auipc	ra,0x0
@@ -139,10 +139,10 @@ main(int argc, char *argv[])
       fprintf(2, "cat: cannot open %s\n", argv[i]);
   fe:	00093603          	ld	a2,0(s2)
  102:	00001597          	auipc	a1,0x1
- 106:	86e58593          	addi	a1,a1,-1938 # 970 <malloc+0x11a>
+ 106:	87e58593          	addi	a1,a1,-1922 # 980 <malloc+0x120>
  10a:	4509                	li	a0,2
  10c:	00000097          	auipc	ra,0x0
- 110:	664080e7          	jalr	1636(ra) # 770 <fprintf>
+ 110:	66e080e7          	jalr	1646(ra) # 77a <fprintf>
       exit(1);
  114:	4505                	li	a0,1
  116:	00000097          	auipc	ra,0x0
@@ -904,637 +904,647 @@ uname:
  ret
  4c4:	8082                	ret
 
-00000000000004c6 <putc>:
+00000000000004c6 <times>:
+.global times
+times:
+ li a7, SYS_times
+ 4c6:	09900893          	li	a7,153
+ ecall
+ 4ca:	00000073          	ecall
+ ret
+ 4ce:	8082                	ret
+
+00000000000004d0 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 4c6:	1101                	addi	sp,sp,-32
- 4c8:	ec06                	sd	ra,24(sp)
- 4ca:	e822                	sd	s0,16(sp)
- 4cc:	1000                	addi	s0,sp,32
- 4ce:	feb407a3          	sb	a1,-17(s0)
+ 4d0:	1101                	addi	sp,sp,-32
+ 4d2:	ec06                	sd	ra,24(sp)
+ 4d4:	e822                	sd	s0,16(sp)
+ 4d6:	1000                	addi	s0,sp,32
+ 4d8:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 4d2:	4605                	li	a2,1
- 4d4:	fef40593          	addi	a1,s0,-17
- 4d8:	00000097          	auipc	ra,0x0
- 4dc:	f24080e7          	jalr	-220(ra) # 3fc <write>
+ 4dc:	4605                	li	a2,1
+ 4de:	fef40593          	addi	a1,s0,-17
+ 4e2:	00000097          	auipc	ra,0x0
+ 4e6:	f1a080e7          	jalr	-230(ra) # 3fc <write>
 }
- 4e0:	60e2                	ld	ra,24(sp)
- 4e2:	6442                	ld	s0,16(sp)
- 4e4:	6105                	addi	sp,sp,32
- 4e6:	8082                	ret
+ 4ea:	60e2                	ld	ra,24(sp)
+ 4ec:	6442                	ld	s0,16(sp)
+ 4ee:	6105                	addi	sp,sp,32
+ 4f0:	8082                	ret
 
-00000000000004e8 <printint>:
+00000000000004f2 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 4e8:	7139                	addi	sp,sp,-64
- 4ea:	fc06                	sd	ra,56(sp)
- 4ec:	f822                	sd	s0,48(sp)
- 4ee:	f426                	sd	s1,40(sp)
- 4f0:	f04a                	sd	s2,32(sp)
- 4f2:	ec4e                	sd	s3,24(sp)
- 4f4:	0080                	addi	s0,sp,64
- 4f6:	84aa                	mv	s1,a0
+ 4f2:	7139                	addi	sp,sp,-64
+ 4f4:	fc06                	sd	ra,56(sp)
+ 4f6:	f822                	sd	s0,48(sp)
+ 4f8:	f426                	sd	s1,40(sp)
+ 4fa:	f04a                	sd	s2,32(sp)
+ 4fc:	ec4e                	sd	s3,24(sp)
+ 4fe:	0080                	addi	s0,sp,64
+ 500:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 4f8:	c299                	beqz	a3,4fe <printint+0x16>
- 4fa:	0805c863          	bltz	a1,58a <printint+0xa2>
+ 502:	c299                	beqz	a3,508 <printint+0x16>
+ 504:	0805c863          	bltz	a1,594 <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 4fe:	2581                	sext.w	a1,a1
+ 508:	2581                	sext.w	a1,a1
   neg = 0;
- 500:	4881                	li	a7,0
+ 50a:	4881                	li	a7,0
   }
 
   i = 0;
- 502:	fc040993          	addi	s3,s0,-64
+ 50c:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 506:	86ce                	mv	a3,s3
+ 510:	86ce                	mv	a3,s3
   i = 0;
- 508:	4701                	li	a4,0
+ 512:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 50a:	2601                	sext.w	a2,a2
- 50c:	00000517          	auipc	a0,0x0
- 510:	4dc50513          	addi	a0,a0,1244 # 9e8 <digits>
- 514:	883a                	mv	a6,a4
- 516:	2705                	addiw	a4,a4,1
- 518:	02c5f7bb          	remuw	a5,a1,a2
- 51c:	1782                	slli	a5,a5,0x20
- 51e:	9381                	srli	a5,a5,0x20
- 520:	97aa                	add	a5,a5,a0
- 522:	0007c783          	lbu	a5,0(a5)
- 526:	00f68023          	sb	a5,0(a3)
+ 514:	2601                	sext.w	a2,a2
+ 516:	00000517          	auipc	a0,0x0
+ 51a:	4e250513          	addi	a0,a0,1250 # 9f8 <digits>
+ 51e:	883a                	mv	a6,a4
+ 520:	2705                	addiw	a4,a4,1
+ 522:	02c5f7bb          	remuw	a5,a1,a2
+ 526:	1782                	slli	a5,a5,0x20
+ 528:	9381                	srli	a5,a5,0x20
+ 52a:	97aa                	add	a5,a5,a0
+ 52c:	0007c783          	lbu	a5,0(a5)
+ 530:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 52a:	0005879b          	sext.w	a5,a1
- 52e:	02c5d5bb          	divuw	a1,a1,a2
- 532:	0685                	addi	a3,a3,1
- 534:	fec7f0e3          	bgeu	a5,a2,514 <printint+0x2c>
+ 534:	0005879b          	sext.w	a5,a1
+ 538:	02c5d5bb          	divuw	a1,a1,a2
+ 53c:	0685                	addi	a3,a3,1
+ 53e:	fec7f0e3          	bgeu	a5,a2,51e <printint+0x2c>
   if(neg)
- 538:	00088c63          	beqz	a7,550 <printint+0x68>
+ 542:	00088c63          	beqz	a7,55a <printint+0x68>
     buf[i++] = '-';
- 53c:	fd070793          	addi	a5,a4,-48
- 540:	00878733          	add	a4,a5,s0
- 544:	02d00793          	li	a5,45
- 548:	fef70823          	sb	a5,-16(a4)
- 54c:	0028071b          	addiw	a4,a6,2
+ 546:	fd070793          	addi	a5,a4,-48
+ 54a:	00878733          	add	a4,a5,s0
+ 54e:	02d00793          	li	a5,45
+ 552:	fef70823          	sb	a5,-16(a4)
+ 556:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 550:	02e05663          	blez	a4,57c <printint+0x94>
- 554:	fc040913          	addi	s2,s0,-64
- 558:	993a                	add	s2,s2,a4
- 55a:	19fd                	addi	s3,s3,-1
- 55c:	99ba                	add	s3,s3,a4
- 55e:	377d                	addiw	a4,a4,-1
- 560:	1702                	slli	a4,a4,0x20
- 562:	9301                	srli	a4,a4,0x20
- 564:	40e989b3          	sub	s3,s3,a4
+ 55a:	02e05663          	blez	a4,586 <printint+0x94>
+ 55e:	fc040913          	addi	s2,s0,-64
+ 562:	993a                	add	s2,s2,a4
+ 564:	19fd                	addi	s3,s3,-1
+ 566:	99ba                	add	s3,s3,a4
+ 568:	377d                	addiw	a4,a4,-1
+ 56a:	1702                	slli	a4,a4,0x20
+ 56c:	9301                	srli	a4,a4,0x20
+ 56e:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 568:	fff94583          	lbu	a1,-1(s2)
- 56c:	8526                	mv	a0,s1
- 56e:	00000097          	auipc	ra,0x0
- 572:	f58080e7          	jalr	-168(ra) # 4c6 <putc>
+ 572:	fff94583          	lbu	a1,-1(s2)
+ 576:	8526                	mv	a0,s1
+ 578:	00000097          	auipc	ra,0x0
+ 57c:	f58080e7          	jalr	-168(ra) # 4d0 <putc>
   while(--i >= 0)
- 576:	197d                	addi	s2,s2,-1
- 578:	ff3918e3          	bne	s2,s3,568 <printint+0x80>
+ 580:	197d                	addi	s2,s2,-1
+ 582:	ff3918e3          	bne	s2,s3,572 <printint+0x80>
 }
- 57c:	70e2                	ld	ra,56(sp)
- 57e:	7442                	ld	s0,48(sp)
- 580:	74a2                	ld	s1,40(sp)
- 582:	7902                	ld	s2,32(sp)
- 584:	69e2                	ld	s3,24(sp)
- 586:	6121                	addi	sp,sp,64
- 588:	8082                	ret
+ 586:	70e2                	ld	ra,56(sp)
+ 588:	7442                	ld	s0,48(sp)
+ 58a:	74a2                	ld	s1,40(sp)
+ 58c:	7902                	ld	s2,32(sp)
+ 58e:	69e2                	ld	s3,24(sp)
+ 590:	6121                	addi	sp,sp,64
+ 592:	8082                	ret
     x = -xx;
- 58a:	40b005bb          	negw	a1,a1
+ 594:	40b005bb          	negw	a1,a1
     neg = 1;
- 58e:	4885                	li	a7,1
+ 598:	4885                	li	a7,1
     x = -xx;
- 590:	bf8d                	j	502 <printint+0x1a>
+ 59a:	bf8d                	j	50c <printint+0x1a>
 
-0000000000000592 <vprintf>:
+000000000000059c <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 592:	7119                	addi	sp,sp,-128
- 594:	fc86                	sd	ra,120(sp)
- 596:	f8a2                	sd	s0,112(sp)
- 598:	f4a6                	sd	s1,104(sp)
- 59a:	f0ca                	sd	s2,96(sp)
- 59c:	ecce                	sd	s3,88(sp)
- 59e:	e8d2                	sd	s4,80(sp)
- 5a0:	e4d6                	sd	s5,72(sp)
- 5a2:	e0da                	sd	s6,64(sp)
- 5a4:	fc5e                	sd	s7,56(sp)
- 5a6:	f862                	sd	s8,48(sp)
- 5a8:	f466                	sd	s9,40(sp)
- 5aa:	f06a                	sd	s10,32(sp)
- 5ac:	ec6e                	sd	s11,24(sp)
- 5ae:	0100                	addi	s0,sp,128
+ 59c:	7119                	addi	sp,sp,-128
+ 59e:	fc86                	sd	ra,120(sp)
+ 5a0:	f8a2                	sd	s0,112(sp)
+ 5a2:	f4a6                	sd	s1,104(sp)
+ 5a4:	f0ca                	sd	s2,96(sp)
+ 5a6:	ecce                	sd	s3,88(sp)
+ 5a8:	e8d2                	sd	s4,80(sp)
+ 5aa:	e4d6                	sd	s5,72(sp)
+ 5ac:	e0da                	sd	s6,64(sp)
+ 5ae:	fc5e                	sd	s7,56(sp)
+ 5b0:	f862                	sd	s8,48(sp)
+ 5b2:	f466                	sd	s9,40(sp)
+ 5b4:	f06a                	sd	s10,32(sp)
+ 5b6:	ec6e                	sd	s11,24(sp)
+ 5b8:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 5b0:	0005c903          	lbu	s2,0(a1)
- 5b4:	18090f63          	beqz	s2,752 <vprintf+0x1c0>
- 5b8:	8aaa                	mv	s5,a0
- 5ba:	8b32                	mv	s6,a2
- 5bc:	00158493          	addi	s1,a1,1
+ 5ba:	0005c903          	lbu	s2,0(a1)
+ 5be:	18090f63          	beqz	s2,75c <vprintf+0x1c0>
+ 5c2:	8aaa                	mv	s5,a0
+ 5c4:	8b32                	mv	s6,a2
+ 5c6:	00158493          	addi	s1,a1,1
   state = 0;
- 5c0:	4981                	li	s3,0
+ 5ca:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 5c2:	02500a13          	li	s4,37
- 5c6:	4c55                	li	s8,21
- 5c8:	00000c97          	auipc	s9,0x0
- 5cc:	3c8c8c93          	addi	s9,s9,968 # 990 <malloc+0x13a>
+ 5cc:	02500a13          	li	s4,37
+ 5d0:	4c55                	li	s8,21
+ 5d2:	00000c97          	auipc	s9,0x0
+ 5d6:	3cec8c93          	addi	s9,s9,974 # 9a0 <malloc+0x140>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 5d0:	02800d93          	li	s11,40
+ 5da:	02800d93          	li	s11,40
   putc(fd, 'x');
- 5d4:	4d41                	li	s10,16
+ 5de:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 5d6:	00000b97          	auipc	s7,0x0
- 5da:	412b8b93          	addi	s7,s7,1042 # 9e8 <digits>
- 5de:	a839                	j	5fc <vprintf+0x6a>
+ 5e0:	00000b97          	auipc	s7,0x0
+ 5e4:	418b8b93          	addi	s7,s7,1048 # 9f8 <digits>
+ 5e8:	a839                	j	606 <vprintf+0x6a>
         putc(fd, c);
- 5e0:	85ca                	mv	a1,s2
- 5e2:	8556                	mv	a0,s5
- 5e4:	00000097          	auipc	ra,0x0
- 5e8:	ee2080e7          	jalr	-286(ra) # 4c6 <putc>
- 5ec:	a019                	j	5f2 <vprintf+0x60>
+ 5ea:	85ca                	mv	a1,s2
+ 5ec:	8556                	mv	a0,s5
+ 5ee:	00000097          	auipc	ra,0x0
+ 5f2:	ee2080e7          	jalr	-286(ra) # 4d0 <putc>
+ 5f6:	a019                	j	5fc <vprintf+0x60>
     } else if(state == '%'){
- 5ee:	01498d63          	beq	s3,s4,608 <vprintf+0x76>
+ 5f8:	01498d63          	beq	s3,s4,612 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 5f2:	0485                	addi	s1,s1,1
- 5f4:	fff4c903          	lbu	s2,-1(s1)
- 5f8:	14090d63          	beqz	s2,752 <vprintf+0x1c0>
+ 5fc:	0485                	addi	s1,s1,1
+ 5fe:	fff4c903          	lbu	s2,-1(s1)
+ 602:	14090d63          	beqz	s2,75c <vprintf+0x1c0>
     if(state == 0){
- 5fc:	fe0999e3          	bnez	s3,5ee <vprintf+0x5c>
+ 606:	fe0999e3          	bnez	s3,5f8 <vprintf+0x5c>
       if(c == '%'){
- 600:	ff4910e3          	bne	s2,s4,5e0 <vprintf+0x4e>
+ 60a:	ff4910e3          	bne	s2,s4,5ea <vprintf+0x4e>
         state = '%';
- 604:	89d2                	mv	s3,s4
- 606:	b7f5                	j	5f2 <vprintf+0x60>
+ 60e:	89d2                	mv	s3,s4
+ 610:	b7f5                	j	5fc <vprintf+0x60>
       if(c == 'd'){
- 608:	11490c63          	beq	s2,s4,720 <vprintf+0x18e>
- 60c:	f9d9079b          	addiw	a5,s2,-99
- 610:	0ff7f793          	zext.b	a5,a5
- 614:	10fc6e63          	bltu	s8,a5,730 <vprintf+0x19e>
- 618:	f9d9079b          	addiw	a5,s2,-99
- 61c:	0ff7f713          	zext.b	a4,a5
- 620:	10ec6863          	bltu	s8,a4,730 <vprintf+0x19e>
- 624:	00271793          	slli	a5,a4,0x2
- 628:	97e6                	add	a5,a5,s9
- 62a:	439c                	lw	a5,0(a5)
- 62c:	97e6                	add	a5,a5,s9
- 62e:	8782                	jr	a5
+ 612:	11490c63          	beq	s2,s4,72a <vprintf+0x18e>
+ 616:	f9d9079b          	addiw	a5,s2,-99
+ 61a:	0ff7f793          	zext.b	a5,a5
+ 61e:	10fc6e63          	bltu	s8,a5,73a <vprintf+0x19e>
+ 622:	f9d9079b          	addiw	a5,s2,-99
+ 626:	0ff7f713          	zext.b	a4,a5
+ 62a:	10ec6863          	bltu	s8,a4,73a <vprintf+0x19e>
+ 62e:	00271793          	slli	a5,a4,0x2
+ 632:	97e6                	add	a5,a5,s9
+ 634:	439c                	lw	a5,0(a5)
+ 636:	97e6                	add	a5,a5,s9
+ 638:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 630:	008b0913          	addi	s2,s6,8
- 634:	4685                	li	a3,1
- 636:	4629                	li	a2,10
- 638:	000b2583          	lw	a1,0(s6)
- 63c:	8556                	mv	a0,s5
- 63e:	00000097          	auipc	ra,0x0
- 642:	eaa080e7          	jalr	-342(ra) # 4e8 <printint>
- 646:	8b4a                	mv	s6,s2
+ 63a:	008b0913          	addi	s2,s6,8
+ 63e:	4685                	li	a3,1
+ 640:	4629                	li	a2,10
+ 642:	000b2583          	lw	a1,0(s6)
+ 646:	8556                	mv	a0,s5
+ 648:	00000097          	auipc	ra,0x0
+ 64c:	eaa080e7          	jalr	-342(ra) # 4f2 <printint>
+ 650:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 648:	4981                	li	s3,0
- 64a:	b765                	j	5f2 <vprintf+0x60>
+ 652:	4981                	li	s3,0
+ 654:	b765                	j	5fc <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 64c:	008b0913          	addi	s2,s6,8
- 650:	4681                	li	a3,0
- 652:	4629                	li	a2,10
- 654:	000b2583          	lw	a1,0(s6)
- 658:	8556                	mv	a0,s5
- 65a:	00000097          	auipc	ra,0x0
- 65e:	e8e080e7          	jalr	-370(ra) # 4e8 <printint>
- 662:	8b4a                	mv	s6,s2
+ 656:	008b0913          	addi	s2,s6,8
+ 65a:	4681                	li	a3,0
+ 65c:	4629                	li	a2,10
+ 65e:	000b2583          	lw	a1,0(s6)
+ 662:	8556                	mv	a0,s5
+ 664:	00000097          	auipc	ra,0x0
+ 668:	e8e080e7          	jalr	-370(ra) # 4f2 <printint>
+ 66c:	8b4a                	mv	s6,s2
       state = 0;
- 664:	4981                	li	s3,0
- 666:	b771                	j	5f2 <vprintf+0x60>
+ 66e:	4981                	li	s3,0
+ 670:	b771                	j	5fc <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 668:	008b0913          	addi	s2,s6,8
- 66c:	4681                	li	a3,0
- 66e:	866a                	mv	a2,s10
- 670:	000b2583          	lw	a1,0(s6)
- 674:	8556                	mv	a0,s5
- 676:	00000097          	auipc	ra,0x0
- 67a:	e72080e7          	jalr	-398(ra) # 4e8 <printint>
- 67e:	8b4a                	mv	s6,s2
+ 672:	008b0913          	addi	s2,s6,8
+ 676:	4681                	li	a3,0
+ 678:	866a                	mv	a2,s10
+ 67a:	000b2583          	lw	a1,0(s6)
+ 67e:	8556                	mv	a0,s5
+ 680:	00000097          	auipc	ra,0x0
+ 684:	e72080e7          	jalr	-398(ra) # 4f2 <printint>
+ 688:	8b4a                	mv	s6,s2
       state = 0;
- 680:	4981                	li	s3,0
- 682:	bf85                	j	5f2 <vprintf+0x60>
+ 68a:	4981                	li	s3,0
+ 68c:	bf85                	j	5fc <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 684:	008b0793          	addi	a5,s6,8
- 688:	f8f43423          	sd	a5,-120(s0)
- 68c:	000b3983          	ld	s3,0(s6)
+ 68e:	008b0793          	addi	a5,s6,8
+ 692:	f8f43423          	sd	a5,-120(s0)
+ 696:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 690:	03000593          	li	a1,48
- 694:	8556                	mv	a0,s5
- 696:	00000097          	auipc	ra,0x0
- 69a:	e30080e7          	jalr	-464(ra) # 4c6 <putc>
+ 69a:	03000593          	li	a1,48
+ 69e:	8556                	mv	a0,s5
+ 6a0:	00000097          	auipc	ra,0x0
+ 6a4:	e30080e7          	jalr	-464(ra) # 4d0 <putc>
   putc(fd, 'x');
- 69e:	07800593          	li	a1,120
- 6a2:	8556                	mv	a0,s5
- 6a4:	00000097          	auipc	ra,0x0
- 6a8:	e22080e7          	jalr	-478(ra) # 4c6 <putc>
- 6ac:	896a                	mv	s2,s10
+ 6a8:	07800593          	li	a1,120
+ 6ac:	8556                	mv	a0,s5
+ 6ae:	00000097          	auipc	ra,0x0
+ 6b2:	e22080e7          	jalr	-478(ra) # 4d0 <putc>
+ 6b6:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 6ae:	03c9d793          	srli	a5,s3,0x3c
- 6b2:	97de                	add	a5,a5,s7
- 6b4:	0007c583          	lbu	a1,0(a5)
- 6b8:	8556                	mv	a0,s5
- 6ba:	00000097          	auipc	ra,0x0
- 6be:	e0c080e7          	jalr	-500(ra) # 4c6 <putc>
+ 6b8:	03c9d793          	srli	a5,s3,0x3c
+ 6bc:	97de                	add	a5,a5,s7
+ 6be:	0007c583          	lbu	a1,0(a5)
+ 6c2:	8556                	mv	a0,s5
+ 6c4:	00000097          	auipc	ra,0x0
+ 6c8:	e0c080e7          	jalr	-500(ra) # 4d0 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 6c2:	0992                	slli	s3,s3,0x4
- 6c4:	397d                	addiw	s2,s2,-1
- 6c6:	fe0914e3          	bnez	s2,6ae <vprintf+0x11c>
+ 6cc:	0992                	slli	s3,s3,0x4
+ 6ce:	397d                	addiw	s2,s2,-1
+ 6d0:	fe0914e3          	bnez	s2,6b8 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 6ca:	f8843b03          	ld	s6,-120(s0)
+ 6d4:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 6ce:	4981                	li	s3,0
- 6d0:	b70d                	j	5f2 <vprintf+0x60>
+ 6d8:	4981                	li	s3,0
+ 6da:	b70d                	j	5fc <vprintf+0x60>
         s = va_arg(ap, char*);
- 6d2:	008b0913          	addi	s2,s6,8
- 6d6:	000b3983          	ld	s3,0(s6)
+ 6dc:	008b0913          	addi	s2,s6,8
+ 6e0:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 6da:	02098163          	beqz	s3,6fc <vprintf+0x16a>
+ 6e4:	02098163          	beqz	s3,706 <vprintf+0x16a>
         while(*s != 0){
- 6de:	0009c583          	lbu	a1,0(s3)
- 6e2:	c5ad                	beqz	a1,74c <vprintf+0x1ba>
+ 6e8:	0009c583          	lbu	a1,0(s3)
+ 6ec:	c5ad                	beqz	a1,756 <vprintf+0x1ba>
           putc(fd, *s);
- 6e4:	8556                	mv	a0,s5
- 6e6:	00000097          	auipc	ra,0x0
- 6ea:	de0080e7          	jalr	-544(ra) # 4c6 <putc>
+ 6ee:	8556                	mv	a0,s5
+ 6f0:	00000097          	auipc	ra,0x0
+ 6f4:	de0080e7          	jalr	-544(ra) # 4d0 <putc>
           s++;
- 6ee:	0985                	addi	s3,s3,1
+ 6f8:	0985                	addi	s3,s3,1
         while(*s != 0){
- 6f0:	0009c583          	lbu	a1,0(s3)
- 6f4:	f9e5                	bnez	a1,6e4 <vprintf+0x152>
+ 6fa:	0009c583          	lbu	a1,0(s3)
+ 6fe:	f9e5                	bnez	a1,6ee <vprintf+0x152>
         s = va_arg(ap, char*);
- 6f6:	8b4a                	mv	s6,s2
+ 700:	8b4a                	mv	s6,s2
       state = 0;
- 6f8:	4981                	li	s3,0
- 6fa:	bde5                	j	5f2 <vprintf+0x60>
+ 702:	4981                	li	s3,0
+ 704:	bde5                	j	5fc <vprintf+0x60>
           s = "(null)";
- 6fc:	00000997          	auipc	s3,0x0
- 700:	28c98993          	addi	s3,s3,652 # 988 <malloc+0x132>
+ 706:	00000997          	auipc	s3,0x0
+ 70a:	29298993          	addi	s3,s3,658 # 998 <malloc+0x138>
         while(*s != 0){
- 704:	85ee                	mv	a1,s11
- 706:	bff9                	j	6e4 <vprintf+0x152>
+ 70e:	85ee                	mv	a1,s11
+ 710:	bff9                	j	6ee <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 708:	008b0913          	addi	s2,s6,8
- 70c:	000b4583          	lbu	a1,0(s6)
- 710:	8556                	mv	a0,s5
- 712:	00000097          	auipc	ra,0x0
- 716:	db4080e7          	jalr	-588(ra) # 4c6 <putc>
- 71a:	8b4a                	mv	s6,s2
+ 712:	008b0913          	addi	s2,s6,8
+ 716:	000b4583          	lbu	a1,0(s6)
+ 71a:	8556                	mv	a0,s5
+ 71c:	00000097          	auipc	ra,0x0
+ 720:	db4080e7          	jalr	-588(ra) # 4d0 <putc>
+ 724:	8b4a                	mv	s6,s2
       state = 0;
- 71c:	4981                	li	s3,0
- 71e:	bdd1                	j	5f2 <vprintf+0x60>
+ 726:	4981                	li	s3,0
+ 728:	bdd1                	j	5fc <vprintf+0x60>
         putc(fd, c);
- 720:	85d2                	mv	a1,s4
- 722:	8556                	mv	a0,s5
- 724:	00000097          	auipc	ra,0x0
- 728:	da2080e7          	jalr	-606(ra) # 4c6 <putc>
+ 72a:	85d2                	mv	a1,s4
+ 72c:	8556                	mv	a0,s5
+ 72e:	00000097          	auipc	ra,0x0
+ 732:	da2080e7          	jalr	-606(ra) # 4d0 <putc>
       state = 0;
- 72c:	4981                	li	s3,0
- 72e:	b5d1                	j	5f2 <vprintf+0x60>
+ 736:	4981                	li	s3,0
+ 738:	b5d1                	j	5fc <vprintf+0x60>
         putc(fd, '%');
- 730:	85d2                	mv	a1,s4
- 732:	8556                	mv	a0,s5
- 734:	00000097          	auipc	ra,0x0
- 738:	d92080e7          	jalr	-622(ra) # 4c6 <putc>
+ 73a:	85d2                	mv	a1,s4
+ 73c:	8556                	mv	a0,s5
+ 73e:	00000097          	auipc	ra,0x0
+ 742:	d92080e7          	jalr	-622(ra) # 4d0 <putc>
         putc(fd, c);
- 73c:	85ca                	mv	a1,s2
- 73e:	8556                	mv	a0,s5
- 740:	00000097          	auipc	ra,0x0
- 744:	d86080e7          	jalr	-634(ra) # 4c6 <putc>
+ 746:	85ca                	mv	a1,s2
+ 748:	8556                	mv	a0,s5
+ 74a:	00000097          	auipc	ra,0x0
+ 74e:	d86080e7          	jalr	-634(ra) # 4d0 <putc>
       state = 0;
- 748:	4981                	li	s3,0
- 74a:	b565                	j	5f2 <vprintf+0x60>
+ 752:	4981                	li	s3,0
+ 754:	b565                	j	5fc <vprintf+0x60>
         s = va_arg(ap, char*);
- 74c:	8b4a                	mv	s6,s2
+ 756:	8b4a                	mv	s6,s2
       state = 0;
- 74e:	4981                	li	s3,0
- 750:	b54d                	j	5f2 <vprintf+0x60>
+ 758:	4981                	li	s3,0
+ 75a:	b54d                	j	5fc <vprintf+0x60>
     }
   }
 }
- 752:	70e6                	ld	ra,120(sp)
- 754:	7446                	ld	s0,112(sp)
- 756:	74a6                	ld	s1,104(sp)
- 758:	7906                	ld	s2,96(sp)
- 75a:	69e6                	ld	s3,88(sp)
- 75c:	6a46                	ld	s4,80(sp)
- 75e:	6aa6                	ld	s5,72(sp)
- 760:	6b06                	ld	s6,64(sp)
- 762:	7be2                	ld	s7,56(sp)
- 764:	7c42                	ld	s8,48(sp)
- 766:	7ca2                	ld	s9,40(sp)
- 768:	7d02                	ld	s10,32(sp)
- 76a:	6de2                	ld	s11,24(sp)
- 76c:	6109                	addi	sp,sp,128
- 76e:	8082                	ret
-
-0000000000000770 <fprintf>:
+ 75c:	70e6                	ld	ra,120(sp)
+ 75e:	7446                	ld	s0,112(sp)
+ 760:	74a6                	ld	s1,104(sp)
+ 762:	7906                	ld	s2,96(sp)
+ 764:	69e6                	ld	s3,88(sp)
+ 766:	6a46                	ld	s4,80(sp)
+ 768:	6aa6                	ld	s5,72(sp)
+ 76a:	6b06                	ld	s6,64(sp)
+ 76c:	7be2                	ld	s7,56(sp)
+ 76e:	7c42                	ld	s8,48(sp)
+ 770:	7ca2                	ld	s9,40(sp)
+ 772:	7d02                	ld	s10,32(sp)
+ 774:	6de2                	ld	s11,24(sp)
+ 776:	6109                	addi	sp,sp,128
+ 778:	8082                	ret
+
+000000000000077a <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 770:	715d                	addi	sp,sp,-80
- 772:	ec06                	sd	ra,24(sp)
- 774:	e822                	sd	s0,16(sp)
- 776:	1000                	addi	s0,sp,32
- 778:	e010                	sd	a2,0(s0)
- 77a:	e414                	sd	a3,8(s0)
- 77c:	e818                	sd	a4,16(s0)
- 77e:	ec1c                	sd	a5,24(s0)
- 780:	03043023          	sd	a6,32(s0)
- 784:	03143423          	sd	a7,40(s0)
+ 77a:	715d                	addi	sp,sp,-80
+ 77c:	ec06                	sd	ra,24(sp)
+ 77e:	e822                	sd	s0,16(sp)
+ 780:	1000                	addi	s0,sp,32
+ 782:	e010                	sd	a2,0(s0)
+ 784:	e414                	sd	a3,8(s0)
+ 786:	e818                	sd	a4,16(s0)
+ 788:	ec1c                	sd	a5,24(s0)
+ 78a:	03043023          	sd	a6,32(s0)
+ 78e:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 788:	8622                	mv	a2,s0
- 78a:	fe843423          	sd	s0,-24(s0)
+ 792:	8622                	mv	a2,s0
+ 794:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 78e:	00000097          	auipc	ra,0x0
- 792:	e04080e7          	jalr	-508(ra) # 592 <vprintf>
+ 798:	00000097          	auipc	ra,0x0
+ 79c:	e04080e7          	jalr	-508(ra) # 59c <vprintf>
 }
- 796:	60e2                	ld	ra,24(sp)
- 798:	6442                	ld	s0,16(sp)
- 79a:	6161                	addi	sp,sp,80
- 79c:	8082                	ret
+ 7a0:	60e2                	ld	ra,24(sp)
+ 7a2:	6442                	ld	s0,16(sp)
+ 7a4:	6161                	addi	sp,sp,80
+ 7a6:	8082                	ret
 
-000000000000079e <printf>:
+00000000000007a8 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 79e:	711d                	addi	sp,sp,-96
- 7a0:	ec06                	sd	ra,24(sp)
- 7a2:	e822                	sd	s0,16(sp)
- 7a4:	1000                	addi	s0,sp,32
- 7a6:	e40c                	sd	a1,8(s0)
- 7a8:	e810                	sd	a2,16(s0)
- 7aa:	ec14                	sd	a3,24(s0)
- 7ac:	f018                	sd	a4,32(s0)
- 7ae:	f41c                	sd	a5,40(s0)
- 7b0:	03043823          	sd	a6,48(s0)
- 7b4:	03143c23          	sd	a7,56(s0)
+ 7a8:	711d                	addi	sp,sp,-96
+ 7aa:	ec06                	sd	ra,24(sp)
+ 7ac:	e822                	sd	s0,16(sp)
+ 7ae:	1000                	addi	s0,sp,32
+ 7b0:	e40c                	sd	a1,8(s0)
+ 7b2:	e810                	sd	a2,16(s0)
+ 7b4:	ec14                	sd	a3,24(s0)
+ 7b6:	f018                	sd	a4,32(s0)
+ 7b8:	f41c                	sd	a5,40(s0)
+ 7ba:	03043823          	sd	a6,48(s0)
+ 7be:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 7b8:	00840613          	addi	a2,s0,8
- 7bc:	fec43423          	sd	a2,-24(s0)
+ 7c2:	00840613          	addi	a2,s0,8
+ 7c6:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 7c0:	85aa                	mv	a1,a0
- 7c2:	4505                	li	a0,1
- 7c4:	00000097          	auipc	ra,0x0
- 7c8:	dce080e7          	jalr	-562(ra) # 592 <vprintf>
+ 7ca:	85aa                	mv	a1,a0
+ 7cc:	4505                	li	a0,1
+ 7ce:	00000097          	auipc	ra,0x0
+ 7d2:	dce080e7          	jalr	-562(ra) # 59c <vprintf>
 }
- 7cc:	60e2                	ld	ra,24(sp)
- 7ce:	6442                	ld	s0,16(sp)
- 7d0:	6125                	addi	sp,sp,96
- 7d2:	8082                	ret
+ 7d6:	60e2                	ld	ra,24(sp)
+ 7d8:	6442                	ld	s0,16(sp)
+ 7da:	6125                	addi	sp,sp,96
+ 7dc:	8082                	ret
 
-00000000000007d4 <free>:
+00000000000007de <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 7d4:	1141                	addi	sp,sp,-16
- 7d6:	e422                	sd	s0,8(sp)
- 7d8:	0800                	addi	s0,sp,16
+ 7de:	1141                	addi	sp,sp,-16
+ 7e0:	e422                	sd	s0,8(sp)
+ 7e2:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 7da:	ff050693          	addi	a3,a0,-16
+ 7e4:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 7de:	00000797          	auipc	a5,0x0
- 7e2:	4227b783          	ld	a5,1058(a5) # c00 <freep>
- 7e6:	a02d                	j	810 <free+0x3c>
+ 7e8:	00000797          	auipc	a5,0x0
+ 7ec:	4287b783          	ld	a5,1064(a5) # c10 <freep>
+ 7f0:	a02d                	j	81a <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 7e8:	4618                	lw	a4,8(a2)
- 7ea:	9f2d                	addw	a4,a4,a1
- 7ec:	fee52c23          	sw	a4,-8(a0)
+ 7f2:	4618                	lw	a4,8(a2)
+ 7f4:	9f2d                	addw	a4,a4,a1
+ 7f6:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 7f0:	6398                	ld	a4,0(a5)
- 7f2:	6310                	ld	a2,0(a4)
- 7f4:	a83d                	j	832 <free+0x5e>
+ 7fa:	6398                	ld	a4,0(a5)
+ 7fc:	6310                	ld	a2,0(a4)
+ 7fe:	a83d                	j	83c <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 7f6:	ff852703          	lw	a4,-8(a0)
- 7fa:	9f31                	addw	a4,a4,a2
- 7fc:	c798                	sw	a4,8(a5)
+ 800:	ff852703          	lw	a4,-8(a0)
+ 804:	9f31                	addw	a4,a4,a2
+ 806:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 7fe:	ff053683          	ld	a3,-16(a0)
- 802:	a091                	j	846 <free+0x72>
+ 808:	ff053683          	ld	a3,-16(a0)
+ 80c:	a091                	j	850 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 804:	6398                	ld	a4,0(a5)
- 806:	00e7e463          	bltu	a5,a4,80e <free+0x3a>
- 80a:	00e6ea63          	bltu	a3,a4,81e <free+0x4a>
+ 80e:	6398                	ld	a4,0(a5)
+ 810:	00e7e463          	bltu	a5,a4,818 <free+0x3a>
+ 814:	00e6ea63          	bltu	a3,a4,828 <free+0x4a>
 {
- 80e:	87ba                	mv	a5,a4
+ 818:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 810:	fed7fae3          	bgeu	a5,a3,804 <free+0x30>
- 814:	6398                	ld	a4,0(a5)
- 816:	00e6e463          	bltu	a3,a4,81e <free+0x4a>
+ 81a:	fed7fae3          	bgeu	a5,a3,80e <free+0x30>
+ 81e:	6398                	ld	a4,0(a5)
+ 820:	00e6e463          	bltu	a3,a4,828 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 81a:	fee7eae3          	bltu	a5,a4,80e <free+0x3a>
+ 824:	fee7eae3          	bltu	a5,a4,818 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 81e:	ff852583          	lw	a1,-8(a0)
- 822:	6390                	ld	a2,0(a5)
- 824:	02059813          	slli	a6,a1,0x20
- 828:	01c85713          	srli	a4,a6,0x1c
- 82c:	9736                	add	a4,a4,a3
- 82e:	fae60de3          	beq	a2,a4,7e8 <free+0x14>
+ 828:	ff852583          	lw	a1,-8(a0)
+ 82c:	6390                	ld	a2,0(a5)
+ 82e:	02059813          	slli	a6,a1,0x20
+ 832:	01c85713          	srli	a4,a6,0x1c
+ 836:	9736                	add	a4,a4,a3
+ 838:	fae60de3          	beq	a2,a4,7f2 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 832:	fec53823          	sd	a2,-16(a0)
+ 83c:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 836:	4790                	lw	a2,8(a5)
- 838:	02061593          	slli	a1,a2,0x20
- 83c:	01c5d713          	srli	a4,a1,0x1c
- 840:	973e                	add	a4,a4,a5
- 842:	fae68ae3          	beq	a3,a4,7f6 <free+0x22>
+ 840:	4790                	lw	a2,8(a5)
+ 842:	02061593          	slli	a1,a2,0x20
+ 846:	01c5d713          	srli	a4,a1,0x1c
+ 84a:	973e                	add	a4,a4,a5
+ 84c:	fae68ae3          	beq	a3,a4,800 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 846:	e394                	sd	a3,0(a5)
+ 850:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 848:	00000717          	auipc	a4,0x0
- 84c:	3af73c23          	sd	a5,952(a4) # c00 <freep>
+ 852:	00000717          	auipc	a4,0x0
+ 856:	3af73f23          	sd	a5,958(a4) # c10 <freep>
 }
- 850:	6422                	ld	s0,8(sp)
- 852:	0141                	addi	sp,sp,16
- 854:	8082                	ret
+ 85a:	6422                	ld	s0,8(sp)
+ 85c:	0141                	addi	sp,sp,16
+ 85e:	8082                	ret
 
-0000000000000856 <malloc>:
+0000000000000860 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 856:	7139                	addi	sp,sp,-64
- 858:	fc06                	sd	ra,56(sp)
- 85a:	f822                	sd	s0,48(sp)
- 85c:	f426                	sd	s1,40(sp)
- 85e:	f04a                	sd	s2,32(sp)
- 860:	ec4e                	sd	s3,24(sp)
- 862:	e852                	sd	s4,16(sp)
- 864:	e456                	sd	s5,8(sp)
- 866:	e05a                	sd	s6,0(sp)
- 868:	0080                	addi	s0,sp,64
+ 860:	7139                	addi	sp,sp,-64
+ 862:	fc06                	sd	ra,56(sp)
+ 864:	f822                	sd	s0,48(sp)
+ 866:	f426                	sd	s1,40(sp)
+ 868:	f04a                	sd	s2,32(sp)
+ 86a:	ec4e                	sd	s3,24(sp)
+ 86c:	e852                	sd	s4,16(sp)
+ 86e:	e456                	sd	s5,8(sp)
+ 870:	e05a                	sd	s6,0(sp)
+ 872:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 86a:	02051493          	slli	s1,a0,0x20
- 86e:	9081                	srli	s1,s1,0x20
- 870:	04bd                	addi	s1,s1,15
- 872:	8091                	srli	s1,s1,0x4
- 874:	00148a1b          	addiw	s4,s1,1
- 878:	0485                	addi	s1,s1,1
+ 874:	02051493          	slli	s1,a0,0x20
+ 878:	9081                	srli	s1,s1,0x20
+ 87a:	04bd                	addi	s1,s1,15
+ 87c:	8091                	srli	s1,s1,0x4
+ 87e:	00148a1b          	addiw	s4,s1,1
+ 882:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 87a:	00000517          	auipc	a0,0x0
- 87e:	38653503          	ld	a0,902(a0) # c00 <freep>
- 882:	c515                	beqz	a0,8ae <malloc+0x58>
+ 884:	00000517          	auipc	a0,0x0
+ 888:	38c53503          	ld	a0,908(a0) # c10 <freep>
+ 88c:	c515                	beqz	a0,8b8 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 884:	611c                	ld	a5,0(a0)
+ 88e:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 886:	4798                	lw	a4,8(a5)
- 888:	04977163          	bgeu	a4,s1,8ca <malloc+0x74>
- 88c:	89d2                	mv	s3,s4
- 88e:	000a071b          	sext.w	a4,s4
- 892:	6685                	lui	a3,0x1
- 894:	00d77363          	bgeu	a4,a3,89a <malloc+0x44>
- 898:	6985                	lui	s3,0x1
- 89a:	00098b1b          	sext.w	s6,s3
+ 890:	4798                	lw	a4,8(a5)
+ 892:	04977163          	bgeu	a4,s1,8d4 <malloc+0x74>
+ 896:	89d2                	mv	s3,s4
+ 898:	000a071b          	sext.w	a4,s4
+ 89c:	6685                	lui	a3,0x1
+ 89e:	00d77363          	bgeu	a4,a3,8a4 <malloc+0x44>
+ 8a2:	6985                	lui	s3,0x1
+ 8a4:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 89e:	0049999b          	slliw	s3,s3,0x4
+ 8a8:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 8a2:	00000917          	auipc	s2,0x0
- 8a6:	35e90913          	addi	s2,s2,862 # c00 <freep>
+ 8ac:	00000917          	auipc	s2,0x0
+ 8b0:	36490913          	addi	s2,s2,868 # c10 <freep>
   if(p == (char*)-1)
- 8aa:	5afd                	li	s5,-1
- 8ac:	a8a5                	j	924 <malloc+0xce>
+ 8b4:	5afd                	li	s5,-1
+ 8b6:	a8a5                	j	92e <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 8ae:	00000797          	auipc	a5,0x0
- 8b2:	35278793          	addi	a5,a5,850 # c00 <freep>
- 8b6:	00000717          	auipc	a4,0x0
- 8ba:	35270713          	addi	a4,a4,850 # c08 <base>
- 8be:	e398                	sd	a4,0(a5)
- 8c0:	e798                	sd	a4,8(a5)
+ 8b8:	00000797          	auipc	a5,0x0
+ 8bc:	35878793          	addi	a5,a5,856 # c10 <freep>
+ 8c0:	00000717          	auipc	a4,0x0
+ 8c4:	35870713          	addi	a4,a4,856 # c18 <base>
+ 8c8:	e398                	sd	a4,0(a5)
+ 8ca:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 8c2:	0007a823          	sw	zero,16(a5)
+ 8cc:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 8c6:	87ba                	mv	a5,a4
- 8c8:	b7d1                	j	88c <malloc+0x36>
+ 8d0:	87ba                	mv	a5,a4
+ 8d2:	b7d1                	j	896 <malloc+0x36>
       if(p->s.size == nunits)
- 8ca:	02e48c63          	beq	s1,a4,902 <malloc+0xac>
+ 8d4:	02e48c63          	beq	s1,a4,90c <malloc+0xac>
         p->s.size -= nunits;
- 8ce:	4147073b          	subw	a4,a4,s4
- 8d2:	c798                	sw	a4,8(a5)
+ 8d8:	4147073b          	subw	a4,a4,s4
+ 8dc:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 8d4:	02071693          	slli	a3,a4,0x20
- 8d8:	01c6d713          	srli	a4,a3,0x1c
- 8dc:	97ba                	add	a5,a5,a4
+ 8de:	02071693          	slli	a3,a4,0x20
+ 8e2:	01c6d713          	srli	a4,a3,0x1c
+ 8e6:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 8de:	0147a423          	sw	s4,8(a5)
+ 8e8:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 8e2:	00000717          	auipc	a4,0x0
- 8e6:	30a73f23          	sd	a0,798(a4) # c00 <freep>
+ 8ec:	00000717          	auipc	a4,0x0
+ 8f0:	32a73223          	sd	a0,804(a4) # c10 <freep>
       return (void*)(p + 1);
- 8ea:	01078513          	addi	a0,a5,16
+ 8f4:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 8ee:	70e2                	ld	ra,56(sp)
- 8f0:	7442                	ld	s0,48(sp)
- 8f2:	74a2                	ld	s1,40(sp)
- 8f4:	7902                	ld	s2,32(sp)
- 8f6:	69e2                	ld	s3,24(sp)
- 8f8:	6a42                	ld	s4,16(sp)
- 8fa:	6aa2                	ld	s5,8(sp)
- 8fc:	6b02                	ld	s6,0(sp)
- 8fe:	6121                	addi	sp,sp,64
- 900:	8082                	ret
+ 8f8:	70e2                	ld	ra,56(sp)
+ 8fa:	7442                	ld	s0,48(sp)
+ 8fc:	74a2                	ld	s1,40(sp)
+ 8fe:	7902                	ld	s2,32(sp)
+ 900:	69e2                	ld	s3,24(sp)
+ 902:	6a42                	ld	s4,16(sp)
+ 904:	6aa2                	ld	s5,8(sp)
+ 906:	6b02                	ld	s6,0(sp)
+ 908:	6121                	addi	sp,sp,64
+ 90a:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 902:	6398                	ld	a4,0(a5)
- 904:	e118                	sd	a4,0(a0)
- 906:	bff1                	j	8e2 <malloc+0x8c>
+ 90c:	6398                	ld	a4,0(a5)
+ 90e:	e118                	sd	a4,0(a0)
+ 910:	bff1                	j	8ec <malloc+0x8c>
   hp->s.size = nu;
- 908:	01652423          	sw	s6,8(a0)
+ 912:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 90c:	0541                	addi	a0,a0,16
- 90e:	00000097          	auipc	ra,0x0
- 912:	ec6080e7          	jalr	-314(ra) # 7d4 <free>
+ 916:	0541                	addi	a0,a0,16
+ 918:	00000097          	auipc	ra,0x0
+ 91c:	ec6080e7          	jalr	-314(ra) # 7de <free>
   return freep;
- 916:	00093503          	ld	a0,0(s2)
+ 920:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 91a:	d971                	beqz	a0,8ee <malloc+0x98>
+ 924:	d971                	beqz	a0,8f8 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 91c:	611c                	ld	a5,0(a0)
+ 926:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 91e:	4798                	lw	a4,8(a5)
- 920:	fa9775e3          	bgeu	a4,s1,8ca <malloc+0x74>
+ 928:	4798                	lw	a4,8(a5)
+ 92a:	fa9775e3          	bgeu	a4,s1,8d4 <malloc+0x74>
     if(p == freep)
- 924:	00093703          	ld	a4,0(s2)
- 928:	853e                	mv	a0,a5
- 92a:	fef719e3          	bne	a4,a5,91c <malloc+0xc6>
+ 92e:	00093703          	ld	a4,0(s2)
+ 932:	853e                	mv	a0,a5
+ 934:	fef719e3          	bne	a4,a5,926 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 92e:	854e                	mv	a0,s3
- 930:	00000097          	auipc	ra,0x0
- 934:	b2a080e7          	jalr	-1238(ra) # 45a <sbrk>
+ 938:	854e                	mv	a0,s3
+ 93a:	00000097          	auipc	ra,0x0
+ 93e:	b20080e7          	jalr	-1248(ra) # 45a <sbrk>
   if(p == (char*)-1)
- 938:	fd5518e3          	bne	a0,s5,908 <malloc+0xb2>
+ 942:	fd5518e3          	bne	a0,s5,912 <malloc+0xb2>
         return 0;
- 93c:	4501                	li	a0,0
- 93e:	bf45                	j	8ee <malloc+0x98>
+ 946:	4501                	li	a0,0
+ 948:	bf45                	j	8f8 <malloc+0x98>
diff --git a/xv6-user/cat.sym b/xv6-user/cat.sym
index f573702..e4d566a 100644
--- a/xv6-user/cat.sym
+++ b/xv6-user/cat.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-0000000000000940 .rodata
-0000000000000a00 .bss
+0000000000000950 .rodata
+0000000000000a10 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,24 +16,25 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-00000000000004c6 putc
-00000000000004e8 printint
-00000000000009e8 digits
+00000000000004d0 putc
+00000000000004f2 printint
+00000000000009f8 digits
 0000000000000000 umalloc.c
-0000000000000c00 freep
-0000000000000c08 base
+0000000000000c10 freep
+0000000000000c18 base
 000000000000011e strcpy
-000000000000079e printf
-00000000000011f9 __global_pointer$
+00000000000007a8 printf
+0000000000001209 __global_pointer$
 000000000000047a dev
 0000000000000324 memmove
+00000000000004c6 times
 000000000000049a trace
 0000000000000204 gets
-00000000000009f9 __SDATA_BEGIN__
+0000000000000a09 __SDATA_BEGIN__
 0000000000000450 getpid
 00000000000003b6 memcpy
 0000000000000000 cat
-0000000000000856 malloc
+0000000000000860 malloc
 0000000000000492 remove
 0000000000000462 sleep
 00000000000004a2 sysinfo
@@ -43,32 +44,32 @@
 00000000000004aa rename
 00000000000003fc write
 000000000000042a fstat
-0000000000000770 fprintf
+000000000000077a fprintf
 0000000000000410 kill
 000000000000013a strcat
-0000000000000592 vprintf
+000000000000059c vprintf
 000000000000043e chdir
 0000000000000418 exec
 00000000000003e0 wait
 00000000000003f2 read
 000000000000037c memcmp
 00000000000003ce fork
-0000000000000c18 __BSS_END__
+0000000000000c28 __BSS_END__
 000000000000045a sbrk
 0000000000000472 test_proc
 000000000000046a uptime
-00000000000009f9 __bss_start
+0000000000000a09 __bss_start
 00000000000001be memset
 000000000000008a main
 0000000000000168 strcmp
 00000000000004b2 shutdown
 0000000000000448 dup
 000000000000048a getcwd
-0000000000000a00 buf
-00000000000009f9 __DATA_BEGIN__
+0000000000000a10 buf
+0000000000000a09 __DATA_BEGIN__
 000000000000027e stat
-00000000000009f9 _edata
-0000000000000c18 _end
+0000000000000a09 _edata
+0000000000000c28 _end
 00000000000003d6 exit
 00000000000002c4 atoi
 0000000000000194 strlen
@@ -76,4 +77,4 @@
 00000000000001e0 strchr
 0000000000000434 mkdir
 0000000000000406 close
-00000000000007d4 free
+00000000000007de free
diff --git a/xv6-user/echo.asm b/xv6-user/echo.asm
index 88089c9..4925ebc 100644
--- a/xv6-user/echo.asm
+++ b/xv6-user/echo.asm
@@ -34,7 +34,7 @@ main(int argc, char *argv[])
     if(i + 1 < argc){
       write(1, " ", 1);
   2a:	00001a17          	auipc	s4,0x1
-  2e:	87ea0a13          	addi	s4,s4,-1922 # 8a8 <malloc+0xec>
+  2e:	886a0a13          	addi	s4,s4,-1914 # 8b0 <malloc+0xea>
     write(1, argv[i], strlen(argv[i]));
   32:	0004b903          	ld	s2,0(s1)
   36:	854a                	mv	a0,s2
@@ -60,7 +60,7 @@ main(int argc, char *argv[])
       write(1, "\n", 1);
   66:	4605                	li	a2,1
   68:	00001597          	auipc	a1,0x1
-  6c:	84858593          	addi	a1,a1,-1976 # 8b0 <malloc+0xf4>
+  6c:	85058593          	addi	a1,a1,-1968 # 8b8 <malloc+0xf2>
   70:	4505                	li	a0,1
   72:	00000097          	auipc	ra,0x0
   76:	2f0080e7          	jalr	752(ra) # 362 <write>
@@ -827,637 +827,647 @@ uname:
  ret
  42a:	8082                	ret
 
-000000000000042c <putc>:
+000000000000042c <times>:
+.global times
+times:
+ li a7, SYS_times
+ 42c:	09900893          	li	a7,153
+ ecall
+ 430:	00000073          	ecall
+ ret
+ 434:	8082                	ret
+
+0000000000000436 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 42c:	1101                	addi	sp,sp,-32
- 42e:	ec06                	sd	ra,24(sp)
- 430:	e822                	sd	s0,16(sp)
- 432:	1000                	addi	s0,sp,32
- 434:	feb407a3          	sb	a1,-17(s0)
+ 436:	1101                	addi	sp,sp,-32
+ 438:	ec06                	sd	ra,24(sp)
+ 43a:	e822                	sd	s0,16(sp)
+ 43c:	1000                	addi	s0,sp,32
+ 43e:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 438:	4605                	li	a2,1
- 43a:	fef40593          	addi	a1,s0,-17
- 43e:	00000097          	auipc	ra,0x0
- 442:	f24080e7          	jalr	-220(ra) # 362 <write>
+ 442:	4605                	li	a2,1
+ 444:	fef40593          	addi	a1,s0,-17
+ 448:	00000097          	auipc	ra,0x0
+ 44c:	f1a080e7          	jalr	-230(ra) # 362 <write>
 }
- 446:	60e2                	ld	ra,24(sp)
- 448:	6442                	ld	s0,16(sp)
- 44a:	6105                	addi	sp,sp,32
- 44c:	8082                	ret
+ 450:	60e2                	ld	ra,24(sp)
+ 452:	6442                	ld	s0,16(sp)
+ 454:	6105                	addi	sp,sp,32
+ 456:	8082                	ret
 
-000000000000044e <printint>:
+0000000000000458 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 44e:	7139                	addi	sp,sp,-64
- 450:	fc06                	sd	ra,56(sp)
- 452:	f822                	sd	s0,48(sp)
- 454:	f426                	sd	s1,40(sp)
- 456:	f04a                	sd	s2,32(sp)
- 458:	ec4e                	sd	s3,24(sp)
- 45a:	0080                	addi	s0,sp,64
- 45c:	84aa                	mv	s1,a0
+ 458:	7139                	addi	sp,sp,-64
+ 45a:	fc06                	sd	ra,56(sp)
+ 45c:	f822                	sd	s0,48(sp)
+ 45e:	f426                	sd	s1,40(sp)
+ 460:	f04a                	sd	s2,32(sp)
+ 462:	ec4e                	sd	s3,24(sp)
+ 464:	0080                	addi	s0,sp,64
+ 466:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 45e:	c299                	beqz	a3,464 <printint+0x16>
- 460:	0805c863          	bltz	a1,4f0 <printint+0xa2>
+ 468:	c299                	beqz	a3,46e <printint+0x16>
+ 46a:	0805c863          	bltz	a1,4fa <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 464:	2581                	sext.w	a1,a1
+ 46e:	2581                	sext.w	a1,a1
   neg = 0;
- 466:	4881                	li	a7,0
+ 470:	4881                	li	a7,0
   }
 
   i = 0;
- 468:	fc040993          	addi	s3,s0,-64
+ 472:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 46c:	86ce                	mv	a3,s3
+ 476:	86ce                	mv	a3,s3
   i = 0;
- 46e:	4701                	li	a4,0
+ 478:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 470:	2601                	sext.w	a2,a2
- 472:	00000517          	auipc	a0,0x0
- 476:	4a650513          	addi	a0,a0,1190 # 918 <digits>
- 47a:	883a                	mv	a6,a4
- 47c:	2705                	addiw	a4,a4,1
- 47e:	02c5f7bb          	remuw	a5,a1,a2
- 482:	1782                	slli	a5,a5,0x20
- 484:	9381                	srli	a5,a5,0x20
- 486:	97aa                	add	a5,a5,a0
- 488:	0007c783          	lbu	a5,0(a5)
- 48c:	00f68023          	sb	a5,0(a3)
+ 47a:	2601                	sext.w	a2,a2
+ 47c:	00000517          	auipc	a0,0x0
+ 480:	4a450513          	addi	a0,a0,1188 # 920 <digits>
+ 484:	883a                	mv	a6,a4
+ 486:	2705                	addiw	a4,a4,1
+ 488:	02c5f7bb          	remuw	a5,a1,a2
+ 48c:	1782                	slli	a5,a5,0x20
+ 48e:	9381                	srli	a5,a5,0x20
+ 490:	97aa                	add	a5,a5,a0
+ 492:	0007c783          	lbu	a5,0(a5)
+ 496:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 490:	0005879b          	sext.w	a5,a1
- 494:	02c5d5bb          	divuw	a1,a1,a2
- 498:	0685                	addi	a3,a3,1
- 49a:	fec7f0e3          	bgeu	a5,a2,47a <printint+0x2c>
+ 49a:	0005879b          	sext.w	a5,a1
+ 49e:	02c5d5bb          	divuw	a1,a1,a2
+ 4a2:	0685                	addi	a3,a3,1
+ 4a4:	fec7f0e3          	bgeu	a5,a2,484 <printint+0x2c>
   if(neg)
- 49e:	00088c63          	beqz	a7,4b6 <printint+0x68>
+ 4a8:	00088c63          	beqz	a7,4c0 <printint+0x68>
     buf[i++] = '-';
- 4a2:	fd070793          	addi	a5,a4,-48
- 4a6:	00878733          	add	a4,a5,s0
- 4aa:	02d00793          	li	a5,45
- 4ae:	fef70823          	sb	a5,-16(a4)
- 4b2:	0028071b          	addiw	a4,a6,2
+ 4ac:	fd070793          	addi	a5,a4,-48
+ 4b0:	00878733          	add	a4,a5,s0
+ 4b4:	02d00793          	li	a5,45
+ 4b8:	fef70823          	sb	a5,-16(a4)
+ 4bc:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 4b6:	02e05663          	blez	a4,4e2 <printint+0x94>
- 4ba:	fc040913          	addi	s2,s0,-64
- 4be:	993a                	add	s2,s2,a4
- 4c0:	19fd                	addi	s3,s3,-1
- 4c2:	99ba                	add	s3,s3,a4
- 4c4:	377d                	addiw	a4,a4,-1
- 4c6:	1702                	slli	a4,a4,0x20
- 4c8:	9301                	srli	a4,a4,0x20
- 4ca:	40e989b3          	sub	s3,s3,a4
+ 4c0:	02e05663          	blez	a4,4ec <printint+0x94>
+ 4c4:	fc040913          	addi	s2,s0,-64
+ 4c8:	993a                	add	s2,s2,a4
+ 4ca:	19fd                	addi	s3,s3,-1
+ 4cc:	99ba                	add	s3,s3,a4
+ 4ce:	377d                	addiw	a4,a4,-1
+ 4d0:	1702                	slli	a4,a4,0x20
+ 4d2:	9301                	srli	a4,a4,0x20
+ 4d4:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 4ce:	fff94583          	lbu	a1,-1(s2)
- 4d2:	8526                	mv	a0,s1
- 4d4:	00000097          	auipc	ra,0x0
- 4d8:	f58080e7          	jalr	-168(ra) # 42c <putc>
+ 4d8:	fff94583          	lbu	a1,-1(s2)
+ 4dc:	8526                	mv	a0,s1
+ 4de:	00000097          	auipc	ra,0x0
+ 4e2:	f58080e7          	jalr	-168(ra) # 436 <putc>
   while(--i >= 0)
- 4dc:	197d                	addi	s2,s2,-1
- 4de:	ff3918e3          	bne	s2,s3,4ce <printint+0x80>
+ 4e6:	197d                	addi	s2,s2,-1
+ 4e8:	ff3918e3          	bne	s2,s3,4d8 <printint+0x80>
 }
- 4e2:	70e2                	ld	ra,56(sp)
- 4e4:	7442                	ld	s0,48(sp)
- 4e6:	74a2                	ld	s1,40(sp)
- 4e8:	7902                	ld	s2,32(sp)
- 4ea:	69e2                	ld	s3,24(sp)
- 4ec:	6121                	addi	sp,sp,64
- 4ee:	8082                	ret
+ 4ec:	70e2                	ld	ra,56(sp)
+ 4ee:	7442                	ld	s0,48(sp)
+ 4f0:	74a2                	ld	s1,40(sp)
+ 4f2:	7902                	ld	s2,32(sp)
+ 4f4:	69e2                	ld	s3,24(sp)
+ 4f6:	6121                	addi	sp,sp,64
+ 4f8:	8082                	ret
     x = -xx;
- 4f0:	40b005bb          	negw	a1,a1
+ 4fa:	40b005bb          	negw	a1,a1
     neg = 1;
- 4f4:	4885                	li	a7,1
+ 4fe:	4885                	li	a7,1
     x = -xx;
- 4f6:	bf8d                	j	468 <printint+0x1a>
+ 500:	bf8d                	j	472 <printint+0x1a>
 
-00000000000004f8 <vprintf>:
+0000000000000502 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 4f8:	7119                	addi	sp,sp,-128
- 4fa:	fc86                	sd	ra,120(sp)
- 4fc:	f8a2                	sd	s0,112(sp)
- 4fe:	f4a6                	sd	s1,104(sp)
- 500:	f0ca                	sd	s2,96(sp)
- 502:	ecce                	sd	s3,88(sp)
- 504:	e8d2                	sd	s4,80(sp)
- 506:	e4d6                	sd	s5,72(sp)
- 508:	e0da                	sd	s6,64(sp)
- 50a:	fc5e                	sd	s7,56(sp)
- 50c:	f862                	sd	s8,48(sp)
- 50e:	f466                	sd	s9,40(sp)
- 510:	f06a                	sd	s10,32(sp)
- 512:	ec6e                	sd	s11,24(sp)
- 514:	0100                	addi	s0,sp,128
+ 502:	7119                	addi	sp,sp,-128
+ 504:	fc86                	sd	ra,120(sp)
+ 506:	f8a2                	sd	s0,112(sp)
+ 508:	f4a6                	sd	s1,104(sp)
+ 50a:	f0ca                	sd	s2,96(sp)
+ 50c:	ecce                	sd	s3,88(sp)
+ 50e:	e8d2                	sd	s4,80(sp)
+ 510:	e4d6                	sd	s5,72(sp)
+ 512:	e0da                	sd	s6,64(sp)
+ 514:	fc5e                	sd	s7,56(sp)
+ 516:	f862                	sd	s8,48(sp)
+ 518:	f466                	sd	s9,40(sp)
+ 51a:	f06a                	sd	s10,32(sp)
+ 51c:	ec6e                	sd	s11,24(sp)
+ 51e:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 516:	0005c903          	lbu	s2,0(a1)
- 51a:	18090f63          	beqz	s2,6b8 <vprintf+0x1c0>
- 51e:	8aaa                	mv	s5,a0
- 520:	8b32                	mv	s6,a2
- 522:	00158493          	addi	s1,a1,1
+ 520:	0005c903          	lbu	s2,0(a1)
+ 524:	18090f63          	beqz	s2,6c2 <vprintf+0x1c0>
+ 528:	8aaa                	mv	s5,a0
+ 52a:	8b32                	mv	s6,a2
+ 52c:	00158493          	addi	s1,a1,1
   state = 0;
- 526:	4981                	li	s3,0
+ 530:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 528:	02500a13          	li	s4,37
- 52c:	4c55                	li	s8,21
- 52e:	00000c97          	auipc	s9,0x0
- 532:	392c8c93          	addi	s9,s9,914 # 8c0 <malloc+0x104>
+ 532:	02500a13          	li	s4,37
+ 536:	4c55                	li	s8,21
+ 538:	00000c97          	auipc	s9,0x0
+ 53c:	390c8c93          	addi	s9,s9,912 # 8c8 <malloc+0x102>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 536:	02800d93          	li	s11,40
+ 540:	02800d93          	li	s11,40
   putc(fd, 'x');
- 53a:	4d41                	li	s10,16
+ 544:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 53c:	00000b97          	auipc	s7,0x0
- 540:	3dcb8b93          	addi	s7,s7,988 # 918 <digits>
- 544:	a839                	j	562 <vprintf+0x6a>
+ 546:	00000b97          	auipc	s7,0x0
+ 54a:	3dab8b93          	addi	s7,s7,986 # 920 <digits>
+ 54e:	a839                	j	56c <vprintf+0x6a>
         putc(fd, c);
- 546:	85ca                	mv	a1,s2
- 548:	8556                	mv	a0,s5
- 54a:	00000097          	auipc	ra,0x0
- 54e:	ee2080e7          	jalr	-286(ra) # 42c <putc>
- 552:	a019                	j	558 <vprintf+0x60>
+ 550:	85ca                	mv	a1,s2
+ 552:	8556                	mv	a0,s5
+ 554:	00000097          	auipc	ra,0x0
+ 558:	ee2080e7          	jalr	-286(ra) # 436 <putc>
+ 55c:	a019                	j	562 <vprintf+0x60>
     } else if(state == '%'){
- 554:	01498d63          	beq	s3,s4,56e <vprintf+0x76>
+ 55e:	01498d63          	beq	s3,s4,578 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 558:	0485                	addi	s1,s1,1
- 55a:	fff4c903          	lbu	s2,-1(s1)
- 55e:	14090d63          	beqz	s2,6b8 <vprintf+0x1c0>
+ 562:	0485                	addi	s1,s1,1
+ 564:	fff4c903          	lbu	s2,-1(s1)
+ 568:	14090d63          	beqz	s2,6c2 <vprintf+0x1c0>
     if(state == 0){
- 562:	fe0999e3          	bnez	s3,554 <vprintf+0x5c>
+ 56c:	fe0999e3          	bnez	s3,55e <vprintf+0x5c>
       if(c == '%'){
- 566:	ff4910e3          	bne	s2,s4,546 <vprintf+0x4e>
+ 570:	ff4910e3          	bne	s2,s4,550 <vprintf+0x4e>
         state = '%';
- 56a:	89d2                	mv	s3,s4
- 56c:	b7f5                	j	558 <vprintf+0x60>
+ 574:	89d2                	mv	s3,s4
+ 576:	b7f5                	j	562 <vprintf+0x60>
       if(c == 'd'){
- 56e:	11490c63          	beq	s2,s4,686 <vprintf+0x18e>
- 572:	f9d9079b          	addiw	a5,s2,-99
- 576:	0ff7f793          	zext.b	a5,a5
- 57a:	10fc6e63          	bltu	s8,a5,696 <vprintf+0x19e>
- 57e:	f9d9079b          	addiw	a5,s2,-99
- 582:	0ff7f713          	zext.b	a4,a5
- 586:	10ec6863          	bltu	s8,a4,696 <vprintf+0x19e>
- 58a:	00271793          	slli	a5,a4,0x2
- 58e:	97e6                	add	a5,a5,s9
- 590:	439c                	lw	a5,0(a5)
- 592:	97e6                	add	a5,a5,s9
- 594:	8782                	jr	a5
+ 578:	11490c63          	beq	s2,s4,690 <vprintf+0x18e>
+ 57c:	f9d9079b          	addiw	a5,s2,-99
+ 580:	0ff7f793          	zext.b	a5,a5
+ 584:	10fc6e63          	bltu	s8,a5,6a0 <vprintf+0x19e>
+ 588:	f9d9079b          	addiw	a5,s2,-99
+ 58c:	0ff7f713          	zext.b	a4,a5
+ 590:	10ec6863          	bltu	s8,a4,6a0 <vprintf+0x19e>
+ 594:	00271793          	slli	a5,a4,0x2
+ 598:	97e6                	add	a5,a5,s9
+ 59a:	439c                	lw	a5,0(a5)
+ 59c:	97e6                	add	a5,a5,s9
+ 59e:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 596:	008b0913          	addi	s2,s6,8
- 59a:	4685                	li	a3,1
- 59c:	4629                	li	a2,10
- 59e:	000b2583          	lw	a1,0(s6)
- 5a2:	8556                	mv	a0,s5
- 5a4:	00000097          	auipc	ra,0x0
- 5a8:	eaa080e7          	jalr	-342(ra) # 44e <printint>
- 5ac:	8b4a                	mv	s6,s2
+ 5a0:	008b0913          	addi	s2,s6,8
+ 5a4:	4685                	li	a3,1
+ 5a6:	4629                	li	a2,10
+ 5a8:	000b2583          	lw	a1,0(s6)
+ 5ac:	8556                	mv	a0,s5
+ 5ae:	00000097          	auipc	ra,0x0
+ 5b2:	eaa080e7          	jalr	-342(ra) # 458 <printint>
+ 5b6:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 5ae:	4981                	li	s3,0
- 5b0:	b765                	j	558 <vprintf+0x60>
+ 5b8:	4981                	li	s3,0
+ 5ba:	b765                	j	562 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 5b2:	008b0913          	addi	s2,s6,8
- 5b6:	4681                	li	a3,0
- 5b8:	4629                	li	a2,10
- 5ba:	000b2583          	lw	a1,0(s6)
- 5be:	8556                	mv	a0,s5
- 5c0:	00000097          	auipc	ra,0x0
- 5c4:	e8e080e7          	jalr	-370(ra) # 44e <printint>
- 5c8:	8b4a                	mv	s6,s2
+ 5bc:	008b0913          	addi	s2,s6,8
+ 5c0:	4681                	li	a3,0
+ 5c2:	4629                	li	a2,10
+ 5c4:	000b2583          	lw	a1,0(s6)
+ 5c8:	8556                	mv	a0,s5
+ 5ca:	00000097          	auipc	ra,0x0
+ 5ce:	e8e080e7          	jalr	-370(ra) # 458 <printint>
+ 5d2:	8b4a                	mv	s6,s2
       state = 0;
- 5ca:	4981                	li	s3,0
- 5cc:	b771                	j	558 <vprintf+0x60>
+ 5d4:	4981                	li	s3,0
+ 5d6:	b771                	j	562 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 5ce:	008b0913          	addi	s2,s6,8
- 5d2:	4681                	li	a3,0
- 5d4:	866a                	mv	a2,s10
- 5d6:	000b2583          	lw	a1,0(s6)
- 5da:	8556                	mv	a0,s5
- 5dc:	00000097          	auipc	ra,0x0
- 5e0:	e72080e7          	jalr	-398(ra) # 44e <printint>
- 5e4:	8b4a                	mv	s6,s2
+ 5d8:	008b0913          	addi	s2,s6,8
+ 5dc:	4681                	li	a3,0
+ 5de:	866a                	mv	a2,s10
+ 5e0:	000b2583          	lw	a1,0(s6)
+ 5e4:	8556                	mv	a0,s5
+ 5e6:	00000097          	auipc	ra,0x0
+ 5ea:	e72080e7          	jalr	-398(ra) # 458 <printint>
+ 5ee:	8b4a                	mv	s6,s2
       state = 0;
- 5e6:	4981                	li	s3,0
- 5e8:	bf85                	j	558 <vprintf+0x60>
+ 5f0:	4981                	li	s3,0
+ 5f2:	bf85                	j	562 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 5ea:	008b0793          	addi	a5,s6,8
- 5ee:	f8f43423          	sd	a5,-120(s0)
- 5f2:	000b3983          	ld	s3,0(s6)
+ 5f4:	008b0793          	addi	a5,s6,8
+ 5f8:	f8f43423          	sd	a5,-120(s0)
+ 5fc:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 5f6:	03000593          	li	a1,48
- 5fa:	8556                	mv	a0,s5
- 5fc:	00000097          	auipc	ra,0x0
- 600:	e30080e7          	jalr	-464(ra) # 42c <putc>
+ 600:	03000593          	li	a1,48
+ 604:	8556                	mv	a0,s5
+ 606:	00000097          	auipc	ra,0x0
+ 60a:	e30080e7          	jalr	-464(ra) # 436 <putc>
   putc(fd, 'x');
- 604:	07800593          	li	a1,120
- 608:	8556                	mv	a0,s5
- 60a:	00000097          	auipc	ra,0x0
- 60e:	e22080e7          	jalr	-478(ra) # 42c <putc>
- 612:	896a                	mv	s2,s10
+ 60e:	07800593          	li	a1,120
+ 612:	8556                	mv	a0,s5
+ 614:	00000097          	auipc	ra,0x0
+ 618:	e22080e7          	jalr	-478(ra) # 436 <putc>
+ 61c:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 614:	03c9d793          	srli	a5,s3,0x3c
- 618:	97de                	add	a5,a5,s7
- 61a:	0007c583          	lbu	a1,0(a5)
- 61e:	8556                	mv	a0,s5
- 620:	00000097          	auipc	ra,0x0
- 624:	e0c080e7          	jalr	-500(ra) # 42c <putc>
+ 61e:	03c9d793          	srli	a5,s3,0x3c
+ 622:	97de                	add	a5,a5,s7
+ 624:	0007c583          	lbu	a1,0(a5)
+ 628:	8556                	mv	a0,s5
+ 62a:	00000097          	auipc	ra,0x0
+ 62e:	e0c080e7          	jalr	-500(ra) # 436 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 628:	0992                	slli	s3,s3,0x4
- 62a:	397d                	addiw	s2,s2,-1
- 62c:	fe0914e3          	bnez	s2,614 <vprintf+0x11c>
+ 632:	0992                	slli	s3,s3,0x4
+ 634:	397d                	addiw	s2,s2,-1
+ 636:	fe0914e3          	bnez	s2,61e <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 630:	f8843b03          	ld	s6,-120(s0)
+ 63a:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 634:	4981                	li	s3,0
- 636:	b70d                	j	558 <vprintf+0x60>
+ 63e:	4981                	li	s3,0
+ 640:	b70d                	j	562 <vprintf+0x60>
         s = va_arg(ap, char*);
- 638:	008b0913          	addi	s2,s6,8
- 63c:	000b3983          	ld	s3,0(s6)
+ 642:	008b0913          	addi	s2,s6,8
+ 646:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 640:	02098163          	beqz	s3,662 <vprintf+0x16a>
+ 64a:	02098163          	beqz	s3,66c <vprintf+0x16a>
         while(*s != 0){
- 644:	0009c583          	lbu	a1,0(s3)
- 648:	c5ad                	beqz	a1,6b2 <vprintf+0x1ba>
+ 64e:	0009c583          	lbu	a1,0(s3)
+ 652:	c5ad                	beqz	a1,6bc <vprintf+0x1ba>
           putc(fd, *s);
- 64a:	8556                	mv	a0,s5
- 64c:	00000097          	auipc	ra,0x0
- 650:	de0080e7          	jalr	-544(ra) # 42c <putc>
+ 654:	8556                	mv	a0,s5
+ 656:	00000097          	auipc	ra,0x0
+ 65a:	de0080e7          	jalr	-544(ra) # 436 <putc>
           s++;
- 654:	0985                	addi	s3,s3,1
+ 65e:	0985                	addi	s3,s3,1
         while(*s != 0){
- 656:	0009c583          	lbu	a1,0(s3)
- 65a:	f9e5                	bnez	a1,64a <vprintf+0x152>
+ 660:	0009c583          	lbu	a1,0(s3)
+ 664:	f9e5                	bnez	a1,654 <vprintf+0x152>
         s = va_arg(ap, char*);
- 65c:	8b4a                	mv	s6,s2
+ 666:	8b4a                	mv	s6,s2
       state = 0;
- 65e:	4981                	li	s3,0
- 660:	bde5                	j	558 <vprintf+0x60>
+ 668:	4981                	li	s3,0
+ 66a:	bde5                	j	562 <vprintf+0x60>
           s = "(null)";
- 662:	00000997          	auipc	s3,0x0
- 666:	25698993          	addi	s3,s3,598 # 8b8 <malloc+0xfc>
+ 66c:	00000997          	auipc	s3,0x0
+ 670:	25498993          	addi	s3,s3,596 # 8c0 <malloc+0xfa>
         while(*s != 0){
- 66a:	85ee                	mv	a1,s11
- 66c:	bff9                	j	64a <vprintf+0x152>
+ 674:	85ee                	mv	a1,s11
+ 676:	bff9                	j	654 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 66e:	008b0913          	addi	s2,s6,8
- 672:	000b4583          	lbu	a1,0(s6)
- 676:	8556                	mv	a0,s5
- 678:	00000097          	auipc	ra,0x0
- 67c:	db4080e7          	jalr	-588(ra) # 42c <putc>
- 680:	8b4a                	mv	s6,s2
+ 678:	008b0913          	addi	s2,s6,8
+ 67c:	000b4583          	lbu	a1,0(s6)
+ 680:	8556                	mv	a0,s5
+ 682:	00000097          	auipc	ra,0x0
+ 686:	db4080e7          	jalr	-588(ra) # 436 <putc>
+ 68a:	8b4a                	mv	s6,s2
       state = 0;
- 682:	4981                	li	s3,0
- 684:	bdd1                	j	558 <vprintf+0x60>
+ 68c:	4981                	li	s3,0
+ 68e:	bdd1                	j	562 <vprintf+0x60>
         putc(fd, c);
- 686:	85d2                	mv	a1,s4
- 688:	8556                	mv	a0,s5
- 68a:	00000097          	auipc	ra,0x0
- 68e:	da2080e7          	jalr	-606(ra) # 42c <putc>
+ 690:	85d2                	mv	a1,s4
+ 692:	8556                	mv	a0,s5
+ 694:	00000097          	auipc	ra,0x0
+ 698:	da2080e7          	jalr	-606(ra) # 436 <putc>
       state = 0;
- 692:	4981                	li	s3,0
- 694:	b5d1                	j	558 <vprintf+0x60>
+ 69c:	4981                	li	s3,0
+ 69e:	b5d1                	j	562 <vprintf+0x60>
         putc(fd, '%');
- 696:	85d2                	mv	a1,s4
- 698:	8556                	mv	a0,s5
- 69a:	00000097          	auipc	ra,0x0
- 69e:	d92080e7          	jalr	-622(ra) # 42c <putc>
+ 6a0:	85d2                	mv	a1,s4
+ 6a2:	8556                	mv	a0,s5
+ 6a4:	00000097          	auipc	ra,0x0
+ 6a8:	d92080e7          	jalr	-622(ra) # 436 <putc>
         putc(fd, c);
- 6a2:	85ca                	mv	a1,s2
- 6a4:	8556                	mv	a0,s5
- 6a6:	00000097          	auipc	ra,0x0
- 6aa:	d86080e7          	jalr	-634(ra) # 42c <putc>
+ 6ac:	85ca                	mv	a1,s2
+ 6ae:	8556                	mv	a0,s5
+ 6b0:	00000097          	auipc	ra,0x0
+ 6b4:	d86080e7          	jalr	-634(ra) # 436 <putc>
       state = 0;
- 6ae:	4981                	li	s3,0
- 6b0:	b565                	j	558 <vprintf+0x60>
+ 6b8:	4981                	li	s3,0
+ 6ba:	b565                	j	562 <vprintf+0x60>
         s = va_arg(ap, char*);
- 6b2:	8b4a                	mv	s6,s2
+ 6bc:	8b4a                	mv	s6,s2
       state = 0;
- 6b4:	4981                	li	s3,0
- 6b6:	b54d                	j	558 <vprintf+0x60>
+ 6be:	4981                	li	s3,0
+ 6c0:	b54d                	j	562 <vprintf+0x60>
     }
   }
 }
- 6b8:	70e6                	ld	ra,120(sp)
- 6ba:	7446                	ld	s0,112(sp)
- 6bc:	74a6                	ld	s1,104(sp)
- 6be:	7906                	ld	s2,96(sp)
- 6c0:	69e6                	ld	s3,88(sp)
- 6c2:	6a46                	ld	s4,80(sp)
- 6c4:	6aa6                	ld	s5,72(sp)
- 6c6:	6b06                	ld	s6,64(sp)
- 6c8:	7be2                	ld	s7,56(sp)
- 6ca:	7c42                	ld	s8,48(sp)
- 6cc:	7ca2                	ld	s9,40(sp)
- 6ce:	7d02                	ld	s10,32(sp)
- 6d0:	6de2                	ld	s11,24(sp)
- 6d2:	6109                	addi	sp,sp,128
- 6d4:	8082                	ret
-
-00000000000006d6 <fprintf>:
+ 6c2:	70e6                	ld	ra,120(sp)
+ 6c4:	7446                	ld	s0,112(sp)
+ 6c6:	74a6                	ld	s1,104(sp)
+ 6c8:	7906                	ld	s2,96(sp)
+ 6ca:	69e6                	ld	s3,88(sp)
+ 6cc:	6a46                	ld	s4,80(sp)
+ 6ce:	6aa6                	ld	s5,72(sp)
+ 6d0:	6b06                	ld	s6,64(sp)
+ 6d2:	7be2                	ld	s7,56(sp)
+ 6d4:	7c42                	ld	s8,48(sp)
+ 6d6:	7ca2                	ld	s9,40(sp)
+ 6d8:	7d02                	ld	s10,32(sp)
+ 6da:	6de2                	ld	s11,24(sp)
+ 6dc:	6109                	addi	sp,sp,128
+ 6de:	8082                	ret
+
+00000000000006e0 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 6d6:	715d                	addi	sp,sp,-80
- 6d8:	ec06                	sd	ra,24(sp)
- 6da:	e822                	sd	s0,16(sp)
- 6dc:	1000                	addi	s0,sp,32
- 6de:	e010                	sd	a2,0(s0)
- 6e0:	e414                	sd	a3,8(s0)
- 6e2:	e818                	sd	a4,16(s0)
- 6e4:	ec1c                	sd	a5,24(s0)
- 6e6:	03043023          	sd	a6,32(s0)
- 6ea:	03143423          	sd	a7,40(s0)
+ 6e0:	715d                	addi	sp,sp,-80
+ 6e2:	ec06                	sd	ra,24(sp)
+ 6e4:	e822                	sd	s0,16(sp)
+ 6e6:	1000                	addi	s0,sp,32
+ 6e8:	e010                	sd	a2,0(s0)
+ 6ea:	e414                	sd	a3,8(s0)
+ 6ec:	e818                	sd	a4,16(s0)
+ 6ee:	ec1c                	sd	a5,24(s0)
+ 6f0:	03043023          	sd	a6,32(s0)
+ 6f4:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6ee:	8622                	mv	a2,s0
- 6f0:	fe843423          	sd	s0,-24(s0)
+ 6f8:	8622                	mv	a2,s0
+ 6fa:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 6f4:	00000097          	auipc	ra,0x0
- 6f8:	e04080e7          	jalr	-508(ra) # 4f8 <vprintf>
+ 6fe:	00000097          	auipc	ra,0x0
+ 702:	e04080e7          	jalr	-508(ra) # 502 <vprintf>
 }
- 6fc:	60e2                	ld	ra,24(sp)
- 6fe:	6442                	ld	s0,16(sp)
- 700:	6161                	addi	sp,sp,80
- 702:	8082                	ret
+ 706:	60e2                	ld	ra,24(sp)
+ 708:	6442                	ld	s0,16(sp)
+ 70a:	6161                	addi	sp,sp,80
+ 70c:	8082                	ret
 
-0000000000000704 <printf>:
+000000000000070e <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 704:	711d                	addi	sp,sp,-96
- 706:	ec06                	sd	ra,24(sp)
- 708:	e822                	sd	s0,16(sp)
- 70a:	1000                	addi	s0,sp,32
- 70c:	e40c                	sd	a1,8(s0)
- 70e:	e810                	sd	a2,16(s0)
- 710:	ec14                	sd	a3,24(s0)
- 712:	f018                	sd	a4,32(s0)
- 714:	f41c                	sd	a5,40(s0)
- 716:	03043823          	sd	a6,48(s0)
- 71a:	03143c23          	sd	a7,56(s0)
+ 70e:	711d                	addi	sp,sp,-96
+ 710:	ec06                	sd	ra,24(sp)
+ 712:	e822                	sd	s0,16(sp)
+ 714:	1000                	addi	s0,sp,32
+ 716:	e40c                	sd	a1,8(s0)
+ 718:	e810                	sd	a2,16(s0)
+ 71a:	ec14                	sd	a3,24(s0)
+ 71c:	f018                	sd	a4,32(s0)
+ 71e:	f41c                	sd	a5,40(s0)
+ 720:	03043823          	sd	a6,48(s0)
+ 724:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 71e:	00840613          	addi	a2,s0,8
- 722:	fec43423          	sd	a2,-24(s0)
+ 728:	00840613          	addi	a2,s0,8
+ 72c:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 726:	85aa                	mv	a1,a0
- 728:	4505                	li	a0,1
- 72a:	00000097          	auipc	ra,0x0
- 72e:	dce080e7          	jalr	-562(ra) # 4f8 <vprintf>
+ 730:	85aa                	mv	a1,a0
+ 732:	4505                	li	a0,1
+ 734:	00000097          	auipc	ra,0x0
+ 738:	dce080e7          	jalr	-562(ra) # 502 <vprintf>
 }
- 732:	60e2                	ld	ra,24(sp)
- 734:	6442                	ld	s0,16(sp)
- 736:	6125                	addi	sp,sp,96
- 738:	8082                	ret
+ 73c:	60e2                	ld	ra,24(sp)
+ 73e:	6442                	ld	s0,16(sp)
+ 740:	6125                	addi	sp,sp,96
+ 742:	8082                	ret
 
-000000000000073a <free>:
+0000000000000744 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 73a:	1141                	addi	sp,sp,-16
- 73c:	e422                	sd	s0,8(sp)
- 73e:	0800                	addi	s0,sp,16
+ 744:	1141                	addi	sp,sp,-16
+ 746:	e422                	sd	s0,8(sp)
+ 748:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 740:	ff050693          	addi	a3,a0,-16
+ 74a:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 744:	00000797          	auipc	a5,0x0
- 748:	1ec7b783          	ld	a5,492(a5) # 930 <freep>
- 74c:	a02d                	j	776 <free+0x3c>
+ 74e:	00000797          	auipc	a5,0x0
+ 752:	1ea7b783          	ld	a5,490(a5) # 938 <freep>
+ 756:	a02d                	j	780 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 74e:	4618                	lw	a4,8(a2)
- 750:	9f2d                	addw	a4,a4,a1
- 752:	fee52c23          	sw	a4,-8(a0)
+ 758:	4618                	lw	a4,8(a2)
+ 75a:	9f2d                	addw	a4,a4,a1
+ 75c:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 756:	6398                	ld	a4,0(a5)
- 758:	6310                	ld	a2,0(a4)
- 75a:	a83d                	j	798 <free+0x5e>
+ 760:	6398                	ld	a4,0(a5)
+ 762:	6310                	ld	a2,0(a4)
+ 764:	a83d                	j	7a2 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 75c:	ff852703          	lw	a4,-8(a0)
- 760:	9f31                	addw	a4,a4,a2
- 762:	c798                	sw	a4,8(a5)
+ 766:	ff852703          	lw	a4,-8(a0)
+ 76a:	9f31                	addw	a4,a4,a2
+ 76c:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 764:	ff053683          	ld	a3,-16(a0)
- 768:	a091                	j	7ac <free+0x72>
+ 76e:	ff053683          	ld	a3,-16(a0)
+ 772:	a091                	j	7b6 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 76a:	6398                	ld	a4,0(a5)
- 76c:	00e7e463          	bltu	a5,a4,774 <free+0x3a>
- 770:	00e6ea63          	bltu	a3,a4,784 <free+0x4a>
+ 774:	6398                	ld	a4,0(a5)
+ 776:	00e7e463          	bltu	a5,a4,77e <free+0x3a>
+ 77a:	00e6ea63          	bltu	a3,a4,78e <free+0x4a>
 {
- 774:	87ba                	mv	a5,a4
+ 77e:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 776:	fed7fae3          	bgeu	a5,a3,76a <free+0x30>
- 77a:	6398                	ld	a4,0(a5)
- 77c:	00e6e463          	bltu	a3,a4,784 <free+0x4a>
+ 780:	fed7fae3          	bgeu	a5,a3,774 <free+0x30>
+ 784:	6398                	ld	a4,0(a5)
+ 786:	00e6e463          	bltu	a3,a4,78e <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 780:	fee7eae3          	bltu	a5,a4,774 <free+0x3a>
+ 78a:	fee7eae3          	bltu	a5,a4,77e <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 784:	ff852583          	lw	a1,-8(a0)
- 788:	6390                	ld	a2,0(a5)
- 78a:	02059813          	slli	a6,a1,0x20
- 78e:	01c85713          	srli	a4,a6,0x1c
- 792:	9736                	add	a4,a4,a3
- 794:	fae60de3          	beq	a2,a4,74e <free+0x14>
+ 78e:	ff852583          	lw	a1,-8(a0)
+ 792:	6390                	ld	a2,0(a5)
+ 794:	02059813          	slli	a6,a1,0x20
+ 798:	01c85713          	srli	a4,a6,0x1c
+ 79c:	9736                	add	a4,a4,a3
+ 79e:	fae60de3          	beq	a2,a4,758 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 798:	fec53823          	sd	a2,-16(a0)
+ 7a2:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 79c:	4790                	lw	a2,8(a5)
- 79e:	02061593          	slli	a1,a2,0x20
- 7a2:	01c5d713          	srli	a4,a1,0x1c
- 7a6:	973e                	add	a4,a4,a5
- 7a8:	fae68ae3          	beq	a3,a4,75c <free+0x22>
+ 7a6:	4790                	lw	a2,8(a5)
+ 7a8:	02061593          	slli	a1,a2,0x20
+ 7ac:	01c5d713          	srli	a4,a1,0x1c
+ 7b0:	973e                	add	a4,a4,a5
+ 7b2:	fae68ae3          	beq	a3,a4,766 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 7ac:	e394                	sd	a3,0(a5)
+ 7b6:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 7ae:	00000717          	auipc	a4,0x0
- 7b2:	18f73123          	sd	a5,386(a4) # 930 <freep>
+ 7b8:	00000717          	auipc	a4,0x0
+ 7bc:	18f73023          	sd	a5,384(a4) # 938 <freep>
 }
- 7b6:	6422                	ld	s0,8(sp)
- 7b8:	0141                	addi	sp,sp,16
- 7ba:	8082                	ret
+ 7c0:	6422                	ld	s0,8(sp)
+ 7c2:	0141                	addi	sp,sp,16
+ 7c4:	8082                	ret
 
-00000000000007bc <malloc>:
+00000000000007c6 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 7bc:	7139                	addi	sp,sp,-64
- 7be:	fc06                	sd	ra,56(sp)
- 7c0:	f822                	sd	s0,48(sp)
- 7c2:	f426                	sd	s1,40(sp)
- 7c4:	f04a                	sd	s2,32(sp)
- 7c6:	ec4e                	sd	s3,24(sp)
- 7c8:	e852                	sd	s4,16(sp)
- 7ca:	e456                	sd	s5,8(sp)
- 7cc:	e05a                	sd	s6,0(sp)
- 7ce:	0080                	addi	s0,sp,64
+ 7c6:	7139                	addi	sp,sp,-64
+ 7c8:	fc06                	sd	ra,56(sp)
+ 7ca:	f822                	sd	s0,48(sp)
+ 7cc:	f426                	sd	s1,40(sp)
+ 7ce:	f04a                	sd	s2,32(sp)
+ 7d0:	ec4e                	sd	s3,24(sp)
+ 7d2:	e852                	sd	s4,16(sp)
+ 7d4:	e456                	sd	s5,8(sp)
+ 7d6:	e05a                	sd	s6,0(sp)
+ 7d8:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 7d0:	02051493          	slli	s1,a0,0x20
- 7d4:	9081                	srli	s1,s1,0x20
- 7d6:	04bd                	addi	s1,s1,15
- 7d8:	8091                	srli	s1,s1,0x4
- 7da:	00148a1b          	addiw	s4,s1,1
- 7de:	0485                	addi	s1,s1,1
+ 7da:	02051493          	slli	s1,a0,0x20
+ 7de:	9081                	srli	s1,s1,0x20
+ 7e0:	04bd                	addi	s1,s1,15
+ 7e2:	8091                	srli	s1,s1,0x4
+ 7e4:	00148a1b          	addiw	s4,s1,1
+ 7e8:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 7e0:	00000517          	auipc	a0,0x0
- 7e4:	15053503          	ld	a0,336(a0) # 930 <freep>
- 7e8:	c515                	beqz	a0,814 <malloc+0x58>
+ 7ea:	00000517          	auipc	a0,0x0
+ 7ee:	14e53503          	ld	a0,334(a0) # 938 <freep>
+ 7f2:	c515                	beqz	a0,81e <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 7ea:	611c                	ld	a5,0(a0)
+ 7f4:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 7ec:	4798                	lw	a4,8(a5)
- 7ee:	04977163          	bgeu	a4,s1,830 <malloc+0x74>
- 7f2:	89d2                	mv	s3,s4
- 7f4:	000a071b          	sext.w	a4,s4
- 7f8:	6685                	lui	a3,0x1
- 7fa:	00d77363          	bgeu	a4,a3,800 <malloc+0x44>
- 7fe:	6985                	lui	s3,0x1
- 800:	00098b1b          	sext.w	s6,s3
+ 7f6:	4798                	lw	a4,8(a5)
+ 7f8:	04977163          	bgeu	a4,s1,83a <malloc+0x74>
+ 7fc:	89d2                	mv	s3,s4
+ 7fe:	000a071b          	sext.w	a4,s4
+ 802:	6685                	lui	a3,0x1
+ 804:	00d77363          	bgeu	a4,a3,80a <malloc+0x44>
+ 808:	6985                	lui	s3,0x1
+ 80a:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 804:	0049999b          	slliw	s3,s3,0x4
+ 80e:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 808:	00000917          	auipc	s2,0x0
- 80c:	12890913          	addi	s2,s2,296 # 930 <freep>
+ 812:	00000917          	auipc	s2,0x0
+ 816:	12690913          	addi	s2,s2,294 # 938 <freep>
   if(p == (char*)-1)
- 810:	5afd                	li	s5,-1
- 812:	a8a5                	j	88a <malloc+0xce>
+ 81a:	5afd                	li	s5,-1
+ 81c:	a8a5                	j	894 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 814:	00000797          	auipc	a5,0x0
- 818:	11c78793          	addi	a5,a5,284 # 930 <freep>
- 81c:	00000717          	auipc	a4,0x0
- 820:	11c70713          	addi	a4,a4,284 # 938 <base>
- 824:	e398                	sd	a4,0(a5)
- 826:	e798                	sd	a4,8(a5)
+ 81e:	00000797          	auipc	a5,0x0
+ 822:	11a78793          	addi	a5,a5,282 # 938 <freep>
+ 826:	00000717          	auipc	a4,0x0
+ 82a:	11a70713          	addi	a4,a4,282 # 940 <base>
+ 82e:	e398                	sd	a4,0(a5)
+ 830:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 828:	0007a823          	sw	zero,16(a5)
+ 832:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 82c:	87ba                	mv	a5,a4
- 82e:	b7d1                	j	7f2 <malloc+0x36>
+ 836:	87ba                	mv	a5,a4
+ 838:	b7d1                	j	7fc <malloc+0x36>
       if(p->s.size == nunits)
- 830:	02e48c63          	beq	s1,a4,868 <malloc+0xac>
+ 83a:	02e48c63          	beq	s1,a4,872 <malloc+0xac>
         p->s.size -= nunits;
- 834:	4147073b          	subw	a4,a4,s4
- 838:	c798                	sw	a4,8(a5)
+ 83e:	4147073b          	subw	a4,a4,s4
+ 842:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 83a:	02071693          	slli	a3,a4,0x20
- 83e:	01c6d713          	srli	a4,a3,0x1c
- 842:	97ba                	add	a5,a5,a4
+ 844:	02071693          	slli	a3,a4,0x20
+ 848:	01c6d713          	srli	a4,a3,0x1c
+ 84c:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 844:	0147a423          	sw	s4,8(a5)
+ 84e:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 848:	00000717          	auipc	a4,0x0
- 84c:	0ea73423          	sd	a0,232(a4) # 930 <freep>
+ 852:	00000717          	auipc	a4,0x0
+ 856:	0ea73323          	sd	a0,230(a4) # 938 <freep>
       return (void*)(p + 1);
- 850:	01078513          	addi	a0,a5,16
+ 85a:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 854:	70e2                	ld	ra,56(sp)
- 856:	7442                	ld	s0,48(sp)
- 858:	74a2                	ld	s1,40(sp)
- 85a:	7902                	ld	s2,32(sp)
- 85c:	69e2                	ld	s3,24(sp)
- 85e:	6a42                	ld	s4,16(sp)
- 860:	6aa2                	ld	s5,8(sp)
- 862:	6b02                	ld	s6,0(sp)
- 864:	6121                	addi	sp,sp,64
- 866:	8082                	ret
+ 85e:	70e2                	ld	ra,56(sp)
+ 860:	7442                	ld	s0,48(sp)
+ 862:	74a2                	ld	s1,40(sp)
+ 864:	7902                	ld	s2,32(sp)
+ 866:	69e2                	ld	s3,24(sp)
+ 868:	6a42                	ld	s4,16(sp)
+ 86a:	6aa2                	ld	s5,8(sp)
+ 86c:	6b02                	ld	s6,0(sp)
+ 86e:	6121                	addi	sp,sp,64
+ 870:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 868:	6398                	ld	a4,0(a5)
- 86a:	e118                	sd	a4,0(a0)
- 86c:	bff1                	j	848 <malloc+0x8c>
+ 872:	6398                	ld	a4,0(a5)
+ 874:	e118                	sd	a4,0(a0)
+ 876:	bff1                	j	852 <malloc+0x8c>
   hp->s.size = nu;
- 86e:	01652423          	sw	s6,8(a0)
+ 878:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 872:	0541                	addi	a0,a0,16
- 874:	00000097          	auipc	ra,0x0
- 878:	ec6080e7          	jalr	-314(ra) # 73a <free>
+ 87c:	0541                	addi	a0,a0,16
+ 87e:	00000097          	auipc	ra,0x0
+ 882:	ec6080e7          	jalr	-314(ra) # 744 <free>
   return freep;
- 87c:	00093503          	ld	a0,0(s2)
+ 886:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 880:	d971                	beqz	a0,854 <malloc+0x98>
+ 88a:	d971                	beqz	a0,85e <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 882:	611c                	ld	a5,0(a0)
+ 88c:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 884:	4798                	lw	a4,8(a5)
- 886:	fa9775e3          	bgeu	a4,s1,830 <malloc+0x74>
+ 88e:	4798                	lw	a4,8(a5)
+ 890:	fa9775e3          	bgeu	a4,s1,83a <malloc+0x74>
     if(p == freep)
- 88a:	00093703          	ld	a4,0(s2)
- 88e:	853e                	mv	a0,a5
- 890:	fef719e3          	bne	a4,a5,882 <malloc+0xc6>
+ 894:	00093703          	ld	a4,0(s2)
+ 898:	853e                	mv	a0,a5
+ 89a:	fef719e3          	bne	a4,a5,88c <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 894:	854e                	mv	a0,s3
- 896:	00000097          	auipc	ra,0x0
- 89a:	b2a080e7          	jalr	-1238(ra) # 3c0 <sbrk>
+ 89e:	854e                	mv	a0,s3
+ 8a0:	00000097          	auipc	ra,0x0
+ 8a4:	b20080e7          	jalr	-1248(ra) # 3c0 <sbrk>
   if(p == (char*)-1)
- 89e:	fd5518e3          	bne	a0,s5,86e <malloc+0xb2>
+ 8a8:	fd5518e3          	bne	a0,s5,878 <malloc+0xb2>
         return 0;
- 8a2:	4501                	li	a0,0
- 8a4:	bf45                	j	854 <malloc+0x98>
+ 8ac:	4501                	li	a0,0
+ 8ae:	bf45                	j	85e <malloc+0x98>
diff --git a/xv6-user/echo.sym b/xv6-user/echo.sym
index be7929f..4015076 100644
--- a/xv6-user/echo.sym
+++ b/xv6-user/echo.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-00000000000008a8 .rodata
-0000000000000930 .bss
+00000000000008b0 .rodata
+0000000000000938 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-000000000000042c putc
-000000000000044e printint
-0000000000000918 digits
+0000000000000436 putc
+0000000000000458 printint
+0000000000000920 digits
 0000000000000000 umalloc.c
-0000000000000930 freep
-0000000000000938 base
+0000000000000938 freep
+0000000000000940 base
 0000000000000084 strcpy
-0000000000000704 printf
-0000000000001129 __global_pointer$
+000000000000070e printf
+0000000000001131 __global_pointer$
 00000000000003e0 dev
 000000000000028a memmove
+000000000000042c times
 0000000000000400 trace
 000000000000016a gets
-0000000000000929 __SDATA_BEGIN__
+0000000000000931 __SDATA_BEGIN__
 00000000000003b6 getpid
 000000000000031c memcpy
-00000000000007bc malloc
+00000000000007c6 malloc
 00000000000003f8 remove
 00000000000003c8 sleep
 0000000000000408 sysinfo
@@ -42,31 +43,31 @@
 0000000000000410 rename
 0000000000000362 write
 0000000000000390 fstat
-00000000000006d6 fprintf
+00000000000006e0 fprintf
 0000000000000376 kill
 00000000000000a0 strcat
-00000000000004f8 vprintf
+0000000000000502 vprintf
 00000000000003a4 chdir
 000000000000037e exec
 0000000000000346 wait
 0000000000000358 read
 00000000000002e2 memcmp
 0000000000000334 fork
-0000000000000948 __BSS_END__
+0000000000000950 __BSS_END__
 00000000000003c0 sbrk
 00000000000003d8 test_proc
 00000000000003d0 uptime
-0000000000000929 __bss_start
+0000000000000931 __bss_start
 0000000000000124 memset
 0000000000000000 main
 00000000000000ce strcmp
 0000000000000418 shutdown
 00000000000003ae dup
 00000000000003f0 getcwd
-0000000000000929 __DATA_BEGIN__
+0000000000000931 __DATA_BEGIN__
 00000000000001e4 stat
-0000000000000929 _edata
-0000000000000948 _end
+0000000000000931 _edata
+0000000000000950 _end
 000000000000033c exit
 000000000000022a atoi
 00000000000000fa strlen
@@ -74,4 +75,4 @@
 0000000000000146 strchr
 000000000000039a mkdir
 000000000000036c close
-000000000000073a free
+0000000000000744 free
diff --git a/xv6-user/find.asm b/xv6-user/find.asm
index c7ee3a8..de79dac 100644
--- a/xv6-user/find.asm
+++ b/xv6-user/find.asm
@@ -29,7 +29,7 @@ void find(char *filename)
     if ((fd = open(path, O_RDONLY)) < 0) {
   1a:	4581                	li	a1,0
   1c:	00001517          	auipc	a0,0x1
-  20:	b0450513          	addi	a0,a0,-1276 # b20 <path>
+  20:	b1450513          	addi	a0,a0,-1260 # b30 <path>
   24:	00000097          	auipc	ra,0x0
   28:	4e4080e7          	jalr	1252(ra) # 508 <open>
   2c:	04054163          	bltz	a0,6e <find+0x6e>
@@ -74,22 +74,22 @@ void find(char *filename)
   6c:	8082                	ret
         fprintf(2, "find: cannot open %s\n", path);
   6e:	00001617          	auipc	a2,0x1
-  72:	ab260613          	addi	a2,a2,-1358 # b20 <path>
+  72:	ac260613          	addi	a2,a2,-1342 # b30 <path>
   76:	00001597          	auipc	a1,0x1
-  7a:	9b258593          	addi	a1,a1,-1614 # a28 <malloc+0xea>
+  7a:	9c258593          	addi	a1,a1,-1598 # a38 <malloc+0xf0>
   7e:	4509                	li	a0,2
   80:	00000097          	auipc	ra,0x0
-  84:	7d8080e7          	jalr	2008(ra) # 858 <fprintf>
+  84:	7e2080e7          	jalr	2018(ra) # 862 <fprintf>
         return;
   88:	b7f9                	j	56 <find+0x56>
         fprintf(2, "find: cannot stat %s\n", path);
   8a:	00001617          	auipc	a2,0x1
-  8e:	a9660613          	addi	a2,a2,-1386 # b20 <path>
+  8e:	aa660613          	addi	a2,a2,-1370 # b30 <path>
   92:	00001597          	auipc	a1,0x1
-  96:	9ae58593          	addi	a1,a1,-1618 # a40 <malloc+0x102>
+  96:	9be58593          	addi	a1,a1,-1602 # a50 <malloc+0x108>
   9a:	4509                	li	a0,2
   9c:	00000097          	auipc	ra,0x0
-  a0:	7bc080e7          	jalr	1980(ra) # 858 <fprintf>
+  a0:	7c6080e7          	jalr	1990(ra) # 862 <fprintf>
         close(fd);
   a4:	8526                	mv	a0,s1
   a6:	00000097          	auipc	ra,0x0
@@ -98,7 +98,7 @@ void find(char *filename)
   ae:	b765                	j	56 <find+0x56>
     if (strlen(path) + 255 + 2 > sizeof(path)) {
   b0:	00001517          	auipc	a0,0x1
-  b4:	a7050513          	addi	a0,a0,-1424 # b20 <path>
+  b4:	a8050513          	addi	a0,a0,-1408 # b30 <path>
   b8:	00000097          	auipc	ra,0x0
   bc:	1c4080e7          	jalr	452(ra) # 27c <strlen>
   c0:	1015051b          	addiw	a0,a0,257
@@ -106,7 +106,7 @@ void find(char *filename)
   c8:	0aa7e863          	bltu	a5,a0,178 <find+0x178>
     char *p = path + strlen(path) - 1;
   cc:	00001917          	auipc	s2,0x1
-  d0:	a5490913          	addi	s2,s2,-1452 # b20 <path>
+  d0:	a6490913          	addi	s2,s2,-1436 # b30 <path>
   d4:	854a                	mv	a0,s2
   d6:	00000097          	auipc	ra,0x0
   da:	1a6080e7          	jalr	422(ra) # 27c <strlen>
@@ -121,7 +121,7 @@ void find(char *filename)
         *++p = '/';
   f4:	00f900a3          	sb	a5,1(s2)
   f8:	00001917          	auipc	s2,0x1
-  fc:	a2890913          	addi	s2,s2,-1496 # b20 <path>
+  fc:	a3890913          	addi	s2,s2,-1480 # b30 <path>
  100:	992a                	add	s2,s2,a0
     p++;
  102:	0905                	addi	s2,s2,1
@@ -129,14 +129,14 @@ void find(char *filename)
  104:	f7840993          	addi	s3,s0,-136
         if (strcmp(p, ".") == 0 || strcmp(p, "..") == 0) {
  108:	00001a97          	auipc	s5,0x1
- 10c:	968a8a93          	addi	s5,s5,-1688 # a70 <malloc+0x132>
+ 10c:	978a8a93          	addi	s5,s5,-1672 # a80 <malloc+0x138>
  110:	00001b17          	auipc	s6,0x1
- 114:	968b0b13          	addi	s6,s6,-1688 # a78 <malloc+0x13a>
+ 114:	978b0b13          	addi	s6,s6,-1672 # a88 <malloc+0x140>
             fprintf(1, "%s\n", path);
  118:	00001c17          	auipc	s8,0x1
- 11c:	a08c0c13          	addi	s8,s8,-1528 # b20 <path>
+ 11c:	a18c0c13          	addi	s8,s8,-1512 # b30 <path>
  120:	00001b97          	auipc	s7,0x1
- 124:	960b8b93          	addi	s7,s7,-1696 # a80 <malloc+0x142>
+ 124:	970b8b93          	addi	s7,s7,-1680 # a90 <malloc+0x148>
     while (readdir(fd, &st)) {
  128:	85ce                	mv	a1,s3
  12a:	8526                	mv	a0,s1
@@ -172,10 +172,10 @@ void find(char *filename)
  176:	bf4d                	j	128 <find+0x128>
         fprintf(2, "find: path too long\n");
  178:	00001597          	auipc	a1,0x1
- 17c:	8e058593          	addi	a1,a1,-1824 # a58 <malloc+0x11a>
+ 17c:	8f058593          	addi	a1,a1,-1808 # a68 <malloc+0x120>
  180:	4509                	li	a0,2
  182:	00000097          	auipc	ra,0x0
- 186:	6d6080e7          	jalr	1750(ra) # 858 <fprintf>
+ 186:	6e0080e7          	jalr	1760(ra) # 862 <fprintf>
         close(fd);
  18a:	8526                	mv	a0,s1
  18c:	00000097          	auipc	ra,0x0
@@ -187,7 +187,7 @@ void find(char *filename)
  198:	85de                	mv	a1,s7
  19a:	4505                	li	a0,1
  19c:	00000097          	auipc	ra,0x0
- 1a0:	6bc080e7          	jalr	1724(ra) # 858 <fprintf>
+ 1a0:	6c6080e7          	jalr	1734(ra) # 862 <fprintf>
  1a4:	b7e1                	j	16c <find+0x16c>
     close(fd);
  1a6:	8526                	mv	a0,s1
@@ -211,10 +211,10 @@ int main(int argc, char *argv[])
  1be:	02a7c063          	blt	a5,a0,1de <main+0x2c>
         fprintf(2, "Usage: find DIR FILENAME\n");
  1c2:	00001597          	auipc	a1,0x1
- 1c6:	8c658593          	addi	a1,a1,-1850 # a88 <malloc+0x14a>
+ 1c6:	8d658593          	addi	a1,a1,-1834 # a98 <malloc+0x150>
  1ca:	4509                	li	a0,2
  1cc:	00000097          	auipc	ra,0x0
- 1d0:	68c080e7          	jalr	1676(ra) # 858 <fprintf>
+ 1d0:	696080e7          	jalr	1686(ra) # 862 <fprintf>
         exit(0);
  1d4:	4501                	li	a0,0
  1d6:	00000097          	auipc	ra,0x0
@@ -224,7 +224,7 @@ int main(int argc, char *argv[])
         strcpy(path, argv[1]);
  1e0:	658c                	ld	a1,8(a1)
  1e2:	00001517          	auipc	a0,0x1
- 1e6:	93e50513          	addi	a0,a0,-1730 # b20 <path>
+ 1e6:	94e50513          	addi	a0,a0,-1714 # b30 <path>
  1ea:	00000097          	auipc	ra,0x0
  1ee:	01c080e7          	jalr	28(ra) # 206 <strcpy>
         find(argv[2]);
@@ -993,637 +993,647 @@ uname:
  ret
  5ac:	8082                	ret
 
-00000000000005ae <putc>:
+00000000000005ae <times>:
+.global times
+times:
+ li a7, SYS_times
+ 5ae:	09900893          	li	a7,153
+ ecall
+ 5b2:	00000073          	ecall
+ ret
+ 5b6:	8082                	ret
+
+00000000000005b8 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 5ae:	1101                	addi	sp,sp,-32
- 5b0:	ec06                	sd	ra,24(sp)
- 5b2:	e822                	sd	s0,16(sp)
- 5b4:	1000                	addi	s0,sp,32
- 5b6:	feb407a3          	sb	a1,-17(s0)
+ 5b8:	1101                	addi	sp,sp,-32
+ 5ba:	ec06                	sd	ra,24(sp)
+ 5bc:	e822                	sd	s0,16(sp)
+ 5be:	1000                	addi	s0,sp,32
+ 5c0:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 5ba:	4605                	li	a2,1
- 5bc:	fef40593          	addi	a1,s0,-17
- 5c0:	00000097          	auipc	ra,0x0
- 5c4:	f24080e7          	jalr	-220(ra) # 4e4 <write>
+ 5c4:	4605                	li	a2,1
+ 5c6:	fef40593          	addi	a1,s0,-17
+ 5ca:	00000097          	auipc	ra,0x0
+ 5ce:	f1a080e7          	jalr	-230(ra) # 4e4 <write>
 }
- 5c8:	60e2                	ld	ra,24(sp)
- 5ca:	6442                	ld	s0,16(sp)
- 5cc:	6105                	addi	sp,sp,32
- 5ce:	8082                	ret
+ 5d2:	60e2                	ld	ra,24(sp)
+ 5d4:	6442                	ld	s0,16(sp)
+ 5d6:	6105                	addi	sp,sp,32
+ 5d8:	8082                	ret
 
-00000000000005d0 <printint>:
+00000000000005da <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 5d0:	7139                	addi	sp,sp,-64
- 5d2:	fc06                	sd	ra,56(sp)
- 5d4:	f822                	sd	s0,48(sp)
- 5d6:	f426                	sd	s1,40(sp)
- 5d8:	f04a                	sd	s2,32(sp)
- 5da:	ec4e                	sd	s3,24(sp)
- 5dc:	0080                	addi	s0,sp,64
- 5de:	84aa                	mv	s1,a0
+ 5da:	7139                	addi	sp,sp,-64
+ 5dc:	fc06                	sd	ra,56(sp)
+ 5de:	f822                	sd	s0,48(sp)
+ 5e0:	f426                	sd	s1,40(sp)
+ 5e2:	f04a                	sd	s2,32(sp)
+ 5e4:	ec4e                	sd	s3,24(sp)
+ 5e6:	0080                	addi	s0,sp,64
+ 5e8:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 5e0:	c299                	beqz	a3,5e6 <printint+0x16>
- 5e2:	0805c863          	bltz	a1,672 <printint+0xa2>
+ 5ea:	c299                	beqz	a3,5f0 <printint+0x16>
+ 5ec:	0805c863          	bltz	a1,67c <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 5e6:	2581                	sext.w	a1,a1
+ 5f0:	2581                	sext.w	a1,a1
   neg = 0;
- 5e8:	4881                	li	a7,0
+ 5f2:	4881                	li	a7,0
   }
 
   i = 0;
- 5ea:	fc040993          	addi	s3,s0,-64
+ 5f4:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 5ee:	86ce                	mv	a3,s3
+ 5f8:	86ce                	mv	a3,s3
   i = 0;
- 5f0:	4701                	li	a4,0
+ 5fa:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 5f2:	2601                	sext.w	a2,a2
- 5f4:	00000517          	auipc	a0,0x0
- 5f8:	51450513          	addi	a0,a0,1300 # b08 <digits>
- 5fc:	883a                	mv	a6,a4
- 5fe:	2705                	addiw	a4,a4,1
- 600:	02c5f7bb          	remuw	a5,a1,a2
- 604:	1782                	slli	a5,a5,0x20
- 606:	9381                	srli	a5,a5,0x20
- 608:	97aa                	add	a5,a5,a0
- 60a:	0007c783          	lbu	a5,0(a5)
- 60e:	00f68023          	sb	a5,0(a3)
+ 5fc:	2601                	sext.w	a2,a2
+ 5fe:	00000517          	auipc	a0,0x0
+ 602:	51a50513          	addi	a0,a0,1306 # b18 <digits>
+ 606:	883a                	mv	a6,a4
+ 608:	2705                	addiw	a4,a4,1
+ 60a:	02c5f7bb          	remuw	a5,a1,a2
+ 60e:	1782                	slli	a5,a5,0x20
+ 610:	9381                	srli	a5,a5,0x20
+ 612:	97aa                	add	a5,a5,a0
+ 614:	0007c783          	lbu	a5,0(a5)
+ 618:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 612:	0005879b          	sext.w	a5,a1
- 616:	02c5d5bb          	divuw	a1,a1,a2
- 61a:	0685                	addi	a3,a3,1
- 61c:	fec7f0e3          	bgeu	a5,a2,5fc <printint+0x2c>
+ 61c:	0005879b          	sext.w	a5,a1
+ 620:	02c5d5bb          	divuw	a1,a1,a2
+ 624:	0685                	addi	a3,a3,1
+ 626:	fec7f0e3          	bgeu	a5,a2,606 <printint+0x2c>
   if(neg)
- 620:	00088c63          	beqz	a7,638 <printint+0x68>
+ 62a:	00088c63          	beqz	a7,642 <printint+0x68>
     buf[i++] = '-';
- 624:	fd070793          	addi	a5,a4,-48
- 628:	00878733          	add	a4,a5,s0
- 62c:	02d00793          	li	a5,45
- 630:	fef70823          	sb	a5,-16(a4)
- 634:	0028071b          	addiw	a4,a6,2
+ 62e:	fd070793          	addi	a5,a4,-48
+ 632:	00878733          	add	a4,a5,s0
+ 636:	02d00793          	li	a5,45
+ 63a:	fef70823          	sb	a5,-16(a4)
+ 63e:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 638:	02e05663          	blez	a4,664 <printint+0x94>
- 63c:	fc040913          	addi	s2,s0,-64
- 640:	993a                	add	s2,s2,a4
- 642:	19fd                	addi	s3,s3,-1
- 644:	99ba                	add	s3,s3,a4
- 646:	377d                	addiw	a4,a4,-1
- 648:	1702                	slli	a4,a4,0x20
- 64a:	9301                	srli	a4,a4,0x20
- 64c:	40e989b3          	sub	s3,s3,a4
+ 642:	02e05663          	blez	a4,66e <printint+0x94>
+ 646:	fc040913          	addi	s2,s0,-64
+ 64a:	993a                	add	s2,s2,a4
+ 64c:	19fd                	addi	s3,s3,-1
+ 64e:	99ba                	add	s3,s3,a4
+ 650:	377d                	addiw	a4,a4,-1
+ 652:	1702                	slli	a4,a4,0x20
+ 654:	9301                	srli	a4,a4,0x20
+ 656:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 650:	fff94583          	lbu	a1,-1(s2)
- 654:	8526                	mv	a0,s1
- 656:	00000097          	auipc	ra,0x0
- 65a:	f58080e7          	jalr	-168(ra) # 5ae <putc>
+ 65a:	fff94583          	lbu	a1,-1(s2)
+ 65e:	8526                	mv	a0,s1
+ 660:	00000097          	auipc	ra,0x0
+ 664:	f58080e7          	jalr	-168(ra) # 5b8 <putc>
   while(--i >= 0)
- 65e:	197d                	addi	s2,s2,-1
- 660:	ff3918e3          	bne	s2,s3,650 <printint+0x80>
+ 668:	197d                	addi	s2,s2,-1
+ 66a:	ff3918e3          	bne	s2,s3,65a <printint+0x80>
 }
- 664:	70e2                	ld	ra,56(sp)
- 666:	7442                	ld	s0,48(sp)
- 668:	74a2                	ld	s1,40(sp)
- 66a:	7902                	ld	s2,32(sp)
- 66c:	69e2                	ld	s3,24(sp)
- 66e:	6121                	addi	sp,sp,64
- 670:	8082                	ret
+ 66e:	70e2                	ld	ra,56(sp)
+ 670:	7442                	ld	s0,48(sp)
+ 672:	74a2                	ld	s1,40(sp)
+ 674:	7902                	ld	s2,32(sp)
+ 676:	69e2                	ld	s3,24(sp)
+ 678:	6121                	addi	sp,sp,64
+ 67a:	8082                	ret
     x = -xx;
- 672:	40b005bb          	negw	a1,a1
+ 67c:	40b005bb          	negw	a1,a1
     neg = 1;
- 676:	4885                	li	a7,1
+ 680:	4885                	li	a7,1
     x = -xx;
- 678:	bf8d                	j	5ea <printint+0x1a>
+ 682:	bf8d                	j	5f4 <printint+0x1a>
 
-000000000000067a <vprintf>:
+0000000000000684 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 67a:	7119                	addi	sp,sp,-128
- 67c:	fc86                	sd	ra,120(sp)
- 67e:	f8a2                	sd	s0,112(sp)
- 680:	f4a6                	sd	s1,104(sp)
- 682:	f0ca                	sd	s2,96(sp)
- 684:	ecce                	sd	s3,88(sp)
- 686:	e8d2                	sd	s4,80(sp)
- 688:	e4d6                	sd	s5,72(sp)
- 68a:	e0da                	sd	s6,64(sp)
- 68c:	fc5e                	sd	s7,56(sp)
- 68e:	f862                	sd	s8,48(sp)
- 690:	f466                	sd	s9,40(sp)
- 692:	f06a                	sd	s10,32(sp)
- 694:	ec6e                	sd	s11,24(sp)
- 696:	0100                	addi	s0,sp,128
+ 684:	7119                	addi	sp,sp,-128
+ 686:	fc86                	sd	ra,120(sp)
+ 688:	f8a2                	sd	s0,112(sp)
+ 68a:	f4a6                	sd	s1,104(sp)
+ 68c:	f0ca                	sd	s2,96(sp)
+ 68e:	ecce                	sd	s3,88(sp)
+ 690:	e8d2                	sd	s4,80(sp)
+ 692:	e4d6                	sd	s5,72(sp)
+ 694:	e0da                	sd	s6,64(sp)
+ 696:	fc5e                	sd	s7,56(sp)
+ 698:	f862                	sd	s8,48(sp)
+ 69a:	f466                	sd	s9,40(sp)
+ 69c:	f06a                	sd	s10,32(sp)
+ 69e:	ec6e                	sd	s11,24(sp)
+ 6a0:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 698:	0005c903          	lbu	s2,0(a1)
- 69c:	18090f63          	beqz	s2,83a <vprintf+0x1c0>
- 6a0:	8aaa                	mv	s5,a0
- 6a2:	8b32                	mv	s6,a2
- 6a4:	00158493          	addi	s1,a1,1
+ 6a2:	0005c903          	lbu	s2,0(a1)
+ 6a6:	18090f63          	beqz	s2,844 <vprintf+0x1c0>
+ 6aa:	8aaa                	mv	s5,a0
+ 6ac:	8b32                	mv	s6,a2
+ 6ae:	00158493          	addi	s1,a1,1
   state = 0;
- 6a8:	4981                	li	s3,0
+ 6b2:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 6aa:	02500a13          	li	s4,37
- 6ae:	4c55                	li	s8,21
- 6b0:	00000c97          	auipc	s9,0x0
- 6b4:	400c8c93          	addi	s9,s9,1024 # ab0 <malloc+0x172>
+ 6b4:	02500a13          	li	s4,37
+ 6b8:	4c55                	li	s8,21
+ 6ba:	00000c97          	auipc	s9,0x0
+ 6be:	406c8c93          	addi	s9,s9,1030 # ac0 <malloc+0x178>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 6b8:	02800d93          	li	s11,40
+ 6c2:	02800d93          	li	s11,40
   putc(fd, 'x');
- 6bc:	4d41                	li	s10,16
+ 6c6:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 6be:	00000b97          	auipc	s7,0x0
- 6c2:	44ab8b93          	addi	s7,s7,1098 # b08 <digits>
- 6c6:	a839                	j	6e4 <vprintf+0x6a>
+ 6c8:	00000b97          	auipc	s7,0x0
+ 6cc:	450b8b93          	addi	s7,s7,1104 # b18 <digits>
+ 6d0:	a839                	j	6ee <vprintf+0x6a>
         putc(fd, c);
- 6c8:	85ca                	mv	a1,s2
- 6ca:	8556                	mv	a0,s5
- 6cc:	00000097          	auipc	ra,0x0
- 6d0:	ee2080e7          	jalr	-286(ra) # 5ae <putc>
- 6d4:	a019                	j	6da <vprintf+0x60>
+ 6d2:	85ca                	mv	a1,s2
+ 6d4:	8556                	mv	a0,s5
+ 6d6:	00000097          	auipc	ra,0x0
+ 6da:	ee2080e7          	jalr	-286(ra) # 5b8 <putc>
+ 6de:	a019                	j	6e4 <vprintf+0x60>
     } else if(state == '%'){
- 6d6:	01498d63          	beq	s3,s4,6f0 <vprintf+0x76>
+ 6e0:	01498d63          	beq	s3,s4,6fa <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 6da:	0485                	addi	s1,s1,1
- 6dc:	fff4c903          	lbu	s2,-1(s1)
- 6e0:	14090d63          	beqz	s2,83a <vprintf+0x1c0>
+ 6e4:	0485                	addi	s1,s1,1
+ 6e6:	fff4c903          	lbu	s2,-1(s1)
+ 6ea:	14090d63          	beqz	s2,844 <vprintf+0x1c0>
     if(state == 0){
- 6e4:	fe0999e3          	bnez	s3,6d6 <vprintf+0x5c>
+ 6ee:	fe0999e3          	bnez	s3,6e0 <vprintf+0x5c>
       if(c == '%'){
- 6e8:	ff4910e3          	bne	s2,s4,6c8 <vprintf+0x4e>
+ 6f2:	ff4910e3          	bne	s2,s4,6d2 <vprintf+0x4e>
         state = '%';
- 6ec:	89d2                	mv	s3,s4
- 6ee:	b7f5                	j	6da <vprintf+0x60>
+ 6f6:	89d2                	mv	s3,s4
+ 6f8:	b7f5                	j	6e4 <vprintf+0x60>
       if(c == 'd'){
- 6f0:	11490c63          	beq	s2,s4,808 <vprintf+0x18e>
- 6f4:	f9d9079b          	addiw	a5,s2,-99
- 6f8:	0ff7f793          	zext.b	a5,a5
- 6fc:	10fc6e63          	bltu	s8,a5,818 <vprintf+0x19e>
- 700:	f9d9079b          	addiw	a5,s2,-99
- 704:	0ff7f713          	zext.b	a4,a5
- 708:	10ec6863          	bltu	s8,a4,818 <vprintf+0x19e>
- 70c:	00271793          	slli	a5,a4,0x2
- 710:	97e6                	add	a5,a5,s9
- 712:	439c                	lw	a5,0(a5)
- 714:	97e6                	add	a5,a5,s9
- 716:	8782                	jr	a5
+ 6fa:	11490c63          	beq	s2,s4,812 <vprintf+0x18e>
+ 6fe:	f9d9079b          	addiw	a5,s2,-99
+ 702:	0ff7f793          	zext.b	a5,a5
+ 706:	10fc6e63          	bltu	s8,a5,822 <vprintf+0x19e>
+ 70a:	f9d9079b          	addiw	a5,s2,-99
+ 70e:	0ff7f713          	zext.b	a4,a5
+ 712:	10ec6863          	bltu	s8,a4,822 <vprintf+0x19e>
+ 716:	00271793          	slli	a5,a4,0x2
+ 71a:	97e6                	add	a5,a5,s9
+ 71c:	439c                	lw	a5,0(a5)
+ 71e:	97e6                	add	a5,a5,s9
+ 720:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 718:	008b0913          	addi	s2,s6,8
- 71c:	4685                	li	a3,1
- 71e:	4629                	li	a2,10
- 720:	000b2583          	lw	a1,0(s6)
- 724:	8556                	mv	a0,s5
- 726:	00000097          	auipc	ra,0x0
- 72a:	eaa080e7          	jalr	-342(ra) # 5d0 <printint>
- 72e:	8b4a                	mv	s6,s2
+ 722:	008b0913          	addi	s2,s6,8
+ 726:	4685                	li	a3,1
+ 728:	4629                	li	a2,10
+ 72a:	000b2583          	lw	a1,0(s6)
+ 72e:	8556                	mv	a0,s5
+ 730:	00000097          	auipc	ra,0x0
+ 734:	eaa080e7          	jalr	-342(ra) # 5da <printint>
+ 738:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 730:	4981                	li	s3,0
- 732:	b765                	j	6da <vprintf+0x60>
+ 73a:	4981                	li	s3,0
+ 73c:	b765                	j	6e4 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 734:	008b0913          	addi	s2,s6,8
- 738:	4681                	li	a3,0
- 73a:	4629                	li	a2,10
- 73c:	000b2583          	lw	a1,0(s6)
- 740:	8556                	mv	a0,s5
- 742:	00000097          	auipc	ra,0x0
- 746:	e8e080e7          	jalr	-370(ra) # 5d0 <printint>
- 74a:	8b4a                	mv	s6,s2
+ 73e:	008b0913          	addi	s2,s6,8
+ 742:	4681                	li	a3,0
+ 744:	4629                	li	a2,10
+ 746:	000b2583          	lw	a1,0(s6)
+ 74a:	8556                	mv	a0,s5
+ 74c:	00000097          	auipc	ra,0x0
+ 750:	e8e080e7          	jalr	-370(ra) # 5da <printint>
+ 754:	8b4a                	mv	s6,s2
       state = 0;
- 74c:	4981                	li	s3,0
- 74e:	b771                	j	6da <vprintf+0x60>
+ 756:	4981                	li	s3,0
+ 758:	b771                	j	6e4 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 750:	008b0913          	addi	s2,s6,8
- 754:	4681                	li	a3,0
- 756:	866a                	mv	a2,s10
- 758:	000b2583          	lw	a1,0(s6)
- 75c:	8556                	mv	a0,s5
- 75e:	00000097          	auipc	ra,0x0
- 762:	e72080e7          	jalr	-398(ra) # 5d0 <printint>
- 766:	8b4a                	mv	s6,s2
+ 75a:	008b0913          	addi	s2,s6,8
+ 75e:	4681                	li	a3,0
+ 760:	866a                	mv	a2,s10
+ 762:	000b2583          	lw	a1,0(s6)
+ 766:	8556                	mv	a0,s5
+ 768:	00000097          	auipc	ra,0x0
+ 76c:	e72080e7          	jalr	-398(ra) # 5da <printint>
+ 770:	8b4a                	mv	s6,s2
       state = 0;
- 768:	4981                	li	s3,0
- 76a:	bf85                	j	6da <vprintf+0x60>
+ 772:	4981                	li	s3,0
+ 774:	bf85                	j	6e4 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 76c:	008b0793          	addi	a5,s6,8
- 770:	f8f43423          	sd	a5,-120(s0)
- 774:	000b3983          	ld	s3,0(s6)
+ 776:	008b0793          	addi	a5,s6,8
+ 77a:	f8f43423          	sd	a5,-120(s0)
+ 77e:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 778:	03000593          	li	a1,48
- 77c:	8556                	mv	a0,s5
- 77e:	00000097          	auipc	ra,0x0
- 782:	e30080e7          	jalr	-464(ra) # 5ae <putc>
+ 782:	03000593          	li	a1,48
+ 786:	8556                	mv	a0,s5
+ 788:	00000097          	auipc	ra,0x0
+ 78c:	e30080e7          	jalr	-464(ra) # 5b8 <putc>
   putc(fd, 'x');
- 786:	07800593          	li	a1,120
- 78a:	8556                	mv	a0,s5
- 78c:	00000097          	auipc	ra,0x0
- 790:	e22080e7          	jalr	-478(ra) # 5ae <putc>
- 794:	896a                	mv	s2,s10
+ 790:	07800593          	li	a1,120
+ 794:	8556                	mv	a0,s5
+ 796:	00000097          	auipc	ra,0x0
+ 79a:	e22080e7          	jalr	-478(ra) # 5b8 <putc>
+ 79e:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 796:	03c9d793          	srli	a5,s3,0x3c
- 79a:	97de                	add	a5,a5,s7
- 79c:	0007c583          	lbu	a1,0(a5)
- 7a0:	8556                	mv	a0,s5
- 7a2:	00000097          	auipc	ra,0x0
- 7a6:	e0c080e7          	jalr	-500(ra) # 5ae <putc>
+ 7a0:	03c9d793          	srli	a5,s3,0x3c
+ 7a4:	97de                	add	a5,a5,s7
+ 7a6:	0007c583          	lbu	a1,0(a5)
+ 7aa:	8556                	mv	a0,s5
+ 7ac:	00000097          	auipc	ra,0x0
+ 7b0:	e0c080e7          	jalr	-500(ra) # 5b8 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 7aa:	0992                	slli	s3,s3,0x4
- 7ac:	397d                	addiw	s2,s2,-1
- 7ae:	fe0914e3          	bnez	s2,796 <vprintf+0x11c>
+ 7b4:	0992                	slli	s3,s3,0x4
+ 7b6:	397d                	addiw	s2,s2,-1
+ 7b8:	fe0914e3          	bnez	s2,7a0 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 7b2:	f8843b03          	ld	s6,-120(s0)
+ 7bc:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 7b6:	4981                	li	s3,0
- 7b8:	b70d                	j	6da <vprintf+0x60>
+ 7c0:	4981                	li	s3,0
+ 7c2:	b70d                	j	6e4 <vprintf+0x60>
         s = va_arg(ap, char*);
- 7ba:	008b0913          	addi	s2,s6,8
- 7be:	000b3983          	ld	s3,0(s6)
+ 7c4:	008b0913          	addi	s2,s6,8
+ 7c8:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 7c2:	02098163          	beqz	s3,7e4 <vprintf+0x16a>
+ 7cc:	02098163          	beqz	s3,7ee <vprintf+0x16a>
         while(*s != 0){
- 7c6:	0009c583          	lbu	a1,0(s3)
- 7ca:	c5ad                	beqz	a1,834 <vprintf+0x1ba>
+ 7d0:	0009c583          	lbu	a1,0(s3)
+ 7d4:	c5ad                	beqz	a1,83e <vprintf+0x1ba>
           putc(fd, *s);
- 7cc:	8556                	mv	a0,s5
- 7ce:	00000097          	auipc	ra,0x0
- 7d2:	de0080e7          	jalr	-544(ra) # 5ae <putc>
+ 7d6:	8556                	mv	a0,s5
+ 7d8:	00000097          	auipc	ra,0x0
+ 7dc:	de0080e7          	jalr	-544(ra) # 5b8 <putc>
           s++;
- 7d6:	0985                	addi	s3,s3,1
+ 7e0:	0985                	addi	s3,s3,1
         while(*s != 0){
- 7d8:	0009c583          	lbu	a1,0(s3)
- 7dc:	f9e5                	bnez	a1,7cc <vprintf+0x152>
+ 7e2:	0009c583          	lbu	a1,0(s3)
+ 7e6:	f9e5                	bnez	a1,7d6 <vprintf+0x152>
         s = va_arg(ap, char*);
- 7de:	8b4a                	mv	s6,s2
+ 7e8:	8b4a                	mv	s6,s2
       state = 0;
- 7e0:	4981                	li	s3,0
- 7e2:	bde5                	j	6da <vprintf+0x60>
+ 7ea:	4981                	li	s3,0
+ 7ec:	bde5                	j	6e4 <vprintf+0x60>
           s = "(null)";
- 7e4:	00000997          	auipc	s3,0x0
- 7e8:	2c498993          	addi	s3,s3,708 # aa8 <malloc+0x16a>
+ 7ee:	00000997          	auipc	s3,0x0
+ 7f2:	2ca98993          	addi	s3,s3,714 # ab8 <malloc+0x170>
         while(*s != 0){
- 7ec:	85ee                	mv	a1,s11
- 7ee:	bff9                	j	7cc <vprintf+0x152>
+ 7f6:	85ee                	mv	a1,s11
+ 7f8:	bff9                	j	7d6 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 7f0:	008b0913          	addi	s2,s6,8
- 7f4:	000b4583          	lbu	a1,0(s6)
- 7f8:	8556                	mv	a0,s5
- 7fa:	00000097          	auipc	ra,0x0
- 7fe:	db4080e7          	jalr	-588(ra) # 5ae <putc>
- 802:	8b4a                	mv	s6,s2
+ 7fa:	008b0913          	addi	s2,s6,8
+ 7fe:	000b4583          	lbu	a1,0(s6)
+ 802:	8556                	mv	a0,s5
+ 804:	00000097          	auipc	ra,0x0
+ 808:	db4080e7          	jalr	-588(ra) # 5b8 <putc>
+ 80c:	8b4a                	mv	s6,s2
       state = 0;
- 804:	4981                	li	s3,0
- 806:	bdd1                	j	6da <vprintf+0x60>
+ 80e:	4981                	li	s3,0
+ 810:	bdd1                	j	6e4 <vprintf+0x60>
         putc(fd, c);
- 808:	85d2                	mv	a1,s4
- 80a:	8556                	mv	a0,s5
- 80c:	00000097          	auipc	ra,0x0
- 810:	da2080e7          	jalr	-606(ra) # 5ae <putc>
+ 812:	85d2                	mv	a1,s4
+ 814:	8556                	mv	a0,s5
+ 816:	00000097          	auipc	ra,0x0
+ 81a:	da2080e7          	jalr	-606(ra) # 5b8 <putc>
       state = 0;
- 814:	4981                	li	s3,0
- 816:	b5d1                	j	6da <vprintf+0x60>
+ 81e:	4981                	li	s3,0
+ 820:	b5d1                	j	6e4 <vprintf+0x60>
         putc(fd, '%');
- 818:	85d2                	mv	a1,s4
- 81a:	8556                	mv	a0,s5
- 81c:	00000097          	auipc	ra,0x0
- 820:	d92080e7          	jalr	-622(ra) # 5ae <putc>
+ 822:	85d2                	mv	a1,s4
+ 824:	8556                	mv	a0,s5
+ 826:	00000097          	auipc	ra,0x0
+ 82a:	d92080e7          	jalr	-622(ra) # 5b8 <putc>
         putc(fd, c);
- 824:	85ca                	mv	a1,s2
- 826:	8556                	mv	a0,s5
- 828:	00000097          	auipc	ra,0x0
- 82c:	d86080e7          	jalr	-634(ra) # 5ae <putc>
+ 82e:	85ca                	mv	a1,s2
+ 830:	8556                	mv	a0,s5
+ 832:	00000097          	auipc	ra,0x0
+ 836:	d86080e7          	jalr	-634(ra) # 5b8 <putc>
       state = 0;
- 830:	4981                	li	s3,0
- 832:	b565                	j	6da <vprintf+0x60>
+ 83a:	4981                	li	s3,0
+ 83c:	b565                	j	6e4 <vprintf+0x60>
         s = va_arg(ap, char*);
- 834:	8b4a                	mv	s6,s2
+ 83e:	8b4a                	mv	s6,s2
       state = 0;
- 836:	4981                	li	s3,0
- 838:	b54d                	j	6da <vprintf+0x60>
+ 840:	4981                	li	s3,0
+ 842:	b54d                	j	6e4 <vprintf+0x60>
     }
   }
 }
- 83a:	70e6                	ld	ra,120(sp)
- 83c:	7446                	ld	s0,112(sp)
- 83e:	74a6                	ld	s1,104(sp)
- 840:	7906                	ld	s2,96(sp)
- 842:	69e6                	ld	s3,88(sp)
- 844:	6a46                	ld	s4,80(sp)
- 846:	6aa6                	ld	s5,72(sp)
- 848:	6b06                	ld	s6,64(sp)
- 84a:	7be2                	ld	s7,56(sp)
- 84c:	7c42                	ld	s8,48(sp)
- 84e:	7ca2                	ld	s9,40(sp)
- 850:	7d02                	ld	s10,32(sp)
- 852:	6de2                	ld	s11,24(sp)
- 854:	6109                	addi	sp,sp,128
- 856:	8082                	ret
-
-0000000000000858 <fprintf>:
+ 844:	70e6                	ld	ra,120(sp)
+ 846:	7446                	ld	s0,112(sp)
+ 848:	74a6                	ld	s1,104(sp)
+ 84a:	7906                	ld	s2,96(sp)
+ 84c:	69e6                	ld	s3,88(sp)
+ 84e:	6a46                	ld	s4,80(sp)
+ 850:	6aa6                	ld	s5,72(sp)
+ 852:	6b06                	ld	s6,64(sp)
+ 854:	7be2                	ld	s7,56(sp)
+ 856:	7c42                	ld	s8,48(sp)
+ 858:	7ca2                	ld	s9,40(sp)
+ 85a:	7d02                	ld	s10,32(sp)
+ 85c:	6de2                	ld	s11,24(sp)
+ 85e:	6109                	addi	sp,sp,128
+ 860:	8082                	ret
+
+0000000000000862 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 858:	715d                	addi	sp,sp,-80
- 85a:	ec06                	sd	ra,24(sp)
- 85c:	e822                	sd	s0,16(sp)
- 85e:	1000                	addi	s0,sp,32
- 860:	e010                	sd	a2,0(s0)
- 862:	e414                	sd	a3,8(s0)
- 864:	e818                	sd	a4,16(s0)
- 866:	ec1c                	sd	a5,24(s0)
- 868:	03043023          	sd	a6,32(s0)
- 86c:	03143423          	sd	a7,40(s0)
+ 862:	715d                	addi	sp,sp,-80
+ 864:	ec06                	sd	ra,24(sp)
+ 866:	e822                	sd	s0,16(sp)
+ 868:	1000                	addi	s0,sp,32
+ 86a:	e010                	sd	a2,0(s0)
+ 86c:	e414                	sd	a3,8(s0)
+ 86e:	e818                	sd	a4,16(s0)
+ 870:	ec1c                	sd	a5,24(s0)
+ 872:	03043023          	sd	a6,32(s0)
+ 876:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 870:	8622                	mv	a2,s0
- 872:	fe843423          	sd	s0,-24(s0)
+ 87a:	8622                	mv	a2,s0
+ 87c:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 876:	00000097          	auipc	ra,0x0
- 87a:	e04080e7          	jalr	-508(ra) # 67a <vprintf>
+ 880:	00000097          	auipc	ra,0x0
+ 884:	e04080e7          	jalr	-508(ra) # 684 <vprintf>
 }
- 87e:	60e2                	ld	ra,24(sp)
- 880:	6442                	ld	s0,16(sp)
- 882:	6161                	addi	sp,sp,80
- 884:	8082                	ret
+ 888:	60e2                	ld	ra,24(sp)
+ 88a:	6442                	ld	s0,16(sp)
+ 88c:	6161                	addi	sp,sp,80
+ 88e:	8082                	ret
 
-0000000000000886 <printf>:
+0000000000000890 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 886:	711d                	addi	sp,sp,-96
- 888:	ec06                	sd	ra,24(sp)
- 88a:	e822                	sd	s0,16(sp)
- 88c:	1000                	addi	s0,sp,32
- 88e:	e40c                	sd	a1,8(s0)
- 890:	e810                	sd	a2,16(s0)
- 892:	ec14                	sd	a3,24(s0)
- 894:	f018                	sd	a4,32(s0)
- 896:	f41c                	sd	a5,40(s0)
- 898:	03043823          	sd	a6,48(s0)
- 89c:	03143c23          	sd	a7,56(s0)
+ 890:	711d                	addi	sp,sp,-96
+ 892:	ec06                	sd	ra,24(sp)
+ 894:	e822                	sd	s0,16(sp)
+ 896:	1000                	addi	s0,sp,32
+ 898:	e40c                	sd	a1,8(s0)
+ 89a:	e810                	sd	a2,16(s0)
+ 89c:	ec14                	sd	a3,24(s0)
+ 89e:	f018                	sd	a4,32(s0)
+ 8a0:	f41c                	sd	a5,40(s0)
+ 8a2:	03043823          	sd	a6,48(s0)
+ 8a6:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 8a0:	00840613          	addi	a2,s0,8
- 8a4:	fec43423          	sd	a2,-24(s0)
+ 8aa:	00840613          	addi	a2,s0,8
+ 8ae:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 8a8:	85aa                	mv	a1,a0
- 8aa:	4505                	li	a0,1
- 8ac:	00000097          	auipc	ra,0x0
- 8b0:	dce080e7          	jalr	-562(ra) # 67a <vprintf>
+ 8b2:	85aa                	mv	a1,a0
+ 8b4:	4505                	li	a0,1
+ 8b6:	00000097          	auipc	ra,0x0
+ 8ba:	dce080e7          	jalr	-562(ra) # 684 <vprintf>
 }
- 8b4:	60e2                	ld	ra,24(sp)
- 8b6:	6442                	ld	s0,16(sp)
- 8b8:	6125                	addi	sp,sp,96
- 8ba:	8082                	ret
+ 8be:	60e2                	ld	ra,24(sp)
+ 8c0:	6442                	ld	s0,16(sp)
+ 8c2:	6125                	addi	sp,sp,96
+ 8c4:	8082                	ret
 
-00000000000008bc <free>:
+00000000000008c6 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 8bc:	1141                	addi	sp,sp,-16
- 8be:	e422                	sd	s0,8(sp)
- 8c0:	0800                	addi	s0,sp,16
+ 8c6:	1141                	addi	sp,sp,-16
+ 8c8:	e422                	sd	s0,8(sp)
+ 8ca:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 8c2:	ff050693          	addi	a3,a0,-16
+ 8cc:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 8c6:	00000797          	auipc	a5,0x0
- 8ca:	45a7b783          	ld	a5,1114(a5) # d20 <freep>
- 8ce:	a02d                	j	8f8 <free+0x3c>
+ 8d0:	00000797          	auipc	a5,0x0
+ 8d4:	4607b783          	ld	a5,1120(a5) # d30 <freep>
+ 8d8:	a02d                	j	902 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 8d0:	4618                	lw	a4,8(a2)
- 8d2:	9f2d                	addw	a4,a4,a1
- 8d4:	fee52c23          	sw	a4,-8(a0)
+ 8da:	4618                	lw	a4,8(a2)
+ 8dc:	9f2d                	addw	a4,a4,a1
+ 8de:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 8d8:	6398                	ld	a4,0(a5)
- 8da:	6310                	ld	a2,0(a4)
- 8dc:	a83d                	j	91a <free+0x5e>
+ 8e2:	6398                	ld	a4,0(a5)
+ 8e4:	6310                	ld	a2,0(a4)
+ 8e6:	a83d                	j	924 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 8de:	ff852703          	lw	a4,-8(a0)
- 8e2:	9f31                	addw	a4,a4,a2
- 8e4:	c798                	sw	a4,8(a5)
+ 8e8:	ff852703          	lw	a4,-8(a0)
+ 8ec:	9f31                	addw	a4,a4,a2
+ 8ee:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 8e6:	ff053683          	ld	a3,-16(a0)
- 8ea:	a091                	j	92e <free+0x72>
+ 8f0:	ff053683          	ld	a3,-16(a0)
+ 8f4:	a091                	j	938 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 8ec:	6398                	ld	a4,0(a5)
- 8ee:	00e7e463          	bltu	a5,a4,8f6 <free+0x3a>
- 8f2:	00e6ea63          	bltu	a3,a4,906 <free+0x4a>
+ 8f6:	6398                	ld	a4,0(a5)
+ 8f8:	00e7e463          	bltu	a5,a4,900 <free+0x3a>
+ 8fc:	00e6ea63          	bltu	a3,a4,910 <free+0x4a>
 {
- 8f6:	87ba                	mv	a5,a4
+ 900:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 8f8:	fed7fae3          	bgeu	a5,a3,8ec <free+0x30>
- 8fc:	6398                	ld	a4,0(a5)
- 8fe:	00e6e463          	bltu	a3,a4,906 <free+0x4a>
+ 902:	fed7fae3          	bgeu	a5,a3,8f6 <free+0x30>
+ 906:	6398                	ld	a4,0(a5)
+ 908:	00e6e463          	bltu	a3,a4,910 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 902:	fee7eae3          	bltu	a5,a4,8f6 <free+0x3a>
+ 90c:	fee7eae3          	bltu	a5,a4,900 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 906:	ff852583          	lw	a1,-8(a0)
- 90a:	6390                	ld	a2,0(a5)
- 90c:	02059813          	slli	a6,a1,0x20
- 910:	01c85713          	srli	a4,a6,0x1c
- 914:	9736                	add	a4,a4,a3
- 916:	fae60de3          	beq	a2,a4,8d0 <free+0x14>
+ 910:	ff852583          	lw	a1,-8(a0)
+ 914:	6390                	ld	a2,0(a5)
+ 916:	02059813          	slli	a6,a1,0x20
+ 91a:	01c85713          	srli	a4,a6,0x1c
+ 91e:	9736                	add	a4,a4,a3
+ 920:	fae60de3          	beq	a2,a4,8da <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 91a:	fec53823          	sd	a2,-16(a0)
+ 924:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 91e:	4790                	lw	a2,8(a5)
- 920:	02061593          	slli	a1,a2,0x20
- 924:	01c5d713          	srli	a4,a1,0x1c
- 928:	973e                	add	a4,a4,a5
- 92a:	fae68ae3          	beq	a3,a4,8de <free+0x22>
+ 928:	4790                	lw	a2,8(a5)
+ 92a:	02061593          	slli	a1,a2,0x20
+ 92e:	01c5d713          	srli	a4,a1,0x1c
+ 932:	973e                	add	a4,a4,a5
+ 934:	fae68ae3          	beq	a3,a4,8e8 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 92e:	e394                	sd	a3,0(a5)
+ 938:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 930:	00000717          	auipc	a4,0x0
- 934:	3ef73823          	sd	a5,1008(a4) # d20 <freep>
+ 93a:	00000717          	auipc	a4,0x0
+ 93e:	3ef73b23          	sd	a5,1014(a4) # d30 <freep>
 }
- 938:	6422                	ld	s0,8(sp)
- 93a:	0141                	addi	sp,sp,16
- 93c:	8082                	ret
+ 942:	6422                	ld	s0,8(sp)
+ 944:	0141                	addi	sp,sp,16
+ 946:	8082                	ret
 
-000000000000093e <malloc>:
+0000000000000948 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 93e:	7139                	addi	sp,sp,-64
- 940:	fc06                	sd	ra,56(sp)
- 942:	f822                	sd	s0,48(sp)
- 944:	f426                	sd	s1,40(sp)
- 946:	f04a                	sd	s2,32(sp)
- 948:	ec4e                	sd	s3,24(sp)
- 94a:	e852                	sd	s4,16(sp)
- 94c:	e456                	sd	s5,8(sp)
- 94e:	e05a                	sd	s6,0(sp)
- 950:	0080                	addi	s0,sp,64
+ 948:	7139                	addi	sp,sp,-64
+ 94a:	fc06                	sd	ra,56(sp)
+ 94c:	f822                	sd	s0,48(sp)
+ 94e:	f426                	sd	s1,40(sp)
+ 950:	f04a                	sd	s2,32(sp)
+ 952:	ec4e                	sd	s3,24(sp)
+ 954:	e852                	sd	s4,16(sp)
+ 956:	e456                	sd	s5,8(sp)
+ 958:	e05a                	sd	s6,0(sp)
+ 95a:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 952:	02051493          	slli	s1,a0,0x20
- 956:	9081                	srli	s1,s1,0x20
- 958:	04bd                	addi	s1,s1,15
- 95a:	8091                	srli	s1,s1,0x4
- 95c:	00148a1b          	addiw	s4,s1,1
- 960:	0485                	addi	s1,s1,1
+ 95c:	02051493          	slli	s1,a0,0x20
+ 960:	9081                	srli	s1,s1,0x20
+ 962:	04bd                	addi	s1,s1,15
+ 964:	8091                	srli	s1,s1,0x4
+ 966:	00148a1b          	addiw	s4,s1,1
+ 96a:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 962:	00000517          	auipc	a0,0x0
- 966:	3be53503          	ld	a0,958(a0) # d20 <freep>
- 96a:	c515                	beqz	a0,996 <malloc+0x58>
+ 96c:	00000517          	auipc	a0,0x0
+ 970:	3c453503          	ld	a0,964(a0) # d30 <freep>
+ 974:	c515                	beqz	a0,9a0 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 96c:	611c                	ld	a5,0(a0)
+ 976:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 96e:	4798                	lw	a4,8(a5)
- 970:	04977163          	bgeu	a4,s1,9b2 <malloc+0x74>
- 974:	89d2                	mv	s3,s4
- 976:	000a071b          	sext.w	a4,s4
- 97a:	6685                	lui	a3,0x1
- 97c:	00d77363          	bgeu	a4,a3,982 <malloc+0x44>
- 980:	6985                	lui	s3,0x1
- 982:	00098b1b          	sext.w	s6,s3
+ 978:	4798                	lw	a4,8(a5)
+ 97a:	04977163          	bgeu	a4,s1,9bc <malloc+0x74>
+ 97e:	89d2                	mv	s3,s4
+ 980:	000a071b          	sext.w	a4,s4
+ 984:	6685                	lui	a3,0x1
+ 986:	00d77363          	bgeu	a4,a3,98c <malloc+0x44>
+ 98a:	6985                	lui	s3,0x1
+ 98c:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 986:	0049999b          	slliw	s3,s3,0x4
+ 990:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 98a:	00000917          	auipc	s2,0x0
- 98e:	39690913          	addi	s2,s2,918 # d20 <freep>
+ 994:	00000917          	auipc	s2,0x0
+ 998:	39c90913          	addi	s2,s2,924 # d30 <freep>
   if(p == (char*)-1)
- 992:	5afd                	li	s5,-1
- 994:	a8a5                	j	a0c <malloc+0xce>
+ 99c:	5afd                	li	s5,-1
+ 99e:	a8a5                	j	a16 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 996:	00000797          	auipc	a5,0x0
- 99a:	38a78793          	addi	a5,a5,906 # d20 <freep>
- 99e:	00000717          	auipc	a4,0x0
- 9a2:	38a70713          	addi	a4,a4,906 # d28 <base>
- 9a6:	e398                	sd	a4,0(a5)
- 9a8:	e798                	sd	a4,8(a5)
+ 9a0:	00000797          	auipc	a5,0x0
+ 9a4:	39078793          	addi	a5,a5,912 # d30 <freep>
+ 9a8:	00000717          	auipc	a4,0x0
+ 9ac:	39070713          	addi	a4,a4,912 # d38 <base>
+ 9b0:	e398                	sd	a4,0(a5)
+ 9b2:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 9aa:	0007a823          	sw	zero,16(a5)
+ 9b4:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 9ae:	87ba                	mv	a5,a4
- 9b0:	b7d1                	j	974 <malloc+0x36>
+ 9b8:	87ba                	mv	a5,a4
+ 9ba:	b7d1                	j	97e <malloc+0x36>
       if(p->s.size == nunits)
- 9b2:	02e48c63          	beq	s1,a4,9ea <malloc+0xac>
+ 9bc:	02e48c63          	beq	s1,a4,9f4 <malloc+0xac>
         p->s.size -= nunits;
- 9b6:	4147073b          	subw	a4,a4,s4
- 9ba:	c798                	sw	a4,8(a5)
+ 9c0:	4147073b          	subw	a4,a4,s4
+ 9c4:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 9bc:	02071693          	slli	a3,a4,0x20
- 9c0:	01c6d713          	srli	a4,a3,0x1c
- 9c4:	97ba                	add	a5,a5,a4
+ 9c6:	02071693          	slli	a3,a4,0x20
+ 9ca:	01c6d713          	srli	a4,a3,0x1c
+ 9ce:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 9c6:	0147a423          	sw	s4,8(a5)
+ 9d0:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 9ca:	00000717          	auipc	a4,0x0
- 9ce:	34a73b23          	sd	a0,854(a4) # d20 <freep>
+ 9d4:	00000717          	auipc	a4,0x0
+ 9d8:	34a73e23          	sd	a0,860(a4) # d30 <freep>
       return (void*)(p + 1);
- 9d2:	01078513          	addi	a0,a5,16
+ 9dc:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 9d6:	70e2                	ld	ra,56(sp)
- 9d8:	7442                	ld	s0,48(sp)
- 9da:	74a2                	ld	s1,40(sp)
- 9dc:	7902                	ld	s2,32(sp)
- 9de:	69e2                	ld	s3,24(sp)
- 9e0:	6a42                	ld	s4,16(sp)
- 9e2:	6aa2                	ld	s5,8(sp)
- 9e4:	6b02                	ld	s6,0(sp)
- 9e6:	6121                	addi	sp,sp,64
- 9e8:	8082                	ret
+ 9e0:	70e2                	ld	ra,56(sp)
+ 9e2:	7442                	ld	s0,48(sp)
+ 9e4:	74a2                	ld	s1,40(sp)
+ 9e6:	7902                	ld	s2,32(sp)
+ 9e8:	69e2                	ld	s3,24(sp)
+ 9ea:	6a42                	ld	s4,16(sp)
+ 9ec:	6aa2                	ld	s5,8(sp)
+ 9ee:	6b02                	ld	s6,0(sp)
+ 9f0:	6121                	addi	sp,sp,64
+ 9f2:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 9ea:	6398                	ld	a4,0(a5)
- 9ec:	e118                	sd	a4,0(a0)
- 9ee:	bff1                	j	9ca <malloc+0x8c>
+ 9f4:	6398                	ld	a4,0(a5)
+ 9f6:	e118                	sd	a4,0(a0)
+ 9f8:	bff1                	j	9d4 <malloc+0x8c>
   hp->s.size = nu;
- 9f0:	01652423          	sw	s6,8(a0)
+ 9fa:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 9f4:	0541                	addi	a0,a0,16
- 9f6:	00000097          	auipc	ra,0x0
- 9fa:	ec6080e7          	jalr	-314(ra) # 8bc <free>
+ 9fe:	0541                	addi	a0,a0,16
+ a00:	00000097          	auipc	ra,0x0
+ a04:	ec6080e7          	jalr	-314(ra) # 8c6 <free>
   return freep;
- 9fe:	00093503          	ld	a0,0(s2)
+ a08:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- a02:	d971                	beqz	a0,9d6 <malloc+0x98>
+ a0c:	d971                	beqz	a0,9e0 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- a04:	611c                	ld	a5,0(a0)
+ a0e:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- a06:	4798                	lw	a4,8(a5)
- a08:	fa9775e3          	bgeu	a4,s1,9b2 <malloc+0x74>
+ a10:	4798                	lw	a4,8(a5)
+ a12:	fa9775e3          	bgeu	a4,s1,9bc <malloc+0x74>
     if(p == freep)
- a0c:	00093703          	ld	a4,0(s2)
- a10:	853e                	mv	a0,a5
- a12:	fef719e3          	bne	a4,a5,a04 <malloc+0xc6>
+ a16:	00093703          	ld	a4,0(s2)
+ a1a:	853e                	mv	a0,a5
+ a1c:	fef719e3          	bne	a4,a5,a0e <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- a16:	854e                	mv	a0,s3
- a18:	00000097          	auipc	ra,0x0
- a1c:	b2a080e7          	jalr	-1238(ra) # 542 <sbrk>
+ a20:	854e                	mv	a0,s3
+ a22:	00000097          	auipc	ra,0x0
+ a26:	b20080e7          	jalr	-1248(ra) # 542 <sbrk>
   if(p == (char*)-1)
- a20:	fd5518e3          	bne	a0,s5,9f0 <malloc+0xb2>
+ a2a:	fd5518e3          	bne	a0,s5,9fa <malloc+0xb2>
         return 0;
- a24:	4501                	li	a0,0
- a26:	bf45                	j	9d6 <malloc+0x98>
+ a2e:	4501                	li	a0,0
+ a30:	bf45                	j	9e0 <malloc+0x98>
diff --git a/xv6-user/find.sym b/xv6-user/find.sym
index 03f7269..5c54ee7 100644
--- a/xv6-user/find.sym
+++ b/xv6-user/find.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-0000000000000a28 .rodata
-0000000000000b20 .bss
+0000000000000a38 .rodata
+0000000000000b30 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -13,27 +13,28 @@
 0000000000000000 .debug_loclists
 0000000000000000 .debug_rnglists
 0000000000000000 find.c
-0000000000000b20 path
+0000000000000b30 path
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-00000000000005ae putc
-00000000000005d0 printint
-0000000000000b08 digits
+00000000000005b8 putc
+00000000000005da printint
+0000000000000b18 digits
 0000000000000000 umalloc.c
-0000000000000d20 freep
-0000000000000d28 base
+0000000000000d30 freep
+0000000000000d38 base
 0000000000000206 strcpy
-0000000000000886 printf
-0000000000001319 __global_pointer$
+0000000000000890 printf
+0000000000001329 __global_pointer$
 0000000000000562 dev
 000000000000040c memmove
+00000000000005ae times
 0000000000000582 trace
 00000000000002ec gets
-0000000000000b19 __SDATA_BEGIN__
+0000000000000b29 __SDATA_BEGIN__
 0000000000000538 getpid
 000000000000049e memcpy
-000000000000093e malloc
+0000000000000948 malloc
 000000000000057a remove
 000000000000054a sleep
 000000000000058a sysinfo
@@ -43,10 +44,10 @@
 0000000000000592 rename
 00000000000004e4 write
 0000000000000512 fstat
-0000000000000858 fprintf
+0000000000000862 fprintf
 00000000000004f8 kill
 0000000000000222 strcat
-000000000000067a vprintf
+0000000000000684 vprintf
 0000000000000526 chdir
 0000000000000500 exec
 00000000000004c8 wait
@@ -54,21 +55,21 @@
 0000000000000000 find
 0000000000000464 memcmp
 00000000000004b6 fork
-0000000000000d38 __BSS_END__
+0000000000000d48 __BSS_END__
 0000000000000542 sbrk
 000000000000055a test_proc
 0000000000000552 uptime
-0000000000000b19 __bss_start
+0000000000000b29 __bss_start
 00000000000002a6 memset
 00000000000001b2 main
 0000000000000250 strcmp
 000000000000059a shutdown
 0000000000000530 dup
 0000000000000572 getcwd
-0000000000000b19 __DATA_BEGIN__
+0000000000000b29 __DATA_BEGIN__
 0000000000000366 stat
-0000000000000b19 _edata
-0000000000000d38 _end
+0000000000000b29 _edata
+0000000000000d48 _end
 00000000000004be exit
 00000000000003ac atoi
 000000000000027c strlen
@@ -76,4 +77,4 @@
 00000000000002c8 strchr
 000000000000051c mkdir
 00000000000004ee close
-00000000000008bc free
+00000000000008c6 free
diff --git a/xv6-user/grep.asm b/xv6-user/grep.asm
index f53acf8..598db84 100644
--- a/xv6-user/grep.asm
+++ b/xv6-user/grep.asm
@@ -178,7 +178,7 @@ int matchstar(int c, char *re, char *text)
   while((n = read(fd, buf+m, sizeof(buf)-m-1)) > 0){
  136:	3ff00b93          	li	s7,1023
  13a:	00001a97          	auipc	s5,0x1
- 13e:	a36a8a93          	addi	s5,s5,-1482 # b70 <buf>
+ 13e:	a46a8a93          	addi	s5,s5,-1466 # b80 <buf>
  142:	a0a1                	j	18a <grep+0x70>
       p = q+1;
  144:	00148913          	addi	s2,s1,1
@@ -299,10 +299,10 @@ int matchstar(int c, char *re, char *text)
  24a:	310080e7          	jalr	784(ra) # 556 <exit>
     fprintf(2, "usage: grep pattern [file ...]\n");
  24e:	00001597          	auipc	a1,0x1
- 252:	87258593          	addi	a1,a1,-1934 # ac0 <malloc+0xea>
+ 252:	88258593          	addi	a1,a1,-1918 # ad0 <malloc+0xf0>
  256:	4509                	li	a0,2
  258:	00000097          	auipc	ra,0x0
- 25c:	698080e7          	jalr	1688(ra) # 8f0 <fprintf>
+ 25c:	6a2080e7          	jalr	1698(ra) # 8fa <fprintf>
     exit(1);
  260:	4505                	li	a0,1
  262:	00000097          	auipc	ra,0x0
@@ -319,9 +319,9 @@ int matchstar(int c, char *re, char *text)
       printf("grep: cannot open %s\n", argv[i]);
  280:	00093583          	ld	a1,0(s2)
  284:	00001517          	auipc	a0,0x1
- 288:	85c50513          	addi	a0,a0,-1956 # ae0 <malloc+0x10a>
+ 288:	86c50513          	addi	a0,a0,-1940 # af0 <malloc+0x110>
  28c:	00000097          	auipc	ra,0x0
- 290:	692080e7          	jalr	1682(ra) # 91e <printf>
+ 290:	69c080e7          	jalr	1692(ra) # 928 <printf>
       exit(1);
  294:	4505                	li	a0,1
  296:	00000097          	auipc	ra,0x0
@@ -1083,637 +1083,647 @@ uname:
  ret
  644:	8082                	ret
 
-0000000000000646 <putc>:
+0000000000000646 <times>:
+.global times
+times:
+ li a7, SYS_times
+ 646:	09900893          	li	a7,153
+ ecall
+ 64a:	00000073          	ecall
+ ret
+ 64e:	8082                	ret
+
+0000000000000650 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 646:	1101                	addi	sp,sp,-32
- 648:	ec06                	sd	ra,24(sp)
- 64a:	e822                	sd	s0,16(sp)
- 64c:	1000                	addi	s0,sp,32
- 64e:	feb407a3          	sb	a1,-17(s0)
+ 650:	1101                	addi	sp,sp,-32
+ 652:	ec06                	sd	ra,24(sp)
+ 654:	e822                	sd	s0,16(sp)
+ 656:	1000                	addi	s0,sp,32
+ 658:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 652:	4605                	li	a2,1
- 654:	fef40593          	addi	a1,s0,-17
- 658:	00000097          	auipc	ra,0x0
- 65c:	f24080e7          	jalr	-220(ra) # 57c <write>
+ 65c:	4605                	li	a2,1
+ 65e:	fef40593          	addi	a1,s0,-17
+ 662:	00000097          	auipc	ra,0x0
+ 666:	f1a080e7          	jalr	-230(ra) # 57c <write>
 }
- 660:	60e2                	ld	ra,24(sp)
- 662:	6442                	ld	s0,16(sp)
- 664:	6105                	addi	sp,sp,32
- 666:	8082                	ret
+ 66a:	60e2                	ld	ra,24(sp)
+ 66c:	6442                	ld	s0,16(sp)
+ 66e:	6105                	addi	sp,sp,32
+ 670:	8082                	ret
 
-0000000000000668 <printint>:
+0000000000000672 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 668:	7139                	addi	sp,sp,-64
- 66a:	fc06                	sd	ra,56(sp)
- 66c:	f822                	sd	s0,48(sp)
- 66e:	f426                	sd	s1,40(sp)
- 670:	f04a                	sd	s2,32(sp)
- 672:	ec4e                	sd	s3,24(sp)
- 674:	0080                	addi	s0,sp,64
- 676:	84aa                	mv	s1,a0
+ 672:	7139                	addi	sp,sp,-64
+ 674:	fc06                	sd	ra,56(sp)
+ 676:	f822                	sd	s0,48(sp)
+ 678:	f426                	sd	s1,40(sp)
+ 67a:	f04a                	sd	s2,32(sp)
+ 67c:	ec4e                	sd	s3,24(sp)
+ 67e:	0080                	addi	s0,sp,64
+ 680:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 678:	c299                	beqz	a3,67e <printint+0x16>
- 67a:	0805c863          	bltz	a1,70a <printint+0xa2>
+ 682:	c299                	beqz	a3,688 <printint+0x16>
+ 684:	0805c863          	bltz	a1,714 <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 67e:	2581                	sext.w	a1,a1
+ 688:	2581                	sext.w	a1,a1
   neg = 0;
- 680:	4881                	li	a7,0
+ 68a:	4881                	li	a7,0
   }
 
   i = 0;
- 682:	fc040993          	addi	s3,s0,-64
+ 68c:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 686:	86ce                	mv	a3,s3
+ 690:	86ce                	mv	a3,s3
   i = 0;
- 688:	4701                	li	a4,0
+ 692:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 68a:	2601                	sext.w	a2,a2
- 68c:	00000517          	auipc	a0,0x0
- 690:	4cc50513          	addi	a0,a0,1228 # b58 <digits>
- 694:	883a                	mv	a6,a4
- 696:	2705                	addiw	a4,a4,1
- 698:	02c5f7bb          	remuw	a5,a1,a2
- 69c:	1782                	slli	a5,a5,0x20
- 69e:	9381                	srli	a5,a5,0x20
- 6a0:	97aa                	add	a5,a5,a0
- 6a2:	0007c783          	lbu	a5,0(a5)
- 6a6:	00f68023          	sb	a5,0(a3)
+ 694:	2601                	sext.w	a2,a2
+ 696:	00000517          	auipc	a0,0x0
+ 69a:	4d250513          	addi	a0,a0,1234 # b68 <digits>
+ 69e:	883a                	mv	a6,a4
+ 6a0:	2705                	addiw	a4,a4,1
+ 6a2:	02c5f7bb          	remuw	a5,a1,a2
+ 6a6:	1782                	slli	a5,a5,0x20
+ 6a8:	9381                	srli	a5,a5,0x20
+ 6aa:	97aa                	add	a5,a5,a0
+ 6ac:	0007c783          	lbu	a5,0(a5)
+ 6b0:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 6aa:	0005879b          	sext.w	a5,a1
- 6ae:	02c5d5bb          	divuw	a1,a1,a2
- 6b2:	0685                	addi	a3,a3,1
- 6b4:	fec7f0e3          	bgeu	a5,a2,694 <printint+0x2c>
+ 6b4:	0005879b          	sext.w	a5,a1
+ 6b8:	02c5d5bb          	divuw	a1,a1,a2
+ 6bc:	0685                	addi	a3,a3,1
+ 6be:	fec7f0e3          	bgeu	a5,a2,69e <printint+0x2c>
   if(neg)
- 6b8:	00088c63          	beqz	a7,6d0 <printint+0x68>
+ 6c2:	00088c63          	beqz	a7,6da <printint+0x68>
     buf[i++] = '-';
- 6bc:	fd070793          	addi	a5,a4,-48
- 6c0:	00878733          	add	a4,a5,s0
- 6c4:	02d00793          	li	a5,45
- 6c8:	fef70823          	sb	a5,-16(a4)
- 6cc:	0028071b          	addiw	a4,a6,2
+ 6c6:	fd070793          	addi	a5,a4,-48
+ 6ca:	00878733          	add	a4,a5,s0
+ 6ce:	02d00793          	li	a5,45
+ 6d2:	fef70823          	sb	a5,-16(a4)
+ 6d6:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 6d0:	02e05663          	blez	a4,6fc <printint+0x94>
- 6d4:	fc040913          	addi	s2,s0,-64
- 6d8:	993a                	add	s2,s2,a4
- 6da:	19fd                	addi	s3,s3,-1
- 6dc:	99ba                	add	s3,s3,a4
- 6de:	377d                	addiw	a4,a4,-1
- 6e0:	1702                	slli	a4,a4,0x20
- 6e2:	9301                	srli	a4,a4,0x20
- 6e4:	40e989b3          	sub	s3,s3,a4
+ 6da:	02e05663          	blez	a4,706 <printint+0x94>
+ 6de:	fc040913          	addi	s2,s0,-64
+ 6e2:	993a                	add	s2,s2,a4
+ 6e4:	19fd                	addi	s3,s3,-1
+ 6e6:	99ba                	add	s3,s3,a4
+ 6e8:	377d                	addiw	a4,a4,-1
+ 6ea:	1702                	slli	a4,a4,0x20
+ 6ec:	9301                	srli	a4,a4,0x20
+ 6ee:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 6e8:	fff94583          	lbu	a1,-1(s2)
- 6ec:	8526                	mv	a0,s1
- 6ee:	00000097          	auipc	ra,0x0
- 6f2:	f58080e7          	jalr	-168(ra) # 646 <putc>
+ 6f2:	fff94583          	lbu	a1,-1(s2)
+ 6f6:	8526                	mv	a0,s1
+ 6f8:	00000097          	auipc	ra,0x0
+ 6fc:	f58080e7          	jalr	-168(ra) # 650 <putc>
   while(--i >= 0)
- 6f6:	197d                	addi	s2,s2,-1
- 6f8:	ff3918e3          	bne	s2,s3,6e8 <printint+0x80>
+ 700:	197d                	addi	s2,s2,-1
+ 702:	ff3918e3          	bne	s2,s3,6f2 <printint+0x80>
 }
- 6fc:	70e2                	ld	ra,56(sp)
- 6fe:	7442                	ld	s0,48(sp)
- 700:	74a2                	ld	s1,40(sp)
- 702:	7902                	ld	s2,32(sp)
- 704:	69e2                	ld	s3,24(sp)
- 706:	6121                	addi	sp,sp,64
- 708:	8082                	ret
+ 706:	70e2                	ld	ra,56(sp)
+ 708:	7442                	ld	s0,48(sp)
+ 70a:	74a2                	ld	s1,40(sp)
+ 70c:	7902                	ld	s2,32(sp)
+ 70e:	69e2                	ld	s3,24(sp)
+ 710:	6121                	addi	sp,sp,64
+ 712:	8082                	ret
     x = -xx;
- 70a:	40b005bb          	negw	a1,a1
+ 714:	40b005bb          	negw	a1,a1
     neg = 1;
- 70e:	4885                	li	a7,1
+ 718:	4885                	li	a7,1
     x = -xx;
- 710:	bf8d                	j	682 <printint+0x1a>
+ 71a:	bf8d                	j	68c <printint+0x1a>
 
-0000000000000712 <vprintf>:
+000000000000071c <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 712:	7119                	addi	sp,sp,-128
- 714:	fc86                	sd	ra,120(sp)
- 716:	f8a2                	sd	s0,112(sp)
- 718:	f4a6                	sd	s1,104(sp)
- 71a:	f0ca                	sd	s2,96(sp)
- 71c:	ecce                	sd	s3,88(sp)
- 71e:	e8d2                	sd	s4,80(sp)
- 720:	e4d6                	sd	s5,72(sp)
- 722:	e0da                	sd	s6,64(sp)
- 724:	fc5e                	sd	s7,56(sp)
- 726:	f862                	sd	s8,48(sp)
- 728:	f466                	sd	s9,40(sp)
- 72a:	f06a                	sd	s10,32(sp)
- 72c:	ec6e                	sd	s11,24(sp)
- 72e:	0100                	addi	s0,sp,128
+ 71c:	7119                	addi	sp,sp,-128
+ 71e:	fc86                	sd	ra,120(sp)
+ 720:	f8a2                	sd	s0,112(sp)
+ 722:	f4a6                	sd	s1,104(sp)
+ 724:	f0ca                	sd	s2,96(sp)
+ 726:	ecce                	sd	s3,88(sp)
+ 728:	e8d2                	sd	s4,80(sp)
+ 72a:	e4d6                	sd	s5,72(sp)
+ 72c:	e0da                	sd	s6,64(sp)
+ 72e:	fc5e                	sd	s7,56(sp)
+ 730:	f862                	sd	s8,48(sp)
+ 732:	f466                	sd	s9,40(sp)
+ 734:	f06a                	sd	s10,32(sp)
+ 736:	ec6e                	sd	s11,24(sp)
+ 738:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 730:	0005c903          	lbu	s2,0(a1)
- 734:	18090f63          	beqz	s2,8d2 <vprintf+0x1c0>
- 738:	8aaa                	mv	s5,a0
- 73a:	8b32                	mv	s6,a2
- 73c:	00158493          	addi	s1,a1,1
+ 73a:	0005c903          	lbu	s2,0(a1)
+ 73e:	18090f63          	beqz	s2,8dc <vprintf+0x1c0>
+ 742:	8aaa                	mv	s5,a0
+ 744:	8b32                	mv	s6,a2
+ 746:	00158493          	addi	s1,a1,1
   state = 0;
- 740:	4981                	li	s3,0
+ 74a:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 742:	02500a13          	li	s4,37
- 746:	4c55                	li	s8,21
- 748:	00000c97          	auipc	s9,0x0
- 74c:	3b8c8c93          	addi	s9,s9,952 # b00 <malloc+0x12a>
+ 74c:	02500a13          	li	s4,37
+ 750:	4c55                	li	s8,21
+ 752:	00000c97          	auipc	s9,0x0
+ 756:	3bec8c93          	addi	s9,s9,958 # b10 <malloc+0x130>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 750:	02800d93          	li	s11,40
+ 75a:	02800d93          	li	s11,40
   putc(fd, 'x');
- 754:	4d41                	li	s10,16
+ 75e:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 756:	00000b97          	auipc	s7,0x0
- 75a:	402b8b93          	addi	s7,s7,1026 # b58 <digits>
- 75e:	a839                	j	77c <vprintf+0x6a>
+ 760:	00000b97          	auipc	s7,0x0
+ 764:	408b8b93          	addi	s7,s7,1032 # b68 <digits>
+ 768:	a839                	j	786 <vprintf+0x6a>
         putc(fd, c);
- 760:	85ca                	mv	a1,s2
- 762:	8556                	mv	a0,s5
- 764:	00000097          	auipc	ra,0x0
- 768:	ee2080e7          	jalr	-286(ra) # 646 <putc>
- 76c:	a019                	j	772 <vprintf+0x60>
+ 76a:	85ca                	mv	a1,s2
+ 76c:	8556                	mv	a0,s5
+ 76e:	00000097          	auipc	ra,0x0
+ 772:	ee2080e7          	jalr	-286(ra) # 650 <putc>
+ 776:	a019                	j	77c <vprintf+0x60>
     } else if(state == '%'){
- 76e:	01498d63          	beq	s3,s4,788 <vprintf+0x76>
+ 778:	01498d63          	beq	s3,s4,792 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 772:	0485                	addi	s1,s1,1
- 774:	fff4c903          	lbu	s2,-1(s1)
- 778:	14090d63          	beqz	s2,8d2 <vprintf+0x1c0>
+ 77c:	0485                	addi	s1,s1,1
+ 77e:	fff4c903          	lbu	s2,-1(s1)
+ 782:	14090d63          	beqz	s2,8dc <vprintf+0x1c0>
     if(state == 0){
- 77c:	fe0999e3          	bnez	s3,76e <vprintf+0x5c>
+ 786:	fe0999e3          	bnez	s3,778 <vprintf+0x5c>
       if(c == '%'){
- 780:	ff4910e3          	bne	s2,s4,760 <vprintf+0x4e>
+ 78a:	ff4910e3          	bne	s2,s4,76a <vprintf+0x4e>
         state = '%';
- 784:	89d2                	mv	s3,s4
- 786:	b7f5                	j	772 <vprintf+0x60>
+ 78e:	89d2                	mv	s3,s4
+ 790:	b7f5                	j	77c <vprintf+0x60>
       if(c == 'd'){
- 788:	11490c63          	beq	s2,s4,8a0 <vprintf+0x18e>
- 78c:	f9d9079b          	addiw	a5,s2,-99
- 790:	0ff7f793          	zext.b	a5,a5
- 794:	10fc6e63          	bltu	s8,a5,8b0 <vprintf+0x19e>
- 798:	f9d9079b          	addiw	a5,s2,-99
- 79c:	0ff7f713          	zext.b	a4,a5
- 7a0:	10ec6863          	bltu	s8,a4,8b0 <vprintf+0x19e>
- 7a4:	00271793          	slli	a5,a4,0x2
- 7a8:	97e6                	add	a5,a5,s9
- 7aa:	439c                	lw	a5,0(a5)
- 7ac:	97e6                	add	a5,a5,s9
- 7ae:	8782                	jr	a5
+ 792:	11490c63          	beq	s2,s4,8aa <vprintf+0x18e>
+ 796:	f9d9079b          	addiw	a5,s2,-99
+ 79a:	0ff7f793          	zext.b	a5,a5
+ 79e:	10fc6e63          	bltu	s8,a5,8ba <vprintf+0x19e>
+ 7a2:	f9d9079b          	addiw	a5,s2,-99
+ 7a6:	0ff7f713          	zext.b	a4,a5
+ 7aa:	10ec6863          	bltu	s8,a4,8ba <vprintf+0x19e>
+ 7ae:	00271793          	slli	a5,a4,0x2
+ 7b2:	97e6                	add	a5,a5,s9
+ 7b4:	439c                	lw	a5,0(a5)
+ 7b6:	97e6                	add	a5,a5,s9
+ 7b8:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 7b0:	008b0913          	addi	s2,s6,8
- 7b4:	4685                	li	a3,1
- 7b6:	4629                	li	a2,10
- 7b8:	000b2583          	lw	a1,0(s6)
- 7bc:	8556                	mv	a0,s5
- 7be:	00000097          	auipc	ra,0x0
- 7c2:	eaa080e7          	jalr	-342(ra) # 668 <printint>
- 7c6:	8b4a                	mv	s6,s2
+ 7ba:	008b0913          	addi	s2,s6,8
+ 7be:	4685                	li	a3,1
+ 7c0:	4629                	li	a2,10
+ 7c2:	000b2583          	lw	a1,0(s6)
+ 7c6:	8556                	mv	a0,s5
+ 7c8:	00000097          	auipc	ra,0x0
+ 7cc:	eaa080e7          	jalr	-342(ra) # 672 <printint>
+ 7d0:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 7c8:	4981                	li	s3,0
- 7ca:	b765                	j	772 <vprintf+0x60>
+ 7d2:	4981                	li	s3,0
+ 7d4:	b765                	j	77c <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 7cc:	008b0913          	addi	s2,s6,8
- 7d0:	4681                	li	a3,0
- 7d2:	4629                	li	a2,10
- 7d4:	000b2583          	lw	a1,0(s6)
- 7d8:	8556                	mv	a0,s5
- 7da:	00000097          	auipc	ra,0x0
- 7de:	e8e080e7          	jalr	-370(ra) # 668 <printint>
- 7e2:	8b4a                	mv	s6,s2
+ 7d6:	008b0913          	addi	s2,s6,8
+ 7da:	4681                	li	a3,0
+ 7dc:	4629                	li	a2,10
+ 7de:	000b2583          	lw	a1,0(s6)
+ 7e2:	8556                	mv	a0,s5
+ 7e4:	00000097          	auipc	ra,0x0
+ 7e8:	e8e080e7          	jalr	-370(ra) # 672 <printint>
+ 7ec:	8b4a                	mv	s6,s2
       state = 0;
- 7e4:	4981                	li	s3,0
- 7e6:	b771                	j	772 <vprintf+0x60>
+ 7ee:	4981                	li	s3,0
+ 7f0:	b771                	j	77c <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 7e8:	008b0913          	addi	s2,s6,8
- 7ec:	4681                	li	a3,0
- 7ee:	866a                	mv	a2,s10
- 7f0:	000b2583          	lw	a1,0(s6)
- 7f4:	8556                	mv	a0,s5
- 7f6:	00000097          	auipc	ra,0x0
- 7fa:	e72080e7          	jalr	-398(ra) # 668 <printint>
- 7fe:	8b4a                	mv	s6,s2
+ 7f2:	008b0913          	addi	s2,s6,8
+ 7f6:	4681                	li	a3,0
+ 7f8:	866a                	mv	a2,s10
+ 7fa:	000b2583          	lw	a1,0(s6)
+ 7fe:	8556                	mv	a0,s5
+ 800:	00000097          	auipc	ra,0x0
+ 804:	e72080e7          	jalr	-398(ra) # 672 <printint>
+ 808:	8b4a                	mv	s6,s2
       state = 0;
- 800:	4981                	li	s3,0
- 802:	bf85                	j	772 <vprintf+0x60>
+ 80a:	4981                	li	s3,0
+ 80c:	bf85                	j	77c <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 804:	008b0793          	addi	a5,s6,8
- 808:	f8f43423          	sd	a5,-120(s0)
- 80c:	000b3983          	ld	s3,0(s6)
+ 80e:	008b0793          	addi	a5,s6,8
+ 812:	f8f43423          	sd	a5,-120(s0)
+ 816:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 810:	03000593          	li	a1,48
- 814:	8556                	mv	a0,s5
- 816:	00000097          	auipc	ra,0x0
- 81a:	e30080e7          	jalr	-464(ra) # 646 <putc>
+ 81a:	03000593          	li	a1,48
+ 81e:	8556                	mv	a0,s5
+ 820:	00000097          	auipc	ra,0x0
+ 824:	e30080e7          	jalr	-464(ra) # 650 <putc>
   putc(fd, 'x');
- 81e:	07800593          	li	a1,120
- 822:	8556                	mv	a0,s5
- 824:	00000097          	auipc	ra,0x0
- 828:	e22080e7          	jalr	-478(ra) # 646 <putc>
- 82c:	896a                	mv	s2,s10
+ 828:	07800593          	li	a1,120
+ 82c:	8556                	mv	a0,s5
+ 82e:	00000097          	auipc	ra,0x0
+ 832:	e22080e7          	jalr	-478(ra) # 650 <putc>
+ 836:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 82e:	03c9d793          	srli	a5,s3,0x3c
- 832:	97de                	add	a5,a5,s7
- 834:	0007c583          	lbu	a1,0(a5)
- 838:	8556                	mv	a0,s5
- 83a:	00000097          	auipc	ra,0x0
- 83e:	e0c080e7          	jalr	-500(ra) # 646 <putc>
+ 838:	03c9d793          	srli	a5,s3,0x3c
+ 83c:	97de                	add	a5,a5,s7
+ 83e:	0007c583          	lbu	a1,0(a5)
+ 842:	8556                	mv	a0,s5
+ 844:	00000097          	auipc	ra,0x0
+ 848:	e0c080e7          	jalr	-500(ra) # 650 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 842:	0992                	slli	s3,s3,0x4
- 844:	397d                	addiw	s2,s2,-1
- 846:	fe0914e3          	bnez	s2,82e <vprintf+0x11c>
+ 84c:	0992                	slli	s3,s3,0x4
+ 84e:	397d                	addiw	s2,s2,-1
+ 850:	fe0914e3          	bnez	s2,838 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 84a:	f8843b03          	ld	s6,-120(s0)
+ 854:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 84e:	4981                	li	s3,0
- 850:	b70d                	j	772 <vprintf+0x60>
+ 858:	4981                	li	s3,0
+ 85a:	b70d                	j	77c <vprintf+0x60>
         s = va_arg(ap, char*);
- 852:	008b0913          	addi	s2,s6,8
- 856:	000b3983          	ld	s3,0(s6)
+ 85c:	008b0913          	addi	s2,s6,8
+ 860:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 85a:	02098163          	beqz	s3,87c <vprintf+0x16a>
+ 864:	02098163          	beqz	s3,886 <vprintf+0x16a>
         while(*s != 0){
- 85e:	0009c583          	lbu	a1,0(s3)
- 862:	c5ad                	beqz	a1,8cc <vprintf+0x1ba>
+ 868:	0009c583          	lbu	a1,0(s3)
+ 86c:	c5ad                	beqz	a1,8d6 <vprintf+0x1ba>
           putc(fd, *s);
- 864:	8556                	mv	a0,s5
- 866:	00000097          	auipc	ra,0x0
- 86a:	de0080e7          	jalr	-544(ra) # 646 <putc>
+ 86e:	8556                	mv	a0,s5
+ 870:	00000097          	auipc	ra,0x0
+ 874:	de0080e7          	jalr	-544(ra) # 650 <putc>
           s++;
- 86e:	0985                	addi	s3,s3,1
+ 878:	0985                	addi	s3,s3,1
         while(*s != 0){
- 870:	0009c583          	lbu	a1,0(s3)
- 874:	f9e5                	bnez	a1,864 <vprintf+0x152>
+ 87a:	0009c583          	lbu	a1,0(s3)
+ 87e:	f9e5                	bnez	a1,86e <vprintf+0x152>
         s = va_arg(ap, char*);
- 876:	8b4a                	mv	s6,s2
+ 880:	8b4a                	mv	s6,s2
       state = 0;
- 878:	4981                	li	s3,0
- 87a:	bde5                	j	772 <vprintf+0x60>
+ 882:	4981                	li	s3,0
+ 884:	bde5                	j	77c <vprintf+0x60>
           s = "(null)";
- 87c:	00000997          	auipc	s3,0x0
- 880:	27c98993          	addi	s3,s3,636 # af8 <malloc+0x122>
+ 886:	00000997          	auipc	s3,0x0
+ 88a:	28298993          	addi	s3,s3,642 # b08 <malloc+0x128>
         while(*s != 0){
- 884:	85ee                	mv	a1,s11
- 886:	bff9                	j	864 <vprintf+0x152>
+ 88e:	85ee                	mv	a1,s11
+ 890:	bff9                	j	86e <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 888:	008b0913          	addi	s2,s6,8
- 88c:	000b4583          	lbu	a1,0(s6)
- 890:	8556                	mv	a0,s5
- 892:	00000097          	auipc	ra,0x0
- 896:	db4080e7          	jalr	-588(ra) # 646 <putc>
- 89a:	8b4a                	mv	s6,s2
+ 892:	008b0913          	addi	s2,s6,8
+ 896:	000b4583          	lbu	a1,0(s6)
+ 89a:	8556                	mv	a0,s5
+ 89c:	00000097          	auipc	ra,0x0
+ 8a0:	db4080e7          	jalr	-588(ra) # 650 <putc>
+ 8a4:	8b4a                	mv	s6,s2
       state = 0;
- 89c:	4981                	li	s3,0
- 89e:	bdd1                	j	772 <vprintf+0x60>
+ 8a6:	4981                	li	s3,0
+ 8a8:	bdd1                	j	77c <vprintf+0x60>
         putc(fd, c);
- 8a0:	85d2                	mv	a1,s4
- 8a2:	8556                	mv	a0,s5
- 8a4:	00000097          	auipc	ra,0x0
- 8a8:	da2080e7          	jalr	-606(ra) # 646 <putc>
+ 8aa:	85d2                	mv	a1,s4
+ 8ac:	8556                	mv	a0,s5
+ 8ae:	00000097          	auipc	ra,0x0
+ 8b2:	da2080e7          	jalr	-606(ra) # 650 <putc>
       state = 0;
- 8ac:	4981                	li	s3,0
- 8ae:	b5d1                	j	772 <vprintf+0x60>
+ 8b6:	4981                	li	s3,0
+ 8b8:	b5d1                	j	77c <vprintf+0x60>
         putc(fd, '%');
- 8b0:	85d2                	mv	a1,s4
- 8b2:	8556                	mv	a0,s5
- 8b4:	00000097          	auipc	ra,0x0
- 8b8:	d92080e7          	jalr	-622(ra) # 646 <putc>
+ 8ba:	85d2                	mv	a1,s4
+ 8bc:	8556                	mv	a0,s5
+ 8be:	00000097          	auipc	ra,0x0
+ 8c2:	d92080e7          	jalr	-622(ra) # 650 <putc>
         putc(fd, c);
- 8bc:	85ca                	mv	a1,s2
- 8be:	8556                	mv	a0,s5
- 8c0:	00000097          	auipc	ra,0x0
- 8c4:	d86080e7          	jalr	-634(ra) # 646 <putc>
+ 8c6:	85ca                	mv	a1,s2
+ 8c8:	8556                	mv	a0,s5
+ 8ca:	00000097          	auipc	ra,0x0
+ 8ce:	d86080e7          	jalr	-634(ra) # 650 <putc>
       state = 0;
- 8c8:	4981                	li	s3,0
- 8ca:	b565                	j	772 <vprintf+0x60>
+ 8d2:	4981                	li	s3,0
+ 8d4:	b565                	j	77c <vprintf+0x60>
         s = va_arg(ap, char*);
- 8cc:	8b4a                	mv	s6,s2
+ 8d6:	8b4a                	mv	s6,s2
       state = 0;
- 8ce:	4981                	li	s3,0
- 8d0:	b54d                	j	772 <vprintf+0x60>
+ 8d8:	4981                	li	s3,0
+ 8da:	b54d                	j	77c <vprintf+0x60>
     }
   }
 }
- 8d2:	70e6                	ld	ra,120(sp)
- 8d4:	7446                	ld	s0,112(sp)
- 8d6:	74a6                	ld	s1,104(sp)
- 8d8:	7906                	ld	s2,96(sp)
- 8da:	69e6                	ld	s3,88(sp)
- 8dc:	6a46                	ld	s4,80(sp)
- 8de:	6aa6                	ld	s5,72(sp)
- 8e0:	6b06                	ld	s6,64(sp)
- 8e2:	7be2                	ld	s7,56(sp)
- 8e4:	7c42                	ld	s8,48(sp)
- 8e6:	7ca2                	ld	s9,40(sp)
- 8e8:	7d02                	ld	s10,32(sp)
- 8ea:	6de2                	ld	s11,24(sp)
- 8ec:	6109                	addi	sp,sp,128
- 8ee:	8082                	ret
-
-00000000000008f0 <fprintf>:
+ 8dc:	70e6                	ld	ra,120(sp)
+ 8de:	7446                	ld	s0,112(sp)
+ 8e0:	74a6                	ld	s1,104(sp)
+ 8e2:	7906                	ld	s2,96(sp)
+ 8e4:	69e6                	ld	s3,88(sp)
+ 8e6:	6a46                	ld	s4,80(sp)
+ 8e8:	6aa6                	ld	s5,72(sp)
+ 8ea:	6b06                	ld	s6,64(sp)
+ 8ec:	7be2                	ld	s7,56(sp)
+ 8ee:	7c42                	ld	s8,48(sp)
+ 8f0:	7ca2                	ld	s9,40(sp)
+ 8f2:	7d02                	ld	s10,32(sp)
+ 8f4:	6de2                	ld	s11,24(sp)
+ 8f6:	6109                	addi	sp,sp,128
+ 8f8:	8082                	ret
+
+00000000000008fa <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 8f0:	715d                	addi	sp,sp,-80
- 8f2:	ec06                	sd	ra,24(sp)
- 8f4:	e822                	sd	s0,16(sp)
- 8f6:	1000                	addi	s0,sp,32
- 8f8:	e010                	sd	a2,0(s0)
- 8fa:	e414                	sd	a3,8(s0)
- 8fc:	e818                	sd	a4,16(s0)
- 8fe:	ec1c                	sd	a5,24(s0)
- 900:	03043023          	sd	a6,32(s0)
- 904:	03143423          	sd	a7,40(s0)
+ 8fa:	715d                	addi	sp,sp,-80
+ 8fc:	ec06                	sd	ra,24(sp)
+ 8fe:	e822                	sd	s0,16(sp)
+ 900:	1000                	addi	s0,sp,32
+ 902:	e010                	sd	a2,0(s0)
+ 904:	e414                	sd	a3,8(s0)
+ 906:	e818                	sd	a4,16(s0)
+ 908:	ec1c                	sd	a5,24(s0)
+ 90a:	03043023          	sd	a6,32(s0)
+ 90e:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 908:	8622                	mv	a2,s0
- 90a:	fe843423          	sd	s0,-24(s0)
+ 912:	8622                	mv	a2,s0
+ 914:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 90e:	00000097          	auipc	ra,0x0
- 912:	e04080e7          	jalr	-508(ra) # 712 <vprintf>
+ 918:	00000097          	auipc	ra,0x0
+ 91c:	e04080e7          	jalr	-508(ra) # 71c <vprintf>
 }
- 916:	60e2                	ld	ra,24(sp)
- 918:	6442                	ld	s0,16(sp)
- 91a:	6161                	addi	sp,sp,80
- 91c:	8082                	ret
+ 920:	60e2                	ld	ra,24(sp)
+ 922:	6442                	ld	s0,16(sp)
+ 924:	6161                	addi	sp,sp,80
+ 926:	8082                	ret
 
-000000000000091e <printf>:
+0000000000000928 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 91e:	711d                	addi	sp,sp,-96
- 920:	ec06                	sd	ra,24(sp)
- 922:	e822                	sd	s0,16(sp)
- 924:	1000                	addi	s0,sp,32
- 926:	e40c                	sd	a1,8(s0)
- 928:	e810                	sd	a2,16(s0)
- 92a:	ec14                	sd	a3,24(s0)
- 92c:	f018                	sd	a4,32(s0)
- 92e:	f41c                	sd	a5,40(s0)
- 930:	03043823          	sd	a6,48(s0)
- 934:	03143c23          	sd	a7,56(s0)
+ 928:	711d                	addi	sp,sp,-96
+ 92a:	ec06                	sd	ra,24(sp)
+ 92c:	e822                	sd	s0,16(sp)
+ 92e:	1000                	addi	s0,sp,32
+ 930:	e40c                	sd	a1,8(s0)
+ 932:	e810                	sd	a2,16(s0)
+ 934:	ec14                	sd	a3,24(s0)
+ 936:	f018                	sd	a4,32(s0)
+ 938:	f41c                	sd	a5,40(s0)
+ 93a:	03043823          	sd	a6,48(s0)
+ 93e:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 938:	00840613          	addi	a2,s0,8
- 93c:	fec43423          	sd	a2,-24(s0)
+ 942:	00840613          	addi	a2,s0,8
+ 946:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 940:	85aa                	mv	a1,a0
- 942:	4505                	li	a0,1
- 944:	00000097          	auipc	ra,0x0
- 948:	dce080e7          	jalr	-562(ra) # 712 <vprintf>
+ 94a:	85aa                	mv	a1,a0
+ 94c:	4505                	li	a0,1
+ 94e:	00000097          	auipc	ra,0x0
+ 952:	dce080e7          	jalr	-562(ra) # 71c <vprintf>
 }
- 94c:	60e2                	ld	ra,24(sp)
- 94e:	6442                	ld	s0,16(sp)
- 950:	6125                	addi	sp,sp,96
- 952:	8082                	ret
+ 956:	60e2                	ld	ra,24(sp)
+ 958:	6442                	ld	s0,16(sp)
+ 95a:	6125                	addi	sp,sp,96
+ 95c:	8082                	ret
 
-0000000000000954 <free>:
+000000000000095e <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 954:	1141                	addi	sp,sp,-16
- 956:	e422                	sd	s0,8(sp)
- 958:	0800                	addi	s0,sp,16
+ 95e:	1141                	addi	sp,sp,-16
+ 960:	e422                	sd	s0,8(sp)
+ 962:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 95a:	ff050693          	addi	a3,a0,-16
+ 964:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 95e:	00000797          	auipc	a5,0x0
- 962:	6127b783          	ld	a5,1554(a5) # f70 <freep>
- 966:	a02d                	j	990 <free+0x3c>
+ 968:	00000797          	auipc	a5,0x0
+ 96c:	6187b783          	ld	a5,1560(a5) # f80 <freep>
+ 970:	a02d                	j	99a <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 968:	4618                	lw	a4,8(a2)
- 96a:	9f2d                	addw	a4,a4,a1
- 96c:	fee52c23          	sw	a4,-8(a0)
+ 972:	4618                	lw	a4,8(a2)
+ 974:	9f2d                	addw	a4,a4,a1
+ 976:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 970:	6398                	ld	a4,0(a5)
- 972:	6310                	ld	a2,0(a4)
- 974:	a83d                	j	9b2 <free+0x5e>
+ 97a:	6398                	ld	a4,0(a5)
+ 97c:	6310                	ld	a2,0(a4)
+ 97e:	a83d                	j	9bc <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 976:	ff852703          	lw	a4,-8(a0)
- 97a:	9f31                	addw	a4,a4,a2
- 97c:	c798                	sw	a4,8(a5)
+ 980:	ff852703          	lw	a4,-8(a0)
+ 984:	9f31                	addw	a4,a4,a2
+ 986:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 97e:	ff053683          	ld	a3,-16(a0)
- 982:	a091                	j	9c6 <free+0x72>
+ 988:	ff053683          	ld	a3,-16(a0)
+ 98c:	a091                	j	9d0 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 984:	6398                	ld	a4,0(a5)
- 986:	00e7e463          	bltu	a5,a4,98e <free+0x3a>
- 98a:	00e6ea63          	bltu	a3,a4,99e <free+0x4a>
+ 98e:	6398                	ld	a4,0(a5)
+ 990:	00e7e463          	bltu	a5,a4,998 <free+0x3a>
+ 994:	00e6ea63          	bltu	a3,a4,9a8 <free+0x4a>
 {
- 98e:	87ba                	mv	a5,a4
+ 998:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 990:	fed7fae3          	bgeu	a5,a3,984 <free+0x30>
- 994:	6398                	ld	a4,0(a5)
- 996:	00e6e463          	bltu	a3,a4,99e <free+0x4a>
+ 99a:	fed7fae3          	bgeu	a5,a3,98e <free+0x30>
+ 99e:	6398                	ld	a4,0(a5)
+ 9a0:	00e6e463          	bltu	a3,a4,9a8 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 99a:	fee7eae3          	bltu	a5,a4,98e <free+0x3a>
+ 9a4:	fee7eae3          	bltu	a5,a4,998 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 99e:	ff852583          	lw	a1,-8(a0)
- 9a2:	6390                	ld	a2,0(a5)
- 9a4:	02059813          	slli	a6,a1,0x20
- 9a8:	01c85713          	srli	a4,a6,0x1c
- 9ac:	9736                	add	a4,a4,a3
- 9ae:	fae60de3          	beq	a2,a4,968 <free+0x14>
+ 9a8:	ff852583          	lw	a1,-8(a0)
+ 9ac:	6390                	ld	a2,0(a5)
+ 9ae:	02059813          	slli	a6,a1,0x20
+ 9b2:	01c85713          	srli	a4,a6,0x1c
+ 9b6:	9736                	add	a4,a4,a3
+ 9b8:	fae60de3          	beq	a2,a4,972 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 9b2:	fec53823          	sd	a2,-16(a0)
+ 9bc:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 9b6:	4790                	lw	a2,8(a5)
- 9b8:	02061593          	slli	a1,a2,0x20
- 9bc:	01c5d713          	srli	a4,a1,0x1c
- 9c0:	973e                	add	a4,a4,a5
- 9c2:	fae68ae3          	beq	a3,a4,976 <free+0x22>
+ 9c0:	4790                	lw	a2,8(a5)
+ 9c2:	02061593          	slli	a1,a2,0x20
+ 9c6:	01c5d713          	srli	a4,a1,0x1c
+ 9ca:	973e                	add	a4,a4,a5
+ 9cc:	fae68ae3          	beq	a3,a4,980 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 9c6:	e394                	sd	a3,0(a5)
+ 9d0:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 9c8:	00000717          	auipc	a4,0x0
- 9cc:	5af73423          	sd	a5,1448(a4) # f70 <freep>
+ 9d2:	00000717          	auipc	a4,0x0
+ 9d6:	5af73723          	sd	a5,1454(a4) # f80 <freep>
 }
- 9d0:	6422                	ld	s0,8(sp)
- 9d2:	0141                	addi	sp,sp,16
- 9d4:	8082                	ret
+ 9da:	6422                	ld	s0,8(sp)
+ 9dc:	0141                	addi	sp,sp,16
+ 9de:	8082                	ret
 
-00000000000009d6 <malloc>:
+00000000000009e0 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 9d6:	7139                	addi	sp,sp,-64
- 9d8:	fc06                	sd	ra,56(sp)
- 9da:	f822                	sd	s0,48(sp)
- 9dc:	f426                	sd	s1,40(sp)
- 9de:	f04a                	sd	s2,32(sp)
- 9e0:	ec4e                	sd	s3,24(sp)
- 9e2:	e852                	sd	s4,16(sp)
- 9e4:	e456                	sd	s5,8(sp)
- 9e6:	e05a                	sd	s6,0(sp)
- 9e8:	0080                	addi	s0,sp,64
+ 9e0:	7139                	addi	sp,sp,-64
+ 9e2:	fc06                	sd	ra,56(sp)
+ 9e4:	f822                	sd	s0,48(sp)
+ 9e6:	f426                	sd	s1,40(sp)
+ 9e8:	f04a                	sd	s2,32(sp)
+ 9ea:	ec4e                	sd	s3,24(sp)
+ 9ec:	e852                	sd	s4,16(sp)
+ 9ee:	e456                	sd	s5,8(sp)
+ 9f0:	e05a                	sd	s6,0(sp)
+ 9f2:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 9ea:	02051493          	slli	s1,a0,0x20
- 9ee:	9081                	srli	s1,s1,0x20
- 9f0:	04bd                	addi	s1,s1,15
- 9f2:	8091                	srli	s1,s1,0x4
- 9f4:	00148a1b          	addiw	s4,s1,1
- 9f8:	0485                	addi	s1,s1,1
+ 9f4:	02051493          	slli	s1,a0,0x20
+ 9f8:	9081                	srli	s1,s1,0x20
+ 9fa:	04bd                	addi	s1,s1,15
+ 9fc:	8091                	srli	s1,s1,0x4
+ 9fe:	00148a1b          	addiw	s4,s1,1
+ a02:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 9fa:	00000517          	auipc	a0,0x0
- 9fe:	57653503          	ld	a0,1398(a0) # f70 <freep>
- a02:	c515                	beqz	a0,a2e <malloc+0x58>
+ a04:	00000517          	auipc	a0,0x0
+ a08:	57c53503          	ld	a0,1404(a0) # f80 <freep>
+ a0c:	c515                	beqz	a0,a38 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- a04:	611c                	ld	a5,0(a0)
+ a0e:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- a06:	4798                	lw	a4,8(a5)
- a08:	04977163          	bgeu	a4,s1,a4a <malloc+0x74>
- a0c:	89d2                	mv	s3,s4
- a0e:	000a071b          	sext.w	a4,s4
- a12:	6685                	lui	a3,0x1
- a14:	00d77363          	bgeu	a4,a3,a1a <malloc+0x44>
- a18:	6985                	lui	s3,0x1
- a1a:	00098b1b          	sext.w	s6,s3
+ a10:	4798                	lw	a4,8(a5)
+ a12:	04977163          	bgeu	a4,s1,a54 <malloc+0x74>
+ a16:	89d2                	mv	s3,s4
+ a18:	000a071b          	sext.w	a4,s4
+ a1c:	6685                	lui	a3,0x1
+ a1e:	00d77363          	bgeu	a4,a3,a24 <malloc+0x44>
+ a22:	6985                	lui	s3,0x1
+ a24:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- a1e:	0049999b          	slliw	s3,s3,0x4
+ a28:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- a22:	00000917          	auipc	s2,0x0
- a26:	54e90913          	addi	s2,s2,1358 # f70 <freep>
+ a2c:	00000917          	auipc	s2,0x0
+ a30:	55490913          	addi	s2,s2,1364 # f80 <freep>
   if(p == (char*)-1)
- a2a:	5afd                	li	s5,-1
- a2c:	a8a5                	j	aa4 <malloc+0xce>
+ a34:	5afd                	li	s5,-1
+ a36:	a8a5                	j	aae <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- a2e:	00000797          	auipc	a5,0x0
- a32:	54278793          	addi	a5,a5,1346 # f70 <freep>
- a36:	00000717          	auipc	a4,0x0
- a3a:	54270713          	addi	a4,a4,1346 # f78 <base>
- a3e:	e398                	sd	a4,0(a5)
- a40:	e798                	sd	a4,8(a5)
+ a38:	00000797          	auipc	a5,0x0
+ a3c:	54878793          	addi	a5,a5,1352 # f80 <freep>
+ a40:	00000717          	auipc	a4,0x0
+ a44:	54870713          	addi	a4,a4,1352 # f88 <base>
+ a48:	e398                	sd	a4,0(a5)
+ a4a:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- a42:	0007a823          	sw	zero,16(a5)
+ a4c:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- a46:	87ba                	mv	a5,a4
- a48:	b7d1                	j	a0c <malloc+0x36>
+ a50:	87ba                	mv	a5,a4
+ a52:	b7d1                	j	a16 <malloc+0x36>
       if(p->s.size == nunits)
- a4a:	02e48c63          	beq	s1,a4,a82 <malloc+0xac>
+ a54:	02e48c63          	beq	s1,a4,a8c <malloc+0xac>
         p->s.size -= nunits;
- a4e:	4147073b          	subw	a4,a4,s4
- a52:	c798                	sw	a4,8(a5)
+ a58:	4147073b          	subw	a4,a4,s4
+ a5c:	c798                	sw	a4,8(a5)
         p += p->s.size;
- a54:	02071693          	slli	a3,a4,0x20
- a58:	01c6d713          	srli	a4,a3,0x1c
- a5c:	97ba                	add	a5,a5,a4
+ a5e:	02071693          	slli	a3,a4,0x20
+ a62:	01c6d713          	srli	a4,a3,0x1c
+ a66:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- a5e:	0147a423          	sw	s4,8(a5)
+ a68:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- a62:	00000717          	auipc	a4,0x0
- a66:	50a73723          	sd	a0,1294(a4) # f70 <freep>
+ a6c:	00000717          	auipc	a4,0x0
+ a70:	50a73a23          	sd	a0,1300(a4) # f80 <freep>
       return (void*)(p + 1);
- a6a:	01078513          	addi	a0,a5,16
+ a74:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- a6e:	70e2                	ld	ra,56(sp)
- a70:	7442                	ld	s0,48(sp)
- a72:	74a2                	ld	s1,40(sp)
- a74:	7902                	ld	s2,32(sp)
- a76:	69e2                	ld	s3,24(sp)
- a78:	6a42                	ld	s4,16(sp)
- a7a:	6aa2                	ld	s5,8(sp)
- a7c:	6b02                	ld	s6,0(sp)
- a7e:	6121                	addi	sp,sp,64
- a80:	8082                	ret
+ a78:	70e2                	ld	ra,56(sp)
+ a7a:	7442                	ld	s0,48(sp)
+ a7c:	74a2                	ld	s1,40(sp)
+ a7e:	7902                	ld	s2,32(sp)
+ a80:	69e2                	ld	s3,24(sp)
+ a82:	6a42                	ld	s4,16(sp)
+ a84:	6aa2                	ld	s5,8(sp)
+ a86:	6b02                	ld	s6,0(sp)
+ a88:	6121                	addi	sp,sp,64
+ a8a:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- a82:	6398                	ld	a4,0(a5)
- a84:	e118                	sd	a4,0(a0)
- a86:	bff1                	j	a62 <malloc+0x8c>
+ a8c:	6398                	ld	a4,0(a5)
+ a8e:	e118                	sd	a4,0(a0)
+ a90:	bff1                	j	a6c <malloc+0x8c>
   hp->s.size = nu;
- a88:	01652423          	sw	s6,8(a0)
+ a92:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- a8c:	0541                	addi	a0,a0,16
- a8e:	00000097          	auipc	ra,0x0
- a92:	ec6080e7          	jalr	-314(ra) # 954 <free>
+ a96:	0541                	addi	a0,a0,16
+ a98:	00000097          	auipc	ra,0x0
+ a9c:	ec6080e7          	jalr	-314(ra) # 95e <free>
   return freep;
- a96:	00093503          	ld	a0,0(s2)
+ aa0:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- a9a:	d971                	beqz	a0,a6e <malloc+0x98>
+ aa4:	d971                	beqz	a0,a78 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- a9c:	611c                	ld	a5,0(a0)
+ aa6:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- a9e:	4798                	lw	a4,8(a5)
- aa0:	fa9775e3          	bgeu	a4,s1,a4a <malloc+0x74>
+ aa8:	4798                	lw	a4,8(a5)
+ aaa:	fa9775e3          	bgeu	a4,s1,a54 <malloc+0x74>
     if(p == freep)
- aa4:	00093703          	ld	a4,0(s2)
- aa8:	853e                	mv	a0,a5
- aaa:	fef719e3          	bne	a4,a5,a9c <malloc+0xc6>
+ aae:	00093703          	ld	a4,0(s2)
+ ab2:	853e                	mv	a0,a5
+ ab4:	fef719e3          	bne	a4,a5,aa6 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- aae:	854e                	mv	a0,s3
- ab0:	00000097          	auipc	ra,0x0
- ab4:	b2a080e7          	jalr	-1238(ra) # 5da <sbrk>
+ ab8:	854e                	mv	a0,s3
+ aba:	00000097          	auipc	ra,0x0
+ abe:	b20080e7          	jalr	-1248(ra) # 5da <sbrk>
   if(p == (char*)-1)
- ab8:	fd5518e3          	bne	a0,s5,a88 <malloc+0xb2>
+ ac2:	fd5518e3          	bne	a0,s5,a92 <malloc+0xb2>
         return 0;
- abc:	4501                	li	a0,0
- abe:	bf45                	j	a6e <malloc+0x98>
+ ac6:	4501                	li	a0,0
+ ac8:	bf45                	j	a78 <malloc+0x98>
diff --git a/xv6-user/grep.sym b/xv6-user/grep.sym
index 482f171..69fa118 100644
--- a/xv6-user/grep.sym
+++ b/xv6-user/grep.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-0000000000000ac0 .rodata
-0000000000000b70 .bss
+0000000000000ad0 .rodata
+0000000000000b80 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,25 +16,26 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-0000000000000646 putc
-0000000000000668 printint
-0000000000000b58 digits
+0000000000000650 putc
+0000000000000672 printint
+0000000000000b68 digits
 0000000000000000 umalloc.c
-0000000000000f70 freep
-0000000000000f78 base
+0000000000000f80 freep
+0000000000000f88 base
 000000000000029e strcpy
-000000000000091e printf
-0000000000001369 __global_pointer$
+0000000000000928 printf
+0000000000001379 __global_pointer$
 00000000000005fa dev
 00000000000004a4 memmove
 000000000000004e matchhere
+0000000000000646 times
 000000000000061a trace
 0000000000000384 gets
-0000000000000b69 __SDATA_BEGIN__
+0000000000000b79 __SDATA_BEGIN__
 00000000000005d0 getpid
 0000000000000536 memcpy
 000000000000011a grep
-00000000000009d6 malloc
+00000000000009e0 malloc
 0000000000000612 remove
 00000000000005e2 sleep
 0000000000000622 sysinfo
@@ -44,21 +45,21 @@
 000000000000062a rename
 000000000000057c write
 00000000000005aa fstat
-00000000000008f0 fprintf
+00000000000008fa fprintf
 0000000000000590 kill
 00000000000002ba strcat
-0000000000000712 vprintf
+000000000000071c vprintf
 00000000000005be chdir
 0000000000000598 exec
 0000000000000560 wait
 0000000000000572 read
 00000000000004fc memcmp
 000000000000054e fork
-0000000000000f88 __BSS_END__
+0000000000000f98 __BSS_END__
 00000000000005da sbrk
 00000000000005f2 test_proc
 00000000000005ea uptime
-0000000000000b69 __bss_start
+0000000000000b79 __bss_start
 000000000000033e memset
 00000000000001de main
 0000000000000000 matchstar
@@ -66,11 +67,11 @@
 0000000000000632 shutdown
 00000000000005c8 dup
 000000000000060a getcwd
-0000000000000b70 buf
-0000000000000b69 __DATA_BEGIN__
+0000000000000b80 buf
+0000000000000b79 __DATA_BEGIN__
 00000000000003fe stat
-0000000000000b69 _edata
-0000000000000f88 _end
+0000000000000b79 _edata
+0000000000000f98 _end
 00000000000000cc match
 0000000000000556 exit
 0000000000000444 atoi
@@ -79,4 +80,4 @@
 0000000000000360 strchr
 00000000000005b4 mkdir
 0000000000000586 close
-0000000000000954 free
+000000000000095e free
diff --git a/xv6-user/init.asm b/xv6-user/init.asm
index 380b940..1e8b91d 100644
--- a/xv6-user/init.asm
+++ b/xv6-user/init.asm
@@ -36,25 +36,25 @@ int main(void)
   2e:	40e080e7          	jalr	1038(ra) # 438 <dup>
   for (int i = 0; i < counts; i++)
   32:	00001797          	auipc	a5,0x1
-  36:	a867a783          	lw	a5,-1402(a5) # ab8 <counts>
+  36:	a9e7a783          	lw	a5,-1378(a5) # ad0 <counts>
   3a:	0af05d63          	blez	a5,f4 <main+0xf4>
   3e:	4901                	li	s2,0
   {
     printf("init: starting sh\n");
   40:	00001a17          	auipc	s4,0x1
-  44:	8f0a0a13          	addi	s4,s4,-1808 # 930 <malloc+0xea>
+  44:	900a0a13          	addi	s4,s4,-1792 # 940 <malloc+0xf0>
   for (int i = 0; i < counts; i++)
   48:	00001997          	auipc	s3,0x1
-  4c:	a7098993          	addi	s3,s3,-1424 # ab8 <counts>
+  4c:	a8898993          	addi	s3,s3,-1400 # ad0 <counts>
   50:	a8b9                	j	ae <main+0xae>
     pid = fork();
     if (pid < 0)
     {
       printf("init: fork failed\n");
   52:	00001517          	auipc	a0,0x1
-  56:	8f650513          	addi	a0,a0,-1802 # 948 <malloc+0x102>
+  56:	90650513          	addi	a0,a0,-1786 # 958 <malloc+0x108>
   5a:	00000097          	auipc	ra,0x0
-  5e:	734080e7          	jalr	1844(ra) # 78e <printf>
+  5e:	73e080e7          	jalr	1854(ra) # 798 <printf>
       exit(1);
   62:	4505                	li	a0,1
   64:	00000097          	auipc	ra,0x0
@@ -65,18 +65,18 @@ int main(void)
       exec(tests[i], argv);
   6c:	090e                	slli	s2,s2,0x3
   6e:	00001797          	auipc	a5,0x1
-  72:	a5278793          	addi	a5,a5,-1454 # ac0 <tests>
+  72:	a6a78793          	addi	a5,a5,-1430 # ad8 <tests>
   76:	97ca                	add	a5,a5,s2
   78:	00001597          	auipc	a1,0x1
-  7c:	ae858593          	addi	a1,a1,-1304 # b60 <argv>
+  7c:	b0858593          	addi	a1,a1,-1272 # b80 <argv>
   80:	6388                	ld	a0,0(a5)
   82:	00000097          	auipc	ra,0x0
   86:	386080e7          	jalr	902(ra) # 408 <exec>
       printf("init: exec sh failed\n");
   8a:	00001517          	auipc	a0,0x1
-  8e:	8d650513          	addi	a0,a0,-1834 # 960 <malloc+0x11a>
+  8e:	8e650513          	addi	a0,a0,-1818 # 970 <malloc+0x120>
   92:	00000097          	auipc	ra,0x0
-  96:	6fc080e7          	jalr	1788(ra) # 78e <printf>
+  96:	706080e7          	jalr	1798(ra) # 798 <printf>
       exit(1);
   9a:	4505                	li	a0,1
   9c:	00000097          	auipc	ra,0x0
@@ -88,7 +88,7 @@ int main(void)
     printf("init: starting sh\n");
   ae:	8552                	mv	a0,s4
   b0:	00000097          	auipc	ra,0x0
-  b4:	6de080e7          	jalr	1758(ra) # 78e <printf>
+  b4:	6e8080e7          	jalr	1768(ra) # 798 <printf>
     pid = fork();
   b8:	00000097          	auipc	ra,0x0
   bc:	306080e7          	jalr	774(ra) # 3be <fork>
@@ -114,9 +114,9 @@ int main(void)
       {
         printf("init: wait returned an error\n");
   da:	00001517          	auipc	a0,0x1
-  de:	89e50513          	addi	a0,a0,-1890 # 978 <malloc+0x132>
+  de:	8ae50513          	addi	a0,a0,-1874 # 988 <malloc+0x138>
   e2:	00000097          	auipc	ra,0x0
-  e6:	6ac080e7          	jalr	1708(ra) # 78e <printf>
+  e6:	6b6080e7          	jalr	1718(ra) # 798 <printf>
         exit(1);
   ea:	4505                	li	a0,1
   ec:	00000097          	auipc	ra,0x0
@@ -897,637 +897,647 @@ uname:
  ret
  4b4:	8082                	ret
 
-00000000000004b6 <putc>:
+00000000000004b6 <times>:
+.global times
+times:
+ li a7, SYS_times
+ 4b6:	09900893          	li	a7,153
+ ecall
+ 4ba:	00000073          	ecall
+ ret
+ 4be:	8082                	ret
+
+00000000000004c0 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 4b6:	1101                	addi	sp,sp,-32
- 4b8:	ec06                	sd	ra,24(sp)
- 4ba:	e822                	sd	s0,16(sp)
- 4bc:	1000                	addi	s0,sp,32
- 4be:	feb407a3          	sb	a1,-17(s0)
+ 4c0:	1101                	addi	sp,sp,-32
+ 4c2:	ec06                	sd	ra,24(sp)
+ 4c4:	e822                	sd	s0,16(sp)
+ 4c6:	1000                	addi	s0,sp,32
+ 4c8:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 4c2:	4605                	li	a2,1
- 4c4:	fef40593          	addi	a1,s0,-17
- 4c8:	00000097          	auipc	ra,0x0
- 4cc:	f24080e7          	jalr	-220(ra) # 3ec <write>
+ 4cc:	4605                	li	a2,1
+ 4ce:	fef40593          	addi	a1,s0,-17
+ 4d2:	00000097          	auipc	ra,0x0
+ 4d6:	f1a080e7          	jalr	-230(ra) # 3ec <write>
 }
- 4d0:	60e2                	ld	ra,24(sp)
- 4d2:	6442                	ld	s0,16(sp)
- 4d4:	6105                	addi	sp,sp,32
- 4d6:	8082                	ret
+ 4da:	60e2                	ld	ra,24(sp)
+ 4dc:	6442                	ld	s0,16(sp)
+ 4de:	6105                	addi	sp,sp,32
+ 4e0:	8082                	ret
 
-00000000000004d8 <printint>:
+00000000000004e2 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 4d8:	7139                	addi	sp,sp,-64
- 4da:	fc06                	sd	ra,56(sp)
- 4dc:	f822                	sd	s0,48(sp)
- 4de:	f426                	sd	s1,40(sp)
- 4e0:	f04a                	sd	s2,32(sp)
- 4e2:	ec4e                	sd	s3,24(sp)
- 4e4:	0080                	addi	s0,sp,64
- 4e6:	84aa                	mv	s1,a0
+ 4e2:	7139                	addi	sp,sp,-64
+ 4e4:	fc06                	sd	ra,56(sp)
+ 4e6:	f822                	sd	s0,48(sp)
+ 4e8:	f426                	sd	s1,40(sp)
+ 4ea:	f04a                	sd	s2,32(sp)
+ 4ec:	ec4e                	sd	s3,24(sp)
+ 4ee:	0080                	addi	s0,sp,64
+ 4f0:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 4e8:	c299                	beqz	a3,4ee <printint+0x16>
- 4ea:	0805c863          	bltz	a1,57a <printint+0xa2>
+ 4f2:	c299                	beqz	a3,4f8 <printint+0x16>
+ 4f4:	0805c863          	bltz	a1,584 <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 4ee:	2581                	sext.w	a1,a1
+ 4f8:	2581                	sext.w	a1,a1
   neg = 0;
- 4f0:	4881                	li	a7,0
+ 4fa:	4881                	li	a7,0
   }
 
   i = 0;
- 4f2:	fc040993          	addi	s3,s0,-64
+ 4fc:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 4f6:	86ce                	mv	a3,s3
+ 500:	86ce                	mv	a3,s3
   i = 0;
- 4f8:	4701                	li	a4,0
+ 502:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 4fa:	2601                	sext.w	a2,a2
- 4fc:	00000517          	auipc	a0,0x0
- 500:	5a450513          	addi	a0,a0,1444 # aa0 <digits>
- 504:	883a                	mv	a6,a4
- 506:	2705                	addiw	a4,a4,1
- 508:	02c5f7bb          	remuw	a5,a1,a2
- 50c:	1782                	slli	a5,a5,0x20
- 50e:	9381                	srli	a5,a5,0x20
- 510:	97aa                	add	a5,a5,a0
- 512:	0007c783          	lbu	a5,0(a5)
- 516:	00f68023          	sb	a5,0(a3)
+ 504:	2601                	sext.w	a2,a2
+ 506:	00000517          	auipc	a0,0x0
+ 50a:	5b250513          	addi	a0,a0,1458 # ab8 <digits>
+ 50e:	883a                	mv	a6,a4
+ 510:	2705                	addiw	a4,a4,1
+ 512:	02c5f7bb          	remuw	a5,a1,a2
+ 516:	1782                	slli	a5,a5,0x20
+ 518:	9381                	srli	a5,a5,0x20
+ 51a:	97aa                	add	a5,a5,a0
+ 51c:	0007c783          	lbu	a5,0(a5)
+ 520:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 51a:	0005879b          	sext.w	a5,a1
- 51e:	02c5d5bb          	divuw	a1,a1,a2
- 522:	0685                	addi	a3,a3,1
- 524:	fec7f0e3          	bgeu	a5,a2,504 <printint+0x2c>
+ 524:	0005879b          	sext.w	a5,a1
+ 528:	02c5d5bb          	divuw	a1,a1,a2
+ 52c:	0685                	addi	a3,a3,1
+ 52e:	fec7f0e3          	bgeu	a5,a2,50e <printint+0x2c>
   if(neg)
- 528:	00088c63          	beqz	a7,540 <printint+0x68>
+ 532:	00088c63          	beqz	a7,54a <printint+0x68>
     buf[i++] = '-';
- 52c:	fd070793          	addi	a5,a4,-48
- 530:	00878733          	add	a4,a5,s0
- 534:	02d00793          	li	a5,45
- 538:	fef70823          	sb	a5,-16(a4)
- 53c:	0028071b          	addiw	a4,a6,2
+ 536:	fd070793          	addi	a5,a4,-48
+ 53a:	00878733          	add	a4,a5,s0
+ 53e:	02d00793          	li	a5,45
+ 542:	fef70823          	sb	a5,-16(a4)
+ 546:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 540:	02e05663          	blez	a4,56c <printint+0x94>
- 544:	fc040913          	addi	s2,s0,-64
- 548:	993a                	add	s2,s2,a4
- 54a:	19fd                	addi	s3,s3,-1
- 54c:	99ba                	add	s3,s3,a4
- 54e:	377d                	addiw	a4,a4,-1
- 550:	1702                	slli	a4,a4,0x20
- 552:	9301                	srli	a4,a4,0x20
- 554:	40e989b3          	sub	s3,s3,a4
+ 54a:	02e05663          	blez	a4,576 <printint+0x94>
+ 54e:	fc040913          	addi	s2,s0,-64
+ 552:	993a                	add	s2,s2,a4
+ 554:	19fd                	addi	s3,s3,-1
+ 556:	99ba                	add	s3,s3,a4
+ 558:	377d                	addiw	a4,a4,-1
+ 55a:	1702                	slli	a4,a4,0x20
+ 55c:	9301                	srli	a4,a4,0x20
+ 55e:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 558:	fff94583          	lbu	a1,-1(s2)
- 55c:	8526                	mv	a0,s1
- 55e:	00000097          	auipc	ra,0x0
- 562:	f58080e7          	jalr	-168(ra) # 4b6 <putc>
+ 562:	fff94583          	lbu	a1,-1(s2)
+ 566:	8526                	mv	a0,s1
+ 568:	00000097          	auipc	ra,0x0
+ 56c:	f58080e7          	jalr	-168(ra) # 4c0 <putc>
   while(--i >= 0)
- 566:	197d                	addi	s2,s2,-1
- 568:	ff3918e3          	bne	s2,s3,558 <printint+0x80>
+ 570:	197d                	addi	s2,s2,-1
+ 572:	ff3918e3          	bne	s2,s3,562 <printint+0x80>
 }
- 56c:	70e2                	ld	ra,56(sp)
- 56e:	7442                	ld	s0,48(sp)
- 570:	74a2                	ld	s1,40(sp)
- 572:	7902                	ld	s2,32(sp)
- 574:	69e2                	ld	s3,24(sp)
- 576:	6121                	addi	sp,sp,64
- 578:	8082                	ret
+ 576:	70e2                	ld	ra,56(sp)
+ 578:	7442                	ld	s0,48(sp)
+ 57a:	74a2                	ld	s1,40(sp)
+ 57c:	7902                	ld	s2,32(sp)
+ 57e:	69e2                	ld	s3,24(sp)
+ 580:	6121                	addi	sp,sp,64
+ 582:	8082                	ret
     x = -xx;
- 57a:	40b005bb          	negw	a1,a1
+ 584:	40b005bb          	negw	a1,a1
     neg = 1;
- 57e:	4885                	li	a7,1
+ 588:	4885                	li	a7,1
     x = -xx;
- 580:	bf8d                	j	4f2 <printint+0x1a>
+ 58a:	bf8d                	j	4fc <printint+0x1a>
 
-0000000000000582 <vprintf>:
+000000000000058c <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 582:	7119                	addi	sp,sp,-128
- 584:	fc86                	sd	ra,120(sp)
- 586:	f8a2                	sd	s0,112(sp)
- 588:	f4a6                	sd	s1,104(sp)
- 58a:	f0ca                	sd	s2,96(sp)
- 58c:	ecce                	sd	s3,88(sp)
- 58e:	e8d2                	sd	s4,80(sp)
- 590:	e4d6                	sd	s5,72(sp)
- 592:	e0da                	sd	s6,64(sp)
- 594:	fc5e                	sd	s7,56(sp)
- 596:	f862                	sd	s8,48(sp)
- 598:	f466                	sd	s9,40(sp)
- 59a:	f06a                	sd	s10,32(sp)
- 59c:	ec6e                	sd	s11,24(sp)
- 59e:	0100                	addi	s0,sp,128
+ 58c:	7119                	addi	sp,sp,-128
+ 58e:	fc86                	sd	ra,120(sp)
+ 590:	f8a2                	sd	s0,112(sp)
+ 592:	f4a6                	sd	s1,104(sp)
+ 594:	f0ca                	sd	s2,96(sp)
+ 596:	ecce                	sd	s3,88(sp)
+ 598:	e8d2                	sd	s4,80(sp)
+ 59a:	e4d6                	sd	s5,72(sp)
+ 59c:	e0da                	sd	s6,64(sp)
+ 59e:	fc5e                	sd	s7,56(sp)
+ 5a0:	f862                	sd	s8,48(sp)
+ 5a2:	f466                	sd	s9,40(sp)
+ 5a4:	f06a                	sd	s10,32(sp)
+ 5a6:	ec6e                	sd	s11,24(sp)
+ 5a8:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 5a0:	0005c903          	lbu	s2,0(a1)
- 5a4:	18090f63          	beqz	s2,742 <vprintf+0x1c0>
- 5a8:	8aaa                	mv	s5,a0
- 5aa:	8b32                	mv	s6,a2
- 5ac:	00158493          	addi	s1,a1,1
+ 5aa:	0005c903          	lbu	s2,0(a1)
+ 5ae:	18090f63          	beqz	s2,74c <vprintf+0x1c0>
+ 5b2:	8aaa                	mv	s5,a0
+ 5b4:	8b32                	mv	s6,a2
+ 5b6:	00158493          	addi	s1,a1,1
   state = 0;
- 5b0:	4981                	li	s3,0
+ 5ba:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 5b2:	02500a13          	li	s4,37
- 5b6:	4c55                	li	s8,21
- 5b8:	00000c97          	auipc	s9,0x0
- 5bc:	490c8c93          	addi	s9,s9,1168 # a48 <malloc+0x202>
+ 5bc:	02500a13          	li	s4,37
+ 5c0:	4c55                	li	s8,21
+ 5c2:	00000c97          	auipc	s9,0x0
+ 5c6:	49ec8c93          	addi	s9,s9,1182 # a60 <malloc+0x210>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 5c0:	02800d93          	li	s11,40
+ 5ca:	02800d93          	li	s11,40
   putc(fd, 'x');
- 5c4:	4d41                	li	s10,16
+ 5ce:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 5c6:	00000b97          	auipc	s7,0x0
- 5ca:	4dab8b93          	addi	s7,s7,1242 # aa0 <digits>
- 5ce:	a839                	j	5ec <vprintf+0x6a>
+ 5d0:	00000b97          	auipc	s7,0x0
+ 5d4:	4e8b8b93          	addi	s7,s7,1256 # ab8 <digits>
+ 5d8:	a839                	j	5f6 <vprintf+0x6a>
         putc(fd, c);
- 5d0:	85ca                	mv	a1,s2
- 5d2:	8556                	mv	a0,s5
- 5d4:	00000097          	auipc	ra,0x0
- 5d8:	ee2080e7          	jalr	-286(ra) # 4b6 <putc>
- 5dc:	a019                	j	5e2 <vprintf+0x60>
+ 5da:	85ca                	mv	a1,s2
+ 5dc:	8556                	mv	a0,s5
+ 5de:	00000097          	auipc	ra,0x0
+ 5e2:	ee2080e7          	jalr	-286(ra) # 4c0 <putc>
+ 5e6:	a019                	j	5ec <vprintf+0x60>
     } else if(state == '%'){
- 5de:	01498d63          	beq	s3,s4,5f8 <vprintf+0x76>
+ 5e8:	01498d63          	beq	s3,s4,602 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 5e2:	0485                	addi	s1,s1,1
- 5e4:	fff4c903          	lbu	s2,-1(s1)
- 5e8:	14090d63          	beqz	s2,742 <vprintf+0x1c0>
+ 5ec:	0485                	addi	s1,s1,1
+ 5ee:	fff4c903          	lbu	s2,-1(s1)
+ 5f2:	14090d63          	beqz	s2,74c <vprintf+0x1c0>
     if(state == 0){
- 5ec:	fe0999e3          	bnez	s3,5de <vprintf+0x5c>
+ 5f6:	fe0999e3          	bnez	s3,5e8 <vprintf+0x5c>
       if(c == '%'){
- 5f0:	ff4910e3          	bne	s2,s4,5d0 <vprintf+0x4e>
+ 5fa:	ff4910e3          	bne	s2,s4,5da <vprintf+0x4e>
         state = '%';
- 5f4:	89d2                	mv	s3,s4
- 5f6:	b7f5                	j	5e2 <vprintf+0x60>
+ 5fe:	89d2                	mv	s3,s4
+ 600:	b7f5                	j	5ec <vprintf+0x60>
       if(c == 'd'){
- 5f8:	11490c63          	beq	s2,s4,710 <vprintf+0x18e>
- 5fc:	f9d9079b          	addiw	a5,s2,-99
- 600:	0ff7f793          	zext.b	a5,a5
- 604:	10fc6e63          	bltu	s8,a5,720 <vprintf+0x19e>
- 608:	f9d9079b          	addiw	a5,s2,-99
- 60c:	0ff7f713          	zext.b	a4,a5
- 610:	10ec6863          	bltu	s8,a4,720 <vprintf+0x19e>
- 614:	00271793          	slli	a5,a4,0x2
- 618:	97e6                	add	a5,a5,s9
- 61a:	439c                	lw	a5,0(a5)
- 61c:	97e6                	add	a5,a5,s9
- 61e:	8782                	jr	a5
+ 602:	11490c63          	beq	s2,s4,71a <vprintf+0x18e>
+ 606:	f9d9079b          	addiw	a5,s2,-99
+ 60a:	0ff7f793          	zext.b	a5,a5
+ 60e:	10fc6e63          	bltu	s8,a5,72a <vprintf+0x19e>
+ 612:	f9d9079b          	addiw	a5,s2,-99
+ 616:	0ff7f713          	zext.b	a4,a5
+ 61a:	10ec6863          	bltu	s8,a4,72a <vprintf+0x19e>
+ 61e:	00271793          	slli	a5,a4,0x2
+ 622:	97e6                	add	a5,a5,s9
+ 624:	439c                	lw	a5,0(a5)
+ 626:	97e6                	add	a5,a5,s9
+ 628:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 620:	008b0913          	addi	s2,s6,8
- 624:	4685                	li	a3,1
- 626:	4629                	li	a2,10
- 628:	000b2583          	lw	a1,0(s6)
- 62c:	8556                	mv	a0,s5
- 62e:	00000097          	auipc	ra,0x0
- 632:	eaa080e7          	jalr	-342(ra) # 4d8 <printint>
- 636:	8b4a                	mv	s6,s2
+ 62a:	008b0913          	addi	s2,s6,8
+ 62e:	4685                	li	a3,1
+ 630:	4629                	li	a2,10
+ 632:	000b2583          	lw	a1,0(s6)
+ 636:	8556                	mv	a0,s5
+ 638:	00000097          	auipc	ra,0x0
+ 63c:	eaa080e7          	jalr	-342(ra) # 4e2 <printint>
+ 640:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 638:	4981                	li	s3,0
- 63a:	b765                	j	5e2 <vprintf+0x60>
+ 642:	4981                	li	s3,0
+ 644:	b765                	j	5ec <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 63c:	008b0913          	addi	s2,s6,8
- 640:	4681                	li	a3,0
- 642:	4629                	li	a2,10
- 644:	000b2583          	lw	a1,0(s6)
- 648:	8556                	mv	a0,s5
- 64a:	00000097          	auipc	ra,0x0
- 64e:	e8e080e7          	jalr	-370(ra) # 4d8 <printint>
- 652:	8b4a                	mv	s6,s2
+ 646:	008b0913          	addi	s2,s6,8
+ 64a:	4681                	li	a3,0
+ 64c:	4629                	li	a2,10
+ 64e:	000b2583          	lw	a1,0(s6)
+ 652:	8556                	mv	a0,s5
+ 654:	00000097          	auipc	ra,0x0
+ 658:	e8e080e7          	jalr	-370(ra) # 4e2 <printint>
+ 65c:	8b4a                	mv	s6,s2
       state = 0;
- 654:	4981                	li	s3,0
- 656:	b771                	j	5e2 <vprintf+0x60>
+ 65e:	4981                	li	s3,0
+ 660:	b771                	j	5ec <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 658:	008b0913          	addi	s2,s6,8
- 65c:	4681                	li	a3,0
- 65e:	866a                	mv	a2,s10
- 660:	000b2583          	lw	a1,0(s6)
- 664:	8556                	mv	a0,s5
- 666:	00000097          	auipc	ra,0x0
- 66a:	e72080e7          	jalr	-398(ra) # 4d8 <printint>
- 66e:	8b4a                	mv	s6,s2
+ 662:	008b0913          	addi	s2,s6,8
+ 666:	4681                	li	a3,0
+ 668:	866a                	mv	a2,s10
+ 66a:	000b2583          	lw	a1,0(s6)
+ 66e:	8556                	mv	a0,s5
+ 670:	00000097          	auipc	ra,0x0
+ 674:	e72080e7          	jalr	-398(ra) # 4e2 <printint>
+ 678:	8b4a                	mv	s6,s2
       state = 0;
- 670:	4981                	li	s3,0
- 672:	bf85                	j	5e2 <vprintf+0x60>
+ 67a:	4981                	li	s3,0
+ 67c:	bf85                	j	5ec <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 674:	008b0793          	addi	a5,s6,8
- 678:	f8f43423          	sd	a5,-120(s0)
- 67c:	000b3983          	ld	s3,0(s6)
+ 67e:	008b0793          	addi	a5,s6,8
+ 682:	f8f43423          	sd	a5,-120(s0)
+ 686:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 680:	03000593          	li	a1,48
- 684:	8556                	mv	a0,s5
- 686:	00000097          	auipc	ra,0x0
- 68a:	e30080e7          	jalr	-464(ra) # 4b6 <putc>
+ 68a:	03000593          	li	a1,48
+ 68e:	8556                	mv	a0,s5
+ 690:	00000097          	auipc	ra,0x0
+ 694:	e30080e7          	jalr	-464(ra) # 4c0 <putc>
   putc(fd, 'x');
- 68e:	07800593          	li	a1,120
- 692:	8556                	mv	a0,s5
- 694:	00000097          	auipc	ra,0x0
- 698:	e22080e7          	jalr	-478(ra) # 4b6 <putc>
- 69c:	896a                	mv	s2,s10
+ 698:	07800593          	li	a1,120
+ 69c:	8556                	mv	a0,s5
+ 69e:	00000097          	auipc	ra,0x0
+ 6a2:	e22080e7          	jalr	-478(ra) # 4c0 <putc>
+ 6a6:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 69e:	03c9d793          	srli	a5,s3,0x3c
- 6a2:	97de                	add	a5,a5,s7
- 6a4:	0007c583          	lbu	a1,0(a5)
- 6a8:	8556                	mv	a0,s5
- 6aa:	00000097          	auipc	ra,0x0
- 6ae:	e0c080e7          	jalr	-500(ra) # 4b6 <putc>
+ 6a8:	03c9d793          	srli	a5,s3,0x3c
+ 6ac:	97de                	add	a5,a5,s7
+ 6ae:	0007c583          	lbu	a1,0(a5)
+ 6b2:	8556                	mv	a0,s5
+ 6b4:	00000097          	auipc	ra,0x0
+ 6b8:	e0c080e7          	jalr	-500(ra) # 4c0 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 6b2:	0992                	slli	s3,s3,0x4
- 6b4:	397d                	addiw	s2,s2,-1
- 6b6:	fe0914e3          	bnez	s2,69e <vprintf+0x11c>
+ 6bc:	0992                	slli	s3,s3,0x4
+ 6be:	397d                	addiw	s2,s2,-1
+ 6c0:	fe0914e3          	bnez	s2,6a8 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 6ba:	f8843b03          	ld	s6,-120(s0)
+ 6c4:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 6be:	4981                	li	s3,0
- 6c0:	b70d                	j	5e2 <vprintf+0x60>
+ 6c8:	4981                	li	s3,0
+ 6ca:	b70d                	j	5ec <vprintf+0x60>
         s = va_arg(ap, char*);
- 6c2:	008b0913          	addi	s2,s6,8
- 6c6:	000b3983          	ld	s3,0(s6)
+ 6cc:	008b0913          	addi	s2,s6,8
+ 6d0:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 6ca:	02098163          	beqz	s3,6ec <vprintf+0x16a>
+ 6d4:	02098163          	beqz	s3,6f6 <vprintf+0x16a>
         while(*s != 0){
- 6ce:	0009c583          	lbu	a1,0(s3)
- 6d2:	c5ad                	beqz	a1,73c <vprintf+0x1ba>
+ 6d8:	0009c583          	lbu	a1,0(s3)
+ 6dc:	c5ad                	beqz	a1,746 <vprintf+0x1ba>
           putc(fd, *s);
- 6d4:	8556                	mv	a0,s5
- 6d6:	00000097          	auipc	ra,0x0
- 6da:	de0080e7          	jalr	-544(ra) # 4b6 <putc>
+ 6de:	8556                	mv	a0,s5
+ 6e0:	00000097          	auipc	ra,0x0
+ 6e4:	de0080e7          	jalr	-544(ra) # 4c0 <putc>
           s++;
- 6de:	0985                	addi	s3,s3,1
+ 6e8:	0985                	addi	s3,s3,1
         while(*s != 0){
- 6e0:	0009c583          	lbu	a1,0(s3)
- 6e4:	f9e5                	bnez	a1,6d4 <vprintf+0x152>
+ 6ea:	0009c583          	lbu	a1,0(s3)
+ 6ee:	f9e5                	bnez	a1,6de <vprintf+0x152>
         s = va_arg(ap, char*);
- 6e6:	8b4a                	mv	s6,s2
+ 6f0:	8b4a                	mv	s6,s2
       state = 0;
- 6e8:	4981                	li	s3,0
- 6ea:	bde5                	j	5e2 <vprintf+0x60>
+ 6f2:	4981                	li	s3,0
+ 6f4:	bde5                	j	5ec <vprintf+0x60>
           s = "(null)";
- 6ec:	00000997          	auipc	s3,0x0
- 6f0:	35498993          	addi	s3,s3,852 # a40 <malloc+0x1fa>
+ 6f6:	00000997          	auipc	s3,0x0
+ 6fa:	36298993          	addi	s3,s3,866 # a58 <malloc+0x208>
         while(*s != 0){
- 6f4:	85ee                	mv	a1,s11
- 6f6:	bff9                	j	6d4 <vprintf+0x152>
+ 6fe:	85ee                	mv	a1,s11
+ 700:	bff9                	j	6de <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 6f8:	008b0913          	addi	s2,s6,8
- 6fc:	000b4583          	lbu	a1,0(s6)
- 700:	8556                	mv	a0,s5
- 702:	00000097          	auipc	ra,0x0
- 706:	db4080e7          	jalr	-588(ra) # 4b6 <putc>
- 70a:	8b4a                	mv	s6,s2
+ 702:	008b0913          	addi	s2,s6,8
+ 706:	000b4583          	lbu	a1,0(s6)
+ 70a:	8556                	mv	a0,s5
+ 70c:	00000097          	auipc	ra,0x0
+ 710:	db4080e7          	jalr	-588(ra) # 4c0 <putc>
+ 714:	8b4a                	mv	s6,s2
       state = 0;
- 70c:	4981                	li	s3,0
- 70e:	bdd1                	j	5e2 <vprintf+0x60>
+ 716:	4981                	li	s3,0
+ 718:	bdd1                	j	5ec <vprintf+0x60>
         putc(fd, c);
- 710:	85d2                	mv	a1,s4
- 712:	8556                	mv	a0,s5
- 714:	00000097          	auipc	ra,0x0
- 718:	da2080e7          	jalr	-606(ra) # 4b6 <putc>
+ 71a:	85d2                	mv	a1,s4
+ 71c:	8556                	mv	a0,s5
+ 71e:	00000097          	auipc	ra,0x0
+ 722:	da2080e7          	jalr	-606(ra) # 4c0 <putc>
       state = 0;
- 71c:	4981                	li	s3,0
- 71e:	b5d1                	j	5e2 <vprintf+0x60>
+ 726:	4981                	li	s3,0
+ 728:	b5d1                	j	5ec <vprintf+0x60>
         putc(fd, '%');
- 720:	85d2                	mv	a1,s4
- 722:	8556                	mv	a0,s5
- 724:	00000097          	auipc	ra,0x0
- 728:	d92080e7          	jalr	-622(ra) # 4b6 <putc>
+ 72a:	85d2                	mv	a1,s4
+ 72c:	8556                	mv	a0,s5
+ 72e:	00000097          	auipc	ra,0x0
+ 732:	d92080e7          	jalr	-622(ra) # 4c0 <putc>
         putc(fd, c);
- 72c:	85ca                	mv	a1,s2
- 72e:	8556                	mv	a0,s5
- 730:	00000097          	auipc	ra,0x0
- 734:	d86080e7          	jalr	-634(ra) # 4b6 <putc>
+ 736:	85ca                	mv	a1,s2
+ 738:	8556                	mv	a0,s5
+ 73a:	00000097          	auipc	ra,0x0
+ 73e:	d86080e7          	jalr	-634(ra) # 4c0 <putc>
       state = 0;
- 738:	4981                	li	s3,0
- 73a:	b565                	j	5e2 <vprintf+0x60>
+ 742:	4981                	li	s3,0
+ 744:	b565                	j	5ec <vprintf+0x60>
         s = va_arg(ap, char*);
- 73c:	8b4a                	mv	s6,s2
+ 746:	8b4a                	mv	s6,s2
       state = 0;
- 73e:	4981                	li	s3,0
- 740:	b54d                	j	5e2 <vprintf+0x60>
+ 748:	4981                	li	s3,0
+ 74a:	b54d                	j	5ec <vprintf+0x60>
     }
   }
 }
- 742:	70e6                	ld	ra,120(sp)
- 744:	7446                	ld	s0,112(sp)
- 746:	74a6                	ld	s1,104(sp)
- 748:	7906                	ld	s2,96(sp)
- 74a:	69e6                	ld	s3,88(sp)
- 74c:	6a46                	ld	s4,80(sp)
- 74e:	6aa6                	ld	s5,72(sp)
- 750:	6b06                	ld	s6,64(sp)
- 752:	7be2                	ld	s7,56(sp)
- 754:	7c42                	ld	s8,48(sp)
- 756:	7ca2                	ld	s9,40(sp)
- 758:	7d02                	ld	s10,32(sp)
- 75a:	6de2                	ld	s11,24(sp)
- 75c:	6109                	addi	sp,sp,128
- 75e:	8082                	ret
-
-0000000000000760 <fprintf>:
+ 74c:	70e6                	ld	ra,120(sp)
+ 74e:	7446                	ld	s0,112(sp)
+ 750:	74a6                	ld	s1,104(sp)
+ 752:	7906                	ld	s2,96(sp)
+ 754:	69e6                	ld	s3,88(sp)
+ 756:	6a46                	ld	s4,80(sp)
+ 758:	6aa6                	ld	s5,72(sp)
+ 75a:	6b06                	ld	s6,64(sp)
+ 75c:	7be2                	ld	s7,56(sp)
+ 75e:	7c42                	ld	s8,48(sp)
+ 760:	7ca2                	ld	s9,40(sp)
+ 762:	7d02                	ld	s10,32(sp)
+ 764:	6de2                	ld	s11,24(sp)
+ 766:	6109                	addi	sp,sp,128
+ 768:	8082                	ret
+
+000000000000076a <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 760:	715d                	addi	sp,sp,-80
- 762:	ec06                	sd	ra,24(sp)
- 764:	e822                	sd	s0,16(sp)
- 766:	1000                	addi	s0,sp,32
- 768:	e010                	sd	a2,0(s0)
- 76a:	e414                	sd	a3,8(s0)
- 76c:	e818                	sd	a4,16(s0)
- 76e:	ec1c                	sd	a5,24(s0)
- 770:	03043023          	sd	a6,32(s0)
- 774:	03143423          	sd	a7,40(s0)
+ 76a:	715d                	addi	sp,sp,-80
+ 76c:	ec06                	sd	ra,24(sp)
+ 76e:	e822                	sd	s0,16(sp)
+ 770:	1000                	addi	s0,sp,32
+ 772:	e010                	sd	a2,0(s0)
+ 774:	e414                	sd	a3,8(s0)
+ 776:	e818                	sd	a4,16(s0)
+ 778:	ec1c                	sd	a5,24(s0)
+ 77a:	03043023          	sd	a6,32(s0)
+ 77e:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 778:	8622                	mv	a2,s0
- 77a:	fe843423          	sd	s0,-24(s0)
+ 782:	8622                	mv	a2,s0
+ 784:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 77e:	00000097          	auipc	ra,0x0
- 782:	e04080e7          	jalr	-508(ra) # 582 <vprintf>
+ 788:	00000097          	auipc	ra,0x0
+ 78c:	e04080e7          	jalr	-508(ra) # 58c <vprintf>
 }
- 786:	60e2                	ld	ra,24(sp)
- 788:	6442                	ld	s0,16(sp)
- 78a:	6161                	addi	sp,sp,80
- 78c:	8082                	ret
+ 790:	60e2                	ld	ra,24(sp)
+ 792:	6442                	ld	s0,16(sp)
+ 794:	6161                	addi	sp,sp,80
+ 796:	8082                	ret
 
-000000000000078e <printf>:
+0000000000000798 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 78e:	711d                	addi	sp,sp,-96
- 790:	ec06                	sd	ra,24(sp)
- 792:	e822                	sd	s0,16(sp)
- 794:	1000                	addi	s0,sp,32
- 796:	e40c                	sd	a1,8(s0)
- 798:	e810                	sd	a2,16(s0)
- 79a:	ec14                	sd	a3,24(s0)
- 79c:	f018                	sd	a4,32(s0)
- 79e:	f41c                	sd	a5,40(s0)
- 7a0:	03043823          	sd	a6,48(s0)
- 7a4:	03143c23          	sd	a7,56(s0)
+ 798:	711d                	addi	sp,sp,-96
+ 79a:	ec06                	sd	ra,24(sp)
+ 79c:	e822                	sd	s0,16(sp)
+ 79e:	1000                	addi	s0,sp,32
+ 7a0:	e40c                	sd	a1,8(s0)
+ 7a2:	e810                	sd	a2,16(s0)
+ 7a4:	ec14                	sd	a3,24(s0)
+ 7a6:	f018                	sd	a4,32(s0)
+ 7a8:	f41c                	sd	a5,40(s0)
+ 7aa:	03043823          	sd	a6,48(s0)
+ 7ae:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 7a8:	00840613          	addi	a2,s0,8
- 7ac:	fec43423          	sd	a2,-24(s0)
+ 7b2:	00840613          	addi	a2,s0,8
+ 7b6:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 7b0:	85aa                	mv	a1,a0
- 7b2:	4505                	li	a0,1
- 7b4:	00000097          	auipc	ra,0x0
- 7b8:	dce080e7          	jalr	-562(ra) # 582 <vprintf>
+ 7ba:	85aa                	mv	a1,a0
+ 7bc:	4505                	li	a0,1
+ 7be:	00000097          	auipc	ra,0x0
+ 7c2:	dce080e7          	jalr	-562(ra) # 58c <vprintf>
 }
- 7bc:	60e2                	ld	ra,24(sp)
- 7be:	6442                	ld	s0,16(sp)
- 7c0:	6125                	addi	sp,sp,96
- 7c2:	8082                	ret
+ 7c6:	60e2                	ld	ra,24(sp)
+ 7c8:	6442                	ld	s0,16(sp)
+ 7ca:	6125                	addi	sp,sp,96
+ 7cc:	8082                	ret
 
-00000000000007c4 <free>:
+00000000000007ce <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 7c4:	1141                	addi	sp,sp,-16
- 7c6:	e422                	sd	s0,8(sp)
- 7c8:	0800                	addi	s0,sp,16
+ 7ce:	1141                	addi	sp,sp,-16
+ 7d0:	e422                	sd	s0,8(sp)
+ 7d2:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 7ca:	ff050693          	addi	a3,a0,-16
+ 7d4:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 7ce:	00000797          	auipc	a5,0x0
- 7d2:	39a7b783          	ld	a5,922(a5) # b68 <freep>
- 7d6:	a02d                	j	800 <free+0x3c>
+ 7d8:	00000797          	auipc	a5,0x0
+ 7dc:	3b07b783          	ld	a5,944(a5) # b88 <freep>
+ 7e0:	a02d                	j	80a <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 7d8:	4618                	lw	a4,8(a2)
- 7da:	9f2d                	addw	a4,a4,a1
- 7dc:	fee52c23          	sw	a4,-8(a0)
+ 7e2:	4618                	lw	a4,8(a2)
+ 7e4:	9f2d                	addw	a4,a4,a1
+ 7e6:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 7e0:	6398                	ld	a4,0(a5)
- 7e2:	6310                	ld	a2,0(a4)
- 7e4:	a83d                	j	822 <free+0x5e>
+ 7ea:	6398                	ld	a4,0(a5)
+ 7ec:	6310                	ld	a2,0(a4)
+ 7ee:	a83d                	j	82c <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 7e6:	ff852703          	lw	a4,-8(a0)
- 7ea:	9f31                	addw	a4,a4,a2
- 7ec:	c798                	sw	a4,8(a5)
+ 7f0:	ff852703          	lw	a4,-8(a0)
+ 7f4:	9f31                	addw	a4,a4,a2
+ 7f6:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 7ee:	ff053683          	ld	a3,-16(a0)
- 7f2:	a091                	j	836 <free+0x72>
+ 7f8:	ff053683          	ld	a3,-16(a0)
+ 7fc:	a091                	j	840 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 7f4:	6398                	ld	a4,0(a5)
- 7f6:	00e7e463          	bltu	a5,a4,7fe <free+0x3a>
- 7fa:	00e6ea63          	bltu	a3,a4,80e <free+0x4a>
+ 7fe:	6398                	ld	a4,0(a5)
+ 800:	00e7e463          	bltu	a5,a4,808 <free+0x3a>
+ 804:	00e6ea63          	bltu	a3,a4,818 <free+0x4a>
 {
- 7fe:	87ba                	mv	a5,a4
+ 808:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 800:	fed7fae3          	bgeu	a5,a3,7f4 <free+0x30>
- 804:	6398                	ld	a4,0(a5)
- 806:	00e6e463          	bltu	a3,a4,80e <free+0x4a>
+ 80a:	fed7fae3          	bgeu	a5,a3,7fe <free+0x30>
+ 80e:	6398                	ld	a4,0(a5)
+ 810:	00e6e463          	bltu	a3,a4,818 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 80a:	fee7eae3          	bltu	a5,a4,7fe <free+0x3a>
+ 814:	fee7eae3          	bltu	a5,a4,808 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 80e:	ff852583          	lw	a1,-8(a0)
- 812:	6390                	ld	a2,0(a5)
- 814:	02059813          	slli	a6,a1,0x20
- 818:	01c85713          	srli	a4,a6,0x1c
- 81c:	9736                	add	a4,a4,a3
- 81e:	fae60de3          	beq	a2,a4,7d8 <free+0x14>
+ 818:	ff852583          	lw	a1,-8(a0)
+ 81c:	6390                	ld	a2,0(a5)
+ 81e:	02059813          	slli	a6,a1,0x20
+ 822:	01c85713          	srli	a4,a6,0x1c
+ 826:	9736                	add	a4,a4,a3
+ 828:	fae60de3          	beq	a2,a4,7e2 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 822:	fec53823          	sd	a2,-16(a0)
+ 82c:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 826:	4790                	lw	a2,8(a5)
- 828:	02061593          	slli	a1,a2,0x20
- 82c:	01c5d713          	srli	a4,a1,0x1c
- 830:	973e                	add	a4,a4,a5
- 832:	fae68ae3          	beq	a3,a4,7e6 <free+0x22>
+ 830:	4790                	lw	a2,8(a5)
+ 832:	02061593          	slli	a1,a2,0x20
+ 836:	01c5d713          	srli	a4,a1,0x1c
+ 83a:	973e                	add	a4,a4,a5
+ 83c:	fae68ae3          	beq	a3,a4,7f0 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 836:	e394                	sd	a3,0(a5)
+ 840:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 838:	00000717          	auipc	a4,0x0
- 83c:	32f73823          	sd	a5,816(a4) # b68 <freep>
+ 842:	00000717          	auipc	a4,0x0
+ 846:	34f73323          	sd	a5,838(a4) # b88 <freep>
 }
- 840:	6422                	ld	s0,8(sp)
- 842:	0141                	addi	sp,sp,16
- 844:	8082                	ret
+ 84a:	6422                	ld	s0,8(sp)
+ 84c:	0141                	addi	sp,sp,16
+ 84e:	8082                	ret
 
-0000000000000846 <malloc>:
+0000000000000850 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 846:	7139                	addi	sp,sp,-64
- 848:	fc06                	sd	ra,56(sp)
- 84a:	f822                	sd	s0,48(sp)
- 84c:	f426                	sd	s1,40(sp)
- 84e:	f04a                	sd	s2,32(sp)
- 850:	ec4e                	sd	s3,24(sp)
- 852:	e852                	sd	s4,16(sp)
- 854:	e456                	sd	s5,8(sp)
- 856:	e05a                	sd	s6,0(sp)
- 858:	0080                	addi	s0,sp,64
+ 850:	7139                	addi	sp,sp,-64
+ 852:	fc06                	sd	ra,56(sp)
+ 854:	f822                	sd	s0,48(sp)
+ 856:	f426                	sd	s1,40(sp)
+ 858:	f04a                	sd	s2,32(sp)
+ 85a:	ec4e                	sd	s3,24(sp)
+ 85c:	e852                	sd	s4,16(sp)
+ 85e:	e456                	sd	s5,8(sp)
+ 860:	e05a                	sd	s6,0(sp)
+ 862:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 85a:	02051493          	slli	s1,a0,0x20
- 85e:	9081                	srli	s1,s1,0x20
- 860:	04bd                	addi	s1,s1,15
- 862:	8091                	srli	s1,s1,0x4
- 864:	00148a1b          	addiw	s4,s1,1
- 868:	0485                	addi	s1,s1,1
+ 864:	02051493          	slli	s1,a0,0x20
+ 868:	9081                	srli	s1,s1,0x20
+ 86a:	04bd                	addi	s1,s1,15
+ 86c:	8091                	srli	s1,s1,0x4
+ 86e:	00148a1b          	addiw	s4,s1,1
+ 872:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 86a:	00000517          	auipc	a0,0x0
- 86e:	2fe53503          	ld	a0,766(a0) # b68 <freep>
- 872:	c515                	beqz	a0,89e <malloc+0x58>
+ 874:	00000517          	auipc	a0,0x0
+ 878:	31453503          	ld	a0,788(a0) # b88 <freep>
+ 87c:	c515                	beqz	a0,8a8 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 874:	611c                	ld	a5,0(a0)
+ 87e:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 876:	4798                	lw	a4,8(a5)
- 878:	04977163          	bgeu	a4,s1,8ba <malloc+0x74>
- 87c:	89d2                	mv	s3,s4
- 87e:	000a071b          	sext.w	a4,s4
- 882:	6685                	lui	a3,0x1
- 884:	00d77363          	bgeu	a4,a3,88a <malloc+0x44>
- 888:	6985                	lui	s3,0x1
- 88a:	00098b1b          	sext.w	s6,s3
+ 880:	4798                	lw	a4,8(a5)
+ 882:	04977163          	bgeu	a4,s1,8c4 <malloc+0x74>
+ 886:	89d2                	mv	s3,s4
+ 888:	000a071b          	sext.w	a4,s4
+ 88c:	6685                	lui	a3,0x1
+ 88e:	00d77363          	bgeu	a4,a3,894 <malloc+0x44>
+ 892:	6985                	lui	s3,0x1
+ 894:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 88e:	0049999b          	slliw	s3,s3,0x4
+ 898:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 892:	00000917          	auipc	s2,0x0
- 896:	2d690913          	addi	s2,s2,726 # b68 <freep>
+ 89c:	00000917          	auipc	s2,0x0
+ 8a0:	2ec90913          	addi	s2,s2,748 # b88 <freep>
   if(p == (char*)-1)
- 89a:	5afd                	li	s5,-1
- 89c:	a8a5                	j	914 <malloc+0xce>
+ 8a4:	5afd                	li	s5,-1
+ 8a6:	a8a5                	j	91e <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 89e:	00000797          	auipc	a5,0x0
- 8a2:	2ca78793          	addi	a5,a5,714 # b68 <freep>
- 8a6:	00000717          	auipc	a4,0x0
- 8aa:	2ca70713          	addi	a4,a4,714 # b70 <base>
- 8ae:	e398                	sd	a4,0(a5)
- 8b0:	e798                	sd	a4,8(a5)
+ 8a8:	00000797          	auipc	a5,0x0
+ 8ac:	2e078793          	addi	a5,a5,736 # b88 <freep>
+ 8b0:	00000717          	auipc	a4,0x0
+ 8b4:	2e070713          	addi	a4,a4,736 # b90 <base>
+ 8b8:	e398                	sd	a4,0(a5)
+ 8ba:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 8b2:	0007a823          	sw	zero,16(a5)
+ 8bc:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 8b6:	87ba                	mv	a5,a4
- 8b8:	b7d1                	j	87c <malloc+0x36>
+ 8c0:	87ba                	mv	a5,a4
+ 8c2:	b7d1                	j	886 <malloc+0x36>
       if(p->s.size == nunits)
- 8ba:	02e48c63          	beq	s1,a4,8f2 <malloc+0xac>
+ 8c4:	02e48c63          	beq	s1,a4,8fc <malloc+0xac>
         p->s.size -= nunits;
- 8be:	4147073b          	subw	a4,a4,s4
- 8c2:	c798                	sw	a4,8(a5)
+ 8c8:	4147073b          	subw	a4,a4,s4
+ 8cc:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 8c4:	02071693          	slli	a3,a4,0x20
- 8c8:	01c6d713          	srli	a4,a3,0x1c
- 8cc:	97ba                	add	a5,a5,a4
+ 8ce:	02071693          	slli	a3,a4,0x20
+ 8d2:	01c6d713          	srli	a4,a3,0x1c
+ 8d6:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 8ce:	0147a423          	sw	s4,8(a5)
+ 8d8:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 8d2:	00000717          	auipc	a4,0x0
- 8d6:	28a73b23          	sd	a0,662(a4) # b68 <freep>
+ 8dc:	00000717          	auipc	a4,0x0
+ 8e0:	2aa73623          	sd	a0,684(a4) # b88 <freep>
       return (void*)(p + 1);
- 8da:	01078513          	addi	a0,a5,16
+ 8e4:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 8de:	70e2                	ld	ra,56(sp)
- 8e0:	7442                	ld	s0,48(sp)
- 8e2:	74a2                	ld	s1,40(sp)
- 8e4:	7902                	ld	s2,32(sp)
- 8e6:	69e2                	ld	s3,24(sp)
- 8e8:	6a42                	ld	s4,16(sp)
- 8ea:	6aa2                	ld	s5,8(sp)
- 8ec:	6b02                	ld	s6,0(sp)
- 8ee:	6121                	addi	sp,sp,64
- 8f0:	8082                	ret
+ 8e8:	70e2                	ld	ra,56(sp)
+ 8ea:	7442                	ld	s0,48(sp)
+ 8ec:	74a2                	ld	s1,40(sp)
+ 8ee:	7902                	ld	s2,32(sp)
+ 8f0:	69e2                	ld	s3,24(sp)
+ 8f2:	6a42                	ld	s4,16(sp)
+ 8f4:	6aa2                	ld	s5,8(sp)
+ 8f6:	6b02                	ld	s6,0(sp)
+ 8f8:	6121                	addi	sp,sp,64
+ 8fa:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 8f2:	6398                	ld	a4,0(a5)
- 8f4:	e118                	sd	a4,0(a0)
- 8f6:	bff1                	j	8d2 <malloc+0x8c>
+ 8fc:	6398                	ld	a4,0(a5)
+ 8fe:	e118                	sd	a4,0(a0)
+ 900:	bff1                	j	8dc <malloc+0x8c>
   hp->s.size = nu;
- 8f8:	01652423          	sw	s6,8(a0)
+ 902:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 8fc:	0541                	addi	a0,a0,16
- 8fe:	00000097          	auipc	ra,0x0
- 902:	ec6080e7          	jalr	-314(ra) # 7c4 <free>
+ 906:	0541                	addi	a0,a0,16
+ 908:	00000097          	auipc	ra,0x0
+ 90c:	ec6080e7          	jalr	-314(ra) # 7ce <free>
   return freep;
- 906:	00093503          	ld	a0,0(s2)
+ 910:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 90a:	d971                	beqz	a0,8de <malloc+0x98>
+ 914:	d971                	beqz	a0,8e8 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 90c:	611c                	ld	a5,0(a0)
+ 916:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 90e:	4798                	lw	a4,8(a5)
- 910:	fa9775e3          	bgeu	a4,s1,8ba <malloc+0x74>
+ 918:	4798                	lw	a4,8(a5)
+ 91a:	fa9775e3          	bgeu	a4,s1,8c4 <malloc+0x74>
     if(p == freep)
- 914:	00093703          	ld	a4,0(s2)
- 918:	853e                	mv	a0,a5
- 91a:	fef719e3          	bne	a4,a5,90c <malloc+0xc6>
+ 91e:	00093703          	ld	a4,0(s2)
+ 922:	853e                	mv	a0,a5
+ 924:	fef719e3          	bne	a4,a5,916 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 91e:	854e                	mv	a0,s3
- 920:	00000097          	auipc	ra,0x0
- 924:	b2a080e7          	jalr	-1238(ra) # 44a <sbrk>
+ 928:	854e                	mv	a0,s3
+ 92a:	00000097          	auipc	ra,0x0
+ 92e:	b20080e7          	jalr	-1248(ra) # 44a <sbrk>
   if(p == (char*)-1)
- 928:	fd5518e3          	bne	a0,s5,8f8 <malloc+0xb2>
+ 932:	fd5518e3          	bne	a0,s5,902 <malloc+0xb2>
         return 0;
- 92c:	4501                	li	a0,0
- 92e:	bf45                	j	8de <malloc+0x98>
+ 936:	4501                	li	a0,0
+ 938:	bf45                	j	8e8 <malloc+0x98>
diff --git a/xv6-user/init.c b/xv6-user/init.c
index 6c4ea00..d7820c0 100644
--- a/xv6-user/init.c
+++ b/xv6-user/init.c
@@ -33,6 +33,7 @@ char *tests[] = {
     "fstat",
     "getcwd",
     "getpid",
+    "times",
     "gettimeofday",
     "mkdir_",
     "openat",
diff --git a/xv6-user/init.o b/xv6-user/init.o
index 9d9ba88413e3d022501596b50ef9c5f699f28408..fa3d628296a4c0817a743c98b975aaafed5ba9b0 100644
GIT binary patch
delta 2155
zcmZ9NZERCj7{~8vyV1&N+y%SSyBF76yR}_W>9RK%P=Ul3B60P@q92HsXyTOWrpuTw
z1dBwr0n3(u1Y){K<22K3u%#x>1a$l4Oooxf7!pOPF^Xm*F7jcKnfTn>Gr8XT;d!3>
z|2@zDoZg<>&L14^8;-E{>1dcSACm0T(w@%rv#%)mQip@#O@|w9XSVt-rBtD-V%-o$
zkJG4)%M|07bIv*&N;=T(*yv|j-qrbx(zvdp*rNE1%o=gtrL)%jW!JLP)xb)eSaAFE
zKf3pDHiM{dX=8~}#^i)d-$E@H+Arpvs+9a6DvQ`j^e<E0U}K8%H>SB@4kZ18tw)YJ
zHPc;HR&2ciTqYWpbjn8W0~11Pl2o<ra2w)8cS~CAx^1urDWXY9@3752i4meHNpIX9
zGpkO_5$%@L29;N_Of(~D$mTo%-7nDYcdPcf)5i1AM$P{93b)}gWQa~k`k;;GF-@-5
z{H6F#+rYj+f$qvQx4Pffw*XZWc!0>Dja<P_O=v%v{!AIO(O=O`bV<@#8@-8~CiGj9
z{$ZmIhaoWKCYCj!-fg3If>j7?u5hajHd2W=k*A3~ZX*$-hzt`sVk3<hsSsM5Tyfq;
zcVUj`Ba;4XqwQEG+9BzOHo6ab<x}hhWGV&g!ZgJmGxnMBuo;h<alnj2W`q&rS@Kks
z|K3Z*CB5G_b@Mefm2s(mgn_ExoVyzu^XcmE8O@a=RU=pcnSelF4abQ9$8gOm-q1PD
zP+diNDsX^(jB5QMLuFa0x<J1kGJ9r-^B~7J`ZhKJZ}6bmvuO5=2RWNGejM`i!7I#r
zR_?)g49_FoEa)>&h6H{HaqrrjY<$saTn!1|i?Z8D6|#0fuN4T?y0k6}4azz~`6X<p
zjsvya8<(o#_%hO@W=Tz0)E<nIx<Kk)i`t7zq^{O-_8Rm$0e2nuT7MnhLz2{1QqRjN
zBYlDlsn6AM?VLsZO4i06UdKu5xIlA@7WEJ=lDbH0z&zu|X;zfOSR%D5%)LDpHG}G~
z(2mGyBOQ}8MD<(PYol4q>`@#F3rvt>@jWlD^EM`F=9tCtGmB$CuG;9=7RLd2BZ3X0
zHgdoBxW&PPkq8~7NC*oNj`2u{4dD_gs}b()HNJYfj5LgYNZl0W>|G?I^hBc}2JEBi
zM3j4PSUTUqNm4J6S|ty<0Z-#1sf#r4gIX`JLe+8HdygQ$YPx^4p0hS|Q}skW_Zoj+
zYu97Qk=jq{$eKiXKUhp)hSXCQwHF0i<$66gR~kf|di*i2S^Y+3zp<;c*iIc2<g#{V
z3>8SngfD0DEnAzxH1$u#Tt4fG_DdQu&U^k^Y}Uj2kZbyqm7}w{#nUAp&Ny=1htHdX
zo<D=di52|b+`|0OTN3O#QWSR~NAVO2EeS_iJ%X(}SQ4q$1e-;UVg`lQgd?yC!7V%3
zEu^+2SQBy-`%s`b27POSjUz>I204l=C~QsmHp~BzGxBq2wEPEXYKwX1tBN~0ht9SZ
K_Aqj7;eP?4<Y<Nf

delta 2234
zcmZ9NZETZO6vunpjdk!8Hs*GF_mZ`9FYP)q$As>cx=7R@CM+gsR18E+V6bIFBOpvx
zW(JBQlfO759hRVk1!vMUL`*=3U*rQMB41_#hQ%mrWW+^H{4f*Gy}eDZ&rP0l&i((+
zIrl#AWBab}9SbmbB3Q@RBj{#dohxuMcwMoIBF7R3jncg1Wb<7zmP3h;;g)OK)s(v#
z1I{8Zi&_0Uw>z5iHm6e@#nQ88e4FEE;pA-2f-9$q<+^ak?M*&(Z?M=jT8rn4mg@AZ
z`x)IOT>Pelm5$sjP|-Z1C7k_*YZhmV*tU|3TqeN^Tb{#FgjwoSs%W9(2OIaJkaH2x
z^cx#(L>JMunue6mrgUO}=z2|m$pRHUi?c+Z*R;%5`!a43eNEFpZMD0=yj;AYY5L5v
zDF@I*bXe0=7O3bLws|?Wdfm8OQozRXA?2RYxh2YH3(n&j(J7@e$LcIlQ4$N(=@0Lc
zqGgU=8=Hn-aQK9~aJP-zKsS+1L{8htPlyUG?&;Mo+vt5Hh(6TxM;rYcvqIi!+7WZ1
zu#}^q)Lj^`WvxILktc{O+DJJDi1ZVA$wmS=OC(O@I~!SpTcuodIHk-SU)t!CU}aov
z(6rA+H=(JF=e?k)o8F9KY%g0cUZ?p=>XjMGb=ZSzWt{aXyGPmm%D$uQu(C&$9aZ*Y
zM9aCDpl*ffmryl~>$c~RD8HXPQ!&G8O0-l&{&O8m=hLy&&tsyJv-8PIm3a)YN(<M0
z7Ov27&$k<2_$|EX?~po+A>re=?5|c?b3``!trJxp>>@g=_NtTzDrKh1LI)iOo$lm6
zRWl58)t2bdOG@X_u{`}<@YHZvHI^r{S*iA-vxXO&SG7vlRHK{nhiY<!N$ZV{{g|MP
z7<Fth)IGRK>J3t#GSoNmFR6>9ZZ*`mu&S1$q1Iv}h*Gqp*7EGrT)K-$kb0`t68jBx
zTF3IHPvL4U7jGN%wvOf59l$)*KcKEl<&=hWgQ%$ED6g|T^@e%~&yl*3)I(a8{i7JH
z<KnO^)#He!@|}ocis*0#kw0s6d>41A;~nalFglLF6X4>AQS-IYaRi-2j~ev0QTrZx
z1C7`nuy7$@v17OtXk;JY*Fd8fH7Z_}8>b=NajXi`6%JaSVM86m7E)gcS{MpeixVn4
zZEhM_z*Wk+LbbX2S0v#{%#-?n)XdW*)p1nR(>1NPJic@zwfg(m@+cRdXhphagPz79
z)f}Xnrww%!Q}tZLv?5*ROCr}9!(FP0g)C3zsZ8(56XIgrs5z|T^xis&o-yc2gN~w?
z=%)s~V9*#Qh?-YO{fsF?-j+CShW`Kdcy(<xW<&JtY{+4K$>N6F`Ro~_)_l*FBe6D|
zzeDbdMjQ(?o32XF?x86hW^U{ZM_3$_WLG0ab_Btei1T_7JuT~47baUGY#&l&2M}zH
zIA=oWX<f&D$7E}S)gVQ72ZC)8=SR!vdsu>@wg5YY$+igVM~dtmg6)xFpOs#8s37eH
cxz8}z9?FlGr<Dsxw1@K@kEdr#un?~N536TiNB{r;

diff --git a/xv6-user/init.sym b/xv6-user/init.sym
index a639105..9d72670 100644
--- a/xv6-user/init.sym
+++ b/xv6-user/init.sym
@@ -1,7 +1,7 @@
 0000000000000000 .text
-0000000000000930 .rodata
-0000000000000ab8 .data
-0000000000000b60 .bss
+0000000000000940 .rodata
+0000000000000ad0 .data
+0000000000000b80 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -17,24 +17,25 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-00000000000004b6 putc
-00000000000004d8 printint
-0000000000000aa0 digits
+00000000000004c0 putc
+00000000000004e2 printint
+0000000000000ab8 digits
 0000000000000000 umalloc.c
-0000000000000b68 freep
-0000000000000b70 base
+0000000000000b88 freep
+0000000000000b90 base
 000000000000010e strcpy
-000000000000078e printf
-00000000000012b8 __global_pointer$
+0000000000000798 printf
+00000000000012d0 __global_pointer$
 000000000000046a dev
-0000000000000b60 argv
+0000000000000b80 argv
 0000000000000314 memmove
+00000000000004b6 times
 000000000000048a trace
 00000000000001f4 gets
-0000000000000b60 __SDATA_BEGIN__
+0000000000000b80 __SDATA_BEGIN__
 0000000000000440 getpid
 00000000000003a6 memcpy
-0000000000000846 malloc
+0000000000000850 malloc
 0000000000000482 remove
 0000000000000452 sleep
 0000000000000492 sysinfo
@@ -44,38 +45,38 @@
 000000000000049a rename
 00000000000003ec write
 000000000000041a fstat
-0000000000000760 fprintf
+000000000000076a fprintf
 0000000000000400 kill
 000000000000012a strcat
-0000000000000582 vprintf
+000000000000058c vprintf
 000000000000042e chdir
 0000000000000408 exec
 00000000000003d0 wait
 00000000000003e2 read
 000000000000036c memcmp
 00000000000003be fork
-0000000000000b80 __BSS_END__
+0000000000000ba0 __BSS_END__
 000000000000044a sbrk
 0000000000000462 test_proc
 000000000000045a uptime
-0000000000000b60 __bss_start
+0000000000000b80 __bss_start
 00000000000001ae memset
 0000000000000000 main
-0000000000000ac0 tests
+0000000000000ad8 tests
 0000000000000158 strcmp
 00000000000004a2 shutdown
 0000000000000438 dup
 000000000000047a getcwd
-0000000000000ab8 __DATA_BEGIN__
+0000000000000ad0 __DATA_BEGIN__
 000000000000026e stat
-0000000000000b60 _edata
-0000000000000b80 _end
+0000000000000b80 _edata
+0000000000000ba0 _end
 00000000000003c6 exit
 00000000000002b4 atoi
 0000000000000184 strlen
 0000000000000410 open
 00000000000001d0 strchr
-0000000000000ab8 counts
+0000000000000ad0 counts
 0000000000000424 mkdir
 00000000000003f6 close
-00000000000007c4 free
+00000000000007ce free
diff --git a/xv6-user/kill.asm b/xv6-user/kill.asm
index 82db598..7bc204d 100644
--- a/xv6-user/kill.asm
+++ b/xv6-user/kill.asm
@@ -47,10 +47,10 @@ main(int argc, char **argv)
   44:	2dc080e7          	jalr	732(ra) # 31c <exit>
     fprintf(2, "usage: kill pid...\n");
   48:	00001597          	auipc	a1,0x1
-  4c:	84058593          	addi	a1,a1,-1984 # 888 <malloc+0xec>
+  4c:	84858593          	addi	a1,a1,-1976 # 890 <malloc+0xea>
   50:	4509                	li	a0,2
   52:	00000097          	auipc	ra,0x0
-  56:	664080e7          	jalr	1636(ra) # 6b6 <fprintf>
+  56:	66e080e7          	jalr	1646(ra) # 6c0 <fprintf>
     exit(1);
   5a:	4505                	li	a0,1
   5c:	00000097          	auipc	ra,0x0
@@ -812,637 +812,647 @@ uname:
  ret
  40a:	8082                	ret
 
-000000000000040c <putc>:
+000000000000040c <times>:
+.global times
+times:
+ li a7, SYS_times
+ 40c:	09900893          	li	a7,153
+ ecall
+ 410:	00000073          	ecall
+ ret
+ 414:	8082                	ret
+
+0000000000000416 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 40c:	1101                	addi	sp,sp,-32
- 40e:	ec06                	sd	ra,24(sp)
- 410:	e822                	sd	s0,16(sp)
- 412:	1000                	addi	s0,sp,32
- 414:	feb407a3          	sb	a1,-17(s0)
+ 416:	1101                	addi	sp,sp,-32
+ 418:	ec06                	sd	ra,24(sp)
+ 41a:	e822                	sd	s0,16(sp)
+ 41c:	1000                	addi	s0,sp,32
+ 41e:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 418:	4605                	li	a2,1
- 41a:	fef40593          	addi	a1,s0,-17
- 41e:	00000097          	auipc	ra,0x0
- 422:	f24080e7          	jalr	-220(ra) # 342 <write>
+ 422:	4605                	li	a2,1
+ 424:	fef40593          	addi	a1,s0,-17
+ 428:	00000097          	auipc	ra,0x0
+ 42c:	f1a080e7          	jalr	-230(ra) # 342 <write>
 }
- 426:	60e2                	ld	ra,24(sp)
- 428:	6442                	ld	s0,16(sp)
- 42a:	6105                	addi	sp,sp,32
- 42c:	8082                	ret
+ 430:	60e2                	ld	ra,24(sp)
+ 432:	6442                	ld	s0,16(sp)
+ 434:	6105                	addi	sp,sp,32
+ 436:	8082                	ret
 
-000000000000042e <printint>:
+0000000000000438 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 42e:	7139                	addi	sp,sp,-64
- 430:	fc06                	sd	ra,56(sp)
- 432:	f822                	sd	s0,48(sp)
- 434:	f426                	sd	s1,40(sp)
- 436:	f04a                	sd	s2,32(sp)
- 438:	ec4e                	sd	s3,24(sp)
- 43a:	0080                	addi	s0,sp,64
- 43c:	84aa                	mv	s1,a0
+ 438:	7139                	addi	sp,sp,-64
+ 43a:	fc06                	sd	ra,56(sp)
+ 43c:	f822                	sd	s0,48(sp)
+ 43e:	f426                	sd	s1,40(sp)
+ 440:	f04a                	sd	s2,32(sp)
+ 442:	ec4e                	sd	s3,24(sp)
+ 444:	0080                	addi	s0,sp,64
+ 446:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 43e:	c299                	beqz	a3,444 <printint+0x16>
- 440:	0805c863          	bltz	a1,4d0 <printint+0xa2>
+ 448:	c299                	beqz	a3,44e <printint+0x16>
+ 44a:	0805c863          	bltz	a1,4da <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 444:	2581                	sext.w	a1,a1
+ 44e:	2581                	sext.w	a1,a1
   neg = 0;
- 446:	4881                	li	a7,0
+ 450:	4881                	li	a7,0
   }
 
   i = 0;
- 448:	fc040993          	addi	s3,s0,-64
+ 452:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 44c:	86ce                	mv	a3,s3
+ 456:	86ce                	mv	a3,s3
   i = 0;
- 44e:	4701                	li	a4,0
+ 458:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 450:	2601                	sext.w	a2,a2
- 452:	00000517          	auipc	a0,0x0
- 456:	4ae50513          	addi	a0,a0,1198 # 900 <digits>
- 45a:	883a                	mv	a6,a4
- 45c:	2705                	addiw	a4,a4,1
- 45e:	02c5f7bb          	remuw	a5,a1,a2
- 462:	1782                	slli	a5,a5,0x20
- 464:	9381                	srli	a5,a5,0x20
- 466:	97aa                	add	a5,a5,a0
- 468:	0007c783          	lbu	a5,0(a5)
- 46c:	00f68023          	sb	a5,0(a3)
+ 45a:	2601                	sext.w	a2,a2
+ 45c:	00000517          	auipc	a0,0x0
+ 460:	4ac50513          	addi	a0,a0,1196 # 908 <digits>
+ 464:	883a                	mv	a6,a4
+ 466:	2705                	addiw	a4,a4,1
+ 468:	02c5f7bb          	remuw	a5,a1,a2
+ 46c:	1782                	slli	a5,a5,0x20
+ 46e:	9381                	srli	a5,a5,0x20
+ 470:	97aa                	add	a5,a5,a0
+ 472:	0007c783          	lbu	a5,0(a5)
+ 476:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 470:	0005879b          	sext.w	a5,a1
- 474:	02c5d5bb          	divuw	a1,a1,a2
- 478:	0685                	addi	a3,a3,1
- 47a:	fec7f0e3          	bgeu	a5,a2,45a <printint+0x2c>
+ 47a:	0005879b          	sext.w	a5,a1
+ 47e:	02c5d5bb          	divuw	a1,a1,a2
+ 482:	0685                	addi	a3,a3,1
+ 484:	fec7f0e3          	bgeu	a5,a2,464 <printint+0x2c>
   if(neg)
- 47e:	00088c63          	beqz	a7,496 <printint+0x68>
+ 488:	00088c63          	beqz	a7,4a0 <printint+0x68>
     buf[i++] = '-';
- 482:	fd070793          	addi	a5,a4,-48
- 486:	00878733          	add	a4,a5,s0
- 48a:	02d00793          	li	a5,45
- 48e:	fef70823          	sb	a5,-16(a4)
- 492:	0028071b          	addiw	a4,a6,2
+ 48c:	fd070793          	addi	a5,a4,-48
+ 490:	00878733          	add	a4,a5,s0
+ 494:	02d00793          	li	a5,45
+ 498:	fef70823          	sb	a5,-16(a4)
+ 49c:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 496:	02e05663          	blez	a4,4c2 <printint+0x94>
- 49a:	fc040913          	addi	s2,s0,-64
- 49e:	993a                	add	s2,s2,a4
- 4a0:	19fd                	addi	s3,s3,-1
- 4a2:	99ba                	add	s3,s3,a4
- 4a4:	377d                	addiw	a4,a4,-1
- 4a6:	1702                	slli	a4,a4,0x20
- 4a8:	9301                	srli	a4,a4,0x20
- 4aa:	40e989b3          	sub	s3,s3,a4
+ 4a0:	02e05663          	blez	a4,4cc <printint+0x94>
+ 4a4:	fc040913          	addi	s2,s0,-64
+ 4a8:	993a                	add	s2,s2,a4
+ 4aa:	19fd                	addi	s3,s3,-1
+ 4ac:	99ba                	add	s3,s3,a4
+ 4ae:	377d                	addiw	a4,a4,-1
+ 4b0:	1702                	slli	a4,a4,0x20
+ 4b2:	9301                	srli	a4,a4,0x20
+ 4b4:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 4ae:	fff94583          	lbu	a1,-1(s2)
- 4b2:	8526                	mv	a0,s1
- 4b4:	00000097          	auipc	ra,0x0
- 4b8:	f58080e7          	jalr	-168(ra) # 40c <putc>
+ 4b8:	fff94583          	lbu	a1,-1(s2)
+ 4bc:	8526                	mv	a0,s1
+ 4be:	00000097          	auipc	ra,0x0
+ 4c2:	f58080e7          	jalr	-168(ra) # 416 <putc>
   while(--i >= 0)
- 4bc:	197d                	addi	s2,s2,-1
- 4be:	ff3918e3          	bne	s2,s3,4ae <printint+0x80>
+ 4c6:	197d                	addi	s2,s2,-1
+ 4c8:	ff3918e3          	bne	s2,s3,4b8 <printint+0x80>
 }
- 4c2:	70e2                	ld	ra,56(sp)
- 4c4:	7442                	ld	s0,48(sp)
- 4c6:	74a2                	ld	s1,40(sp)
- 4c8:	7902                	ld	s2,32(sp)
- 4ca:	69e2                	ld	s3,24(sp)
- 4cc:	6121                	addi	sp,sp,64
- 4ce:	8082                	ret
+ 4cc:	70e2                	ld	ra,56(sp)
+ 4ce:	7442                	ld	s0,48(sp)
+ 4d0:	74a2                	ld	s1,40(sp)
+ 4d2:	7902                	ld	s2,32(sp)
+ 4d4:	69e2                	ld	s3,24(sp)
+ 4d6:	6121                	addi	sp,sp,64
+ 4d8:	8082                	ret
     x = -xx;
- 4d0:	40b005bb          	negw	a1,a1
+ 4da:	40b005bb          	negw	a1,a1
     neg = 1;
- 4d4:	4885                	li	a7,1
+ 4de:	4885                	li	a7,1
     x = -xx;
- 4d6:	bf8d                	j	448 <printint+0x1a>
+ 4e0:	bf8d                	j	452 <printint+0x1a>
 
-00000000000004d8 <vprintf>:
+00000000000004e2 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 4d8:	7119                	addi	sp,sp,-128
- 4da:	fc86                	sd	ra,120(sp)
- 4dc:	f8a2                	sd	s0,112(sp)
- 4de:	f4a6                	sd	s1,104(sp)
- 4e0:	f0ca                	sd	s2,96(sp)
- 4e2:	ecce                	sd	s3,88(sp)
- 4e4:	e8d2                	sd	s4,80(sp)
- 4e6:	e4d6                	sd	s5,72(sp)
- 4e8:	e0da                	sd	s6,64(sp)
- 4ea:	fc5e                	sd	s7,56(sp)
- 4ec:	f862                	sd	s8,48(sp)
- 4ee:	f466                	sd	s9,40(sp)
- 4f0:	f06a                	sd	s10,32(sp)
- 4f2:	ec6e                	sd	s11,24(sp)
- 4f4:	0100                	addi	s0,sp,128
+ 4e2:	7119                	addi	sp,sp,-128
+ 4e4:	fc86                	sd	ra,120(sp)
+ 4e6:	f8a2                	sd	s0,112(sp)
+ 4e8:	f4a6                	sd	s1,104(sp)
+ 4ea:	f0ca                	sd	s2,96(sp)
+ 4ec:	ecce                	sd	s3,88(sp)
+ 4ee:	e8d2                	sd	s4,80(sp)
+ 4f0:	e4d6                	sd	s5,72(sp)
+ 4f2:	e0da                	sd	s6,64(sp)
+ 4f4:	fc5e                	sd	s7,56(sp)
+ 4f6:	f862                	sd	s8,48(sp)
+ 4f8:	f466                	sd	s9,40(sp)
+ 4fa:	f06a                	sd	s10,32(sp)
+ 4fc:	ec6e                	sd	s11,24(sp)
+ 4fe:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 4f6:	0005c903          	lbu	s2,0(a1)
- 4fa:	18090f63          	beqz	s2,698 <vprintf+0x1c0>
- 4fe:	8aaa                	mv	s5,a0
- 500:	8b32                	mv	s6,a2
- 502:	00158493          	addi	s1,a1,1
+ 500:	0005c903          	lbu	s2,0(a1)
+ 504:	18090f63          	beqz	s2,6a2 <vprintf+0x1c0>
+ 508:	8aaa                	mv	s5,a0
+ 50a:	8b32                	mv	s6,a2
+ 50c:	00158493          	addi	s1,a1,1
   state = 0;
- 506:	4981                	li	s3,0
+ 510:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 508:	02500a13          	li	s4,37
- 50c:	4c55                	li	s8,21
- 50e:	00000c97          	auipc	s9,0x0
- 512:	39ac8c93          	addi	s9,s9,922 # 8a8 <malloc+0x10c>
+ 512:	02500a13          	li	s4,37
+ 516:	4c55                	li	s8,21
+ 518:	00000c97          	auipc	s9,0x0
+ 51c:	398c8c93          	addi	s9,s9,920 # 8b0 <malloc+0x10a>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 516:	02800d93          	li	s11,40
+ 520:	02800d93          	li	s11,40
   putc(fd, 'x');
- 51a:	4d41                	li	s10,16
+ 524:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 51c:	00000b97          	auipc	s7,0x0
- 520:	3e4b8b93          	addi	s7,s7,996 # 900 <digits>
- 524:	a839                	j	542 <vprintf+0x6a>
+ 526:	00000b97          	auipc	s7,0x0
+ 52a:	3e2b8b93          	addi	s7,s7,994 # 908 <digits>
+ 52e:	a839                	j	54c <vprintf+0x6a>
         putc(fd, c);
- 526:	85ca                	mv	a1,s2
- 528:	8556                	mv	a0,s5
- 52a:	00000097          	auipc	ra,0x0
- 52e:	ee2080e7          	jalr	-286(ra) # 40c <putc>
- 532:	a019                	j	538 <vprintf+0x60>
+ 530:	85ca                	mv	a1,s2
+ 532:	8556                	mv	a0,s5
+ 534:	00000097          	auipc	ra,0x0
+ 538:	ee2080e7          	jalr	-286(ra) # 416 <putc>
+ 53c:	a019                	j	542 <vprintf+0x60>
     } else if(state == '%'){
- 534:	01498d63          	beq	s3,s4,54e <vprintf+0x76>
+ 53e:	01498d63          	beq	s3,s4,558 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 538:	0485                	addi	s1,s1,1
- 53a:	fff4c903          	lbu	s2,-1(s1)
- 53e:	14090d63          	beqz	s2,698 <vprintf+0x1c0>
+ 542:	0485                	addi	s1,s1,1
+ 544:	fff4c903          	lbu	s2,-1(s1)
+ 548:	14090d63          	beqz	s2,6a2 <vprintf+0x1c0>
     if(state == 0){
- 542:	fe0999e3          	bnez	s3,534 <vprintf+0x5c>
+ 54c:	fe0999e3          	bnez	s3,53e <vprintf+0x5c>
       if(c == '%'){
- 546:	ff4910e3          	bne	s2,s4,526 <vprintf+0x4e>
+ 550:	ff4910e3          	bne	s2,s4,530 <vprintf+0x4e>
         state = '%';
- 54a:	89d2                	mv	s3,s4
- 54c:	b7f5                	j	538 <vprintf+0x60>
+ 554:	89d2                	mv	s3,s4
+ 556:	b7f5                	j	542 <vprintf+0x60>
       if(c == 'd'){
- 54e:	11490c63          	beq	s2,s4,666 <vprintf+0x18e>
- 552:	f9d9079b          	addiw	a5,s2,-99
- 556:	0ff7f793          	zext.b	a5,a5
- 55a:	10fc6e63          	bltu	s8,a5,676 <vprintf+0x19e>
- 55e:	f9d9079b          	addiw	a5,s2,-99
- 562:	0ff7f713          	zext.b	a4,a5
- 566:	10ec6863          	bltu	s8,a4,676 <vprintf+0x19e>
- 56a:	00271793          	slli	a5,a4,0x2
- 56e:	97e6                	add	a5,a5,s9
- 570:	439c                	lw	a5,0(a5)
- 572:	97e6                	add	a5,a5,s9
- 574:	8782                	jr	a5
+ 558:	11490c63          	beq	s2,s4,670 <vprintf+0x18e>
+ 55c:	f9d9079b          	addiw	a5,s2,-99
+ 560:	0ff7f793          	zext.b	a5,a5
+ 564:	10fc6e63          	bltu	s8,a5,680 <vprintf+0x19e>
+ 568:	f9d9079b          	addiw	a5,s2,-99
+ 56c:	0ff7f713          	zext.b	a4,a5
+ 570:	10ec6863          	bltu	s8,a4,680 <vprintf+0x19e>
+ 574:	00271793          	slli	a5,a4,0x2
+ 578:	97e6                	add	a5,a5,s9
+ 57a:	439c                	lw	a5,0(a5)
+ 57c:	97e6                	add	a5,a5,s9
+ 57e:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 576:	008b0913          	addi	s2,s6,8
- 57a:	4685                	li	a3,1
- 57c:	4629                	li	a2,10
- 57e:	000b2583          	lw	a1,0(s6)
- 582:	8556                	mv	a0,s5
- 584:	00000097          	auipc	ra,0x0
- 588:	eaa080e7          	jalr	-342(ra) # 42e <printint>
- 58c:	8b4a                	mv	s6,s2
+ 580:	008b0913          	addi	s2,s6,8
+ 584:	4685                	li	a3,1
+ 586:	4629                	li	a2,10
+ 588:	000b2583          	lw	a1,0(s6)
+ 58c:	8556                	mv	a0,s5
+ 58e:	00000097          	auipc	ra,0x0
+ 592:	eaa080e7          	jalr	-342(ra) # 438 <printint>
+ 596:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 58e:	4981                	li	s3,0
- 590:	b765                	j	538 <vprintf+0x60>
+ 598:	4981                	li	s3,0
+ 59a:	b765                	j	542 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 592:	008b0913          	addi	s2,s6,8
- 596:	4681                	li	a3,0
- 598:	4629                	li	a2,10
- 59a:	000b2583          	lw	a1,0(s6)
- 59e:	8556                	mv	a0,s5
- 5a0:	00000097          	auipc	ra,0x0
- 5a4:	e8e080e7          	jalr	-370(ra) # 42e <printint>
- 5a8:	8b4a                	mv	s6,s2
+ 59c:	008b0913          	addi	s2,s6,8
+ 5a0:	4681                	li	a3,0
+ 5a2:	4629                	li	a2,10
+ 5a4:	000b2583          	lw	a1,0(s6)
+ 5a8:	8556                	mv	a0,s5
+ 5aa:	00000097          	auipc	ra,0x0
+ 5ae:	e8e080e7          	jalr	-370(ra) # 438 <printint>
+ 5b2:	8b4a                	mv	s6,s2
       state = 0;
- 5aa:	4981                	li	s3,0
- 5ac:	b771                	j	538 <vprintf+0x60>
+ 5b4:	4981                	li	s3,0
+ 5b6:	b771                	j	542 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 5ae:	008b0913          	addi	s2,s6,8
- 5b2:	4681                	li	a3,0
- 5b4:	866a                	mv	a2,s10
- 5b6:	000b2583          	lw	a1,0(s6)
- 5ba:	8556                	mv	a0,s5
- 5bc:	00000097          	auipc	ra,0x0
- 5c0:	e72080e7          	jalr	-398(ra) # 42e <printint>
- 5c4:	8b4a                	mv	s6,s2
+ 5b8:	008b0913          	addi	s2,s6,8
+ 5bc:	4681                	li	a3,0
+ 5be:	866a                	mv	a2,s10
+ 5c0:	000b2583          	lw	a1,0(s6)
+ 5c4:	8556                	mv	a0,s5
+ 5c6:	00000097          	auipc	ra,0x0
+ 5ca:	e72080e7          	jalr	-398(ra) # 438 <printint>
+ 5ce:	8b4a                	mv	s6,s2
       state = 0;
- 5c6:	4981                	li	s3,0
- 5c8:	bf85                	j	538 <vprintf+0x60>
+ 5d0:	4981                	li	s3,0
+ 5d2:	bf85                	j	542 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 5ca:	008b0793          	addi	a5,s6,8
- 5ce:	f8f43423          	sd	a5,-120(s0)
- 5d2:	000b3983          	ld	s3,0(s6)
+ 5d4:	008b0793          	addi	a5,s6,8
+ 5d8:	f8f43423          	sd	a5,-120(s0)
+ 5dc:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 5d6:	03000593          	li	a1,48
- 5da:	8556                	mv	a0,s5
- 5dc:	00000097          	auipc	ra,0x0
- 5e0:	e30080e7          	jalr	-464(ra) # 40c <putc>
+ 5e0:	03000593          	li	a1,48
+ 5e4:	8556                	mv	a0,s5
+ 5e6:	00000097          	auipc	ra,0x0
+ 5ea:	e30080e7          	jalr	-464(ra) # 416 <putc>
   putc(fd, 'x');
- 5e4:	07800593          	li	a1,120
- 5e8:	8556                	mv	a0,s5
- 5ea:	00000097          	auipc	ra,0x0
- 5ee:	e22080e7          	jalr	-478(ra) # 40c <putc>
- 5f2:	896a                	mv	s2,s10
+ 5ee:	07800593          	li	a1,120
+ 5f2:	8556                	mv	a0,s5
+ 5f4:	00000097          	auipc	ra,0x0
+ 5f8:	e22080e7          	jalr	-478(ra) # 416 <putc>
+ 5fc:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 5f4:	03c9d793          	srli	a5,s3,0x3c
- 5f8:	97de                	add	a5,a5,s7
- 5fa:	0007c583          	lbu	a1,0(a5)
- 5fe:	8556                	mv	a0,s5
- 600:	00000097          	auipc	ra,0x0
- 604:	e0c080e7          	jalr	-500(ra) # 40c <putc>
+ 5fe:	03c9d793          	srli	a5,s3,0x3c
+ 602:	97de                	add	a5,a5,s7
+ 604:	0007c583          	lbu	a1,0(a5)
+ 608:	8556                	mv	a0,s5
+ 60a:	00000097          	auipc	ra,0x0
+ 60e:	e0c080e7          	jalr	-500(ra) # 416 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 608:	0992                	slli	s3,s3,0x4
- 60a:	397d                	addiw	s2,s2,-1
- 60c:	fe0914e3          	bnez	s2,5f4 <vprintf+0x11c>
+ 612:	0992                	slli	s3,s3,0x4
+ 614:	397d                	addiw	s2,s2,-1
+ 616:	fe0914e3          	bnez	s2,5fe <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 610:	f8843b03          	ld	s6,-120(s0)
+ 61a:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 614:	4981                	li	s3,0
- 616:	b70d                	j	538 <vprintf+0x60>
+ 61e:	4981                	li	s3,0
+ 620:	b70d                	j	542 <vprintf+0x60>
         s = va_arg(ap, char*);
- 618:	008b0913          	addi	s2,s6,8
- 61c:	000b3983          	ld	s3,0(s6)
+ 622:	008b0913          	addi	s2,s6,8
+ 626:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 620:	02098163          	beqz	s3,642 <vprintf+0x16a>
+ 62a:	02098163          	beqz	s3,64c <vprintf+0x16a>
         while(*s != 0){
- 624:	0009c583          	lbu	a1,0(s3)
- 628:	c5ad                	beqz	a1,692 <vprintf+0x1ba>
+ 62e:	0009c583          	lbu	a1,0(s3)
+ 632:	c5ad                	beqz	a1,69c <vprintf+0x1ba>
           putc(fd, *s);
- 62a:	8556                	mv	a0,s5
- 62c:	00000097          	auipc	ra,0x0
- 630:	de0080e7          	jalr	-544(ra) # 40c <putc>
+ 634:	8556                	mv	a0,s5
+ 636:	00000097          	auipc	ra,0x0
+ 63a:	de0080e7          	jalr	-544(ra) # 416 <putc>
           s++;
- 634:	0985                	addi	s3,s3,1
+ 63e:	0985                	addi	s3,s3,1
         while(*s != 0){
- 636:	0009c583          	lbu	a1,0(s3)
- 63a:	f9e5                	bnez	a1,62a <vprintf+0x152>
+ 640:	0009c583          	lbu	a1,0(s3)
+ 644:	f9e5                	bnez	a1,634 <vprintf+0x152>
         s = va_arg(ap, char*);
- 63c:	8b4a                	mv	s6,s2
+ 646:	8b4a                	mv	s6,s2
       state = 0;
- 63e:	4981                	li	s3,0
- 640:	bde5                	j	538 <vprintf+0x60>
+ 648:	4981                	li	s3,0
+ 64a:	bde5                	j	542 <vprintf+0x60>
           s = "(null)";
- 642:	00000997          	auipc	s3,0x0
- 646:	25e98993          	addi	s3,s3,606 # 8a0 <malloc+0x104>
+ 64c:	00000997          	auipc	s3,0x0
+ 650:	25c98993          	addi	s3,s3,604 # 8a8 <malloc+0x102>
         while(*s != 0){
- 64a:	85ee                	mv	a1,s11
- 64c:	bff9                	j	62a <vprintf+0x152>
+ 654:	85ee                	mv	a1,s11
+ 656:	bff9                	j	634 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 64e:	008b0913          	addi	s2,s6,8
- 652:	000b4583          	lbu	a1,0(s6)
- 656:	8556                	mv	a0,s5
- 658:	00000097          	auipc	ra,0x0
- 65c:	db4080e7          	jalr	-588(ra) # 40c <putc>
- 660:	8b4a                	mv	s6,s2
+ 658:	008b0913          	addi	s2,s6,8
+ 65c:	000b4583          	lbu	a1,0(s6)
+ 660:	8556                	mv	a0,s5
+ 662:	00000097          	auipc	ra,0x0
+ 666:	db4080e7          	jalr	-588(ra) # 416 <putc>
+ 66a:	8b4a                	mv	s6,s2
       state = 0;
- 662:	4981                	li	s3,0
- 664:	bdd1                	j	538 <vprintf+0x60>
+ 66c:	4981                	li	s3,0
+ 66e:	bdd1                	j	542 <vprintf+0x60>
         putc(fd, c);
- 666:	85d2                	mv	a1,s4
- 668:	8556                	mv	a0,s5
- 66a:	00000097          	auipc	ra,0x0
- 66e:	da2080e7          	jalr	-606(ra) # 40c <putc>
+ 670:	85d2                	mv	a1,s4
+ 672:	8556                	mv	a0,s5
+ 674:	00000097          	auipc	ra,0x0
+ 678:	da2080e7          	jalr	-606(ra) # 416 <putc>
       state = 0;
- 672:	4981                	li	s3,0
- 674:	b5d1                	j	538 <vprintf+0x60>
+ 67c:	4981                	li	s3,0
+ 67e:	b5d1                	j	542 <vprintf+0x60>
         putc(fd, '%');
- 676:	85d2                	mv	a1,s4
- 678:	8556                	mv	a0,s5
- 67a:	00000097          	auipc	ra,0x0
- 67e:	d92080e7          	jalr	-622(ra) # 40c <putc>
+ 680:	85d2                	mv	a1,s4
+ 682:	8556                	mv	a0,s5
+ 684:	00000097          	auipc	ra,0x0
+ 688:	d92080e7          	jalr	-622(ra) # 416 <putc>
         putc(fd, c);
- 682:	85ca                	mv	a1,s2
- 684:	8556                	mv	a0,s5
- 686:	00000097          	auipc	ra,0x0
- 68a:	d86080e7          	jalr	-634(ra) # 40c <putc>
+ 68c:	85ca                	mv	a1,s2
+ 68e:	8556                	mv	a0,s5
+ 690:	00000097          	auipc	ra,0x0
+ 694:	d86080e7          	jalr	-634(ra) # 416 <putc>
       state = 0;
- 68e:	4981                	li	s3,0
- 690:	b565                	j	538 <vprintf+0x60>
+ 698:	4981                	li	s3,0
+ 69a:	b565                	j	542 <vprintf+0x60>
         s = va_arg(ap, char*);
- 692:	8b4a                	mv	s6,s2
+ 69c:	8b4a                	mv	s6,s2
       state = 0;
- 694:	4981                	li	s3,0
- 696:	b54d                	j	538 <vprintf+0x60>
+ 69e:	4981                	li	s3,0
+ 6a0:	b54d                	j	542 <vprintf+0x60>
     }
   }
 }
- 698:	70e6                	ld	ra,120(sp)
- 69a:	7446                	ld	s0,112(sp)
- 69c:	74a6                	ld	s1,104(sp)
- 69e:	7906                	ld	s2,96(sp)
- 6a0:	69e6                	ld	s3,88(sp)
- 6a2:	6a46                	ld	s4,80(sp)
- 6a4:	6aa6                	ld	s5,72(sp)
- 6a6:	6b06                	ld	s6,64(sp)
- 6a8:	7be2                	ld	s7,56(sp)
- 6aa:	7c42                	ld	s8,48(sp)
- 6ac:	7ca2                	ld	s9,40(sp)
- 6ae:	7d02                	ld	s10,32(sp)
- 6b0:	6de2                	ld	s11,24(sp)
- 6b2:	6109                	addi	sp,sp,128
- 6b4:	8082                	ret
-
-00000000000006b6 <fprintf>:
+ 6a2:	70e6                	ld	ra,120(sp)
+ 6a4:	7446                	ld	s0,112(sp)
+ 6a6:	74a6                	ld	s1,104(sp)
+ 6a8:	7906                	ld	s2,96(sp)
+ 6aa:	69e6                	ld	s3,88(sp)
+ 6ac:	6a46                	ld	s4,80(sp)
+ 6ae:	6aa6                	ld	s5,72(sp)
+ 6b0:	6b06                	ld	s6,64(sp)
+ 6b2:	7be2                	ld	s7,56(sp)
+ 6b4:	7c42                	ld	s8,48(sp)
+ 6b6:	7ca2                	ld	s9,40(sp)
+ 6b8:	7d02                	ld	s10,32(sp)
+ 6ba:	6de2                	ld	s11,24(sp)
+ 6bc:	6109                	addi	sp,sp,128
+ 6be:	8082                	ret
+
+00000000000006c0 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 6b6:	715d                	addi	sp,sp,-80
- 6b8:	ec06                	sd	ra,24(sp)
- 6ba:	e822                	sd	s0,16(sp)
- 6bc:	1000                	addi	s0,sp,32
- 6be:	e010                	sd	a2,0(s0)
- 6c0:	e414                	sd	a3,8(s0)
- 6c2:	e818                	sd	a4,16(s0)
- 6c4:	ec1c                	sd	a5,24(s0)
- 6c6:	03043023          	sd	a6,32(s0)
- 6ca:	03143423          	sd	a7,40(s0)
+ 6c0:	715d                	addi	sp,sp,-80
+ 6c2:	ec06                	sd	ra,24(sp)
+ 6c4:	e822                	sd	s0,16(sp)
+ 6c6:	1000                	addi	s0,sp,32
+ 6c8:	e010                	sd	a2,0(s0)
+ 6ca:	e414                	sd	a3,8(s0)
+ 6cc:	e818                	sd	a4,16(s0)
+ 6ce:	ec1c                	sd	a5,24(s0)
+ 6d0:	03043023          	sd	a6,32(s0)
+ 6d4:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6ce:	8622                	mv	a2,s0
- 6d0:	fe843423          	sd	s0,-24(s0)
+ 6d8:	8622                	mv	a2,s0
+ 6da:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 6d4:	00000097          	auipc	ra,0x0
- 6d8:	e04080e7          	jalr	-508(ra) # 4d8 <vprintf>
+ 6de:	00000097          	auipc	ra,0x0
+ 6e2:	e04080e7          	jalr	-508(ra) # 4e2 <vprintf>
 }
- 6dc:	60e2                	ld	ra,24(sp)
- 6de:	6442                	ld	s0,16(sp)
- 6e0:	6161                	addi	sp,sp,80
- 6e2:	8082                	ret
+ 6e6:	60e2                	ld	ra,24(sp)
+ 6e8:	6442                	ld	s0,16(sp)
+ 6ea:	6161                	addi	sp,sp,80
+ 6ec:	8082                	ret
 
-00000000000006e4 <printf>:
+00000000000006ee <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 6e4:	711d                	addi	sp,sp,-96
- 6e6:	ec06                	sd	ra,24(sp)
- 6e8:	e822                	sd	s0,16(sp)
- 6ea:	1000                	addi	s0,sp,32
- 6ec:	e40c                	sd	a1,8(s0)
- 6ee:	e810                	sd	a2,16(s0)
- 6f0:	ec14                	sd	a3,24(s0)
- 6f2:	f018                	sd	a4,32(s0)
- 6f4:	f41c                	sd	a5,40(s0)
- 6f6:	03043823          	sd	a6,48(s0)
- 6fa:	03143c23          	sd	a7,56(s0)
+ 6ee:	711d                	addi	sp,sp,-96
+ 6f0:	ec06                	sd	ra,24(sp)
+ 6f2:	e822                	sd	s0,16(sp)
+ 6f4:	1000                	addi	s0,sp,32
+ 6f6:	e40c                	sd	a1,8(s0)
+ 6f8:	e810                	sd	a2,16(s0)
+ 6fa:	ec14                	sd	a3,24(s0)
+ 6fc:	f018                	sd	a4,32(s0)
+ 6fe:	f41c                	sd	a5,40(s0)
+ 700:	03043823          	sd	a6,48(s0)
+ 704:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6fe:	00840613          	addi	a2,s0,8
- 702:	fec43423          	sd	a2,-24(s0)
+ 708:	00840613          	addi	a2,s0,8
+ 70c:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 706:	85aa                	mv	a1,a0
- 708:	4505                	li	a0,1
- 70a:	00000097          	auipc	ra,0x0
- 70e:	dce080e7          	jalr	-562(ra) # 4d8 <vprintf>
+ 710:	85aa                	mv	a1,a0
+ 712:	4505                	li	a0,1
+ 714:	00000097          	auipc	ra,0x0
+ 718:	dce080e7          	jalr	-562(ra) # 4e2 <vprintf>
 }
- 712:	60e2                	ld	ra,24(sp)
- 714:	6442                	ld	s0,16(sp)
- 716:	6125                	addi	sp,sp,96
- 718:	8082                	ret
+ 71c:	60e2                	ld	ra,24(sp)
+ 71e:	6442                	ld	s0,16(sp)
+ 720:	6125                	addi	sp,sp,96
+ 722:	8082                	ret
 
-000000000000071a <free>:
+0000000000000724 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 71a:	1141                	addi	sp,sp,-16
- 71c:	e422                	sd	s0,8(sp)
- 71e:	0800                	addi	s0,sp,16
+ 724:	1141                	addi	sp,sp,-16
+ 726:	e422                	sd	s0,8(sp)
+ 728:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 720:	ff050693          	addi	a3,a0,-16
+ 72a:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 724:	00000797          	auipc	a5,0x0
- 728:	1f47b783          	ld	a5,500(a5) # 918 <freep>
- 72c:	a02d                	j	756 <free+0x3c>
+ 72e:	00000797          	auipc	a5,0x0
+ 732:	1f27b783          	ld	a5,498(a5) # 920 <freep>
+ 736:	a02d                	j	760 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 72e:	4618                	lw	a4,8(a2)
- 730:	9f2d                	addw	a4,a4,a1
- 732:	fee52c23          	sw	a4,-8(a0)
+ 738:	4618                	lw	a4,8(a2)
+ 73a:	9f2d                	addw	a4,a4,a1
+ 73c:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 736:	6398                	ld	a4,0(a5)
- 738:	6310                	ld	a2,0(a4)
- 73a:	a83d                	j	778 <free+0x5e>
+ 740:	6398                	ld	a4,0(a5)
+ 742:	6310                	ld	a2,0(a4)
+ 744:	a83d                	j	782 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 73c:	ff852703          	lw	a4,-8(a0)
- 740:	9f31                	addw	a4,a4,a2
- 742:	c798                	sw	a4,8(a5)
+ 746:	ff852703          	lw	a4,-8(a0)
+ 74a:	9f31                	addw	a4,a4,a2
+ 74c:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 744:	ff053683          	ld	a3,-16(a0)
- 748:	a091                	j	78c <free+0x72>
+ 74e:	ff053683          	ld	a3,-16(a0)
+ 752:	a091                	j	796 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 74a:	6398                	ld	a4,0(a5)
- 74c:	00e7e463          	bltu	a5,a4,754 <free+0x3a>
- 750:	00e6ea63          	bltu	a3,a4,764 <free+0x4a>
+ 754:	6398                	ld	a4,0(a5)
+ 756:	00e7e463          	bltu	a5,a4,75e <free+0x3a>
+ 75a:	00e6ea63          	bltu	a3,a4,76e <free+0x4a>
 {
- 754:	87ba                	mv	a5,a4
+ 75e:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 756:	fed7fae3          	bgeu	a5,a3,74a <free+0x30>
- 75a:	6398                	ld	a4,0(a5)
- 75c:	00e6e463          	bltu	a3,a4,764 <free+0x4a>
+ 760:	fed7fae3          	bgeu	a5,a3,754 <free+0x30>
+ 764:	6398                	ld	a4,0(a5)
+ 766:	00e6e463          	bltu	a3,a4,76e <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 760:	fee7eae3          	bltu	a5,a4,754 <free+0x3a>
+ 76a:	fee7eae3          	bltu	a5,a4,75e <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 764:	ff852583          	lw	a1,-8(a0)
- 768:	6390                	ld	a2,0(a5)
- 76a:	02059813          	slli	a6,a1,0x20
- 76e:	01c85713          	srli	a4,a6,0x1c
- 772:	9736                	add	a4,a4,a3
- 774:	fae60de3          	beq	a2,a4,72e <free+0x14>
+ 76e:	ff852583          	lw	a1,-8(a0)
+ 772:	6390                	ld	a2,0(a5)
+ 774:	02059813          	slli	a6,a1,0x20
+ 778:	01c85713          	srli	a4,a6,0x1c
+ 77c:	9736                	add	a4,a4,a3
+ 77e:	fae60de3          	beq	a2,a4,738 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 778:	fec53823          	sd	a2,-16(a0)
+ 782:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 77c:	4790                	lw	a2,8(a5)
- 77e:	02061593          	slli	a1,a2,0x20
- 782:	01c5d713          	srli	a4,a1,0x1c
- 786:	973e                	add	a4,a4,a5
- 788:	fae68ae3          	beq	a3,a4,73c <free+0x22>
+ 786:	4790                	lw	a2,8(a5)
+ 788:	02061593          	slli	a1,a2,0x20
+ 78c:	01c5d713          	srli	a4,a1,0x1c
+ 790:	973e                	add	a4,a4,a5
+ 792:	fae68ae3          	beq	a3,a4,746 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 78c:	e394                	sd	a3,0(a5)
+ 796:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 78e:	00000717          	auipc	a4,0x0
- 792:	18f73523          	sd	a5,394(a4) # 918 <freep>
+ 798:	00000717          	auipc	a4,0x0
+ 79c:	18f73423          	sd	a5,392(a4) # 920 <freep>
 }
- 796:	6422                	ld	s0,8(sp)
- 798:	0141                	addi	sp,sp,16
- 79a:	8082                	ret
+ 7a0:	6422                	ld	s0,8(sp)
+ 7a2:	0141                	addi	sp,sp,16
+ 7a4:	8082                	ret
 
-000000000000079c <malloc>:
+00000000000007a6 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 79c:	7139                	addi	sp,sp,-64
- 79e:	fc06                	sd	ra,56(sp)
- 7a0:	f822                	sd	s0,48(sp)
- 7a2:	f426                	sd	s1,40(sp)
- 7a4:	f04a                	sd	s2,32(sp)
- 7a6:	ec4e                	sd	s3,24(sp)
- 7a8:	e852                	sd	s4,16(sp)
- 7aa:	e456                	sd	s5,8(sp)
- 7ac:	e05a                	sd	s6,0(sp)
- 7ae:	0080                	addi	s0,sp,64
+ 7a6:	7139                	addi	sp,sp,-64
+ 7a8:	fc06                	sd	ra,56(sp)
+ 7aa:	f822                	sd	s0,48(sp)
+ 7ac:	f426                	sd	s1,40(sp)
+ 7ae:	f04a                	sd	s2,32(sp)
+ 7b0:	ec4e                	sd	s3,24(sp)
+ 7b2:	e852                	sd	s4,16(sp)
+ 7b4:	e456                	sd	s5,8(sp)
+ 7b6:	e05a                	sd	s6,0(sp)
+ 7b8:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 7b0:	02051493          	slli	s1,a0,0x20
- 7b4:	9081                	srli	s1,s1,0x20
- 7b6:	04bd                	addi	s1,s1,15
- 7b8:	8091                	srli	s1,s1,0x4
- 7ba:	00148a1b          	addiw	s4,s1,1
- 7be:	0485                	addi	s1,s1,1
+ 7ba:	02051493          	slli	s1,a0,0x20
+ 7be:	9081                	srli	s1,s1,0x20
+ 7c0:	04bd                	addi	s1,s1,15
+ 7c2:	8091                	srli	s1,s1,0x4
+ 7c4:	00148a1b          	addiw	s4,s1,1
+ 7c8:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 7c0:	00000517          	auipc	a0,0x0
- 7c4:	15853503          	ld	a0,344(a0) # 918 <freep>
- 7c8:	c515                	beqz	a0,7f4 <malloc+0x58>
+ 7ca:	00000517          	auipc	a0,0x0
+ 7ce:	15653503          	ld	a0,342(a0) # 920 <freep>
+ 7d2:	c515                	beqz	a0,7fe <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 7ca:	611c                	ld	a5,0(a0)
+ 7d4:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 7cc:	4798                	lw	a4,8(a5)
- 7ce:	04977163          	bgeu	a4,s1,810 <malloc+0x74>
- 7d2:	89d2                	mv	s3,s4
- 7d4:	000a071b          	sext.w	a4,s4
- 7d8:	6685                	lui	a3,0x1
- 7da:	00d77363          	bgeu	a4,a3,7e0 <malloc+0x44>
- 7de:	6985                	lui	s3,0x1
- 7e0:	00098b1b          	sext.w	s6,s3
+ 7d6:	4798                	lw	a4,8(a5)
+ 7d8:	04977163          	bgeu	a4,s1,81a <malloc+0x74>
+ 7dc:	89d2                	mv	s3,s4
+ 7de:	000a071b          	sext.w	a4,s4
+ 7e2:	6685                	lui	a3,0x1
+ 7e4:	00d77363          	bgeu	a4,a3,7ea <malloc+0x44>
+ 7e8:	6985                	lui	s3,0x1
+ 7ea:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 7e4:	0049999b          	slliw	s3,s3,0x4
+ 7ee:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 7e8:	00000917          	auipc	s2,0x0
- 7ec:	13090913          	addi	s2,s2,304 # 918 <freep>
+ 7f2:	00000917          	auipc	s2,0x0
+ 7f6:	12e90913          	addi	s2,s2,302 # 920 <freep>
   if(p == (char*)-1)
- 7f0:	5afd                	li	s5,-1
- 7f2:	a8a5                	j	86a <malloc+0xce>
+ 7fa:	5afd                	li	s5,-1
+ 7fc:	a8a5                	j	874 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 7f4:	00000797          	auipc	a5,0x0
- 7f8:	12478793          	addi	a5,a5,292 # 918 <freep>
- 7fc:	00000717          	auipc	a4,0x0
- 800:	12470713          	addi	a4,a4,292 # 920 <base>
- 804:	e398                	sd	a4,0(a5)
- 806:	e798                	sd	a4,8(a5)
+ 7fe:	00000797          	auipc	a5,0x0
+ 802:	12278793          	addi	a5,a5,290 # 920 <freep>
+ 806:	00000717          	auipc	a4,0x0
+ 80a:	12270713          	addi	a4,a4,290 # 928 <base>
+ 80e:	e398                	sd	a4,0(a5)
+ 810:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 808:	0007a823          	sw	zero,16(a5)
+ 812:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 80c:	87ba                	mv	a5,a4
- 80e:	b7d1                	j	7d2 <malloc+0x36>
+ 816:	87ba                	mv	a5,a4
+ 818:	b7d1                	j	7dc <malloc+0x36>
       if(p->s.size == nunits)
- 810:	02e48c63          	beq	s1,a4,848 <malloc+0xac>
+ 81a:	02e48c63          	beq	s1,a4,852 <malloc+0xac>
         p->s.size -= nunits;
- 814:	4147073b          	subw	a4,a4,s4
- 818:	c798                	sw	a4,8(a5)
+ 81e:	4147073b          	subw	a4,a4,s4
+ 822:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 81a:	02071693          	slli	a3,a4,0x20
- 81e:	01c6d713          	srli	a4,a3,0x1c
- 822:	97ba                	add	a5,a5,a4
+ 824:	02071693          	slli	a3,a4,0x20
+ 828:	01c6d713          	srli	a4,a3,0x1c
+ 82c:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 824:	0147a423          	sw	s4,8(a5)
+ 82e:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 828:	00000717          	auipc	a4,0x0
- 82c:	0ea73823          	sd	a0,240(a4) # 918 <freep>
+ 832:	00000717          	auipc	a4,0x0
+ 836:	0ea73723          	sd	a0,238(a4) # 920 <freep>
       return (void*)(p + 1);
- 830:	01078513          	addi	a0,a5,16
+ 83a:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 834:	70e2                	ld	ra,56(sp)
- 836:	7442                	ld	s0,48(sp)
- 838:	74a2                	ld	s1,40(sp)
- 83a:	7902                	ld	s2,32(sp)
- 83c:	69e2                	ld	s3,24(sp)
- 83e:	6a42                	ld	s4,16(sp)
- 840:	6aa2                	ld	s5,8(sp)
- 842:	6b02                	ld	s6,0(sp)
- 844:	6121                	addi	sp,sp,64
- 846:	8082                	ret
+ 83e:	70e2                	ld	ra,56(sp)
+ 840:	7442                	ld	s0,48(sp)
+ 842:	74a2                	ld	s1,40(sp)
+ 844:	7902                	ld	s2,32(sp)
+ 846:	69e2                	ld	s3,24(sp)
+ 848:	6a42                	ld	s4,16(sp)
+ 84a:	6aa2                	ld	s5,8(sp)
+ 84c:	6b02                	ld	s6,0(sp)
+ 84e:	6121                	addi	sp,sp,64
+ 850:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 848:	6398                	ld	a4,0(a5)
- 84a:	e118                	sd	a4,0(a0)
- 84c:	bff1                	j	828 <malloc+0x8c>
+ 852:	6398                	ld	a4,0(a5)
+ 854:	e118                	sd	a4,0(a0)
+ 856:	bff1                	j	832 <malloc+0x8c>
   hp->s.size = nu;
- 84e:	01652423          	sw	s6,8(a0)
+ 858:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 852:	0541                	addi	a0,a0,16
- 854:	00000097          	auipc	ra,0x0
- 858:	ec6080e7          	jalr	-314(ra) # 71a <free>
+ 85c:	0541                	addi	a0,a0,16
+ 85e:	00000097          	auipc	ra,0x0
+ 862:	ec6080e7          	jalr	-314(ra) # 724 <free>
   return freep;
- 85c:	00093503          	ld	a0,0(s2)
+ 866:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 860:	d971                	beqz	a0,834 <malloc+0x98>
+ 86a:	d971                	beqz	a0,83e <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 862:	611c                	ld	a5,0(a0)
+ 86c:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 864:	4798                	lw	a4,8(a5)
- 866:	fa9775e3          	bgeu	a4,s1,810 <malloc+0x74>
+ 86e:	4798                	lw	a4,8(a5)
+ 870:	fa9775e3          	bgeu	a4,s1,81a <malloc+0x74>
     if(p == freep)
- 86a:	00093703          	ld	a4,0(s2)
- 86e:	853e                	mv	a0,a5
- 870:	fef719e3          	bne	a4,a5,862 <malloc+0xc6>
+ 874:	00093703          	ld	a4,0(s2)
+ 878:	853e                	mv	a0,a5
+ 87a:	fef719e3          	bne	a4,a5,86c <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 874:	854e                	mv	a0,s3
- 876:	00000097          	auipc	ra,0x0
- 87a:	b2a080e7          	jalr	-1238(ra) # 3a0 <sbrk>
+ 87e:	854e                	mv	a0,s3
+ 880:	00000097          	auipc	ra,0x0
+ 884:	b20080e7          	jalr	-1248(ra) # 3a0 <sbrk>
   if(p == (char*)-1)
- 87e:	fd5518e3          	bne	a0,s5,84e <malloc+0xb2>
+ 888:	fd5518e3          	bne	a0,s5,858 <malloc+0xb2>
         return 0;
- 882:	4501                	li	a0,0
- 884:	bf45                	j	834 <malloc+0x98>
+ 88c:	4501                	li	a0,0
+ 88e:	bf45                	j	83e <malloc+0x98>
diff --git a/xv6-user/kill.sym b/xv6-user/kill.sym
index 07117e8..a1dcac9 100644
--- a/xv6-user/kill.sym
+++ b/xv6-user/kill.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-0000000000000888 .rodata
-0000000000000918 .bss
+0000000000000890 .rodata
+0000000000000920 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-000000000000040c putc
-000000000000042e printint
-0000000000000900 digits
+0000000000000416 putc
+0000000000000438 printint
+0000000000000908 digits
 0000000000000000 umalloc.c
-0000000000000918 freep
-0000000000000920 base
+0000000000000920 freep
+0000000000000928 base
 0000000000000064 strcpy
-00000000000006e4 printf
-0000000000001111 __global_pointer$
+00000000000006ee printf
+0000000000001119 __global_pointer$
 00000000000003c0 dev
 000000000000026a memmove
+000000000000040c times
 00000000000003e0 trace
 000000000000014a gets
-0000000000000911 __SDATA_BEGIN__
+0000000000000919 __SDATA_BEGIN__
 0000000000000396 getpid
 00000000000002fc memcpy
-000000000000079c malloc
+00000000000007a6 malloc
 00000000000003d8 remove
 00000000000003a8 sleep
 00000000000003e8 sysinfo
@@ -42,31 +43,31 @@
 00000000000003f0 rename
 0000000000000342 write
 0000000000000370 fstat
-00000000000006b6 fprintf
+00000000000006c0 fprintf
 0000000000000356 kill
 0000000000000080 strcat
-00000000000004d8 vprintf
+00000000000004e2 vprintf
 0000000000000384 chdir
 000000000000035e exec
 0000000000000326 wait
 0000000000000338 read
 00000000000002c2 memcmp
 0000000000000314 fork
-0000000000000930 __BSS_END__
+0000000000000938 __BSS_END__
 00000000000003a0 sbrk
 00000000000003b8 test_proc
 00000000000003b0 uptime
-0000000000000911 __bss_start
+0000000000000919 __bss_start
 0000000000000104 memset
 0000000000000000 main
 00000000000000ae strcmp
 00000000000003f8 shutdown
 000000000000038e dup
 00000000000003d0 getcwd
-0000000000000911 __DATA_BEGIN__
+0000000000000919 __DATA_BEGIN__
 00000000000001c4 stat
-0000000000000911 _edata
-0000000000000930 _end
+0000000000000919 _edata
+0000000000000938 _end
 000000000000031c exit
 000000000000020a atoi
 00000000000000da strlen
@@ -74,4 +75,4 @@
 0000000000000126 strchr
 000000000000037a mkdir
 000000000000034c close
-000000000000071a free
+0000000000000724 free
diff --git a/xv6-user/ls.asm b/xv6-user/ls.asm
index 935ec83..70cbb55 100644
--- a/xv6-user/ls.asm
+++ b/xv6-user/ls.asm
@@ -45,7 +45,7 @@ fmtname(char *name)
   30:	8082                	ret
   memmove(buf, name, len);
   32:	00001997          	auipc	s3,0x1
-  36:	ab698993          	addi	s3,s3,-1354 # ae8 <buf.0>
+  36:	ac698993          	addi	s3,s3,-1338 # af8 <buf.0>
   3a:	8626                	mv	a2,s1
   3c:	85ca                	mv	a1,s2
   3e:	854e                	mv	a0,s3
@@ -83,10 +83,10 @@ ls(char *path)
   char *types[] = {
   78:	f8043023          	sd	zero,-128(s0)
   7c:	00001797          	auipc	a5,0x1
-  80:	98c78793          	addi	a5,a5,-1652 # a08 <malloc+0xea>
+  80:	99c78793          	addi	a5,a5,-1636 # a18 <malloc+0xf0>
   84:	f8f43423          	sd	a5,-120(s0)
   88:	00001797          	auipc	a5,0x1
-  8c:	98878793          	addi	a5,a5,-1656 # a10 <malloc+0xf2>
+  8c:	99878793          	addi	a5,a5,-1640 # a20 <malloc+0xf8>
   90:	f8f43823          	sd	a5,-112(s0)
     [T_DIR]   "DIR ",
     [T_FILE]  "FILE",
@@ -121,24 +121,24 @@ ls(char *path)
   c2:	4985                	li	s3,1
       printf("%s %s\t%d\n", fmtname(st.name), types[st.type], st.size);
   c4:	00001a17          	auipc	s4,0x1
-  c8:	984a0a13          	addi	s4,s4,-1660 # a48 <malloc+0x12a>
+  c8:	994a0a13          	addi	s4,s4,-1644 # a58 <malloc+0x130>
   cc:	a08d                	j	12e <ls+0xc8>
     fprintf(2, "ls: cannot open %s\n", path);
   ce:	864a                	mv	a2,s2
   d0:	00001597          	auipc	a1,0x1
-  d4:	94858593          	addi	a1,a1,-1720 # a18 <malloc+0xfa>
+  d4:	95858593          	addi	a1,a1,-1704 # a28 <malloc+0x100>
   d8:	4509                	li	a0,2
   da:	00000097          	auipc	ra,0x0
-  de:	75e080e7          	jalr	1886(ra) # 838 <fprintf>
+  de:	768080e7          	jalr	1896(ra) # 842 <fprintf>
     return;
   e2:	a09d                	j	148 <ls+0xe2>
     fprintf(2, "ls: cannot stat %s\n", path);
   e4:	864a                	mv	a2,s2
   e6:	00001597          	auipc	a1,0x1
-  ea:	94a58593          	addi	a1,a1,-1718 # a30 <malloc+0x112>
+  ea:	95a58593          	addi	a1,a1,-1702 # a40 <malloc+0x118>
   ee:	4509                	li	a0,2
   f0:	00000097          	auipc	ra,0x0
-  f4:	748080e7          	jalr	1864(ra) # 838 <fprintf>
+  f4:	752080e7          	jalr	1874(ra) # 842 <fprintf>
     close(fd);
   f8:	8526                	mv	a0,s1
   fa:	00000097          	auipc	ra,0x0
@@ -158,7 +158,7 @@ ls(char *path)
  120:	fb07b603          	ld	a2,-80(a5)
  124:	8552                	mv	a0,s4
  126:	00000097          	auipc	ra,0x0
- 12a:	740080e7          	jalr	1856(ra) # 866 <printf>
+ 12a:	74a080e7          	jalr	1866(ra) # 870 <printf>
     while(readdir(fd, &st) == 1){
  12e:	85ca                	mv	a1,s2
  130:	8526                	mv	a0,s1
@@ -194,9 +194,9 @@ ls(char *path)
  172:	fc843683          	ld	a3,-56(s0)
  176:	fb07b603          	ld	a2,-80(a5)
  17a:	00001517          	auipc	a0,0x1
- 17e:	8de50513          	addi	a0,a0,-1826 # a58 <malloc+0x13a>
+ 17e:	8ee50513          	addi	a0,a0,-1810 # a68 <malloc+0x140>
  182:	00000097          	auipc	ra,0x0
- 186:	6e4080e7          	jalr	1764(ra) # 866 <printf>
+ 186:	6ee080e7          	jalr	1774(ra) # 870 <printf>
  18a:	bf55                	j	13e <ls+0xd8>
 
 000000000000018c <main>:
@@ -238,7 +238,7 @@ main(int argc, char *argv[])
  1c8:	2da080e7          	jalr	730(ra) # 49e <exit>
     ls(".");
  1cc:	00001517          	auipc	a0,0x1
- 1d0:	89c50513          	addi	a0,a0,-1892 # a68 <malloc+0x14a>
+ 1d0:	8ac50513          	addi	a0,a0,-1876 # a78 <malloc+0x150>
  1d4:	00000097          	auipc	ra,0x0
  1d8:	e92080e7          	jalr	-366(ra) # 66 <ls>
     exit(0);
@@ -1002,637 +1002,647 @@ uname:
  ret
  58c:	8082                	ret
 
-000000000000058e <putc>:
+000000000000058e <times>:
+.global times
+times:
+ li a7, SYS_times
+ 58e:	09900893          	li	a7,153
+ ecall
+ 592:	00000073          	ecall
+ ret
+ 596:	8082                	ret
+
+0000000000000598 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 58e:	1101                	addi	sp,sp,-32
- 590:	ec06                	sd	ra,24(sp)
- 592:	e822                	sd	s0,16(sp)
- 594:	1000                	addi	s0,sp,32
- 596:	feb407a3          	sb	a1,-17(s0)
+ 598:	1101                	addi	sp,sp,-32
+ 59a:	ec06                	sd	ra,24(sp)
+ 59c:	e822                	sd	s0,16(sp)
+ 59e:	1000                	addi	s0,sp,32
+ 5a0:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 59a:	4605                	li	a2,1
- 59c:	fef40593          	addi	a1,s0,-17
- 5a0:	00000097          	auipc	ra,0x0
- 5a4:	f24080e7          	jalr	-220(ra) # 4c4 <write>
+ 5a4:	4605                	li	a2,1
+ 5a6:	fef40593          	addi	a1,s0,-17
+ 5aa:	00000097          	auipc	ra,0x0
+ 5ae:	f1a080e7          	jalr	-230(ra) # 4c4 <write>
 }
- 5a8:	60e2                	ld	ra,24(sp)
- 5aa:	6442                	ld	s0,16(sp)
- 5ac:	6105                	addi	sp,sp,32
- 5ae:	8082                	ret
+ 5b2:	60e2                	ld	ra,24(sp)
+ 5b4:	6442                	ld	s0,16(sp)
+ 5b6:	6105                	addi	sp,sp,32
+ 5b8:	8082                	ret
 
-00000000000005b0 <printint>:
+00000000000005ba <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 5b0:	7139                	addi	sp,sp,-64
- 5b2:	fc06                	sd	ra,56(sp)
- 5b4:	f822                	sd	s0,48(sp)
- 5b6:	f426                	sd	s1,40(sp)
- 5b8:	f04a                	sd	s2,32(sp)
- 5ba:	ec4e                	sd	s3,24(sp)
- 5bc:	0080                	addi	s0,sp,64
- 5be:	84aa                	mv	s1,a0
+ 5ba:	7139                	addi	sp,sp,-64
+ 5bc:	fc06                	sd	ra,56(sp)
+ 5be:	f822                	sd	s0,48(sp)
+ 5c0:	f426                	sd	s1,40(sp)
+ 5c2:	f04a                	sd	s2,32(sp)
+ 5c4:	ec4e                	sd	s3,24(sp)
+ 5c6:	0080                	addi	s0,sp,64
+ 5c8:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 5c0:	c299                	beqz	a3,5c6 <printint+0x16>
- 5c2:	0805c863          	bltz	a1,652 <printint+0xa2>
+ 5ca:	c299                	beqz	a3,5d0 <printint+0x16>
+ 5cc:	0805c863          	bltz	a1,65c <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 5c6:	2581                	sext.w	a1,a1
+ 5d0:	2581                	sext.w	a1,a1
   neg = 0;
- 5c8:	4881                	li	a7,0
+ 5d2:	4881                	li	a7,0
   }
 
   i = 0;
- 5ca:	fc040993          	addi	s3,s0,-64
+ 5d4:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 5ce:	86ce                	mv	a3,s3
+ 5d8:	86ce                	mv	a3,s3
   i = 0;
- 5d0:	4701                	li	a4,0
+ 5da:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 5d2:	2601                	sext.w	a2,a2
- 5d4:	00000517          	auipc	a0,0x0
- 5d8:	4fc50513          	addi	a0,a0,1276 # ad0 <digits>
- 5dc:	883a                	mv	a6,a4
- 5de:	2705                	addiw	a4,a4,1
- 5e0:	02c5f7bb          	remuw	a5,a1,a2
- 5e4:	1782                	slli	a5,a5,0x20
- 5e6:	9381                	srli	a5,a5,0x20
- 5e8:	97aa                	add	a5,a5,a0
- 5ea:	0007c783          	lbu	a5,0(a5)
- 5ee:	00f68023          	sb	a5,0(a3)
+ 5dc:	2601                	sext.w	a2,a2
+ 5de:	00000517          	auipc	a0,0x0
+ 5e2:	50250513          	addi	a0,a0,1282 # ae0 <digits>
+ 5e6:	883a                	mv	a6,a4
+ 5e8:	2705                	addiw	a4,a4,1
+ 5ea:	02c5f7bb          	remuw	a5,a1,a2
+ 5ee:	1782                	slli	a5,a5,0x20
+ 5f0:	9381                	srli	a5,a5,0x20
+ 5f2:	97aa                	add	a5,a5,a0
+ 5f4:	0007c783          	lbu	a5,0(a5)
+ 5f8:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 5f2:	0005879b          	sext.w	a5,a1
- 5f6:	02c5d5bb          	divuw	a1,a1,a2
- 5fa:	0685                	addi	a3,a3,1
- 5fc:	fec7f0e3          	bgeu	a5,a2,5dc <printint+0x2c>
+ 5fc:	0005879b          	sext.w	a5,a1
+ 600:	02c5d5bb          	divuw	a1,a1,a2
+ 604:	0685                	addi	a3,a3,1
+ 606:	fec7f0e3          	bgeu	a5,a2,5e6 <printint+0x2c>
   if(neg)
- 600:	00088c63          	beqz	a7,618 <printint+0x68>
+ 60a:	00088c63          	beqz	a7,622 <printint+0x68>
     buf[i++] = '-';
- 604:	fd070793          	addi	a5,a4,-48
- 608:	00878733          	add	a4,a5,s0
- 60c:	02d00793          	li	a5,45
- 610:	fef70823          	sb	a5,-16(a4)
- 614:	0028071b          	addiw	a4,a6,2
+ 60e:	fd070793          	addi	a5,a4,-48
+ 612:	00878733          	add	a4,a5,s0
+ 616:	02d00793          	li	a5,45
+ 61a:	fef70823          	sb	a5,-16(a4)
+ 61e:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 618:	02e05663          	blez	a4,644 <printint+0x94>
- 61c:	fc040913          	addi	s2,s0,-64
- 620:	993a                	add	s2,s2,a4
- 622:	19fd                	addi	s3,s3,-1
- 624:	99ba                	add	s3,s3,a4
- 626:	377d                	addiw	a4,a4,-1
- 628:	1702                	slli	a4,a4,0x20
- 62a:	9301                	srli	a4,a4,0x20
- 62c:	40e989b3          	sub	s3,s3,a4
+ 622:	02e05663          	blez	a4,64e <printint+0x94>
+ 626:	fc040913          	addi	s2,s0,-64
+ 62a:	993a                	add	s2,s2,a4
+ 62c:	19fd                	addi	s3,s3,-1
+ 62e:	99ba                	add	s3,s3,a4
+ 630:	377d                	addiw	a4,a4,-1
+ 632:	1702                	slli	a4,a4,0x20
+ 634:	9301                	srli	a4,a4,0x20
+ 636:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 630:	fff94583          	lbu	a1,-1(s2)
- 634:	8526                	mv	a0,s1
- 636:	00000097          	auipc	ra,0x0
- 63a:	f58080e7          	jalr	-168(ra) # 58e <putc>
+ 63a:	fff94583          	lbu	a1,-1(s2)
+ 63e:	8526                	mv	a0,s1
+ 640:	00000097          	auipc	ra,0x0
+ 644:	f58080e7          	jalr	-168(ra) # 598 <putc>
   while(--i >= 0)
- 63e:	197d                	addi	s2,s2,-1
- 640:	ff3918e3          	bne	s2,s3,630 <printint+0x80>
+ 648:	197d                	addi	s2,s2,-1
+ 64a:	ff3918e3          	bne	s2,s3,63a <printint+0x80>
 }
- 644:	70e2                	ld	ra,56(sp)
- 646:	7442                	ld	s0,48(sp)
- 648:	74a2                	ld	s1,40(sp)
- 64a:	7902                	ld	s2,32(sp)
- 64c:	69e2                	ld	s3,24(sp)
- 64e:	6121                	addi	sp,sp,64
- 650:	8082                	ret
+ 64e:	70e2                	ld	ra,56(sp)
+ 650:	7442                	ld	s0,48(sp)
+ 652:	74a2                	ld	s1,40(sp)
+ 654:	7902                	ld	s2,32(sp)
+ 656:	69e2                	ld	s3,24(sp)
+ 658:	6121                	addi	sp,sp,64
+ 65a:	8082                	ret
     x = -xx;
- 652:	40b005bb          	negw	a1,a1
+ 65c:	40b005bb          	negw	a1,a1
     neg = 1;
- 656:	4885                	li	a7,1
+ 660:	4885                	li	a7,1
     x = -xx;
- 658:	bf8d                	j	5ca <printint+0x1a>
+ 662:	bf8d                	j	5d4 <printint+0x1a>
 
-000000000000065a <vprintf>:
+0000000000000664 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 65a:	7119                	addi	sp,sp,-128
- 65c:	fc86                	sd	ra,120(sp)
- 65e:	f8a2                	sd	s0,112(sp)
- 660:	f4a6                	sd	s1,104(sp)
- 662:	f0ca                	sd	s2,96(sp)
- 664:	ecce                	sd	s3,88(sp)
- 666:	e8d2                	sd	s4,80(sp)
- 668:	e4d6                	sd	s5,72(sp)
- 66a:	e0da                	sd	s6,64(sp)
- 66c:	fc5e                	sd	s7,56(sp)
- 66e:	f862                	sd	s8,48(sp)
- 670:	f466                	sd	s9,40(sp)
- 672:	f06a                	sd	s10,32(sp)
- 674:	ec6e                	sd	s11,24(sp)
- 676:	0100                	addi	s0,sp,128
+ 664:	7119                	addi	sp,sp,-128
+ 666:	fc86                	sd	ra,120(sp)
+ 668:	f8a2                	sd	s0,112(sp)
+ 66a:	f4a6                	sd	s1,104(sp)
+ 66c:	f0ca                	sd	s2,96(sp)
+ 66e:	ecce                	sd	s3,88(sp)
+ 670:	e8d2                	sd	s4,80(sp)
+ 672:	e4d6                	sd	s5,72(sp)
+ 674:	e0da                	sd	s6,64(sp)
+ 676:	fc5e                	sd	s7,56(sp)
+ 678:	f862                	sd	s8,48(sp)
+ 67a:	f466                	sd	s9,40(sp)
+ 67c:	f06a                	sd	s10,32(sp)
+ 67e:	ec6e                	sd	s11,24(sp)
+ 680:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 678:	0005c903          	lbu	s2,0(a1)
- 67c:	18090f63          	beqz	s2,81a <vprintf+0x1c0>
- 680:	8aaa                	mv	s5,a0
- 682:	8b32                	mv	s6,a2
- 684:	00158493          	addi	s1,a1,1
+ 682:	0005c903          	lbu	s2,0(a1)
+ 686:	18090f63          	beqz	s2,824 <vprintf+0x1c0>
+ 68a:	8aaa                	mv	s5,a0
+ 68c:	8b32                	mv	s6,a2
+ 68e:	00158493          	addi	s1,a1,1
   state = 0;
- 688:	4981                	li	s3,0
+ 692:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 68a:	02500a13          	li	s4,37
- 68e:	4c55                	li	s8,21
- 690:	00000c97          	auipc	s9,0x0
- 694:	3e8c8c93          	addi	s9,s9,1000 # a78 <malloc+0x15a>
+ 694:	02500a13          	li	s4,37
+ 698:	4c55                	li	s8,21
+ 69a:	00000c97          	auipc	s9,0x0
+ 69e:	3eec8c93          	addi	s9,s9,1006 # a88 <malloc+0x160>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 698:	02800d93          	li	s11,40
+ 6a2:	02800d93          	li	s11,40
   putc(fd, 'x');
- 69c:	4d41                	li	s10,16
+ 6a6:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 69e:	00000b97          	auipc	s7,0x0
- 6a2:	432b8b93          	addi	s7,s7,1074 # ad0 <digits>
- 6a6:	a839                	j	6c4 <vprintf+0x6a>
+ 6a8:	00000b97          	auipc	s7,0x0
+ 6ac:	438b8b93          	addi	s7,s7,1080 # ae0 <digits>
+ 6b0:	a839                	j	6ce <vprintf+0x6a>
         putc(fd, c);
- 6a8:	85ca                	mv	a1,s2
- 6aa:	8556                	mv	a0,s5
- 6ac:	00000097          	auipc	ra,0x0
- 6b0:	ee2080e7          	jalr	-286(ra) # 58e <putc>
- 6b4:	a019                	j	6ba <vprintf+0x60>
+ 6b2:	85ca                	mv	a1,s2
+ 6b4:	8556                	mv	a0,s5
+ 6b6:	00000097          	auipc	ra,0x0
+ 6ba:	ee2080e7          	jalr	-286(ra) # 598 <putc>
+ 6be:	a019                	j	6c4 <vprintf+0x60>
     } else if(state == '%'){
- 6b6:	01498d63          	beq	s3,s4,6d0 <vprintf+0x76>
+ 6c0:	01498d63          	beq	s3,s4,6da <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 6ba:	0485                	addi	s1,s1,1
- 6bc:	fff4c903          	lbu	s2,-1(s1)
- 6c0:	14090d63          	beqz	s2,81a <vprintf+0x1c0>
+ 6c4:	0485                	addi	s1,s1,1
+ 6c6:	fff4c903          	lbu	s2,-1(s1)
+ 6ca:	14090d63          	beqz	s2,824 <vprintf+0x1c0>
     if(state == 0){
- 6c4:	fe0999e3          	bnez	s3,6b6 <vprintf+0x5c>
+ 6ce:	fe0999e3          	bnez	s3,6c0 <vprintf+0x5c>
       if(c == '%'){
- 6c8:	ff4910e3          	bne	s2,s4,6a8 <vprintf+0x4e>
+ 6d2:	ff4910e3          	bne	s2,s4,6b2 <vprintf+0x4e>
         state = '%';
- 6cc:	89d2                	mv	s3,s4
- 6ce:	b7f5                	j	6ba <vprintf+0x60>
+ 6d6:	89d2                	mv	s3,s4
+ 6d8:	b7f5                	j	6c4 <vprintf+0x60>
       if(c == 'd'){
- 6d0:	11490c63          	beq	s2,s4,7e8 <vprintf+0x18e>
- 6d4:	f9d9079b          	addiw	a5,s2,-99
- 6d8:	0ff7f793          	zext.b	a5,a5
- 6dc:	10fc6e63          	bltu	s8,a5,7f8 <vprintf+0x19e>
- 6e0:	f9d9079b          	addiw	a5,s2,-99
- 6e4:	0ff7f713          	zext.b	a4,a5
- 6e8:	10ec6863          	bltu	s8,a4,7f8 <vprintf+0x19e>
- 6ec:	00271793          	slli	a5,a4,0x2
- 6f0:	97e6                	add	a5,a5,s9
- 6f2:	439c                	lw	a5,0(a5)
- 6f4:	97e6                	add	a5,a5,s9
- 6f6:	8782                	jr	a5
+ 6da:	11490c63          	beq	s2,s4,7f2 <vprintf+0x18e>
+ 6de:	f9d9079b          	addiw	a5,s2,-99
+ 6e2:	0ff7f793          	zext.b	a5,a5
+ 6e6:	10fc6e63          	bltu	s8,a5,802 <vprintf+0x19e>
+ 6ea:	f9d9079b          	addiw	a5,s2,-99
+ 6ee:	0ff7f713          	zext.b	a4,a5
+ 6f2:	10ec6863          	bltu	s8,a4,802 <vprintf+0x19e>
+ 6f6:	00271793          	slli	a5,a4,0x2
+ 6fa:	97e6                	add	a5,a5,s9
+ 6fc:	439c                	lw	a5,0(a5)
+ 6fe:	97e6                	add	a5,a5,s9
+ 700:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 6f8:	008b0913          	addi	s2,s6,8
- 6fc:	4685                	li	a3,1
- 6fe:	4629                	li	a2,10
- 700:	000b2583          	lw	a1,0(s6)
- 704:	8556                	mv	a0,s5
- 706:	00000097          	auipc	ra,0x0
- 70a:	eaa080e7          	jalr	-342(ra) # 5b0 <printint>
- 70e:	8b4a                	mv	s6,s2
+ 702:	008b0913          	addi	s2,s6,8
+ 706:	4685                	li	a3,1
+ 708:	4629                	li	a2,10
+ 70a:	000b2583          	lw	a1,0(s6)
+ 70e:	8556                	mv	a0,s5
+ 710:	00000097          	auipc	ra,0x0
+ 714:	eaa080e7          	jalr	-342(ra) # 5ba <printint>
+ 718:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 710:	4981                	li	s3,0
- 712:	b765                	j	6ba <vprintf+0x60>
+ 71a:	4981                	li	s3,0
+ 71c:	b765                	j	6c4 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 714:	008b0913          	addi	s2,s6,8
- 718:	4681                	li	a3,0
- 71a:	4629                	li	a2,10
- 71c:	000b2583          	lw	a1,0(s6)
- 720:	8556                	mv	a0,s5
- 722:	00000097          	auipc	ra,0x0
- 726:	e8e080e7          	jalr	-370(ra) # 5b0 <printint>
- 72a:	8b4a                	mv	s6,s2
+ 71e:	008b0913          	addi	s2,s6,8
+ 722:	4681                	li	a3,0
+ 724:	4629                	li	a2,10
+ 726:	000b2583          	lw	a1,0(s6)
+ 72a:	8556                	mv	a0,s5
+ 72c:	00000097          	auipc	ra,0x0
+ 730:	e8e080e7          	jalr	-370(ra) # 5ba <printint>
+ 734:	8b4a                	mv	s6,s2
       state = 0;
- 72c:	4981                	li	s3,0
- 72e:	b771                	j	6ba <vprintf+0x60>
+ 736:	4981                	li	s3,0
+ 738:	b771                	j	6c4 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 730:	008b0913          	addi	s2,s6,8
- 734:	4681                	li	a3,0
- 736:	866a                	mv	a2,s10
- 738:	000b2583          	lw	a1,0(s6)
- 73c:	8556                	mv	a0,s5
- 73e:	00000097          	auipc	ra,0x0
- 742:	e72080e7          	jalr	-398(ra) # 5b0 <printint>
- 746:	8b4a                	mv	s6,s2
+ 73a:	008b0913          	addi	s2,s6,8
+ 73e:	4681                	li	a3,0
+ 740:	866a                	mv	a2,s10
+ 742:	000b2583          	lw	a1,0(s6)
+ 746:	8556                	mv	a0,s5
+ 748:	00000097          	auipc	ra,0x0
+ 74c:	e72080e7          	jalr	-398(ra) # 5ba <printint>
+ 750:	8b4a                	mv	s6,s2
       state = 0;
- 748:	4981                	li	s3,0
- 74a:	bf85                	j	6ba <vprintf+0x60>
+ 752:	4981                	li	s3,0
+ 754:	bf85                	j	6c4 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 74c:	008b0793          	addi	a5,s6,8
- 750:	f8f43423          	sd	a5,-120(s0)
- 754:	000b3983          	ld	s3,0(s6)
+ 756:	008b0793          	addi	a5,s6,8
+ 75a:	f8f43423          	sd	a5,-120(s0)
+ 75e:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 758:	03000593          	li	a1,48
- 75c:	8556                	mv	a0,s5
- 75e:	00000097          	auipc	ra,0x0
- 762:	e30080e7          	jalr	-464(ra) # 58e <putc>
+ 762:	03000593          	li	a1,48
+ 766:	8556                	mv	a0,s5
+ 768:	00000097          	auipc	ra,0x0
+ 76c:	e30080e7          	jalr	-464(ra) # 598 <putc>
   putc(fd, 'x');
- 766:	07800593          	li	a1,120
- 76a:	8556                	mv	a0,s5
- 76c:	00000097          	auipc	ra,0x0
- 770:	e22080e7          	jalr	-478(ra) # 58e <putc>
- 774:	896a                	mv	s2,s10
+ 770:	07800593          	li	a1,120
+ 774:	8556                	mv	a0,s5
+ 776:	00000097          	auipc	ra,0x0
+ 77a:	e22080e7          	jalr	-478(ra) # 598 <putc>
+ 77e:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 776:	03c9d793          	srli	a5,s3,0x3c
- 77a:	97de                	add	a5,a5,s7
- 77c:	0007c583          	lbu	a1,0(a5)
- 780:	8556                	mv	a0,s5
- 782:	00000097          	auipc	ra,0x0
- 786:	e0c080e7          	jalr	-500(ra) # 58e <putc>
+ 780:	03c9d793          	srli	a5,s3,0x3c
+ 784:	97de                	add	a5,a5,s7
+ 786:	0007c583          	lbu	a1,0(a5)
+ 78a:	8556                	mv	a0,s5
+ 78c:	00000097          	auipc	ra,0x0
+ 790:	e0c080e7          	jalr	-500(ra) # 598 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 78a:	0992                	slli	s3,s3,0x4
- 78c:	397d                	addiw	s2,s2,-1
- 78e:	fe0914e3          	bnez	s2,776 <vprintf+0x11c>
+ 794:	0992                	slli	s3,s3,0x4
+ 796:	397d                	addiw	s2,s2,-1
+ 798:	fe0914e3          	bnez	s2,780 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 792:	f8843b03          	ld	s6,-120(s0)
+ 79c:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 796:	4981                	li	s3,0
- 798:	b70d                	j	6ba <vprintf+0x60>
+ 7a0:	4981                	li	s3,0
+ 7a2:	b70d                	j	6c4 <vprintf+0x60>
         s = va_arg(ap, char*);
- 79a:	008b0913          	addi	s2,s6,8
- 79e:	000b3983          	ld	s3,0(s6)
+ 7a4:	008b0913          	addi	s2,s6,8
+ 7a8:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 7a2:	02098163          	beqz	s3,7c4 <vprintf+0x16a>
+ 7ac:	02098163          	beqz	s3,7ce <vprintf+0x16a>
         while(*s != 0){
- 7a6:	0009c583          	lbu	a1,0(s3)
- 7aa:	c5ad                	beqz	a1,814 <vprintf+0x1ba>
+ 7b0:	0009c583          	lbu	a1,0(s3)
+ 7b4:	c5ad                	beqz	a1,81e <vprintf+0x1ba>
           putc(fd, *s);
- 7ac:	8556                	mv	a0,s5
- 7ae:	00000097          	auipc	ra,0x0
- 7b2:	de0080e7          	jalr	-544(ra) # 58e <putc>
+ 7b6:	8556                	mv	a0,s5
+ 7b8:	00000097          	auipc	ra,0x0
+ 7bc:	de0080e7          	jalr	-544(ra) # 598 <putc>
           s++;
- 7b6:	0985                	addi	s3,s3,1
+ 7c0:	0985                	addi	s3,s3,1
         while(*s != 0){
- 7b8:	0009c583          	lbu	a1,0(s3)
- 7bc:	f9e5                	bnez	a1,7ac <vprintf+0x152>
+ 7c2:	0009c583          	lbu	a1,0(s3)
+ 7c6:	f9e5                	bnez	a1,7b6 <vprintf+0x152>
         s = va_arg(ap, char*);
- 7be:	8b4a                	mv	s6,s2
+ 7c8:	8b4a                	mv	s6,s2
       state = 0;
- 7c0:	4981                	li	s3,0
- 7c2:	bde5                	j	6ba <vprintf+0x60>
+ 7ca:	4981                	li	s3,0
+ 7cc:	bde5                	j	6c4 <vprintf+0x60>
           s = "(null)";
- 7c4:	00000997          	auipc	s3,0x0
- 7c8:	2ac98993          	addi	s3,s3,684 # a70 <malloc+0x152>
+ 7ce:	00000997          	auipc	s3,0x0
+ 7d2:	2b298993          	addi	s3,s3,690 # a80 <malloc+0x158>
         while(*s != 0){
- 7cc:	85ee                	mv	a1,s11
- 7ce:	bff9                	j	7ac <vprintf+0x152>
+ 7d6:	85ee                	mv	a1,s11
+ 7d8:	bff9                	j	7b6 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 7d0:	008b0913          	addi	s2,s6,8
- 7d4:	000b4583          	lbu	a1,0(s6)
- 7d8:	8556                	mv	a0,s5
- 7da:	00000097          	auipc	ra,0x0
- 7de:	db4080e7          	jalr	-588(ra) # 58e <putc>
- 7e2:	8b4a                	mv	s6,s2
+ 7da:	008b0913          	addi	s2,s6,8
+ 7de:	000b4583          	lbu	a1,0(s6)
+ 7e2:	8556                	mv	a0,s5
+ 7e4:	00000097          	auipc	ra,0x0
+ 7e8:	db4080e7          	jalr	-588(ra) # 598 <putc>
+ 7ec:	8b4a                	mv	s6,s2
       state = 0;
- 7e4:	4981                	li	s3,0
- 7e6:	bdd1                	j	6ba <vprintf+0x60>
+ 7ee:	4981                	li	s3,0
+ 7f0:	bdd1                	j	6c4 <vprintf+0x60>
         putc(fd, c);
- 7e8:	85d2                	mv	a1,s4
- 7ea:	8556                	mv	a0,s5
- 7ec:	00000097          	auipc	ra,0x0
- 7f0:	da2080e7          	jalr	-606(ra) # 58e <putc>
+ 7f2:	85d2                	mv	a1,s4
+ 7f4:	8556                	mv	a0,s5
+ 7f6:	00000097          	auipc	ra,0x0
+ 7fa:	da2080e7          	jalr	-606(ra) # 598 <putc>
       state = 0;
- 7f4:	4981                	li	s3,0
- 7f6:	b5d1                	j	6ba <vprintf+0x60>
+ 7fe:	4981                	li	s3,0
+ 800:	b5d1                	j	6c4 <vprintf+0x60>
         putc(fd, '%');
- 7f8:	85d2                	mv	a1,s4
- 7fa:	8556                	mv	a0,s5
- 7fc:	00000097          	auipc	ra,0x0
- 800:	d92080e7          	jalr	-622(ra) # 58e <putc>
+ 802:	85d2                	mv	a1,s4
+ 804:	8556                	mv	a0,s5
+ 806:	00000097          	auipc	ra,0x0
+ 80a:	d92080e7          	jalr	-622(ra) # 598 <putc>
         putc(fd, c);
- 804:	85ca                	mv	a1,s2
- 806:	8556                	mv	a0,s5
- 808:	00000097          	auipc	ra,0x0
- 80c:	d86080e7          	jalr	-634(ra) # 58e <putc>
+ 80e:	85ca                	mv	a1,s2
+ 810:	8556                	mv	a0,s5
+ 812:	00000097          	auipc	ra,0x0
+ 816:	d86080e7          	jalr	-634(ra) # 598 <putc>
       state = 0;
- 810:	4981                	li	s3,0
- 812:	b565                	j	6ba <vprintf+0x60>
+ 81a:	4981                	li	s3,0
+ 81c:	b565                	j	6c4 <vprintf+0x60>
         s = va_arg(ap, char*);
- 814:	8b4a                	mv	s6,s2
+ 81e:	8b4a                	mv	s6,s2
       state = 0;
- 816:	4981                	li	s3,0
- 818:	b54d                	j	6ba <vprintf+0x60>
+ 820:	4981                	li	s3,0
+ 822:	b54d                	j	6c4 <vprintf+0x60>
     }
   }
 }
- 81a:	70e6                	ld	ra,120(sp)
- 81c:	7446                	ld	s0,112(sp)
- 81e:	74a6                	ld	s1,104(sp)
- 820:	7906                	ld	s2,96(sp)
- 822:	69e6                	ld	s3,88(sp)
- 824:	6a46                	ld	s4,80(sp)
- 826:	6aa6                	ld	s5,72(sp)
- 828:	6b06                	ld	s6,64(sp)
- 82a:	7be2                	ld	s7,56(sp)
- 82c:	7c42                	ld	s8,48(sp)
- 82e:	7ca2                	ld	s9,40(sp)
- 830:	7d02                	ld	s10,32(sp)
- 832:	6de2                	ld	s11,24(sp)
- 834:	6109                	addi	sp,sp,128
- 836:	8082                	ret
-
-0000000000000838 <fprintf>:
+ 824:	70e6                	ld	ra,120(sp)
+ 826:	7446                	ld	s0,112(sp)
+ 828:	74a6                	ld	s1,104(sp)
+ 82a:	7906                	ld	s2,96(sp)
+ 82c:	69e6                	ld	s3,88(sp)
+ 82e:	6a46                	ld	s4,80(sp)
+ 830:	6aa6                	ld	s5,72(sp)
+ 832:	6b06                	ld	s6,64(sp)
+ 834:	7be2                	ld	s7,56(sp)
+ 836:	7c42                	ld	s8,48(sp)
+ 838:	7ca2                	ld	s9,40(sp)
+ 83a:	7d02                	ld	s10,32(sp)
+ 83c:	6de2                	ld	s11,24(sp)
+ 83e:	6109                	addi	sp,sp,128
+ 840:	8082                	ret
+
+0000000000000842 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 838:	715d                	addi	sp,sp,-80
- 83a:	ec06                	sd	ra,24(sp)
- 83c:	e822                	sd	s0,16(sp)
- 83e:	1000                	addi	s0,sp,32
- 840:	e010                	sd	a2,0(s0)
- 842:	e414                	sd	a3,8(s0)
- 844:	e818                	sd	a4,16(s0)
- 846:	ec1c                	sd	a5,24(s0)
- 848:	03043023          	sd	a6,32(s0)
- 84c:	03143423          	sd	a7,40(s0)
+ 842:	715d                	addi	sp,sp,-80
+ 844:	ec06                	sd	ra,24(sp)
+ 846:	e822                	sd	s0,16(sp)
+ 848:	1000                	addi	s0,sp,32
+ 84a:	e010                	sd	a2,0(s0)
+ 84c:	e414                	sd	a3,8(s0)
+ 84e:	e818                	sd	a4,16(s0)
+ 850:	ec1c                	sd	a5,24(s0)
+ 852:	03043023          	sd	a6,32(s0)
+ 856:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 850:	8622                	mv	a2,s0
- 852:	fe843423          	sd	s0,-24(s0)
+ 85a:	8622                	mv	a2,s0
+ 85c:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 856:	00000097          	auipc	ra,0x0
- 85a:	e04080e7          	jalr	-508(ra) # 65a <vprintf>
+ 860:	00000097          	auipc	ra,0x0
+ 864:	e04080e7          	jalr	-508(ra) # 664 <vprintf>
 }
- 85e:	60e2                	ld	ra,24(sp)
- 860:	6442                	ld	s0,16(sp)
- 862:	6161                	addi	sp,sp,80
- 864:	8082                	ret
+ 868:	60e2                	ld	ra,24(sp)
+ 86a:	6442                	ld	s0,16(sp)
+ 86c:	6161                	addi	sp,sp,80
+ 86e:	8082                	ret
 
-0000000000000866 <printf>:
+0000000000000870 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 866:	711d                	addi	sp,sp,-96
- 868:	ec06                	sd	ra,24(sp)
- 86a:	e822                	sd	s0,16(sp)
- 86c:	1000                	addi	s0,sp,32
- 86e:	e40c                	sd	a1,8(s0)
- 870:	e810                	sd	a2,16(s0)
- 872:	ec14                	sd	a3,24(s0)
- 874:	f018                	sd	a4,32(s0)
- 876:	f41c                	sd	a5,40(s0)
- 878:	03043823          	sd	a6,48(s0)
- 87c:	03143c23          	sd	a7,56(s0)
+ 870:	711d                	addi	sp,sp,-96
+ 872:	ec06                	sd	ra,24(sp)
+ 874:	e822                	sd	s0,16(sp)
+ 876:	1000                	addi	s0,sp,32
+ 878:	e40c                	sd	a1,8(s0)
+ 87a:	e810                	sd	a2,16(s0)
+ 87c:	ec14                	sd	a3,24(s0)
+ 87e:	f018                	sd	a4,32(s0)
+ 880:	f41c                	sd	a5,40(s0)
+ 882:	03043823          	sd	a6,48(s0)
+ 886:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 880:	00840613          	addi	a2,s0,8
- 884:	fec43423          	sd	a2,-24(s0)
+ 88a:	00840613          	addi	a2,s0,8
+ 88e:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 888:	85aa                	mv	a1,a0
- 88a:	4505                	li	a0,1
- 88c:	00000097          	auipc	ra,0x0
- 890:	dce080e7          	jalr	-562(ra) # 65a <vprintf>
+ 892:	85aa                	mv	a1,a0
+ 894:	4505                	li	a0,1
+ 896:	00000097          	auipc	ra,0x0
+ 89a:	dce080e7          	jalr	-562(ra) # 664 <vprintf>
 }
- 894:	60e2                	ld	ra,24(sp)
- 896:	6442                	ld	s0,16(sp)
- 898:	6125                	addi	sp,sp,96
- 89a:	8082                	ret
+ 89e:	60e2                	ld	ra,24(sp)
+ 8a0:	6442                	ld	s0,16(sp)
+ 8a2:	6125                	addi	sp,sp,96
+ 8a4:	8082                	ret
 
-000000000000089c <free>:
+00000000000008a6 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 89c:	1141                	addi	sp,sp,-16
- 89e:	e422                	sd	s0,8(sp)
- 8a0:	0800                	addi	s0,sp,16
+ 8a6:	1141                	addi	sp,sp,-16
+ 8a8:	e422                	sd	s0,8(sp)
+ 8aa:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 8a2:	ff050693          	addi	a3,a0,-16
+ 8ac:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 8a6:	00000797          	auipc	a5,0x0
- 8aa:	26a7b783          	ld	a5,618(a5) # b10 <freep>
- 8ae:	a02d                	j	8d8 <free+0x3c>
+ 8b0:	00000797          	auipc	a5,0x0
+ 8b4:	2707b783          	ld	a5,624(a5) # b20 <freep>
+ 8b8:	a02d                	j	8e2 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 8b0:	4618                	lw	a4,8(a2)
- 8b2:	9f2d                	addw	a4,a4,a1
- 8b4:	fee52c23          	sw	a4,-8(a0)
+ 8ba:	4618                	lw	a4,8(a2)
+ 8bc:	9f2d                	addw	a4,a4,a1
+ 8be:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 8b8:	6398                	ld	a4,0(a5)
- 8ba:	6310                	ld	a2,0(a4)
- 8bc:	a83d                	j	8fa <free+0x5e>
+ 8c2:	6398                	ld	a4,0(a5)
+ 8c4:	6310                	ld	a2,0(a4)
+ 8c6:	a83d                	j	904 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 8be:	ff852703          	lw	a4,-8(a0)
- 8c2:	9f31                	addw	a4,a4,a2
- 8c4:	c798                	sw	a4,8(a5)
+ 8c8:	ff852703          	lw	a4,-8(a0)
+ 8cc:	9f31                	addw	a4,a4,a2
+ 8ce:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 8c6:	ff053683          	ld	a3,-16(a0)
- 8ca:	a091                	j	90e <free+0x72>
+ 8d0:	ff053683          	ld	a3,-16(a0)
+ 8d4:	a091                	j	918 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 8cc:	6398                	ld	a4,0(a5)
- 8ce:	00e7e463          	bltu	a5,a4,8d6 <free+0x3a>
- 8d2:	00e6ea63          	bltu	a3,a4,8e6 <free+0x4a>
+ 8d6:	6398                	ld	a4,0(a5)
+ 8d8:	00e7e463          	bltu	a5,a4,8e0 <free+0x3a>
+ 8dc:	00e6ea63          	bltu	a3,a4,8f0 <free+0x4a>
 {
- 8d6:	87ba                	mv	a5,a4
+ 8e0:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 8d8:	fed7fae3          	bgeu	a5,a3,8cc <free+0x30>
- 8dc:	6398                	ld	a4,0(a5)
- 8de:	00e6e463          	bltu	a3,a4,8e6 <free+0x4a>
+ 8e2:	fed7fae3          	bgeu	a5,a3,8d6 <free+0x30>
+ 8e6:	6398                	ld	a4,0(a5)
+ 8e8:	00e6e463          	bltu	a3,a4,8f0 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 8e2:	fee7eae3          	bltu	a5,a4,8d6 <free+0x3a>
+ 8ec:	fee7eae3          	bltu	a5,a4,8e0 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 8e6:	ff852583          	lw	a1,-8(a0)
- 8ea:	6390                	ld	a2,0(a5)
- 8ec:	02059813          	slli	a6,a1,0x20
- 8f0:	01c85713          	srli	a4,a6,0x1c
- 8f4:	9736                	add	a4,a4,a3
- 8f6:	fae60de3          	beq	a2,a4,8b0 <free+0x14>
+ 8f0:	ff852583          	lw	a1,-8(a0)
+ 8f4:	6390                	ld	a2,0(a5)
+ 8f6:	02059813          	slli	a6,a1,0x20
+ 8fa:	01c85713          	srli	a4,a6,0x1c
+ 8fe:	9736                	add	a4,a4,a3
+ 900:	fae60de3          	beq	a2,a4,8ba <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 8fa:	fec53823          	sd	a2,-16(a0)
+ 904:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 8fe:	4790                	lw	a2,8(a5)
- 900:	02061593          	slli	a1,a2,0x20
- 904:	01c5d713          	srli	a4,a1,0x1c
- 908:	973e                	add	a4,a4,a5
- 90a:	fae68ae3          	beq	a3,a4,8be <free+0x22>
+ 908:	4790                	lw	a2,8(a5)
+ 90a:	02061593          	slli	a1,a2,0x20
+ 90e:	01c5d713          	srli	a4,a1,0x1c
+ 912:	973e                	add	a4,a4,a5
+ 914:	fae68ae3          	beq	a3,a4,8c8 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 90e:	e394                	sd	a3,0(a5)
+ 918:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 910:	00000717          	auipc	a4,0x0
- 914:	20f73023          	sd	a5,512(a4) # b10 <freep>
+ 91a:	00000717          	auipc	a4,0x0
+ 91e:	20f73323          	sd	a5,518(a4) # b20 <freep>
 }
- 918:	6422                	ld	s0,8(sp)
- 91a:	0141                	addi	sp,sp,16
- 91c:	8082                	ret
+ 922:	6422                	ld	s0,8(sp)
+ 924:	0141                	addi	sp,sp,16
+ 926:	8082                	ret
 
-000000000000091e <malloc>:
+0000000000000928 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 91e:	7139                	addi	sp,sp,-64
- 920:	fc06                	sd	ra,56(sp)
- 922:	f822                	sd	s0,48(sp)
- 924:	f426                	sd	s1,40(sp)
- 926:	f04a                	sd	s2,32(sp)
- 928:	ec4e                	sd	s3,24(sp)
- 92a:	e852                	sd	s4,16(sp)
- 92c:	e456                	sd	s5,8(sp)
- 92e:	e05a                	sd	s6,0(sp)
- 930:	0080                	addi	s0,sp,64
+ 928:	7139                	addi	sp,sp,-64
+ 92a:	fc06                	sd	ra,56(sp)
+ 92c:	f822                	sd	s0,48(sp)
+ 92e:	f426                	sd	s1,40(sp)
+ 930:	f04a                	sd	s2,32(sp)
+ 932:	ec4e                	sd	s3,24(sp)
+ 934:	e852                	sd	s4,16(sp)
+ 936:	e456                	sd	s5,8(sp)
+ 938:	e05a                	sd	s6,0(sp)
+ 93a:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 932:	02051493          	slli	s1,a0,0x20
- 936:	9081                	srli	s1,s1,0x20
- 938:	04bd                	addi	s1,s1,15
- 93a:	8091                	srli	s1,s1,0x4
- 93c:	00148a1b          	addiw	s4,s1,1
- 940:	0485                	addi	s1,s1,1
+ 93c:	02051493          	slli	s1,a0,0x20
+ 940:	9081                	srli	s1,s1,0x20
+ 942:	04bd                	addi	s1,s1,15
+ 944:	8091                	srli	s1,s1,0x4
+ 946:	00148a1b          	addiw	s4,s1,1
+ 94a:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 942:	00000517          	auipc	a0,0x0
- 946:	1ce53503          	ld	a0,462(a0) # b10 <freep>
- 94a:	c515                	beqz	a0,976 <malloc+0x58>
+ 94c:	00000517          	auipc	a0,0x0
+ 950:	1d453503          	ld	a0,468(a0) # b20 <freep>
+ 954:	c515                	beqz	a0,980 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 94c:	611c                	ld	a5,0(a0)
+ 956:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 94e:	4798                	lw	a4,8(a5)
- 950:	04977163          	bgeu	a4,s1,992 <malloc+0x74>
- 954:	89d2                	mv	s3,s4
- 956:	000a071b          	sext.w	a4,s4
- 95a:	6685                	lui	a3,0x1
- 95c:	00d77363          	bgeu	a4,a3,962 <malloc+0x44>
- 960:	6985                	lui	s3,0x1
- 962:	00098b1b          	sext.w	s6,s3
+ 958:	4798                	lw	a4,8(a5)
+ 95a:	04977163          	bgeu	a4,s1,99c <malloc+0x74>
+ 95e:	89d2                	mv	s3,s4
+ 960:	000a071b          	sext.w	a4,s4
+ 964:	6685                	lui	a3,0x1
+ 966:	00d77363          	bgeu	a4,a3,96c <malloc+0x44>
+ 96a:	6985                	lui	s3,0x1
+ 96c:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 966:	0049999b          	slliw	s3,s3,0x4
+ 970:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 96a:	00000917          	auipc	s2,0x0
- 96e:	1a690913          	addi	s2,s2,422 # b10 <freep>
+ 974:	00000917          	auipc	s2,0x0
+ 978:	1ac90913          	addi	s2,s2,428 # b20 <freep>
   if(p == (char*)-1)
- 972:	5afd                	li	s5,-1
- 974:	a8a5                	j	9ec <malloc+0xce>
+ 97c:	5afd                	li	s5,-1
+ 97e:	a8a5                	j	9f6 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 976:	00000797          	auipc	a5,0x0
- 97a:	19a78793          	addi	a5,a5,410 # b10 <freep>
- 97e:	00000717          	auipc	a4,0x0
- 982:	19a70713          	addi	a4,a4,410 # b18 <base>
- 986:	e398                	sd	a4,0(a5)
- 988:	e798                	sd	a4,8(a5)
+ 980:	00000797          	auipc	a5,0x0
+ 984:	1a078793          	addi	a5,a5,416 # b20 <freep>
+ 988:	00000717          	auipc	a4,0x0
+ 98c:	1a070713          	addi	a4,a4,416 # b28 <base>
+ 990:	e398                	sd	a4,0(a5)
+ 992:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 98a:	0007a823          	sw	zero,16(a5)
+ 994:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 98e:	87ba                	mv	a5,a4
- 990:	b7d1                	j	954 <malloc+0x36>
+ 998:	87ba                	mv	a5,a4
+ 99a:	b7d1                	j	95e <malloc+0x36>
       if(p->s.size == nunits)
- 992:	02e48c63          	beq	s1,a4,9ca <malloc+0xac>
+ 99c:	02e48c63          	beq	s1,a4,9d4 <malloc+0xac>
         p->s.size -= nunits;
- 996:	4147073b          	subw	a4,a4,s4
- 99a:	c798                	sw	a4,8(a5)
+ 9a0:	4147073b          	subw	a4,a4,s4
+ 9a4:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 99c:	02071693          	slli	a3,a4,0x20
- 9a0:	01c6d713          	srli	a4,a3,0x1c
- 9a4:	97ba                	add	a5,a5,a4
+ 9a6:	02071693          	slli	a3,a4,0x20
+ 9aa:	01c6d713          	srli	a4,a3,0x1c
+ 9ae:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 9a6:	0147a423          	sw	s4,8(a5)
+ 9b0:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 9aa:	00000717          	auipc	a4,0x0
- 9ae:	16a73323          	sd	a0,358(a4) # b10 <freep>
+ 9b4:	00000717          	auipc	a4,0x0
+ 9b8:	16a73623          	sd	a0,364(a4) # b20 <freep>
       return (void*)(p + 1);
- 9b2:	01078513          	addi	a0,a5,16
+ 9bc:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 9b6:	70e2                	ld	ra,56(sp)
- 9b8:	7442                	ld	s0,48(sp)
- 9ba:	74a2                	ld	s1,40(sp)
- 9bc:	7902                	ld	s2,32(sp)
- 9be:	69e2                	ld	s3,24(sp)
- 9c0:	6a42                	ld	s4,16(sp)
- 9c2:	6aa2                	ld	s5,8(sp)
- 9c4:	6b02                	ld	s6,0(sp)
- 9c6:	6121                	addi	sp,sp,64
- 9c8:	8082                	ret
+ 9c0:	70e2                	ld	ra,56(sp)
+ 9c2:	7442                	ld	s0,48(sp)
+ 9c4:	74a2                	ld	s1,40(sp)
+ 9c6:	7902                	ld	s2,32(sp)
+ 9c8:	69e2                	ld	s3,24(sp)
+ 9ca:	6a42                	ld	s4,16(sp)
+ 9cc:	6aa2                	ld	s5,8(sp)
+ 9ce:	6b02                	ld	s6,0(sp)
+ 9d0:	6121                	addi	sp,sp,64
+ 9d2:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 9ca:	6398                	ld	a4,0(a5)
- 9cc:	e118                	sd	a4,0(a0)
- 9ce:	bff1                	j	9aa <malloc+0x8c>
+ 9d4:	6398                	ld	a4,0(a5)
+ 9d6:	e118                	sd	a4,0(a0)
+ 9d8:	bff1                	j	9b4 <malloc+0x8c>
   hp->s.size = nu;
- 9d0:	01652423          	sw	s6,8(a0)
+ 9da:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 9d4:	0541                	addi	a0,a0,16
- 9d6:	00000097          	auipc	ra,0x0
- 9da:	ec6080e7          	jalr	-314(ra) # 89c <free>
+ 9de:	0541                	addi	a0,a0,16
+ 9e0:	00000097          	auipc	ra,0x0
+ 9e4:	ec6080e7          	jalr	-314(ra) # 8a6 <free>
   return freep;
- 9de:	00093503          	ld	a0,0(s2)
+ 9e8:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 9e2:	d971                	beqz	a0,9b6 <malloc+0x98>
+ 9ec:	d971                	beqz	a0,9c0 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 9e4:	611c                	ld	a5,0(a0)
+ 9ee:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 9e6:	4798                	lw	a4,8(a5)
- 9e8:	fa9775e3          	bgeu	a4,s1,992 <malloc+0x74>
+ 9f0:	4798                	lw	a4,8(a5)
+ 9f2:	fa9775e3          	bgeu	a4,s1,99c <malloc+0x74>
     if(p == freep)
- 9ec:	00093703          	ld	a4,0(s2)
- 9f0:	853e                	mv	a0,a5
- 9f2:	fef719e3          	bne	a4,a5,9e4 <malloc+0xc6>
+ 9f6:	00093703          	ld	a4,0(s2)
+ 9fa:	853e                	mv	a0,a5
+ 9fc:	fef719e3          	bne	a4,a5,9ee <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 9f6:	854e                	mv	a0,s3
- 9f8:	00000097          	auipc	ra,0x0
- 9fc:	b2a080e7          	jalr	-1238(ra) # 522 <sbrk>
+ a00:	854e                	mv	a0,s3
+ a02:	00000097          	auipc	ra,0x0
+ a06:	b20080e7          	jalr	-1248(ra) # 522 <sbrk>
   if(p == (char*)-1)
- a00:	fd5518e3          	bne	a0,s5,9d0 <malloc+0xb2>
+ a0a:	fd5518e3          	bne	a0,s5,9da <malloc+0xb2>
         return 0;
- a04:	4501                	li	a0,0
- a06:	bf45                	j	9b6 <malloc+0x98>
+ a0e:	4501                	li	a0,0
+ a10:	bf45                	j	9c0 <malloc+0x98>
diff --git a/xv6-user/ls.sym b/xv6-user/ls.sym
index a2e3fa9..ad46930 100644
--- a/xv6-user/ls.sym
+++ b/xv6-user/ls.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-0000000000000a08 .rodata
-0000000000000ae8 .bss
+0000000000000a18 .rodata
+0000000000000af8 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -13,28 +13,29 @@
 0000000000000000 .debug_loclists
 0000000000000000 .debug_rnglists
 0000000000000000 ls.c
-0000000000000ae8 buf.0
+0000000000000af8 buf.0
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-000000000000058e putc
-00000000000005b0 printint
-0000000000000ad0 digits
+0000000000000598 putc
+00000000000005ba printint
+0000000000000ae0 digits
 0000000000000000 umalloc.c
-0000000000000b10 freep
-0000000000000b18 base
+0000000000000b20 freep
+0000000000000b28 base
 00000000000001e6 strcpy
 0000000000000000 fmtname
-0000000000000866 printf
-00000000000012e1 __global_pointer$
+0000000000000870 printf
+00000000000012f1 __global_pointer$
 0000000000000542 dev
 00000000000003ec memmove
+000000000000058e times
 0000000000000562 trace
 00000000000002cc gets
-0000000000000ae1 __SDATA_BEGIN__
+0000000000000af1 __SDATA_BEGIN__
 0000000000000518 getpid
 000000000000047e memcpy
-000000000000091e malloc
+0000000000000928 malloc
 000000000000055a remove
 000000000000052a sleep
 000000000000056a sysinfo
@@ -44,31 +45,31 @@
 0000000000000572 rename
 00000000000004c4 write
 00000000000004f2 fstat
-0000000000000838 fprintf
+0000000000000842 fprintf
 00000000000004d8 kill
 0000000000000202 strcat
-000000000000065a vprintf
+0000000000000664 vprintf
 0000000000000506 chdir
 00000000000004e0 exec
 00000000000004a8 wait
 00000000000004ba read
 0000000000000444 memcmp
 0000000000000496 fork
-0000000000000b28 __BSS_END__
+0000000000000b38 __BSS_END__
 0000000000000522 sbrk
 000000000000053a test_proc
 0000000000000532 uptime
-0000000000000ae1 __bss_start
+0000000000000af1 __bss_start
 0000000000000286 memset
 000000000000018c main
 0000000000000230 strcmp
 000000000000057a shutdown
 0000000000000510 dup
 0000000000000552 getcwd
-0000000000000ae1 __DATA_BEGIN__
+0000000000000af1 __DATA_BEGIN__
 0000000000000346 stat
-0000000000000ae1 _edata
-0000000000000b28 _end
+0000000000000af1 _edata
+0000000000000b38 _end
 0000000000000066 ls
 000000000000049e exit
 000000000000038c atoi
@@ -77,4 +78,4 @@
 00000000000002a8 strchr
 00000000000004fc mkdir
 00000000000004ce close
-000000000000089c free
+00000000000008a6 free
diff --git a/xv6-user/mkdir.asm b/xv6-user/mkdir.asm
index 17744ba..6e676cb 100644
--- a/xv6-user/mkdir.asm
+++ b/xv6-user/mkdir.asm
@@ -45,10 +45,10 @@ main(int argc, char *argv[])
   3c:	a80d                	j	6e <main+0x6e>
     fprintf(2, "Usage: mkdir files...\n");
   3e:	00001597          	auipc	a1,0x1
-  42:	86258593          	addi	a1,a1,-1950 # 8a0 <malloc+0xf0>
+  42:	86a58593          	addi	a1,a1,-1942 # 8a8 <malloc+0xee>
   46:	4509                	li	a0,2
   48:	00000097          	auipc	ra,0x0
-  4c:	682080e7          	jalr	1666(ra) # 6ca <fprintf>
+  4c:	68c080e7          	jalr	1676(ra) # 6d4 <fprintf>
     exit(1);
   50:	4505                	li	a0,1
   52:	00000097          	auipc	ra,0x0
@@ -56,10 +56,10 @@ main(int argc, char *argv[])
       fprintf(2, "mkdir: %s failed to create\n", argv[i]);
   5a:	6090                	ld	a2,0(s1)
   5c:	00001597          	auipc	a1,0x1
-  60:	85c58593          	addi	a1,a1,-1956 # 8b8 <malloc+0x108>
+  60:	86458593          	addi	a1,a1,-1948 # 8c0 <malloc+0x106>
   64:	4509                	li	a0,2
   66:	00000097          	auipc	ra,0x0
-  6a:	664080e7          	jalr	1636(ra) # 6ca <fprintf>
+  6a:	66e080e7          	jalr	1646(ra) # 6d4 <fprintf>
       break;
     }
   }
@@ -825,637 +825,647 @@ uname:
  ret
  41e:	8082                	ret
 
-0000000000000420 <putc>:
+0000000000000420 <times>:
+.global times
+times:
+ li a7, SYS_times
+ 420:	09900893          	li	a7,153
+ ecall
+ 424:	00000073          	ecall
+ ret
+ 428:	8082                	ret
+
+000000000000042a <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 420:	1101                	addi	sp,sp,-32
- 422:	ec06                	sd	ra,24(sp)
- 424:	e822                	sd	s0,16(sp)
- 426:	1000                	addi	s0,sp,32
- 428:	feb407a3          	sb	a1,-17(s0)
+ 42a:	1101                	addi	sp,sp,-32
+ 42c:	ec06                	sd	ra,24(sp)
+ 42e:	e822                	sd	s0,16(sp)
+ 430:	1000                	addi	s0,sp,32
+ 432:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 42c:	4605                	li	a2,1
- 42e:	fef40593          	addi	a1,s0,-17
- 432:	00000097          	auipc	ra,0x0
- 436:	f24080e7          	jalr	-220(ra) # 356 <write>
+ 436:	4605                	li	a2,1
+ 438:	fef40593          	addi	a1,s0,-17
+ 43c:	00000097          	auipc	ra,0x0
+ 440:	f1a080e7          	jalr	-230(ra) # 356 <write>
 }
- 43a:	60e2                	ld	ra,24(sp)
- 43c:	6442                	ld	s0,16(sp)
- 43e:	6105                	addi	sp,sp,32
- 440:	8082                	ret
+ 444:	60e2                	ld	ra,24(sp)
+ 446:	6442                	ld	s0,16(sp)
+ 448:	6105                	addi	sp,sp,32
+ 44a:	8082                	ret
 
-0000000000000442 <printint>:
+000000000000044c <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 442:	7139                	addi	sp,sp,-64
- 444:	fc06                	sd	ra,56(sp)
- 446:	f822                	sd	s0,48(sp)
- 448:	f426                	sd	s1,40(sp)
- 44a:	f04a                	sd	s2,32(sp)
- 44c:	ec4e                	sd	s3,24(sp)
- 44e:	0080                	addi	s0,sp,64
- 450:	84aa                	mv	s1,a0
+ 44c:	7139                	addi	sp,sp,-64
+ 44e:	fc06                	sd	ra,56(sp)
+ 450:	f822                	sd	s0,48(sp)
+ 452:	f426                	sd	s1,40(sp)
+ 454:	f04a                	sd	s2,32(sp)
+ 456:	ec4e                	sd	s3,24(sp)
+ 458:	0080                	addi	s0,sp,64
+ 45a:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 452:	c299                	beqz	a3,458 <printint+0x16>
- 454:	0805c863          	bltz	a1,4e4 <printint+0xa2>
+ 45c:	c299                	beqz	a3,462 <printint+0x16>
+ 45e:	0805c863          	bltz	a1,4ee <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 458:	2581                	sext.w	a1,a1
+ 462:	2581                	sext.w	a1,a1
   neg = 0;
- 45a:	4881                	li	a7,0
+ 464:	4881                	li	a7,0
   }
 
   i = 0;
- 45c:	fc040993          	addi	s3,s0,-64
+ 466:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 460:	86ce                	mv	a3,s3
+ 46a:	86ce                	mv	a3,s3
   i = 0;
- 462:	4701                	li	a4,0
+ 46c:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 464:	2601                	sext.w	a2,a2
- 466:	00000517          	auipc	a0,0x0
- 46a:	4d250513          	addi	a0,a0,1234 # 938 <digits>
- 46e:	883a                	mv	a6,a4
- 470:	2705                	addiw	a4,a4,1
- 472:	02c5f7bb          	remuw	a5,a1,a2
- 476:	1782                	slli	a5,a5,0x20
- 478:	9381                	srli	a5,a5,0x20
- 47a:	97aa                	add	a5,a5,a0
- 47c:	0007c783          	lbu	a5,0(a5)
- 480:	00f68023          	sb	a5,0(a3)
+ 46e:	2601                	sext.w	a2,a2
+ 470:	00000517          	auipc	a0,0x0
+ 474:	4d050513          	addi	a0,a0,1232 # 940 <digits>
+ 478:	883a                	mv	a6,a4
+ 47a:	2705                	addiw	a4,a4,1
+ 47c:	02c5f7bb          	remuw	a5,a1,a2
+ 480:	1782                	slli	a5,a5,0x20
+ 482:	9381                	srli	a5,a5,0x20
+ 484:	97aa                	add	a5,a5,a0
+ 486:	0007c783          	lbu	a5,0(a5)
+ 48a:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 484:	0005879b          	sext.w	a5,a1
- 488:	02c5d5bb          	divuw	a1,a1,a2
- 48c:	0685                	addi	a3,a3,1
- 48e:	fec7f0e3          	bgeu	a5,a2,46e <printint+0x2c>
+ 48e:	0005879b          	sext.w	a5,a1
+ 492:	02c5d5bb          	divuw	a1,a1,a2
+ 496:	0685                	addi	a3,a3,1
+ 498:	fec7f0e3          	bgeu	a5,a2,478 <printint+0x2c>
   if(neg)
- 492:	00088c63          	beqz	a7,4aa <printint+0x68>
+ 49c:	00088c63          	beqz	a7,4b4 <printint+0x68>
     buf[i++] = '-';
- 496:	fd070793          	addi	a5,a4,-48
- 49a:	00878733          	add	a4,a5,s0
- 49e:	02d00793          	li	a5,45
- 4a2:	fef70823          	sb	a5,-16(a4)
- 4a6:	0028071b          	addiw	a4,a6,2
+ 4a0:	fd070793          	addi	a5,a4,-48
+ 4a4:	00878733          	add	a4,a5,s0
+ 4a8:	02d00793          	li	a5,45
+ 4ac:	fef70823          	sb	a5,-16(a4)
+ 4b0:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 4aa:	02e05663          	blez	a4,4d6 <printint+0x94>
- 4ae:	fc040913          	addi	s2,s0,-64
- 4b2:	993a                	add	s2,s2,a4
- 4b4:	19fd                	addi	s3,s3,-1
- 4b6:	99ba                	add	s3,s3,a4
- 4b8:	377d                	addiw	a4,a4,-1
- 4ba:	1702                	slli	a4,a4,0x20
- 4bc:	9301                	srli	a4,a4,0x20
- 4be:	40e989b3          	sub	s3,s3,a4
+ 4b4:	02e05663          	blez	a4,4e0 <printint+0x94>
+ 4b8:	fc040913          	addi	s2,s0,-64
+ 4bc:	993a                	add	s2,s2,a4
+ 4be:	19fd                	addi	s3,s3,-1
+ 4c0:	99ba                	add	s3,s3,a4
+ 4c2:	377d                	addiw	a4,a4,-1
+ 4c4:	1702                	slli	a4,a4,0x20
+ 4c6:	9301                	srli	a4,a4,0x20
+ 4c8:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 4c2:	fff94583          	lbu	a1,-1(s2)
- 4c6:	8526                	mv	a0,s1
- 4c8:	00000097          	auipc	ra,0x0
- 4cc:	f58080e7          	jalr	-168(ra) # 420 <putc>
+ 4cc:	fff94583          	lbu	a1,-1(s2)
+ 4d0:	8526                	mv	a0,s1
+ 4d2:	00000097          	auipc	ra,0x0
+ 4d6:	f58080e7          	jalr	-168(ra) # 42a <putc>
   while(--i >= 0)
- 4d0:	197d                	addi	s2,s2,-1
- 4d2:	ff3918e3          	bne	s2,s3,4c2 <printint+0x80>
+ 4da:	197d                	addi	s2,s2,-1
+ 4dc:	ff3918e3          	bne	s2,s3,4cc <printint+0x80>
 }
- 4d6:	70e2                	ld	ra,56(sp)
- 4d8:	7442                	ld	s0,48(sp)
- 4da:	74a2                	ld	s1,40(sp)
- 4dc:	7902                	ld	s2,32(sp)
- 4de:	69e2                	ld	s3,24(sp)
- 4e0:	6121                	addi	sp,sp,64
- 4e2:	8082                	ret
+ 4e0:	70e2                	ld	ra,56(sp)
+ 4e2:	7442                	ld	s0,48(sp)
+ 4e4:	74a2                	ld	s1,40(sp)
+ 4e6:	7902                	ld	s2,32(sp)
+ 4e8:	69e2                	ld	s3,24(sp)
+ 4ea:	6121                	addi	sp,sp,64
+ 4ec:	8082                	ret
     x = -xx;
- 4e4:	40b005bb          	negw	a1,a1
+ 4ee:	40b005bb          	negw	a1,a1
     neg = 1;
- 4e8:	4885                	li	a7,1
+ 4f2:	4885                	li	a7,1
     x = -xx;
- 4ea:	bf8d                	j	45c <printint+0x1a>
+ 4f4:	bf8d                	j	466 <printint+0x1a>
 
-00000000000004ec <vprintf>:
+00000000000004f6 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 4ec:	7119                	addi	sp,sp,-128
- 4ee:	fc86                	sd	ra,120(sp)
- 4f0:	f8a2                	sd	s0,112(sp)
- 4f2:	f4a6                	sd	s1,104(sp)
- 4f4:	f0ca                	sd	s2,96(sp)
- 4f6:	ecce                	sd	s3,88(sp)
- 4f8:	e8d2                	sd	s4,80(sp)
- 4fa:	e4d6                	sd	s5,72(sp)
- 4fc:	e0da                	sd	s6,64(sp)
- 4fe:	fc5e                	sd	s7,56(sp)
- 500:	f862                	sd	s8,48(sp)
- 502:	f466                	sd	s9,40(sp)
- 504:	f06a                	sd	s10,32(sp)
- 506:	ec6e                	sd	s11,24(sp)
- 508:	0100                	addi	s0,sp,128
+ 4f6:	7119                	addi	sp,sp,-128
+ 4f8:	fc86                	sd	ra,120(sp)
+ 4fa:	f8a2                	sd	s0,112(sp)
+ 4fc:	f4a6                	sd	s1,104(sp)
+ 4fe:	f0ca                	sd	s2,96(sp)
+ 500:	ecce                	sd	s3,88(sp)
+ 502:	e8d2                	sd	s4,80(sp)
+ 504:	e4d6                	sd	s5,72(sp)
+ 506:	e0da                	sd	s6,64(sp)
+ 508:	fc5e                	sd	s7,56(sp)
+ 50a:	f862                	sd	s8,48(sp)
+ 50c:	f466                	sd	s9,40(sp)
+ 50e:	f06a                	sd	s10,32(sp)
+ 510:	ec6e                	sd	s11,24(sp)
+ 512:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 50a:	0005c903          	lbu	s2,0(a1)
- 50e:	18090f63          	beqz	s2,6ac <vprintf+0x1c0>
- 512:	8aaa                	mv	s5,a0
- 514:	8b32                	mv	s6,a2
- 516:	00158493          	addi	s1,a1,1
+ 514:	0005c903          	lbu	s2,0(a1)
+ 518:	18090f63          	beqz	s2,6b6 <vprintf+0x1c0>
+ 51c:	8aaa                	mv	s5,a0
+ 51e:	8b32                	mv	s6,a2
+ 520:	00158493          	addi	s1,a1,1
   state = 0;
- 51a:	4981                	li	s3,0
+ 524:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 51c:	02500a13          	li	s4,37
- 520:	4c55                	li	s8,21
- 522:	00000c97          	auipc	s9,0x0
- 526:	3bec8c93          	addi	s9,s9,958 # 8e0 <malloc+0x130>
+ 526:	02500a13          	li	s4,37
+ 52a:	4c55                	li	s8,21
+ 52c:	00000c97          	auipc	s9,0x0
+ 530:	3bcc8c93          	addi	s9,s9,956 # 8e8 <malloc+0x12e>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 52a:	02800d93          	li	s11,40
+ 534:	02800d93          	li	s11,40
   putc(fd, 'x');
- 52e:	4d41                	li	s10,16
+ 538:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 530:	00000b97          	auipc	s7,0x0
- 534:	408b8b93          	addi	s7,s7,1032 # 938 <digits>
- 538:	a839                	j	556 <vprintf+0x6a>
+ 53a:	00000b97          	auipc	s7,0x0
+ 53e:	406b8b93          	addi	s7,s7,1030 # 940 <digits>
+ 542:	a839                	j	560 <vprintf+0x6a>
         putc(fd, c);
- 53a:	85ca                	mv	a1,s2
- 53c:	8556                	mv	a0,s5
- 53e:	00000097          	auipc	ra,0x0
- 542:	ee2080e7          	jalr	-286(ra) # 420 <putc>
- 546:	a019                	j	54c <vprintf+0x60>
+ 544:	85ca                	mv	a1,s2
+ 546:	8556                	mv	a0,s5
+ 548:	00000097          	auipc	ra,0x0
+ 54c:	ee2080e7          	jalr	-286(ra) # 42a <putc>
+ 550:	a019                	j	556 <vprintf+0x60>
     } else if(state == '%'){
- 548:	01498d63          	beq	s3,s4,562 <vprintf+0x76>
+ 552:	01498d63          	beq	s3,s4,56c <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 54c:	0485                	addi	s1,s1,1
- 54e:	fff4c903          	lbu	s2,-1(s1)
- 552:	14090d63          	beqz	s2,6ac <vprintf+0x1c0>
+ 556:	0485                	addi	s1,s1,1
+ 558:	fff4c903          	lbu	s2,-1(s1)
+ 55c:	14090d63          	beqz	s2,6b6 <vprintf+0x1c0>
     if(state == 0){
- 556:	fe0999e3          	bnez	s3,548 <vprintf+0x5c>
+ 560:	fe0999e3          	bnez	s3,552 <vprintf+0x5c>
       if(c == '%'){
- 55a:	ff4910e3          	bne	s2,s4,53a <vprintf+0x4e>
+ 564:	ff4910e3          	bne	s2,s4,544 <vprintf+0x4e>
         state = '%';
- 55e:	89d2                	mv	s3,s4
- 560:	b7f5                	j	54c <vprintf+0x60>
+ 568:	89d2                	mv	s3,s4
+ 56a:	b7f5                	j	556 <vprintf+0x60>
       if(c == 'd'){
- 562:	11490c63          	beq	s2,s4,67a <vprintf+0x18e>
- 566:	f9d9079b          	addiw	a5,s2,-99
- 56a:	0ff7f793          	zext.b	a5,a5
- 56e:	10fc6e63          	bltu	s8,a5,68a <vprintf+0x19e>
- 572:	f9d9079b          	addiw	a5,s2,-99
- 576:	0ff7f713          	zext.b	a4,a5
- 57a:	10ec6863          	bltu	s8,a4,68a <vprintf+0x19e>
- 57e:	00271793          	slli	a5,a4,0x2
- 582:	97e6                	add	a5,a5,s9
- 584:	439c                	lw	a5,0(a5)
- 586:	97e6                	add	a5,a5,s9
- 588:	8782                	jr	a5
+ 56c:	11490c63          	beq	s2,s4,684 <vprintf+0x18e>
+ 570:	f9d9079b          	addiw	a5,s2,-99
+ 574:	0ff7f793          	zext.b	a5,a5
+ 578:	10fc6e63          	bltu	s8,a5,694 <vprintf+0x19e>
+ 57c:	f9d9079b          	addiw	a5,s2,-99
+ 580:	0ff7f713          	zext.b	a4,a5
+ 584:	10ec6863          	bltu	s8,a4,694 <vprintf+0x19e>
+ 588:	00271793          	slli	a5,a4,0x2
+ 58c:	97e6                	add	a5,a5,s9
+ 58e:	439c                	lw	a5,0(a5)
+ 590:	97e6                	add	a5,a5,s9
+ 592:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 58a:	008b0913          	addi	s2,s6,8
- 58e:	4685                	li	a3,1
- 590:	4629                	li	a2,10
- 592:	000b2583          	lw	a1,0(s6)
- 596:	8556                	mv	a0,s5
- 598:	00000097          	auipc	ra,0x0
- 59c:	eaa080e7          	jalr	-342(ra) # 442 <printint>
- 5a0:	8b4a                	mv	s6,s2
+ 594:	008b0913          	addi	s2,s6,8
+ 598:	4685                	li	a3,1
+ 59a:	4629                	li	a2,10
+ 59c:	000b2583          	lw	a1,0(s6)
+ 5a0:	8556                	mv	a0,s5
+ 5a2:	00000097          	auipc	ra,0x0
+ 5a6:	eaa080e7          	jalr	-342(ra) # 44c <printint>
+ 5aa:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 5a2:	4981                	li	s3,0
- 5a4:	b765                	j	54c <vprintf+0x60>
+ 5ac:	4981                	li	s3,0
+ 5ae:	b765                	j	556 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 5a6:	008b0913          	addi	s2,s6,8
- 5aa:	4681                	li	a3,0
- 5ac:	4629                	li	a2,10
- 5ae:	000b2583          	lw	a1,0(s6)
- 5b2:	8556                	mv	a0,s5
- 5b4:	00000097          	auipc	ra,0x0
- 5b8:	e8e080e7          	jalr	-370(ra) # 442 <printint>
- 5bc:	8b4a                	mv	s6,s2
+ 5b0:	008b0913          	addi	s2,s6,8
+ 5b4:	4681                	li	a3,0
+ 5b6:	4629                	li	a2,10
+ 5b8:	000b2583          	lw	a1,0(s6)
+ 5bc:	8556                	mv	a0,s5
+ 5be:	00000097          	auipc	ra,0x0
+ 5c2:	e8e080e7          	jalr	-370(ra) # 44c <printint>
+ 5c6:	8b4a                	mv	s6,s2
       state = 0;
- 5be:	4981                	li	s3,0
- 5c0:	b771                	j	54c <vprintf+0x60>
+ 5c8:	4981                	li	s3,0
+ 5ca:	b771                	j	556 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 5c2:	008b0913          	addi	s2,s6,8
- 5c6:	4681                	li	a3,0
- 5c8:	866a                	mv	a2,s10
- 5ca:	000b2583          	lw	a1,0(s6)
- 5ce:	8556                	mv	a0,s5
- 5d0:	00000097          	auipc	ra,0x0
- 5d4:	e72080e7          	jalr	-398(ra) # 442 <printint>
- 5d8:	8b4a                	mv	s6,s2
+ 5cc:	008b0913          	addi	s2,s6,8
+ 5d0:	4681                	li	a3,0
+ 5d2:	866a                	mv	a2,s10
+ 5d4:	000b2583          	lw	a1,0(s6)
+ 5d8:	8556                	mv	a0,s5
+ 5da:	00000097          	auipc	ra,0x0
+ 5de:	e72080e7          	jalr	-398(ra) # 44c <printint>
+ 5e2:	8b4a                	mv	s6,s2
       state = 0;
- 5da:	4981                	li	s3,0
- 5dc:	bf85                	j	54c <vprintf+0x60>
+ 5e4:	4981                	li	s3,0
+ 5e6:	bf85                	j	556 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 5de:	008b0793          	addi	a5,s6,8
- 5e2:	f8f43423          	sd	a5,-120(s0)
- 5e6:	000b3983          	ld	s3,0(s6)
+ 5e8:	008b0793          	addi	a5,s6,8
+ 5ec:	f8f43423          	sd	a5,-120(s0)
+ 5f0:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 5ea:	03000593          	li	a1,48
- 5ee:	8556                	mv	a0,s5
- 5f0:	00000097          	auipc	ra,0x0
- 5f4:	e30080e7          	jalr	-464(ra) # 420 <putc>
+ 5f4:	03000593          	li	a1,48
+ 5f8:	8556                	mv	a0,s5
+ 5fa:	00000097          	auipc	ra,0x0
+ 5fe:	e30080e7          	jalr	-464(ra) # 42a <putc>
   putc(fd, 'x');
- 5f8:	07800593          	li	a1,120
- 5fc:	8556                	mv	a0,s5
- 5fe:	00000097          	auipc	ra,0x0
- 602:	e22080e7          	jalr	-478(ra) # 420 <putc>
- 606:	896a                	mv	s2,s10
+ 602:	07800593          	li	a1,120
+ 606:	8556                	mv	a0,s5
+ 608:	00000097          	auipc	ra,0x0
+ 60c:	e22080e7          	jalr	-478(ra) # 42a <putc>
+ 610:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 608:	03c9d793          	srli	a5,s3,0x3c
- 60c:	97de                	add	a5,a5,s7
- 60e:	0007c583          	lbu	a1,0(a5)
- 612:	8556                	mv	a0,s5
- 614:	00000097          	auipc	ra,0x0
- 618:	e0c080e7          	jalr	-500(ra) # 420 <putc>
+ 612:	03c9d793          	srli	a5,s3,0x3c
+ 616:	97de                	add	a5,a5,s7
+ 618:	0007c583          	lbu	a1,0(a5)
+ 61c:	8556                	mv	a0,s5
+ 61e:	00000097          	auipc	ra,0x0
+ 622:	e0c080e7          	jalr	-500(ra) # 42a <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 61c:	0992                	slli	s3,s3,0x4
- 61e:	397d                	addiw	s2,s2,-1
- 620:	fe0914e3          	bnez	s2,608 <vprintf+0x11c>
+ 626:	0992                	slli	s3,s3,0x4
+ 628:	397d                	addiw	s2,s2,-1
+ 62a:	fe0914e3          	bnez	s2,612 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 624:	f8843b03          	ld	s6,-120(s0)
+ 62e:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 628:	4981                	li	s3,0
- 62a:	b70d                	j	54c <vprintf+0x60>
+ 632:	4981                	li	s3,0
+ 634:	b70d                	j	556 <vprintf+0x60>
         s = va_arg(ap, char*);
- 62c:	008b0913          	addi	s2,s6,8
- 630:	000b3983          	ld	s3,0(s6)
+ 636:	008b0913          	addi	s2,s6,8
+ 63a:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 634:	02098163          	beqz	s3,656 <vprintf+0x16a>
+ 63e:	02098163          	beqz	s3,660 <vprintf+0x16a>
         while(*s != 0){
- 638:	0009c583          	lbu	a1,0(s3)
- 63c:	c5ad                	beqz	a1,6a6 <vprintf+0x1ba>
+ 642:	0009c583          	lbu	a1,0(s3)
+ 646:	c5ad                	beqz	a1,6b0 <vprintf+0x1ba>
           putc(fd, *s);
- 63e:	8556                	mv	a0,s5
- 640:	00000097          	auipc	ra,0x0
- 644:	de0080e7          	jalr	-544(ra) # 420 <putc>
+ 648:	8556                	mv	a0,s5
+ 64a:	00000097          	auipc	ra,0x0
+ 64e:	de0080e7          	jalr	-544(ra) # 42a <putc>
           s++;
- 648:	0985                	addi	s3,s3,1
+ 652:	0985                	addi	s3,s3,1
         while(*s != 0){
- 64a:	0009c583          	lbu	a1,0(s3)
- 64e:	f9e5                	bnez	a1,63e <vprintf+0x152>
+ 654:	0009c583          	lbu	a1,0(s3)
+ 658:	f9e5                	bnez	a1,648 <vprintf+0x152>
         s = va_arg(ap, char*);
- 650:	8b4a                	mv	s6,s2
+ 65a:	8b4a                	mv	s6,s2
       state = 0;
- 652:	4981                	li	s3,0
- 654:	bde5                	j	54c <vprintf+0x60>
+ 65c:	4981                	li	s3,0
+ 65e:	bde5                	j	556 <vprintf+0x60>
           s = "(null)";
- 656:	00000997          	auipc	s3,0x0
- 65a:	28298993          	addi	s3,s3,642 # 8d8 <malloc+0x128>
+ 660:	00000997          	auipc	s3,0x0
+ 664:	28098993          	addi	s3,s3,640 # 8e0 <malloc+0x126>
         while(*s != 0){
- 65e:	85ee                	mv	a1,s11
- 660:	bff9                	j	63e <vprintf+0x152>
+ 668:	85ee                	mv	a1,s11
+ 66a:	bff9                	j	648 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 662:	008b0913          	addi	s2,s6,8
- 666:	000b4583          	lbu	a1,0(s6)
- 66a:	8556                	mv	a0,s5
- 66c:	00000097          	auipc	ra,0x0
- 670:	db4080e7          	jalr	-588(ra) # 420 <putc>
- 674:	8b4a                	mv	s6,s2
+ 66c:	008b0913          	addi	s2,s6,8
+ 670:	000b4583          	lbu	a1,0(s6)
+ 674:	8556                	mv	a0,s5
+ 676:	00000097          	auipc	ra,0x0
+ 67a:	db4080e7          	jalr	-588(ra) # 42a <putc>
+ 67e:	8b4a                	mv	s6,s2
       state = 0;
- 676:	4981                	li	s3,0
- 678:	bdd1                	j	54c <vprintf+0x60>
+ 680:	4981                	li	s3,0
+ 682:	bdd1                	j	556 <vprintf+0x60>
         putc(fd, c);
- 67a:	85d2                	mv	a1,s4
- 67c:	8556                	mv	a0,s5
- 67e:	00000097          	auipc	ra,0x0
- 682:	da2080e7          	jalr	-606(ra) # 420 <putc>
+ 684:	85d2                	mv	a1,s4
+ 686:	8556                	mv	a0,s5
+ 688:	00000097          	auipc	ra,0x0
+ 68c:	da2080e7          	jalr	-606(ra) # 42a <putc>
       state = 0;
- 686:	4981                	li	s3,0
- 688:	b5d1                	j	54c <vprintf+0x60>
+ 690:	4981                	li	s3,0
+ 692:	b5d1                	j	556 <vprintf+0x60>
         putc(fd, '%');
- 68a:	85d2                	mv	a1,s4
- 68c:	8556                	mv	a0,s5
- 68e:	00000097          	auipc	ra,0x0
- 692:	d92080e7          	jalr	-622(ra) # 420 <putc>
+ 694:	85d2                	mv	a1,s4
+ 696:	8556                	mv	a0,s5
+ 698:	00000097          	auipc	ra,0x0
+ 69c:	d92080e7          	jalr	-622(ra) # 42a <putc>
         putc(fd, c);
- 696:	85ca                	mv	a1,s2
- 698:	8556                	mv	a0,s5
- 69a:	00000097          	auipc	ra,0x0
- 69e:	d86080e7          	jalr	-634(ra) # 420 <putc>
+ 6a0:	85ca                	mv	a1,s2
+ 6a2:	8556                	mv	a0,s5
+ 6a4:	00000097          	auipc	ra,0x0
+ 6a8:	d86080e7          	jalr	-634(ra) # 42a <putc>
       state = 0;
- 6a2:	4981                	li	s3,0
- 6a4:	b565                	j	54c <vprintf+0x60>
+ 6ac:	4981                	li	s3,0
+ 6ae:	b565                	j	556 <vprintf+0x60>
         s = va_arg(ap, char*);
- 6a6:	8b4a                	mv	s6,s2
+ 6b0:	8b4a                	mv	s6,s2
       state = 0;
- 6a8:	4981                	li	s3,0
- 6aa:	b54d                	j	54c <vprintf+0x60>
+ 6b2:	4981                	li	s3,0
+ 6b4:	b54d                	j	556 <vprintf+0x60>
     }
   }
 }
- 6ac:	70e6                	ld	ra,120(sp)
- 6ae:	7446                	ld	s0,112(sp)
- 6b0:	74a6                	ld	s1,104(sp)
- 6b2:	7906                	ld	s2,96(sp)
- 6b4:	69e6                	ld	s3,88(sp)
- 6b6:	6a46                	ld	s4,80(sp)
- 6b8:	6aa6                	ld	s5,72(sp)
- 6ba:	6b06                	ld	s6,64(sp)
- 6bc:	7be2                	ld	s7,56(sp)
- 6be:	7c42                	ld	s8,48(sp)
- 6c0:	7ca2                	ld	s9,40(sp)
- 6c2:	7d02                	ld	s10,32(sp)
- 6c4:	6de2                	ld	s11,24(sp)
- 6c6:	6109                	addi	sp,sp,128
- 6c8:	8082                	ret
-
-00000000000006ca <fprintf>:
+ 6b6:	70e6                	ld	ra,120(sp)
+ 6b8:	7446                	ld	s0,112(sp)
+ 6ba:	74a6                	ld	s1,104(sp)
+ 6bc:	7906                	ld	s2,96(sp)
+ 6be:	69e6                	ld	s3,88(sp)
+ 6c0:	6a46                	ld	s4,80(sp)
+ 6c2:	6aa6                	ld	s5,72(sp)
+ 6c4:	6b06                	ld	s6,64(sp)
+ 6c6:	7be2                	ld	s7,56(sp)
+ 6c8:	7c42                	ld	s8,48(sp)
+ 6ca:	7ca2                	ld	s9,40(sp)
+ 6cc:	7d02                	ld	s10,32(sp)
+ 6ce:	6de2                	ld	s11,24(sp)
+ 6d0:	6109                	addi	sp,sp,128
+ 6d2:	8082                	ret
+
+00000000000006d4 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 6ca:	715d                	addi	sp,sp,-80
- 6cc:	ec06                	sd	ra,24(sp)
- 6ce:	e822                	sd	s0,16(sp)
- 6d0:	1000                	addi	s0,sp,32
- 6d2:	e010                	sd	a2,0(s0)
- 6d4:	e414                	sd	a3,8(s0)
- 6d6:	e818                	sd	a4,16(s0)
- 6d8:	ec1c                	sd	a5,24(s0)
- 6da:	03043023          	sd	a6,32(s0)
- 6de:	03143423          	sd	a7,40(s0)
+ 6d4:	715d                	addi	sp,sp,-80
+ 6d6:	ec06                	sd	ra,24(sp)
+ 6d8:	e822                	sd	s0,16(sp)
+ 6da:	1000                	addi	s0,sp,32
+ 6dc:	e010                	sd	a2,0(s0)
+ 6de:	e414                	sd	a3,8(s0)
+ 6e0:	e818                	sd	a4,16(s0)
+ 6e2:	ec1c                	sd	a5,24(s0)
+ 6e4:	03043023          	sd	a6,32(s0)
+ 6e8:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6e2:	8622                	mv	a2,s0
- 6e4:	fe843423          	sd	s0,-24(s0)
+ 6ec:	8622                	mv	a2,s0
+ 6ee:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 6e8:	00000097          	auipc	ra,0x0
- 6ec:	e04080e7          	jalr	-508(ra) # 4ec <vprintf>
+ 6f2:	00000097          	auipc	ra,0x0
+ 6f6:	e04080e7          	jalr	-508(ra) # 4f6 <vprintf>
 }
- 6f0:	60e2                	ld	ra,24(sp)
- 6f2:	6442                	ld	s0,16(sp)
- 6f4:	6161                	addi	sp,sp,80
- 6f6:	8082                	ret
+ 6fa:	60e2                	ld	ra,24(sp)
+ 6fc:	6442                	ld	s0,16(sp)
+ 6fe:	6161                	addi	sp,sp,80
+ 700:	8082                	ret
 
-00000000000006f8 <printf>:
+0000000000000702 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 6f8:	711d                	addi	sp,sp,-96
- 6fa:	ec06                	sd	ra,24(sp)
- 6fc:	e822                	sd	s0,16(sp)
- 6fe:	1000                	addi	s0,sp,32
- 700:	e40c                	sd	a1,8(s0)
- 702:	e810                	sd	a2,16(s0)
- 704:	ec14                	sd	a3,24(s0)
- 706:	f018                	sd	a4,32(s0)
- 708:	f41c                	sd	a5,40(s0)
- 70a:	03043823          	sd	a6,48(s0)
- 70e:	03143c23          	sd	a7,56(s0)
+ 702:	711d                	addi	sp,sp,-96
+ 704:	ec06                	sd	ra,24(sp)
+ 706:	e822                	sd	s0,16(sp)
+ 708:	1000                	addi	s0,sp,32
+ 70a:	e40c                	sd	a1,8(s0)
+ 70c:	e810                	sd	a2,16(s0)
+ 70e:	ec14                	sd	a3,24(s0)
+ 710:	f018                	sd	a4,32(s0)
+ 712:	f41c                	sd	a5,40(s0)
+ 714:	03043823          	sd	a6,48(s0)
+ 718:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 712:	00840613          	addi	a2,s0,8
- 716:	fec43423          	sd	a2,-24(s0)
+ 71c:	00840613          	addi	a2,s0,8
+ 720:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 71a:	85aa                	mv	a1,a0
- 71c:	4505                	li	a0,1
- 71e:	00000097          	auipc	ra,0x0
- 722:	dce080e7          	jalr	-562(ra) # 4ec <vprintf>
+ 724:	85aa                	mv	a1,a0
+ 726:	4505                	li	a0,1
+ 728:	00000097          	auipc	ra,0x0
+ 72c:	dce080e7          	jalr	-562(ra) # 4f6 <vprintf>
 }
- 726:	60e2                	ld	ra,24(sp)
- 728:	6442                	ld	s0,16(sp)
- 72a:	6125                	addi	sp,sp,96
- 72c:	8082                	ret
+ 730:	60e2                	ld	ra,24(sp)
+ 732:	6442                	ld	s0,16(sp)
+ 734:	6125                	addi	sp,sp,96
+ 736:	8082                	ret
 
-000000000000072e <free>:
+0000000000000738 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 72e:	1141                	addi	sp,sp,-16
- 730:	e422                	sd	s0,8(sp)
- 732:	0800                	addi	s0,sp,16
+ 738:	1141                	addi	sp,sp,-16
+ 73a:	e422                	sd	s0,8(sp)
+ 73c:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 734:	ff050693          	addi	a3,a0,-16
+ 73e:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 738:	00000797          	auipc	a5,0x0
- 73c:	2187b783          	ld	a5,536(a5) # 950 <freep>
- 740:	a02d                	j	76a <free+0x3c>
+ 742:	00000797          	auipc	a5,0x0
+ 746:	2167b783          	ld	a5,534(a5) # 958 <freep>
+ 74a:	a02d                	j	774 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 742:	4618                	lw	a4,8(a2)
- 744:	9f2d                	addw	a4,a4,a1
- 746:	fee52c23          	sw	a4,-8(a0)
+ 74c:	4618                	lw	a4,8(a2)
+ 74e:	9f2d                	addw	a4,a4,a1
+ 750:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 74a:	6398                	ld	a4,0(a5)
- 74c:	6310                	ld	a2,0(a4)
- 74e:	a83d                	j	78c <free+0x5e>
+ 754:	6398                	ld	a4,0(a5)
+ 756:	6310                	ld	a2,0(a4)
+ 758:	a83d                	j	796 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 750:	ff852703          	lw	a4,-8(a0)
- 754:	9f31                	addw	a4,a4,a2
- 756:	c798                	sw	a4,8(a5)
+ 75a:	ff852703          	lw	a4,-8(a0)
+ 75e:	9f31                	addw	a4,a4,a2
+ 760:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 758:	ff053683          	ld	a3,-16(a0)
- 75c:	a091                	j	7a0 <free+0x72>
+ 762:	ff053683          	ld	a3,-16(a0)
+ 766:	a091                	j	7aa <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 75e:	6398                	ld	a4,0(a5)
- 760:	00e7e463          	bltu	a5,a4,768 <free+0x3a>
- 764:	00e6ea63          	bltu	a3,a4,778 <free+0x4a>
+ 768:	6398                	ld	a4,0(a5)
+ 76a:	00e7e463          	bltu	a5,a4,772 <free+0x3a>
+ 76e:	00e6ea63          	bltu	a3,a4,782 <free+0x4a>
 {
- 768:	87ba                	mv	a5,a4
+ 772:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 76a:	fed7fae3          	bgeu	a5,a3,75e <free+0x30>
- 76e:	6398                	ld	a4,0(a5)
- 770:	00e6e463          	bltu	a3,a4,778 <free+0x4a>
+ 774:	fed7fae3          	bgeu	a5,a3,768 <free+0x30>
+ 778:	6398                	ld	a4,0(a5)
+ 77a:	00e6e463          	bltu	a3,a4,782 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 774:	fee7eae3          	bltu	a5,a4,768 <free+0x3a>
+ 77e:	fee7eae3          	bltu	a5,a4,772 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 778:	ff852583          	lw	a1,-8(a0)
- 77c:	6390                	ld	a2,0(a5)
- 77e:	02059813          	slli	a6,a1,0x20
- 782:	01c85713          	srli	a4,a6,0x1c
- 786:	9736                	add	a4,a4,a3
- 788:	fae60de3          	beq	a2,a4,742 <free+0x14>
+ 782:	ff852583          	lw	a1,-8(a0)
+ 786:	6390                	ld	a2,0(a5)
+ 788:	02059813          	slli	a6,a1,0x20
+ 78c:	01c85713          	srli	a4,a6,0x1c
+ 790:	9736                	add	a4,a4,a3
+ 792:	fae60de3          	beq	a2,a4,74c <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 78c:	fec53823          	sd	a2,-16(a0)
+ 796:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 790:	4790                	lw	a2,8(a5)
- 792:	02061593          	slli	a1,a2,0x20
- 796:	01c5d713          	srli	a4,a1,0x1c
- 79a:	973e                	add	a4,a4,a5
- 79c:	fae68ae3          	beq	a3,a4,750 <free+0x22>
+ 79a:	4790                	lw	a2,8(a5)
+ 79c:	02061593          	slli	a1,a2,0x20
+ 7a0:	01c5d713          	srli	a4,a1,0x1c
+ 7a4:	973e                	add	a4,a4,a5
+ 7a6:	fae68ae3          	beq	a3,a4,75a <free+0x22>
     p->s.ptr = bp->s.ptr;
- 7a0:	e394                	sd	a3,0(a5)
+ 7aa:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 7a2:	00000717          	auipc	a4,0x0
- 7a6:	1af73723          	sd	a5,430(a4) # 950 <freep>
+ 7ac:	00000717          	auipc	a4,0x0
+ 7b0:	1af73623          	sd	a5,428(a4) # 958 <freep>
 }
- 7aa:	6422                	ld	s0,8(sp)
- 7ac:	0141                	addi	sp,sp,16
- 7ae:	8082                	ret
+ 7b4:	6422                	ld	s0,8(sp)
+ 7b6:	0141                	addi	sp,sp,16
+ 7b8:	8082                	ret
 
-00000000000007b0 <malloc>:
+00000000000007ba <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 7b0:	7139                	addi	sp,sp,-64
- 7b2:	fc06                	sd	ra,56(sp)
- 7b4:	f822                	sd	s0,48(sp)
- 7b6:	f426                	sd	s1,40(sp)
- 7b8:	f04a                	sd	s2,32(sp)
- 7ba:	ec4e                	sd	s3,24(sp)
- 7bc:	e852                	sd	s4,16(sp)
- 7be:	e456                	sd	s5,8(sp)
- 7c0:	e05a                	sd	s6,0(sp)
- 7c2:	0080                	addi	s0,sp,64
+ 7ba:	7139                	addi	sp,sp,-64
+ 7bc:	fc06                	sd	ra,56(sp)
+ 7be:	f822                	sd	s0,48(sp)
+ 7c0:	f426                	sd	s1,40(sp)
+ 7c2:	f04a                	sd	s2,32(sp)
+ 7c4:	ec4e                	sd	s3,24(sp)
+ 7c6:	e852                	sd	s4,16(sp)
+ 7c8:	e456                	sd	s5,8(sp)
+ 7ca:	e05a                	sd	s6,0(sp)
+ 7cc:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 7c4:	02051493          	slli	s1,a0,0x20
- 7c8:	9081                	srli	s1,s1,0x20
- 7ca:	04bd                	addi	s1,s1,15
- 7cc:	8091                	srli	s1,s1,0x4
- 7ce:	00148a1b          	addiw	s4,s1,1
- 7d2:	0485                	addi	s1,s1,1
+ 7ce:	02051493          	slli	s1,a0,0x20
+ 7d2:	9081                	srli	s1,s1,0x20
+ 7d4:	04bd                	addi	s1,s1,15
+ 7d6:	8091                	srli	s1,s1,0x4
+ 7d8:	00148a1b          	addiw	s4,s1,1
+ 7dc:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 7d4:	00000517          	auipc	a0,0x0
- 7d8:	17c53503          	ld	a0,380(a0) # 950 <freep>
- 7dc:	c515                	beqz	a0,808 <malloc+0x58>
+ 7de:	00000517          	auipc	a0,0x0
+ 7e2:	17a53503          	ld	a0,378(a0) # 958 <freep>
+ 7e6:	c515                	beqz	a0,812 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 7de:	611c                	ld	a5,0(a0)
+ 7e8:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 7e0:	4798                	lw	a4,8(a5)
- 7e2:	04977163          	bgeu	a4,s1,824 <malloc+0x74>
- 7e6:	89d2                	mv	s3,s4
- 7e8:	000a071b          	sext.w	a4,s4
- 7ec:	6685                	lui	a3,0x1
- 7ee:	00d77363          	bgeu	a4,a3,7f4 <malloc+0x44>
- 7f2:	6985                	lui	s3,0x1
- 7f4:	00098b1b          	sext.w	s6,s3
+ 7ea:	4798                	lw	a4,8(a5)
+ 7ec:	04977163          	bgeu	a4,s1,82e <malloc+0x74>
+ 7f0:	89d2                	mv	s3,s4
+ 7f2:	000a071b          	sext.w	a4,s4
+ 7f6:	6685                	lui	a3,0x1
+ 7f8:	00d77363          	bgeu	a4,a3,7fe <malloc+0x44>
+ 7fc:	6985                	lui	s3,0x1
+ 7fe:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 7f8:	0049999b          	slliw	s3,s3,0x4
+ 802:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 7fc:	00000917          	auipc	s2,0x0
- 800:	15490913          	addi	s2,s2,340 # 950 <freep>
+ 806:	00000917          	auipc	s2,0x0
+ 80a:	15290913          	addi	s2,s2,338 # 958 <freep>
   if(p == (char*)-1)
- 804:	5afd                	li	s5,-1
- 806:	a8a5                	j	87e <malloc+0xce>
+ 80e:	5afd                	li	s5,-1
+ 810:	a8a5                	j	888 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 808:	00000797          	auipc	a5,0x0
- 80c:	14878793          	addi	a5,a5,328 # 950 <freep>
- 810:	00000717          	auipc	a4,0x0
- 814:	14870713          	addi	a4,a4,328 # 958 <base>
- 818:	e398                	sd	a4,0(a5)
- 81a:	e798                	sd	a4,8(a5)
+ 812:	00000797          	auipc	a5,0x0
+ 816:	14678793          	addi	a5,a5,326 # 958 <freep>
+ 81a:	00000717          	auipc	a4,0x0
+ 81e:	14670713          	addi	a4,a4,326 # 960 <base>
+ 822:	e398                	sd	a4,0(a5)
+ 824:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 81c:	0007a823          	sw	zero,16(a5)
+ 826:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 820:	87ba                	mv	a5,a4
- 822:	b7d1                	j	7e6 <malloc+0x36>
+ 82a:	87ba                	mv	a5,a4
+ 82c:	b7d1                	j	7f0 <malloc+0x36>
       if(p->s.size == nunits)
- 824:	02e48c63          	beq	s1,a4,85c <malloc+0xac>
+ 82e:	02e48c63          	beq	s1,a4,866 <malloc+0xac>
         p->s.size -= nunits;
- 828:	4147073b          	subw	a4,a4,s4
- 82c:	c798                	sw	a4,8(a5)
+ 832:	4147073b          	subw	a4,a4,s4
+ 836:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 82e:	02071693          	slli	a3,a4,0x20
- 832:	01c6d713          	srli	a4,a3,0x1c
- 836:	97ba                	add	a5,a5,a4
+ 838:	02071693          	slli	a3,a4,0x20
+ 83c:	01c6d713          	srli	a4,a3,0x1c
+ 840:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 838:	0147a423          	sw	s4,8(a5)
+ 842:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 83c:	00000717          	auipc	a4,0x0
- 840:	10a73a23          	sd	a0,276(a4) # 950 <freep>
+ 846:	00000717          	auipc	a4,0x0
+ 84a:	10a73923          	sd	a0,274(a4) # 958 <freep>
       return (void*)(p + 1);
- 844:	01078513          	addi	a0,a5,16
+ 84e:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 848:	70e2                	ld	ra,56(sp)
- 84a:	7442                	ld	s0,48(sp)
- 84c:	74a2                	ld	s1,40(sp)
- 84e:	7902                	ld	s2,32(sp)
- 850:	69e2                	ld	s3,24(sp)
- 852:	6a42                	ld	s4,16(sp)
- 854:	6aa2                	ld	s5,8(sp)
- 856:	6b02                	ld	s6,0(sp)
- 858:	6121                	addi	sp,sp,64
- 85a:	8082                	ret
+ 852:	70e2                	ld	ra,56(sp)
+ 854:	7442                	ld	s0,48(sp)
+ 856:	74a2                	ld	s1,40(sp)
+ 858:	7902                	ld	s2,32(sp)
+ 85a:	69e2                	ld	s3,24(sp)
+ 85c:	6a42                	ld	s4,16(sp)
+ 85e:	6aa2                	ld	s5,8(sp)
+ 860:	6b02                	ld	s6,0(sp)
+ 862:	6121                	addi	sp,sp,64
+ 864:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 85c:	6398                	ld	a4,0(a5)
- 85e:	e118                	sd	a4,0(a0)
- 860:	bff1                	j	83c <malloc+0x8c>
+ 866:	6398                	ld	a4,0(a5)
+ 868:	e118                	sd	a4,0(a0)
+ 86a:	bff1                	j	846 <malloc+0x8c>
   hp->s.size = nu;
- 862:	01652423          	sw	s6,8(a0)
+ 86c:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 866:	0541                	addi	a0,a0,16
- 868:	00000097          	auipc	ra,0x0
- 86c:	ec6080e7          	jalr	-314(ra) # 72e <free>
+ 870:	0541                	addi	a0,a0,16
+ 872:	00000097          	auipc	ra,0x0
+ 876:	ec6080e7          	jalr	-314(ra) # 738 <free>
   return freep;
- 870:	00093503          	ld	a0,0(s2)
+ 87a:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 874:	d971                	beqz	a0,848 <malloc+0x98>
+ 87e:	d971                	beqz	a0,852 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 876:	611c                	ld	a5,0(a0)
+ 880:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 878:	4798                	lw	a4,8(a5)
- 87a:	fa9775e3          	bgeu	a4,s1,824 <malloc+0x74>
+ 882:	4798                	lw	a4,8(a5)
+ 884:	fa9775e3          	bgeu	a4,s1,82e <malloc+0x74>
     if(p == freep)
- 87e:	00093703          	ld	a4,0(s2)
- 882:	853e                	mv	a0,a5
- 884:	fef719e3          	bne	a4,a5,876 <malloc+0xc6>
+ 888:	00093703          	ld	a4,0(s2)
+ 88c:	853e                	mv	a0,a5
+ 88e:	fef719e3          	bne	a4,a5,880 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 888:	854e                	mv	a0,s3
- 88a:	00000097          	auipc	ra,0x0
- 88e:	b2a080e7          	jalr	-1238(ra) # 3b4 <sbrk>
+ 892:	854e                	mv	a0,s3
+ 894:	00000097          	auipc	ra,0x0
+ 898:	b20080e7          	jalr	-1248(ra) # 3b4 <sbrk>
   if(p == (char*)-1)
- 892:	fd5518e3          	bne	a0,s5,862 <malloc+0xb2>
+ 89c:	fd5518e3          	bne	a0,s5,86c <malloc+0xb2>
         return 0;
- 896:	4501                	li	a0,0
- 898:	bf45                	j	848 <malloc+0x98>
+ 8a0:	4501                	li	a0,0
+ 8a2:	bf45                	j	852 <malloc+0x98>
diff --git a/xv6-user/mkdir.sym b/xv6-user/mkdir.sym
index 4f766ff..0109c7d 100644
--- a/xv6-user/mkdir.sym
+++ b/xv6-user/mkdir.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-00000000000008a0 .rodata
-0000000000000950 .bss
+00000000000008a8 .rodata
+0000000000000958 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-0000000000000420 putc
-0000000000000442 printint
-0000000000000938 digits
+000000000000042a putc
+000000000000044c printint
+0000000000000940 digits
 0000000000000000 umalloc.c
-0000000000000950 freep
-0000000000000958 base
+0000000000000958 freep
+0000000000000960 base
 0000000000000078 strcpy
-00000000000006f8 printf
-0000000000001149 __global_pointer$
+0000000000000702 printf
+0000000000001151 __global_pointer$
 00000000000003d4 dev
 000000000000027e memmove
+0000000000000420 times
 00000000000003f4 trace
 000000000000015e gets
-0000000000000949 __SDATA_BEGIN__
+0000000000000951 __SDATA_BEGIN__
 00000000000003aa getpid
 0000000000000310 memcpy
-00000000000007b0 malloc
+00000000000007ba malloc
 00000000000003ec remove
 00000000000003bc sleep
 00000000000003fc sysinfo
@@ -42,31 +43,31 @@
 0000000000000404 rename
 0000000000000356 write
 0000000000000384 fstat
-00000000000006ca fprintf
+00000000000006d4 fprintf
 000000000000036a kill
 0000000000000094 strcat
-00000000000004ec vprintf
+00000000000004f6 vprintf
 0000000000000398 chdir
 0000000000000372 exec
 000000000000033a wait
 000000000000034c read
 00000000000002d6 memcmp
 0000000000000328 fork
-0000000000000968 __BSS_END__
+0000000000000970 __BSS_END__
 00000000000003b4 sbrk
 00000000000003cc test_proc
 00000000000003c4 uptime
-0000000000000949 __bss_start
+0000000000000951 __bss_start
 0000000000000118 memset
 0000000000000000 main
 00000000000000c2 strcmp
 000000000000040c shutdown
 00000000000003a2 dup
 00000000000003e4 getcwd
-0000000000000949 __DATA_BEGIN__
+0000000000000951 __DATA_BEGIN__
 00000000000001d8 stat
-0000000000000949 _edata
-0000000000000968 _end
+0000000000000951 _edata
+0000000000000970 _end
 0000000000000330 exit
 000000000000021e atoi
 00000000000000ee strlen
@@ -74,4 +75,4 @@
 000000000000013a strchr
 000000000000038e mkdir
 0000000000000360 close
-000000000000072e free
+0000000000000738 free
diff --git a/xv6-user/mv.asm b/xv6-user/mv.asm
index e197b11..f90a3e6 100644
--- a/xv6-user/mv.asm
+++ b/xv6-user/mv.asm
@@ -22,10 +22,10 @@ int main(int argc, char *argv[])
   18:	02a7c063          	blt	a5,a0,38 <main+0x38>
         fprintf(2, "Usage: mv old_name new_name\n");
   1c:	00001597          	auipc	a1,0x1
-  20:	9b458593          	addi	a1,a1,-1612 # 9d0 <malloc+0xee>
+  20:	9bc58593          	addi	a1,a1,-1604 # 9d8 <malloc+0xec>
   24:	4509                	li	a0,2
   26:	00000097          	auipc	ra,0x0
-  2a:	7d6080e7          	jalr	2006(ra) # 7fc <fprintf>
+  2a:	7e0080e7          	jalr	2016(ra) # 806 <fprintf>
         exit(1);
   2e:	4505                	li	a0,1
   30:	00000097          	auipc	ra,0x0
@@ -75,10 +75,10 @@ int main(int argc, char *argv[])
             fprintf(2, "mv: fail! %s exists!\n", dst);
   8a:	dd040613          	addi	a2,s0,-560
   8e:	00001597          	auipc	a1,0x1
-  92:	99a58593          	addi	a1,a1,-1638 # a28 <malloc+0x146>
+  92:	9a258593          	addi	a1,a1,-1630 # a30 <malloc+0x144>
   96:	4509                	li	a0,2
   98:	00000097          	auipc	ra,0x0
-  9c:	764080e7          	jalr	1892(ra) # 7fc <fprintf>
+  9c:	76e080e7          	jalr	1902(ra) # 806 <fprintf>
             exit(-1);
   a0:	557d                	li	a0,-1
   a2:	00000097          	auipc	ra,0x0
@@ -142,10 +142,10 @@ int main(int argc, char *argv[])
                     fprintf(2, "mv: fail! final dst path too long (exceed MAX=%d)!\n", MAXPATH);
  134:	10400613          	li	a2,260
  138:	00001597          	auipc	a1,0x1
- 13c:	8b858593          	addi	a1,a1,-1864 # 9f0 <malloc+0x10e>
+ 13c:	8c058593          	addi	a1,a1,-1856 # 9f8 <malloc+0x10c>
  140:	4509                	li	a0,2
  142:	00000097          	auipc	ra,0x0
- 146:	6ba080e7          	jalr	1722(ra) # 7fc <fprintf>
+ 146:	6c4080e7          	jalr	1732(ra) # 806 <fprintf>
                     exit(-1);
  14a:	557d                	li	a0,-1
  14c:	00000097          	auipc	ra,0x0
@@ -158,9 +158,9 @@ int main(int argc, char *argv[])
  15a:	ed840493          	addi	s1,s0,-296
  15e:	85a6                	mv	a1,s1
  160:	00001517          	auipc	a0,0x1
- 164:	8e050513          	addi	a0,a0,-1824 # a40 <malloc+0x15e>
+ 164:	8e850513          	addi	a0,a0,-1816 # a48 <malloc+0x15c>
  168:	00000097          	auipc	ra,0x0
- 16c:	6c2080e7          	jalr	1730(ra) # 82a <printf>
+ 16c:	6cc080e7          	jalr	1740(ra) # 834 <printf>
     if (rename(src, dst) < 0) {
  170:	85ca                	mv	a1,s2
  172:	8526                	mv	a0,s1
@@ -178,10 +178,10 @@ int main(int argc, char *argv[])
  18a:	86ca                	mv	a3,s2
  18c:	8626                	mv	a2,s1
  18e:	00001597          	auipc	a1,0x1
- 192:	8ca58593          	addi	a1,a1,-1846 # a58 <malloc+0x176>
+ 192:	8d258593          	addi	a1,a1,-1838 # a60 <malloc+0x174>
  196:	4509                	li	a0,2
  198:	00000097          	auipc	ra,0x0
- 19c:	664080e7          	jalr	1636(ra) # 7fc <fprintf>
+ 19c:	66e080e7          	jalr	1646(ra) # 806 <fprintf>
         exit(-1);
  1a0:	557d                	li	a0,-1
  1a2:	00000097          	auipc	ra,0x0
@@ -943,637 +943,647 @@ uname:
  ret
  550:	8082                	ret
 
-0000000000000552 <putc>:
+0000000000000552 <times>:
+.global times
+times:
+ li a7, SYS_times
+ 552:	09900893          	li	a7,153
+ ecall
+ 556:	00000073          	ecall
+ ret
+ 55a:	8082                	ret
+
+000000000000055c <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 552:	1101                	addi	sp,sp,-32
- 554:	ec06                	sd	ra,24(sp)
- 556:	e822                	sd	s0,16(sp)
- 558:	1000                	addi	s0,sp,32
- 55a:	feb407a3          	sb	a1,-17(s0)
+ 55c:	1101                	addi	sp,sp,-32
+ 55e:	ec06                	sd	ra,24(sp)
+ 560:	e822                	sd	s0,16(sp)
+ 562:	1000                	addi	s0,sp,32
+ 564:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 55e:	4605                	li	a2,1
- 560:	fef40593          	addi	a1,s0,-17
- 564:	00000097          	auipc	ra,0x0
- 568:	f24080e7          	jalr	-220(ra) # 488 <write>
+ 568:	4605                	li	a2,1
+ 56a:	fef40593          	addi	a1,s0,-17
+ 56e:	00000097          	auipc	ra,0x0
+ 572:	f1a080e7          	jalr	-230(ra) # 488 <write>
 }
- 56c:	60e2                	ld	ra,24(sp)
- 56e:	6442                	ld	s0,16(sp)
- 570:	6105                	addi	sp,sp,32
- 572:	8082                	ret
+ 576:	60e2                	ld	ra,24(sp)
+ 578:	6442                	ld	s0,16(sp)
+ 57a:	6105                	addi	sp,sp,32
+ 57c:	8082                	ret
 
-0000000000000574 <printint>:
+000000000000057e <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 574:	7139                	addi	sp,sp,-64
- 576:	fc06                	sd	ra,56(sp)
- 578:	f822                	sd	s0,48(sp)
- 57a:	f426                	sd	s1,40(sp)
- 57c:	f04a                	sd	s2,32(sp)
- 57e:	ec4e                	sd	s3,24(sp)
- 580:	0080                	addi	s0,sp,64
- 582:	84aa                	mv	s1,a0
+ 57e:	7139                	addi	sp,sp,-64
+ 580:	fc06                	sd	ra,56(sp)
+ 582:	f822                	sd	s0,48(sp)
+ 584:	f426                	sd	s1,40(sp)
+ 586:	f04a                	sd	s2,32(sp)
+ 588:	ec4e                	sd	s3,24(sp)
+ 58a:	0080                	addi	s0,sp,64
+ 58c:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 584:	c299                	beqz	a3,58a <printint+0x16>
- 586:	0805c863          	bltz	a1,616 <printint+0xa2>
+ 58e:	c299                	beqz	a3,594 <printint+0x16>
+ 590:	0805c863          	bltz	a1,620 <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 58a:	2581                	sext.w	a1,a1
+ 594:	2581                	sext.w	a1,a1
   neg = 0;
- 58c:	4881                	li	a7,0
+ 596:	4881                	li	a7,0
   }
 
   i = 0;
- 58e:	fc040993          	addi	s3,s0,-64
+ 598:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 592:	86ce                	mv	a3,s3
+ 59c:	86ce                	mv	a3,s3
   i = 0;
- 594:	4701                	li	a4,0
+ 59e:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 596:	2601                	sext.w	a2,a2
- 598:	00000517          	auipc	a0,0x0
- 59c:	54050513          	addi	a0,a0,1344 # ad8 <digits>
- 5a0:	883a                	mv	a6,a4
- 5a2:	2705                	addiw	a4,a4,1
- 5a4:	02c5f7bb          	remuw	a5,a1,a2
- 5a8:	1782                	slli	a5,a5,0x20
- 5aa:	9381                	srli	a5,a5,0x20
- 5ac:	97aa                	add	a5,a5,a0
- 5ae:	0007c783          	lbu	a5,0(a5)
- 5b2:	00f68023          	sb	a5,0(a3)
+ 5a0:	2601                	sext.w	a2,a2
+ 5a2:	00000517          	auipc	a0,0x0
+ 5a6:	53e50513          	addi	a0,a0,1342 # ae0 <digits>
+ 5aa:	883a                	mv	a6,a4
+ 5ac:	2705                	addiw	a4,a4,1
+ 5ae:	02c5f7bb          	remuw	a5,a1,a2
+ 5b2:	1782                	slli	a5,a5,0x20
+ 5b4:	9381                	srli	a5,a5,0x20
+ 5b6:	97aa                	add	a5,a5,a0
+ 5b8:	0007c783          	lbu	a5,0(a5)
+ 5bc:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 5b6:	0005879b          	sext.w	a5,a1
- 5ba:	02c5d5bb          	divuw	a1,a1,a2
- 5be:	0685                	addi	a3,a3,1
- 5c0:	fec7f0e3          	bgeu	a5,a2,5a0 <printint+0x2c>
+ 5c0:	0005879b          	sext.w	a5,a1
+ 5c4:	02c5d5bb          	divuw	a1,a1,a2
+ 5c8:	0685                	addi	a3,a3,1
+ 5ca:	fec7f0e3          	bgeu	a5,a2,5aa <printint+0x2c>
   if(neg)
- 5c4:	00088c63          	beqz	a7,5dc <printint+0x68>
+ 5ce:	00088c63          	beqz	a7,5e6 <printint+0x68>
     buf[i++] = '-';
- 5c8:	fd070793          	addi	a5,a4,-48
- 5cc:	00878733          	add	a4,a5,s0
- 5d0:	02d00793          	li	a5,45
- 5d4:	fef70823          	sb	a5,-16(a4)
- 5d8:	0028071b          	addiw	a4,a6,2
+ 5d2:	fd070793          	addi	a5,a4,-48
+ 5d6:	00878733          	add	a4,a5,s0
+ 5da:	02d00793          	li	a5,45
+ 5de:	fef70823          	sb	a5,-16(a4)
+ 5e2:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 5dc:	02e05663          	blez	a4,608 <printint+0x94>
- 5e0:	fc040913          	addi	s2,s0,-64
- 5e4:	993a                	add	s2,s2,a4
- 5e6:	19fd                	addi	s3,s3,-1
- 5e8:	99ba                	add	s3,s3,a4
- 5ea:	377d                	addiw	a4,a4,-1
- 5ec:	1702                	slli	a4,a4,0x20
- 5ee:	9301                	srli	a4,a4,0x20
- 5f0:	40e989b3          	sub	s3,s3,a4
+ 5e6:	02e05663          	blez	a4,612 <printint+0x94>
+ 5ea:	fc040913          	addi	s2,s0,-64
+ 5ee:	993a                	add	s2,s2,a4
+ 5f0:	19fd                	addi	s3,s3,-1
+ 5f2:	99ba                	add	s3,s3,a4
+ 5f4:	377d                	addiw	a4,a4,-1
+ 5f6:	1702                	slli	a4,a4,0x20
+ 5f8:	9301                	srli	a4,a4,0x20
+ 5fa:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 5f4:	fff94583          	lbu	a1,-1(s2)
- 5f8:	8526                	mv	a0,s1
- 5fa:	00000097          	auipc	ra,0x0
- 5fe:	f58080e7          	jalr	-168(ra) # 552 <putc>
+ 5fe:	fff94583          	lbu	a1,-1(s2)
+ 602:	8526                	mv	a0,s1
+ 604:	00000097          	auipc	ra,0x0
+ 608:	f58080e7          	jalr	-168(ra) # 55c <putc>
   while(--i >= 0)
- 602:	197d                	addi	s2,s2,-1
- 604:	ff3918e3          	bne	s2,s3,5f4 <printint+0x80>
+ 60c:	197d                	addi	s2,s2,-1
+ 60e:	ff3918e3          	bne	s2,s3,5fe <printint+0x80>
 }
- 608:	70e2                	ld	ra,56(sp)
- 60a:	7442                	ld	s0,48(sp)
- 60c:	74a2                	ld	s1,40(sp)
- 60e:	7902                	ld	s2,32(sp)
- 610:	69e2                	ld	s3,24(sp)
- 612:	6121                	addi	sp,sp,64
- 614:	8082                	ret
+ 612:	70e2                	ld	ra,56(sp)
+ 614:	7442                	ld	s0,48(sp)
+ 616:	74a2                	ld	s1,40(sp)
+ 618:	7902                	ld	s2,32(sp)
+ 61a:	69e2                	ld	s3,24(sp)
+ 61c:	6121                	addi	sp,sp,64
+ 61e:	8082                	ret
     x = -xx;
- 616:	40b005bb          	negw	a1,a1
+ 620:	40b005bb          	negw	a1,a1
     neg = 1;
- 61a:	4885                	li	a7,1
+ 624:	4885                	li	a7,1
     x = -xx;
- 61c:	bf8d                	j	58e <printint+0x1a>
+ 626:	bf8d                	j	598 <printint+0x1a>
 
-000000000000061e <vprintf>:
+0000000000000628 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 61e:	7119                	addi	sp,sp,-128
- 620:	fc86                	sd	ra,120(sp)
- 622:	f8a2                	sd	s0,112(sp)
- 624:	f4a6                	sd	s1,104(sp)
- 626:	f0ca                	sd	s2,96(sp)
- 628:	ecce                	sd	s3,88(sp)
- 62a:	e8d2                	sd	s4,80(sp)
- 62c:	e4d6                	sd	s5,72(sp)
- 62e:	e0da                	sd	s6,64(sp)
- 630:	fc5e                	sd	s7,56(sp)
- 632:	f862                	sd	s8,48(sp)
- 634:	f466                	sd	s9,40(sp)
- 636:	f06a                	sd	s10,32(sp)
- 638:	ec6e                	sd	s11,24(sp)
- 63a:	0100                	addi	s0,sp,128
+ 628:	7119                	addi	sp,sp,-128
+ 62a:	fc86                	sd	ra,120(sp)
+ 62c:	f8a2                	sd	s0,112(sp)
+ 62e:	f4a6                	sd	s1,104(sp)
+ 630:	f0ca                	sd	s2,96(sp)
+ 632:	ecce                	sd	s3,88(sp)
+ 634:	e8d2                	sd	s4,80(sp)
+ 636:	e4d6                	sd	s5,72(sp)
+ 638:	e0da                	sd	s6,64(sp)
+ 63a:	fc5e                	sd	s7,56(sp)
+ 63c:	f862                	sd	s8,48(sp)
+ 63e:	f466                	sd	s9,40(sp)
+ 640:	f06a                	sd	s10,32(sp)
+ 642:	ec6e                	sd	s11,24(sp)
+ 644:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 63c:	0005c903          	lbu	s2,0(a1)
- 640:	18090f63          	beqz	s2,7de <vprintf+0x1c0>
- 644:	8aaa                	mv	s5,a0
- 646:	8b32                	mv	s6,a2
- 648:	00158493          	addi	s1,a1,1
+ 646:	0005c903          	lbu	s2,0(a1)
+ 64a:	18090f63          	beqz	s2,7e8 <vprintf+0x1c0>
+ 64e:	8aaa                	mv	s5,a0
+ 650:	8b32                	mv	s6,a2
+ 652:	00158493          	addi	s1,a1,1
   state = 0;
- 64c:	4981                	li	s3,0
+ 656:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 64e:	02500a13          	li	s4,37
- 652:	4c55                	li	s8,21
- 654:	00000c97          	auipc	s9,0x0
- 658:	42cc8c93          	addi	s9,s9,1068 # a80 <malloc+0x19e>
+ 658:	02500a13          	li	s4,37
+ 65c:	4c55                	li	s8,21
+ 65e:	00000c97          	auipc	s9,0x0
+ 662:	42ac8c93          	addi	s9,s9,1066 # a88 <malloc+0x19c>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 65c:	02800d93          	li	s11,40
+ 666:	02800d93          	li	s11,40
   putc(fd, 'x');
- 660:	4d41                	li	s10,16
+ 66a:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 662:	00000b97          	auipc	s7,0x0
- 666:	476b8b93          	addi	s7,s7,1142 # ad8 <digits>
- 66a:	a839                	j	688 <vprintf+0x6a>
+ 66c:	00000b97          	auipc	s7,0x0
+ 670:	474b8b93          	addi	s7,s7,1140 # ae0 <digits>
+ 674:	a839                	j	692 <vprintf+0x6a>
         putc(fd, c);
- 66c:	85ca                	mv	a1,s2
- 66e:	8556                	mv	a0,s5
- 670:	00000097          	auipc	ra,0x0
- 674:	ee2080e7          	jalr	-286(ra) # 552 <putc>
- 678:	a019                	j	67e <vprintf+0x60>
+ 676:	85ca                	mv	a1,s2
+ 678:	8556                	mv	a0,s5
+ 67a:	00000097          	auipc	ra,0x0
+ 67e:	ee2080e7          	jalr	-286(ra) # 55c <putc>
+ 682:	a019                	j	688 <vprintf+0x60>
     } else if(state == '%'){
- 67a:	01498d63          	beq	s3,s4,694 <vprintf+0x76>
+ 684:	01498d63          	beq	s3,s4,69e <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 67e:	0485                	addi	s1,s1,1
- 680:	fff4c903          	lbu	s2,-1(s1)
- 684:	14090d63          	beqz	s2,7de <vprintf+0x1c0>
+ 688:	0485                	addi	s1,s1,1
+ 68a:	fff4c903          	lbu	s2,-1(s1)
+ 68e:	14090d63          	beqz	s2,7e8 <vprintf+0x1c0>
     if(state == 0){
- 688:	fe0999e3          	bnez	s3,67a <vprintf+0x5c>
+ 692:	fe0999e3          	bnez	s3,684 <vprintf+0x5c>
       if(c == '%'){
- 68c:	ff4910e3          	bne	s2,s4,66c <vprintf+0x4e>
+ 696:	ff4910e3          	bne	s2,s4,676 <vprintf+0x4e>
         state = '%';
- 690:	89d2                	mv	s3,s4
- 692:	b7f5                	j	67e <vprintf+0x60>
+ 69a:	89d2                	mv	s3,s4
+ 69c:	b7f5                	j	688 <vprintf+0x60>
       if(c == 'd'){
- 694:	11490c63          	beq	s2,s4,7ac <vprintf+0x18e>
- 698:	f9d9079b          	addiw	a5,s2,-99
- 69c:	0ff7f793          	zext.b	a5,a5
- 6a0:	10fc6e63          	bltu	s8,a5,7bc <vprintf+0x19e>
- 6a4:	f9d9079b          	addiw	a5,s2,-99
- 6a8:	0ff7f713          	zext.b	a4,a5
- 6ac:	10ec6863          	bltu	s8,a4,7bc <vprintf+0x19e>
- 6b0:	00271793          	slli	a5,a4,0x2
- 6b4:	97e6                	add	a5,a5,s9
- 6b6:	439c                	lw	a5,0(a5)
- 6b8:	97e6                	add	a5,a5,s9
- 6ba:	8782                	jr	a5
+ 69e:	11490c63          	beq	s2,s4,7b6 <vprintf+0x18e>
+ 6a2:	f9d9079b          	addiw	a5,s2,-99
+ 6a6:	0ff7f793          	zext.b	a5,a5
+ 6aa:	10fc6e63          	bltu	s8,a5,7c6 <vprintf+0x19e>
+ 6ae:	f9d9079b          	addiw	a5,s2,-99
+ 6b2:	0ff7f713          	zext.b	a4,a5
+ 6b6:	10ec6863          	bltu	s8,a4,7c6 <vprintf+0x19e>
+ 6ba:	00271793          	slli	a5,a4,0x2
+ 6be:	97e6                	add	a5,a5,s9
+ 6c0:	439c                	lw	a5,0(a5)
+ 6c2:	97e6                	add	a5,a5,s9
+ 6c4:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 6bc:	008b0913          	addi	s2,s6,8
- 6c0:	4685                	li	a3,1
- 6c2:	4629                	li	a2,10
- 6c4:	000b2583          	lw	a1,0(s6)
- 6c8:	8556                	mv	a0,s5
- 6ca:	00000097          	auipc	ra,0x0
- 6ce:	eaa080e7          	jalr	-342(ra) # 574 <printint>
- 6d2:	8b4a                	mv	s6,s2
+ 6c6:	008b0913          	addi	s2,s6,8
+ 6ca:	4685                	li	a3,1
+ 6cc:	4629                	li	a2,10
+ 6ce:	000b2583          	lw	a1,0(s6)
+ 6d2:	8556                	mv	a0,s5
+ 6d4:	00000097          	auipc	ra,0x0
+ 6d8:	eaa080e7          	jalr	-342(ra) # 57e <printint>
+ 6dc:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 6d4:	4981                	li	s3,0
- 6d6:	b765                	j	67e <vprintf+0x60>
+ 6de:	4981                	li	s3,0
+ 6e0:	b765                	j	688 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 6d8:	008b0913          	addi	s2,s6,8
- 6dc:	4681                	li	a3,0
- 6de:	4629                	li	a2,10
- 6e0:	000b2583          	lw	a1,0(s6)
- 6e4:	8556                	mv	a0,s5
- 6e6:	00000097          	auipc	ra,0x0
- 6ea:	e8e080e7          	jalr	-370(ra) # 574 <printint>
- 6ee:	8b4a                	mv	s6,s2
+ 6e2:	008b0913          	addi	s2,s6,8
+ 6e6:	4681                	li	a3,0
+ 6e8:	4629                	li	a2,10
+ 6ea:	000b2583          	lw	a1,0(s6)
+ 6ee:	8556                	mv	a0,s5
+ 6f0:	00000097          	auipc	ra,0x0
+ 6f4:	e8e080e7          	jalr	-370(ra) # 57e <printint>
+ 6f8:	8b4a                	mv	s6,s2
       state = 0;
- 6f0:	4981                	li	s3,0
- 6f2:	b771                	j	67e <vprintf+0x60>
+ 6fa:	4981                	li	s3,0
+ 6fc:	b771                	j	688 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 6f4:	008b0913          	addi	s2,s6,8
- 6f8:	4681                	li	a3,0
- 6fa:	866a                	mv	a2,s10
- 6fc:	000b2583          	lw	a1,0(s6)
- 700:	8556                	mv	a0,s5
- 702:	00000097          	auipc	ra,0x0
- 706:	e72080e7          	jalr	-398(ra) # 574 <printint>
- 70a:	8b4a                	mv	s6,s2
+ 6fe:	008b0913          	addi	s2,s6,8
+ 702:	4681                	li	a3,0
+ 704:	866a                	mv	a2,s10
+ 706:	000b2583          	lw	a1,0(s6)
+ 70a:	8556                	mv	a0,s5
+ 70c:	00000097          	auipc	ra,0x0
+ 710:	e72080e7          	jalr	-398(ra) # 57e <printint>
+ 714:	8b4a                	mv	s6,s2
       state = 0;
- 70c:	4981                	li	s3,0
- 70e:	bf85                	j	67e <vprintf+0x60>
+ 716:	4981                	li	s3,0
+ 718:	bf85                	j	688 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 710:	008b0793          	addi	a5,s6,8
- 714:	f8f43423          	sd	a5,-120(s0)
- 718:	000b3983          	ld	s3,0(s6)
+ 71a:	008b0793          	addi	a5,s6,8
+ 71e:	f8f43423          	sd	a5,-120(s0)
+ 722:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 71c:	03000593          	li	a1,48
- 720:	8556                	mv	a0,s5
- 722:	00000097          	auipc	ra,0x0
- 726:	e30080e7          	jalr	-464(ra) # 552 <putc>
+ 726:	03000593          	li	a1,48
+ 72a:	8556                	mv	a0,s5
+ 72c:	00000097          	auipc	ra,0x0
+ 730:	e30080e7          	jalr	-464(ra) # 55c <putc>
   putc(fd, 'x');
- 72a:	07800593          	li	a1,120
- 72e:	8556                	mv	a0,s5
- 730:	00000097          	auipc	ra,0x0
- 734:	e22080e7          	jalr	-478(ra) # 552 <putc>
- 738:	896a                	mv	s2,s10
+ 734:	07800593          	li	a1,120
+ 738:	8556                	mv	a0,s5
+ 73a:	00000097          	auipc	ra,0x0
+ 73e:	e22080e7          	jalr	-478(ra) # 55c <putc>
+ 742:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 73a:	03c9d793          	srli	a5,s3,0x3c
- 73e:	97de                	add	a5,a5,s7
- 740:	0007c583          	lbu	a1,0(a5)
- 744:	8556                	mv	a0,s5
- 746:	00000097          	auipc	ra,0x0
- 74a:	e0c080e7          	jalr	-500(ra) # 552 <putc>
+ 744:	03c9d793          	srli	a5,s3,0x3c
+ 748:	97de                	add	a5,a5,s7
+ 74a:	0007c583          	lbu	a1,0(a5)
+ 74e:	8556                	mv	a0,s5
+ 750:	00000097          	auipc	ra,0x0
+ 754:	e0c080e7          	jalr	-500(ra) # 55c <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 74e:	0992                	slli	s3,s3,0x4
- 750:	397d                	addiw	s2,s2,-1
- 752:	fe0914e3          	bnez	s2,73a <vprintf+0x11c>
+ 758:	0992                	slli	s3,s3,0x4
+ 75a:	397d                	addiw	s2,s2,-1
+ 75c:	fe0914e3          	bnez	s2,744 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 756:	f8843b03          	ld	s6,-120(s0)
+ 760:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 75a:	4981                	li	s3,0
- 75c:	b70d                	j	67e <vprintf+0x60>
+ 764:	4981                	li	s3,0
+ 766:	b70d                	j	688 <vprintf+0x60>
         s = va_arg(ap, char*);
- 75e:	008b0913          	addi	s2,s6,8
- 762:	000b3983          	ld	s3,0(s6)
+ 768:	008b0913          	addi	s2,s6,8
+ 76c:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 766:	02098163          	beqz	s3,788 <vprintf+0x16a>
+ 770:	02098163          	beqz	s3,792 <vprintf+0x16a>
         while(*s != 0){
- 76a:	0009c583          	lbu	a1,0(s3)
- 76e:	c5ad                	beqz	a1,7d8 <vprintf+0x1ba>
+ 774:	0009c583          	lbu	a1,0(s3)
+ 778:	c5ad                	beqz	a1,7e2 <vprintf+0x1ba>
           putc(fd, *s);
- 770:	8556                	mv	a0,s5
- 772:	00000097          	auipc	ra,0x0
- 776:	de0080e7          	jalr	-544(ra) # 552 <putc>
+ 77a:	8556                	mv	a0,s5
+ 77c:	00000097          	auipc	ra,0x0
+ 780:	de0080e7          	jalr	-544(ra) # 55c <putc>
           s++;
- 77a:	0985                	addi	s3,s3,1
+ 784:	0985                	addi	s3,s3,1
         while(*s != 0){
- 77c:	0009c583          	lbu	a1,0(s3)
- 780:	f9e5                	bnez	a1,770 <vprintf+0x152>
+ 786:	0009c583          	lbu	a1,0(s3)
+ 78a:	f9e5                	bnez	a1,77a <vprintf+0x152>
         s = va_arg(ap, char*);
- 782:	8b4a                	mv	s6,s2
+ 78c:	8b4a                	mv	s6,s2
       state = 0;
- 784:	4981                	li	s3,0
- 786:	bde5                	j	67e <vprintf+0x60>
+ 78e:	4981                	li	s3,0
+ 790:	bde5                	j	688 <vprintf+0x60>
           s = "(null)";
- 788:	00000997          	auipc	s3,0x0
- 78c:	2f098993          	addi	s3,s3,752 # a78 <malloc+0x196>
+ 792:	00000997          	auipc	s3,0x0
+ 796:	2ee98993          	addi	s3,s3,750 # a80 <malloc+0x194>
         while(*s != 0){
- 790:	85ee                	mv	a1,s11
- 792:	bff9                	j	770 <vprintf+0x152>
+ 79a:	85ee                	mv	a1,s11
+ 79c:	bff9                	j	77a <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 794:	008b0913          	addi	s2,s6,8
- 798:	000b4583          	lbu	a1,0(s6)
- 79c:	8556                	mv	a0,s5
- 79e:	00000097          	auipc	ra,0x0
- 7a2:	db4080e7          	jalr	-588(ra) # 552 <putc>
- 7a6:	8b4a                	mv	s6,s2
+ 79e:	008b0913          	addi	s2,s6,8
+ 7a2:	000b4583          	lbu	a1,0(s6)
+ 7a6:	8556                	mv	a0,s5
+ 7a8:	00000097          	auipc	ra,0x0
+ 7ac:	db4080e7          	jalr	-588(ra) # 55c <putc>
+ 7b0:	8b4a                	mv	s6,s2
       state = 0;
- 7a8:	4981                	li	s3,0
- 7aa:	bdd1                	j	67e <vprintf+0x60>
+ 7b2:	4981                	li	s3,0
+ 7b4:	bdd1                	j	688 <vprintf+0x60>
         putc(fd, c);
- 7ac:	85d2                	mv	a1,s4
- 7ae:	8556                	mv	a0,s5
- 7b0:	00000097          	auipc	ra,0x0
- 7b4:	da2080e7          	jalr	-606(ra) # 552 <putc>
+ 7b6:	85d2                	mv	a1,s4
+ 7b8:	8556                	mv	a0,s5
+ 7ba:	00000097          	auipc	ra,0x0
+ 7be:	da2080e7          	jalr	-606(ra) # 55c <putc>
       state = 0;
- 7b8:	4981                	li	s3,0
- 7ba:	b5d1                	j	67e <vprintf+0x60>
+ 7c2:	4981                	li	s3,0
+ 7c4:	b5d1                	j	688 <vprintf+0x60>
         putc(fd, '%');
- 7bc:	85d2                	mv	a1,s4
- 7be:	8556                	mv	a0,s5
- 7c0:	00000097          	auipc	ra,0x0
- 7c4:	d92080e7          	jalr	-622(ra) # 552 <putc>
+ 7c6:	85d2                	mv	a1,s4
+ 7c8:	8556                	mv	a0,s5
+ 7ca:	00000097          	auipc	ra,0x0
+ 7ce:	d92080e7          	jalr	-622(ra) # 55c <putc>
         putc(fd, c);
- 7c8:	85ca                	mv	a1,s2
- 7ca:	8556                	mv	a0,s5
- 7cc:	00000097          	auipc	ra,0x0
- 7d0:	d86080e7          	jalr	-634(ra) # 552 <putc>
+ 7d2:	85ca                	mv	a1,s2
+ 7d4:	8556                	mv	a0,s5
+ 7d6:	00000097          	auipc	ra,0x0
+ 7da:	d86080e7          	jalr	-634(ra) # 55c <putc>
       state = 0;
- 7d4:	4981                	li	s3,0
- 7d6:	b565                	j	67e <vprintf+0x60>
+ 7de:	4981                	li	s3,0
+ 7e0:	b565                	j	688 <vprintf+0x60>
         s = va_arg(ap, char*);
- 7d8:	8b4a                	mv	s6,s2
+ 7e2:	8b4a                	mv	s6,s2
       state = 0;
- 7da:	4981                	li	s3,0
- 7dc:	b54d                	j	67e <vprintf+0x60>
+ 7e4:	4981                	li	s3,0
+ 7e6:	b54d                	j	688 <vprintf+0x60>
     }
   }
 }
- 7de:	70e6                	ld	ra,120(sp)
- 7e0:	7446                	ld	s0,112(sp)
- 7e2:	74a6                	ld	s1,104(sp)
- 7e4:	7906                	ld	s2,96(sp)
- 7e6:	69e6                	ld	s3,88(sp)
- 7e8:	6a46                	ld	s4,80(sp)
- 7ea:	6aa6                	ld	s5,72(sp)
- 7ec:	6b06                	ld	s6,64(sp)
- 7ee:	7be2                	ld	s7,56(sp)
- 7f0:	7c42                	ld	s8,48(sp)
- 7f2:	7ca2                	ld	s9,40(sp)
- 7f4:	7d02                	ld	s10,32(sp)
- 7f6:	6de2                	ld	s11,24(sp)
- 7f8:	6109                	addi	sp,sp,128
- 7fa:	8082                	ret
-
-00000000000007fc <fprintf>:
+ 7e8:	70e6                	ld	ra,120(sp)
+ 7ea:	7446                	ld	s0,112(sp)
+ 7ec:	74a6                	ld	s1,104(sp)
+ 7ee:	7906                	ld	s2,96(sp)
+ 7f0:	69e6                	ld	s3,88(sp)
+ 7f2:	6a46                	ld	s4,80(sp)
+ 7f4:	6aa6                	ld	s5,72(sp)
+ 7f6:	6b06                	ld	s6,64(sp)
+ 7f8:	7be2                	ld	s7,56(sp)
+ 7fa:	7c42                	ld	s8,48(sp)
+ 7fc:	7ca2                	ld	s9,40(sp)
+ 7fe:	7d02                	ld	s10,32(sp)
+ 800:	6de2                	ld	s11,24(sp)
+ 802:	6109                	addi	sp,sp,128
+ 804:	8082                	ret
+
+0000000000000806 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 7fc:	715d                	addi	sp,sp,-80
- 7fe:	ec06                	sd	ra,24(sp)
- 800:	e822                	sd	s0,16(sp)
- 802:	1000                	addi	s0,sp,32
- 804:	e010                	sd	a2,0(s0)
- 806:	e414                	sd	a3,8(s0)
- 808:	e818                	sd	a4,16(s0)
- 80a:	ec1c                	sd	a5,24(s0)
- 80c:	03043023          	sd	a6,32(s0)
- 810:	03143423          	sd	a7,40(s0)
+ 806:	715d                	addi	sp,sp,-80
+ 808:	ec06                	sd	ra,24(sp)
+ 80a:	e822                	sd	s0,16(sp)
+ 80c:	1000                	addi	s0,sp,32
+ 80e:	e010                	sd	a2,0(s0)
+ 810:	e414                	sd	a3,8(s0)
+ 812:	e818                	sd	a4,16(s0)
+ 814:	ec1c                	sd	a5,24(s0)
+ 816:	03043023          	sd	a6,32(s0)
+ 81a:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 814:	8622                	mv	a2,s0
- 816:	fe843423          	sd	s0,-24(s0)
+ 81e:	8622                	mv	a2,s0
+ 820:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 81a:	00000097          	auipc	ra,0x0
- 81e:	e04080e7          	jalr	-508(ra) # 61e <vprintf>
+ 824:	00000097          	auipc	ra,0x0
+ 828:	e04080e7          	jalr	-508(ra) # 628 <vprintf>
 }
- 822:	60e2                	ld	ra,24(sp)
- 824:	6442                	ld	s0,16(sp)
- 826:	6161                	addi	sp,sp,80
- 828:	8082                	ret
+ 82c:	60e2                	ld	ra,24(sp)
+ 82e:	6442                	ld	s0,16(sp)
+ 830:	6161                	addi	sp,sp,80
+ 832:	8082                	ret
 
-000000000000082a <printf>:
+0000000000000834 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 82a:	711d                	addi	sp,sp,-96
- 82c:	ec06                	sd	ra,24(sp)
- 82e:	e822                	sd	s0,16(sp)
- 830:	1000                	addi	s0,sp,32
- 832:	e40c                	sd	a1,8(s0)
- 834:	e810                	sd	a2,16(s0)
- 836:	ec14                	sd	a3,24(s0)
- 838:	f018                	sd	a4,32(s0)
- 83a:	f41c                	sd	a5,40(s0)
- 83c:	03043823          	sd	a6,48(s0)
- 840:	03143c23          	sd	a7,56(s0)
+ 834:	711d                	addi	sp,sp,-96
+ 836:	ec06                	sd	ra,24(sp)
+ 838:	e822                	sd	s0,16(sp)
+ 83a:	1000                	addi	s0,sp,32
+ 83c:	e40c                	sd	a1,8(s0)
+ 83e:	e810                	sd	a2,16(s0)
+ 840:	ec14                	sd	a3,24(s0)
+ 842:	f018                	sd	a4,32(s0)
+ 844:	f41c                	sd	a5,40(s0)
+ 846:	03043823          	sd	a6,48(s0)
+ 84a:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 844:	00840613          	addi	a2,s0,8
- 848:	fec43423          	sd	a2,-24(s0)
+ 84e:	00840613          	addi	a2,s0,8
+ 852:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 84c:	85aa                	mv	a1,a0
- 84e:	4505                	li	a0,1
- 850:	00000097          	auipc	ra,0x0
- 854:	dce080e7          	jalr	-562(ra) # 61e <vprintf>
+ 856:	85aa                	mv	a1,a0
+ 858:	4505                	li	a0,1
+ 85a:	00000097          	auipc	ra,0x0
+ 85e:	dce080e7          	jalr	-562(ra) # 628 <vprintf>
 }
- 858:	60e2                	ld	ra,24(sp)
- 85a:	6442                	ld	s0,16(sp)
- 85c:	6125                	addi	sp,sp,96
- 85e:	8082                	ret
+ 862:	60e2                	ld	ra,24(sp)
+ 864:	6442                	ld	s0,16(sp)
+ 866:	6125                	addi	sp,sp,96
+ 868:	8082                	ret
 
-0000000000000860 <free>:
+000000000000086a <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 860:	1141                	addi	sp,sp,-16
- 862:	e422                	sd	s0,8(sp)
- 864:	0800                	addi	s0,sp,16
+ 86a:	1141                	addi	sp,sp,-16
+ 86c:	e422                	sd	s0,8(sp)
+ 86e:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 866:	ff050693          	addi	a3,a0,-16
+ 870:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 86a:	00000797          	auipc	a5,0x0
- 86e:	2867b783          	ld	a5,646(a5) # af0 <freep>
- 872:	a02d                	j	89c <free+0x3c>
+ 874:	00000797          	auipc	a5,0x0
+ 878:	2847b783          	ld	a5,644(a5) # af8 <freep>
+ 87c:	a02d                	j	8a6 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 874:	4618                	lw	a4,8(a2)
- 876:	9f2d                	addw	a4,a4,a1
- 878:	fee52c23          	sw	a4,-8(a0)
+ 87e:	4618                	lw	a4,8(a2)
+ 880:	9f2d                	addw	a4,a4,a1
+ 882:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 87c:	6398                	ld	a4,0(a5)
- 87e:	6310                	ld	a2,0(a4)
- 880:	a83d                	j	8be <free+0x5e>
+ 886:	6398                	ld	a4,0(a5)
+ 888:	6310                	ld	a2,0(a4)
+ 88a:	a83d                	j	8c8 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 882:	ff852703          	lw	a4,-8(a0)
- 886:	9f31                	addw	a4,a4,a2
- 888:	c798                	sw	a4,8(a5)
+ 88c:	ff852703          	lw	a4,-8(a0)
+ 890:	9f31                	addw	a4,a4,a2
+ 892:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 88a:	ff053683          	ld	a3,-16(a0)
- 88e:	a091                	j	8d2 <free+0x72>
+ 894:	ff053683          	ld	a3,-16(a0)
+ 898:	a091                	j	8dc <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 890:	6398                	ld	a4,0(a5)
- 892:	00e7e463          	bltu	a5,a4,89a <free+0x3a>
- 896:	00e6ea63          	bltu	a3,a4,8aa <free+0x4a>
+ 89a:	6398                	ld	a4,0(a5)
+ 89c:	00e7e463          	bltu	a5,a4,8a4 <free+0x3a>
+ 8a0:	00e6ea63          	bltu	a3,a4,8b4 <free+0x4a>
 {
- 89a:	87ba                	mv	a5,a4
+ 8a4:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 89c:	fed7fae3          	bgeu	a5,a3,890 <free+0x30>
- 8a0:	6398                	ld	a4,0(a5)
- 8a2:	00e6e463          	bltu	a3,a4,8aa <free+0x4a>
+ 8a6:	fed7fae3          	bgeu	a5,a3,89a <free+0x30>
+ 8aa:	6398                	ld	a4,0(a5)
+ 8ac:	00e6e463          	bltu	a3,a4,8b4 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 8a6:	fee7eae3          	bltu	a5,a4,89a <free+0x3a>
+ 8b0:	fee7eae3          	bltu	a5,a4,8a4 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 8aa:	ff852583          	lw	a1,-8(a0)
- 8ae:	6390                	ld	a2,0(a5)
- 8b0:	02059813          	slli	a6,a1,0x20
- 8b4:	01c85713          	srli	a4,a6,0x1c
- 8b8:	9736                	add	a4,a4,a3
- 8ba:	fae60de3          	beq	a2,a4,874 <free+0x14>
+ 8b4:	ff852583          	lw	a1,-8(a0)
+ 8b8:	6390                	ld	a2,0(a5)
+ 8ba:	02059813          	slli	a6,a1,0x20
+ 8be:	01c85713          	srli	a4,a6,0x1c
+ 8c2:	9736                	add	a4,a4,a3
+ 8c4:	fae60de3          	beq	a2,a4,87e <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 8be:	fec53823          	sd	a2,-16(a0)
+ 8c8:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 8c2:	4790                	lw	a2,8(a5)
- 8c4:	02061593          	slli	a1,a2,0x20
- 8c8:	01c5d713          	srli	a4,a1,0x1c
- 8cc:	973e                	add	a4,a4,a5
- 8ce:	fae68ae3          	beq	a3,a4,882 <free+0x22>
+ 8cc:	4790                	lw	a2,8(a5)
+ 8ce:	02061593          	slli	a1,a2,0x20
+ 8d2:	01c5d713          	srli	a4,a1,0x1c
+ 8d6:	973e                	add	a4,a4,a5
+ 8d8:	fae68ae3          	beq	a3,a4,88c <free+0x22>
     p->s.ptr = bp->s.ptr;
- 8d2:	e394                	sd	a3,0(a5)
+ 8dc:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 8d4:	00000717          	auipc	a4,0x0
- 8d8:	20f73e23          	sd	a5,540(a4) # af0 <freep>
+ 8de:	00000717          	auipc	a4,0x0
+ 8e2:	20f73d23          	sd	a5,538(a4) # af8 <freep>
 }
- 8dc:	6422                	ld	s0,8(sp)
- 8de:	0141                	addi	sp,sp,16
- 8e0:	8082                	ret
+ 8e6:	6422                	ld	s0,8(sp)
+ 8e8:	0141                	addi	sp,sp,16
+ 8ea:	8082                	ret
 
-00000000000008e2 <malloc>:
+00000000000008ec <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 8e2:	7139                	addi	sp,sp,-64
- 8e4:	fc06                	sd	ra,56(sp)
- 8e6:	f822                	sd	s0,48(sp)
- 8e8:	f426                	sd	s1,40(sp)
- 8ea:	f04a                	sd	s2,32(sp)
- 8ec:	ec4e                	sd	s3,24(sp)
- 8ee:	e852                	sd	s4,16(sp)
- 8f0:	e456                	sd	s5,8(sp)
- 8f2:	e05a                	sd	s6,0(sp)
- 8f4:	0080                	addi	s0,sp,64
+ 8ec:	7139                	addi	sp,sp,-64
+ 8ee:	fc06                	sd	ra,56(sp)
+ 8f0:	f822                	sd	s0,48(sp)
+ 8f2:	f426                	sd	s1,40(sp)
+ 8f4:	f04a                	sd	s2,32(sp)
+ 8f6:	ec4e                	sd	s3,24(sp)
+ 8f8:	e852                	sd	s4,16(sp)
+ 8fa:	e456                	sd	s5,8(sp)
+ 8fc:	e05a                	sd	s6,0(sp)
+ 8fe:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 8f6:	02051493          	slli	s1,a0,0x20
- 8fa:	9081                	srli	s1,s1,0x20
- 8fc:	04bd                	addi	s1,s1,15
- 8fe:	8091                	srli	s1,s1,0x4
- 900:	00148a1b          	addiw	s4,s1,1
- 904:	0485                	addi	s1,s1,1
+ 900:	02051493          	slli	s1,a0,0x20
+ 904:	9081                	srli	s1,s1,0x20
+ 906:	04bd                	addi	s1,s1,15
+ 908:	8091                	srli	s1,s1,0x4
+ 90a:	00148a1b          	addiw	s4,s1,1
+ 90e:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 906:	00000517          	auipc	a0,0x0
- 90a:	1ea53503          	ld	a0,490(a0) # af0 <freep>
- 90e:	c515                	beqz	a0,93a <malloc+0x58>
+ 910:	00000517          	auipc	a0,0x0
+ 914:	1e853503          	ld	a0,488(a0) # af8 <freep>
+ 918:	c515                	beqz	a0,944 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 910:	611c                	ld	a5,0(a0)
+ 91a:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 912:	4798                	lw	a4,8(a5)
- 914:	04977163          	bgeu	a4,s1,956 <malloc+0x74>
- 918:	89d2                	mv	s3,s4
- 91a:	000a071b          	sext.w	a4,s4
- 91e:	6685                	lui	a3,0x1
- 920:	00d77363          	bgeu	a4,a3,926 <malloc+0x44>
- 924:	6985                	lui	s3,0x1
- 926:	00098b1b          	sext.w	s6,s3
+ 91c:	4798                	lw	a4,8(a5)
+ 91e:	04977163          	bgeu	a4,s1,960 <malloc+0x74>
+ 922:	89d2                	mv	s3,s4
+ 924:	000a071b          	sext.w	a4,s4
+ 928:	6685                	lui	a3,0x1
+ 92a:	00d77363          	bgeu	a4,a3,930 <malloc+0x44>
+ 92e:	6985                	lui	s3,0x1
+ 930:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 92a:	0049999b          	slliw	s3,s3,0x4
+ 934:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 92e:	00000917          	auipc	s2,0x0
- 932:	1c290913          	addi	s2,s2,450 # af0 <freep>
+ 938:	00000917          	auipc	s2,0x0
+ 93c:	1c090913          	addi	s2,s2,448 # af8 <freep>
   if(p == (char*)-1)
- 936:	5afd                	li	s5,-1
- 938:	a8a5                	j	9b0 <malloc+0xce>
+ 940:	5afd                	li	s5,-1
+ 942:	a8a5                	j	9ba <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 93a:	00000797          	auipc	a5,0x0
- 93e:	1b678793          	addi	a5,a5,438 # af0 <freep>
- 942:	00000717          	auipc	a4,0x0
- 946:	1b670713          	addi	a4,a4,438 # af8 <base>
- 94a:	e398                	sd	a4,0(a5)
- 94c:	e798                	sd	a4,8(a5)
+ 944:	00000797          	auipc	a5,0x0
+ 948:	1b478793          	addi	a5,a5,436 # af8 <freep>
+ 94c:	00000717          	auipc	a4,0x0
+ 950:	1b470713          	addi	a4,a4,436 # b00 <base>
+ 954:	e398                	sd	a4,0(a5)
+ 956:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 94e:	0007a823          	sw	zero,16(a5)
+ 958:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 952:	87ba                	mv	a5,a4
- 954:	b7d1                	j	918 <malloc+0x36>
+ 95c:	87ba                	mv	a5,a4
+ 95e:	b7d1                	j	922 <malloc+0x36>
       if(p->s.size == nunits)
- 956:	02e48c63          	beq	s1,a4,98e <malloc+0xac>
+ 960:	02e48c63          	beq	s1,a4,998 <malloc+0xac>
         p->s.size -= nunits;
- 95a:	4147073b          	subw	a4,a4,s4
- 95e:	c798                	sw	a4,8(a5)
+ 964:	4147073b          	subw	a4,a4,s4
+ 968:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 960:	02071693          	slli	a3,a4,0x20
- 964:	01c6d713          	srli	a4,a3,0x1c
- 968:	97ba                	add	a5,a5,a4
+ 96a:	02071693          	slli	a3,a4,0x20
+ 96e:	01c6d713          	srli	a4,a3,0x1c
+ 972:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 96a:	0147a423          	sw	s4,8(a5)
+ 974:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 96e:	00000717          	auipc	a4,0x0
- 972:	18a73123          	sd	a0,386(a4) # af0 <freep>
+ 978:	00000717          	auipc	a4,0x0
+ 97c:	18a73023          	sd	a0,384(a4) # af8 <freep>
       return (void*)(p + 1);
- 976:	01078513          	addi	a0,a5,16
+ 980:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 97a:	70e2                	ld	ra,56(sp)
- 97c:	7442                	ld	s0,48(sp)
- 97e:	74a2                	ld	s1,40(sp)
- 980:	7902                	ld	s2,32(sp)
- 982:	69e2                	ld	s3,24(sp)
- 984:	6a42                	ld	s4,16(sp)
- 986:	6aa2                	ld	s5,8(sp)
- 988:	6b02                	ld	s6,0(sp)
- 98a:	6121                	addi	sp,sp,64
- 98c:	8082                	ret
+ 984:	70e2                	ld	ra,56(sp)
+ 986:	7442                	ld	s0,48(sp)
+ 988:	74a2                	ld	s1,40(sp)
+ 98a:	7902                	ld	s2,32(sp)
+ 98c:	69e2                	ld	s3,24(sp)
+ 98e:	6a42                	ld	s4,16(sp)
+ 990:	6aa2                	ld	s5,8(sp)
+ 992:	6b02                	ld	s6,0(sp)
+ 994:	6121                	addi	sp,sp,64
+ 996:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 98e:	6398                	ld	a4,0(a5)
- 990:	e118                	sd	a4,0(a0)
- 992:	bff1                	j	96e <malloc+0x8c>
+ 998:	6398                	ld	a4,0(a5)
+ 99a:	e118                	sd	a4,0(a0)
+ 99c:	bff1                	j	978 <malloc+0x8c>
   hp->s.size = nu;
- 994:	01652423          	sw	s6,8(a0)
+ 99e:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 998:	0541                	addi	a0,a0,16
- 99a:	00000097          	auipc	ra,0x0
- 99e:	ec6080e7          	jalr	-314(ra) # 860 <free>
+ 9a2:	0541                	addi	a0,a0,16
+ 9a4:	00000097          	auipc	ra,0x0
+ 9a8:	ec6080e7          	jalr	-314(ra) # 86a <free>
   return freep;
- 9a2:	00093503          	ld	a0,0(s2)
+ 9ac:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 9a6:	d971                	beqz	a0,97a <malloc+0x98>
+ 9b0:	d971                	beqz	a0,984 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 9a8:	611c                	ld	a5,0(a0)
+ 9b2:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 9aa:	4798                	lw	a4,8(a5)
- 9ac:	fa9775e3          	bgeu	a4,s1,956 <malloc+0x74>
+ 9b4:	4798                	lw	a4,8(a5)
+ 9b6:	fa9775e3          	bgeu	a4,s1,960 <malloc+0x74>
     if(p == freep)
- 9b0:	00093703          	ld	a4,0(s2)
- 9b4:	853e                	mv	a0,a5
- 9b6:	fef719e3          	bne	a4,a5,9a8 <malloc+0xc6>
+ 9ba:	00093703          	ld	a4,0(s2)
+ 9be:	853e                	mv	a0,a5
+ 9c0:	fef719e3          	bne	a4,a5,9b2 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 9ba:	854e                	mv	a0,s3
- 9bc:	00000097          	auipc	ra,0x0
- 9c0:	b2a080e7          	jalr	-1238(ra) # 4e6 <sbrk>
+ 9c4:	854e                	mv	a0,s3
+ 9c6:	00000097          	auipc	ra,0x0
+ 9ca:	b20080e7          	jalr	-1248(ra) # 4e6 <sbrk>
   if(p == (char*)-1)
- 9c4:	fd5518e3          	bne	a0,s5,994 <malloc+0xb2>
+ 9ce:	fd5518e3          	bne	a0,s5,99e <malloc+0xb2>
         return 0;
- 9c8:	4501                	li	a0,0
- 9ca:	bf45                	j	97a <malloc+0x98>
+ 9d2:	4501                	li	a0,0
+ 9d4:	bf45                	j	984 <malloc+0x98>
diff --git a/xv6-user/mv.sym b/xv6-user/mv.sym
index 92532f9..54de9c3 100644
--- a/xv6-user/mv.sym
+++ b/xv6-user/mv.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-00000000000009d0 .rodata
-0000000000000af0 .bss
+00000000000009d8 .rodata
+0000000000000af8 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-0000000000000552 putc
-0000000000000574 printint
-0000000000000ad8 digits
+000000000000055c putc
+000000000000057e printint
+0000000000000ae0 digits
 0000000000000000 umalloc.c
-0000000000000af0 freep
-0000000000000af8 base
+0000000000000af8 freep
+0000000000000b00 base
 00000000000001aa strcpy
-000000000000082a printf
-00000000000012e9 __global_pointer$
+0000000000000834 printf
+00000000000012f1 __global_pointer$
 0000000000000506 dev
 00000000000003b0 memmove
+0000000000000552 times
 0000000000000526 trace
 0000000000000290 gets
-0000000000000ae9 __SDATA_BEGIN__
+0000000000000af1 __SDATA_BEGIN__
 00000000000004dc getpid
 0000000000000442 memcpy
-00000000000008e2 malloc
+00000000000008ec malloc
 000000000000051e remove
 00000000000004ee sleep
 000000000000052e sysinfo
@@ -42,31 +43,31 @@
 0000000000000536 rename
 0000000000000488 write
 00000000000004b6 fstat
-00000000000007fc fprintf
+0000000000000806 fprintf
 000000000000049c kill
 00000000000001c6 strcat
-000000000000061e vprintf
+0000000000000628 vprintf
 00000000000004ca chdir
 00000000000004a4 exec
 000000000000046c wait
 000000000000047e read
 0000000000000408 memcmp
 000000000000045a fork
-0000000000000b08 __BSS_END__
+0000000000000b10 __BSS_END__
 00000000000004e6 sbrk
 00000000000004fe test_proc
 00000000000004f6 uptime
-0000000000000ae9 __bss_start
+0000000000000af1 __bss_start
 000000000000024a memset
 0000000000000000 main
 00000000000001f4 strcmp
 000000000000053e shutdown
 00000000000004d4 dup
 0000000000000516 getcwd
-0000000000000ae9 __DATA_BEGIN__
+0000000000000af1 __DATA_BEGIN__
 000000000000030a stat
-0000000000000ae9 _edata
-0000000000000b08 _end
+0000000000000af1 _edata
+0000000000000b10 _end
 0000000000000462 exit
 0000000000000350 atoi
 0000000000000220 strlen
@@ -74,4 +75,4 @@
 000000000000026c strchr
 00000000000004c0 mkdir
 0000000000000492 close
-0000000000000860 free
+000000000000086a free
diff --git a/xv6-user/rm.asm b/xv6-user/rm.asm
index 00d8e9e..248fc6b 100644
--- a/xv6-user/rm.asm
+++ b/xv6-user/rm.asm
@@ -36,14 +36,14 @@ main(int argc, char *argv[])
     if(remove(argv[i]) < 0){
       fprintf(2, "rm: %s failed to delete\n", argv[i]);
   28:	00001997          	auipc	s3,0x1
-  2c:	89098993          	addi	s3,s3,-1904 # 8b8 <malloc+0x104>
+  2c:	89898993          	addi	s3,s3,-1896 # 8c0 <malloc+0x102>
   30:	a015                	j	54 <main+0x54>
     fprintf(2, "Usage: rm files...\n");
   32:	00001597          	auipc	a1,0x1
-  36:	86e58593          	addi	a1,a1,-1938 # 8a0 <malloc+0xec>
+  36:	87658593          	addi	a1,a1,-1930 # 8a8 <malloc+0xea>
   3a:	4509                	li	a0,2
   3c:	00000097          	auipc	ra,0x0
-  40:	692080e7          	jalr	1682(ra) # 6ce <fprintf>
+  40:	69c080e7          	jalr	1692(ra) # 6d8 <fprintf>
     exit(1);
   44:	4505                	li	a0,1
   46:	00000097          	auipc	ra,0x0
@@ -61,7 +61,7 @@ main(int argc, char *argv[])
   64:	85ce                	mv	a1,s3
   66:	4509                	li	a0,2
   68:	00000097          	auipc	ra,0x0
-  6c:	666080e7          	jalr	1638(ra) # 6ce <fprintf>
+  6c:	670080e7          	jalr	1648(ra) # 6d8 <fprintf>
   70:	bff9                	j	4e <main+0x4e>
     }
   }
@@ -827,637 +827,647 @@ uname:
  ret
  422:	8082                	ret
 
-0000000000000424 <putc>:
+0000000000000424 <times>:
+.global times
+times:
+ li a7, SYS_times
+ 424:	09900893          	li	a7,153
+ ecall
+ 428:	00000073          	ecall
+ ret
+ 42c:	8082                	ret
+
+000000000000042e <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 424:	1101                	addi	sp,sp,-32
- 426:	ec06                	sd	ra,24(sp)
- 428:	e822                	sd	s0,16(sp)
- 42a:	1000                	addi	s0,sp,32
- 42c:	feb407a3          	sb	a1,-17(s0)
+ 42e:	1101                	addi	sp,sp,-32
+ 430:	ec06                	sd	ra,24(sp)
+ 432:	e822                	sd	s0,16(sp)
+ 434:	1000                	addi	s0,sp,32
+ 436:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 430:	4605                	li	a2,1
- 432:	fef40593          	addi	a1,s0,-17
- 436:	00000097          	auipc	ra,0x0
- 43a:	f24080e7          	jalr	-220(ra) # 35a <write>
+ 43a:	4605                	li	a2,1
+ 43c:	fef40593          	addi	a1,s0,-17
+ 440:	00000097          	auipc	ra,0x0
+ 444:	f1a080e7          	jalr	-230(ra) # 35a <write>
 }
- 43e:	60e2                	ld	ra,24(sp)
- 440:	6442                	ld	s0,16(sp)
- 442:	6105                	addi	sp,sp,32
- 444:	8082                	ret
+ 448:	60e2                	ld	ra,24(sp)
+ 44a:	6442                	ld	s0,16(sp)
+ 44c:	6105                	addi	sp,sp,32
+ 44e:	8082                	ret
 
-0000000000000446 <printint>:
+0000000000000450 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 446:	7139                	addi	sp,sp,-64
- 448:	fc06                	sd	ra,56(sp)
- 44a:	f822                	sd	s0,48(sp)
- 44c:	f426                	sd	s1,40(sp)
- 44e:	f04a                	sd	s2,32(sp)
- 450:	ec4e                	sd	s3,24(sp)
- 452:	0080                	addi	s0,sp,64
- 454:	84aa                	mv	s1,a0
+ 450:	7139                	addi	sp,sp,-64
+ 452:	fc06                	sd	ra,56(sp)
+ 454:	f822                	sd	s0,48(sp)
+ 456:	f426                	sd	s1,40(sp)
+ 458:	f04a                	sd	s2,32(sp)
+ 45a:	ec4e                	sd	s3,24(sp)
+ 45c:	0080                	addi	s0,sp,64
+ 45e:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 456:	c299                	beqz	a3,45c <printint+0x16>
- 458:	0805c863          	bltz	a1,4e8 <printint+0xa2>
+ 460:	c299                	beqz	a3,466 <printint+0x16>
+ 462:	0805c863          	bltz	a1,4f2 <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 45c:	2581                	sext.w	a1,a1
+ 466:	2581                	sext.w	a1,a1
   neg = 0;
- 45e:	4881                	li	a7,0
+ 468:	4881                	li	a7,0
   }
 
   i = 0;
- 460:	fc040993          	addi	s3,s0,-64
+ 46a:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 464:	86ce                	mv	a3,s3
+ 46e:	86ce                	mv	a3,s3
   i = 0;
- 466:	4701                	li	a4,0
+ 470:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 468:	2601                	sext.w	a2,a2
- 46a:	00000517          	auipc	a0,0x0
- 46e:	4ce50513          	addi	a0,a0,1230 # 938 <digits>
- 472:	883a                	mv	a6,a4
- 474:	2705                	addiw	a4,a4,1
- 476:	02c5f7bb          	remuw	a5,a1,a2
- 47a:	1782                	slli	a5,a5,0x20
- 47c:	9381                	srli	a5,a5,0x20
- 47e:	97aa                	add	a5,a5,a0
- 480:	0007c783          	lbu	a5,0(a5)
- 484:	00f68023          	sb	a5,0(a3)
+ 472:	2601                	sext.w	a2,a2
+ 474:	00000517          	auipc	a0,0x0
+ 478:	4cc50513          	addi	a0,a0,1228 # 940 <digits>
+ 47c:	883a                	mv	a6,a4
+ 47e:	2705                	addiw	a4,a4,1
+ 480:	02c5f7bb          	remuw	a5,a1,a2
+ 484:	1782                	slli	a5,a5,0x20
+ 486:	9381                	srli	a5,a5,0x20
+ 488:	97aa                	add	a5,a5,a0
+ 48a:	0007c783          	lbu	a5,0(a5)
+ 48e:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 488:	0005879b          	sext.w	a5,a1
- 48c:	02c5d5bb          	divuw	a1,a1,a2
- 490:	0685                	addi	a3,a3,1
- 492:	fec7f0e3          	bgeu	a5,a2,472 <printint+0x2c>
+ 492:	0005879b          	sext.w	a5,a1
+ 496:	02c5d5bb          	divuw	a1,a1,a2
+ 49a:	0685                	addi	a3,a3,1
+ 49c:	fec7f0e3          	bgeu	a5,a2,47c <printint+0x2c>
   if(neg)
- 496:	00088c63          	beqz	a7,4ae <printint+0x68>
+ 4a0:	00088c63          	beqz	a7,4b8 <printint+0x68>
     buf[i++] = '-';
- 49a:	fd070793          	addi	a5,a4,-48
- 49e:	00878733          	add	a4,a5,s0
- 4a2:	02d00793          	li	a5,45
- 4a6:	fef70823          	sb	a5,-16(a4)
- 4aa:	0028071b          	addiw	a4,a6,2
+ 4a4:	fd070793          	addi	a5,a4,-48
+ 4a8:	00878733          	add	a4,a5,s0
+ 4ac:	02d00793          	li	a5,45
+ 4b0:	fef70823          	sb	a5,-16(a4)
+ 4b4:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 4ae:	02e05663          	blez	a4,4da <printint+0x94>
- 4b2:	fc040913          	addi	s2,s0,-64
- 4b6:	993a                	add	s2,s2,a4
- 4b8:	19fd                	addi	s3,s3,-1
- 4ba:	99ba                	add	s3,s3,a4
- 4bc:	377d                	addiw	a4,a4,-1
- 4be:	1702                	slli	a4,a4,0x20
- 4c0:	9301                	srli	a4,a4,0x20
- 4c2:	40e989b3          	sub	s3,s3,a4
+ 4b8:	02e05663          	blez	a4,4e4 <printint+0x94>
+ 4bc:	fc040913          	addi	s2,s0,-64
+ 4c0:	993a                	add	s2,s2,a4
+ 4c2:	19fd                	addi	s3,s3,-1
+ 4c4:	99ba                	add	s3,s3,a4
+ 4c6:	377d                	addiw	a4,a4,-1
+ 4c8:	1702                	slli	a4,a4,0x20
+ 4ca:	9301                	srli	a4,a4,0x20
+ 4cc:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 4c6:	fff94583          	lbu	a1,-1(s2)
- 4ca:	8526                	mv	a0,s1
- 4cc:	00000097          	auipc	ra,0x0
- 4d0:	f58080e7          	jalr	-168(ra) # 424 <putc>
+ 4d0:	fff94583          	lbu	a1,-1(s2)
+ 4d4:	8526                	mv	a0,s1
+ 4d6:	00000097          	auipc	ra,0x0
+ 4da:	f58080e7          	jalr	-168(ra) # 42e <putc>
   while(--i >= 0)
- 4d4:	197d                	addi	s2,s2,-1
- 4d6:	ff3918e3          	bne	s2,s3,4c6 <printint+0x80>
+ 4de:	197d                	addi	s2,s2,-1
+ 4e0:	ff3918e3          	bne	s2,s3,4d0 <printint+0x80>
 }
- 4da:	70e2                	ld	ra,56(sp)
- 4dc:	7442                	ld	s0,48(sp)
- 4de:	74a2                	ld	s1,40(sp)
- 4e0:	7902                	ld	s2,32(sp)
- 4e2:	69e2                	ld	s3,24(sp)
- 4e4:	6121                	addi	sp,sp,64
- 4e6:	8082                	ret
+ 4e4:	70e2                	ld	ra,56(sp)
+ 4e6:	7442                	ld	s0,48(sp)
+ 4e8:	74a2                	ld	s1,40(sp)
+ 4ea:	7902                	ld	s2,32(sp)
+ 4ec:	69e2                	ld	s3,24(sp)
+ 4ee:	6121                	addi	sp,sp,64
+ 4f0:	8082                	ret
     x = -xx;
- 4e8:	40b005bb          	negw	a1,a1
+ 4f2:	40b005bb          	negw	a1,a1
     neg = 1;
- 4ec:	4885                	li	a7,1
+ 4f6:	4885                	li	a7,1
     x = -xx;
- 4ee:	bf8d                	j	460 <printint+0x1a>
+ 4f8:	bf8d                	j	46a <printint+0x1a>
 
-00000000000004f0 <vprintf>:
+00000000000004fa <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 4f0:	7119                	addi	sp,sp,-128
- 4f2:	fc86                	sd	ra,120(sp)
- 4f4:	f8a2                	sd	s0,112(sp)
- 4f6:	f4a6                	sd	s1,104(sp)
- 4f8:	f0ca                	sd	s2,96(sp)
- 4fa:	ecce                	sd	s3,88(sp)
- 4fc:	e8d2                	sd	s4,80(sp)
- 4fe:	e4d6                	sd	s5,72(sp)
- 500:	e0da                	sd	s6,64(sp)
- 502:	fc5e                	sd	s7,56(sp)
- 504:	f862                	sd	s8,48(sp)
- 506:	f466                	sd	s9,40(sp)
- 508:	f06a                	sd	s10,32(sp)
- 50a:	ec6e                	sd	s11,24(sp)
- 50c:	0100                	addi	s0,sp,128
+ 4fa:	7119                	addi	sp,sp,-128
+ 4fc:	fc86                	sd	ra,120(sp)
+ 4fe:	f8a2                	sd	s0,112(sp)
+ 500:	f4a6                	sd	s1,104(sp)
+ 502:	f0ca                	sd	s2,96(sp)
+ 504:	ecce                	sd	s3,88(sp)
+ 506:	e8d2                	sd	s4,80(sp)
+ 508:	e4d6                	sd	s5,72(sp)
+ 50a:	e0da                	sd	s6,64(sp)
+ 50c:	fc5e                	sd	s7,56(sp)
+ 50e:	f862                	sd	s8,48(sp)
+ 510:	f466                	sd	s9,40(sp)
+ 512:	f06a                	sd	s10,32(sp)
+ 514:	ec6e                	sd	s11,24(sp)
+ 516:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 50e:	0005c903          	lbu	s2,0(a1)
- 512:	18090f63          	beqz	s2,6b0 <vprintf+0x1c0>
- 516:	8aaa                	mv	s5,a0
- 518:	8b32                	mv	s6,a2
- 51a:	00158493          	addi	s1,a1,1
+ 518:	0005c903          	lbu	s2,0(a1)
+ 51c:	18090f63          	beqz	s2,6ba <vprintf+0x1c0>
+ 520:	8aaa                	mv	s5,a0
+ 522:	8b32                	mv	s6,a2
+ 524:	00158493          	addi	s1,a1,1
   state = 0;
- 51e:	4981                	li	s3,0
+ 528:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 520:	02500a13          	li	s4,37
- 524:	4c55                	li	s8,21
- 526:	00000c97          	auipc	s9,0x0
- 52a:	3bac8c93          	addi	s9,s9,954 # 8e0 <malloc+0x12c>
+ 52a:	02500a13          	li	s4,37
+ 52e:	4c55                	li	s8,21
+ 530:	00000c97          	auipc	s9,0x0
+ 534:	3b8c8c93          	addi	s9,s9,952 # 8e8 <malloc+0x12a>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 52e:	02800d93          	li	s11,40
+ 538:	02800d93          	li	s11,40
   putc(fd, 'x');
- 532:	4d41                	li	s10,16
+ 53c:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 534:	00000b97          	auipc	s7,0x0
- 538:	404b8b93          	addi	s7,s7,1028 # 938 <digits>
- 53c:	a839                	j	55a <vprintf+0x6a>
+ 53e:	00000b97          	auipc	s7,0x0
+ 542:	402b8b93          	addi	s7,s7,1026 # 940 <digits>
+ 546:	a839                	j	564 <vprintf+0x6a>
         putc(fd, c);
- 53e:	85ca                	mv	a1,s2
- 540:	8556                	mv	a0,s5
- 542:	00000097          	auipc	ra,0x0
- 546:	ee2080e7          	jalr	-286(ra) # 424 <putc>
- 54a:	a019                	j	550 <vprintf+0x60>
+ 548:	85ca                	mv	a1,s2
+ 54a:	8556                	mv	a0,s5
+ 54c:	00000097          	auipc	ra,0x0
+ 550:	ee2080e7          	jalr	-286(ra) # 42e <putc>
+ 554:	a019                	j	55a <vprintf+0x60>
     } else if(state == '%'){
- 54c:	01498d63          	beq	s3,s4,566 <vprintf+0x76>
+ 556:	01498d63          	beq	s3,s4,570 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 550:	0485                	addi	s1,s1,1
- 552:	fff4c903          	lbu	s2,-1(s1)
- 556:	14090d63          	beqz	s2,6b0 <vprintf+0x1c0>
+ 55a:	0485                	addi	s1,s1,1
+ 55c:	fff4c903          	lbu	s2,-1(s1)
+ 560:	14090d63          	beqz	s2,6ba <vprintf+0x1c0>
     if(state == 0){
- 55a:	fe0999e3          	bnez	s3,54c <vprintf+0x5c>
+ 564:	fe0999e3          	bnez	s3,556 <vprintf+0x5c>
       if(c == '%'){
- 55e:	ff4910e3          	bne	s2,s4,53e <vprintf+0x4e>
+ 568:	ff4910e3          	bne	s2,s4,548 <vprintf+0x4e>
         state = '%';
- 562:	89d2                	mv	s3,s4
- 564:	b7f5                	j	550 <vprintf+0x60>
+ 56c:	89d2                	mv	s3,s4
+ 56e:	b7f5                	j	55a <vprintf+0x60>
       if(c == 'd'){
- 566:	11490c63          	beq	s2,s4,67e <vprintf+0x18e>
- 56a:	f9d9079b          	addiw	a5,s2,-99
- 56e:	0ff7f793          	zext.b	a5,a5
- 572:	10fc6e63          	bltu	s8,a5,68e <vprintf+0x19e>
- 576:	f9d9079b          	addiw	a5,s2,-99
- 57a:	0ff7f713          	zext.b	a4,a5
- 57e:	10ec6863          	bltu	s8,a4,68e <vprintf+0x19e>
- 582:	00271793          	slli	a5,a4,0x2
- 586:	97e6                	add	a5,a5,s9
- 588:	439c                	lw	a5,0(a5)
- 58a:	97e6                	add	a5,a5,s9
- 58c:	8782                	jr	a5
+ 570:	11490c63          	beq	s2,s4,688 <vprintf+0x18e>
+ 574:	f9d9079b          	addiw	a5,s2,-99
+ 578:	0ff7f793          	zext.b	a5,a5
+ 57c:	10fc6e63          	bltu	s8,a5,698 <vprintf+0x19e>
+ 580:	f9d9079b          	addiw	a5,s2,-99
+ 584:	0ff7f713          	zext.b	a4,a5
+ 588:	10ec6863          	bltu	s8,a4,698 <vprintf+0x19e>
+ 58c:	00271793          	slli	a5,a4,0x2
+ 590:	97e6                	add	a5,a5,s9
+ 592:	439c                	lw	a5,0(a5)
+ 594:	97e6                	add	a5,a5,s9
+ 596:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 58e:	008b0913          	addi	s2,s6,8
- 592:	4685                	li	a3,1
- 594:	4629                	li	a2,10
- 596:	000b2583          	lw	a1,0(s6)
- 59a:	8556                	mv	a0,s5
- 59c:	00000097          	auipc	ra,0x0
- 5a0:	eaa080e7          	jalr	-342(ra) # 446 <printint>
- 5a4:	8b4a                	mv	s6,s2
+ 598:	008b0913          	addi	s2,s6,8
+ 59c:	4685                	li	a3,1
+ 59e:	4629                	li	a2,10
+ 5a0:	000b2583          	lw	a1,0(s6)
+ 5a4:	8556                	mv	a0,s5
+ 5a6:	00000097          	auipc	ra,0x0
+ 5aa:	eaa080e7          	jalr	-342(ra) # 450 <printint>
+ 5ae:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 5a6:	4981                	li	s3,0
- 5a8:	b765                	j	550 <vprintf+0x60>
+ 5b0:	4981                	li	s3,0
+ 5b2:	b765                	j	55a <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 5aa:	008b0913          	addi	s2,s6,8
- 5ae:	4681                	li	a3,0
- 5b0:	4629                	li	a2,10
- 5b2:	000b2583          	lw	a1,0(s6)
- 5b6:	8556                	mv	a0,s5
- 5b8:	00000097          	auipc	ra,0x0
- 5bc:	e8e080e7          	jalr	-370(ra) # 446 <printint>
- 5c0:	8b4a                	mv	s6,s2
+ 5b4:	008b0913          	addi	s2,s6,8
+ 5b8:	4681                	li	a3,0
+ 5ba:	4629                	li	a2,10
+ 5bc:	000b2583          	lw	a1,0(s6)
+ 5c0:	8556                	mv	a0,s5
+ 5c2:	00000097          	auipc	ra,0x0
+ 5c6:	e8e080e7          	jalr	-370(ra) # 450 <printint>
+ 5ca:	8b4a                	mv	s6,s2
       state = 0;
- 5c2:	4981                	li	s3,0
- 5c4:	b771                	j	550 <vprintf+0x60>
+ 5cc:	4981                	li	s3,0
+ 5ce:	b771                	j	55a <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 5c6:	008b0913          	addi	s2,s6,8
- 5ca:	4681                	li	a3,0
- 5cc:	866a                	mv	a2,s10
- 5ce:	000b2583          	lw	a1,0(s6)
- 5d2:	8556                	mv	a0,s5
- 5d4:	00000097          	auipc	ra,0x0
- 5d8:	e72080e7          	jalr	-398(ra) # 446 <printint>
- 5dc:	8b4a                	mv	s6,s2
+ 5d0:	008b0913          	addi	s2,s6,8
+ 5d4:	4681                	li	a3,0
+ 5d6:	866a                	mv	a2,s10
+ 5d8:	000b2583          	lw	a1,0(s6)
+ 5dc:	8556                	mv	a0,s5
+ 5de:	00000097          	auipc	ra,0x0
+ 5e2:	e72080e7          	jalr	-398(ra) # 450 <printint>
+ 5e6:	8b4a                	mv	s6,s2
       state = 0;
- 5de:	4981                	li	s3,0
- 5e0:	bf85                	j	550 <vprintf+0x60>
+ 5e8:	4981                	li	s3,0
+ 5ea:	bf85                	j	55a <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 5e2:	008b0793          	addi	a5,s6,8
- 5e6:	f8f43423          	sd	a5,-120(s0)
- 5ea:	000b3983          	ld	s3,0(s6)
+ 5ec:	008b0793          	addi	a5,s6,8
+ 5f0:	f8f43423          	sd	a5,-120(s0)
+ 5f4:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 5ee:	03000593          	li	a1,48
- 5f2:	8556                	mv	a0,s5
- 5f4:	00000097          	auipc	ra,0x0
- 5f8:	e30080e7          	jalr	-464(ra) # 424 <putc>
+ 5f8:	03000593          	li	a1,48
+ 5fc:	8556                	mv	a0,s5
+ 5fe:	00000097          	auipc	ra,0x0
+ 602:	e30080e7          	jalr	-464(ra) # 42e <putc>
   putc(fd, 'x');
- 5fc:	07800593          	li	a1,120
- 600:	8556                	mv	a0,s5
- 602:	00000097          	auipc	ra,0x0
- 606:	e22080e7          	jalr	-478(ra) # 424 <putc>
- 60a:	896a                	mv	s2,s10
+ 606:	07800593          	li	a1,120
+ 60a:	8556                	mv	a0,s5
+ 60c:	00000097          	auipc	ra,0x0
+ 610:	e22080e7          	jalr	-478(ra) # 42e <putc>
+ 614:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 60c:	03c9d793          	srli	a5,s3,0x3c
- 610:	97de                	add	a5,a5,s7
- 612:	0007c583          	lbu	a1,0(a5)
- 616:	8556                	mv	a0,s5
- 618:	00000097          	auipc	ra,0x0
- 61c:	e0c080e7          	jalr	-500(ra) # 424 <putc>
+ 616:	03c9d793          	srli	a5,s3,0x3c
+ 61a:	97de                	add	a5,a5,s7
+ 61c:	0007c583          	lbu	a1,0(a5)
+ 620:	8556                	mv	a0,s5
+ 622:	00000097          	auipc	ra,0x0
+ 626:	e0c080e7          	jalr	-500(ra) # 42e <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 620:	0992                	slli	s3,s3,0x4
- 622:	397d                	addiw	s2,s2,-1
- 624:	fe0914e3          	bnez	s2,60c <vprintf+0x11c>
+ 62a:	0992                	slli	s3,s3,0x4
+ 62c:	397d                	addiw	s2,s2,-1
+ 62e:	fe0914e3          	bnez	s2,616 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 628:	f8843b03          	ld	s6,-120(s0)
+ 632:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 62c:	4981                	li	s3,0
- 62e:	b70d                	j	550 <vprintf+0x60>
+ 636:	4981                	li	s3,0
+ 638:	b70d                	j	55a <vprintf+0x60>
         s = va_arg(ap, char*);
- 630:	008b0913          	addi	s2,s6,8
- 634:	000b3983          	ld	s3,0(s6)
+ 63a:	008b0913          	addi	s2,s6,8
+ 63e:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 638:	02098163          	beqz	s3,65a <vprintf+0x16a>
+ 642:	02098163          	beqz	s3,664 <vprintf+0x16a>
         while(*s != 0){
- 63c:	0009c583          	lbu	a1,0(s3)
- 640:	c5ad                	beqz	a1,6aa <vprintf+0x1ba>
+ 646:	0009c583          	lbu	a1,0(s3)
+ 64a:	c5ad                	beqz	a1,6b4 <vprintf+0x1ba>
           putc(fd, *s);
- 642:	8556                	mv	a0,s5
- 644:	00000097          	auipc	ra,0x0
- 648:	de0080e7          	jalr	-544(ra) # 424 <putc>
+ 64c:	8556                	mv	a0,s5
+ 64e:	00000097          	auipc	ra,0x0
+ 652:	de0080e7          	jalr	-544(ra) # 42e <putc>
           s++;
- 64c:	0985                	addi	s3,s3,1
+ 656:	0985                	addi	s3,s3,1
         while(*s != 0){
- 64e:	0009c583          	lbu	a1,0(s3)
- 652:	f9e5                	bnez	a1,642 <vprintf+0x152>
+ 658:	0009c583          	lbu	a1,0(s3)
+ 65c:	f9e5                	bnez	a1,64c <vprintf+0x152>
         s = va_arg(ap, char*);
- 654:	8b4a                	mv	s6,s2
+ 65e:	8b4a                	mv	s6,s2
       state = 0;
- 656:	4981                	li	s3,0
- 658:	bde5                	j	550 <vprintf+0x60>
+ 660:	4981                	li	s3,0
+ 662:	bde5                	j	55a <vprintf+0x60>
           s = "(null)";
- 65a:	00000997          	auipc	s3,0x0
- 65e:	27e98993          	addi	s3,s3,638 # 8d8 <malloc+0x124>
+ 664:	00000997          	auipc	s3,0x0
+ 668:	27c98993          	addi	s3,s3,636 # 8e0 <malloc+0x122>
         while(*s != 0){
- 662:	85ee                	mv	a1,s11
- 664:	bff9                	j	642 <vprintf+0x152>
+ 66c:	85ee                	mv	a1,s11
+ 66e:	bff9                	j	64c <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 666:	008b0913          	addi	s2,s6,8
- 66a:	000b4583          	lbu	a1,0(s6)
- 66e:	8556                	mv	a0,s5
- 670:	00000097          	auipc	ra,0x0
- 674:	db4080e7          	jalr	-588(ra) # 424 <putc>
- 678:	8b4a                	mv	s6,s2
+ 670:	008b0913          	addi	s2,s6,8
+ 674:	000b4583          	lbu	a1,0(s6)
+ 678:	8556                	mv	a0,s5
+ 67a:	00000097          	auipc	ra,0x0
+ 67e:	db4080e7          	jalr	-588(ra) # 42e <putc>
+ 682:	8b4a                	mv	s6,s2
       state = 0;
- 67a:	4981                	li	s3,0
- 67c:	bdd1                	j	550 <vprintf+0x60>
+ 684:	4981                	li	s3,0
+ 686:	bdd1                	j	55a <vprintf+0x60>
         putc(fd, c);
- 67e:	85d2                	mv	a1,s4
- 680:	8556                	mv	a0,s5
- 682:	00000097          	auipc	ra,0x0
- 686:	da2080e7          	jalr	-606(ra) # 424 <putc>
+ 688:	85d2                	mv	a1,s4
+ 68a:	8556                	mv	a0,s5
+ 68c:	00000097          	auipc	ra,0x0
+ 690:	da2080e7          	jalr	-606(ra) # 42e <putc>
       state = 0;
- 68a:	4981                	li	s3,0
- 68c:	b5d1                	j	550 <vprintf+0x60>
+ 694:	4981                	li	s3,0
+ 696:	b5d1                	j	55a <vprintf+0x60>
         putc(fd, '%');
- 68e:	85d2                	mv	a1,s4
- 690:	8556                	mv	a0,s5
- 692:	00000097          	auipc	ra,0x0
- 696:	d92080e7          	jalr	-622(ra) # 424 <putc>
+ 698:	85d2                	mv	a1,s4
+ 69a:	8556                	mv	a0,s5
+ 69c:	00000097          	auipc	ra,0x0
+ 6a0:	d92080e7          	jalr	-622(ra) # 42e <putc>
         putc(fd, c);
- 69a:	85ca                	mv	a1,s2
- 69c:	8556                	mv	a0,s5
- 69e:	00000097          	auipc	ra,0x0
- 6a2:	d86080e7          	jalr	-634(ra) # 424 <putc>
+ 6a4:	85ca                	mv	a1,s2
+ 6a6:	8556                	mv	a0,s5
+ 6a8:	00000097          	auipc	ra,0x0
+ 6ac:	d86080e7          	jalr	-634(ra) # 42e <putc>
       state = 0;
- 6a6:	4981                	li	s3,0
- 6a8:	b565                	j	550 <vprintf+0x60>
+ 6b0:	4981                	li	s3,0
+ 6b2:	b565                	j	55a <vprintf+0x60>
         s = va_arg(ap, char*);
- 6aa:	8b4a                	mv	s6,s2
+ 6b4:	8b4a                	mv	s6,s2
       state = 0;
- 6ac:	4981                	li	s3,0
- 6ae:	b54d                	j	550 <vprintf+0x60>
+ 6b6:	4981                	li	s3,0
+ 6b8:	b54d                	j	55a <vprintf+0x60>
     }
   }
 }
- 6b0:	70e6                	ld	ra,120(sp)
- 6b2:	7446                	ld	s0,112(sp)
- 6b4:	74a6                	ld	s1,104(sp)
- 6b6:	7906                	ld	s2,96(sp)
- 6b8:	69e6                	ld	s3,88(sp)
- 6ba:	6a46                	ld	s4,80(sp)
- 6bc:	6aa6                	ld	s5,72(sp)
- 6be:	6b06                	ld	s6,64(sp)
- 6c0:	7be2                	ld	s7,56(sp)
- 6c2:	7c42                	ld	s8,48(sp)
- 6c4:	7ca2                	ld	s9,40(sp)
- 6c6:	7d02                	ld	s10,32(sp)
- 6c8:	6de2                	ld	s11,24(sp)
- 6ca:	6109                	addi	sp,sp,128
- 6cc:	8082                	ret
-
-00000000000006ce <fprintf>:
+ 6ba:	70e6                	ld	ra,120(sp)
+ 6bc:	7446                	ld	s0,112(sp)
+ 6be:	74a6                	ld	s1,104(sp)
+ 6c0:	7906                	ld	s2,96(sp)
+ 6c2:	69e6                	ld	s3,88(sp)
+ 6c4:	6a46                	ld	s4,80(sp)
+ 6c6:	6aa6                	ld	s5,72(sp)
+ 6c8:	6b06                	ld	s6,64(sp)
+ 6ca:	7be2                	ld	s7,56(sp)
+ 6cc:	7c42                	ld	s8,48(sp)
+ 6ce:	7ca2                	ld	s9,40(sp)
+ 6d0:	7d02                	ld	s10,32(sp)
+ 6d2:	6de2                	ld	s11,24(sp)
+ 6d4:	6109                	addi	sp,sp,128
+ 6d6:	8082                	ret
+
+00000000000006d8 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 6ce:	715d                	addi	sp,sp,-80
- 6d0:	ec06                	sd	ra,24(sp)
- 6d2:	e822                	sd	s0,16(sp)
- 6d4:	1000                	addi	s0,sp,32
- 6d6:	e010                	sd	a2,0(s0)
- 6d8:	e414                	sd	a3,8(s0)
- 6da:	e818                	sd	a4,16(s0)
- 6dc:	ec1c                	sd	a5,24(s0)
- 6de:	03043023          	sd	a6,32(s0)
- 6e2:	03143423          	sd	a7,40(s0)
+ 6d8:	715d                	addi	sp,sp,-80
+ 6da:	ec06                	sd	ra,24(sp)
+ 6dc:	e822                	sd	s0,16(sp)
+ 6de:	1000                	addi	s0,sp,32
+ 6e0:	e010                	sd	a2,0(s0)
+ 6e2:	e414                	sd	a3,8(s0)
+ 6e4:	e818                	sd	a4,16(s0)
+ 6e6:	ec1c                	sd	a5,24(s0)
+ 6e8:	03043023          	sd	a6,32(s0)
+ 6ec:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6e6:	8622                	mv	a2,s0
- 6e8:	fe843423          	sd	s0,-24(s0)
+ 6f0:	8622                	mv	a2,s0
+ 6f2:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 6ec:	00000097          	auipc	ra,0x0
- 6f0:	e04080e7          	jalr	-508(ra) # 4f0 <vprintf>
+ 6f6:	00000097          	auipc	ra,0x0
+ 6fa:	e04080e7          	jalr	-508(ra) # 4fa <vprintf>
 }
- 6f4:	60e2                	ld	ra,24(sp)
- 6f6:	6442                	ld	s0,16(sp)
- 6f8:	6161                	addi	sp,sp,80
- 6fa:	8082                	ret
+ 6fe:	60e2                	ld	ra,24(sp)
+ 700:	6442                	ld	s0,16(sp)
+ 702:	6161                	addi	sp,sp,80
+ 704:	8082                	ret
 
-00000000000006fc <printf>:
+0000000000000706 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 6fc:	711d                	addi	sp,sp,-96
- 6fe:	ec06                	sd	ra,24(sp)
- 700:	e822                	sd	s0,16(sp)
- 702:	1000                	addi	s0,sp,32
- 704:	e40c                	sd	a1,8(s0)
- 706:	e810                	sd	a2,16(s0)
- 708:	ec14                	sd	a3,24(s0)
- 70a:	f018                	sd	a4,32(s0)
- 70c:	f41c                	sd	a5,40(s0)
- 70e:	03043823          	sd	a6,48(s0)
- 712:	03143c23          	sd	a7,56(s0)
+ 706:	711d                	addi	sp,sp,-96
+ 708:	ec06                	sd	ra,24(sp)
+ 70a:	e822                	sd	s0,16(sp)
+ 70c:	1000                	addi	s0,sp,32
+ 70e:	e40c                	sd	a1,8(s0)
+ 710:	e810                	sd	a2,16(s0)
+ 712:	ec14                	sd	a3,24(s0)
+ 714:	f018                	sd	a4,32(s0)
+ 716:	f41c                	sd	a5,40(s0)
+ 718:	03043823          	sd	a6,48(s0)
+ 71c:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 716:	00840613          	addi	a2,s0,8
- 71a:	fec43423          	sd	a2,-24(s0)
+ 720:	00840613          	addi	a2,s0,8
+ 724:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 71e:	85aa                	mv	a1,a0
- 720:	4505                	li	a0,1
- 722:	00000097          	auipc	ra,0x0
- 726:	dce080e7          	jalr	-562(ra) # 4f0 <vprintf>
+ 728:	85aa                	mv	a1,a0
+ 72a:	4505                	li	a0,1
+ 72c:	00000097          	auipc	ra,0x0
+ 730:	dce080e7          	jalr	-562(ra) # 4fa <vprintf>
 }
- 72a:	60e2                	ld	ra,24(sp)
- 72c:	6442                	ld	s0,16(sp)
- 72e:	6125                	addi	sp,sp,96
- 730:	8082                	ret
+ 734:	60e2                	ld	ra,24(sp)
+ 736:	6442                	ld	s0,16(sp)
+ 738:	6125                	addi	sp,sp,96
+ 73a:	8082                	ret
 
-0000000000000732 <free>:
+000000000000073c <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 732:	1141                	addi	sp,sp,-16
- 734:	e422                	sd	s0,8(sp)
- 736:	0800                	addi	s0,sp,16
+ 73c:	1141                	addi	sp,sp,-16
+ 73e:	e422                	sd	s0,8(sp)
+ 740:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 738:	ff050693          	addi	a3,a0,-16
+ 742:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 73c:	00000797          	auipc	a5,0x0
- 740:	2147b783          	ld	a5,532(a5) # 950 <freep>
- 744:	a02d                	j	76e <free+0x3c>
+ 746:	00000797          	auipc	a5,0x0
+ 74a:	2127b783          	ld	a5,530(a5) # 958 <freep>
+ 74e:	a02d                	j	778 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 746:	4618                	lw	a4,8(a2)
- 748:	9f2d                	addw	a4,a4,a1
- 74a:	fee52c23          	sw	a4,-8(a0)
+ 750:	4618                	lw	a4,8(a2)
+ 752:	9f2d                	addw	a4,a4,a1
+ 754:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 74e:	6398                	ld	a4,0(a5)
- 750:	6310                	ld	a2,0(a4)
- 752:	a83d                	j	790 <free+0x5e>
+ 758:	6398                	ld	a4,0(a5)
+ 75a:	6310                	ld	a2,0(a4)
+ 75c:	a83d                	j	79a <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 754:	ff852703          	lw	a4,-8(a0)
- 758:	9f31                	addw	a4,a4,a2
- 75a:	c798                	sw	a4,8(a5)
+ 75e:	ff852703          	lw	a4,-8(a0)
+ 762:	9f31                	addw	a4,a4,a2
+ 764:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 75c:	ff053683          	ld	a3,-16(a0)
- 760:	a091                	j	7a4 <free+0x72>
+ 766:	ff053683          	ld	a3,-16(a0)
+ 76a:	a091                	j	7ae <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 762:	6398                	ld	a4,0(a5)
- 764:	00e7e463          	bltu	a5,a4,76c <free+0x3a>
- 768:	00e6ea63          	bltu	a3,a4,77c <free+0x4a>
+ 76c:	6398                	ld	a4,0(a5)
+ 76e:	00e7e463          	bltu	a5,a4,776 <free+0x3a>
+ 772:	00e6ea63          	bltu	a3,a4,786 <free+0x4a>
 {
- 76c:	87ba                	mv	a5,a4
+ 776:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 76e:	fed7fae3          	bgeu	a5,a3,762 <free+0x30>
- 772:	6398                	ld	a4,0(a5)
- 774:	00e6e463          	bltu	a3,a4,77c <free+0x4a>
+ 778:	fed7fae3          	bgeu	a5,a3,76c <free+0x30>
+ 77c:	6398                	ld	a4,0(a5)
+ 77e:	00e6e463          	bltu	a3,a4,786 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 778:	fee7eae3          	bltu	a5,a4,76c <free+0x3a>
+ 782:	fee7eae3          	bltu	a5,a4,776 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 77c:	ff852583          	lw	a1,-8(a0)
- 780:	6390                	ld	a2,0(a5)
- 782:	02059813          	slli	a6,a1,0x20
- 786:	01c85713          	srli	a4,a6,0x1c
- 78a:	9736                	add	a4,a4,a3
- 78c:	fae60de3          	beq	a2,a4,746 <free+0x14>
+ 786:	ff852583          	lw	a1,-8(a0)
+ 78a:	6390                	ld	a2,0(a5)
+ 78c:	02059813          	slli	a6,a1,0x20
+ 790:	01c85713          	srli	a4,a6,0x1c
+ 794:	9736                	add	a4,a4,a3
+ 796:	fae60de3          	beq	a2,a4,750 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 790:	fec53823          	sd	a2,-16(a0)
+ 79a:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 794:	4790                	lw	a2,8(a5)
- 796:	02061593          	slli	a1,a2,0x20
- 79a:	01c5d713          	srli	a4,a1,0x1c
- 79e:	973e                	add	a4,a4,a5
- 7a0:	fae68ae3          	beq	a3,a4,754 <free+0x22>
+ 79e:	4790                	lw	a2,8(a5)
+ 7a0:	02061593          	slli	a1,a2,0x20
+ 7a4:	01c5d713          	srli	a4,a1,0x1c
+ 7a8:	973e                	add	a4,a4,a5
+ 7aa:	fae68ae3          	beq	a3,a4,75e <free+0x22>
     p->s.ptr = bp->s.ptr;
- 7a4:	e394                	sd	a3,0(a5)
+ 7ae:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 7a6:	00000717          	auipc	a4,0x0
- 7aa:	1af73523          	sd	a5,426(a4) # 950 <freep>
+ 7b0:	00000717          	auipc	a4,0x0
+ 7b4:	1af73423          	sd	a5,424(a4) # 958 <freep>
 }
- 7ae:	6422                	ld	s0,8(sp)
- 7b0:	0141                	addi	sp,sp,16
- 7b2:	8082                	ret
+ 7b8:	6422                	ld	s0,8(sp)
+ 7ba:	0141                	addi	sp,sp,16
+ 7bc:	8082                	ret
 
-00000000000007b4 <malloc>:
+00000000000007be <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 7b4:	7139                	addi	sp,sp,-64
- 7b6:	fc06                	sd	ra,56(sp)
- 7b8:	f822                	sd	s0,48(sp)
- 7ba:	f426                	sd	s1,40(sp)
- 7bc:	f04a                	sd	s2,32(sp)
- 7be:	ec4e                	sd	s3,24(sp)
- 7c0:	e852                	sd	s4,16(sp)
- 7c2:	e456                	sd	s5,8(sp)
- 7c4:	e05a                	sd	s6,0(sp)
- 7c6:	0080                	addi	s0,sp,64
+ 7be:	7139                	addi	sp,sp,-64
+ 7c0:	fc06                	sd	ra,56(sp)
+ 7c2:	f822                	sd	s0,48(sp)
+ 7c4:	f426                	sd	s1,40(sp)
+ 7c6:	f04a                	sd	s2,32(sp)
+ 7c8:	ec4e                	sd	s3,24(sp)
+ 7ca:	e852                	sd	s4,16(sp)
+ 7cc:	e456                	sd	s5,8(sp)
+ 7ce:	e05a                	sd	s6,0(sp)
+ 7d0:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 7c8:	02051493          	slli	s1,a0,0x20
- 7cc:	9081                	srli	s1,s1,0x20
- 7ce:	04bd                	addi	s1,s1,15
- 7d0:	8091                	srli	s1,s1,0x4
- 7d2:	00148a1b          	addiw	s4,s1,1
- 7d6:	0485                	addi	s1,s1,1
+ 7d2:	02051493          	slli	s1,a0,0x20
+ 7d6:	9081                	srli	s1,s1,0x20
+ 7d8:	04bd                	addi	s1,s1,15
+ 7da:	8091                	srli	s1,s1,0x4
+ 7dc:	00148a1b          	addiw	s4,s1,1
+ 7e0:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 7d8:	00000517          	auipc	a0,0x0
- 7dc:	17853503          	ld	a0,376(a0) # 950 <freep>
- 7e0:	c515                	beqz	a0,80c <malloc+0x58>
+ 7e2:	00000517          	auipc	a0,0x0
+ 7e6:	17653503          	ld	a0,374(a0) # 958 <freep>
+ 7ea:	c515                	beqz	a0,816 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 7e2:	611c                	ld	a5,0(a0)
+ 7ec:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 7e4:	4798                	lw	a4,8(a5)
- 7e6:	04977163          	bgeu	a4,s1,828 <malloc+0x74>
- 7ea:	89d2                	mv	s3,s4
- 7ec:	000a071b          	sext.w	a4,s4
- 7f0:	6685                	lui	a3,0x1
- 7f2:	00d77363          	bgeu	a4,a3,7f8 <malloc+0x44>
- 7f6:	6985                	lui	s3,0x1
- 7f8:	00098b1b          	sext.w	s6,s3
+ 7ee:	4798                	lw	a4,8(a5)
+ 7f0:	04977163          	bgeu	a4,s1,832 <malloc+0x74>
+ 7f4:	89d2                	mv	s3,s4
+ 7f6:	000a071b          	sext.w	a4,s4
+ 7fa:	6685                	lui	a3,0x1
+ 7fc:	00d77363          	bgeu	a4,a3,802 <malloc+0x44>
+ 800:	6985                	lui	s3,0x1
+ 802:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 7fc:	0049999b          	slliw	s3,s3,0x4
+ 806:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 800:	00000917          	auipc	s2,0x0
- 804:	15090913          	addi	s2,s2,336 # 950 <freep>
+ 80a:	00000917          	auipc	s2,0x0
+ 80e:	14e90913          	addi	s2,s2,334 # 958 <freep>
   if(p == (char*)-1)
- 808:	5afd                	li	s5,-1
- 80a:	a8a5                	j	882 <malloc+0xce>
+ 812:	5afd                	li	s5,-1
+ 814:	a8a5                	j	88c <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 80c:	00000797          	auipc	a5,0x0
- 810:	14478793          	addi	a5,a5,324 # 950 <freep>
- 814:	00000717          	auipc	a4,0x0
- 818:	14470713          	addi	a4,a4,324 # 958 <base>
- 81c:	e398                	sd	a4,0(a5)
- 81e:	e798                	sd	a4,8(a5)
+ 816:	00000797          	auipc	a5,0x0
+ 81a:	14278793          	addi	a5,a5,322 # 958 <freep>
+ 81e:	00000717          	auipc	a4,0x0
+ 822:	14270713          	addi	a4,a4,322 # 960 <base>
+ 826:	e398                	sd	a4,0(a5)
+ 828:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 820:	0007a823          	sw	zero,16(a5)
+ 82a:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 824:	87ba                	mv	a5,a4
- 826:	b7d1                	j	7ea <malloc+0x36>
+ 82e:	87ba                	mv	a5,a4
+ 830:	b7d1                	j	7f4 <malloc+0x36>
       if(p->s.size == nunits)
- 828:	02e48c63          	beq	s1,a4,860 <malloc+0xac>
+ 832:	02e48c63          	beq	s1,a4,86a <malloc+0xac>
         p->s.size -= nunits;
- 82c:	4147073b          	subw	a4,a4,s4
- 830:	c798                	sw	a4,8(a5)
+ 836:	4147073b          	subw	a4,a4,s4
+ 83a:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 832:	02071693          	slli	a3,a4,0x20
- 836:	01c6d713          	srli	a4,a3,0x1c
- 83a:	97ba                	add	a5,a5,a4
+ 83c:	02071693          	slli	a3,a4,0x20
+ 840:	01c6d713          	srli	a4,a3,0x1c
+ 844:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 83c:	0147a423          	sw	s4,8(a5)
+ 846:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 840:	00000717          	auipc	a4,0x0
- 844:	10a73823          	sd	a0,272(a4) # 950 <freep>
+ 84a:	00000717          	auipc	a4,0x0
+ 84e:	10a73723          	sd	a0,270(a4) # 958 <freep>
       return (void*)(p + 1);
- 848:	01078513          	addi	a0,a5,16
+ 852:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 84c:	70e2                	ld	ra,56(sp)
- 84e:	7442                	ld	s0,48(sp)
- 850:	74a2                	ld	s1,40(sp)
- 852:	7902                	ld	s2,32(sp)
- 854:	69e2                	ld	s3,24(sp)
- 856:	6a42                	ld	s4,16(sp)
- 858:	6aa2                	ld	s5,8(sp)
- 85a:	6b02                	ld	s6,0(sp)
- 85c:	6121                	addi	sp,sp,64
- 85e:	8082                	ret
+ 856:	70e2                	ld	ra,56(sp)
+ 858:	7442                	ld	s0,48(sp)
+ 85a:	74a2                	ld	s1,40(sp)
+ 85c:	7902                	ld	s2,32(sp)
+ 85e:	69e2                	ld	s3,24(sp)
+ 860:	6a42                	ld	s4,16(sp)
+ 862:	6aa2                	ld	s5,8(sp)
+ 864:	6b02                	ld	s6,0(sp)
+ 866:	6121                	addi	sp,sp,64
+ 868:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 860:	6398                	ld	a4,0(a5)
- 862:	e118                	sd	a4,0(a0)
- 864:	bff1                	j	840 <malloc+0x8c>
+ 86a:	6398                	ld	a4,0(a5)
+ 86c:	e118                	sd	a4,0(a0)
+ 86e:	bff1                	j	84a <malloc+0x8c>
   hp->s.size = nu;
- 866:	01652423          	sw	s6,8(a0)
+ 870:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 86a:	0541                	addi	a0,a0,16
- 86c:	00000097          	auipc	ra,0x0
- 870:	ec6080e7          	jalr	-314(ra) # 732 <free>
+ 874:	0541                	addi	a0,a0,16
+ 876:	00000097          	auipc	ra,0x0
+ 87a:	ec6080e7          	jalr	-314(ra) # 73c <free>
   return freep;
- 874:	00093503          	ld	a0,0(s2)
+ 87e:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 878:	d971                	beqz	a0,84c <malloc+0x98>
+ 882:	d971                	beqz	a0,856 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 87a:	611c                	ld	a5,0(a0)
+ 884:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 87c:	4798                	lw	a4,8(a5)
- 87e:	fa9775e3          	bgeu	a4,s1,828 <malloc+0x74>
+ 886:	4798                	lw	a4,8(a5)
+ 888:	fa9775e3          	bgeu	a4,s1,832 <malloc+0x74>
     if(p == freep)
- 882:	00093703          	ld	a4,0(s2)
- 886:	853e                	mv	a0,a5
- 888:	fef719e3          	bne	a4,a5,87a <malloc+0xc6>
+ 88c:	00093703          	ld	a4,0(s2)
+ 890:	853e                	mv	a0,a5
+ 892:	fef719e3          	bne	a4,a5,884 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 88c:	854e                	mv	a0,s3
- 88e:	00000097          	auipc	ra,0x0
- 892:	b2a080e7          	jalr	-1238(ra) # 3b8 <sbrk>
+ 896:	854e                	mv	a0,s3
+ 898:	00000097          	auipc	ra,0x0
+ 89c:	b20080e7          	jalr	-1248(ra) # 3b8 <sbrk>
   if(p == (char*)-1)
- 896:	fd5518e3          	bne	a0,s5,866 <malloc+0xb2>
+ 8a0:	fd5518e3          	bne	a0,s5,870 <malloc+0xb2>
         return 0;
- 89a:	4501                	li	a0,0
- 89c:	bf45                	j	84c <malloc+0x98>
+ 8a4:	4501                	li	a0,0
+ 8a6:	bf45                	j	856 <malloc+0x98>
diff --git a/xv6-user/rm.sym b/xv6-user/rm.sym
index 4172940..175525f 100644
--- a/xv6-user/rm.sym
+++ b/xv6-user/rm.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-00000000000008a0 .rodata
-0000000000000950 .bss
+00000000000008a8 .rodata
+0000000000000958 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-0000000000000424 putc
-0000000000000446 printint
-0000000000000938 digits
+000000000000042e putc
+0000000000000450 printint
+0000000000000940 digits
 0000000000000000 umalloc.c
-0000000000000950 freep
-0000000000000958 base
+0000000000000958 freep
+0000000000000960 base
 000000000000007c strcpy
-00000000000006fc printf
-0000000000001149 __global_pointer$
+0000000000000706 printf
+0000000000001151 __global_pointer$
 00000000000003d8 dev
 0000000000000282 memmove
+0000000000000424 times
 00000000000003f8 trace
 0000000000000162 gets
-0000000000000949 __SDATA_BEGIN__
+0000000000000951 __SDATA_BEGIN__
 00000000000003ae getpid
 0000000000000314 memcpy
-00000000000007b4 malloc
+00000000000007be malloc
 00000000000003f0 remove
 00000000000003c0 sleep
 0000000000000400 sysinfo
@@ -42,31 +43,31 @@
 0000000000000408 rename
 000000000000035a write
 0000000000000388 fstat
-00000000000006ce fprintf
+00000000000006d8 fprintf
 000000000000036e kill
 0000000000000098 strcat
-00000000000004f0 vprintf
+00000000000004fa vprintf
 000000000000039c chdir
 0000000000000376 exec
 000000000000033e wait
 0000000000000350 read
 00000000000002da memcmp
 000000000000032c fork
-0000000000000968 __BSS_END__
+0000000000000970 __BSS_END__
 00000000000003b8 sbrk
 00000000000003d0 test_proc
 00000000000003c8 uptime
-0000000000000949 __bss_start
+0000000000000951 __bss_start
 000000000000011c memset
 0000000000000000 main
 00000000000000c6 strcmp
 0000000000000410 shutdown
 00000000000003a6 dup
 00000000000003e8 getcwd
-0000000000000949 __DATA_BEGIN__
+0000000000000951 __DATA_BEGIN__
 00000000000001dc stat
-0000000000000949 _edata
-0000000000000968 _end
+0000000000000951 _edata
+0000000000000970 _end
 0000000000000334 exit
 0000000000000222 atoi
 00000000000000f2 strlen
@@ -74,4 +75,4 @@
 000000000000013e strchr
 0000000000000392 mkdir
 0000000000000364 close
-0000000000000732 free
+000000000000073c free
diff --git a/xv6-user/sh.asm b/xv6-user/sh.asm
index 584fccd..f30f0dd 100644
--- a/xv6-user/sh.asm
+++ b/xv6-user/sh.asm
@@ -84,7 +84,7 @@ export(char *argv[])
       7a:	84aa                	mv	s1,a0
   if(!strcmp(argv[1], "-p"))
       7c:	00001597          	auipc	a1,0x1
-      80:	7e458593          	addi	a1,a1,2020 # 1860 <malloc+0xf0>
+      80:	7ec58593          	addi	a1,a1,2028 # 1868 <malloc+0xee>
       84:	6508                	ld	a0,8(a0)
       86:	00001097          	auipc	ra,0x1
       8a:	ffc080e7          	jalr	-4(ra) # 1082 <strcmp>
@@ -93,7 +93,7 @@ export(char *argv[])
   { // print all the env vars
     if(!nenv)
       92:	00002b17          	auipc	s6,0x2
-      96:	a36b2b03          	lw	s6,-1482(s6) # 1ac8 <nenv>
+      96:	a3eb2b03          	lw	s6,-1474(s6) # 1ad0 <nenv>
       9a:	040b0163          	beqz	s6,dc <export+0x76>
     {
       printf("NO env var exported\n");
@@ -101,21 +101,21 @@ export(char *argv[])
     }
     for(int i=0; i<nenv; i++)
       9e:	00002497          	auipc	s1,0x2
-      a2:	b1a48493          	addi	s1,s1,-1254 # 1bb8 <envs>
+      a2:	b2248493          	addi	s1,s1,-1246 # 1bc0 <envs>
       a6:	892a                	mv	s2,a0
       printf("export %s=%s\n", envs[i].name, envs[i].value);
       a8:	00001a97          	auipc	s5,0x1
-      ac:	7d8a8a93          	addi	s5,s5,2008 # 1880 <malloc+0x110>
+      ac:	7e0a8a93          	addi	s5,s5,2016 # 1888 <malloc+0x10e>
     for(int i=0; i<nenv; i++)
       b0:	00002a17          	auipc	s4,0x2
-      b4:	a18a0a13          	addi	s4,s4,-1512 # 1ac8 <nenv>
+      b4:	a20a0a13          	addi	s4,s4,-1504 # 1ad0 <nenv>
       b8:	0f605c63          	blez	s6,1b0 <export+0x14a>
       printf("export %s=%s\n", envs[i].name, envs[i].value);
       bc:	02048613          	addi	a2,s1,32
       c0:	85a6                	mv	a1,s1
       c2:	8556                	mv	a0,s5
       c4:	00001097          	auipc	ra,0x1
-      c8:	5f4080e7          	jalr	1524(ra) # 16b8 <printf>
+      c8:	5fe080e7          	jalr	1534(ra) # 16c2 <printf>
     for(int i=0; i<nenv; i++)
       cc:	2905                	addiw	s2,s2,1
       ce:	08048493          	addi	s1,s1,128
@@ -124,9 +124,9 @@ export(char *argv[])
       da:	a8d9                	j	1b0 <export+0x14a>
       printf("NO env var exported\n");
       dc:	00001517          	auipc	a0,0x1
-      e0:	78c50513          	addi	a0,a0,1932 # 1868 <malloc+0xf8>
+      e0:	79450513          	addi	a0,a0,1940 # 1870 <malloc+0xf6>
       e4:	00001097          	auipc	ra,0x1
-      e8:	5d4080e7          	jalr	1492(ra) # 16b8 <printf>
+      e8:	5de080e7          	jalr	1502(ra) # 16c2 <printf>
       return 0;
       ec:	89da                	mv	s3,s6
       ee:	a0c9                	j	1b0 <export+0x14a>
@@ -134,7 +134,7 @@ export(char *argv[])
   }
   else if(nenv == NENVS)
       f0:	00002997          	auipc	s3,0x2
-      f4:	9d89a983          	lw	s3,-1576(s3) # 1ac8 <nenv>
+      f4:	9e09a983          	lw	s3,-1568(s3) # 1ad0 <nenv>
       f8:	47c1                	li	a5,16
       fa:	0cf98663          	beq	s3,a5,1c6 <export+0x160>
   {
@@ -193,14 +193,14 @@ export(char *argv[])
   strcpy(envs[nenv].name, name);
      170:	00799513          	slli	a0,s3,0x7
      174:	00002917          	auipc	s2,0x2
-     178:	a4490913          	addi	s2,s2,-1468 # 1bb8 <envs>
+     178:	a4c90913          	addi	s2,s2,-1460 # 1bc0 <envs>
      17c:	fa040593          	addi	a1,s0,-96
      180:	954a                	add	a0,a0,s2
      182:	00001097          	auipc	ra,0x1
      186:	eb6080e7          	jalr	-330(ra) # 1038 <strcpy>
   strcpy(envs[nenv].value, value);
      18a:	00002497          	auipc	s1,0x2
-     18e:	93e48493          	addi	s1,s1,-1730 # 1ac8 <nenv>
+     18e:	94648493          	addi	s1,s1,-1722 # 1ad0 <nenv>
      192:	4088                	lw	a0,0(s1)
      194:	051e                	slli	a0,a0,0x7
      196:	02050513          	addi	a0,a0,32
@@ -228,10 +228,10 @@ export(char *argv[])
      1c4:	8082                	ret
     fprintf(2, "too many env vars\n");
      1c6:	00001597          	auipc	a1,0x1
-     1ca:	6ca58593          	addi	a1,a1,1738 # 1890 <malloc+0x120>
+     1ca:	6d258593          	addi	a1,a1,1746 # 1898 <malloc+0x11e>
      1ce:	4509                	li	a0,2
      1d0:	00001097          	auipc	ra,0x1
-     1d4:	4ba080e7          	jalr	1210(ra) # 168a <fprintf>
+     1d4:	4c4080e7          	jalr	1220(ra) # 1694 <fprintf>
     return -1;
      1d8:	59fd                	li	s3,-1
      1da:	bfd9                	j	1b0 <export+0x14a>
@@ -240,10 +240,10 @@ export(char *argv[])
      1e0:	b7b9                	j	12e <export+0xc8>
     fprintf(2, "Invalid NAME!\n");
      1e2:	00001597          	auipc	a1,0x1
-     1e6:	6c658593          	addi	a1,a1,1734 # 18a8 <malloc+0x138>
+     1e6:	6ce58593          	addi	a1,a1,1742 # 18b0 <malloc+0x136>
      1ea:	4509                	li	a0,2
      1ec:	00001097          	auipc	ra,0x1
-     1f0:	49e080e7          	jalr	1182(ra) # 168a <fprintf>
+     1f0:	4a8080e7          	jalr	1192(ra) # 1694 <fprintf>
     return -1;
      1f4:	59fd                	li	s3,-1
      1f6:	bf6d                	j	1b0 <export+0x14a>
@@ -302,7 +302,7 @@ replace(char *buf)
         *tmp = 0;
         for(int i=0; i<nenv; i++)
      248:	00002b17          	auipc	s6,0x2
-     24c:	880b0b13          	addi	s6,s6,-1920 # 1ac8 <nenv>
+     24c:	888b0b13          	addi	s6,s6,-1912 # 1ad0 <nenv>
           if(!strcmp(name, envs[i].name))
      250:	f0840b93          	addi	s7,s0,-248
      254:	a03d                	j	282 <replace+0x84>
@@ -358,7 +358,7 @@ replace(char *buf)
      2ce:	000b2783          	lw	a5,0(s6)
      2d2:	04f05563          	blez	a5,31c <replace+0x11e>
      2d6:	00002d17          	auipc	s10,0x2
-     2da:	902d0d13          	addi	s10,s10,-1790 # 1bd8 <envs+0x20>
+     2da:	90ad0d13          	addi	s10,s10,-1782 # 1be0 <envs+0x20>
      2de:	4d81                	li	s11,0
      2e0:	a801                	j	2f0 <replace+0xf2>
      2e2:	2d85                	addiw	s11,s11,1
@@ -425,12 +425,12 @@ getcmd(char *buf, int nbuf)
      350:	892e                	mv	s2,a1
   fprintf(2, "-> %s $ ", mycwd);
      352:	00001617          	auipc	a2,0x1
-     356:	77e60613          	addi	a2,a2,1918 # 1ad0 <mycwd>
+     356:	78660613          	addi	a2,a2,1926 # 1ad8 <mycwd>
      35a:	00001597          	auipc	a1,0x1
-     35e:	55e58593          	addi	a1,a1,1374 # 18b8 <malloc+0x148>
+     35e:	56658593          	addi	a1,a1,1382 # 18c0 <malloc+0x146>
      362:	4509                	li	a0,2
      364:	00001097          	auipc	ra,0x1
-     368:	326080e7          	jalr	806(ra) # 168a <fprintf>
+     368:	330080e7          	jalr	816(ra) # 1694 <fprintf>
   memset(buf, 0, nbuf);
      36c:	864a                	mv	a2,s2
      36e:	4581                	li	a1,0
@@ -470,10 +470,10 @@ panic(char *s)
      3a6:	862a                	mv	a2,a0
   fprintf(2, "%s\n", s);
      3a8:	00001597          	auipc	a1,0x1
-     3ac:	52058593          	addi	a1,a1,1312 # 18c8 <malloc+0x158>
+     3ac:	52858593          	addi	a1,a1,1320 # 18d0 <malloc+0x156>
      3b0:	4509                	li	a0,2
      3b2:	00001097          	auipc	ra,0x1
-     3b6:	2d8080e7          	jalr	728(ra) # 168a <fprintf>
+     3b6:	2e2080e7          	jalr	738(ra) # 1694 <fprintf>
   exit(1);
      3ba:	4505                	li	a0,1
      3bc:	00001097          	auipc	ra,0x1
@@ -506,7 +506,7 @@ fork1(void)
      3e0:	8082                	ret
     panic("fork");
      3e2:	00001517          	auipc	a0,0x1
-     3e6:	4ee50513          	addi	a0,a0,1262 # 18d0 <malloc+0x160>
+     3e6:	4f650513          	addi	a0,a0,1270 # 18d8 <malloc+0x15e>
      3ea:	00000097          	auipc	ra,0x0
      3ee:	fb4080e7          	jalr	-76(ra) # 39e <panic>
 
@@ -533,7 +533,7 @@ fork1(void)
      414:	00056783          	lwu	a5,0(a0)
      418:	078a                	slli	a5,a5,0x2
      41a:	00001717          	auipc	a4,0x1
-     41e:	5f670713          	addi	a4,a4,1526 # 1a10 <malloc+0x2a0>
+     41e:	5fe70713          	addi	a4,a4,1534 # 1a18 <malloc+0x29e>
      422:	97ba                	add	a5,a5,a4
      424:	439c                	lw	a5,0(a5)
      426:	97ba                	add	a5,a5,a4
@@ -544,7 +544,7 @@ fork1(void)
      430:	ec4080e7          	jalr	-316(ra) # 12f0 <exit>
     panic("runcmd");
      434:	00001517          	auipc	a0,0x1
-     438:	4a450513          	addi	a0,a0,1188 # 18d8 <malloc+0x168>
+     438:	4ac50513          	addi	a0,a0,1196 # 18e0 <malloc+0x166>
      43c:	00000097          	auipc	ra,0x0
      440:	f62080e7          	jalr	-158(ra) # 39e <panic>
     if(ecmd->argv[0] == 0)
@@ -557,10 +557,10 @@ fork1(void)
      452:	ee4080e7          	jalr	-284(ra) # 1332 <exec>
     for(i=0; i<nenv; i++)
      456:	00001797          	auipc	a5,0x1
-     45a:	6727a783          	lw	a5,1650(a5) # 1ac8 <nenv>
+     45a:	67a7a783          	lw	a5,1658(a5) # 1ad0 <nenv>
      45e:	06f05763          	blez	a5,4cc <runcmd+0xda>
      462:	00001917          	auipc	s2,0x1
-     466:	77790913          	addi	s2,s2,1911 # 1bd9 <envs+0x21>
+     466:	77f90913          	addi	s2,s2,1919 # 1be1 <envs+0x21>
      46a:	4981                	li	s3,0
       *s_tmp++ = '/';
      46c:	02f00b93          	li	s7,47
@@ -568,7 +568,7 @@ fork1(void)
      470:	f6840b13          	addi	s6,s0,-152
     for(i=0; i<nenv; i++)
      474:	00001a97          	auipc	s5,0x1
-     478:	654a8a93          	addi	s5,s5,1620 # 1ac8 <nenv>
+     478:	65ca8a93          	addi	s5,s5,1628 # 1ad0 <nenv>
       while((*s_tmp = *d_tmp++))
      47c:	874a                	mv	a4,s2
      47e:	fff94783          	lbu	a5,-1(s2)
@@ -607,10 +607,10 @@ fork1(void)
     fprintf(2, "exec %s failed\n", ecmd->argv[0]);
      4cc:	6490                	ld	a2,8(s1)
      4ce:	00001597          	auipc	a1,0x1
-     4d2:	41258593          	addi	a1,a1,1042 # 18e0 <malloc+0x170>
+     4d2:	41a58593          	addi	a1,a1,1050 # 18e8 <malloc+0x16e>
      4d6:	4509                	li	a0,2
      4d8:	00001097          	auipc	ra,0x1
-     4dc:	1b2080e7          	jalr	434(ra) # 168a <fprintf>
+     4dc:	1bc080e7          	jalr	444(ra) # 1694 <fprintf>
   exit(0);
      4e0:	4501                	li	a0,0
      4e2:	00001097          	auipc	ra,0x1
@@ -639,10 +639,10 @@ fork1(void)
       fprintf(2, "open %s failed\n", rcmd->file);
      51e:	6890                	ld	a2,16(s1)
      520:	00001597          	auipc	a1,0x1
-     524:	3d058593          	addi	a1,a1,976 # 18f0 <malloc+0x180>
+     524:	3d858593          	addi	a1,a1,984 # 18f8 <malloc+0x17e>
      528:	4509                	li	a0,2
      52a:	00001097          	auipc	ra,0x1
-     52e:	160080e7          	jalr	352(ra) # 168a <fprintf>
+     52e:	16a080e7          	jalr	362(ra) # 1694 <fprintf>
       exit(1);
      532:	4505                	li	a0,1
      534:	00001097          	auipc	ra,0x1
@@ -696,7 +696,7 @@ fork1(void)
      5b4:	b735                	j	4e0 <runcmd+0xee>
       panic("pipe");
      5b6:	00001517          	auipc	a0,0x1
-     5ba:	34a50513          	addi	a0,a0,842 # 1900 <malloc+0x190>
+     5ba:	35250513          	addi	a0,a0,850 # 1908 <malloc+0x18e>
      5be:	00000097          	auipc	ra,0x0
      5c2:	de0080e7          	jalr	-544(ra) # 39e <panic>
       close(1);
@@ -764,7 +764,7 @@ execcmd(void)
   cmd = malloc(sizeof(*cmd));
      654:	0a800513          	li	a0,168
      658:	00001097          	auipc	ra,0x1
-     65c:	118080e7          	jalr	280(ra) # 1770 <malloc>
+     65c:	122080e7          	jalr	290(ra) # 177a <malloc>
      660:	84aa                	mv	s1,a0
   memset(cmd, 0, sizeof(*cmd));
      662:	0a800613          	li	a2,168
@@ -808,7 +808,7 @@ redircmd(struct cmd *subcmd, char *file, char *efile, int mode, int fd)
   cmd = malloc(sizeof(*cmd));
      69e:	02800513          	li	a0,40
      6a2:	00001097          	auipc	ra,0x1
-     6a6:	0ce080e7          	jalr	206(ra) # 1770 <malloc>
+     6a6:	0d8080e7          	jalr	216(ra) # 177a <malloc>
      6aa:	84aa                	mv	s1,a0
   memset(cmd, 0, sizeof(*cmd));
      6ac:	02800613          	li	a2,40
@@ -861,7 +861,7 @@ pipecmd(struct cmd *left, struct cmd *right)
   cmd = malloc(sizeof(*cmd));
      6fa:	4561                	li	a0,24
      6fc:	00001097          	auipc	ra,0x1
-     700:	074080e7          	jalr	116(ra) # 1770 <malloc>
+     700:	07e080e7          	jalr	126(ra) # 177a <malloc>
      704:	84aa                	mv	s1,a0
   memset(cmd, 0, sizeof(*cmd));
      706:	4661                	li	a2,24
@@ -905,7 +905,7 @@ listcmd(struct cmd *left, struct cmd *right)
   cmd = malloc(sizeof(*cmd));
      740:	4561                	li	a0,24
      742:	00001097          	auipc	ra,0x1
-     746:	02e080e7          	jalr	46(ra) # 1770 <malloc>
+     746:	038080e7          	jalr	56(ra) # 177a <malloc>
      74a:	84aa                	mv	s1,a0
   memset(cmd, 0, sizeof(*cmd));
      74c:	4661                	li	a2,24
@@ -947,7 +947,7 @@ backcmd(struct cmd *subcmd)
   cmd = malloc(sizeof(*cmd));
      782:	4541                	li	a0,16
      784:	00001097          	auipc	ra,0x1
-     788:	fec080e7          	jalr	-20(ra) # 1770 <malloc>
+     788:	ff6080e7          	jalr	-10(ra) # 177a <malloc>
      78c:	84aa                	mv	s1,a0
   memset(cmd, 0, sizeof(*cmd));
      78e:	4641                	li	a2,16
@@ -997,7 +997,7 @@ gettoken(char **ps, char *es, char **q, char **eq)
      7cc:	6104                	ld	s1,0(a0)
   while(s < es && strchr(whitespace, *s))
      7ce:	00001997          	auipc	s3,0x1
-     7d2:	2ea98993          	addi	s3,s3,746 # 1ab8 <whitespace>
+     7d2:	2f298993          	addi	s3,s3,754 # 1ac0 <whitespace>
      7d6:	00b4fe63          	bgeu	s1,a1,7f2 <gettoken+0x42>
      7da:	0004c583          	lbu	a1,0(s1)
      7de:	854e                	mv	a0,s3
@@ -1048,7 +1048,7 @@ gettoken(char **ps, char *es, char **q, char **eq)
 
   while(s < es && strchr(whitespace, *s))
      834:	00001997          	auipc	s3,0x1
-     838:	28498993          	addi	s3,s3,644 # 1ab8 <whitespace>
+     838:	28c98993          	addi	s3,s3,652 # 1ac0 <whitespace>
      83c:	0124fe63          	bgeu	s1,s2,858 <gettoken+0xa8>
      840:	0004c583          	lbu	a1,0(s1)
      844:	854e                	mv	a0,s3
@@ -1100,9 +1100,9 @@ gettoken(char **ps, char *es, char **q, char **eq)
      89c:	f8e787e3          	beq	a5,a4,82a <gettoken+0x7a>
     while(s < es && !strchr(whitespace, *s) && !strchr(symbols, *s))
      8a0:	00001997          	auipc	s3,0x1
-     8a4:	21898993          	addi	s3,s3,536 # 1ab8 <whitespace>
+     8a4:	22098993          	addi	s3,s3,544 # 1ac0 <whitespace>
      8a8:	00001a97          	auipc	s5,0x1
-     8ac:	218a8a93          	addi	s5,s5,536 # 1ac0 <symbols>
+     8ac:	220a8a93          	addi	s5,s5,544 # 1ac8 <symbols>
      8b0:	0324f663          	bgeu	s1,s2,8dc <gettoken+0x12c>
      8b4:	0004c583          	lbu	a1,0(s1)
      8b8:	854e                	mv	a0,s3
@@ -1153,7 +1153,7 @@ peek(char **ps, char *es, char *toks)
      90a:	6104                	ld	s1,0(a0)
   while(s < es && strchr(whitespace, *s))
      90c:	00001997          	auipc	s3,0x1
-     910:	1ac98993          	addi	s3,s3,428 # 1ab8 <whitespace>
+     910:	1b498993          	addi	s3,s3,436 # 1ac0 <whitespace>
      914:	00b4fe63          	bgeu	s1,a1,930 <peek+0x3e>
      918:	0004c583          	lbu	a1,0(s1)
      91c:	854e                	mv	a0,s3
@@ -1219,7 +1219,7 @@ parseredirs(struct cmd *cmd, char **ps, char *es)
 
   while(peek(ps, es, "<>")){
      982:	00001b97          	auipc	s7,0x1
-     986:	fa6b8b93          	addi	s7,s7,-90 # 1928 <malloc+0x1b8>
+     986:	faeb8b93          	addi	s7,s7,-82 # 1930 <malloc+0x1b6>
     tok = gettoken(ps, es, 0, 0);
     if(gettoken(ps, es, &q, &eq) != 'a')
      98a:	f8040d13          	addi	s10,s0,-128
@@ -1232,7 +1232,7 @@ parseredirs(struct cmd *cmd, char **ps, char *es)
      99a:	a02d                	j	9c4 <parseredirs+0x66>
       panic("missing file for redirection");
      99c:	00001517          	auipc	a0,0x1
-     9a0:	f6c50513          	addi	a0,a0,-148 # 1908 <malloc+0x198>
+     9a0:	f7450513          	addi	a0,a0,-140 # 1910 <malloc+0x196>
      9a4:	00000097          	auipc	ra,0x0
      9a8:	9fa080e7          	jalr	-1542(ra) # 39e <panic>
     case '<':
@@ -1354,7 +1354,7 @@ parseexec(char **ps, char *es)
 
   if(peek(ps, es, "("))
      a88:	00001617          	auipc	a2,0x1
-     a8c:	ea860613          	addi	a2,a2,-344 # 1930 <malloc+0x1c0>
+     a8c:	eb060613          	addi	a2,a2,-336 # 1938 <malloc+0x1be>
      a90:	00000097          	auipc	ra,0x0
      a94:	e62080e7          	jalr	-414(ra) # 8f2 <peek>
      a98:	ed05                	bnez	a0,ad0 <parseexec+0x6a>
@@ -1377,7 +1377,7 @@ parseexec(char **ps, char *es)
   while(!peek(ps, es, "|)&;")){
      ab4:	008d8913          	addi	s2,s11,8
      ab8:	00001b17          	auipc	s6,0x1
-     abc:	e98b0b13          	addi	s6,s6,-360 # 1950 <malloc+0x1e0>
+     abc:	ea0b0b13          	addi	s6,s6,-352 # 1958 <malloc+0x1de>
     if((tok=gettoken(ps, es, &q, &eq)) == 0)
      ac0:	f8040c13          	addi	s8,s0,-128
      ac4:	f8840b93          	addi	s7,s0,-120
@@ -1422,7 +1422,7 @@ parseexec(char **ps, char *es)
      afc:	8082                	ret
       panic("syntax");
      afe:	00001517          	auipc	a0,0x1
-     b02:	e3a50513          	addi	a0,a0,-454 # 1938 <malloc+0x1c8>
+     b02:	e4250513          	addi	a0,a0,-446 # 1940 <malloc+0x1c6>
      b06:	00000097          	auipc	ra,0x0
      b0a:	898080e7          	jalr	-1896(ra) # 39e <panic>
     ret = parseredirs(ret, ps, es);
@@ -1462,7 +1462,7 @@ parseexec(char **ps, char *es)
      b58:	fb999be3          	bne	s3,s9,b0e <parseexec+0xa8>
       panic("too many args");
      b5c:	00001517          	auipc	a0,0x1
-     b60:	de450513          	addi	a0,a0,-540 # 1940 <malloc+0x1d0>
+     b60:	dec50513          	addi	a0,a0,-532 # 1948 <malloc+0x1ce>
      b64:	00000097          	auipc	ra,0x0
      b68:	83a080e7          	jalr	-1990(ra) # 39e <panic>
   cmd->argv[argc] = 0;
@@ -1491,7 +1491,7 @@ parseexec(char **ps, char *es)
      b94:	84aa                	mv	s1,a0
   if(peek(ps, es, "|")){
      b96:	00001617          	auipc	a2,0x1
-     b9a:	dc260613          	addi	a2,a2,-574 # 1958 <malloc+0x1e8>
+     b9a:	dca60613          	addi	a2,a2,-566 # 1960 <malloc+0x1e6>
      b9e:	85ce                	mv	a1,s3
      ba0:	854a                	mv	a0,s2
      ba2:	00000097          	auipc	ra,0x0
@@ -1544,7 +1544,7 @@ parseexec(char **ps, char *es)
      c04:	84aa                	mv	s1,a0
   while(peek(ps, es, "&")){
      c06:	00001a17          	auipc	s4,0x1
-     c0a:	d5aa0a13          	addi	s4,s4,-678 # 1960 <malloc+0x1f0>
+     c0a:	d62a0a13          	addi	s4,s4,-670 # 1968 <malloc+0x1ee>
      c0e:	a839                	j	c2c <parseline+0x44>
     gettoken(ps, es, 0, 0);
      c10:	4681                	li	a3,0
@@ -1567,7 +1567,7 @@ parseexec(char **ps, char *es)
      c3a:	f979                	bnez	a0,c10 <parseline+0x28>
   if(peek(ps, es, ";")){
      c3c:	00001617          	auipc	a2,0x1
-     c40:	d2c60613          	addi	a2,a2,-724 # 1968 <malloc+0x1f8>
+     c40:	d3460613          	addi	a2,a2,-716 # 1970 <malloc+0x1f6>
      c44:	85ce                	mv	a1,s3
      c46:	854a                	mv	a0,s2
      c48:	00000097          	auipc	ra,0x0
@@ -1616,7 +1616,7 @@ parseexec(char **ps, char *es)
      ca0:	892e                	mv	s2,a1
   if(!peek(ps, es, "("))
      ca2:	00001617          	auipc	a2,0x1
-     ca6:	c8e60613          	addi	a2,a2,-882 # 1930 <malloc+0x1c0>
+     ca6:	c9660613          	addi	a2,a2,-874 # 1938 <malloc+0x1be>
      caa:	00000097          	auipc	ra,0x0
      cae:	c48080e7          	jalr	-952(ra) # 8f2 <peek>
      cb2:	c12d                	beqz	a0,d14 <parseblock+0x84>
@@ -1635,7 +1635,7 @@ parseexec(char **ps, char *es)
      cd0:	89aa                	mv	s3,a0
   if(!peek(ps, es, ")"))
      cd2:	00001617          	auipc	a2,0x1
-     cd6:	cae60613          	addi	a2,a2,-850 # 1980 <malloc+0x210>
+     cd6:	cb660613          	addi	a2,a2,-842 # 1988 <malloc+0x20e>
      cda:	85ca                	mv	a1,s2
      cdc:	8526                	mv	a0,s1
      cde:	00000097          	auipc	ra,0x0
@@ -1664,12 +1664,12 @@ parseexec(char **ps, char *es)
      d12:	8082                	ret
     panic("parseblock");
      d14:	00001517          	auipc	a0,0x1
-     d18:	c5c50513          	addi	a0,a0,-932 # 1970 <malloc+0x200>
+     d18:	c6450513          	addi	a0,a0,-924 # 1978 <malloc+0x1fe>
      d1c:	fffff097          	auipc	ra,0xfffff
      d20:	682080e7          	jalr	1666(ra) # 39e <panic>
     panic("syntax - missing )");
      d24:	00001517          	auipc	a0,0x1
-     d28:	c6450513          	addi	a0,a0,-924 # 1988 <malloc+0x218>
+     d28:	c6c50513          	addi	a0,a0,-916 # 1990 <malloc+0x216>
      d2c:	fffff097          	auipc	ra,0xfffff
      d30:	672080e7          	jalr	1650(ra) # 39e <panic>
 
@@ -1701,7 +1701,7 @@ nulterminate(struct cmd *cmd)
      d4a:	00056783          	lwu	a5,0(a0)
      d4e:	078a                	slli	a5,a5,0x2
      d50:	00001717          	auipc	a4,0x1
-     d54:	cd870713          	addi	a4,a4,-808 # 1a28 <malloc+0x2b8>
+     d54:	ce070713          	addi	a4,a4,-800 # 1a30 <malloc+0x2b6>
      d58:	97ba                	add	a5,a5,a4
      d5a:	439c                	lw	a5,0(a5)
      d5c:	97ba                	add	a5,a5,a4
@@ -1795,7 +1795,7 @@ nulterminate(struct cmd *cmd)
      dfe:	89aa                	mv	s3,a0
   peek(&s, es, "");
      e00:	00001617          	auipc	a2,0x1
-     e04:	bf860613          	addi	a2,a2,-1032 # 19f8 <malloc+0x288>
+     e04:	c0060613          	addi	a2,a2,-1024 # 1a00 <malloc+0x286>
      e08:	85a6                	mv	a1,s1
      e0a:	854a                	mv	a0,s2
      e0c:	00000097          	auipc	ra,0x0
@@ -1818,13 +1818,13 @@ nulterminate(struct cmd *cmd)
      e34:	8082                	ret
     fprintf(2, "leftovers: %s\n", s);
      e36:	00001597          	auipc	a1,0x1
-     e3a:	b6a58593          	addi	a1,a1,-1174 # 19a0 <malloc+0x230>
+     e3a:	b7258593          	addi	a1,a1,-1166 # 19a8 <malloc+0x22e>
      e3e:	4509                	li	a0,2
      e40:	00001097          	auipc	ra,0x1
-     e44:	84a080e7          	jalr	-1974(ra) # 168a <fprintf>
+     e44:	854080e7          	jalr	-1964(ra) # 1694 <fprintf>
     panic("syntax");
      e48:	00001517          	auipc	a0,0x1
-     e4c:	af050513          	addi	a0,a0,-1296 # 1938 <malloc+0x1c8>
+     e4c:	af850513          	addi	a0,a0,-1288 # 1940 <malloc+0x1c6>
      e50:	fffff097          	auipc	ra,0xfffff
      e54:	54e080e7          	jalr	1358(ra) # 39e <panic>
 
@@ -1858,13 +1858,13 @@ nulterminate(struct cmd *cmd)
      e8e:	496080e7          	jalr	1174(ra) # 1320 <close>
   strcpy(envs[nenv].name, "SHELL");
      e92:	00001497          	auipc	s1,0x1
-     e96:	c3648493          	addi	s1,s1,-970 # 1ac8 <nenv>
+     e96:	c3e48493          	addi	s1,s1,-962 # 1ad0 <nenv>
      e9a:	4088                	lw	a0,0(s1)
      e9c:	051e                	slli	a0,a0,0x7
      e9e:	00001917          	auipc	s2,0x1
-     ea2:	d1a90913          	addi	s2,s2,-742 # 1bb8 <envs>
+     ea2:	d2290913          	addi	s2,s2,-734 # 1bc0 <envs>
      ea6:	00001597          	auipc	a1,0x1
-     eaa:	b0a58593          	addi	a1,a1,-1270 # 19b0 <malloc+0x240>
+     eaa:	b1258593          	addi	a1,a1,-1262 # 19b8 <malloc+0x23e>
      eae:	954a                	add	a0,a0,s2
      eb0:	00000097          	auipc	ra,0x0
      eb4:	188080e7          	jalr	392(ra) # 1038 <strcpy>
@@ -1873,7 +1873,7 @@ nulterminate(struct cmd *cmd)
      eba:	051e                	slli	a0,a0,0x7
      ebc:	02050513          	addi	a0,a0,32
      ec0:	00001597          	auipc	a1,0x1
-     ec4:	af858593          	addi	a1,a1,-1288 # 19b8 <malloc+0x248>
+     ec4:	b0058593          	addi	a1,a1,-1280 # 19c0 <malloc+0x246>
      ec8:	954a                	add	a0,a0,s2
      eca:	00000097          	auipc	ra,0x0
      ece:	16e080e7          	jalr	366(ra) # 1038 <strcpy>
@@ -1883,31 +1883,31 @@ nulterminate(struct cmd *cmd)
      ed6:	c09c                	sw	a5,0(s1)
   getcwd(mycwd);
      ed8:	00001517          	auipc	a0,0x1
-     edc:	bf850513          	addi	a0,a0,-1032 # 1ad0 <mycwd>
+     edc:	c0050513          	addi	a0,a0,-1024 # 1ad8 <mycwd>
      ee0:	00000097          	auipc	ra,0x0
      ee4:	4c4080e7          	jalr	1220(ra) # 13a4 <getcwd>
   while(getcmd(buf, sizeof(buf)) >= 0){
      ee8:	00001917          	auipc	s2,0x1
-     eec:	c6890913          	addi	s2,s2,-920 # 1b50 <buf.0>
+     eec:	c7090913          	addi	s2,s2,-912 # 1b58 <buf.0>
     replace(buf);
      ef0:	89a6                	mv	s3,s1
     if(buf[0] == 'c' && buf[1] == 'd' && buf[2] == ' '){
      ef2:	06300a13          	li	s4,99
       else if(!strcmp(ecmd->argv[0], "export"))
      ef6:	00001a97          	auipc	s5,0x1
-     efa:	adaa8a93          	addi	s5,s5,-1318 # 19d0 <malloc+0x260>
+     efa:	ae2a8a93          	addi	s5,s5,-1310 # 19d8 <malloc+0x25e>
           fprintf(2, "export failed\n");
      efe:	00001b97          	auipc	s7,0x1
-     f02:	b02b8b93          	addi	s7,s7,-1278 # 1a00 <malloc+0x290>
+     f02:	b0ab8b93          	addi	s7,s7,-1270 # 1a08 <malloc+0x28e>
           fprintf(2, "Usage: export [-p] [NAME=VALUE]\n");
      f06:	00001b17          	auipc	s6,0x1
-     f0a:	ad2b0b13          	addi	s6,s6,-1326 # 19d8 <malloc+0x268>
+     f0a:	adab0b13          	addi	s6,s6,-1318 # 19e0 <malloc+0x266>
       if(chdir(buf+3) < 0)
      f0e:	00001c17          	auipc	s8,0x1
-     f12:	c45c0c13          	addi	s8,s8,-955 # 1b53 <buf.0+0x3>
+     f12:	c4dc0c13          	addi	s8,s8,-947 # 1b5b <buf.0+0x3>
       getcwd(mycwd);
      f16:	00001c97          	auipc	s9,0x1
-     f1a:	bbac8c93          	addi	s9,s9,-1094 # 1ad0 <mycwd>
+     f1a:	bc2c8c93          	addi	s9,s9,-1086 # 1ad8 <mycwd>
   while(getcmd(buf, sizeof(buf)) >= 0){
      f1e:	a8a5                	j	f96 <main+0x13e>
     if(buf[0] == 'c' && buf[1] == 'd' && buf[2] == ' '){
@@ -1936,26 +1936,26 @@ nulterminate(struct cmd *cmd)
         fprintf(2, "cannot cd %s\n", buf+3);
      f5e:	8662                	mv	a2,s8
      f60:	00001597          	auipc	a1,0x1
-     f64:	a6058593          	addi	a1,a1,-1440 # 19c0 <malloc+0x250>
+     f64:	a6858593          	addi	a1,a1,-1432 # 19c8 <malloc+0x24e>
      f68:	4509                	li	a0,2
      f6a:	00000097          	auipc	ra,0x0
-     f6e:	720080e7          	jalr	1824(ra) # 168a <fprintf>
+     f6e:	72a080e7          	jalr	1834(ra) # 1694 <fprintf>
      f72:	b7c5                	j	f52 <main+0xfa>
         free(cmd);
      f74:	8526                	mv	a0,s1
      f76:	00000097          	auipc	ra,0x0
-     f7a:	778080e7          	jalr	1912(ra) # 16ee <free>
+     f7a:	782080e7          	jalr	1922(ra) # 16f8 <free>
         continue;
      f7e:	a821                	j	f96 <main+0x13e>
           fprintf(2, "Usage: export [-p] [NAME=VALUE]\n");
      f80:	85da                	mv	a1,s6
      f82:	4509                	li	a0,2
      f84:	00000097          	auipc	ra,0x0
-     f88:	706080e7          	jalr	1798(ra) # 168a <fprintf>
+     f88:	710080e7          	jalr	1808(ra) # 1694 <fprintf>
         free(cmd);
      f8c:	8526                	mv	a0,s1
      f8e:	00000097          	auipc	ra,0x0
-     f92:	760080e7          	jalr	1888(ra) # 16ee <free>
+     f92:	76a080e7          	jalr	1898(ra) # 16f8 <free>
   while(getcmd(buf, sizeof(buf)) >= 0){
      f96:	06400593          	li	a1,100
      f9a:	854a                	mv	a0,s2
@@ -1997,7 +1997,7 @@ nulterminate(struct cmd *cmd)
      ff6:	85de                	mv	a1,s7
      ff8:	4509                	li	a0,2
      ffa:	00000097          	auipc	ra,0x0
-     ffe:	690080e7          	jalr	1680(ra) # 168a <fprintf>
+     ffe:	69a080e7          	jalr	1690(ra) # 1694 <fprintf>
     1002:	b769                	j	f8c <main+0x134>
       else if(fork1() == 0) 
     1004:	fffff097          	auipc	ra,0xfffff
@@ -2010,7 +2010,7 @@ nulterminate(struct cmd *cmd)
       free(cmd);
     1018:	8526                	mv	a0,s1
     101a:	00000097          	auipc	ra,0x0
-    101e:	6d4080e7          	jalr	1748(ra) # 16ee <free>
+    101e:	6de080e7          	jalr	1758(ra) # 16f8 <free>
     1022:	bf95                	j	f96 <main+0x13e>
         runcmd(cmd);
     1024:	8526                	mv	a0,s1
@@ -2777,637 +2777,647 @@ uname:
  ret
     13de:	8082                	ret
 
-00000000000013e0 <putc>:
+00000000000013e0 <times>:
+.global times
+times:
+ li a7, SYS_times
+    13e0:	09900893          	li	a7,153
+ ecall
+    13e4:	00000073          	ecall
+ ret
+    13e8:	8082                	ret
+
+00000000000013ea <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
-    13e0:	1101                	addi	sp,sp,-32
-    13e2:	ec06                	sd	ra,24(sp)
-    13e4:	e822                	sd	s0,16(sp)
-    13e6:	1000                	addi	s0,sp,32
-    13e8:	feb407a3          	sb	a1,-17(s0)
+    13ea:	1101                	addi	sp,sp,-32
+    13ec:	ec06                	sd	ra,24(sp)
+    13ee:	e822                	sd	s0,16(sp)
+    13f0:	1000                	addi	s0,sp,32
+    13f2:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
-    13ec:	4605                	li	a2,1
-    13ee:	fef40593          	addi	a1,s0,-17
-    13f2:	00000097          	auipc	ra,0x0
-    13f6:	f24080e7          	jalr	-220(ra) # 1316 <write>
+    13f6:	4605                	li	a2,1
+    13f8:	fef40593          	addi	a1,s0,-17
+    13fc:	00000097          	auipc	ra,0x0
+    1400:	f1a080e7          	jalr	-230(ra) # 1316 <write>
 }
-    13fa:	60e2                	ld	ra,24(sp)
-    13fc:	6442                	ld	s0,16(sp)
-    13fe:	6105                	addi	sp,sp,32
-    1400:	8082                	ret
+    1404:	60e2                	ld	ra,24(sp)
+    1406:	6442                	ld	s0,16(sp)
+    1408:	6105                	addi	sp,sp,32
+    140a:	8082                	ret
 
-0000000000001402 <printint>:
+000000000000140c <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
-    1402:	7139                	addi	sp,sp,-64
-    1404:	fc06                	sd	ra,56(sp)
-    1406:	f822                	sd	s0,48(sp)
-    1408:	f426                	sd	s1,40(sp)
-    140a:	f04a                	sd	s2,32(sp)
-    140c:	ec4e                	sd	s3,24(sp)
-    140e:	0080                	addi	s0,sp,64
-    1410:	84aa                	mv	s1,a0
+    140c:	7139                	addi	sp,sp,-64
+    140e:	fc06                	sd	ra,56(sp)
+    1410:	f822                	sd	s0,48(sp)
+    1412:	f426                	sd	s1,40(sp)
+    1414:	f04a                	sd	s2,32(sp)
+    1416:	ec4e                	sd	s3,24(sp)
+    1418:	0080                	addi	s0,sp,64
+    141a:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
-    1412:	c299                	beqz	a3,1418 <printint+0x16>
-    1414:	0805c863          	bltz	a1,14a4 <printint+0xa2>
+    141c:	c299                	beqz	a3,1422 <printint+0x16>
+    141e:	0805c863          	bltz	a1,14ae <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
-    1418:	2581                	sext.w	a1,a1
+    1422:	2581                	sext.w	a1,a1
   neg = 0;
-    141a:	4881                	li	a7,0
+    1424:	4881                	li	a7,0
   }
 
   i = 0;
-    141c:	fc040993          	addi	s3,s0,-64
+    1426:	fc040993          	addi	s3,s0,-64
   neg = 0;
-    1420:	86ce                	mv	a3,s3
+    142a:	86ce                	mv	a3,s3
   i = 0;
-    1422:	4701                	li	a4,0
+    142c:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
-    1424:	2601                	sext.w	a2,a2
-    1426:	00000517          	auipc	a0,0x0
-    142a:	67a50513          	addi	a0,a0,1658 # 1aa0 <digits>
-    142e:	883a                	mv	a6,a4
-    1430:	2705                	addiw	a4,a4,1
-    1432:	02c5f7bb          	remuw	a5,a1,a2
-    1436:	1782                	slli	a5,a5,0x20
-    1438:	9381                	srli	a5,a5,0x20
-    143a:	97aa                	add	a5,a5,a0
-    143c:	0007c783          	lbu	a5,0(a5)
-    1440:	00f68023          	sb	a5,0(a3)
+    142e:	2601                	sext.w	a2,a2
+    1430:	00000517          	auipc	a0,0x0
+    1434:	67850513          	addi	a0,a0,1656 # 1aa8 <digits>
+    1438:	883a                	mv	a6,a4
+    143a:	2705                	addiw	a4,a4,1
+    143c:	02c5f7bb          	remuw	a5,a1,a2
+    1440:	1782                	slli	a5,a5,0x20
+    1442:	9381                	srli	a5,a5,0x20
+    1444:	97aa                	add	a5,a5,a0
+    1446:	0007c783          	lbu	a5,0(a5)
+    144a:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
-    1444:	0005879b          	sext.w	a5,a1
-    1448:	02c5d5bb          	divuw	a1,a1,a2
-    144c:	0685                	addi	a3,a3,1
-    144e:	fec7f0e3          	bgeu	a5,a2,142e <printint+0x2c>
+    144e:	0005879b          	sext.w	a5,a1
+    1452:	02c5d5bb          	divuw	a1,a1,a2
+    1456:	0685                	addi	a3,a3,1
+    1458:	fec7f0e3          	bgeu	a5,a2,1438 <printint+0x2c>
   if(neg)
-    1452:	00088c63          	beqz	a7,146a <printint+0x68>
+    145c:	00088c63          	beqz	a7,1474 <printint+0x68>
     buf[i++] = '-';
-    1456:	fd070793          	addi	a5,a4,-48
-    145a:	00878733          	add	a4,a5,s0
-    145e:	02d00793          	li	a5,45
-    1462:	fef70823          	sb	a5,-16(a4)
-    1466:	0028071b          	addiw	a4,a6,2
+    1460:	fd070793          	addi	a5,a4,-48
+    1464:	00878733          	add	a4,a5,s0
+    1468:	02d00793          	li	a5,45
+    146c:	fef70823          	sb	a5,-16(a4)
+    1470:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
-    146a:	02e05663          	blez	a4,1496 <printint+0x94>
-    146e:	fc040913          	addi	s2,s0,-64
-    1472:	993a                	add	s2,s2,a4
-    1474:	19fd                	addi	s3,s3,-1
-    1476:	99ba                	add	s3,s3,a4
-    1478:	377d                	addiw	a4,a4,-1
-    147a:	1702                	slli	a4,a4,0x20
-    147c:	9301                	srli	a4,a4,0x20
-    147e:	40e989b3          	sub	s3,s3,a4
+    1474:	02e05663          	blez	a4,14a0 <printint+0x94>
+    1478:	fc040913          	addi	s2,s0,-64
+    147c:	993a                	add	s2,s2,a4
+    147e:	19fd                	addi	s3,s3,-1
+    1480:	99ba                	add	s3,s3,a4
+    1482:	377d                	addiw	a4,a4,-1
+    1484:	1702                	slli	a4,a4,0x20
+    1486:	9301                	srli	a4,a4,0x20
+    1488:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
-    1482:	fff94583          	lbu	a1,-1(s2)
-    1486:	8526                	mv	a0,s1
-    1488:	00000097          	auipc	ra,0x0
-    148c:	f58080e7          	jalr	-168(ra) # 13e0 <putc>
+    148c:	fff94583          	lbu	a1,-1(s2)
+    1490:	8526                	mv	a0,s1
+    1492:	00000097          	auipc	ra,0x0
+    1496:	f58080e7          	jalr	-168(ra) # 13ea <putc>
   while(--i >= 0)
-    1490:	197d                	addi	s2,s2,-1
-    1492:	ff3918e3          	bne	s2,s3,1482 <printint+0x80>
+    149a:	197d                	addi	s2,s2,-1
+    149c:	ff3918e3          	bne	s2,s3,148c <printint+0x80>
 }
-    1496:	70e2                	ld	ra,56(sp)
-    1498:	7442                	ld	s0,48(sp)
-    149a:	74a2                	ld	s1,40(sp)
-    149c:	7902                	ld	s2,32(sp)
-    149e:	69e2                	ld	s3,24(sp)
-    14a0:	6121                	addi	sp,sp,64
-    14a2:	8082                	ret
+    14a0:	70e2                	ld	ra,56(sp)
+    14a2:	7442                	ld	s0,48(sp)
+    14a4:	74a2                	ld	s1,40(sp)
+    14a6:	7902                	ld	s2,32(sp)
+    14a8:	69e2                	ld	s3,24(sp)
+    14aa:	6121                	addi	sp,sp,64
+    14ac:	8082                	ret
     x = -xx;
-    14a4:	40b005bb          	negw	a1,a1
+    14ae:	40b005bb          	negw	a1,a1
     neg = 1;
-    14a8:	4885                	li	a7,1
+    14b2:	4885                	li	a7,1
     x = -xx;
-    14aa:	bf8d                	j	141c <printint+0x1a>
+    14b4:	bf8d                	j	1426 <printint+0x1a>
 
-00000000000014ac <vprintf>:
+00000000000014b6 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
-    14ac:	7119                	addi	sp,sp,-128
-    14ae:	fc86                	sd	ra,120(sp)
-    14b0:	f8a2                	sd	s0,112(sp)
-    14b2:	f4a6                	sd	s1,104(sp)
-    14b4:	f0ca                	sd	s2,96(sp)
-    14b6:	ecce                	sd	s3,88(sp)
-    14b8:	e8d2                	sd	s4,80(sp)
-    14ba:	e4d6                	sd	s5,72(sp)
-    14bc:	e0da                	sd	s6,64(sp)
-    14be:	fc5e                	sd	s7,56(sp)
-    14c0:	f862                	sd	s8,48(sp)
-    14c2:	f466                	sd	s9,40(sp)
-    14c4:	f06a                	sd	s10,32(sp)
-    14c6:	ec6e                	sd	s11,24(sp)
-    14c8:	0100                	addi	s0,sp,128
+    14b6:	7119                	addi	sp,sp,-128
+    14b8:	fc86                	sd	ra,120(sp)
+    14ba:	f8a2                	sd	s0,112(sp)
+    14bc:	f4a6                	sd	s1,104(sp)
+    14be:	f0ca                	sd	s2,96(sp)
+    14c0:	ecce                	sd	s3,88(sp)
+    14c2:	e8d2                	sd	s4,80(sp)
+    14c4:	e4d6                	sd	s5,72(sp)
+    14c6:	e0da                	sd	s6,64(sp)
+    14c8:	fc5e                	sd	s7,56(sp)
+    14ca:	f862                	sd	s8,48(sp)
+    14cc:	f466                	sd	s9,40(sp)
+    14ce:	f06a                	sd	s10,32(sp)
+    14d0:	ec6e                	sd	s11,24(sp)
+    14d2:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
-    14ca:	0005c903          	lbu	s2,0(a1)
-    14ce:	18090f63          	beqz	s2,166c <vprintf+0x1c0>
-    14d2:	8aaa                	mv	s5,a0
-    14d4:	8b32                	mv	s6,a2
-    14d6:	00158493          	addi	s1,a1,1
+    14d4:	0005c903          	lbu	s2,0(a1)
+    14d8:	18090f63          	beqz	s2,1676 <vprintf+0x1c0>
+    14dc:	8aaa                	mv	s5,a0
+    14de:	8b32                	mv	s6,a2
+    14e0:	00158493          	addi	s1,a1,1
   state = 0;
-    14da:	4981                	li	s3,0
+    14e4:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
-    14dc:	02500a13          	li	s4,37
-    14e0:	4c55                	li	s8,21
-    14e2:	00000c97          	auipc	s9,0x0
-    14e6:	566c8c93          	addi	s9,s9,1382 # 1a48 <malloc+0x2d8>
+    14e6:	02500a13          	li	s4,37
+    14ea:	4c55                	li	s8,21
+    14ec:	00000c97          	auipc	s9,0x0
+    14f0:	564c8c93          	addi	s9,s9,1380 # 1a50 <malloc+0x2d6>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
-    14ea:	02800d93          	li	s11,40
+    14f4:	02800d93          	li	s11,40
   putc(fd, 'x');
-    14ee:	4d41                	li	s10,16
+    14f8:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
-    14f0:	00000b97          	auipc	s7,0x0
-    14f4:	5b0b8b93          	addi	s7,s7,1456 # 1aa0 <digits>
-    14f8:	a839                	j	1516 <vprintf+0x6a>
+    14fa:	00000b97          	auipc	s7,0x0
+    14fe:	5aeb8b93          	addi	s7,s7,1454 # 1aa8 <digits>
+    1502:	a839                	j	1520 <vprintf+0x6a>
         putc(fd, c);
-    14fa:	85ca                	mv	a1,s2
-    14fc:	8556                	mv	a0,s5
-    14fe:	00000097          	auipc	ra,0x0
-    1502:	ee2080e7          	jalr	-286(ra) # 13e0 <putc>
-    1506:	a019                	j	150c <vprintf+0x60>
+    1504:	85ca                	mv	a1,s2
+    1506:	8556                	mv	a0,s5
+    1508:	00000097          	auipc	ra,0x0
+    150c:	ee2080e7          	jalr	-286(ra) # 13ea <putc>
+    1510:	a019                	j	1516 <vprintf+0x60>
     } else if(state == '%'){
-    1508:	01498d63          	beq	s3,s4,1522 <vprintf+0x76>
+    1512:	01498d63          	beq	s3,s4,152c <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
-    150c:	0485                	addi	s1,s1,1
-    150e:	fff4c903          	lbu	s2,-1(s1)
-    1512:	14090d63          	beqz	s2,166c <vprintf+0x1c0>
+    1516:	0485                	addi	s1,s1,1
+    1518:	fff4c903          	lbu	s2,-1(s1)
+    151c:	14090d63          	beqz	s2,1676 <vprintf+0x1c0>
     if(state == 0){
-    1516:	fe0999e3          	bnez	s3,1508 <vprintf+0x5c>
+    1520:	fe0999e3          	bnez	s3,1512 <vprintf+0x5c>
       if(c == '%'){
-    151a:	ff4910e3          	bne	s2,s4,14fa <vprintf+0x4e>
+    1524:	ff4910e3          	bne	s2,s4,1504 <vprintf+0x4e>
         state = '%';
-    151e:	89d2                	mv	s3,s4
-    1520:	b7f5                	j	150c <vprintf+0x60>
+    1528:	89d2                	mv	s3,s4
+    152a:	b7f5                	j	1516 <vprintf+0x60>
       if(c == 'd'){
-    1522:	11490c63          	beq	s2,s4,163a <vprintf+0x18e>
-    1526:	f9d9079b          	addiw	a5,s2,-99
-    152a:	0ff7f793          	zext.b	a5,a5
-    152e:	10fc6e63          	bltu	s8,a5,164a <vprintf+0x19e>
-    1532:	f9d9079b          	addiw	a5,s2,-99
-    1536:	0ff7f713          	zext.b	a4,a5
-    153a:	10ec6863          	bltu	s8,a4,164a <vprintf+0x19e>
-    153e:	00271793          	slli	a5,a4,0x2
-    1542:	97e6                	add	a5,a5,s9
-    1544:	439c                	lw	a5,0(a5)
-    1546:	97e6                	add	a5,a5,s9
-    1548:	8782                	jr	a5
+    152c:	11490c63          	beq	s2,s4,1644 <vprintf+0x18e>
+    1530:	f9d9079b          	addiw	a5,s2,-99
+    1534:	0ff7f793          	zext.b	a5,a5
+    1538:	10fc6e63          	bltu	s8,a5,1654 <vprintf+0x19e>
+    153c:	f9d9079b          	addiw	a5,s2,-99
+    1540:	0ff7f713          	zext.b	a4,a5
+    1544:	10ec6863          	bltu	s8,a4,1654 <vprintf+0x19e>
+    1548:	00271793          	slli	a5,a4,0x2
+    154c:	97e6                	add	a5,a5,s9
+    154e:	439c                	lw	a5,0(a5)
+    1550:	97e6                	add	a5,a5,s9
+    1552:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
-    154a:	008b0913          	addi	s2,s6,8
-    154e:	4685                	li	a3,1
-    1550:	4629                	li	a2,10
-    1552:	000b2583          	lw	a1,0(s6)
-    1556:	8556                	mv	a0,s5
-    1558:	00000097          	auipc	ra,0x0
-    155c:	eaa080e7          	jalr	-342(ra) # 1402 <printint>
-    1560:	8b4a                	mv	s6,s2
+    1554:	008b0913          	addi	s2,s6,8
+    1558:	4685                	li	a3,1
+    155a:	4629                	li	a2,10
+    155c:	000b2583          	lw	a1,0(s6)
+    1560:	8556                	mv	a0,s5
+    1562:	00000097          	auipc	ra,0x0
+    1566:	eaa080e7          	jalr	-342(ra) # 140c <printint>
+    156a:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
-    1562:	4981                	li	s3,0
-    1564:	b765                	j	150c <vprintf+0x60>
+    156c:	4981                	li	s3,0
+    156e:	b765                	j	1516 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
-    1566:	008b0913          	addi	s2,s6,8
-    156a:	4681                	li	a3,0
-    156c:	4629                	li	a2,10
-    156e:	000b2583          	lw	a1,0(s6)
-    1572:	8556                	mv	a0,s5
-    1574:	00000097          	auipc	ra,0x0
-    1578:	e8e080e7          	jalr	-370(ra) # 1402 <printint>
-    157c:	8b4a                	mv	s6,s2
+    1570:	008b0913          	addi	s2,s6,8
+    1574:	4681                	li	a3,0
+    1576:	4629                	li	a2,10
+    1578:	000b2583          	lw	a1,0(s6)
+    157c:	8556                	mv	a0,s5
+    157e:	00000097          	auipc	ra,0x0
+    1582:	e8e080e7          	jalr	-370(ra) # 140c <printint>
+    1586:	8b4a                	mv	s6,s2
       state = 0;
-    157e:	4981                	li	s3,0
-    1580:	b771                	j	150c <vprintf+0x60>
+    1588:	4981                	li	s3,0
+    158a:	b771                	j	1516 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
-    1582:	008b0913          	addi	s2,s6,8
-    1586:	4681                	li	a3,0
-    1588:	866a                	mv	a2,s10
-    158a:	000b2583          	lw	a1,0(s6)
-    158e:	8556                	mv	a0,s5
-    1590:	00000097          	auipc	ra,0x0
-    1594:	e72080e7          	jalr	-398(ra) # 1402 <printint>
-    1598:	8b4a                	mv	s6,s2
+    158c:	008b0913          	addi	s2,s6,8
+    1590:	4681                	li	a3,0
+    1592:	866a                	mv	a2,s10
+    1594:	000b2583          	lw	a1,0(s6)
+    1598:	8556                	mv	a0,s5
+    159a:	00000097          	auipc	ra,0x0
+    159e:	e72080e7          	jalr	-398(ra) # 140c <printint>
+    15a2:	8b4a                	mv	s6,s2
       state = 0;
-    159a:	4981                	li	s3,0
-    159c:	bf85                	j	150c <vprintf+0x60>
+    15a4:	4981                	li	s3,0
+    15a6:	bf85                	j	1516 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
-    159e:	008b0793          	addi	a5,s6,8
-    15a2:	f8f43423          	sd	a5,-120(s0)
-    15a6:	000b3983          	ld	s3,0(s6)
+    15a8:	008b0793          	addi	a5,s6,8
+    15ac:	f8f43423          	sd	a5,-120(s0)
+    15b0:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
-    15aa:	03000593          	li	a1,48
-    15ae:	8556                	mv	a0,s5
-    15b0:	00000097          	auipc	ra,0x0
-    15b4:	e30080e7          	jalr	-464(ra) # 13e0 <putc>
+    15b4:	03000593          	li	a1,48
+    15b8:	8556                	mv	a0,s5
+    15ba:	00000097          	auipc	ra,0x0
+    15be:	e30080e7          	jalr	-464(ra) # 13ea <putc>
   putc(fd, 'x');
-    15b8:	07800593          	li	a1,120
-    15bc:	8556                	mv	a0,s5
-    15be:	00000097          	auipc	ra,0x0
-    15c2:	e22080e7          	jalr	-478(ra) # 13e0 <putc>
-    15c6:	896a                	mv	s2,s10
+    15c2:	07800593          	li	a1,120
+    15c6:	8556                	mv	a0,s5
+    15c8:	00000097          	auipc	ra,0x0
+    15cc:	e22080e7          	jalr	-478(ra) # 13ea <putc>
+    15d0:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
-    15c8:	03c9d793          	srli	a5,s3,0x3c
-    15cc:	97de                	add	a5,a5,s7
-    15ce:	0007c583          	lbu	a1,0(a5)
-    15d2:	8556                	mv	a0,s5
-    15d4:	00000097          	auipc	ra,0x0
-    15d8:	e0c080e7          	jalr	-500(ra) # 13e0 <putc>
+    15d2:	03c9d793          	srli	a5,s3,0x3c
+    15d6:	97de                	add	a5,a5,s7
+    15d8:	0007c583          	lbu	a1,0(a5)
+    15dc:	8556                	mv	a0,s5
+    15de:	00000097          	auipc	ra,0x0
+    15e2:	e0c080e7          	jalr	-500(ra) # 13ea <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
-    15dc:	0992                	slli	s3,s3,0x4
-    15de:	397d                	addiw	s2,s2,-1
-    15e0:	fe0914e3          	bnez	s2,15c8 <vprintf+0x11c>
+    15e6:	0992                	slli	s3,s3,0x4
+    15e8:	397d                	addiw	s2,s2,-1
+    15ea:	fe0914e3          	bnez	s2,15d2 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
-    15e4:	f8843b03          	ld	s6,-120(s0)
+    15ee:	f8843b03          	ld	s6,-120(s0)
       state = 0;
-    15e8:	4981                	li	s3,0
-    15ea:	b70d                	j	150c <vprintf+0x60>
+    15f2:	4981                	li	s3,0
+    15f4:	b70d                	j	1516 <vprintf+0x60>
         s = va_arg(ap, char*);
-    15ec:	008b0913          	addi	s2,s6,8
-    15f0:	000b3983          	ld	s3,0(s6)
+    15f6:	008b0913          	addi	s2,s6,8
+    15fa:	000b3983          	ld	s3,0(s6)
         if(s == 0)
-    15f4:	02098163          	beqz	s3,1616 <vprintf+0x16a>
+    15fe:	02098163          	beqz	s3,1620 <vprintf+0x16a>
         while(*s != 0){
-    15f8:	0009c583          	lbu	a1,0(s3)
-    15fc:	c5ad                	beqz	a1,1666 <vprintf+0x1ba>
+    1602:	0009c583          	lbu	a1,0(s3)
+    1606:	c5ad                	beqz	a1,1670 <vprintf+0x1ba>
           putc(fd, *s);
-    15fe:	8556                	mv	a0,s5
-    1600:	00000097          	auipc	ra,0x0
-    1604:	de0080e7          	jalr	-544(ra) # 13e0 <putc>
+    1608:	8556                	mv	a0,s5
+    160a:	00000097          	auipc	ra,0x0
+    160e:	de0080e7          	jalr	-544(ra) # 13ea <putc>
           s++;
-    1608:	0985                	addi	s3,s3,1
+    1612:	0985                	addi	s3,s3,1
         while(*s != 0){
-    160a:	0009c583          	lbu	a1,0(s3)
-    160e:	f9e5                	bnez	a1,15fe <vprintf+0x152>
+    1614:	0009c583          	lbu	a1,0(s3)
+    1618:	f9e5                	bnez	a1,1608 <vprintf+0x152>
         s = va_arg(ap, char*);
-    1610:	8b4a                	mv	s6,s2
+    161a:	8b4a                	mv	s6,s2
       state = 0;
-    1612:	4981                	li	s3,0
-    1614:	bde5                	j	150c <vprintf+0x60>
+    161c:	4981                	li	s3,0
+    161e:	bde5                	j	1516 <vprintf+0x60>
           s = "(null)";
-    1616:	00000997          	auipc	s3,0x0
-    161a:	42a98993          	addi	s3,s3,1066 # 1a40 <malloc+0x2d0>
+    1620:	00000997          	auipc	s3,0x0
+    1624:	42898993          	addi	s3,s3,1064 # 1a48 <malloc+0x2ce>
         while(*s != 0){
-    161e:	85ee                	mv	a1,s11
-    1620:	bff9                	j	15fe <vprintf+0x152>
+    1628:	85ee                	mv	a1,s11
+    162a:	bff9                	j	1608 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
-    1622:	008b0913          	addi	s2,s6,8
-    1626:	000b4583          	lbu	a1,0(s6)
-    162a:	8556                	mv	a0,s5
-    162c:	00000097          	auipc	ra,0x0
-    1630:	db4080e7          	jalr	-588(ra) # 13e0 <putc>
-    1634:	8b4a                	mv	s6,s2
+    162c:	008b0913          	addi	s2,s6,8
+    1630:	000b4583          	lbu	a1,0(s6)
+    1634:	8556                	mv	a0,s5
+    1636:	00000097          	auipc	ra,0x0
+    163a:	db4080e7          	jalr	-588(ra) # 13ea <putc>
+    163e:	8b4a                	mv	s6,s2
       state = 0;
-    1636:	4981                	li	s3,0
-    1638:	bdd1                	j	150c <vprintf+0x60>
+    1640:	4981                	li	s3,0
+    1642:	bdd1                	j	1516 <vprintf+0x60>
         putc(fd, c);
-    163a:	85d2                	mv	a1,s4
-    163c:	8556                	mv	a0,s5
-    163e:	00000097          	auipc	ra,0x0
-    1642:	da2080e7          	jalr	-606(ra) # 13e0 <putc>
+    1644:	85d2                	mv	a1,s4
+    1646:	8556                	mv	a0,s5
+    1648:	00000097          	auipc	ra,0x0
+    164c:	da2080e7          	jalr	-606(ra) # 13ea <putc>
       state = 0;
-    1646:	4981                	li	s3,0
-    1648:	b5d1                	j	150c <vprintf+0x60>
+    1650:	4981                	li	s3,0
+    1652:	b5d1                	j	1516 <vprintf+0x60>
         putc(fd, '%');
-    164a:	85d2                	mv	a1,s4
-    164c:	8556                	mv	a0,s5
-    164e:	00000097          	auipc	ra,0x0
-    1652:	d92080e7          	jalr	-622(ra) # 13e0 <putc>
+    1654:	85d2                	mv	a1,s4
+    1656:	8556                	mv	a0,s5
+    1658:	00000097          	auipc	ra,0x0
+    165c:	d92080e7          	jalr	-622(ra) # 13ea <putc>
         putc(fd, c);
-    1656:	85ca                	mv	a1,s2
-    1658:	8556                	mv	a0,s5
-    165a:	00000097          	auipc	ra,0x0
-    165e:	d86080e7          	jalr	-634(ra) # 13e0 <putc>
+    1660:	85ca                	mv	a1,s2
+    1662:	8556                	mv	a0,s5
+    1664:	00000097          	auipc	ra,0x0
+    1668:	d86080e7          	jalr	-634(ra) # 13ea <putc>
       state = 0;
-    1662:	4981                	li	s3,0
-    1664:	b565                	j	150c <vprintf+0x60>
+    166c:	4981                	li	s3,0
+    166e:	b565                	j	1516 <vprintf+0x60>
         s = va_arg(ap, char*);
-    1666:	8b4a                	mv	s6,s2
+    1670:	8b4a                	mv	s6,s2
       state = 0;
-    1668:	4981                	li	s3,0
-    166a:	b54d                	j	150c <vprintf+0x60>
+    1672:	4981                	li	s3,0
+    1674:	b54d                	j	1516 <vprintf+0x60>
     }
   }
 }
-    166c:	70e6                	ld	ra,120(sp)
-    166e:	7446                	ld	s0,112(sp)
-    1670:	74a6                	ld	s1,104(sp)
-    1672:	7906                	ld	s2,96(sp)
-    1674:	69e6                	ld	s3,88(sp)
-    1676:	6a46                	ld	s4,80(sp)
-    1678:	6aa6                	ld	s5,72(sp)
-    167a:	6b06                	ld	s6,64(sp)
-    167c:	7be2                	ld	s7,56(sp)
-    167e:	7c42                	ld	s8,48(sp)
-    1680:	7ca2                	ld	s9,40(sp)
-    1682:	7d02                	ld	s10,32(sp)
-    1684:	6de2                	ld	s11,24(sp)
-    1686:	6109                	addi	sp,sp,128
-    1688:	8082                	ret
-
-000000000000168a <fprintf>:
+    1676:	70e6                	ld	ra,120(sp)
+    1678:	7446                	ld	s0,112(sp)
+    167a:	74a6                	ld	s1,104(sp)
+    167c:	7906                	ld	s2,96(sp)
+    167e:	69e6                	ld	s3,88(sp)
+    1680:	6a46                	ld	s4,80(sp)
+    1682:	6aa6                	ld	s5,72(sp)
+    1684:	6b06                	ld	s6,64(sp)
+    1686:	7be2                	ld	s7,56(sp)
+    1688:	7c42                	ld	s8,48(sp)
+    168a:	7ca2                	ld	s9,40(sp)
+    168c:	7d02                	ld	s10,32(sp)
+    168e:	6de2                	ld	s11,24(sp)
+    1690:	6109                	addi	sp,sp,128
+    1692:	8082                	ret
+
+0000000000001694 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
-    168a:	715d                	addi	sp,sp,-80
-    168c:	ec06                	sd	ra,24(sp)
-    168e:	e822                	sd	s0,16(sp)
-    1690:	1000                	addi	s0,sp,32
-    1692:	e010                	sd	a2,0(s0)
-    1694:	e414                	sd	a3,8(s0)
-    1696:	e818                	sd	a4,16(s0)
-    1698:	ec1c                	sd	a5,24(s0)
-    169a:	03043023          	sd	a6,32(s0)
-    169e:	03143423          	sd	a7,40(s0)
+    1694:	715d                	addi	sp,sp,-80
+    1696:	ec06                	sd	ra,24(sp)
+    1698:	e822                	sd	s0,16(sp)
+    169a:	1000                	addi	s0,sp,32
+    169c:	e010                	sd	a2,0(s0)
+    169e:	e414                	sd	a3,8(s0)
+    16a0:	e818                	sd	a4,16(s0)
+    16a2:	ec1c                	sd	a5,24(s0)
+    16a4:	03043023          	sd	a6,32(s0)
+    16a8:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
-    16a2:	8622                	mv	a2,s0
-    16a4:	fe843423          	sd	s0,-24(s0)
+    16ac:	8622                	mv	a2,s0
+    16ae:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
-    16a8:	00000097          	auipc	ra,0x0
-    16ac:	e04080e7          	jalr	-508(ra) # 14ac <vprintf>
+    16b2:	00000097          	auipc	ra,0x0
+    16b6:	e04080e7          	jalr	-508(ra) # 14b6 <vprintf>
 }
-    16b0:	60e2                	ld	ra,24(sp)
-    16b2:	6442                	ld	s0,16(sp)
-    16b4:	6161                	addi	sp,sp,80
-    16b6:	8082                	ret
+    16ba:	60e2                	ld	ra,24(sp)
+    16bc:	6442                	ld	s0,16(sp)
+    16be:	6161                	addi	sp,sp,80
+    16c0:	8082                	ret
 
-00000000000016b8 <printf>:
+00000000000016c2 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
-    16b8:	711d                	addi	sp,sp,-96
-    16ba:	ec06                	sd	ra,24(sp)
-    16bc:	e822                	sd	s0,16(sp)
-    16be:	1000                	addi	s0,sp,32
-    16c0:	e40c                	sd	a1,8(s0)
-    16c2:	e810                	sd	a2,16(s0)
-    16c4:	ec14                	sd	a3,24(s0)
-    16c6:	f018                	sd	a4,32(s0)
-    16c8:	f41c                	sd	a5,40(s0)
-    16ca:	03043823          	sd	a6,48(s0)
-    16ce:	03143c23          	sd	a7,56(s0)
+    16c2:	711d                	addi	sp,sp,-96
+    16c4:	ec06                	sd	ra,24(sp)
+    16c6:	e822                	sd	s0,16(sp)
+    16c8:	1000                	addi	s0,sp,32
+    16ca:	e40c                	sd	a1,8(s0)
+    16cc:	e810                	sd	a2,16(s0)
+    16ce:	ec14                	sd	a3,24(s0)
+    16d0:	f018                	sd	a4,32(s0)
+    16d2:	f41c                	sd	a5,40(s0)
+    16d4:	03043823          	sd	a6,48(s0)
+    16d8:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
-    16d2:	00840613          	addi	a2,s0,8
-    16d6:	fec43423          	sd	a2,-24(s0)
+    16dc:	00840613          	addi	a2,s0,8
+    16e0:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
-    16da:	85aa                	mv	a1,a0
-    16dc:	4505                	li	a0,1
-    16de:	00000097          	auipc	ra,0x0
-    16e2:	dce080e7          	jalr	-562(ra) # 14ac <vprintf>
+    16e4:	85aa                	mv	a1,a0
+    16e6:	4505                	li	a0,1
+    16e8:	00000097          	auipc	ra,0x0
+    16ec:	dce080e7          	jalr	-562(ra) # 14b6 <vprintf>
 }
-    16e6:	60e2                	ld	ra,24(sp)
-    16e8:	6442                	ld	s0,16(sp)
-    16ea:	6125                	addi	sp,sp,96
-    16ec:	8082                	ret
+    16f0:	60e2                	ld	ra,24(sp)
+    16f2:	6442                	ld	s0,16(sp)
+    16f4:	6125                	addi	sp,sp,96
+    16f6:	8082                	ret
 
-00000000000016ee <free>:
+00000000000016f8 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
-    16ee:	1141                	addi	sp,sp,-16
-    16f0:	e422                	sd	s0,8(sp)
-    16f2:	0800                	addi	s0,sp,16
+    16f8:	1141                	addi	sp,sp,-16
+    16fa:	e422                	sd	s0,8(sp)
+    16fc:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
-    16f4:	ff050693          	addi	a3,a0,-16
+    16fe:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
-    16f8:	00001797          	auipc	a5,0x1
-    16fc:	cc07b783          	ld	a5,-832(a5) # 23b8 <freep>
-    1700:	a02d                	j	172a <free+0x3c>
+    1702:	00001797          	auipc	a5,0x1
+    1706:	cbe7b783          	ld	a5,-834(a5) # 23c0 <freep>
+    170a:	a02d                	j	1734 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
-    1702:	4618                	lw	a4,8(a2)
-    1704:	9f2d                	addw	a4,a4,a1
-    1706:	fee52c23          	sw	a4,-8(a0)
+    170c:	4618                	lw	a4,8(a2)
+    170e:	9f2d                	addw	a4,a4,a1
+    1710:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
-    170a:	6398                	ld	a4,0(a5)
-    170c:	6310                	ld	a2,0(a4)
-    170e:	a83d                	j	174c <free+0x5e>
+    1714:	6398                	ld	a4,0(a5)
+    1716:	6310                	ld	a2,0(a4)
+    1718:	a83d                	j	1756 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
-    1710:	ff852703          	lw	a4,-8(a0)
-    1714:	9f31                	addw	a4,a4,a2
-    1716:	c798                	sw	a4,8(a5)
+    171a:	ff852703          	lw	a4,-8(a0)
+    171e:	9f31                	addw	a4,a4,a2
+    1720:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
-    1718:	ff053683          	ld	a3,-16(a0)
-    171c:	a091                	j	1760 <free+0x72>
+    1722:	ff053683          	ld	a3,-16(a0)
+    1726:	a091                	j	176a <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
-    171e:	6398                	ld	a4,0(a5)
-    1720:	00e7e463          	bltu	a5,a4,1728 <free+0x3a>
-    1724:	00e6ea63          	bltu	a3,a4,1738 <free+0x4a>
+    1728:	6398                	ld	a4,0(a5)
+    172a:	00e7e463          	bltu	a5,a4,1732 <free+0x3a>
+    172e:	00e6ea63          	bltu	a3,a4,1742 <free+0x4a>
 {
-    1728:	87ba                	mv	a5,a4
+    1732:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
-    172a:	fed7fae3          	bgeu	a5,a3,171e <free+0x30>
-    172e:	6398                	ld	a4,0(a5)
-    1730:	00e6e463          	bltu	a3,a4,1738 <free+0x4a>
+    1734:	fed7fae3          	bgeu	a5,a3,1728 <free+0x30>
+    1738:	6398                	ld	a4,0(a5)
+    173a:	00e6e463          	bltu	a3,a4,1742 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
-    1734:	fee7eae3          	bltu	a5,a4,1728 <free+0x3a>
+    173e:	fee7eae3          	bltu	a5,a4,1732 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
-    1738:	ff852583          	lw	a1,-8(a0)
-    173c:	6390                	ld	a2,0(a5)
-    173e:	02059813          	slli	a6,a1,0x20
-    1742:	01c85713          	srli	a4,a6,0x1c
-    1746:	9736                	add	a4,a4,a3
-    1748:	fae60de3          	beq	a2,a4,1702 <free+0x14>
+    1742:	ff852583          	lw	a1,-8(a0)
+    1746:	6390                	ld	a2,0(a5)
+    1748:	02059813          	slli	a6,a1,0x20
+    174c:	01c85713          	srli	a4,a6,0x1c
+    1750:	9736                	add	a4,a4,a3
+    1752:	fae60de3          	beq	a2,a4,170c <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
-    174c:	fec53823          	sd	a2,-16(a0)
+    1756:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
-    1750:	4790                	lw	a2,8(a5)
-    1752:	02061593          	slli	a1,a2,0x20
-    1756:	01c5d713          	srli	a4,a1,0x1c
-    175a:	973e                	add	a4,a4,a5
-    175c:	fae68ae3          	beq	a3,a4,1710 <free+0x22>
+    175a:	4790                	lw	a2,8(a5)
+    175c:	02061593          	slli	a1,a2,0x20
+    1760:	01c5d713          	srli	a4,a1,0x1c
+    1764:	973e                	add	a4,a4,a5
+    1766:	fae68ae3          	beq	a3,a4,171a <free+0x22>
     p->s.ptr = bp->s.ptr;
-    1760:	e394                	sd	a3,0(a5)
+    176a:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
-    1762:	00001717          	auipc	a4,0x1
-    1766:	c4f73b23          	sd	a5,-938(a4) # 23b8 <freep>
+    176c:	00001717          	auipc	a4,0x1
+    1770:	c4f73a23          	sd	a5,-940(a4) # 23c0 <freep>
 }
-    176a:	6422                	ld	s0,8(sp)
-    176c:	0141                	addi	sp,sp,16
-    176e:	8082                	ret
+    1774:	6422                	ld	s0,8(sp)
+    1776:	0141                	addi	sp,sp,16
+    1778:	8082                	ret
 
-0000000000001770 <malloc>:
+000000000000177a <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
-    1770:	7139                	addi	sp,sp,-64
-    1772:	fc06                	sd	ra,56(sp)
-    1774:	f822                	sd	s0,48(sp)
-    1776:	f426                	sd	s1,40(sp)
-    1778:	f04a                	sd	s2,32(sp)
-    177a:	ec4e                	sd	s3,24(sp)
-    177c:	e852                	sd	s4,16(sp)
-    177e:	e456                	sd	s5,8(sp)
-    1780:	e05a                	sd	s6,0(sp)
-    1782:	0080                	addi	s0,sp,64
+    177a:	7139                	addi	sp,sp,-64
+    177c:	fc06                	sd	ra,56(sp)
+    177e:	f822                	sd	s0,48(sp)
+    1780:	f426                	sd	s1,40(sp)
+    1782:	f04a                	sd	s2,32(sp)
+    1784:	ec4e                	sd	s3,24(sp)
+    1786:	e852                	sd	s4,16(sp)
+    1788:	e456                	sd	s5,8(sp)
+    178a:	e05a                	sd	s6,0(sp)
+    178c:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
-    1784:	02051493          	slli	s1,a0,0x20
-    1788:	9081                	srli	s1,s1,0x20
-    178a:	04bd                	addi	s1,s1,15
-    178c:	8091                	srli	s1,s1,0x4
-    178e:	00148a1b          	addiw	s4,s1,1
-    1792:	0485                	addi	s1,s1,1
+    178e:	02051493          	slli	s1,a0,0x20
+    1792:	9081                	srli	s1,s1,0x20
+    1794:	04bd                	addi	s1,s1,15
+    1796:	8091                	srli	s1,s1,0x4
+    1798:	00148a1b          	addiw	s4,s1,1
+    179c:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
-    1794:	00001517          	auipc	a0,0x1
-    1798:	c2453503          	ld	a0,-988(a0) # 23b8 <freep>
-    179c:	c515                	beqz	a0,17c8 <malloc+0x58>
+    179e:	00001517          	auipc	a0,0x1
+    17a2:	c2253503          	ld	a0,-990(a0) # 23c0 <freep>
+    17a6:	c515                	beqz	a0,17d2 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
-    179e:	611c                	ld	a5,0(a0)
+    17a8:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
-    17a0:	4798                	lw	a4,8(a5)
-    17a2:	04977163          	bgeu	a4,s1,17e4 <malloc+0x74>
-    17a6:	89d2                	mv	s3,s4
-    17a8:	000a071b          	sext.w	a4,s4
-    17ac:	6685                	lui	a3,0x1
-    17ae:	00d77363          	bgeu	a4,a3,17b4 <malloc+0x44>
-    17b2:	6985                	lui	s3,0x1
-    17b4:	00098b1b          	sext.w	s6,s3
+    17aa:	4798                	lw	a4,8(a5)
+    17ac:	04977163          	bgeu	a4,s1,17ee <malloc+0x74>
+    17b0:	89d2                	mv	s3,s4
+    17b2:	000a071b          	sext.w	a4,s4
+    17b6:	6685                	lui	a3,0x1
+    17b8:	00d77363          	bgeu	a4,a3,17be <malloc+0x44>
+    17bc:	6985                	lui	s3,0x1
+    17be:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
-    17b8:	0049999b          	slliw	s3,s3,0x4
+    17c2:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
-    17bc:	00001917          	auipc	s2,0x1
-    17c0:	bfc90913          	addi	s2,s2,-1028 # 23b8 <freep>
+    17c6:	00001917          	auipc	s2,0x1
+    17ca:	bfa90913          	addi	s2,s2,-1030 # 23c0 <freep>
   if(p == (char*)-1)
-    17c4:	5afd                	li	s5,-1
-    17c6:	a8a5                	j	183e <malloc+0xce>
+    17ce:	5afd                	li	s5,-1
+    17d0:	a8a5                	j	1848 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
-    17c8:	00001797          	auipc	a5,0x1
-    17cc:	bf078793          	addi	a5,a5,-1040 # 23b8 <freep>
-    17d0:	00001717          	auipc	a4,0x1
-    17d4:	bf070713          	addi	a4,a4,-1040 # 23c0 <base>
-    17d8:	e398                	sd	a4,0(a5)
-    17da:	e798                	sd	a4,8(a5)
+    17d2:	00001797          	auipc	a5,0x1
+    17d6:	bee78793          	addi	a5,a5,-1042 # 23c0 <freep>
+    17da:	00001717          	auipc	a4,0x1
+    17de:	bee70713          	addi	a4,a4,-1042 # 23c8 <base>
+    17e2:	e398                	sd	a4,0(a5)
+    17e4:	e798                	sd	a4,8(a5)
     base.s.size = 0;
-    17dc:	0007a823          	sw	zero,16(a5)
+    17e6:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
-    17e0:	87ba                	mv	a5,a4
-    17e2:	b7d1                	j	17a6 <malloc+0x36>
+    17ea:	87ba                	mv	a5,a4
+    17ec:	b7d1                	j	17b0 <malloc+0x36>
       if(p->s.size == nunits)
-    17e4:	02e48c63          	beq	s1,a4,181c <malloc+0xac>
+    17ee:	02e48c63          	beq	s1,a4,1826 <malloc+0xac>
         p->s.size -= nunits;
-    17e8:	4147073b          	subw	a4,a4,s4
-    17ec:	c798                	sw	a4,8(a5)
+    17f2:	4147073b          	subw	a4,a4,s4
+    17f6:	c798                	sw	a4,8(a5)
         p += p->s.size;
-    17ee:	02071693          	slli	a3,a4,0x20
-    17f2:	01c6d713          	srli	a4,a3,0x1c
-    17f6:	97ba                	add	a5,a5,a4
+    17f8:	02071693          	slli	a3,a4,0x20
+    17fc:	01c6d713          	srli	a4,a3,0x1c
+    1800:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
-    17f8:	0147a423          	sw	s4,8(a5)
+    1802:	0147a423          	sw	s4,8(a5)
       freep = prevp;
-    17fc:	00001717          	auipc	a4,0x1
-    1800:	baa73e23          	sd	a0,-1092(a4) # 23b8 <freep>
+    1806:	00001717          	auipc	a4,0x1
+    180a:	baa73d23          	sd	a0,-1094(a4) # 23c0 <freep>
       return (void*)(p + 1);
-    1804:	01078513          	addi	a0,a5,16
+    180e:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
-    1808:	70e2                	ld	ra,56(sp)
-    180a:	7442                	ld	s0,48(sp)
-    180c:	74a2                	ld	s1,40(sp)
-    180e:	7902                	ld	s2,32(sp)
-    1810:	69e2                	ld	s3,24(sp)
-    1812:	6a42                	ld	s4,16(sp)
-    1814:	6aa2                	ld	s5,8(sp)
-    1816:	6b02                	ld	s6,0(sp)
-    1818:	6121                	addi	sp,sp,64
-    181a:	8082                	ret
+    1812:	70e2                	ld	ra,56(sp)
+    1814:	7442                	ld	s0,48(sp)
+    1816:	74a2                	ld	s1,40(sp)
+    1818:	7902                	ld	s2,32(sp)
+    181a:	69e2                	ld	s3,24(sp)
+    181c:	6a42                	ld	s4,16(sp)
+    181e:	6aa2                	ld	s5,8(sp)
+    1820:	6b02                	ld	s6,0(sp)
+    1822:	6121                	addi	sp,sp,64
+    1824:	8082                	ret
         prevp->s.ptr = p->s.ptr;
-    181c:	6398                	ld	a4,0(a5)
-    181e:	e118                	sd	a4,0(a0)
-    1820:	bff1                	j	17fc <malloc+0x8c>
+    1826:	6398                	ld	a4,0(a5)
+    1828:	e118                	sd	a4,0(a0)
+    182a:	bff1                	j	1806 <malloc+0x8c>
   hp->s.size = nu;
-    1822:	01652423          	sw	s6,8(a0)
+    182c:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
-    1826:	0541                	addi	a0,a0,16
-    1828:	00000097          	auipc	ra,0x0
-    182c:	ec6080e7          	jalr	-314(ra) # 16ee <free>
+    1830:	0541                	addi	a0,a0,16
+    1832:	00000097          	auipc	ra,0x0
+    1836:	ec6080e7          	jalr	-314(ra) # 16f8 <free>
   return freep;
-    1830:	00093503          	ld	a0,0(s2)
+    183a:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
-    1834:	d971                	beqz	a0,1808 <malloc+0x98>
+    183e:	d971                	beqz	a0,1812 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
-    1836:	611c                	ld	a5,0(a0)
+    1840:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
-    1838:	4798                	lw	a4,8(a5)
-    183a:	fa9775e3          	bgeu	a4,s1,17e4 <malloc+0x74>
+    1842:	4798                	lw	a4,8(a5)
+    1844:	fa9775e3          	bgeu	a4,s1,17ee <malloc+0x74>
     if(p == freep)
-    183e:	00093703          	ld	a4,0(s2)
-    1842:	853e                	mv	a0,a5
-    1844:	fef719e3          	bne	a4,a5,1836 <malloc+0xc6>
+    1848:	00093703          	ld	a4,0(s2)
+    184c:	853e                	mv	a0,a5
+    184e:	fef719e3          	bne	a4,a5,1840 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
-    1848:	854e                	mv	a0,s3
-    184a:	00000097          	auipc	ra,0x0
-    184e:	b2a080e7          	jalr	-1238(ra) # 1374 <sbrk>
+    1852:	854e                	mv	a0,s3
+    1854:	00000097          	auipc	ra,0x0
+    1858:	b20080e7          	jalr	-1248(ra) # 1374 <sbrk>
   if(p == (char*)-1)
-    1852:	fd5518e3          	bne	a0,s5,1822 <malloc+0xb2>
+    185c:	fd5518e3          	bne	a0,s5,182c <malloc+0xb2>
         return 0;
-    1856:	4501                	li	a0,0
-    1858:	bf45                	j	1808 <malloc+0x98>
+    1860:	4501                	li	a0,0
+    1862:	bf45                	j	1812 <malloc+0x98>
diff --git a/xv6-user/sh.sym b/xv6-user/sh.sym
index 83113ba..ae0d9cc 100644
--- a/xv6-user/sh.sym
+++ b/xv6-user/sh.sym
@@ -1,7 +1,7 @@
 0000000000000000 .text
-0000000000001860 .rodata
-0000000000001ab8 .data
-0000000000001ac8 .bss
+0000000000001868 .rodata
+0000000000001ac0 .data
+0000000000001ad0 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -14,40 +14,41 @@
 0000000000000000 .debug_loclists
 0000000000000000 .debug_rnglists
 0000000000000000 sh.c
-0000000000001b50 buf.0
+0000000000001b58 buf.0
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-00000000000013e0 putc
-0000000000001402 printint
-0000000000001aa0 digits
+00000000000013ea putc
+000000000000140c printint
+0000000000001aa8 digits
 0000000000000000 umalloc.c
-00000000000023b8 freep
-00000000000023c0 base
+00000000000023c0 freep
+00000000000023c8 base
 0000000000001038 strcpy
-00000000000016b8 printf
-00000000000022b8 __global_pointer$
+00000000000016c2 printf
+00000000000022c0 __global_pointer$
 0000000000001394 dev
 000000000000123e memmove
 000000000000064a execcmd
+00000000000013e0 times
 00000000000013b4 trace
 000000000000111e gets
-0000000000001ac8 __SDATA_BEGIN__
+0000000000001ad0 __SDATA_BEGIN__
 000000000000136a getpid
 0000000000000b7a parsepipe
 0000000000000dcc parsecmd
 00000000000012d0 memcpy
 0000000000000774 backcmd
 00000000000008f2 peek
-0000000000001ad0 mycwd
+0000000000001ad8 mycwd
 000000000000095e parseredirs
 00000000000007b0 gettoken
-0000000000001770 malloc
+000000000000177a malloc
 00000000000013ac remove
 000000000000137c sleep
 00000000000013bc sysinfo
-0000000000001ab8 whitespace
-0000000000001bb8 envs
+0000000000001ac0 whitespace
+0000000000001bc0 envs
 000000000000139c readdir
 00000000000003c4 fork1
 0000000000000d34 nulterminate
@@ -58,27 +59,27 @@
 0000000000001316 write
 00000000000001fe replace
 0000000000001344 fstat
-000000000000168a fprintf
+0000000000001694 fprintf
 000000000000132a kill
 0000000000001054 strcat
-00000000000014ac vprintf
+00000000000014b6 vprintf
 0000000000001358 chdir
 0000000000000be8 parseline
 00000000000003f2 runcmd
 0000000000000c90 parseblock
 0000000000001332 exec
 00000000000012fa wait
-0000000000001ac0 symbols
+0000000000001ac8 symbols
 000000000000130c read
 0000000000000a66 parseexec
 000000000000039e panic
 0000000000001296 memcmp
 00000000000012e8 fork
-00000000000023d0 __BSS_END__
+00000000000023d8 __BSS_END__
 0000000000001374 sbrk
 000000000000138c test_proc
 0000000000001384 uptime
-0000000000001ac8 __bss_start
+0000000000001ad0 __bss_start
 00000000000010d8 memset
 0000000000000e58 main
 0000000000000000 checkenvname
@@ -89,10 +90,10 @@
 00000000000006e8 pipecmd
 0000000000000066 export
 0000000000000680 redircmd
-0000000000001ab8 __DATA_BEGIN__
+0000000000001ac0 __DATA_BEGIN__
 0000000000001198 stat
-0000000000001ac8 _edata
-00000000000023d0 _end
+0000000000001ad0 _edata
+00000000000023d8 _end
 00000000000012f0 exit
 00000000000011de atoi
 00000000000010ae strlen
@@ -100,6 +101,6 @@
 00000000000010fa strchr
 000000000000134e mkdir
 0000000000001320 close
-0000000000001ac8 nenv
+0000000000001ad0 nenv
 000000000000072e listcmd
-00000000000016ee free
+00000000000016f8 free
diff --git a/xv6-user/sleep.asm b/xv6-user/sleep.asm
index f0ae422..ccc9700 100644
--- a/xv6-user/sleep.asm
+++ b/xv6-user/sleep.asm
@@ -29,20 +29,20 @@ main(int argc, char *argv[])
   18:	ed0d                	bnez	a0,52 <main+0x52>
         fprintf(2, "Usage: sleep TIME\nTIME should be an integer larger than 0.\n");
   1a:	00001597          	auipc	a1,0x1
-  1e:	88658593          	addi	a1,a1,-1914 # 8a0 <malloc+0x104>
+  1e:	88e58593          	addi	a1,a1,-1906 # 8a8 <malloc+0x102>
   22:	4509                	li	a0,2
   24:	00000097          	auipc	ra,0x0
-  28:	692080e7          	jalr	1682(ra) # 6b6 <fprintf>
+  28:	69c080e7          	jalr	1692(ra) # 6c0 <fprintf>
         exit(1);
   2c:	4505                	li	a0,1
   2e:	00000097          	auipc	ra,0x0
   32:	2ee080e7          	jalr	750(ra) # 31c <exit>
         fprintf(2, "Usage: sleep TIME\n");
   36:	00001597          	auipc	a1,0x1
-  3a:	85258593          	addi	a1,a1,-1966 # 888 <malloc+0xec>
+  3a:	85a58593          	addi	a1,a1,-1958 # 890 <malloc+0xea>
   3e:	4509                	li	a0,2
   40:	00000097          	auipc	ra,0x0
-  44:	676080e7          	jalr	1654(ra) # 6b6 <fprintf>
+  44:	680080e7          	jalr	1664(ra) # 6c0 <fprintf>
         exit(1);
   48:	4505                	li	a0,1
   4a:	00000097          	auipc	ra,0x0
@@ -812,637 +812,647 @@ uname:
  ret
  40a:	8082                	ret
 
-000000000000040c <putc>:
+000000000000040c <times>:
+.global times
+times:
+ li a7, SYS_times
+ 40c:	09900893          	li	a7,153
+ ecall
+ 410:	00000073          	ecall
+ ret
+ 414:	8082                	ret
+
+0000000000000416 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 40c:	1101                	addi	sp,sp,-32
- 40e:	ec06                	sd	ra,24(sp)
- 410:	e822                	sd	s0,16(sp)
- 412:	1000                	addi	s0,sp,32
- 414:	feb407a3          	sb	a1,-17(s0)
+ 416:	1101                	addi	sp,sp,-32
+ 418:	ec06                	sd	ra,24(sp)
+ 41a:	e822                	sd	s0,16(sp)
+ 41c:	1000                	addi	s0,sp,32
+ 41e:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 418:	4605                	li	a2,1
- 41a:	fef40593          	addi	a1,s0,-17
- 41e:	00000097          	auipc	ra,0x0
- 422:	f24080e7          	jalr	-220(ra) # 342 <write>
+ 422:	4605                	li	a2,1
+ 424:	fef40593          	addi	a1,s0,-17
+ 428:	00000097          	auipc	ra,0x0
+ 42c:	f1a080e7          	jalr	-230(ra) # 342 <write>
 }
- 426:	60e2                	ld	ra,24(sp)
- 428:	6442                	ld	s0,16(sp)
- 42a:	6105                	addi	sp,sp,32
- 42c:	8082                	ret
+ 430:	60e2                	ld	ra,24(sp)
+ 432:	6442                	ld	s0,16(sp)
+ 434:	6105                	addi	sp,sp,32
+ 436:	8082                	ret
 
-000000000000042e <printint>:
+0000000000000438 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 42e:	7139                	addi	sp,sp,-64
- 430:	fc06                	sd	ra,56(sp)
- 432:	f822                	sd	s0,48(sp)
- 434:	f426                	sd	s1,40(sp)
- 436:	f04a                	sd	s2,32(sp)
- 438:	ec4e                	sd	s3,24(sp)
- 43a:	0080                	addi	s0,sp,64
- 43c:	84aa                	mv	s1,a0
+ 438:	7139                	addi	sp,sp,-64
+ 43a:	fc06                	sd	ra,56(sp)
+ 43c:	f822                	sd	s0,48(sp)
+ 43e:	f426                	sd	s1,40(sp)
+ 440:	f04a                	sd	s2,32(sp)
+ 442:	ec4e                	sd	s3,24(sp)
+ 444:	0080                	addi	s0,sp,64
+ 446:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 43e:	c299                	beqz	a3,444 <printint+0x16>
- 440:	0805c863          	bltz	a1,4d0 <printint+0xa2>
+ 448:	c299                	beqz	a3,44e <printint+0x16>
+ 44a:	0805c863          	bltz	a1,4da <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 444:	2581                	sext.w	a1,a1
+ 44e:	2581                	sext.w	a1,a1
   neg = 0;
- 446:	4881                	li	a7,0
+ 450:	4881                	li	a7,0
   }
 
   i = 0;
- 448:	fc040993          	addi	s3,s0,-64
+ 452:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 44c:	86ce                	mv	a3,s3
+ 456:	86ce                	mv	a3,s3
   i = 0;
- 44e:	4701                	li	a4,0
+ 458:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 450:	2601                	sext.w	a2,a2
- 452:	00000517          	auipc	a0,0x0
- 456:	4ee50513          	addi	a0,a0,1262 # 940 <digits>
- 45a:	883a                	mv	a6,a4
- 45c:	2705                	addiw	a4,a4,1
- 45e:	02c5f7bb          	remuw	a5,a1,a2
- 462:	1782                	slli	a5,a5,0x20
- 464:	9381                	srli	a5,a5,0x20
- 466:	97aa                	add	a5,a5,a0
- 468:	0007c783          	lbu	a5,0(a5)
- 46c:	00f68023          	sb	a5,0(a3)
+ 45a:	2601                	sext.w	a2,a2
+ 45c:	00000517          	auipc	a0,0x0
+ 460:	4ec50513          	addi	a0,a0,1260 # 948 <digits>
+ 464:	883a                	mv	a6,a4
+ 466:	2705                	addiw	a4,a4,1
+ 468:	02c5f7bb          	remuw	a5,a1,a2
+ 46c:	1782                	slli	a5,a5,0x20
+ 46e:	9381                	srli	a5,a5,0x20
+ 470:	97aa                	add	a5,a5,a0
+ 472:	0007c783          	lbu	a5,0(a5)
+ 476:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 470:	0005879b          	sext.w	a5,a1
- 474:	02c5d5bb          	divuw	a1,a1,a2
- 478:	0685                	addi	a3,a3,1
- 47a:	fec7f0e3          	bgeu	a5,a2,45a <printint+0x2c>
+ 47a:	0005879b          	sext.w	a5,a1
+ 47e:	02c5d5bb          	divuw	a1,a1,a2
+ 482:	0685                	addi	a3,a3,1
+ 484:	fec7f0e3          	bgeu	a5,a2,464 <printint+0x2c>
   if(neg)
- 47e:	00088c63          	beqz	a7,496 <printint+0x68>
+ 488:	00088c63          	beqz	a7,4a0 <printint+0x68>
     buf[i++] = '-';
- 482:	fd070793          	addi	a5,a4,-48
- 486:	00878733          	add	a4,a5,s0
- 48a:	02d00793          	li	a5,45
- 48e:	fef70823          	sb	a5,-16(a4)
- 492:	0028071b          	addiw	a4,a6,2
+ 48c:	fd070793          	addi	a5,a4,-48
+ 490:	00878733          	add	a4,a5,s0
+ 494:	02d00793          	li	a5,45
+ 498:	fef70823          	sb	a5,-16(a4)
+ 49c:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 496:	02e05663          	blez	a4,4c2 <printint+0x94>
- 49a:	fc040913          	addi	s2,s0,-64
- 49e:	993a                	add	s2,s2,a4
- 4a0:	19fd                	addi	s3,s3,-1
- 4a2:	99ba                	add	s3,s3,a4
- 4a4:	377d                	addiw	a4,a4,-1
- 4a6:	1702                	slli	a4,a4,0x20
- 4a8:	9301                	srli	a4,a4,0x20
- 4aa:	40e989b3          	sub	s3,s3,a4
+ 4a0:	02e05663          	blez	a4,4cc <printint+0x94>
+ 4a4:	fc040913          	addi	s2,s0,-64
+ 4a8:	993a                	add	s2,s2,a4
+ 4aa:	19fd                	addi	s3,s3,-1
+ 4ac:	99ba                	add	s3,s3,a4
+ 4ae:	377d                	addiw	a4,a4,-1
+ 4b0:	1702                	slli	a4,a4,0x20
+ 4b2:	9301                	srli	a4,a4,0x20
+ 4b4:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 4ae:	fff94583          	lbu	a1,-1(s2)
- 4b2:	8526                	mv	a0,s1
- 4b4:	00000097          	auipc	ra,0x0
- 4b8:	f58080e7          	jalr	-168(ra) # 40c <putc>
+ 4b8:	fff94583          	lbu	a1,-1(s2)
+ 4bc:	8526                	mv	a0,s1
+ 4be:	00000097          	auipc	ra,0x0
+ 4c2:	f58080e7          	jalr	-168(ra) # 416 <putc>
   while(--i >= 0)
- 4bc:	197d                	addi	s2,s2,-1
- 4be:	ff3918e3          	bne	s2,s3,4ae <printint+0x80>
+ 4c6:	197d                	addi	s2,s2,-1
+ 4c8:	ff3918e3          	bne	s2,s3,4b8 <printint+0x80>
 }
- 4c2:	70e2                	ld	ra,56(sp)
- 4c4:	7442                	ld	s0,48(sp)
- 4c6:	74a2                	ld	s1,40(sp)
- 4c8:	7902                	ld	s2,32(sp)
- 4ca:	69e2                	ld	s3,24(sp)
- 4cc:	6121                	addi	sp,sp,64
- 4ce:	8082                	ret
+ 4cc:	70e2                	ld	ra,56(sp)
+ 4ce:	7442                	ld	s0,48(sp)
+ 4d0:	74a2                	ld	s1,40(sp)
+ 4d2:	7902                	ld	s2,32(sp)
+ 4d4:	69e2                	ld	s3,24(sp)
+ 4d6:	6121                	addi	sp,sp,64
+ 4d8:	8082                	ret
     x = -xx;
- 4d0:	40b005bb          	negw	a1,a1
+ 4da:	40b005bb          	negw	a1,a1
     neg = 1;
- 4d4:	4885                	li	a7,1
+ 4de:	4885                	li	a7,1
     x = -xx;
- 4d6:	bf8d                	j	448 <printint+0x1a>
+ 4e0:	bf8d                	j	452 <printint+0x1a>
 
-00000000000004d8 <vprintf>:
+00000000000004e2 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 4d8:	7119                	addi	sp,sp,-128
- 4da:	fc86                	sd	ra,120(sp)
- 4dc:	f8a2                	sd	s0,112(sp)
- 4de:	f4a6                	sd	s1,104(sp)
- 4e0:	f0ca                	sd	s2,96(sp)
- 4e2:	ecce                	sd	s3,88(sp)
- 4e4:	e8d2                	sd	s4,80(sp)
- 4e6:	e4d6                	sd	s5,72(sp)
- 4e8:	e0da                	sd	s6,64(sp)
- 4ea:	fc5e                	sd	s7,56(sp)
- 4ec:	f862                	sd	s8,48(sp)
- 4ee:	f466                	sd	s9,40(sp)
- 4f0:	f06a                	sd	s10,32(sp)
- 4f2:	ec6e                	sd	s11,24(sp)
- 4f4:	0100                	addi	s0,sp,128
+ 4e2:	7119                	addi	sp,sp,-128
+ 4e4:	fc86                	sd	ra,120(sp)
+ 4e6:	f8a2                	sd	s0,112(sp)
+ 4e8:	f4a6                	sd	s1,104(sp)
+ 4ea:	f0ca                	sd	s2,96(sp)
+ 4ec:	ecce                	sd	s3,88(sp)
+ 4ee:	e8d2                	sd	s4,80(sp)
+ 4f0:	e4d6                	sd	s5,72(sp)
+ 4f2:	e0da                	sd	s6,64(sp)
+ 4f4:	fc5e                	sd	s7,56(sp)
+ 4f6:	f862                	sd	s8,48(sp)
+ 4f8:	f466                	sd	s9,40(sp)
+ 4fa:	f06a                	sd	s10,32(sp)
+ 4fc:	ec6e                	sd	s11,24(sp)
+ 4fe:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 4f6:	0005c903          	lbu	s2,0(a1)
- 4fa:	18090f63          	beqz	s2,698 <vprintf+0x1c0>
- 4fe:	8aaa                	mv	s5,a0
- 500:	8b32                	mv	s6,a2
- 502:	00158493          	addi	s1,a1,1
+ 500:	0005c903          	lbu	s2,0(a1)
+ 504:	18090f63          	beqz	s2,6a2 <vprintf+0x1c0>
+ 508:	8aaa                	mv	s5,a0
+ 50a:	8b32                	mv	s6,a2
+ 50c:	00158493          	addi	s1,a1,1
   state = 0;
- 506:	4981                	li	s3,0
+ 510:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 508:	02500a13          	li	s4,37
- 50c:	4c55                	li	s8,21
- 50e:	00000c97          	auipc	s9,0x0
- 512:	3dac8c93          	addi	s9,s9,986 # 8e8 <malloc+0x14c>
+ 512:	02500a13          	li	s4,37
+ 516:	4c55                	li	s8,21
+ 518:	00000c97          	auipc	s9,0x0
+ 51c:	3d8c8c93          	addi	s9,s9,984 # 8f0 <malloc+0x14a>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 516:	02800d93          	li	s11,40
+ 520:	02800d93          	li	s11,40
   putc(fd, 'x');
- 51a:	4d41                	li	s10,16
+ 524:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 51c:	00000b97          	auipc	s7,0x0
- 520:	424b8b93          	addi	s7,s7,1060 # 940 <digits>
- 524:	a839                	j	542 <vprintf+0x6a>
+ 526:	00000b97          	auipc	s7,0x0
+ 52a:	422b8b93          	addi	s7,s7,1058 # 948 <digits>
+ 52e:	a839                	j	54c <vprintf+0x6a>
         putc(fd, c);
- 526:	85ca                	mv	a1,s2
- 528:	8556                	mv	a0,s5
- 52a:	00000097          	auipc	ra,0x0
- 52e:	ee2080e7          	jalr	-286(ra) # 40c <putc>
- 532:	a019                	j	538 <vprintf+0x60>
+ 530:	85ca                	mv	a1,s2
+ 532:	8556                	mv	a0,s5
+ 534:	00000097          	auipc	ra,0x0
+ 538:	ee2080e7          	jalr	-286(ra) # 416 <putc>
+ 53c:	a019                	j	542 <vprintf+0x60>
     } else if(state == '%'){
- 534:	01498d63          	beq	s3,s4,54e <vprintf+0x76>
+ 53e:	01498d63          	beq	s3,s4,558 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 538:	0485                	addi	s1,s1,1
- 53a:	fff4c903          	lbu	s2,-1(s1)
- 53e:	14090d63          	beqz	s2,698 <vprintf+0x1c0>
+ 542:	0485                	addi	s1,s1,1
+ 544:	fff4c903          	lbu	s2,-1(s1)
+ 548:	14090d63          	beqz	s2,6a2 <vprintf+0x1c0>
     if(state == 0){
- 542:	fe0999e3          	bnez	s3,534 <vprintf+0x5c>
+ 54c:	fe0999e3          	bnez	s3,53e <vprintf+0x5c>
       if(c == '%'){
- 546:	ff4910e3          	bne	s2,s4,526 <vprintf+0x4e>
+ 550:	ff4910e3          	bne	s2,s4,530 <vprintf+0x4e>
         state = '%';
- 54a:	89d2                	mv	s3,s4
- 54c:	b7f5                	j	538 <vprintf+0x60>
+ 554:	89d2                	mv	s3,s4
+ 556:	b7f5                	j	542 <vprintf+0x60>
       if(c == 'd'){
- 54e:	11490c63          	beq	s2,s4,666 <vprintf+0x18e>
- 552:	f9d9079b          	addiw	a5,s2,-99
- 556:	0ff7f793          	zext.b	a5,a5
- 55a:	10fc6e63          	bltu	s8,a5,676 <vprintf+0x19e>
- 55e:	f9d9079b          	addiw	a5,s2,-99
- 562:	0ff7f713          	zext.b	a4,a5
- 566:	10ec6863          	bltu	s8,a4,676 <vprintf+0x19e>
- 56a:	00271793          	slli	a5,a4,0x2
- 56e:	97e6                	add	a5,a5,s9
- 570:	439c                	lw	a5,0(a5)
- 572:	97e6                	add	a5,a5,s9
- 574:	8782                	jr	a5
+ 558:	11490c63          	beq	s2,s4,670 <vprintf+0x18e>
+ 55c:	f9d9079b          	addiw	a5,s2,-99
+ 560:	0ff7f793          	zext.b	a5,a5
+ 564:	10fc6e63          	bltu	s8,a5,680 <vprintf+0x19e>
+ 568:	f9d9079b          	addiw	a5,s2,-99
+ 56c:	0ff7f713          	zext.b	a4,a5
+ 570:	10ec6863          	bltu	s8,a4,680 <vprintf+0x19e>
+ 574:	00271793          	slli	a5,a4,0x2
+ 578:	97e6                	add	a5,a5,s9
+ 57a:	439c                	lw	a5,0(a5)
+ 57c:	97e6                	add	a5,a5,s9
+ 57e:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 576:	008b0913          	addi	s2,s6,8
- 57a:	4685                	li	a3,1
- 57c:	4629                	li	a2,10
- 57e:	000b2583          	lw	a1,0(s6)
- 582:	8556                	mv	a0,s5
- 584:	00000097          	auipc	ra,0x0
- 588:	eaa080e7          	jalr	-342(ra) # 42e <printint>
- 58c:	8b4a                	mv	s6,s2
+ 580:	008b0913          	addi	s2,s6,8
+ 584:	4685                	li	a3,1
+ 586:	4629                	li	a2,10
+ 588:	000b2583          	lw	a1,0(s6)
+ 58c:	8556                	mv	a0,s5
+ 58e:	00000097          	auipc	ra,0x0
+ 592:	eaa080e7          	jalr	-342(ra) # 438 <printint>
+ 596:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 58e:	4981                	li	s3,0
- 590:	b765                	j	538 <vprintf+0x60>
+ 598:	4981                	li	s3,0
+ 59a:	b765                	j	542 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 592:	008b0913          	addi	s2,s6,8
- 596:	4681                	li	a3,0
- 598:	4629                	li	a2,10
- 59a:	000b2583          	lw	a1,0(s6)
- 59e:	8556                	mv	a0,s5
- 5a0:	00000097          	auipc	ra,0x0
- 5a4:	e8e080e7          	jalr	-370(ra) # 42e <printint>
- 5a8:	8b4a                	mv	s6,s2
+ 59c:	008b0913          	addi	s2,s6,8
+ 5a0:	4681                	li	a3,0
+ 5a2:	4629                	li	a2,10
+ 5a4:	000b2583          	lw	a1,0(s6)
+ 5a8:	8556                	mv	a0,s5
+ 5aa:	00000097          	auipc	ra,0x0
+ 5ae:	e8e080e7          	jalr	-370(ra) # 438 <printint>
+ 5b2:	8b4a                	mv	s6,s2
       state = 0;
- 5aa:	4981                	li	s3,0
- 5ac:	b771                	j	538 <vprintf+0x60>
+ 5b4:	4981                	li	s3,0
+ 5b6:	b771                	j	542 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 5ae:	008b0913          	addi	s2,s6,8
- 5b2:	4681                	li	a3,0
- 5b4:	866a                	mv	a2,s10
- 5b6:	000b2583          	lw	a1,0(s6)
- 5ba:	8556                	mv	a0,s5
- 5bc:	00000097          	auipc	ra,0x0
- 5c0:	e72080e7          	jalr	-398(ra) # 42e <printint>
- 5c4:	8b4a                	mv	s6,s2
+ 5b8:	008b0913          	addi	s2,s6,8
+ 5bc:	4681                	li	a3,0
+ 5be:	866a                	mv	a2,s10
+ 5c0:	000b2583          	lw	a1,0(s6)
+ 5c4:	8556                	mv	a0,s5
+ 5c6:	00000097          	auipc	ra,0x0
+ 5ca:	e72080e7          	jalr	-398(ra) # 438 <printint>
+ 5ce:	8b4a                	mv	s6,s2
       state = 0;
- 5c6:	4981                	li	s3,0
- 5c8:	bf85                	j	538 <vprintf+0x60>
+ 5d0:	4981                	li	s3,0
+ 5d2:	bf85                	j	542 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 5ca:	008b0793          	addi	a5,s6,8
- 5ce:	f8f43423          	sd	a5,-120(s0)
- 5d2:	000b3983          	ld	s3,0(s6)
+ 5d4:	008b0793          	addi	a5,s6,8
+ 5d8:	f8f43423          	sd	a5,-120(s0)
+ 5dc:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 5d6:	03000593          	li	a1,48
- 5da:	8556                	mv	a0,s5
- 5dc:	00000097          	auipc	ra,0x0
- 5e0:	e30080e7          	jalr	-464(ra) # 40c <putc>
+ 5e0:	03000593          	li	a1,48
+ 5e4:	8556                	mv	a0,s5
+ 5e6:	00000097          	auipc	ra,0x0
+ 5ea:	e30080e7          	jalr	-464(ra) # 416 <putc>
   putc(fd, 'x');
- 5e4:	07800593          	li	a1,120
- 5e8:	8556                	mv	a0,s5
- 5ea:	00000097          	auipc	ra,0x0
- 5ee:	e22080e7          	jalr	-478(ra) # 40c <putc>
- 5f2:	896a                	mv	s2,s10
+ 5ee:	07800593          	li	a1,120
+ 5f2:	8556                	mv	a0,s5
+ 5f4:	00000097          	auipc	ra,0x0
+ 5f8:	e22080e7          	jalr	-478(ra) # 416 <putc>
+ 5fc:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 5f4:	03c9d793          	srli	a5,s3,0x3c
- 5f8:	97de                	add	a5,a5,s7
- 5fa:	0007c583          	lbu	a1,0(a5)
- 5fe:	8556                	mv	a0,s5
- 600:	00000097          	auipc	ra,0x0
- 604:	e0c080e7          	jalr	-500(ra) # 40c <putc>
+ 5fe:	03c9d793          	srli	a5,s3,0x3c
+ 602:	97de                	add	a5,a5,s7
+ 604:	0007c583          	lbu	a1,0(a5)
+ 608:	8556                	mv	a0,s5
+ 60a:	00000097          	auipc	ra,0x0
+ 60e:	e0c080e7          	jalr	-500(ra) # 416 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 608:	0992                	slli	s3,s3,0x4
- 60a:	397d                	addiw	s2,s2,-1
- 60c:	fe0914e3          	bnez	s2,5f4 <vprintf+0x11c>
+ 612:	0992                	slli	s3,s3,0x4
+ 614:	397d                	addiw	s2,s2,-1
+ 616:	fe0914e3          	bnez	s2,5fe <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 610:	f8843b03          	ld	s6,-120(s0)
+ 61a:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 614:	4981                	li	s3,0
- 616:	b70d                	j	538 <vprintf+0x60>
+ 61e:	4981                	li	s3,0
+ 620:	b70d                	j	542 <vprintf+0x60>
         s = va_arg(ap, char*);
- 618:	008b0913          	addi	s2,s6,8
- 61c:	000b3983          	ld	s3,0(s6)
+ 622:	008b0913          	addi	s2,s6,8
+ 626:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 620:	02098163          	beqz	s3,642 <vprintf+0x16a>
+ 62a:	02098163          	beqz	s3,64c <vprintf+0x16a>
         while(*s != 0){
- 624:	0009c583          	lbu	a1,0(s3)
- 628:	c5ad                	beqz	a1,692 <vprintf+0x1ba>
+ 62e:	0009c583          	lbu	a1,0(s3)
+ 632:	c5ad                	beqz	a1,69c <vprintf+0x1ba>
           putc(fd, *s);
- 62a:	8556                	mv	a0,s5
- 62c:	00000097          	auipc	ra,0x0
- 630:	de0080e7          	jalr	-544(ra) # 40c <putc>
+ 634:	8556                	mv	a0,s5
+ 636:	00000097          	auipc	ra,0x0
+ 63a:	de0080e7          	jalr	-544(ra) # 416 <putc>
           s++;
- 634:	0985                	addi	s3,s3,1
+ 63e:	0985                	addi	s3,s3,1
         while(*s != 0){
- 636:	0009c583          	lbu	a1,0(s3)
- 63a:	f9e5                	bnez	a1,62a <vprintf+0x152>
+ 640:	0009c583          	lbu	a1,0(s3)
+ 644:	f9e5                	bnez	a1,634 <vprintf+0x152>
         s = va_arg(ap, char*);
- 63c:	8b4a                	mv	s6,s2
+ 646:	8b4a                	mv	s6,s2
       state = 0;
- 63e:	4981                	li	s3,0
- 640:	bde5                	j	538 <vprintf+0x60>
+ 648:	4981                	li	s3,0
+ 64a:	bde5                	j	542 <vprintf+0x60>
           s = "(null)";
- 642:	00000997          	auipc	s3,0x0
- 646:	29e98993          	addi	s3,s3,670 # 8e0 <malloc+0x144>
+ 64c:	00000997          	auipc	s3,0x0
+ 650:	29c98993          	addi	s3,s3,668 # 8e8 <malloc+0x142>
         while(*s != 0){
- 64a:	85ee                	mv	a1,s11
- 64c:	bff9                	j	62a <vprintf+0x152>
+ 654:	85ee                	mv	a1,s11
+ 656:	bff9                	j	634 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 64e:	008b0913          	addi	s2,s6,8
- 652:	000b4583          	lbu	a1,0(s6)
- 656:	8556                	mv	a0,s5
- 658:	00000097          	auipc	ra,0x0
- 65c:	db4080e7          	jalr	-588(ra) # 40c <putc>
- 660:	8b4a                	mv	s6,s2
+ 658:	008b0913          	addi	s2,s6,8
+ 65c:	000b4583          	lbu	a1,0(s6)
+ 660:	8556                	mv	a0,s5
+ 662:	00000097          	auipc	ra,0x0
+ 666:	db4080e7          	jalr	-588(ra) # 416 <putc>
+ 66a:	8b4a                	mv	s6,s2
       state = 0;
- 662:	4981                	li	s3,0
- 664:	bdd1                	j	538 <vprintf+0x60>
+ 66c:	4981                	li	s3,0
+ 66e:	bdd1                	j	542 <vprintf+0x60>
         putc(fd, c);
- 666:	85d2                	mv	a1,s4
- 668:	8556                	mv	a0,s5
- 66a:	00000097          	auipc	ra,0x0
- 66e:	da2080e7          	jalr	-606(ra) # 40c <putc>
+ 670:	85d2                	mv	a1,s4
+ 672:	8556                	mv	a0,s5
+ 674:	00000097          	auipc	ra,0x0
+ 678:	da2080e7          	jalr	-606(ra) # 416 <putc>
       state = 0;
- 672:	4981                	li	s3,0
- 674:	b5d1                	j	538 <vprintf+0x60>
+ 67c:	4981                	li	s3,0
+ 67e:	b5d1                	j	542 <vprintf+0x60>
         putc(fd, '%');
- 676:	85d2                	mv	a1,s4
- 678:	8556                	mv	a0,s5
- 67a:	00000097          	auipc	ra,0x0
- 67e:	d92080e7          	jalr	-622(ra) # 40c <putc>
+ 680:	85d2                	mv	a1,s4
+ 682:	8556                	mv	a0,s5
+ 684:	00000097          	auipc	ra,0x0
+ 688:	d92080e7          	jalr	-622(ra) # 416 <putc>
         putc(fd, c);
- 682:	85ca                	mv	a1,s2
- 684:	8556                	mv	a0,s5
- 686:	00000097          	auipc	ra,0x0
- 68a:	d86080e7          	jalr	-634(ra) # 40c <putc>
+ 68c:	85ca                	mv	a1,s2
+ 68e:	8556                	mv	a0,s5
+ 690:	00000097          	auipc	ra,0x0
+ 694:	d86080e7          	jalr	-634(ra) # 416 <putc>
       state = 0;
- 68e:	4981                	li	s3,0
- 690:	b565                	j	538 <vprintf+0x60>
+ 698:	4981                	li	s3,0
+ 69a:	b565                	j	542 <vprintf+0x60>
         s = va_arg(ap, char*);
- 692:	8b4a                	mv	s6,s2
+ 69c:	8b4a                	mv	s6,s2
       state = 0;
- 694:	4981                	li	s3,0
- 696:	b54d                	j	538 <vprintf+0x60>
+ 69e:	4981                	li	s3,0
+ 6a0:	b54d                	j	542 <vprintf+0x60>
     }
   }
 }
- 698:	70e6                	ld	ra,120(sp)
- 69a:	7446                	ld	s0,112(sp)
- 69c:	74a6                	ld	s1,104(sp)
- 69e:	7906                	ld	s2,96(sp)
- 6a0:	69e6                	ld	s3,88(sp)
- 6a2:	6a46                	ld	s4,80(sp)
- 6a4:	6aa6                	ld	s5,72(sp)
- 6a6:	6b06                	ld	s6,64(sp)
- 6a8:	7be2                	ld	s7,56(sp)
- 6aa:	7c42                	ld	s8,48(sp)
- 6ac:	7ca2                	ld	s9,40(sp)
- 6ae:	7d02                	ld	s10,32(sp)
- 6b0:	6de2                	ld	s11,24(sp)
- 6b2:	6109                	addi	sp,sp,128
- 6b4:	8082                	ret
-
-00000000000006b6 <fprintf>:
+ 6a2:	70e6                	ld	ra,120(sp)
+ 6a4:	7446                	ld	s0,112(sp)
+ 6a6:	74a6                	ld	s1,104(sp)
+ 6a8:	7906                	ld	s2,96(sp)
+ 6aa:	69e6                	ld	s3,88(sp)
+ 6ac:	6a46                	ld	s4,80(sp)
+ 6ae:	6aa6                	ld	s5,72(sp)
+ 6b0:	6b06                	ld	s6,64(sp)
+ 6b2:	7be2                	ld	s7,56(sp)
+ 6b4:	7c42                	ld	s8,48(sp)
+ 6b6:	7ca2                	ld	s9,40(sp)
+ 6b8:	7d02                	ld	s10,32(sp)
+ 6ba:	6de2                	ld	s11,24(sp)
+ 6bc:	6109                	addi	sp,sp,128
+ 6be:	8082                	ret
+
+00000000000006c0 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 6b6:	715d                	addi	sp,sp,-80
- 6b8:	ec06                	sd	ra,24(sp)
- 6ba:	e822                	sd	s0,16(sp)
- 6bc:	1000                	addi	s0,sp,32
- 6be:	e010                	sd	a2,0(s0)
- 6c0:	e414                	sd	a3,8(s0)
- 6c2:	e818                	sd	a4,16(s0)
- 6c4:	ec1c                	sd	a5,24(s0)
- 6c6:	03043023          	sd	a6,32(s0)
- 6ca:	03143423          	sd	a7,40(s0)
+ 6c0:	715d                	addi	sp,sp,-80
+ 6c2:	ec06                	sd	ra,24(sp)
+ 6c4:	e822                	sd	s0,16(sp)
+ 6c6:	1000                	addi	s0,sp,32
+ 6c8:	e010                	sd	a2,0(s0)
+ 6ca:	e414                	sd	a3,8(s0)
+ 6cc:	e818                	sd	a4,16(s0)
+ 6ce:	ec1c                	sd	a5,24(s0)
+ 6d0:	03043023          	sd	a6,32(s0)
+ 6d4:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6ce:	8622                	mv	a2,s0
- 6d0:	fe843423          	sd	s0,-24(s0)
+ 6d8:	8622                	mv	a2,s0
+ 6da:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 6d4:	00000097          	auipc	ra,0x0
- 6d8:	e04080e7          	jalr	-508(ra) # 4d8 <vprintf>
+ 6de:	00000097          	auipc	ra,0x0
+ 6e2:	e04080e7          	jalr	-508(ra) # 4e2 <vprintf>
 }
- 6dc:	60e2                	ld	ra,24(sp)
- 6de:	6442                	ld	s0,16(sp)
- 6e0:	6161                	addi	sp,sp,80
- 6e2:	8082                	ret
+ 6e6:	60e2                	ld	ra,24(sp)
+ 6e8:	6442                	ld	s0,16(sp)
+ 6ea:	6161                	addi	sp,sp,80
+ 6ec:	8082                	ret
 
-00000000000006e4 <printf>:
+00000000000006ee <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 6e4:	711d                	addi	sp,sp,-96
- 6e6:	ec06                	sd	ra,24(sp)
- 6e8:	e822                	sd	s0,16(sp)
- 6ea:	1000                	addi	s0,sp,32
- 6ec:	e40c                	sd	a1,8(s0)
- 6ee:	e810                	sd	a2,16(s0)
- 6f0:	ec14                	sd	a3,24(s0)
- 6f2:	f018                	sd	a4,32(s0)
- 6f4:	f41c                	sd	a5,40(s0)
- 6f6:	03043823          	sd	a6,48(s0)
- 6fa:	03143c23          	sd	a7,56(s0)
+ 6ee:	711d                	addi	sp,sp,-96
+ 6f0:	ec06                	sd	ra,24(sp)
+ 6f2:	e822                	sd	s0,16(sp)
+ 6f4:	1000                	addi	s0,sp,32
+ 6f6:	e40c                	sd	a1,8(s0)
+ 6f8:	e810                	sd	a2,16(s0)
+ 6fa:	ec14                	sd	a3,24(s0)
+ 6fc:	f018                	sd	a4,32(s0)
+ 6fe:	f41c                	sd	a5,40(s0)
+ 700:	03043823          	sd	a6,48(s0)
+ 704:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6fe:	00840613          	addi	a2,s0,8
- 702:	fec43423          	sd	a2,-24(s0)
+ 708:	00840613          	addi	a2,s0,8
+ 70c:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 706:	85aa                	mv	a1,a0
- 708:	4505                	li	a0,1
- 70a:	00000097          	auipc	ra,0x0
- 70e:	dce080e7          	jalr	-562(ra) # 4d8 <vprintf>
+ 710:	85aa                	mv	a1,a0
+ 712:	4505                	li	a0,1
+ 714:	00000097          	auipc	ra,0x0
+ 718:	dce080e7          	jalr	-562(ra) # 4e2 <vprintf>
 }
- 712:	60e2                	ld	ra,24(sp)
- 714:	6442                	ld	s0,16(sp)
- 716:	6125                	addi	sp,sp,96
- 718:	8082                	ret
+ 71c:	60e2                	ld	ra,24(sp)
+ 71e:	6442                	ld	s0,16(sp)
+ 720:	6125                	addi	sp,sp,96
+ 722:	8082                	ret
 
-000000000000071a <free>:
+0000000000000724 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 71a:	1141                	addi	sp,sp,-16
- 71c:	e422                	sd	s0,8(sp)
- 71e:	0800                	addi	s0,sp,16
+ 724:	1141                	addi	sp,sp,-16
+ 726:	e422                	sd	s0,8(sp)
+ 728:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 720:	ff050693          	addi	a3,a0,-16
+ 72a:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 724:	00000797          	auipc	a5,0x0
- 728:	2347b783          	ld	a5,564(a5) # 958 <freep>
- 72c:	a02d                	j	756 <free+0x3c>
+ 72e:	00000797          	auipc	a5,0x0
+ 732:	2327b783          	ld	a5,562(a5) # 960 <freep>
+ 736:	a02d                	j	760 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 72e:	4618                	lw	a4,8(a2)
- 730:	9f2d                	addw	a4,a4,a1
- 732:	fee52c23          	sw	a4,-8(a0)
+ 738:	4618                	lw	a4,8(a2)
+ 73a:	9f2d                	addw	a4,a4,a1
+ 73c:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 736:	6398                	ld	a4,0(a5)
- 738:	6310                	ld	a2,0(a4)
- 73a:	a83d                	j	778 <free+0x5e>
+ 740:	6398                	ld	a4,0(a5)
+ 742:	6310                	ld	a2,0(a4)
+ 744:	a83d                	j	782 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 73c:	ff852703          	lw	a4,-8(a0)
- 740:	9f31                	addw	a4,a4,a2
- 742:	c798                	sw	a4,8(a5)
+ 746:	ff852703          	lw	a4,-8(a0)
+ 74a:	9f31                	addw	a4,a4,a2
+ 74c:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 744:	ff053683          	ld	a3,-16(a0)
- 748:	a091                	j	78c <free+0x72>
+ 74e:	ff053683          	ld	a3,-16(a0)
+ 752:	a091                	j	796 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 74a:	6398                	ld	a4,0(a5)
- 74c:	00e7e463          	bltu	a5,a4,754 <free+0x3a>
- 750:	00e6ea63          	bltu	a3,a4,764 <free+0x4a>
+ 754:	6398                	ld	a4,0(a5)
+ 756:	00e7e463          	bltu	a5,a4,75e <free+0x3a>
+ 75a:	00e6ea63          	bltu	a3,a4,76e <free+0x4a>
 {
- 754:	87ba                	mv	a5,a4
+ 75e:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 756:	fed7fae3          	bgeu	a5,a3,74a <free+0x30>
- 75a:	6398                	ld	a4,0(a5)
- 75c:	00e6e463          	bltu	a3,a4,764 <free+0x4a>
+ 760:	fed7fae3          	bgeu	a5,a3,754 <free+0x30>
+ 764:	6398                	ld	a4,0(a5)
+ 766:	00e6e463          	bltu	a3,a4,76e <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 760:	fee7eae3          	bltu	a5,a4,754 <free+0x3a>
+ 76a:	fee7eae3          	bltu	a5,a4,75e <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 764:	ff852583          	lw	a1,-8(a0)
- 768:	6390                	ld	a2,0(a5)
- 76a:	02059813          	slli	a6,a1,0x20
- 76e:	01c85713          	srli	a4,a6,0x1c
- 772:	9736                	add	a4,a4,a3
- 774:	fae60de3          	beq	a2,a4,72e <free+0x14>
+ 76e:	ff852583          	lw	a1,-8(a0)
+ 772:	6390                	ld	a2,0(a5)
+ 774:	02059813          	slli	a6,a1,0x20
+ 778:	01c85713          	srli	a4,a6,0x1c
+ 77c:	9736                	add	a4,a4,a3
+ 77e:	fae60de3          	beq	a2,a4,738 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 778:	fec53823          	sd	a2,-16(a0)
+ 782:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 77c:	4790                	lw	a2,8(a5)
- 77e:	02061593          	slli	a1,a2,0x20
- 782:	01c5d713          	srli	a4,a1,0x1c
- 786:	973e                	add	a4,a4,a5
- 788:	fae68ae3          	beq	a3,a4,73c <free+0x22>
+ 786:	4790                	lw	a2,8(a5)
+ 788:	02061593          	slli	a1,a2,0x20
+ 78c:	01c5d713          	srli	a4,a1,0x1c
+ 790:	973e                	add	a4,a4,a5
+ 792:	fae68ae3          	beq	a3,a4,746 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 78c:	e394                	sd	a3,0(a5)
+ 796:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 78e:	00000717          	auipc	a4,0x0
- 792:	1cf73523          	sd	a5,458(a4) # 958 <freep>
+ 798:	00000717          	auipc	a4,0x0
+ 79c:	1cf73423          	sd	a5,456(a4) # 960 <freep>
 }
- 796:	6422                	ld	s0,8(sp)
- 798:	0141                	addi	sp,sp,16
- 79a:	8082                	ret
+ 7a0:	6422                	ld	s0,8(sp)
+ 7a2:	0141                	addi	sp,sp,16
+ 7a4:	8082                	ret
 
-000000000000079c <malloc>:
+00000000000007a6 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 79c:	7139                	addi	sp,sp,-64
- 79e:	fc06                	sd	ra,56(sp)
- 7a0:	f822                	sd	s0,48(sp)
- 7a2:	f426                	sd	s1,40(sp)
- 7a4:	f04a                	sd	s2,32(sp)
- 7a6:	ec4e                	sd	s3,24(sp)
- 7a8:	e852                	sd	s4,16(sp)
- 7aa:	e456                	sd	s5,8(sp)
- 7ac:	e05a                	sd	s6,0(sp)
- 7ae:	0080                	addi	s0,sp,64
+ 7a6:	7139                	addi	sp,sp,-64
+ 7a8:	fc06                	sd	ra,56(sp)
+ 7aa:	f822                	sd	s0,48(sp)
+ 7ac:	f426                	sd	s1,40(sp)
+ 7ae:	f04a                	sd	s2,32(sp)
+ 7b0:	ec4e                	sd	s3,24(sp)
+ 7b2:	e852                	sd	s4,16(sp)
+ 7b4:	e456                	sd	s5,8(sp)
+ 7b6:	e05a                	sd	s6,0(sp)
+ 7b8:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 7b0:	02051493          	slli	s1,a0,0x20
- 7b4:	9081                	srli	s1,s1,0x20
- 7b6:	04bd                	addi	s1,s1,15
- 7b8:	8091                	srli	s1,s1,0x4
- 7ba:	00148a1b          	addiw	s4,s1,1
- 7be:	0485                	addi	s1,s1,1
+ 7ba:	02051493          	slli	s1,a0,0x20
+ 7be:	9081                	srli	s1,s1,0x20
+ 7c0:	04bd                	addi	s1,s1,15
+ 7c2:	8091                	srli	s1,s1,0x4
+ 7c4:	00148a1b          	addiw	s4,s1,1
+ 7c8:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 7c0:	00000517          	auipc	a0,0x0
- 7c4:	19853503          	ld	a0,408(a0) # 958 <freep>
- 7c8:	c515                	beqz	a0,7f4 <malloc+0x58>
+ 7ca:	00000517          	auipc	a0,0x0
+ 7ce:	19653503          	ld	a0,406(a0) # 960 <freep>
+ 7d2:	c515                	beqz	a0,7fe <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 7ca:	611c                	ld	a5,0(a0)
+ 7d4:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 7cc:	4798                	lw	a4,8(a5)
- 7ce:	04977163          	bgeu	a4,s1,810 <malloc+0x74>
- 7d2:	89d2                	mv	s3,s4
- 7d4:	000a071b          	sext.w	a4,s4
- 7d8:	6685                	lui	a3,0x1
- 7da:	00d77363          	bgeu	a4,a3,7e0 <malloc+0x44>
- 7de:	6985                	lui	s3,0x1
- 7e0:	00098b1b          	sext.w	s6,s3
+ 7d6:	4798                	lw	a4,8(a5)
+ 7d8:	04977163          	bgeu	a4,s1,81a <malloc+0x74>
+ 7dc:	89d2                	mv	s3,s4
+ 7de:	000a071b          	sext.w	a4,s4
+ 7e2:	6685                	lui	a3,0x1
+ 7e4:	00d77363          	bgeu	a4,a3,7ea <malloc+0x44>
+ 7e8:	6985                	lui	s3,0x1
+ 7ea:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 7e4:	0049999b          	slliw	s3,s3,0x4
+ 7ee:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 7e8:	00000917          	auipc	s2,0x0
- 7ec:	17090913          	addi	s2,s2,368 # 958 <freep>
+ 7f2:	00000917          	auipc	s2,0x0
+ 7f6:	16e90913          	addi	s2,s2,366 # 960 <freep>
   if(p == (char*)-1)
- 7f0:	5afd                	li	s5,-1
- 7f2:	a8a5                	j	86a <malloc+0xce>
+ 7fa:	5afd                	li	s5,-1
+ 7fc:	a8a5                	j	874 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 7f4:	00000797          	auipc	a5,0x0
- 7f8:	16478793          	addi	a5,a5,356 # 958 <freep>
- 7fc:	00000717          	auipc	a4,0x0
- 800:	16470713          	addi	a4,a4,356 # 960 <base>
- 804:	e398                	sd	a4,0(a5)
- 806:	e798                	sd	a4,8(a5)
+ 7fe:	00000797          	auipc	a5,0x0
+ 802:	16278793          	addi	a5,a5,354 # 960 <freep>
+ 806:	00000717          	auipc	a4,0x0
+ 80a:	16270713          	addi	a4,a4,354 # 968 <base>
+ 80e:	e398                	sd	a4,0(a5)
+ 810:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 808:	0007a823          	sw	zero,16(a5)
+ 812:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 80c:	87ba                	mv	a5,a4
- 80e:	b7d1                	j	7d2 <malloc+0x36>
+ 816:	87ba                	mv	a5,a4
+ 818:	b7d1                	j	7dc <malloc+0x36>
       if(p->s.size == nunits)
- 810:	02e48c63          	beq	s1,a4,848 <malloc+0xac>
+ 81a:	02e48c63          	beq	s1,a4,852 <malloc+0xac>
         p->s.size -= nunits;
- 814:	4147073b          	subw	a4,a4,s4
- 818:	c798                	sw	a4,8(a5)
+ 81e:	4147073b          	subw	a4,a4,s4
+ 822:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 81a:	02071693          	slli	a3,a4,0x20
- 81e:	01c6d713          	srli	a4,a3,0x1c
- 822:	97ba                	add	a5,a5,a4
+ 824:	02071693          	slli	a3,a4,0x20
+ 828:	01c6d713          	srli	a4,a3,0x1c
+ 82c:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 824:	0147a423          	sw	s4,8(a5)
+ 82e:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 828:	00000717          	auipc	a4,0x0
- 82c:	12a73823          	sd	a0,304(a4) # 958 <freep>
+ 832:	00000717          	auipc	a4,0x0
+ 836:	12a73723          	sd	a0,302(a4) # 960 <freep>
       return (void*)(p + 1);
- 830:	01078513          	addi	a0,a5,16
+ 83a:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 834:	70e2                	ld	ra,56(sp)
- 836:	7442                	ld	s0,48(sp)
- 838:	74a2                	ld	s1,40(sp)
- 83a:	7902                	ld	s2,32(sp)
- 83c:	69e2                	ld	s3,24(sp)
- 83e:	6a42                	ld	s4,16(sp)
- 840:	6aa2                	ld	s5,8(sp)
- 842:	6b02                	ld	s6,0(sp)
- 844:	6121                	addi	sp,sp,64
- 846:	8082                	ret
+ 83e:	70e2                	ld	ra,56(sp)
+ 840:	7442                	ld	s0,48(sp)
+ 842:	74a2                	ld	s1,40(sp)
+ 844:	7902                	ld	s2,32(sp)
+ 846:	69e2                	ld	s3,24(sp)
+ 848:	6a42                	ld	s4,16(sp)
+ 84a:	6aa2                	ld	s5,8(sp)
+ 84c:	6b02                	ld	s6,0(sp)
+ 84e:	6121                	addi	sp,sp,64
+ 850:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 848:	6398                	ld	a4,0(a5)
- 84a:	e118                	sd	a4,0(a0)
- 84c:	bff1                	j	828 <malloc+0x8c>
+ 852:	6398                	ld	a4,0(a5)
+ 854:	e118                	sd	a4,0(a0)
+ 856:	bff1                	j	832 <malloc+0x8c>
   hp->s.size = nu;
- 84e:	01652423          	sw	s6,8(a0)
+ 858:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 852:	0541                	addi	a0,a0,16
- 854:	00000097          	auipc	ra,0x0
- 858:	ec6080e7          	jalr	-314(ra) # 71a <free>
+ 85c:	0541                	addi	a0,a0,16
+ 85e:	00000097          	auipc	ra,0x0
+ 862:	ec6080e7          	jalr	-314(ra) # 724 <free>
   return freep;
- 85c:	00093503          	ld	a0,0(s2)
+ 866:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 860:	d971                	beqz	a0,834 <malloc+0x98>
+ 86a:	d971                	beqz	a0,83e <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 862:	611c                	ld	a5,0(a0)
+ 86c:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 864:	4798                	lw	a4,8(a5)
- 866:	fa9775e3          	bgeu	a4,s1,810 <malloc+0x74>
+ 86e:	4798                	lw	a4,8(a5)
+ 870:	fa9775e3          	bgeu	a4,s1,81a <malloc+0x74>
     if(p == freep)
- 86a:	00093703          	ld	a4,0(s2)
- 86e:	853e                	mv	a0,a5
- 870:	fef719e3          	bne	a4,a5,862 <malloc+0xc6>
+ 874:	00093703          	ld	a4,0(s2)
+ 878:	853e                	mv	a0,a5
+ 87a:	fef719e3          	bne	a4,a5,86c <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 874:	854e                	mv	a0,s3
- 876:	00000097          	auipc	ra,0x0
- 87a:	b2a080e7          	jalr	-1238(ra) # 3a0 <sbrk>
+ 87e:	854e                	mv	a0,s3
+ 880:	00000097          	auipc	ra,0x0
+ 884:	b20080e7          	jalr	-1248(ra) # 3a0 <sbrk>
   if(p == (char*)-1)
- 87e:	fd5518e3          	bne	a0,s5,84e <malloc+0xb2>
+ 888:	fd5518e3          	bne	a0,s5,858 <malloc+0xb2>
         return 0;
- 882:	4501                	li	a0,0
- 884:	bf45                	j	834 <malloc+0x98>
+ 88c:	4501                	li	a0,0
+ 88e:	bf45                	j	83e <malloc+0x98>
diff --git a/xv6-user/sleep.sym b/xv6-user/sleep.sym
index 4ddb398..2ca22b0 100644
--- a/xv6-user/sleep.sym
+++ b/xv6-user/sleep.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-0000000000000888 .rodata
-0000000000000958 .bss
+0000000000000890 .rodata
+0000000000000960 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-000000000000040c putc
-000000000000042e printint
-0000000000000940 digits
+0000000000000416 putc
+0000000000000438 printint
+0000000000000948 digits
 0000000000000000 umalloc.c
-0000000000000958 freep
-0000000000000960 base
+0000000000000960 freep
+0000000000000968 base
 0000000000000064 strcpy
-00000000000006e4 printf
-0000000000001151 __global_pointer$
+00000000000006ee printf
+0000000000001159 __global_pointer$
 00000000000003c0 dev
 000000000000026a memmove
+000000000000040c times
 00000000000003e0 trace
 000000000000014a gets
-0000000000000951 __SDATA_BEGIN__
+0000000000000959 __SDATA_BEGIN__
 0000000000000396 getpid
 00000000000002fc memcpy
-000000000000079c malloc
+00000000000007a6 malloc
 00000000000003d8 remove
 00000000000003a8 sleep
 00000000000003e8 sysinfo
@@ -42,31 +43,31 @@
 00000000000003f0 rename
 0000000000000342 write
 0000000000000370 fstat
-00000000000006b6 fprintf
+00000000000006c0 fprintf
 0000000000000356 kill
 0000000000000080 strcat
-00000000000004d8 vprintf
+00000000000004e2 vprintf
 0000000000000384 chdir
 000000000000035e exec
 0000000000000326 wait
 0000000000000338 read
 00000000000002c2 memcmp
 0000000000000314 fork
-0000000000000970 __BSS_END__
+0000000000000978 __BSS_END__
 00000000000003a0 sbrk
 00000000000003b8 test_proc
 00000000000003b0 uptime
-0000000000000951 __bss_start
+0000000000000959 __bss_start
 0000000000000104 memset
 0000000000000000 main
 00000000000000ae strcmp
 00000000000003f8 shutdown
 000000000000038e dup
 00000000000003d0 getcwd
-0000000000000951 __DATA_BEGIN__
+0000000000000959 __DATA_BEGIN__
 00000000000001c4 stat
-0000000000000951 _edata
-0000000000000970 _end
+0000000000000959 _edata
+0000000000000978 _end
 000000000000031c exit
 000000000000020a atoi
 00000000000000da strlen
@@ -74,4 +75,4 @@
 0000000000000126 strchr
 000000000000037a mkdir
 000000000000034c close
-000000000000071a free
+0000000000000724 free
diff --git a/xv6-user/strace.asm b/xv6-user/strace.asm
index ce82d8d..1067d09 100644
--- a/xv6-user/strace.asm
+++ b/xv6-user/strace.asm
@@ -27,10 +27,10 @@ main(int argc, char *argv[])
     fprintf(2, "usage: %s MASK COMMAND\n", argv[0]);
   14:	6190                	ld	a2,0(a1)
   16:	00001597          	auipc	a1,0x1
-  1a:	8d258593          	addi	a1,a1,-1838 # 8e8 <malloc+0xee>
+  1a:	8da58593          	addi	a1,a1,-1830 # 8f0 <malloc+0xec>
   1e:	4509                	li	a0,2
   20:	00000097          	auipc	ra,0x0
-  24:	6f4080e7          	jalr	1780(ra) # 714 <fprintf>
+  24:	6fe080e7          	jalr	1790(ra) # 71e <fprintf>
     exit(1);
   28:	4505                	li	a0,1
   2a:	00000097          	auipc	ra,0x0
@@ -74,9 +74,9 @@ main(int argc, char *argv[])
   printf("strace: exec %s fail\n", nargv[0]);
   84:	ee043583          	ld	a1,-288(s0)
   88:	00001517          	auipc	a0,0x1
-  8c:	89050513          	addi	a0,a0,-1904 # 918 <malloc+0x11e>
+  8c:	89850513          	addi	a0,a0,-1896 # 920 <malloc+0x11c>
   90:	00000097          	auipc	ra,0x0
-  94:	6b2080e7          	jalr	1714(ra) # 742 <printf>
+  94:	6bc080e7          	jalr	1724(ra) # 74c <printf>
   exit(0);
   98:	4501                	li	a0,0
   9a:	00000097          	auipc	ra,0x0
@@ -84,10 +84,10 @@ main(int argc, char *argv[])
     fprintf(2, "%s: strace failed\n", argv[0]);
   a2:	00093603          	ld	a2,0(s2)
   a6:	00001597          	auipc	a1,0x1
-  aa:	85a58593          	addi	a1,a1,-1958 # 900 <malloc+0x106>
+  aa:	86258593          	addi	a1,a1,-1950 # 908 <malloc+0x104>
   ae:	4509                	li	a0,2
   b0:	00000097          	auipc	ra,0x0
-  b4:	664080e7          	jalr	1636(ra) # 714 <fprintf>
+  b4:	66e080e7          	jalr	1646(ra) # 71e <fprintf>
     exit(1);
   b8:	4505                	li	a0,1
   ba:	00000097          	auipc	ra,0x0
@@ -849,637 +849,647 @@ uname:
  ret
  468:	8082                	ret
 
-000000000000046a <putc>:
+000000000000046a <times>:
+.global times
+times:
+ li a7, SYS_times
+ 46a:	09900893          	li	a7,153
+ ecall
+ 46e:	00000073          	ecall
+ ret
+ 472:	8082                	ret
+
+0000000000000474 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 46a:	1101                	addi	sp,sp,-32
- 46c:	ec06                	sd	ra,24(sp)
- 46e:	e822                	sd	s0,16(sp)
- 470:	1000                	addi	s0,sp,32
- 472:	feb407a3          	sb	a1,-17(s0)
+ 474:	1101                	addi	sp,sp,-32
+ 476:	ec06                	sd	ra,24(sp)
+ 478:	e822                	sd	s0,16(sp)
+ 47a:	1000                	addi	s0,sp,32
+ 47c:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 476:	4605                	li	a2,1
- 478:	fef40593          	addi	a1,s0,-17
- 47c:	00000097          	auipc	ra,0x0
- 480:	f24080e7          	jalr	-220(ra) # 3a0 <write>
+ 480:	4605                	li	a2,1
+ 482:	fef40593          	addi	a1,s0,-17
+ 486:	00000097          	auipc	ra,0x0
+ 48a:	f1a080e7          	jalr	-230(ra) # 3a0 <write>
 }
- 484:	60e2                	ld	ra,24(sp)
- 486:	6442                	ld	s0,16(sp)
- 488:	6105                	addi	sp,sp,32
- 48a:	8082                	ret
+ 48e:	60e2                	ld	ra,24(sp)
+ 490:	6442                	ld	s0,16(sp)
+ 492:	6105                	addi	sp,sp,32
+ 494:	8082                	ret
 
-000000000000048c <printint>:
+0000000000000496 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 48c:	7139                	addi	sp,sp,-64
- 48e:	fc06                	sd	ra,56(sp)
- 490:	f822                	sd	s0,48(sp)
- 492:	f426                	sd	s1,40(sp)
- 494:	f04a                	sd	s2,32(sp)
- 496:	ec4e                	sd	s3,24(sp)
- 498:	0080                	addi	s0,sp,64
- 49a:	84aa                	mv	s1,a0
+ 496:	7139                	addi	sp,sp,-64
+ 498:	fc06                	sd	ra,56(sp)
+ 49a:	f822                	sd	s0,48(sp)
+ 49c:	f426                	sd	s1,40(sp)
+ 49e:	f04a                	sd	s2,32(sp)
+ 4a0:	ec4e                	sd	s3,24(sp)
+ 4a2:	0080                	addi	s0,sp,64
+ 4a4:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 49c:	c299                	beqz	a3,4a2 <printint+0x16>
- 49e:	0805c863          	bltz	a1,52e <printint+0xa2>
+ 4a6:	c299                	beqz	a3,4ac <printint+0x16>
+ 4a8:	0805c863          	bltz	a1,538 <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 4a2:	2581                	sext.w	a1,a1
+ 4ac:	2581                	sext.w	a1,a1
   neg = 0;
- 4a4:	4881                	li	a7,0
+ 4ae:	4881                	li	a7,0
   }
 
   i = 0;
- 4a6:	fc040993          	addi	s3,s0,-64
+ 4b0:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 4aa:	86ce                	mv	a3,s3
+ 4b4:	86ce                	mv	a3,s3
   i = 0;
- 4ac:	4701                	li	a4,0
+ 4b6:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 4ae:	2601                	sext.w	a2,a2
- 4b0:	00000517          	auipc	a0,0x0
- 4b4:	4e050513          	addi	a0,a0,1248 # 990 <digits>
- 4b8:	883a                	mv	a6,a4
- 4ba:	2705                	addiw	a4,a4,1
- 4bc:	02c5f7bb          	remuw	a5,a1,a2
- 4c0:	1782                	slli	a5,a5,0x20
- 4c2:	9381                	srli	a5,a5,0x20
- 4c4:	97aa                	add	a5,a5,a0
- 4c6:	0007c783          	lbu	a5,0(a5)
- 4ca:	00f68023          	sb	a5,0(a3)
+ 4b8:	2601                	sext.w	a2,a2
+ 4ba:	00000517          	auipc	a0,0x0
+ 4be:	4de50513          	addi	a0,a0,1246 # 998 <digits>
+ 4c2:	883a                	mv	a6,a4
+ 4c4:	2705                	addiw	a4,a4,1
+ 4c6:	02c5f7bb          	remuw	a5,a1,a2
+ 4ca:	1782                	slli	a5,a5,0x20
+ 4cc:	9381                	srli	a5,a5,0x20
+ 4ce:	97aa                	add	a5,a5,a0
+ 4d0:	0007c783          	lbu	a5,0(a5)
+ 4d4:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 4ce:	0005879b          	sext.w	a5,a1
- 4d2:	02c5d5bb          	divuw	a1,a1,a2
- 4d6:	0685                	addi	a3,a3,1
- 4d8:	fec7f0e3          	bgeu	a5,a2,4b8 <printint+0x2c>
+ 4d8:	0005879b          	sext.w	a5,a1
+ 4dc:	02c5d5bb          	divuw	a1,a1,a2
+ 4e0:	0685                	addi	a3,a3,1
+ 4e2:	fec7f0e3          	bgeu	a5,a2,4c2 <printint+0x2c>
   if(neg)
- 4dc:	00088c63          	beqz	a7,4f4 <printint+0x68>
+ 4e6:	00088c63          	beqz	a7,4fe <printint+0x68>
     buf[i++] = '-';
- 4e0:	fd070793          	addi	a5,a4,-48
- 4e4:	00878733          	add	a4,a5,s0
- 4e8:	02d00793          	li	a5,45
- 4ec:	fef70823          	sb	a5,-16(a4)
- 4f0:	0028071b          	addiw	a4,a6,2
+ 4ea:	fd070793          	addi	a5,a4,-48
+ 4ee:	00878733          	add	a4,a5,s0
+ 4f2:	02d00793          	li	a5,45
+ 4f6:	fef70823          	sb	a5,-16(a4)
+ 4fa:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 4f4:	02e05663          	blez	a4,520 <printint+0x94>
- 4f8:	fc040913          	addi	s2,s0,-64
- 4fc:	993a                	add	s2,s2,a4
- 4fe:	19fd                	addi	s3,s3,-1
- 500:	99ba                	add	s3,s3,a4
- 502:	377d                	addiw	a4,a4,-1
- 504:	1702                	slli	a4,a4,0x20
- 506:	9301                	srli	a4,a4,0x20
- 508:	40e989b3          	sub	s3,s3,a4
+ 4fe:	02e05663          	blez	a4,52a <printint+0x94>
+ 502:	fc040913          	addi	s2,s0,-64
+ 506:	993a                	add	s2,s2,a4
+ 508:	19fd                	addi	s3,s3,-1
+ 50a:	99ba                	add	s3,s3,a4
+ 50c:	377d                	addiw	a4,a4,-1
+ 50e:	1702                	slli	a4,a4,0x20
+ 510:	9301                	srli	a4,a4,0x20
+ 512:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 50c:	fff94583          	lbu	a1,-1(s2)
- 510:	8526                	mv	a0,s1
- 512:	00000097          	auipc	ra,0x0
- 516:	f58080e7          	jalr	-168(ra) # 46a <putc>
+ 516:	fff94583          	lbu	a1,-1(s2)
+ 51a:	8526                	mv	a0,s1
+ 51c:	00000097          	auipc	ra,0x0
+ 520:	f58080e7          	jalr	-168(ra) # 474 <putc>
   while(--i >= 0)
- 51a:	197d                	addi	s2,s2,-1
- 51c:	ff3918e3          	bne	s2,s3,50c <printint+0x80>
+ 524:	197d                	addi	s2,s2,-1
+ 526:	ff3918e3          	bne	s2,s3,516 <printint+0x80>
 }
- 520:	70e2                	ld	ra,56(sp)
- 522:	7442                	ld	s0,48(sp)
- 524:	74a2                	ld	s1,40(sp)
- 526:	7902                	ld	s2,32(sp)
- 528:	69e2                	ld	s3,24(sp)
- 52a:	6121                	addi	sp,sp,64
- 52c:	8082                	ret
+ 52a:	70e2                	ld	ra,56(sp)
+ 52c:	7442                	ld	s0,48(sp)
+ 52e:	74a2                	ld	s1,40(sp)
+ 530:	7902                	ld	s2,32(sp)
+ 532:	69e2                	ld	s3,24(sp)
+ 534:	6121                	addi	sp,sp,64
+ 536:	8082                	ret
     x = -xx;
- 52e:	40b005bb          	negw	a1,a1
+ 538:	40b005bb          	negw	a1,a1
     neg = 1;
- 532:	4885                	li	a7,1
+ 53c:	4885                	li	a7,1
     x = -xx;
- 534:	bf8d                	j	4a6 <printint+0x1a>
+ 53e:	bf8d                	j	4b0 <printint+0x1a>
 
-0000000000000536 <vprintf>:
+0000000000000540 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 536:	7119                	addi	sp,sp,-128
- 538:	fc86                	sd	ra,120(sp)
- 53a:	f8a2                	sd	s0,112(sp)
- 53c:	f4a6                	sd	s1,104(sp)
- 53e:	f0ca                	sd	s2,96(sp)
- 540:	ecce                	sd	s3,88(sp)
- 542:	e8d2                	sd	s4,80(sp)
- 544:	e4d6                	sd	s5,72(sp)
- 546:	e0da                	sd	s6,64(sp)
- 548:	fc5e                	sd	s7,56(sp)
- 54a:	f862                	sd	s8,48(sp)
- 54c:	f466                	sd	s9,40(sp)
- 54e:	f06a                	sd	s10,32(sp)
- 550:	ec6e                	sd	s11,24(sp)
- 552:	0100                	addi	s0,sp,128
+ 540:	7119                	addi	sp,sp,-128
+ 542:	fc86                	sd	ra,120(sp)
+ 544:	f8a2                	sd	s0,112(sp)
+ 546:	f4a6                	sd	s1,104(sp)
+ 548:	f0ca                	sd	s2,96(sp)
+ 54a:	ecce                	sd	s3,88(sp)
+ 54c:	e8d2                	sd	s4,80(sp)
+ 54e:	e4d6                	sd	s5,72(sp)
+ 550:	e0da                	sd	s6,64(sp)
+ 552:	fc5e                	sd	s7,56(sp)
+ 554:	f862                	sd	s8,48(sp)
+ 556:	f466                	sd	s9,40(sp)
+ 558:	f06a                	sd	s10,32(sp)
+ 55a:	ec6e                	sd	s11,24(sp)
+ 55c:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 554:	0005c903          	lbu	s2,0(a1)
- 558:	18090f63          	beqz	s2,6f6 <vprintf+0x1c0>
- 55c:	8aaa                	mv	s5,a0
- 55e:	8b32                	mv	s6,a2
- 560:	00158493          	addi	s1,a1,1
+ 55e:	0005c903          	lbu	s2,0(a1)
+ 562:	18090f63          	beqz	s2,700 <vprintf+0x1c0>
+ 566:	8aaa                	mv	s5,a0
+ 568:	8b32                	mv	s6,a2
+ 56a:	00158493          	addi	s1,a1,1
   state = 0;
- 564:	4981                	li	s3,0
+ 56e:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 566:	02500a13          	li	s4,37
- 56a:	4c55                	li	s8,21
- 56c:	00000c97          	auipc	s9,0x0
- 570:	3ccc8c93          	addi	s9,s9,972 # 938 <malloc+0x13e>
+ 570:	02500a13          	li	s4,37
+ 574:	4c55                	li	s8,21
+ 576:	00000c97          	auipc	s9,0x0
+ 57a:	3cac8c93          	addi	s9,s9,970 # 940 <malloc+0x13c>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 574:	02800d93          	li	s11,40
+ 57e:	02800d93          	li	s11,40
   putc(fd, 'x');
- 578:	4d41                	li	s10,16
+ 582:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 57a:	00000b97          	auipc	s7,0x0
- 57e:	416b8b93          	addi	s7,s7,1046 # 990 <digits>
- 582:	a839                	j	5a0 <vprintf+0x6a>
+ 584:	00000b97          	auipc	s7,0x0
+ 588:	414b8b93          	addi	s7,s7,1044 # 998 <digits>
+ 58c:	a839                	j	5aa <vprintf+0x6a>
         putc(fd, c);
- 584:	85ca                	mv	a1,s2
- 586:	8556                	mv	a0,s5
- 588:	00000097          	auipc	ra,0x0
- 58c:	ee2080e7          	jalr	-286(ra) # 46a <putc>
- 590:	a019                	j	596 <vprintf+0x60>
+ 58e:	85ca                	mv	a1,s2
+ 590:	8556                	mv	a0,s5
+ 592:	00000097          	auipc	ra,0x0
+ 596:	ee2080e7          	jalr	-286(ra) # 474 <putc>
+ 59a:	a019                	j	5a0 <vprintf+0x60>
     } else if(state == '%'){
- 592:	01498d63          	beq	s3,s4,5ac <vprintf+0x76>
+ 59c:	01498d63          	beq	s3,s4,5b6 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 596:	0485                	addi	s1,s1,1
- 598:	fff4c903          	lbu	s2,-1(s1)
- 59c:	14090d63          	beqz	s2,6f6 <vprintf+0x1c0>
+ 5a0:	0485                	addi	s1,s1,1
+ 5a2:	fff4c903          	lbu	s2,-1(s1)
+ 5a6:	14090d63          	beqz	s2,700 <vprintf+0x1c0>
     if(state == 0){
- 5a0:	fe0999e3          	bnez	s3,592 <vprintf+0x5c>
+ 5aa:	fe0999e3          	bnez	s3,59c <vprintf+0x5c>
       if(c == '%'){
- 5a4:	ff4910e3          	bne	s2,s4,584 <vprintf+0x4e>
+ 5ae:	ff4910e3          	bne	s2,s4,58e <vprintf+0x4e>
         state = '%';
- 5a8:	89d2                	mv	s3,s4
- 5aa:	b7f5                	j	596 <vprintf+0x60>
+ 5b2:	89d2                	mv	s3,s4
+ 5b4:	b7f5                	j	5a0 <vprintf+0x60>
       if(c == 'd'){
- 5ac:	11490c63          	beq	s2,s4,6c4 <vprintf+0x18e>
- 5b0:	f9d9079b          	addiw	a5,s2,-99
- 5b4:	0ff7f793          	zext.b	a5,a5
- 5b8:	10fc6e63          	bltu	s8,a5,6d4 <vprintf+0x19e>
- 5bc:	f9d9079b          	addiw	a5,s2,-99
- 5c0:	0ff7f713          	zext.b	a4,a5
- 5c4:	10ec6863          	bltu	s8,a4,6d4 <vprintf+0x19e>
- 5c8:	00271793          	slli	a5,a4,0x2
- 5cc:	97e6                	add	a5,a5,s9
- 5ce:	439c                	lw	a5,0(a5)
- 5d0:	97e6                	add	a5,a5,s9
- 5d2:	8782                	jr	a5
+ 5b6:	11490c63          	beq	s2,s4,6ce <vprintf+0x18e>
+ 5ba:	f9d9079b          	addiw	a5,s2,-99
+ 5be:	0ff7f793          	zext.b	a5,a5
+ 5c2:	10fc6e63          	bltu	s8,a5,6de <vprintf+0x19e>
+ 5c6:	f9d9079b          	addiw	a5,s2,-99
+ 5ca:	0ff7f713          	zext.b	a4,a5
+ 5ce:	10ec6863          	bltu	s8,a4,6de <vprintf+0x19e>
+ 5d2:	00271793          	slli	a5,a4,0x2
+ 5d6:	97e6                	add	a5,a5,s9
+ 5d8:	439c                	lw	a5,0(a5)
+ 5da:	97e6                	add	a5,a5,s9
+ 5dc:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 5d4:	008b0913          	addi	s2,s6,8
- 5d8:	4685                	li	a3,1
- 5da:	4629                	li	a2,10
- 5dc:	000b2583          	lw	a1,0(s6)
- 5e0:	8556                	mv	a0,s5
- 5e2:	00000097          	auipc	ra,0x0
- 5e6:	eaa080e7          	jalr	-342(ra) # 48c <printint>
- 5ea:	8b4a                	mv	s6,s2
+ 5de:	008b0913          	addi	s2,s6,8
+ 5e2:	4685                	li	a3,1
+ 5e4:	4629                	li	a2,10
+ 5e6:	000b2583          	lw	a1,0(s6)
+ 5ea:	8556                	mv	a0,s5
+ 5ec:	00000097          	auipc	ra,0x0
+ 5f0:	eaa080e7          	jalr	-342(ra) # 496 <printint>
+ 5f4:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 5ec:	4981                	li	s3,0
- 5ee:	b765                	j	596 <vprintf+0x60>
+ 5f6:	4981                	li	s3,0
+ 5f8:	b765                	j	5a0 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 5f0:	008b0913          	addi	s2,s6,8
- 5f4:	4681                	li	a3,0
- 5f6:	4629                	li	a2,10
- 5f8:	000b2583          	lw	a1,0(s6)
- 5fc:	8556                	mv	a0,s5
- 5fe:	00000097          	auipc	ra,0x0
- 602:	e8e080e7          	jalr	-370(ra) # 48c <printint>
- 606:	8b4a                	mv	s6,s2
+ 5fa:	008b0913          	addi	s2,s6,8
+ 5fe:	4681                	li	a3,0
+ 600:	4629                	li	a2,10
+ 602:	000b2583          	lw	a1,0(s6)
+ 606:	8556                	mv	a0,s5
+ 608:	00000097          	auipc	ra,0x0
+ 60c:	e8e080e7          	jalr	-370(ra) # 496 <printint>
+ 610:	8b4a                	mv	s6,s2
       state = 0;
- 608:	4981                	li	s3,0
- 60a:	b771                	j	596 <vprintf+0x60>
+ 612:	4981                	li	s3,0
+ 614:	b771                	j	5a0 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 60c:	008b0913          	addi	s2,s6,8
- 610:	4681                	li	a3,0
- 612:	866a                	mv	a2,s10
- 614:	000b2583          	lw	a1,0(s6)
- 618:	8556                	mv	a0,s5
- 61a:	00000097          	auipc	ra,0x0
- 61e:	e72080e7          	jalr	-398(ra) # 48c <printint>
- 622:	8b4a                	mv	s6,s2
+ 616:	008b0913          	addi	s2,s6,8
+ 61a:	4681                	li	a3,0
+ 61c:	866a                	mv	a2,s10
+ 61e:	000b2583          	lw	a1,0(s6)
+ 622:	8556                	mv	a0,s5
+ 624:	00000097          	auipc	ra,0x0
+ 628:	e72080e7          	jalr	-398(ra) # 496 <printint>
+ 62c:	8b4a                	mv	s6,s2
       state = 0;
- 624:	4981                	li	s3,0
- 626:	bf85                	j	596 <vprintf+0x60>
+ 62e:	4981                	li	s3,0
+ 630:	bf85                	j	5a0 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 628:	008b0793          	addi	a5,s6,8
- 62c:	f8f43423          	sd	a5,-120(s0)
- 630:	000b3983          	ld	s3,0(s6)
+ 632:	008b0793          	addi	a5,s6,8
+ 636:	f8f43423          	sd	a5,-120(s0)
+ 63a:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 634:	03000593          	li	a1,48
- 638:	8556                	mv	a0,s5
- 63a:	00000097          	auipc	ra,0x0
- 63e:	e30080e7          	jalr	-464(ra) # 46a <putc>
+ 63e:	03000593          	li	a1,48
+ 642:	8556                	mv	a0,s5
+ 644:	00000097          	auipc	ra,0x0
+ 648:	e30080e7          	jalr	-464(ra) # 474 <putc>
   putc(fd, 'x');
- 642:	07800593          	li	a1,120
- 646:	8556                	mv	a0,s5
- 648:	00000097          	auipc	ra,0x0
- 64c:	e22080e7          	jalr	-478(ra) # 46a <putc>
- 650:	896a                	mv	s2,s10
+ 64c:	07800593          	li	a1,120
+ 650:	8556                	mv	a0,s5
+ 652:	00000097          	auipc	ra,0x0
+ 656:	e22080e7          	jalr	-478(ra) # 474 <putc>
+ 65a:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 652:	03c9d793          	srli	a5,s3,0x3c
- 656:	97de                	add	a5,a5,s7
- 658:	0007c583          	lbu	a1,0(a5)
- 65c:	8556                	mv	a0,s5
- 65e:	00000097          	auipc	ra,0x0
- 662:	e0c080e7          	jalr	-500(ra) # 46a <putc>
+ 65c:	03c9d793          	srli	a5,s3,0x3c
+ 660:	97de                	add	a5,a5,s7
+ 662:	0007c583          	lbu	a1,0(a5)
+ 666:	8556                	mv	a0,s5
+ 668:	00000097          	auipc	ra,0x0
+ 66c:	e0c080e7          	jalr	-500(ra) # 474 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 666:	0992                	slli	s3,s3,0x4
- 668:	397d                	addiw	s2,s2,-1
- 66a:	fe0914e3          	bnez	s2,652 <vprintf+0x11c>
+ 670:	0992                	slli	s3,s3,0x4
+ 672:	397d                	addiw	s2,s2,-1
+ 674:	fe0914e3          	bnez	s2,65c <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 66e:	f8843b03          	ld	s6,-120(s0)
+ 678:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 672:	4981                	li	s3,0
- 674:	b70d                	j	596 <vprintf+0x60>
+ 67c:	4981                	li	s3,0
+ 67e:	b70d                	j	5a0 <vprintf+0x60>
         s = va_arg(ap, char*);
- 676:	008b0913          	addi	s2,s6,8
- 67a:	000b3983          	ld	s3,0(s6)
+ 680:	008b0913          	addi	s2,s6,8
+ 684:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 67e:	02098163          	beqz	s3,6a0 <vprintf+0x16a>
+ 688:	02098163          	beqz	s3,6aa <vprintf+0x16a>
         while(*s != 0){
- 682:	0009c583          	lbu	a1,0(s3)
- 686:	c5ad                	beqz	a1,6f0 <vprintf+0x1ba>
+ 68c:	0009c583          	lbu	a1,0(s3)
+ 690:	c5ad                	beqz	a1,6fa <vprintf+0x1ba>
           putc(fd, *s);
- 688:	8556                	mv	a0,s5
- 68a:	00000097          	auipc	ra,0x0
- 68e:	de0080e7          	jalr	-544(ra) # 46a <putc>
+ 692:	8556                	mv	a0,s5
+ 694:	00000097          	auipc	ra,0x0
+ 698:	de0080e7          	jalr	-544(ra) # 474 <putc>
           s++;
- 692:	0985                	addi	s3,s3,1
+ 69c:	0985                	addi	s3,s3,1
         while(*s != 0){
- 694:	0009c583          	lbu	a1,0(s3)
- 698:	f9e5                	bnez	a1,688 <vprintf+0x152>
+ 69e:	0009c583          	lbu	a1,0(s3)
+ 6a2:	f9e5                	bnez	a1,692 <vprintf+0x152>
         s = va_arg(ap, char*);
- 69a:	8b4a                	mv	s6,s2
+ 6a4:	8b4a                	mv	s6,s2
       state = 0;
- 69c:	4981                	li	s3,0
- 69e:	bde5                	j	596 <vprintf+0x60>
+ 6a6:	4981                	li	s3,0
+ 6a8:	bde5                	j	5a0 <vprintf+0x60>
           s = "(null)";
- 6a0:	00000997          	auipc	s3,0x0
- 6a4:	29098993          	addi	s3,s3,656 # 930 <malloc+0x136>
+ 6aa:	00000997          	auipc	s3,0x0
+ 6ae:	28e98993          	addi	s3,s3,654 # 938 <malloc+0x134>
         while(*s != 0){
- 6a8:	85ee                	mv	a1,s11
- 6aa:	bff9                	j	688 <vprintf+0x152>
+ 6b2:	85ee                	mv	a1,s11
+ 6b4:	bff9                	j	692 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 6ac:	008b0913          	addi	s2,s6,8
- 6b0:	000b4583          	lbu	a1,0(s6)
- 6b4:	8556                	mv	a0,s5
- 6b6:	00000097          	auipc	ra,0x0
- 6ba:	db4080e7          	jalr	-588(ra) # 46a <putc>
- 6be:	8b4a                	mv	s6,s2
+ 6b6:	008b0913          	addi	s2,s6,8
+ 6ba:	000b4583          	lbu	a1,0(s6)
+ 6be:	8556                	mv	a0,s5
+ 6c0:	00000097          	auipc	ra,0x0
+ 6c4:	db4080e7          	jalr	-588(ra) # 474 <putc>
+ 6c8:	8b4a                	mv	s6,s2
       state = 0;
- 6c0:	4981                	li	s3,0
- 6c2:	bdd1                	j	596 <vprintf+0x60>
+ 6ca:	4981                	li	s3,0
+ 6cc:	bdd1                	j	5a0 <vprintf+0x60>
         putc(fd, c);
- 6c4:	85d2                	mv	a1,s4
- 6c6:	8556                	mv	a0,s5
- 6c8:	00000097          	auipc	ra,0x0
- 6cc:	da2080e7          	jalr	-606(ra) # 46a <putc>
+ 6ce:	85d2                	mv	a1,s4
+ 6d0:	8556                	mv	a0,s5
+ 6d2:	00000097          	auipc	ra,0x0
+ 6d6:	da2080e7          	jalr	-606(ra) # 474 <putc>
       state = 0;
- 6d0:	4981                	li	s3,0
- 6d2:	b5d1                	j	596 <vprintf+0x60>
+ 6da:	4981                	li	s3,0
+ 6dc:	b5d1                	j	5a0 <vprintf+0x60>
         putc(fd, '%');
- 6d4:	85d2                	mv	a1,s4
- 6d6:	8556                	mv	a0,s5
- 6d8:	00000097          	auipc	ra,0x0
- 6dc:	d92080e7          	jalr	-622(ra) # 46a <putc>
+ 6de:	85d2                	mv	a1,s4
+ 6e0:	8556                	mv	a0,s5
+ 6e2:	00000097          	auipc	ra,0x0
+ 6e6:	d92080e7          	jalr	-622(ra) # 474 <putc>
         putc(fd, c);
- 6e0:	85ca                	mv	a1,s2
- 6e2:	8556                	mv	a0,s5
- 6e4:	00000097          	auipc	ra,0x0
- 6e8:	d86080e7          	jalr	-634(ra) # 46a <putc>
+ 6ea:	85ca                	mv	a1,s2
+ 6ec:	8556                	mv	a0,s5
+ 6ee:	00000097          	auipc	ra,0x0
+ 6f2:	d86080e7          	jalr	-634(ra) # 474 <putc>
       state = 0;
- 6ec:	4981                	li	s3,0
- 6ee:	b565                	j	596 <vprintf+0x60>
+ 6f6:	4981                	li	s3,0
+ 6f8:	b565                	j	5a0 <vprintf+0x60>
         s = va_arg(ap, char*);
- 6f0:	8b4a                	mv	s6,s2
+ 6fa:	8b4a                	mv	s6,s2
       state = 0;
- 6f2:	4981                	li	s3,0
- 6f4:	b54d                	j	596 <vprintf+0x60>
+ 6fc:	4981                	li	s3,0
+ 6fe:	b54d                	j	5a0 <vprintf+0x60>
     }
   }
 }
- 6f6:	70e6                	ld	ra,120(sp)
- 6f8:	7446                	ld	s0,112(sp)
- 6fa:	74a6                	ld	s1,104(sp)
- 6fc:	7906                	ld	s2,96(sp)
- 6fe:	69e6                	ld	s3,88(sp)
- 700:	6a46                	ld	s4,80(sp)
- 702:	6aa6                	ld	s5,72(sp)
- 704:	6b06                	ld	s6,64(sp)
- 706:	7be2                	ld	s7,56(sp)
- 708:	7c42                	ld	s8,48(sp)
- 70a:	7ca2                	ld	s9,40(sp)
- 70c:	7d02                	ld	s10,32(sp)
- 70e:	6de2                	ld	s11,24(sp)
- 710:	6109                	addi	sp,sp,128
- 712:	8082                	ret
-
-0000000000000714 <fprintf>:
+ 700:	70e6                	ld	ra,120(sp)
+ 702:	7446                	ld	s0,112(sp)
+ 704:	74a6                	ld	s1,104(sp)
+ 706:	7906                	ld	s2,96(sp)
+ 708:	69e6                	ld	s3,88(sp)
+ 70a:	6a46                	ld	s4,80(sp)
+ 70c:	6aa6                	ld	s5,72(sp)
+ 70e:	6b06                	ld	s6,64(sp)
+ 710:	7be2                	ld	s7,56(sp)
+ 712:	7c42                	ld	s8,48(sp)
+ 714:	7ca2                	ld	s9,40(sp)
+ 716:	7d02                	ld	s10,32(sp)
+ 718:	6de2                	ld	s11,24(sp)
+ 71a:	6109                	addi	sp,sp,128
+ 71c:	8082                	ret
+
+000000000000071e <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 714:	715d                	addi	sp,sp,-80
- 716:	ec06                	sd	ra,24(sp)
- 718:	e822                	sd	s0,16(sp)
- 71a:	1000                	addi	s0,sp,32
- 71c:	e010                	sd	a2,0(s0)
- 71e:	e414                	sd	a3,8(s0)
- 720:	e818                	sd	a4,16(s0)
- 722:	ec1c                	sd	a5,24(s0)
- 724:	03043023          	sd	a6,32(s0)
- 728:	03143423          	sd	a7,40(s0)
+ 71e:	715d                	addi	sp,sp,-80
+ 720:	ec06                	sd	ra,24(sp)
+ 722:	e822                	sd	s0,16(sp)
+ 724:	1000                	addi	s0,sp,32
+ 726:	e010                	sd	a2,0(s0)
+ 728:	e414                	sd	a3,8(s0)
+ 72a:	e818                	sd	a4,16(s0)
+ 72c:	ec1c                	sd	a5,24(s0)
+ 72e:	03043023          	sd	a6,32(s0)
+ 732:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 72c:	8622                	mv	a2,s0
- 72e:	fe843423          	sd	s0,-24(s0)
+ 736:	8622                	mv	a2,s0
+ 738:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 732:	00000097          	auipc	ra,0x0
- 736:	e04080e7          	jalr	-508(ra) # 536 <vprintf>
+ 73c:	00000097          	auipc	ra,0x0
+ 740:	e04080e7          	jalr	-508(ra) # 540 <vprintf>
 }
- 73a:	60e2                	ld	ra,24(sp)
- 73c:	6442                	ld	s0,16(sp)
- 73e:	6161                	addi	sp,sp,80
- 740:	8082                	ret
+ 744:	60e2                	ld	ra,24(sp)
+ 746:	6442                	ld	s0,16(sp)
+ 748:	6161                	addi	sp,sp,80
+ 74a:	8082                	ret
 
-0000000000000742 <printf>:
+000000000000074c <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 742:	711d                	addi	sp,sp,-96
- 744:	ec06                	sd	ra,24(sp)
- 746:	e822                	sd	s0,16(sp)
- 748:	1000                	addi	s0,sp,32
- 74a:	e40c                	sd	a1,8(s0)
- 74c:	e810                	sd	a2,16(s0)
- 74e:	ec14                	sd	a3,24(s0)
- 750:	f018                	sd	a4,32(s0)
- 752:	f41c                	sd	a5,40(s0)
- 754:	03043823          	sd	a6,48(s0)
- 758:	03143c23          	sd	a7,56(s0)
+ 74c:	711d                	addi	sp,sp,-96
+ 74e:	ec06                	sd	ra,24(sp)
+ 750:	e822                	sd	s0,16(sp)
+ 752:	1000                	addi	s0,sp,32
+ 754:	e40c                	sd	a1,8(s0)
+ 756:	e810                	sd	a2,16(s0)
+ 758:	ec14                	sd	a3,24(s0)
+ 75a:	f018                	sd	a4,32(s0)
+ 75c:	f41c                	sd	a5,40(s0)
+ 75e:	03043823          	sd	a6,48(s0)
+ 762:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 75c:	00840613          	addi	a2,s0,8
- 760:	fec43423          	sd	a2,-24(s0)
+ 766:	00840613          	addi	a2,s0,8
+ 76a:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 764:	85aa                	mv	a1,a0
- 766:	4505                	li	a0,1
- 768:	00000097          	auipc	ra,0x0
- 76c:	dce080e7          	jalr	-562(ra) # 536 <vprintf>
+ 76e:	85aa                	mv	a1,a0
+ 770:	4505                	li	a0,1
+ 772:	00000097          	auipc	ra,0x0
+ 776:	dce080e7          	jalr	-562(ra) # 540 <vprintf>
 }
- 770:	60e2                	ld	ra,24(sp)
- 772:	6442                	ld	s0,16(sp)
- 774:	6125                	addi	sp,sp,96
- 776:	8082                	ret
+ 77a:	60e2                	ld	ra,24(sp)
+ 77c:	6442                	ld	s0,16(sp)
+ 77e:	6125                	addi	sp,sp,96
+ 780:	8082                	ret
 
-0000000000000778 <free>:
+0000000000000782 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 778:	1141                	addi	sp,sp,-16
- 77a:	e422                	sd	s0,8(sp)
- 77c:	0800                	addi	s0,sp,16
+ 782:	1141                	addi	sp,sp,-16
+ 784:	e422                	sd	s0,8(sp)
+ 786:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 77e:	ff050693          	addi	a3,a0,-16
+ 788:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 782:	00000797          	auipc	a5,0x0
- 786:	2267b783          	ld	a5,550(a5) # 9a8 <freep>
- 78a:	a02d                	j	7b4 <free+0x3c>
+ 78c:	00000797          	auipc	a5,0x0
+ 790:	2247b783          	ld	a5,548(a5) # 9b0 <freep>
+ 794:	a02d                	j	7be <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 78c:	4618                	lw	a4,8(a2)
- 78e:	9f2d                	addw	a4,a4,a1
- 790:	fee52c23          	sw	a4,-8(a0)
+ 796:	4618                	lw	a4,8(a2)
+ 798:	9f2d                	addw	a4,a4,a1
+ 79a:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 794:	6398                	ld	a4,0(a5)
- 796:	6310                	ld	a2,0(a4)
- 798:	a83d                	j	7d6 <free+0x5e>
+ 79e:	6398                	ld	a4,0(a5)
+ 7a0:	6310                	ld	a2,0(a4)
+ 7a2:	a83d                	j	7e0 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 79a:	ff852703          	lw	a4,-8(a0)
- 79e:	9f31                	addw	a4,a4,a2
- 7a0:	c798                	sw	a4,8(a5)
+ 7a4:	ff852703          	lw	a4,-8(a0)
+ 7a8:	9f31                	addw	a4,a4,a2
+ 7aa:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 7a2:	ff053683          	ld	a3,-16(a0)
- 7a6:	a091                	j	7ea <free+0x72>
+ 7ac:	ff053683          	ld	a3,-16(a0)
+ 7b0:	a091                	j	7f4 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 7a8:	6398                	ld	a4,0(a5)
- 7aa:	00e7e463          	bltu	a5,a4,7b2 <free+0x3a>
- 7ae:	00e6ea63          	bltu	a3,a4,7c2 <free+0x4a>
+ 7b2:	6398                	ld	a4,0(a5)
+ 7b4:	00e7e463          	bltu	a5,a4,7bc <free+0x3a>
+ 7b8:	00e6ea63          	bltu	a3,a4,7cc <free+0x4a>
 {
- 7b2:	87ba                	mv	a5,a4
+ 7bc:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 7b4:	fed7fae3          	bgeu	a5,a3,7a8 <free+0x30>
- 7b8:	6398                	ld	a4,0(a5)
- 7ba:	00e6e463          	bltu	a3,a4,7c2 <free+0x4a>
+ 7be:	fed7fae3          	bgeu	a5,a3,7b2 <free+0x30>
+ 7c2:	6398                	ld	a4,0(a5)
+ 7c4:	00e6e463          	bltu	a3,a4,7cc <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 7be:	fee7eae3          	bltu	a5,a4,7b2 <free+0x3a>
+ 7c8:	fee7eae3          	bltu	a5,a4,7bc <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 7c2:	ff852583          	lw	a1,-8(a0)
- 7c6:	6390                	ld	a2,0(a5)
- 7c8:	02059813          	slli	a6,a1,0x20
- 7cc:	01c85713          	srli	a4,a6,0x1c
- 7d0:	9736                	add	a4,a4,a3
- 7d2:	fae60de3          	beq	a2,a4,78c <free+0x14>
+ 7cc:	ff852583          	lw	a1,-8(a0)
+ 7d0:	6390                	ld	a2,0(a5)
+ 7d2:	02059813          	slli	a6,a1,0x20
+ 7d6:	01c85713          	srli	a4,a6,0x1c
+ 7da:	9736                	add	a4,a4,a3
+ 7dc:	fae60de3          	beq	a2,a4,796 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 7d6:	fec53823          	sd	a2,-16(a0)
+ 7e0:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 7da:	4790                	lw	a2,8(a5)
- 7dc:	02061593          	slli	a1,a2,0x20
- 7e0:	01c5d713          	srli	a4,a1,0x1c
- 7e4:	973e                	add	a4,a4,a5
- 7e6:	fae68ae3          	beq	a3,a4,79a <free+0x22>
+ 7e4:	4790                	lw	a2,8(a5)
+ 7e6:	02061593          	slli	a1,a2,0x20
+ 7ea:	01c5d713          	srli	a4,a1,0x1c
+ 7ee:	973e                	add	a4,a4,a5
+ 7f0:	fae68ae3          	beq	a3,a4,7a4 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 7ea:	e394                	sd	a3,0(a5)
+ 7f4:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 7ec:	00000717          	auipc	a4,0x0
- 7f0:	1af73e23          	sd	a5,444(a4) # 9a8 <freep>
+ 7f6:	00000717          	auipc	a4,0x0
+ 7fa:	1af73d23          	sd	a5,442(a4) # 9b0 <freep>
 }
- 7f4:	6422                	ld	s0,8(sp)
- 7f6:	0141                	addi	sp,sp,16
- 7f8:	8082                	ret
+ 7fe:	6422                	ld	s0,8(sp)
+ 800:	0141                	addi	sp,sp,16
+ 802:	8082                	ret
 
-00000000000007fa <malloc>:
+0000000000000804 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 7fa:	7139                	addi	sp,sp,-64
- 7fc:	fc06                	sd	ra,56(sp)
- 7fe:	f822                	sd	s0,48(sp)
- 800:	f426                	sd	s1,40(sp)
- 802:	f04a                	sd	s2,32(sp)
- 804:	ec4e                	sd	s3,24(sp)
- 806:	e852                	sd	s4,16(sp)
- 808:	e456                	sd	s5,8(sp)
- 80a:	e05a                	sd	s6,0(sp)
- 80c:	0080                	addi	s0,sp,64
+ 804:	7139                	addi	sp,sp,-64
+ 806:	fc06                	sd	ra,56(sp)
+ 808:	f822                	sd	s0,48(sp)
+ 80a:	f426                	sd	s1,40(sp)
+ 80c:	f04a                	sd	s2,32(sp)
+ 80e:	ec4e                	sd	s3,24(sp)
+ 810:	e852                	sd	s4,16(sp)
+ 812:	e456                	sd	s5,8(sp)
+ 814:	e05a                	sd	s6,0(sp)
+ 816:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 80e:	02051493          	slli	s1,a0,0x20
- 812:	9081                	srli	s1,s1,0x20
- 814:	04bd                	addi	s1,s1,15
- 816:	8091                	srli	s1,s1,0x4
- 818:	00148a1b          	addiw	s4,s1,1
- 81c:	0485                	addi	s1,s1,1
+ 818:	02051493          	slli	s1,a0,0x20
+ 81c:	9081                	srli	s1,s1,0x20
+ 81e:	04bd                	addi	s1,s1,15
+ 820:	8091                	srli	s1,s1,0x4
+ 822:	00148a1b          	addiw	s4,s1,1
+ 826:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 81e:	00000517          	auipc	a0,0x0
- 822:	18a53503          	ld	a0,394(a0) # 9a8 <freep>
- 826:	c515                	beqz	a0,852 <malloc+0x58>
+ 828:	00000517          	auipc	a0,0x0
+ 82c:	18853503          	ld	a0,392(a0) # 9b0 <freep>
+ 830:	c515                	beqz	a0,85c <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 828:	611c                	ld	a5,0(a0)
+ 832:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 82a:	4798                	lw	a4,8(a5)
- 82c:	04977163          	bgeu	a4,s1,86e <malloc+0x74>
- 830:	89d2                	mv	s3,s4
- 832:	000a071b          	sext.w	a4,s4
- 836:	6685                	lui	a3,0x1
- 838:	00d77363          	bgeu	a4,a3,83e <malloc+0x44>
- 83c:	6985                	lui	s3,0x1
- 83e:	00098b1b          	sext.w	s6,s3
+ 834:	4798                	lw	a4,8(a5)
+ 836:	04977163          	bgeu	a4,s1,878 <malloc+0x74>
+ 83a:	89d2                	mv	s3,s4
+ 83c:	000a071b          	sext.w	a4,s4
+ 840:	6685                	lui	a3,0x1
+ 842:	00d77363          	bgeu	a4,a3,848 <malloc+0x44>
+ 846:	6985                	lui	s3,0x1
+ 848:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 842:	0049999b          	slliw	s3,s3,0x4
+ 84c:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 846:	00000917          	auipc	s2,0x0
- 84a:	16290913          	addi	s2,s2,354 # 9a8 <freep>
+ 850:	00000917          	auipc	s2,0x0
+ 854:	16090913          	addi	s2,s2,352 # 9b0 <freep>
   if(p == (char*)-1)
- 84e:	5afd                	li	s5,-1
- 850:	a8a5                	j	8c8 <malloc+0xce>
+ 858:	5afd                	li	s5,-1
+ 85a:	a8a5                	j	8d2 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 852:	00000797          	auipc	a5,0x0
- 856:	15678793          	addi	a5,a5,342 # 9a8 <freep>
- 85a:	00000717          	auipc	a4,0x0
- 85e:	15670713          	addi	a4,a4,342 # 9b0 <base>
- 862:	e398                	sd	a4,0(a5)
- 864:	e798                	sd	a4,8(a5)
+ 85c:	00000797          	auipc	a5,0x0
+ 860:	15478793          	addi	a5,a5,340 # 9b0 <freep>
+ 864:	00000717          	auipc	a4,0x0
+ 868:	15470713          	addi	a4,a4,340 # 9b8 <base>
+ 86c:	e398                	sd	a4,0(a5)
+ 86e:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 866:	0007a823          	sw	zero,16(a5)
+ 870:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 86a:	87ba                	mv	a5,a4
- 86c:	b7d1                	j	830 <malloc+0x36>
+ 874:	87ba                	mv	a5,a4
+ 876:	b7d1                	j	83a <malloc+0x36>
       if(p->s.size == nunits)
- 86e:	02e48c63          	beq	s1,a4,8a6 <malloc+0xac>
+ 878:	02e48c63          	beq	s1,a4,8b0 <malloc+0xac>
         p->s.size -= nunits;
- 872:	4147073b          	subw	a4,a4,s4
- 876:	c798                	sw	a4,8(a5)
+ 87c:	4147073b          	subw	a4,a4,s4
+ 880:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 878:	02071693          	slli	a3,a4,0x20
- 87c:	01c6d713          	srli	a4,a3,0x1c
- 880:	97ba                	add	a5,a5,a4
+ 882:	02071693          	slli	a3,a4,0x20
+ 886:	01c6d713          	srli	a4,a3,0x1c
+ 88a:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 882:	0147a423          	sw	s4,8(a5)
+ 88c:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 886:	00000717          	auipc	a4,0x0
- 88a:	12a73123          	sd	a0,290(a4) # 9a8 <freep>
+ 890:	00000717          	auipc	a4,0x0
+ 894:	12a73023          	sd	a0,288(a4) # 9b0 <freep>
       return (void*)(p + 1);
- 88e:	01078513          	addi	a0,a5,16
+ 898:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 892:	70e2                	ld	ra,56(sp)
- 894:	7442                	ld	s0,48(sp)
- 896:	74a2                	ld	s1,40(sp)
- 898:	7902                	ld	s2,32(sp)
- 89a:	69e2                	ld	s3,24(sp)
- 89c:	6a42                	ld	s4,16(sp)
- 89e:	6aa2                	ld	s5,8(sp)
- 8a0:	6b02                	ld	s6,0(sp)
- 8a2:	6121                	addi	sp,sp,64
- 8a4:	8082                	ret
+ 89c:	70e2                	ld	ra,56(sp)
+ 89e:	7442                	ld	s0,48(sp)
+ 8a0:	74a2                	ld	s1,40(sp)
+ 8a2:	7902                	ld	s2,32(sp)
+ 8a4:	69e2                	ld	s3,24(sp)
+ 8a6:	6a42                	ld	s4,16(sp)
+ 8a8:	6aa2                	ld	s5,8(sp)
+ 8aa:	6b02                	ld	s6,0(sp)
+ 8ac:	6121                	addi	sp,sp,64
+ 8ae:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 8a6:	6398                	ld	a4,0(a5)
- 8a8:	e118                	sd	a4,0(a0)
- 8aa:	bff1                	j	886 <malloc+0x8c>
+ 8b0:	6398                	ld	a4,0(a5)
+ 8b2:	e118                	sd	a4,0(a0)
+ 8b4:	bff1                	j	890 <malloc+0x8c>
   hp->s.size = nu;
- 8ac:	01652423          	sw	s6,8(a0)
+ 8b6:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 8b0:	0541                	addi	a0,a0,16
- 8b2:	00000097          	auipc	ra,0x0
- 8b6:	ec6080e7          	jalr	-314(ra) # 778 <free>
+ 8ba:	0541                	addi	a0,a0,16
+ 8bc:	00000097          	auipc	ra,0x0
+ 8c0:	ec6080e7          	jalr	-314(ra) # 782 <free>
   return freep;
- 8ba:	00093503          	ld	a0,0(s2)
+ 8c4:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 8be:	d971                	beqz	a0,892 <malloc+0x98>
+ 8c8:	d971                	beqz	a0,89c <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 8c0:	611c                	ld	a5,0(a0)
+ 8ca:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 8c2:	4798                	lw	a4,8(a5)
- 8c4:	fa9775e3          	bgeu	a4,s1,86e <malloc+0x74>
+ 8cc:	4798                	lw	a4,8(a5)
+ 8ce:	fa9775e3          	bgeu	a4,s1,878 <malloc+0x74>
     if(p == freep)
- 8c8:	00093703          	ld	a4,0(s2)
- 8cc:	853e                	mv	a0,a5
- 8ce:	fef719e3          	bne	a4,a5,8c0 <malloc+0xc6>
+ 8d2:	00093703          	ld	a4,0(s2)
+ 8d6:	853e                	mv	a0,a5
+ 8d8:	fef719e3          	bne	a4,a5,8ca <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 8d2:	854e                	mv	a0,s3
- 8d4:	00000097          	auipc	ra,0x0
- 8d8:	b2a080e7          	jalr	-1238(ra) # 3fe <sbrk>
+ 8dc:	854e                	mv	a0,s3
+ 8de:	00000097          	auipc	ra,0x0
+ 8e2:	b20080e7          	jalr	-1248(ra) # 3fe <sbrk>
   if(p == (char*)-1)
- 8dc:	fd5518e3          	bne	a0,s5,8ac <malloc+0xb2>
+ 8e6:	fd5518e3          	bne	a0,s5,8b6 <malloc+0xb2>
         return 0;
- 8e0:	4501                	li	a0,0
- 8e2:	bf45                	j	892 <malloc+0x98>
+ 8ea:	4501                	li	a0,0
+ 8ec:	bf45                	j	89c <malloc+0x98>
diff --git a/xv6-user/strace.sym b/xv6-user/strace.sym
index 239210a..63649e1 100644
--- a/xv6-user/strace.sym
+++ b/xv6-user/strace.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-00000000000008e8 .rodata
-00000000000009a8 .bss
+00000000000008f0 .rodata
+00000000000009b0 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-000000000000046a putc
-000000000000048c printint
-0000000000000990 digits
+0000000000000474 putc
+0000000000000496 printint
+0000000000000998 digits
 0000000000000000 umalloc.c
-00000000000009a8 freep
-00000000000009b0 base
+00000000000009b0 freep
+00000000000009b8 base
 00000000000000c2 strcpy
-0000000000000742 printf
-00000000000011a1 __global_pointer$
+000000000000074c printf
+00000000000011a9 __global_pointer$
 000000000000041e dev
 00000000000002c8 memmove
+000000000000046a times
 000000000000043e trace
 00000000000001a8 gets
-00000000000009a1 __SDATA_BEGIN__
+00000000000009a9 __SDATA_BEGIN__
 00000000000003f4 getpid
 000000000000035a memcpy
-00000000000007fa malloc
+0000000000000804 malloc
 0000000000000436 remove
 0000000000000406 sleep
 0000000000000446 sysinfo
@@ -42,31 +43,31 @@
 000000000000044e rename
 00000000000003a0 write
 00000000000003ce fstat
-0000000000000714 fprintf
+000000000000071e fprintf
 00000000000003b4 kill
 00000000000000de strcat
-0000000000000536 vprintf
+0000000000000540 vprintf
 00000000000003e2 chdir
 00000000000003bc exec
 0000000000000384 wait
 0000000000000396 read
 0000000000000320 memcmp
 0000000000000372 fork
-00000000000009c0 __BSS_END__
+00000000000009c8 __BSS_END__
 00000000000003fe sbrk
 0000000000000416 test_proc
 000000000000040e uptime
-00000000000009a1 __bss_start
+00000000000009a9 __bss_start
 0000000000000162 memset
 0000000000000000 main
 000000000000010c strcmp
 0000000000000456 shutdown
 00000000000003ec dup
 000000000000042e getcwd
-00000000000009a1 __DATA_BEGIN__
+00000000000009a9 __DATA_BEGIN__
 0000000000000222 stat
-00000000000009a1 _edata
-00000000000009c0 _end
+00000000000009a9 _edata
+00000000000009c8 _end
 000000000000037a exit
 0000000000000268 atoi
 0000000000000138 strlen
@@ -74,4 +75,4 @@
 0000000000000184 strchr
 00000000000003d8 mkdir
 00000000000003aa close
-0000000000000778 free
+0000000000000782 free
diff --git a/xv6-user/test.asm b/xv6-user/test.asm
index 5e60710..1931862 100644
--- a/xv6-user/test.asm
+++ b/xv6-user/test.asm
@@ -27,15 +27,15 @@ int main()
   18:	fe043583          	ld	a1,-32(s0)
   1c:	81a9                	srli	a1,a1,0xa
   1e:	00001517          	auipc	a0,0x1
-  22:	87250513          	addi	a0,a0,-1934 # 890 <malloc+0xfa>
+  22:	88250513          	addi	a0,a0,-1918 # 8a0 <malloc+0x100>
   26:	00000097          	auipc	ra,0x0
-  2a:	6b8080e7          	jalr	1720(ra) # 6de <printf>
+  2a:	6c2080e7          	jalr	1730(ra) # 6e8 <printf>
         printf("process amount: %d\n", info.nproc);
   2e:	fe843583          	ld	a1,-24(s0)
   32:	00001517          	auipc	a0,0x1
-  36:	87650513          	addi	a0,a0,-1930 # 8a8 <malloc+0x112>
+  36:	88650513          	addi	a0,a0,-1914 # 8b8 <malloc+0x118>
   3a:	00000097          	auipc	ra,0x0
-  3e:	6a4080e7          	jalr	1700(ra) # 6de <printf>
+  3e:	6ae080e7          	jalr	1710(ra) # 6e8 <printf>
     }
     exit(0);
   42:	4501                	li	a0,0
@@ -43,9 +43,9 @@ int main()
   48:	2d2080e7          	jalr	722(ra) # 316 <exit>
         printf("sysinfo fail!\n");
   4c:	00001517          	auipc	a0,0x1
-  50:	83450513          	addi	a0,a0,-1996 # 880 <malloc+0xea>
+  50:	84450513          	addi	a0,a0,-1980 # 890 <malloc+0xf0>
   54:	00000097          	auipc	ra,0x0
-  58:	68a080e7          	jalr	1674(ra) # 6de <printf>
+  58:	694080e7          	jalr	1684(ra) # 6e8 <printf>
   5c:	b7dd                	j	42 <main+0x42>
 
 000000000000005e <strcpy>:
@@ -804,637 +804,647 @@ uname:
  ret
  404:	8082                	ret
 
-0000000000000406 <putc>:
+0000000000000406 <times>:
+.global times
+times:
+ li a7, SYS_times
+ 406:	09900893          	li	a7,153
+ ecall
+ 40a:	00000073          	ecall
+ ret
+ 40e:	8082                	ret
+
+0000000000000410 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 406:	1101                	addi	sp,sp,-32
- 408:	ec06                	sd	ra,24(sp)
- 40a:	e822                	sd	s0,16(sp)
- 40c:	1000                	addi	s0,sp,32
- 40e:	feb407a3          	sb	a1,-17(s0)
+ 410:	1101                	addi	sp,sp,-32
+ 412:	ec06                	sd	ra,24(sp)
+ 414:	e822                	sd	s0,16(sp)
+ 416:	1000                	addi	s0,sp,32
+ 418:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 412:	4605                	li	a2,1
- 414:	fef40593          	addi	a1,s0,-17
- 418:	00000097          	auipc	ra,0x0
- 41c:	f24080e7          	jalr	-220(ra) # 33c <write>
+ 41c:	4605                	li	a2,1
+ 41e:	fef40593          	addi	a1,s0,-17
+ 422:	00000097          	auipc	ra,0x0
+ 426:	f1a080e7          	jalr	-230(ra) # 33c <write>
 }
- 420:	60e2                	ld	ra,24(sp)
- 422:	6442                	ld	s0,16(sp)
- 424:	6105                	addi	sp,sp,32
- 426:	8082                	ret
+ 42a:	60e2                	ld	ra,24(sp)
+ 42c:	6442                	ld	s0,16(sp)
+ 42e:	6105                	addi	sp,sp,32
+ 430:	8082                	ret
 
-0000000000000428 <printint>:
+0000000000000432 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 428:	7139                	addi	sp,sp,-64
- 42a:	fc06                	sd	ra,56(sp)
- 42c:	f822                	sd	s0,48(sp)
- 42e:	f426                	sd	s1,40(sp)
- 430:	f04a                	sd	s2,32(sp)
- 432:	ec4e                	sd	s3,24(sp)
- 434:	0080                	addi	s0,sp,64
- 436:	84aa                	mv	s1,a0
+ 432:	7139                	addi	sp,sp,-64
+ 434:	fc06                	sd	ra,56(sp)
+ 436:	f822                	sd	s0,48(sp)
+ 438:	f426                	sd	s1,40(sp)
+ 43a:	f04a                	sd	s2,32(sp)
+ 43c:	ec4e                	sd	s3,24(sp)
+ 43e:	0080                	addi	s0,sp,64
+ 440:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 438:	c299                	beqz	a3,43e <printint+0x16>
- 43a:	0805c863          	bltz	a1,4ca <printint+0xa2>
+ 442:	c299                	beqz	a3,448 <printint+0x16>
+ 444:	0805c863          	bltz	a1,4d4 <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 43e:	2581                	sext.w	a1,a1
+ 448:	2581                	sext.w	a1,a1
   neg = 0;
- 440:	4881                	li	a7,0
+ 44a:	4881                	li	a7,0
   }
 
   i = 0;
- 442:	fc040993          	addi	s3,s0,-64
+ 44c:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 446:	86ce                	mv	a3,s3
+ 450:	86ce                	mv	a3,s3
   i = 0;
- 448:	4701                	li	a4,0
+ 452:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 44a:	2601                	sext.w	a2,a2
- 44c:	00000517          	auipc	a0,0x0
- 450:	4d450513          	addi	a0,a0,1236 # 920 <digits>
- 454:	883a                	mv	a6,a4
- 456:	2705                	addiw	a4,a4,1
- 458:	02c5f7bb          	remuw	a5,a1,a2
- 45c:	1782                	slli	a5,a5,0x20
- 45e:	9381                	srli	a5,a5,0x20
- 460:	97aa                	add	a5,a5,a0
- 462:	0007c783          	lbu	a5,0(a5)
- 466:	00f68023          	sb	a5,0(a3)
+ 454:	2601                	sext.w	a2,a2
+ 456:	00000517          	auipc	a0,0x0
+ 45a:	4da50513          	addi	a0,a0,1242 # 930 <digits>
+ 45e:	883a                	mv	a6,a4
+ 460:	2705                	addiw	a4,a4,1
+ 462:	02c5f7bb          	remuw	a5,a1,a2
+ 466:	1782                	slli	a5,a5,0x20
+ 468:	9381                	srli	a5,a5,0x20
+ 46a:	97aa                	add	a5,a5,a0
+ 46c:	0007c783          	lbu	a5,0(a5)
+ 470:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 46a:	0005879b          	sext.w	a5,a1
- 46e:	02c5d5bb          	divuw	a1,a1,a2
- 472:	0685                	addi	a3,a3,1
- 474:	fec7f0e3          	bgeu	a5,a2,454 <printint+0x2c>
+ 474:	0005879b          	sext.w	a5,a1
+ 478:	02c5d5bb          	divuw	a1,a1,a2
+ 47c:	0685                	addi	a3,a3,1
+ 47e:	fec7f0e3          	bgeu	a5,a2,45e <printint+0x2c>
   if(neg)
- 478:	00088c63          	beqz	a7,490 <printint+0x68>
+ 482:	00088c63          	beqz	a7,49a <printint+0x68>
     buf[i++] = '-';
- 47c:	fd070793          	addi	a5,a4,-48
- 480:	00878733          	add	a4,a5,s0
- 484:	02d00793          	li	a5,45
- 488:	fef70823          	sb	a5,-16(a4)
- 48c:	0028071b          	addiw	a4,a6,2
+ 486:	fd070793          	addi	a5,a4,-48
+ 48a:	00878733          	add	a4,a5,s0
+ 48e:	02d00793          	li	a5,45
+ 492:	fef70823          	sb	a5,-16(a4)
+ 496:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 490:	02e05663          	blez	a4,4bc <printint+0x94>
- 494:	fc040913          	addi	s2,s0,-64
- 498:	993a                	add	s2,s2,a4
- 49a:	19fd                	addi	s3,s3,-1
- 49c:	99ba                	add	s3,s3,a4
- 49e:	377d                	addiw	a4,a4,-1
- 4a0:	1702                	slli	a4,a4,0x20
- 4a2:	9301                	srli	a4,a4,0x20
- 4a4:	40e989b3          	sub	s3,s3,a4
+ 49a:	02e05663          	blez	a4,4c6 <printint+0x94>
+ 49e:	fc040913          	addi	s2,s0,-64
+ 4a2:	993a                	add	s2,s2,a4
+ 4a4:	19fd                	addi	s3,s3,-1
+ 4a6:	99ba                	add	s3,s3,a4
+ 4a8:	377d                	addiw	a4,a4,-1
+ 4aa:	1702                	slli	a4,a4,0x20
+ 4ac:	9301                	srli	a4,a4,0x20
+ 4ae:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 4a8:	fff94583          	lbu	a1,-1(s2)
- 4ac:	8526                	mv	a0,s1
- 4ae:	00000097          	auipc	ra,0x0
- 4b2:	f58080e7          	jalr	-168(ra) # 406 <putc>
+ 4b2:	fff94583          	lbu	a1,-1(s2)
+ 4b6:	8526                	mv	a0,s1
+ 4b8:	00000097          	auipc	ra,0x0
+ 4bc:	f58080e7          	jalr	-168(ra) # 410 <putc>
   while(--i >= 0)
- 4b6:	197d                	addi	s2,s2,-1
- 4b8:	ff3918e3          	bne	s2,s3,4a8 <printint+0x80>
+ 4c0:	197d                	addi	s2,s2,-1
+ 4c2:	ff3918e3          	bne	s2,s3,4b2 <printint+0x80>
 }
- 4bc:	70e2                	ld	ra,56(sp)
- 4be:	7442                	ld	s0,48(sp)
- 4c0:	74a2                	ld	s1,40(sp)
- 4c2:	7902                	ld	s2,32(sp)
- 4c4:	69e2                	ld	s3,24(sp)
- 4c6:	6121                	addi	sp,sp,64
- 4c8:	8082                	ret
+ 4c6:	70e2                	ld	ra,56(sp)
+ 4c8:	7442                	ld	s0,48(sp)
+ 4ca:	74a2                	ld	s1,40(sp)
+ 4cc:	7902                	ld	s2,32(sp)
+ 4ce:	69e2                	ld	s3,24(sp)
+ 4d0:	6121                	addi	sp,sp,64
+ 4d2:	8082                	ret
     x = -xx;
- 4ca:	40b005bb          	negw	a1,a1
+ 4d4:	40b005bb          	negw	a1,a1
     neg = 1;
- 4ce:	4885                	li	a7,1
+ 4d8:	4885                	li	a7,1
     x = -xx;
- 4d0:	bf8d                	j	442 <printint+0x1a>
+ 4da:	bf8d                	j	44c <printint+0x1a>
 
-00000000000004d2 <vprintf>:
+00000000000004dc <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 4d2:	7119                	addi	sp,sp,-128
- 4d4:	fc86                	sd	ra,120(sp)
- 4d6:	f8a2                	sd	s0,112(sp)
- 4d8:	f4a6                	sd	s1,104(sp)
- 4da:	f0ca                	sd	s2,96(sp)
- 4dc:	ecce                	sd	s3,88(sp)
- 4de:	e8d2                	sd	s4,80(sp)
- 4e0:	e4d6                	sd	s5,72(sp)
- 4e2:	e0da                	sd	s6,64(sp)
- 4e4:	fc5e                	sd	s7,56(sp)
- 4e6:	f862                	sd	s8,48(sp)
- 4e8:	f466                	sd	s9,40(sp)
- 4ea:	f06a                	sd	s10,32(sp)
- 4ec:	ec6e                	sd	s11,24(sp)
- 4ee:	0100                	addi	s0,sp,128
+ 4dc:	7119                	addi	sp,sp,-128
+ 4de:	fc86                	sd	ra,120(sp)
+ 4e0:	f8a2                	sd	s0,112(sp)
+ 4e2:	f4a6                	sd	s1,104(sp)
+ 4e4:	f0ca                	sd	s2,96(sp)
+ 4e6:	ecce                	sd	s3,88(sp)
+ 4e8:	e8d2                	sd	s4,80(sp)
+ 4ea:	e4d6                	sd	s5,72(sp)
+ 4ec:	e0da                	sd	s6,64(sp)
+ 4ee:	fc5e                	sd	s7,56(sp)
+ 4f0:	f862                	sd	s8,48(sp)
+ 4f2:	f466                	sd	s9,40(sp)
+ 4f4:	f06a                	sd	s10,32(sp)
+ 4f6:	ec6e                	sd	s11,24(sp)
+ 4f8:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 4f0:	0005c903          	lbu	s2,0(a1)
- 4f4:	18090f63          	beqz	s2,692 <vprintf+0x1c0>
- 4f8:	8aaa                	mv	s5,a0
- 4fa:	8b32                	mv	s6,a2
- 4fc:	00158493          	addi	s1,a1,1
+ 4fa:	0005c903          	lbu	s2,0(a1)
+ 4fe:	18090f63          	beqz	s2,69c <vprintf+0x1c0>
+ 502:	8aaa                	mv	s5,a0
+ 504:	8b32                	mv	s6,a2
+ 506:	00158493          	addi	s1,a1,1
   state = 0;
- 500:	4981                	li	s3,0
+ 50a:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 502:	02500a13          	li	s4,37
- 506:	4c55                	li	s8,21
- 508:	00000c97          	auipc	s9,0x0
- 50c:	3c0c8c93          	addi	s9,s9,960 # 8c8 <malloc+0x132>
+ 50c:	02500a13          	li	s4,37
+ 510:	4c55                	li	s8,21
+ 512:	00000c97          	auipc	s9,0x0
+ 516:	3c6c8c93          	addi	s9,s9,966 # 8d8 <malloc+0x138>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 510:	02800d93          	li	s11,40
+ 51a:	02800d93          	li	s11,40
   putc(fd, 'x');
- 514:	4d41                	li	s10,16
+ 51e:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 516:	00000b97          	auipc	s7,0x0
- 51a:	40ab8b93          	addi	s7,s7,1034 # 920 <digits>
- 51e:	a839                	j	53c <vprintf+0x6a>
+ 520:	00000b97          	auipc	s7,0x0
+ 524:	410b8b93          	addi	s7,s7,1040 # 930 <digits>
+ 528:	a839                	j	546 <vprintf+0x6a>
         putc(fd, c);
- 520:	85ca                	mv	a1,s2
- 522:	8556                	mv	a0,s5
- 524:	00000097          	auipc	ra,0x0
- 528:	ee2080e7          	jalr	-286(ra) # 406 <putc>
- 52c:	a019                	j	532 <vprintf+0x60>
+ 52a:	85ca                	mv	a1,s2
+ 52c:	8556                	mv	a0,s5
+ 52e:	00000097          	auipc	ra,0x0
+ 532:	ee2080e7          	jalr	-286(ra) # 410 <putc>
+ 536:	a019                	j	53c <vprintf+0x60>
     } else if(state == '%'){
- 52e:	01498d63          	beq	s3,s4,548 <vprintf+0x76>
+ 538:	01498d63          	beq	s3,s4,552 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 532:	0485                	addi	s1,s1,1
- 534:	fff4c903          	lbu	s2,-1(s1)
- 538:	14090d63          	beqz	s2,692 <vprintf+0x1c0>
+ 53c:	0485                	addi	s1,s1,1
+ 53e:	fff4c903          	lbu	s2,-1(s1)
+ 542:	14090d63          	beqz	s2,69c <vprintf+0x1c0>
     if(state == 0){
- 53c:	fe0999e3          	bnez	s3,52e <vprintf+0x5c>
+ 546:	fe0999e3          	bnez	s3,538 <vprintf+0x5c>
       if(c == '%'){
- 540:	ff4910e3          	bne	s2,s4,520 <vprintf+0x4e>
+ 54a:	ff4910e3          	bne	s2,s4,52a <vprintf+0x4e>
         state = '%';
- 544:	89d2                	mv	s3,s4
- 546:	b7f5                	j	532 <vprintf+0x60>
+ 54e:	89d2                	mv	s3,s4
+ 550:	b7f5                	j	53c <vprintf+0x60>
       if(c == 'd'){
- 548:	11490c63          	beq	s2,s4,660 <vprintf+0x18e>
- 54c:	f9d9079b          	addiw	a5,s2,-99
- 550:	0ff7f793          	zext.b	a5,a5
- 554:	10fc6e63          	bltu	s8,a5,670 <vprintf+0x19e>
- 558:	f9d9079b          	addiw	a5,s2,-99
- 55c:	0ff7f713          	zext.b	a4,a5
- 560:	10ec6863          	bltu	s8,a4,670 <vprintf+0x19e>
- 564:	00271793          	slli	a5,a4,0x2
- 568:	97e6                	add	a5,a5,s9
- 56a:	439c                	lw	a5,0(a5)
- 56c:	97e6                	add	a5,a5,s9
- 56e:	8782                	jr	a5
+ 552:	11490c63          	beq	s2,s4,66a <vprintf+0x18e>
+ 556:	f9d9079b          	addiw	a5,s2,-99
+ 55a:	0ff7f793          	zext.b	a5,a5
+ 55e:	10fc6e63          	bltu	s8,a5,67a <vprintf+0x19e>
+ 562:	f9d9079b          	addiw	a5,s2,-99
+ 566:	0ff7f713          	zext.b	a4,a5
+ 56a:	10ec6863          	bltu	s8,a4,67a <vprintf+0x19e>
+ 56e:	00271793          	slli	a5,a4,0x2
+ 572:	97e6                	add	a5,a5,s9
+ 574:	439c                	lw	a5,0(a5)
+ 576:	97e6                	add	a5,a5,s9
+ 578:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 570:	008b0913          	addi	s2,s6,8
- 574:	4685                	li	a3,1
- 576:	4629                	li	a2,10
- 578:	000b2583          	lw	a1,0(s6)
- 57c:	8556                	mv	a0,s5
- 57e:	00000097          	auipc	ra,0x0
- 582:	eaa080e7          	jalr	-342(ra) # 428 <printint>
- 586:	8b4a                	mv	s6,s2
+ 57a:	008b0913          	addi	s2,s6,8
+ 57e:	4685                	li	a3,1
+ 580:	4629                	li	a2,10
+ 582:	000b2583          	lw	a1,0(s6)
+ 586:	8556                	mv	a0,s5
+ 588:	00000097          	auipc	ra,0x0
+ 58c:	eaa080e7          	jalr	-342(ra) # 432 <printint>
+ 590:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 588:	4981                	li	s3,0
- 58a:	b765                	j	532 <vprintf+0x60>
+ 592:	4981                	li	s3,0
+ 594:	b765                	j	53c <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 58c:	008b0913          	addi	s2,s6,8
- 590:	4681                	li	a3,0
- 592:	4629                	li	a2,10
- 594:	000b2583          	lw	a1,0(s6)
- 598:	8556                	mv	a0,s5
- 59a:	00000097          	auipc	ra,0x0
- 59e:	e8e080e7          	jalr	-370(ra) # 428 <printint>
- 5a2:	8b4a                	mv	s6,s2
+ 596:	008b0913          	addi	s2,s6,8
+ 59a:	4681                	li	a3,0
+ 59c:	4629                	li	a2,10
+ 59e:	000b2583          	lw	a1,0(s6)
+ 5a2:	8556                	mv	a0,s5
+ 5a4:	00000097          	auipc	ra,0x0
+ 5a8:	e8e080e7          	jalr	-370(ra) # 432 <printint>
+ 5ac:	8b4a                	mv	s6,s2
       state = 0;
- 5a4:	4981                	li	s3,0
- 5a6:	b771                	j	532 <vprintf+0x60>
+ 5ae:	4981                	li	s3,0
+ 5b0:	b771                	j	53c <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 5a8:	008b0913          	addi	s2,s6,8
- 5ac:	4681                	li	a3,0
- 5ae:	866a                	mv	a2,s10
- 5b0:	000b2583          	lw	a1,0(s6)
- 5b4:	8556                	mv	a0,s5
- 5b6:	00000097          	auipc	ra,0x0
- 5ba:	e72080e7          	jalr	-398(ra) # 428 <printint>
- 5be:	8b4a                	mv	s6,s2
+ 5b2:	008b0913          	addi	s2,s6,8
+ 5b6:	4681                	li	a3,0
+ 5b8:	866a                	mv	a2,s10
+ 5ba:	000b2583          	lw	a1,0(s6)
+ 5be:	8556                	mv	a0,s5
+ 5c0:	00000097          	auipc	ra,0x0
+ 5c4:	e72080e7          	jalr	-398(ra) # 432 <printint>
+ 5c8:	8b4a                	mv	s6,s2
       state = 0;
- 5c0:	4981                	li	s3,0
- 5c2:	bf85                	j	532 <vprintf+0x60>
+ 5ca:	4981                	li	s3,0
+ 5cc:	bf85                	j	53c <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 5c4:	008b0793          	addi	a5,s6,8
- 5c8:	f8f43423          	sd	a5,-120(s0)
- 5cc:	000b3983          	ld	s3,0(s6)
+ 5ce:	008b0793          	addi	a5,s6,8
+ 5d2:	f8f43423          	sd	a5,-120(s0)
+ 5d6:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 5d0:	03000593          	li	a1,48
- 5d4:	8556                	mv	a0,s5
- 5d6:	00000097          	auipc	ra,0x0
- 5da:	e30080e7          	jalr	-464(ra) # 406 <putc>
+ 5da:	03000593          	li	a1,48
+ 5de:	8556                	mv	a0,s5
+ 5e0:	00000097          	auipc	ra,0x0
+ 5e4:	e30080e7          	jalr	-464(ra) # 410 <putc>
   putc(fd, 'x');
- 5de:	07800593          	li	a1,120
- 5e2:	8556                	mv	a0,s5
- 5e4:	00000097          	auipc	ra,0x0
- 5e8:	e22080e7          	jalr	-478(ra) # 406 <putc>
- 5ec:	896a                	mv	s2,s10
+ 5e8:	07800593          	li	a1,120
+ 5ec:	8556                	mv	a0,s5
+ 5ee:	00000097          	auipc	ra,0x0
+ 5f2:	e22080e7          	jalr	-478(ra) # 410 <putc>
+ 5f6:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 5ee:	03c9d793          	srli	a5,s3,0x3c
- 5f2:	97de                	add	a5,a5,s7
- 5f4:	0007c583          	lbu	a1,0(a5)
- 5f8:	8556                	mv	a0,s5
- 5fa:	00000097          	auipc	ra,0x0
- 5fe:	e0c080e7          	jalr	-500(ra) # 406 <putc>
+ 5f8:	03c9d793          	srli	a5,s3,0x3c
+ 5fc:	97de                	add	a5,a5,s7
+ 5fe:	0007c583          	lbu	a1,0(a5)
+ 602:	8556                	mv	a0,s5
+ 604:	00000097          	auipc	ra,0x0
+ 608:	e0c080e7          	jalr	-500(ra) # 410 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 602:	0992                	slli	s3,s3,0x4
- 604:	397d                	addiw	s2,s2,-1
- 606:	fe0914e3          	bnez	s2,5ee <vprintf+0x11c>
+ 60c:	0992                	slli	s3,s3,0x4
+ 60e:	397d                	addiw	s2,s2,-1
+ 610:	fe0914e3          	bnez	s2,5f8 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 60a:	f8843b03          	ld	s6,-120(s0)
+ 614:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 60e:	4981                	li	s3,0
- 610:	b70d                	j	532 <vprintf+0x60>
+ 618:	4981                	li	s3,0
+ 61a:	b70d                	j	53c <vprintf+0x60>
         s = va_arg(ap, char*);
- 612:	008b0913          	addi	s2,s6,8
- 616:	000b3983          	ld	s3,0(s6)
+ 61c:	008b0913          	addi	s2,s6,8
+ 620:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 61a:	02098163          	beqz	s3,63c <vprintf+0x16a>
+ 624:	02098163          	beqz	s3,646 <vprintf+0x16a>
         while(*s != 0){
- 61e:	0009c583          	lbu	a1,0(s3)
- 622:	c5ad                	beqz	a1,68c <vprintf+0x1ba>
+ 628:	0009c583          	lbu	a1,0(s3)
+ 62c:	c5ad                	beqz	a1,696 <vprintf+0x1ba>
           putc(fd, *s);
- 624:	8556                	mv	a0,s5
- 626:	00000097          	auipc	ra,0x0
- 62a:	de0080e7          	jalr	-544(ra) # 406 <putc>
+ 62e:	8556                	mv	a0,s5
+ 630:	00000097          	auipc	ra,0x0
+ 634:	de0080e7          	jalr	-544(ra) # 410 <putc>
           s++;
- 62e:	0985                	addi	s3,s3,1
+ 638:	0985                	addi	s3,s3,1
         while(*s != 0){
- 630:	0009c583          	lbu	a1,0(s3)
- 634:	f9e5                	bnez	a1,624 <vprintf+0x152>
+ 63a:	0009c583          	lbu	a1,0(s3)
+ 63e:	f9e5                	bnez	a1,62e <vprintf+0x152>
         s = va_arg(ap, char*);
- 636:	8b4a                	mv	s6,s2
+ 640:	8b4a                	mv	s6,s2
       state = 0;
- 638:	4981                	li	s3,0
- 63a:	bde5                	j	532 <vprintf+0x60>
+ 642:	4981                	li	s3,0
+ 644:	bde5                	j	53c <vprintf+0x60>
           s = "(null)";
- 63c:	00000997          	auipc	s3,0x0
- 640:	28498993          	addi	s3,s3,644 # 8c0 <malloc+0x12a>
+ 646:	00000997          	auipc	s3,0x0
+ 64a:	28a98993          	addi	s3,s3,650 # 8d0 <malloc+0x130>
         while(*s != 0){
- 644:	85ee                	mv	a1,s11
- 646:	bff9                	j	624 <vprintf+0x152>
+ 64e:	85ee                	mv	a1,s11
+ 650:	bff9                	j	62e <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 648:	008b0913          	addi	s2,s6,8
- 64c:	000b4583          	lbu	a1,0(s6)
- 650:	8556                	mv	a0,s5
- 652:	00000097          	auipc	ra,0x0
- 656:	db4080e7          	jalr	-588(ra) # 406 <putc>
- 65a:	8b4a                	mv	s6,s2
+ 652:	008b0913          	addi	s2,s6,8
+ 656:	000b4583          	lbu	a1,0(s6)
+ 65a:	8556                	mv	a0,s5
+ 65c:	00000097          	auipc	ra,0x0
+ 660:	db4080e7          	jalr	-588(ra) # 410 <putc>
+ 664:	8b4a                	mv	s6,s2
       state = 0;
- 65c:	4981                	li	s3,0
- 65e:	bdd1                	j	532 <vprintf+0x60>
+ 666:	4981                	li	s3,0
+ 668:	bdd1                	j	53c <vprintf+0x60>
         putc(fd, c);
- 660:	85d2                	mv	a1,s4
- 662:	8556                	mv	a0,s5
- 664:	00000097          	auipc	ra,0x0
- 668:	da2080e7          	jalr	-606(ra) # 406 <putc>
+ 66a:	85d2                	mv	a1,s4
+ 66c:	8556                	mv	a0,s5
+ 66e:	00000097          	auipc	ra,0x0
+ 672:	da2080e7          	jalr	-606(ra) # 410 <putc>
       state = 0;
- 66c:	4981                	li	s3,0
- 66e:	b5d1                	j	532 <vprintf+0x60>
+ 676:	4981                	li	s3,0
+ 678:	b5d1                	j	53c <vprintf+0x60>
         putc(fd, '%');
- 670:	85d2                	mv	a1,s4
- 672:	8556                	mv	a0,s5
- 674:	00000097          	auipc	ra,0x0
- 678:	d92080e7          	jalr	-622(ra) # 406 <putc>
+ 67a:	85d2                	mv	a1,s4
+ 67c:	8556                	mv	a0,s5
+ 67e:	00000097          	auipc	ra,0x0
+ 682:	d92080e7          	jalr	-622(ra) # 410 <putc>
         putc(fd, c);
- 67c:	85ca                	mv	a1,s2
- 67e:	8556                	mv	a0,s5
- 680:	00000097          	auipc	ra,0x0
- 684:	d86080e7          	jalr	-634(ra) # 406 <putc>
+ 686:	85ca                	mv	a1,s2
+ 688:	8556                	mv	a0,s5
+ 68a:	00000097          	auipc	ra,0x0
+ 68e:	d86080e7          	jalr	-634(ra) # 410 <putc>
       state = 0;
- 688:	4981                	li	s3,0
- 68a:	b565                	j	532 <vprintf+0x60>
+ 692:	4981                	li	s3,0
+ 694:	b565                	j	53c <vprintf+0x60>
         s = va_arg(ap, char*);
- 68c:	8b4a                	mv	s6,s2
+ 696:	8b4a                	mv	s6,s2
       state = 0;
- 68e:	4981                	li	s3,0
- 690:	b54d                	j	532 <vprintf+0x60>
+ 698:	4981                	li	s3,0
+ 69a:	b54d                	j	53c <vprintf+0x60>
     }
   }
 }
- 692:	70e6                	ld	ra,120(sp)
- 694:	7446                	ld	s0,112(sp)
- 696:	74a6                	ld	s1,104(sp)
- 698:	7906                	ld	s2,96(sp)
- 69a:	69e6                	ld	s3,88(sp)
- 69c:	6a46                	ld	s4,80(sp)
- 69e:	6aa6                	ld	s5,72(sp)
- 6a0:	6b06                	ld	s6,64(sp)
- 6a2:	7be2                	ld	s7,56(sp)
- 6a4:	7c42                	ld	s8,48(sp)
- 6a6:	7ca2                	ld	s9,40(sp)
- 6a8:	7d02                	ld	s10,32(sp)
- 6aa:	6de2                	ld	s11,24(sp)
- 6ac:	6109                	addi	sp,sp,128
- 6ae:	8082                	ret
-
-00000000000006b0 <fprintf>:
+ 69c:	70e6                	ld	ra,120(sp)
+ 69e:	7446                	ld	s0,112(sp)
+ 6a0:	74a6                	ld	s1,104(sp)
+ 6a2:	7906                	ld	s2,96(sp)
+ 6a4:	69e6                	ld	s3,88(sp)
+ 6a6:	6a46                	ld	s4,80(sp)
+ 6a8:	6aa6                	ld	s5,72(sp)
+ 6aa:	6b06                	ld	s6,64(sp)
+ 6ac:	7be2                	ld	s7,56(sp)
+ 6ae:	7c42                	ld	s8,48(sp)
+ 6b0:	7ca2                	ld	s9,40(sp)
+ 6b2:	7d02                	ld	s10,32(sp)
+ 6b4:	6de2                	ld	s11,24(sp)
+ 6b6:	6109                	addi	sp,sp,128
+ 6b8:	8082                	ret
+
+00000000000006ba <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 6b0:	715d                	addi	sp,sp,-80
- 6b2:	ec06                	sd	ra,24(sp)
- 6b4:	e822                	sd	s0,16(sp)
- 6b6:	1000                	addi	s0,sp,32
- 6b8:	e010                	sd	a2,0(s0)
- 6ba:	e414                	sd	a3,8(s0)
- 6bc:	e818                	sd	a4,16(s0)
- 6be:	ec1c                	sd	a5,24(s0)
- 6c0:	03043023          	sd	a6,32(s0)
- 6c4:	03143423          	sd	a7,40(s0)
+ 6ba:	715d                	addi	sp,sp,-80
+ 6bc:	ec06                	sd	ra,24(sp)
+ 6be:	e822                	sd	s0,16(sp)
+ 6c0:	1000                	addi	s0,sp,32
+ 6c2:	e010                	sd	a2,0(s0)
+ 6c4:	e414                	sd	a3,8(s0)
+ 6c6:	e818                	sd	a4,16(s0)
+ 6c8:	ec1c                	sd	a5,24(s0)
+ 6ca:	03043023          	sd	a6,32(s0)
+ 6ce:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6c8:	8622                	mv	a2,s0
- 6ca:	fe843423          	sd	s0,-24(s0)
+ 6d2:	8622                	mv	a2,s0
+ 6d4:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 6ce:	00000097          	auipc	ra,0x0
- 6d2:	e04080e7          	jalr	-508(ra) # 4d2 <vprintf>
+ 6d8:	00000097          	auipc	ra,0x0
+ 6dc:	e04080e7          	jalr	-508(ra) # 4dc <vprintf>
 }
- 6d6:	60e2                	ld	ra,24(sp)
- 6d8:	6442                	ld	s0,16(sp)
- 6da:	6161                	addi	sp,sp,80
- 6dc:	8082                	ret
+ 6e0:	60e2                	ld	ra,24(sp)
+ 6e2:	6442                	ld	s0,16(sp)
+ 6e4:	6161                	addi	sp,sp,80
+ 6e6:	8082                	ret
 
-00000000000006de <printf>:
+00000000000006e8 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 6de:	711d                	addi	sp,sp,-96
- 6e0:	ec06                	sd	ra,24(sp)
- 6e2:	e822                	sd	s0,16(sp)
- 6e4:	1000                	addi	s0,sp,32
- 6e6:	e40c                	sd	a1,8(s0)
- 6e8:	e810                	sd	a2,16(s0)
- 6ea:	ec14                	sd	a3,24(s0)
- 6ec:	f018                	sd	a4,32(s0)
- 6ee:	f41c                	sd	a5,40(s0)
- 6f0:	03043823          	sd	a6,48(s0)
- 6f4:	03143c23          	sd	a7,56(s0)
+ 6e8:	711d                	addi	sp,sp,-96
+ 6ea:	ec06                	sd	ra,24(sp)
+ 6ec:	e822                	sd	s0,16(sp)
+ 6ee:	1000                	addi	s0,sp,32
+ 6f0:	e40c                	sd	a1,8(s0)
+ 6f2:	e810                	sd	a2,16(s0)
+ 6f4:	ec14                	sd	a3,24(s0)
+ 6f6:	f018                	sd	a4,32(s0)
+ 6f8:	f41c                	sd	a5,40(s0)
+ 6fa:	03043823          	sd	a6,48(s0)
+ 6fe:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 6f8:	00840613          	addi	a2,s0,8
- 6fc:	fec43423          	sd	a2,-24(s0)
+ 702:	00840613          	addi	a2,s0,8
+ 706:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 700:	85aa                	mv	a1,a0
- 702:	4505                	li	a0,1
- 704:	00000097          	auipc	ra,0x0
- 708:	dce080e7          	jalr	-562(ra) # 4d2 <vprintf>
+ 70a:	85aa                	mv	a1,a0
+ 70c:	4505                	li	a0,1
+ 70e:	00000097          	auipc	ra,0x0
+ 712:	dce080e7          	jalr	-562(ra) # 4dc <vprintf>
 }
- 70c:	60e2                	ld	ra,24(sp)
- 70e:	6442                	ld	s0,16(sp)
- 710:	6125                	addi	sp,sp,96
- 712:	8082                	ret
+ 716:	60e2                	ld	ra,24(sp)
+ 718:	6442                	ld	s0,16(sp)
+ 71a:	6125                	addi	sp,sp,96
+ 71c:	8082                	ret
 
-0000000000000714 <free>:
+000000000000071e <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 714:	1141                	addi	sp,sp,-16
- 716:	e422                	sd	s0,8(sp)
- 718:	0800                	addi	s0,sp,16
+ 71e:	1141                	addi	sp,sp,-16
+ 720:	e422                	sd	s0,8(sp)
+ 722:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 71a:	ff050693          	addi	a3,a0,-16
+ 724:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 71e:	00000797          	auipc	a5,0x0
- 722:	21a7b783          	ld	a5,538(a5) # 938 <freep>
- 726:	a02d                	j	750 <free+0x3c>
+ 728:	00000797          	auipc	a5,0x0
+ 72c:	2207b783          	ld	a5,544(a5) # 948 <freep>
+ 730:	a02d                	j	75a <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 728:	4618                	lw	a4,8(a2)
- 72a:	9f2d                	addw	a4,a4,a1
- 72c:	fee52c23          	sw	a4,-8(a0)
+ 732:	4618                	lw	a4,8(a2)
+ 734:	9f2d                	addw	a4,a4,a1
+ 736:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 730:	6398                	ld	a4,0(a5)
- 732:	6310                	ld	a2,0(a4)
- 734:	a83d                	j	772 <free+0x5e>
+ 73a:	6398                	ld	a4,0(a5)
+ 73c:	6310                	ld	a2,0(a4)
+ 73e:	a83d                	j	77c <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 736:	ff852703          	lw	a4,-8(a0)
- 73a:	9f31                	addw	a4,a4,a2
- 73c:	c798                	sw	a4,8(a5)
+ 740:	ff852703          	lw	a4,-8(a0)
+ 744:	9f31                	addw	a4,a4,a2
+ 746:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 73e:	ff053683          	ld	a3,-16(a0)
- 742:	a091                	j	786 <free+0x72>
+ 748:	ff053683          	ld	a3,-16(a0)
+ 74c:	a091                	j	790 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 744:	6398                	ld	a4,0(a5)
- 746:	00e7e463          	bltu	a5,a4,74e <free+0x3a>
- 74a:	00e6ea63          	bltu	a3,a4,75e <free+0x4a>
+ 74e:	6398                	ld	a4,0(a5)
+ 750:	00e7e463          	bltu	a5,a4,758 <free+0x3a>
+ 754:	00e6ea63          	bltu	a3,a4,768 <free+0x4a>
 {
- 74e:	87ba                	mv	a5,a4
+ 758:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 750:	fed7fae3          	bgeu	a5,a3,744 <free+0x30>
- 754:	6398                	ld	a4,0(a5)
- 756:	00e6e463          	bltu	a3,a4,75e <free+0x4a>
+ 75a:	fed7fae3          	bgeu	a5,a3,74e <free+0x30>
+ 75e:	6398                	ld	a4,0(a5)
+ 760:	00e6e463          	bltu	a3,a4,768 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 75a:	fee7eae3          	bltu	a5,a4,74e <free+0x3a>
+ 764:	fee7eae3          	bltu	a5,a4,758 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 75e:	ff852583          	lw	a1,-8(a0)
- 762:	6390                	ld	a2,0(a5)
- 764:	02059813          	slli	a6,a1,0x20
- 768:	01c85713          	srli	a4,a6,0x1c
- 76c:	9736                	add	a4,a4,a3
- 76e:	fae60de3          	beq	a2,a4,728 <free+0x14>
+ 768:	ff852583          	lw	a1,-8(a0)
+ 76c:	6390                	ld	a2,0(a5)
+ 76e:	02059813          	slli	a6,a1,0x20
+ 772:	01c85713          	srli	a4,a6,0x1c
+ 776:	9736                	add	a4,a4,a3
+ 778:	fae60de3          	beq	a2,a4,732 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 772:	fec53823          	sd	a2,-16(a0)
+ 77c:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 776:	4790                	lw	a2,8(a5)
- 778:	02061593          	slli	a1,a2,0x20
- 77c:	01c5d713          	srli	a4,a1,0x1c
- 780:	973e                	add	a4,a4,a5
- 782:	fae68ae3          	beq	a3,a4,736 <free+0x22>
+ 780:	4790                	lw	a2,8(a5)
+ 782:	02061593          	slli	a1,a2,0x20
+ 786:	01c5d713          	srli	a4,a1,0x1c
+ 78a:	973e                	add	a4,a4,a5
+ 78c:	fae68ae3          	beq	a3,a4,740 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 786:	e394                	sd	a3,0(a5)
+ 790:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 788:	00000717          	auipc	a4,0x0
- 78c:	1af73823          	sd	a5,432(a4) # 938 <freep>
+ 792:	00000717          	auipc	a4,0x0
+ 796:	1af73b23          	sd	a5,438(a4) # 948 <freep>
 }
- 790:	6422                	ld	s0,8(sp)
- 792:	0141                	addi	sp,sp,16
- 794:	8082                	ret
+ 79a:	6422                	ld	s0,8(sp)
+ 79c:	0141                	addi	sp,sp,16
+ 79e:	8082                	ret
 
-0000000000000796 <malloc>:
+00000000000007a0 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 796:	7139                	addi	sp,sp,-64
- 798:	fc06                	sd	ra,56(sp)
- 79a:	f822                	sd	s0,48(sp)
- 79c:	f426                	sd	s1,40(sp)
- 79e:	f04a                	sd	s2,32(sp)
- 7a0:	ec4e                	sd	s3,24(sp)
- 7a2:	e852                	sd	s4,16(sp)
- 7a4:	e456                	sd	s5,8(sp)
- 7a6:	e05a                	sd	s6,0(sp)
- 7a8:	0080                	addi	s0,sp,64
+ 7a0:	7139                	addi	sp,sp,-64
+ 7a2:	fc06                	sd	ra,56(sp)
+ 7a4:	f822                	sd	s0,48(sp)
+ 7a6:	f426                	sd	s1,40(sp)
+ 7a8:	f04a                	sd	s2,32(sp)
+ 7aa:	ec4e                	sd	s3,24(sp)
+ 7ac:	e852                	sd	s4,16(sp)
+ 7ae:	e456                	sd	s5,8(sp)
+ 7b0:	e05a                	sd	s6,0(sp)
+ 7b2:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 7aa:	02051493          	slli	s1,a0,0x20
- 7ae:	9081                	srli	s1,s1,0x20
- 7b0:	04bd                	addi	s1,s1,15
- 7b2:	8091                	srli	s1,s1,0x4
- 7b4:	00148a1b          	addiw	s4,s1,1
- 7b8:	0485                	addi	s1,s1,1
+ 7b4:	02051493          	slli	s1,a0,0x20
+ 7b8:	9081                	srli	s1,s1,0x20
+ 7ba:	04bd                	addi	s1,s1,15
+ 7bc:	8091                	srli	s1,s1,0x4
+ 7be:	00148a1b          	addiw	s4,s1,1
+ 7c2:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 7ba:	00000517          	auipc	a0,0x0
- 7be:	17e53503          	ld	a0,382(a0) # 938 <freep>
- 7c2:	c515                	beqz	a0,7ee <malloc+0x58>
+ 7c4:	00000517          	auipc	a0,0x0
+ 7c8:	18453503          	ld	a0,388(a0) # 948 <freep>
+ 7cc:	c515                	beqz	a0,7f8 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 7c4:	611c                	ld	a5,0(a0)
+ 7ce:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 7c6:	4798                	lw	a4,8(a5)
- 7c8:	04977163          	bgeu	a4,s1,80a <malloc+0x74>
- 7cc:	89d2                	mv	s3,s4
- 7ce:	000a071b          	sext.w	a4,s4
- 7d2:	6685                	lui	a3,0x1
- 7d4:	00d77363          	bgeu	a4,a3,7da <malloc+0x44>
- 7d8:	6985                	lui	s3,0x1
- 7da:	00098b1b          	sext.w	s6,s3
+ 7d0:	4798                	lw	a4,8(a5)
+ 7d2:	04977163          	bgeu	a4,s1,814 <malloc+0x74>
+ 7d6:	89d2                	mv	s3,s4
+ 7d8:	000a071b          	sext.w	a4,s4
+ 7dc:	6685                	lui	a3,0x1
+ 7de:	00d77363          	bgeu	a4,a3,7e4 <malloc+0x44>
+ 7e2:	6985                	lui	s3,0x1
+ 7e4:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 7de:	0049999b          	slliw	s3,s3,0x4
+ 7e8:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 7e2:	00000917          	auipc	s2,0x0
- 7e6:	15690913          	addi	s2,s2,342 # 938 <freep>
+ 7ec:	00000917          	auipc	s2,0x0
+ 7f0:	15c90913          	addi	s2,s2,348 # 948 <freep>
   if(p == (char*)-1)
- 7ea:	5afd                	li	s5,-1
- 7ec:	a8a5                	j	864 <malloc+0xce>
+ 7f4:	5afd                	li	s5,-1
+ 7f6:	a8a5                	j	86e <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 7ee:	00000797          	auipc	a5,0x0
- 7f2:	14a78793          	addi	a5,a5,330 # 938 <freep>
- 7f6:	00000717          	auipc	a4,0x0
- 7fa:	14a70713          	addi	a4,a4,330 # 940 <base>
- 7fe:	e398                	sd	a4,0(a5)
- 800:	e798                	sd	a4,8(a5)
+ 7f8:	00000797          	auipc	a5,0x0
+ 7fc:	15078793          	addi	a5,a5,336 # 948 <freep>
+ 800:	00000717          	auipc	a4,0x0
+ 804:	15070713          	addi	a4,a4,336 # 950 <base>
+ 808:	e398                	sd	a4,0(a5)
+ 80a:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 802:	0007a823          	sw	zero,16(a5)
+ 80c:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 806:	87ba                	mv	a5,a4
- 808:	b7d1                	j	7cc <malloc+0x36>
+ 810:	87ba                	mv	a5,a4
+ 812:	b7d1                	j	7d6 <malloc+0x36>
       if(p->s.size == nunits)
- 80a:	02e48c63          	beq	s1,a4,842 <malloc+0xac>
+ 814:	02e48c63          	beq	s1,a4,84c <malloc+0xac>
         p->s.size -= nunits;
- 80e:	4147073b          	subw	a4,a4,s4
- 812:	c798                	sw	a4,8(a5)
+ 818:	4147073b          	subw	a4,a4,s4
+ 81c:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 814:	02071693          	slli	a3,a4,0x20
- 818:	01c6d713          	srli	a4,a3,0x1c
- 81c:	97ba                	add	a5,a5,a4
+ 81e:	02071693          	slli	a3,a4,0x20
+ 822:	01c6d713          	srli	a4,a3,0x1c
+ 826:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 81e:	0147a423          	sw	s4,8(a5)
+ 828:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 822:	00000717          	auipc	a4,0x0
- 826:	10a73b23          	sd	a0,278(a4) # 938 <freep>
+ 82c:	00000717          	auipc	a4,0x0
+ 830:	10a73e23          	sd	a0,284(a4) # 948 <freep>
       return (void*)(p + 1);
- 82a:	01078513          	addi	a0,a5,16
+ 834:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 82e:	70e2                	ld	ra,56(sp)
- 830:	7442                	ld	s0,48(sp)
- 832:	74a2                	ld	s1,40(sp)
- 834:	7902                	ld	s2,32(sp)
- 836:	69e2                	ld	s3,24(sp)
- 838:	6a42                	ld	s4,16(sp)
- 83a:	6aa2                	ld	s5,8(sp)
- 83c:	6b02                	ld	s6,0(sp)
- 83e:	6121                	addi	sp,sp,64
- 840:	8082                	ret
+ 838:	70e2                	ld	ra,56(sp)
+ 83a:	7442                	ld	s0,48(sp)
+ 83c:	74a2                	ld	s1,40(sp)
+ 83e:	7902                	ld	s2,32(sp)
+ 840:	69e2                	ld	s3,24(sp)
+ 842:	6a42                	ld	s4,16(sp)
+ 844:	6aa2                	ld	s5,8(sp)
+ 846:	6b02                	ld	s6,0(sp)
+ 848:	6121                	addi	sp,sp,64
+ 84a:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 842:	6398                	ld	a4,0(a5)
- 844:	e118                	sd	a4,0(a0)
- 846:	bff1                	j	822 <malloc+0x8c>
+ 84c:	6398                	ld	a4,0(a5)
+ 84e:	e118                	sd	a4,0(a0)
+ 850:	bff1                	j	82c <malloc+0x8c>
   hp->s.size = nu;
- 848:	01652423          	sw	s6,8(a0)
+ 852:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 84c:	0541                	addi	a0,a0,16
- 84e:	00000097          	auipc	ra,0x0
- 852:	ec6080e7          	jalr	-314(ra) # 714 <free>
+ 856:	0541                	addi	a0,a0,16
+ 858:	00000097          	auipc	ra,0x0
+ 85c:	ec6080e7          	jalr	-314(ra) # 71e <free>
   return freep;
- 856:	00093503          	ld	a0,0(s2)
+ 860:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 85a:	d971                	beqz	a0,82e <malloc+0x98>
+ 864:	d971                	beqz	a0,838 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 85c:	611c                	ld	a5,0(a0)
+ 866:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 85e:	4798                	lw	a4,8(a5)
- 860:	fa9775e3          	bgeu	a4,s1,80a <malloc+0x74>
+ 868:	4798                	lw	a4,8(a5)
+ 86a:	fa9775e3          	bgeu	a4,s1,814 <malloc+0x74>
     if(p == freep)
- 864:	00093703          	ld	a4,0(s2)
- 868:	853e                	mv	a0,a5
- 86a:	fef719e3          	bne	a4,a5,85c <malloc+0xc6>
+ 86e:	00093703          	ld	a4,0(s2)
+ 872:	853e                	mv	a0,a5
+ 874:	fef719e3          	bne	a4,a5,866 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 86e:	854e                	mv	a0,s3
- 870:	00000097          	auipc	ra,0x0
- 874:	b2a080e7          	jalr	-1238(ra) # 39a <sbrk>
+ 878:	854e                	mv	a0,s3
+ 87a:	00000097          	auipc	ra,0x0
+ 87e:	b20080e7          	jalr	-1248(ra) # 39a <sbrk>
   if(p == (char*)-1)
- 878:	fd5518e3          	bne	a0,s5,848 <malloc+0xb2>
+ 882:	fd5518e3          	bne	a0,s5,852 <malloc+0xb2>
         return 0;
- 87c:	4501                	li	a0,0
- 87e:	bf45                	j	82e <malloc+0x98>
+ 886:	4501                	li	a0,0
+ 888:	bf45                	j	838 <malloc+0x98>
diff --git a/xv6-user/test.sym b/xv6-user/test.sym
index 095dc9b..0ad96fb 100644
--- a/xv6-user/test.sym
+++ b/xv6-user/test.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-0000000000000880 .rodata
-0000000000000938 .bss
+0000000000000890 .rodata
+0000000000000948 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-0000000000000406 putc
-0000000000000428 printint
-0000000000000920 digits
+0000000000000410 putc
+0000000000000432 printint
+0000000000000930 digits
 0000000000000000 umalloc.c
-0000000000000938 freep
-0000000000000940 base
+0000000000000948 freep
+0000000000000950 base
 000000000000005e strcpy
-00000000000006de printf
-0000000000001131 __global_pointer$
+00000000000006e8 printf
+0000000000001141 __global_pointer$
 00000000000003ba dev
 0000000000000264 memmove
+0000000000000406 times
 00000000000003da trace
 0000000000000144 gets
-0000000000000931 __SDATA_BEGIN__
+0000000000000941 __SDATA_BEGIN__
 0000000000000390 getpid
 00000000000002f6 memcpy
-0000000000000796 malloc
+00000000000007a0 malloc
 00000000000003d2 remove
 00000000000003a2 sleep
 00000000000003e2 sysinfo
@@ -42,31 +43,31 @@
 00000000000003ea rename
 000000000000033c write
 000000000000036a fstat
-00000000000006b0 fprintf
+00000000000006ba fprintf
 0000000000000350 kill
 000000000000007a strcat
-00000000000004d2 vprintf
+00000000000004dc vprintf
 000000000000037e chdir
 0000000000000358 exec
 0000000000000320 wait
 0000000000000332 read
 00000000000002bc memcmp
 000000000000030e fork
-0000000000000950 __BSS_END__
+0000000000000960 __BSS_END__
 000000000000039a sbrk
 00000000000003b2 test_proc
 00000000000003aa uptime
-0000000000000931 __bss_start
+0000000000000941 __bss_start
 00000000000000fe memset
 0000000000000000 main
 00000000000000a8 strcmp
 00000000000003f2 shutdown
 0000000000000388 dup
 00000000000003ca getcwd
-0000000000000931 __DATA_BEGIN__
+0000000000000941 __DATA_BEGIN__
 00000000000001be stat
-0000000000000931 _edata
-0000000000000950 _end
+0000000000000941 _edata
+0000000000000960 _end
 0000000000000316 exit
 0000000000000204 atoi
 00000000000000d4 strlen
@@ -74,4 +75,4 @@
 0000000000000120 strchr
 0000000000000374 mkdir
 0000000000000346 close
-0000000000000714 free
+000000000000071e free
diff --git a/xv6-user/usertests.asm b/xv6-user/usertests.asm
index 9f89f9a..e6572a7 100644
--- a/xv6-user/usertests.asm
+++ b/xv6-user/usertests.asm
@@ -52,9 +52,9 @@ copyinstr1(char *s)
       printf("open(%p) returned %d, not -1\n", addr, fd);
       3c:	862a                	mv	a2,a0
       3e:	00005517          	auipc	a0,0x5
-      42:	e3250513          	addi	a0,a0,-462 # 4e70 <malloc+0xec>
+      42:	e3a50513          	addi	a0,a0,-454 # 4e78 <malloc+0xea>
       46:	00005097          	auipc	ra,0x5
-      4a:	c86080e7          	jalr	-890(ra) # 4ccc <printf>
+      4a:	c90080e7          	jalr	-880(ra) # 4cd6 <printf>
       exit(1);
       4e:	4505                	li	a0,1
       50:	00005097          	auipc	ra,0x5
@@ -118,15 +118,15 @@ validatetest(char *s)
       printf("%s: link should not succeed\n", s);
       a2:	85da                	mv	a1,s6
       a4:	00005517          	auipc	a0,0x5
-      a8:	dec50513          	addi	a0,a0,-532 # 4e90 <malloc+0x10c>
+      a8:	df450513          	addi	a0,a0,-524 # 4e98 <malloc+0x10a>
       ac:	00005097          	auipc	ra,0x5
-      b0:	c20080e7          	jalr	-992(ra) # 4ccc <printf>
+      b0:	c2a080e7          	jalr	-982(ra) # 4cd6 <printf>
       printf("bad string:[%s]\n", (char*)p);
       b4:	85a6                	mv	a1,s1
       b6:	00005517          	auipc	a0,0x5
-      ba:	dfa50513          	addi	a0,a0,-518 # 4eb0 <malloc+0x12c>
+      ba:	e0250513          	addi	a0,a0,-510 # 4eb8 <malloc+0x12a>
       be:	00005097          	auipc	ra,0x5
-      c2:	c0e080e7          	jalr	-1010(ra) # 4ccc <printf>
+      c2:	c18080e7          	jalr	-1000(ra) # 4cd6 <printf>
       exit(1);
       c6:	4505                	li	a0,1
       c8:	00005097          	auipc	ra,0x5
@@ -140,9 +140,9 @@ bsstest(char *s)
 
   for(i = 0; i < sizeof(uninit); i++){
       d0:	00008797          	auipc	a5,0x8
-      d4:	0b878793          	addi	a5,a5,184 # 8188 <uninit>
+      d4:	0c078793          	addi	a5,a5,192 # 8190 <uninit>
       d8:	0000a697          	auipc	a3,0xa
-      dc:	7c068693          	addi	a3,a3,1984 # a898 <buf>
+      dc:	7c868693          	addi	a3,a3,1992 # a8a0 <buf>
     if(uninit[i] != '\0'){
       e0:	0007c703          	lbu	a4,0(a5)
       e4:	e709                	bnez	a4,ee <bsstest+0x1e>
@@ -158,9 +158,9 @@ bsstest(char *s)
       printf("%s: bss test failed\n", s);
       f6:	85aa                	mv	a1,a0
       f8:	00005517          	auipc	a0,0x5
-      fc:	dd050513          	addi	a0,a0,-560 # 4ec8 <malloc+0x144>
+      fc:	dd850513          	addi	a0,a0,-552 # 4ed0 <malloc+0x142>
      100:	00005097          	auipc	ra,0x5
-     104:	bcc080e7          	jalr	-1076(ra) # 4ccc <printf>
+     104:	bd6080e7          	jalr	-1066(ra) # 4cd6 <printf>
       exit(1);
      108:	4505                	li	a0,1
      10a:	00004097          	auipc	ra,0x4
@@ -177,7 +177,7 @@ bsstest(char *s)
   fd = open("echo", 0);
      11e:	4581                	li	a1,0
      120:	00005517          	auipc	a0,0x5
-     124:	dc050513          	addi	a0,a0,-576 # 4ee0 <malloc+0x15c>
+     124:	dc850513          	addi	a0,a0,-568 # 4ee8 <malloc+0x15a>
      128:	00005097          	auipc	ra,0x5
      12c:	826080e7          	jalr	-2010(ra) # 494e <open>
   if(fd < 0){
@@ -188,7 +188,7 @@ bsstest(char *s)
   fd = open("doesnotexist", 0);
      13c:	4581                	li	a1,0
      13e:	00005517          	auipc	a0,0x5
-     142:	dc250513          	addi	a0,a0,-574 # 4f00 <malloc+0x17c>
+     142:	dca50513          	addi	a0,a0,-566 # 4f08 <malloc+0x17a>
      146:	00005097          	auipc	ra,0x5
      14a:	808080e7          	jalr	-2040(ra) # 494e <open>
   if(fd >= 0){
@@ -202,9 +202,9 @@ bsstest(char *s)
     printf("%s: open echo failed!\n", s);
      15c:	85a6                	mv	a1,s1
      15e:	00005517          	auipc	a0,0x5
-     162:	d8a50513          	addi	a0,a0,-630 # 4ee8 <malloc+0x164>
+     162:	d9250513          	addi	a0,a0,-622 # 4ef0 <malloc+0x162>
      166:	00005097          	auipc	ra,0x5
-     16a:	b66080e7          	jalr	-1178(ra) # 4ccc <printf>
+     16a:	b70080e7          	jalr	-1168(ra) # 4cd6 <printf>
     exit(1);
      16e:	4505                	li	a0,1
      170:	00004097          	auipc	ra,0x4
@@ -212,9 +212,9 @@ bsstest(char *s)
     printf("%s: open doesnotexist succeeded!\n", s);
      178:	85a6                	mv	a1,s1
      17a:	00005517          	auipc	a0,0x5
-     17e:	d9650513          	addi	a0,a0,-618 # 4f10 <malloc+0x18c>
+     17e:	d9e50513          	addi	a0,a0,-610 # 4f18 <malloc+0x18a>
      182:	00005097          	auipc	ra,0x5
-     186:	b4a080e7          	jalr	-1206(ra) # 4ccc <printf>
+     186:	b54080e7          	jalr	-1196(ra) # 4cd6 <printf>
     exit(1);
      18a:	4505                	li	a0,1
      18c:	00004097          	auipc	ra,0x4
@@ -232,33 +232,33 @@ bsstest(char *s)
      1a2:	89aa                	mv	s3,a0
   remove("truncfile");
      1a4:	00005517          	auipc	a0,0x5
-     1a8:	d9450513          	addi	a0,a0,-620 # 4f38 <malloc+0x1b4>
+     1a8:	d9c50513          	addi	a0,a0,-612 # 4f40 <malloc+0x1b2>
      1ac:	00005097          	auipc	ra,0x5
      1b0:	814080e7          	jalr	-2028(ra) # 49c0 <remove>
   int fd1 = open("truncfile", O_CREATE|O_TRUNC|O_WRONLY);
      1b4:	60100593          	li	a1,1537
      1b8:	00005517          	auipc	a0,0x5
-     1bc:	d8050513          	addi	a0,a0,-640 # 4f38 <malloc+0x1b4>
+     1bc:	d8850513          	addi	a0,a0,-632 # 4f40 <malloc+0x1b2>
      1c0:	00004097          	auipc	ra,0x4
      1c4:	78e080e7          	jalr	1934(ra) # 494e <open>
      1c8:	84aa                	mv	s1,a0
   write(fd1, "abcd", 4);
      1ca:	4611                	li	a2,4
      1cc:	00005597          	auipc	a1,0x5
-     1d0:	d7c58593          	addi	a1,a1,-644 # 4f48 <malloc+0x1c4>
+     1d0:	d8458593          	addi	a1,a1,-636 # 4f50 <malloc+0x1c2>
      1d4:	00004097          	auipc	ra,0x4
      1d8:	756080e7          	jalr	1878(ra) # 492a <write>
   int fd2 = open("truncfile", O_TRUNC|O_WRONLY);
      1dc:	40100593          	li	a1,1025
      1e0:	00005517          	auipc	a0,0x5
-     1e4:	d5850513          	addi	a0,a0,-680 # 4f38 <malloc+0x1b4>
+     1e4:	d6050513          	addi	a0,a0,-672 # 4f40 <malloc+0x1b2>
      1e8:	00004097          	auipc	ra,0x4
      1ec:	766080e7          	jalr	1894(ra) # 494e <open>
      1f0:	892a                	mv	s2,a0
   int n = write(fd1, "x", 1);
      1f2:	4605                	li	a2,1
      1f4:	00005597          	auipc	a1,0x5
-     1f8:	d5c58593          	addi	a1,a1,-676 # 4f50 <malloc+0x1cc>
+     1f8:	d6458593          	addi	a1,a1,-668 # 4f58 <malloc+0x1ca>
      1fc:	8526                	mv	a0,s1
      1fe:	00004097          	auipc	ra,0x4
      202:	72c080e7          	jalr	1836(ra) # 492a <write>
@@ -267,7 +267,7 @@ bsstest(char *s)
      208:	02f51b63          	bne	a0,a5,23e <truncate2+0xaa>
   remove("truncfile");
      20c:	00005517          	auipc	a0,0x5
-     210:	d2c50513          	addi	a0,a0,-724 # 4f38 <malloc+0x1b4>
+     210:	d3450513          	addi	a0,a0,-716 # 4f40 <malloc+0x1b2>
      214:	00004097          	auipc	ra,0x4
      218:	7ac080e7          	jalr	1964(ra) # 49c0 <remove>
   close(fd1);
@@ -290,9 +290,9 @@ bsstest(char *s)
      23e:	862a                	mv	a2,a0
      240:	85ce                	mv	a1,s3
      242:	00005517          	auipc	a0,0x5
-     246:	d1650513          	addi	a0,a0,-746 # 4f58 <malloc+0x1d4>
+     246:	d1e50513          	addi	a0,a0,-738 # 4f60 <malloc+0x1d2>
      24a:	00005097          	auipc	ra,0x5
-     24e:	a82080e7          	jalr	-1406(ra) # 4ccc <printf>
+     24e:	a8c080e7          	jalr	-1396(ra) # 4cd6 <printf>
     exit(1);
      252:	4505                	li	a0,1
      254:	00004097          	auipc	ra,0x4
@@ -309,7 +309,7 @@ bsstest(char *s)
      268:	1800                	addi	s0,sp,48
   name[0] = 'a';
      26a:	00007797          	auipc	a5,0x7
-     26e:	e0e78793          	addi	a5,a5,-498 # 7078 <name>
+     26e:	e1678793          	addi	a5,a5,-490 # 7080 <name>
      272:	06100713          	li	a4,97
      276:	00e78023          	sb	a4,0(a5)
   name[2] = '\0';
@@ -335,7 +335,7 @@ bsstest(char *s)
      2a8:	ff3490e3          	bne	s1,s3,288 <createtest+0x2c>
   name[0] = 'a';
      2ac:	00007797          	auipc	a5,0x7
-     2b0:	dcc78793          	addi	a5,a5,-564 # 7078 <name>
+     2b0:	dd478793          	addi	a5,a5,-556 # 7080 <name>
      2b4:	06100713          	li	a4,97
      2b8:	00e78023          	sb	a4,0(a5)
   name[2] = '\0';
@@ -380,17 +380,17 @@ bsstest(char *s)
      306:	8baa                	mv	s7,a0
   remove("bigwrite");
      308:	00005517          	auipc	a0,0x5
-     30c:	c7850513          	addi	a0,a0,-904 # 4f80 <malloc+0x1fc>
+     30c:	c8050513          	addi	a0,a0,-896 # 4f88 <malloc+0x1fa>
      310:	00004097          	auipc	ra,0x4
      314:	6b0080e7          	jalr	1712(ra) # 49c0 <remove>
   for(sz = 499; sz < (MAXOPBLOCKS+2)*BSIZE; sz += 471){
      318:	1f300493          	li	s1,499
     fd = open("bigwrite", O_CREATE | O_RDWR);
      31c:	00005a97          	auipc	s5,0x5
-     320:	c64a8a93          	addi	s5,s5,-924 # 4f80 <malloc+0x1fc>
+     320:	c6ca8a93          	addi	s5,s5,-916 # 4f88 <malloc+0x1fa>
       int cc = write(fd, buf, sz);
      324:	0000aa17          	auipc	s4,0xa
-     328:	574a0a13          	addi	s4,s4,1396 # a898 <buf>
+     328:	57ca0a13          	addi	s4,s4,1404 # a8a0 <buf>
   for(sz = 499; sz < (MAXOPBLOCKS+2)*BSIZE; sz += 471){
      32c:	6b09                	lui	s6,0x2
      32e:	807b0b13          	addi	s6,s6,-2041 # 1807 <forkfork+0x49>
@@ -444,9 +444,9 @@ bsstest(char *s)
       printf("%s: cannot create bigwrite\n", s);
      39c:	85de                	mv	a1,s7
      39e:	00005517          	auipc	a0,0x5
-     3a2:	bf250513          	addi	a0,a0,-1038 # 4f90 <malloc+0x20c>
+     3a2:	bfa50513          	addi	a0,a0,-1030 # 4f98 <malloc+0x20a>
      3a6:	00005097          	auipc	ra,0x5
-     3aa:	926080e7          	jalr	-1754(ra) # 4ccc <printf>
+     3aa:	930080e7          	jalr	-1744(ra) # 4cd6 <printf>
       exit(1);
      3ae:	4505                	li	a0,1
      3b0:	00004097          	auipc	ra,0x4
@@ -458,9 +458,9 @@ bsstest(char *s)
      3bc:	864e                	mv	a2,s3
      3be:	85de                	mv	a1,s7
      3c0:	00005517          	auipc	a0,0x5
-     3c4:	bf050513          	addi	a0,a0,-1040 # 4fb0 <malloc+0x22c>
+     3c4:	bf850513          	addi	a0,a0,-1032 # 4fb8 <malloc+0x22a>
      3c8:	00005097          	auipc	ra,0x5
-     3cc:	904080e7          	jalr	-1788(ra) # 4ccc <printf>
+     3cc:	90e080e7          	jalr	-1778(ra) # 4cd6 <printf>
         exit(1);
      3d0:	4505                	li	a0,1
      3d2:	00004097          	auipc	ra,0x4
@@ -485,14 +485,14 @@ badwrite(char *s)
   
   remove("junk");
      3ea:	00005517          	auipc	a0,0x5
-     3ee:	bde50513          	addi	a0,a0,-1058 # 4fc8 <malloc+0x244>
+     3ee:	be650513          	addi	a0,a0,-1050 # 4fd0 <malloc+0x242>
      3f2:	00004097          	auipc	ra,0x4
      3f6:	5ce080e7          	jalr	1486(ra) # 49c0 <remove>
      3fa:	25800913          	li	s2,600
   for(int i = 0; i < assumed_free; i++){
     int fd = open("junk", O_CREATE|O_WRONLY);
      3fe:	00005997          	auipc	s3,0x5
-     402:	bca98993          	addi	s3,s3,-1078 # 4fc8 <malloc+0x244>
+     402:	bd298993          	addi	s3,s3,-1070 # 4fd0 <malloc+0x242>
     if(fd < 0){
       printf("open junk failed\n");
       exit(1);
@@ -529,7 +529,7 @@ badwrite(char *s)
   int fd = open("junk", O_CREATE|O_WRONLY);
      446:	20100593          	li	a1,513
      44a:	00005517          	auipc	a0,0x5
-     44e:	b7e50513          	addi	a0,a0,-1154 # 4fc8 <malloc+0x244>
+     44e:	b8650513          	addi	a0,a0,-1146 # 4fd0 <malloc+0x242>
      452:	00004097          	auipc	ra,0x4
      456:	4fc080e7          	jalr	1276(ra) # 494e <open>
      45a:	84aa                	mv	s1,a0
@@ -541,34 +541,34 @@ badwrite(char *s)
   if(write(fd, "x", 1) != 1){
      460:	4605                	li	a2,1
      462:	00005597          	auipc	a1,0x5
-     466:	aee58593          	addi	a1,a1,-1298 # 4f50 <malloc+0x1cc>
+     466:	af658593          	addi	a1,a1,-1290 # 4f58 <malloc+0x1ca>
      46a:	00004097          	auipc	ra,0x4
      46e:	4c0080e7          	jalr	1216(ra) # 492a <write>
      472:	4785                	li	a5,1
      474:	04f50963          	beq	a0,a5,4c6 <badwrite+0xec>
     printf("write failed\n");
      478:	00005517          	auipc	a0,0x5
-     47c:	b7050513          	addi	a0,a0,-1168 # 4fe8 <malloc+0x264>
+     47c:	b7850513          	addi	a0,a0,-1160 # 4ff0 <malloc+0x262>
      480:	00005097          	auipc	ra,0x5
-     484:	84c080e7          	jalr	-1972(ra) # 4ccc <printf>
+     484:	856080e7          	jalr	-1962(ra) # 4cd6 <printf>
     exit(1);
      488:	4505                	li	a0,1
      48a:	00004097          	auipc	ra,0x4
      48e:	47a080e7          	jalr	1146(ra) # 4904 <exit>
       printf("open junk failed\n");
      492:	00005517          	auipc	a0,0x5
-     496:	b3e50513          	addi	a0,a0,-1218 # 4fd0 <malloc+0x24c>
+     496:	b4650513          	addi	a0,a0,-1210 # 4fd8 <malloc+0x24a>
      49a:	00005097          	auipc	ra,0x5
-     49e:	832080e7          	jalr	-1998(ra) # 4ccc <printf>
+     49e:	83c080e7          	jalr	-1988(ra) # 4cd6 <printf>
       exit(1);
      4a2:	4505                	li	a0,1
      4a4:	00004097          	auipc	ra,0x4
      4a8:	460080e7          	jalr	1120(ra) # 4904 <exit>
     printf("open junk failed\n");
      4ac:	00005517          	auipc	a0,0x5
-     4b0:	b2450513          	addi	a0,a0,-1244 # 4fd0 <malloc+0x24c>
+     4b0:	b2c50513          	addi	a0,a0,-1236 # 4fd8 <malloc+0x24a>
      4b4:	00005097          	auipc	ra,0x5
-     4b8:	818080e7          	jalr	-2024(ra) # 4ccc <printf>
+     4b8:	822080e7          	jalr	-2014(ra) # 4cd6 <printf>
     exit(1);
      4bc:	4505                	li	a0,1
      4be:	00004097          	auipc	ra,0x4
@@ -580,7 +580,7 @@ badwrite(char *s)
      4cc:	46c080e7          	jalr	1132(ra) # 4934 <close>
   remove("junk");
      4d0:	00005517          	auipc	a0,0x5
-     4d4:	af850513          	addi	a0,a0,-1288 # 4fc8 <malloc+0x244>
+     4d4:	b0050513          	addi	a0,a0,-1280 # 4fd0 <malloc+0x242>
      4d8:	00004097          	auipc	ra,0x4
      4dc:	4e8080e7          	jalr	1256(ra) # 49c0 <remove>
 
@@ -612,7 +612,7 @@ badwrite(char *s)
      512:	f8f43c23          	sd	a5,-104(s0)
     int fd = open("copyin1", O_CREATE|O_WRONLY);
      516:	00005a17          	auipc	s4,0x5
-     51a:	ae2a0a13          	addi	s4,s4,-1310 # 4ff8 <malloc+0x274>
+     51a:	aeaa0a13          	addi	s4,s4,-1302 # 5000 <malloc+0x272>
     if(pipe(fds) < 0){
      51e:	fa840a93          	addi	s5,s0,-88
     uint64 addr = addrs[ai];
@@ -685,9 +685,9 @@ badwrite(char *s)
      5c4:	8082                	ret
       printf("open(copyin1) failed\n");
      5c6:	00005517          	auipc	a0,0x5
-     5ca:	a3a50513          	addi	a0,a0,-1478 # 5000 <malloc+0x27c>
+     5ca:	a4250513          	addi	a0,a0,-1470 # 5008 <malloc+0x27a>
      5ce:	00004097          	auipc	ra,0x4
-     5d2:	6fe080e7          	jalr	1790(ra) # 4ccc <printf>
+     5d2:	708080e7          	jalr	1800(ra) # 4cd6 <printf>
       exit(1);
      5d6:	4505                	li	a0,1
      5d8:	00004097          	auipc	ra,0x4
@@ -696,9 +696,9 @@ badwrite(char *s)
      5e0:	862a                	mv	a2,a0
      5e2:	85ce                	mv	a1,s3
      5e4:	00005517          	auipc	a0,0x5
-     5e8:	a3450513          	addi	a0,a0,-1484 # 5018 <malloc+0x294>
+     5e8:	a3c50513          	addi	a0,a0,-1476 # 5020 <malloc+0x292>
      5ec:	00004097          	auipc	ra,0x4
-     5f0:	6e0080e7          	jalr	1760(ra) # 4ccc <printf>
+     5f0:	6ea080e7          	jalr	1770(ra) # 4cd6 <printf>
       exit(1);
      5f4:	4505                	li	a0,1
      5f6:	00004097          	auipc	ra,0x4
@@ -707,18 +707,18 @@ badwrite(char *s)
      5fe:	862a                	mv	a2,a0
      600:	85ce                	mv	a1,s3
      602:	00005517          	auipc	a0,0x5
-     606:	a4650513          	addi	a0,a0,-1466 # 5048 <malloc+0x2c4>
+     606:	a4e50513          	addi	a0,a0,-1458 # 5050 <malloc+0x2c2>
      60a:	00004097          	auipc	ra,0x4
-     60e:	6c2080e7          	jalr	1730(ra) # 4ccc <printf>
+     60e:	6cc080e7          	jalr	1740(ra) # 4cd6 <printf>
       exit(1);
      612:	4505                	li	a0,1
      614:	00004097          	auipc	ra,0x4
      618:	2f0080e7          	jalr	752(ra) # 4904 <exit>
       printf("pipe() failed\n");
      61c:	00005517          	auipc	a0,0x5
-     620:	a5c50513          	addi	a0,a0,-1444 # 5078 <malloc+0x2f4>
+     620:	a6450513          	addi	a0,a0,-1436 # 5080 <malloc+0x2f2>
      624:	00004097          	auipc	ra,0x4
-     628:	6a8080e7          	jalr	1704(ra) # 4ccc <printf>
+     628:	6b2080e7          	jalr	1714(ra) # 4cd6 <printf>
       exit(1);
      62c:	4505                	li	a0,1
      62e:	00004097          	auipc	ra,0x4
@@ -727,9 +727,9 @@ badwrite(char *s)
      636:	862a                	mv	a2,a0
      638:	85ce                	mv	a1,s3
      63a:	00005517          	auipc	a0,0x5
-     63e:	a4e50513          	addi	a0,a0,-1458 # 5088 <malloc+0x304>
+     63e:	a5650513          	addi	a0,a0,-1450 # 5090 <malloc+0x302>
      642:	00004097          	auipc	ra,0x4
-     646:	68a080e7          	jalr	1674(ra) # 4ccc <printf>
+     646:	694080e7          	jalr	1684(ra) # 4cd6 <printf>
       exit(1);
      64a:	4505                	li	a0,1
      64c:	00004097          	auipc	ra,0x4
@@ -759,12 +759,12 @@ badwrite(char *s)
      67e:	f8f43c23          	sd	a5,-104(s0)
     int fd = open("README", 0);
      682:	00005a97          	auipc	s5,0x5
-     686:	a36a8a93          	addi	s5,s5,-1482 # 50b8 <malloc+0x334>
+     686:	a3ea8a93          	addi	s5,s5,-1474 # 50c0 <malloc+0x332>
     if(pipe(fds) < 0){
      68a:	fa840a13          	addi	s4,s0,-88
     n = write(fds[1], "x", 1);
      68e:	00005b17          	auipc	s6,0x5
-     692:	8c2b0b13          	addi	s6,s6,-1854 # 4f50 <malloc+0x1cc>
+     692:	8cab0b13          	addi	s6,s6,-1846 # 4f58 <malloc+0x1ca>
     uint64 addr = addrs[ai];
      696:	00093983          	ld	s3,0(s2)
     int fd = open("README", 0);
@@ -833,9 +833,9 @@ badwrite(char *s)
      732:	8082                	ret
       printf("open(README) failed\n");
      734:	00005517          	auipc	a0,0x5
-     738:	98c50513          	addi	a0,a0,-1652 # 50c0 <malloc+0x33c>
+     738:	99450513          	addi	a0,a0,-1644 # 50c8 <malloc+0x33a>
      73c:	00004097          	auipc	ra,0x4
-     740:	590080e7          	jalr	1424(ra) # 4ccc <printf>
+     740:	59a080e7          	jalr	1434(ra) # 4cd6 <printf>
       exit(1);
      744:	4505                	li	a0,1
      746:	00004097          	auipc	ra,0x4
@@ -844,27 +844,27 @@ badwrite(char *s)
      74e:	862a                	mv	a2,a0
      750:	85ce                	mv	a1,s3
      752:	00005517          	auipc	a0,0x5
-     756:	98650513          	addi	a0,a0,-1658 # 50d8 <malloc+0x354>
+     756:	98e50513          	addi	a0,a0,-1650 # 50e0 <malloc+0x352>
      75a:	00004097          	auipc	ra,0x4
-     75e:	572080e7          	jalr	1394(ra) # 4ccc <printf>
+     75e:	57c080e7          	jalr	1404(ra) # 4cd6 <printf>
       exit(1);
      762:	4505                	li	a0,1
      764:	00004097          	auipc	ra,0x4
      768:	1a0080e7          	jalr	416(ra) # 4904 <exit>
       printf("pipe() failed\n");
      76c:	00005517          	auipc	a0,0x5
-     770:	90c50513          	addi	a0,a0,-1780 # 5078 <malloc+0x2f4>
+     770:	91450513          	addi	a0,a0,-1772 # 5080 <malloc+0x2f2>
      774:	00004097          	auipc	ra,0x4
-     778:	558080e7          	jalr	1368(ra) # 4ccc <printf>
+     778:	562080e7          	jalr	1378(ra) # 4cd6 <printf>
       exit(1);
      77c:	4505                	li	a0,1
      77e:	00004097          	auipc	ra,0x4
      782:	186080e7          	jalr	390(ra) # 4904 <exit>
       printf("pipe write failed\n");
      786:	00005517          	auipc	a0,0x5
-     78a:	98250513          	addi	a0,a0,-1662 # 5108 <malloc+0x384>
+     78a:	98a50513          	addi	a0,a0,-1654 # 5110 <malloc+0x382>
      78e:	00004097          	auipc	ra,0x4
-     792:	53e080e7          	jalr	1342(ra) # 4ccc <printf>
+     792:	548080e7          	jalr	1352(ra) # 4cd6 <printf>
       exit(1);
      796:	4505                	li	a0,1
      798:	00004097          	auipc	ra,0x4
@@ -873,9 +873,9 @@ badwrite(char *s)
      7a0:	862a                	mv	a2,a0
      7a2:	85ce                	mv	a1,s3
      7a4:	00005517          	auipc	a0,0x5
-     7a8:	97c50513          	addi	a0,a0,-1668 # 5120 <malloc+0x39c>
+     7a8:	98450513          	addi	a0,a0,-1660 # 5128 <malloc+0x39a>
      7ac:	00004097          	auipc	ra,0x4
-     7b0:	520080e7          	jalr	1312(ra) # 4ccc <printf>
+     7b0:	52a080e7          	jalr	1322(ra) # 4cd6 <printf>
       exit(1);
      7b4:	4505                	li	a0,1
      7b6:	00004097          	auipc	ra,0x4
@@ -895,20 +895,20 @@ badwrite(char *s)
      7d0:	8aaa                	mv	s5,a0
   remove("truncfile");
      7d2:	00004517          	auipc	a0,0x4
-     7d6:	76650513          	addi	a0,a0,1894 # 4f38 <malloc+0x1b4>
+     7d6:	76e50513          	addi	a0,a0,1902 # 4f40 <malloc+0x1b2>
      7da:	00004097          	auipc	ra,0x4
      7de:	1e6080e7          	jalr	486(ra) # 49c0 <remove>
   int fd1 = open("truncfile", O_CREATE|O_WRONLY|O_TRUNC);
      7e2:	60100593          	li	a1,1537
      7e6:	00004517          	auipc	a0,0x4
-     7ea:	75250513          	addi	a0,a0,1874 # 4f38 <malloc+0x1b4>
+     7ea:	75a50513          	addi	a0,a0,1882 # 4f40 <malloc+0x1b2>
      7ee:	00004097          	auipc	ra,0x4
      7f2:	160080e7          	jalr	352(ra) # 494e <open>
      7f6:	84aa                	mv	s1,a0
   write(fd1, "abcd", 4);
      7f8:	4611                	li	a2,4
      7fa:	00004597          	auipc	a1,0x4
-     7fe:	74e58593          	addi	a1,a1,1870 # 4f48 <malloc+0x1c4>
+     7fe:	75658593          	addi	a1,a1,1878 # 4f50 <malloc+0x1c2>
      802:	00004097          	auipc	ra,0x4
      806:	128080e7          	jalr	296(ra) # 492a <write>
   close(fd1);
@@ -918,7 +918,7 @@ badwrite(char *s)
   int fd2 = open("truncfile", O_RDONLY);
      814:	4581                	li	a1,0
      816:	00004517          	auipc	a0,0x4
-     81a:	72250513          	addi	a0,a0,1826 # 4f38 <malloc+0x1b4>
+     81a:	72a50513          	addi	a0,a0,1834 # 4f40 <malloc+0x1b2>
      81e:	00004097          	auipc	ra,0x4
      822:	130080e7          	jalr	304(ra) # 494e <open>
      826:	84aa                	mv	s1,a0
@@ -933,14 +933,14 @@ badwrite(char *s)
   fd1 = open("truncfile", O_WRONLY|O_TRUNC);
      83e:	40100593          	li	a1,1025
      842:	00004517          	auipc	a0,0x4
-     846:	6f650513          	addi	a0,a0,1782 # 4f38 <malloc+0x1b4>
+     846:	6fe50513          	addi	a0,a0,1790 # 4f40 <malloc+0x1b2>
      84a:	00004097          	auipc	ra,0x4
      84e:	104080e7          	jalr	260(ra) # 494e <open>
      852:	89aa                	mv	s3,a0
   int fd3 = open("truncfile", O_RDONLY);
      854:	4581                	li	a1,0
      856:	00004517          	auipc	a0,0x4
-     85a:	6e250513          	addi	a0,a0,1762 # 4f38 <malloc+0x1b4>
+     85a:	6ea50513          	addi	a0,a0,1770 # 4f40 <malloc+0x1b2>
      85e:	00004097          	auipc	ra,0x4
      862:	0f0080e7          	jalr	240(ra) # 494e <open>
      866:	892a                	mv	s2,a0
@@ -964,7 +964,7 @@ badwrite(char *s)
   write(fd1, "abcdef", 6);
      892:	4619                	li	a2,6
      894:	00005597          	auipc	a1,0x5
-     898:	91c58593          	addi	a1,a1,-1764 # 51b0 <malloc+0x42c>
+     898:	92458593          	addi	a1,a1,-1756 # 51b8 <malloc+0x42a>
      89c:	854e                	mv	a0,s3
      89e:	00004097          	auipc	ra,0x4
      8a2:	08c080e7          	jalr	140(ra) # 492a <write>
@@ -988,7 +988,7 @@ badwrite(char *s)
      8d2:	0ef51063          	bne	a0,a5,9b2 <truncate1+0x1f4>
   remove("truncfile");
      8d6:	00004517          	auipc	a0,0x4
-     8da:	66250513          	addi	a0,a0,1634 # 4f38 <malloc+0x1b4>
+     8da:	66a50513          	addi	a0,a0,1642 # 4f40 <malloc+0x1b2>
      8de:	00004097          	auipc	ra,0x4
      8e2:	0e2080e7          	jalr	226(ra) # 49c0 <remove>
   close(fd1);
@@ -1017,9 +1017,9 @@ badwrite(char *s)
      916:	862a                	mv	a2,a0
      918:	85d6                	mv	a1,s5
      91a:	00005517          	auipc	a0,0x5
-     91e:	83650513          	addi	a0,a0,-1994 # 5150 <malloc+0x3cc>
+     91e:	83e50513          	addi	a0,a0,-1986 # 5158 <malloc+0x3ca>
      922:	00004097          	auipc	ra,0x4
-     926:	3aa080e7          	jalr	938(ra) # 4ccc <printf>
+     926:	3b4080e7          	jalr	948(ra) # 4cd6 <printf>
     exit(1);
      92a:	4505                	li	a0,1
      92c:	00004097          	auipc	ra,0x4
@@ -1027,16 +1027,16 @@ badwrite(char *s)
     printf("aaa fd3=%d\n", fd3);
      934:	85ca                	mv	a1,s2
      936:	00005517          	auipc	a0,0x5
-     93a:	83a50513          	addi	a0,a0,-1990 # 5170 <malloc+0x3ec>
+     93a:	84250513          	addi	a0,a0,-1982 # 5178 <malloc+0x3ea>
      93e:	00004097          	auipc	ra,0x4
-     942:	38e080e7          	jalr	910(ra) # 4ccc <printf>
+     942:	398080e7          	jalr	920(ra) # 4cd6 <printf>
     printf("%s: read %d bytes, wanted 0\n", s, n);
      946:	8652                	mv	a2,s4
      948:	85d6                	mv	a1,s5
      94a:	00005517          	auipc	a0,0x5
-     94e:	83650513          	addi	a0,a0,-1994 # 5180 <malloc+0x3fc>
+     94e:	83e50513          	addi	a0,a0,-1986 # 5188 <malloc+0x3fa>
      952:	00004097          	auipc	ra,0x4
-     956:	37a080e7          	jalr	890(ra) # 4ccc <printf>
+     956:	384080e7          	jalr	900(ra) # 4cd6 <printf>
     exit(1);
      95a:	4505                	li	a0,1
      95c:	00004097          	auipc	ra,0x4
@@ -1044,16 +1044,16 @@ badwrite(char *s)
     printf("bbb fd2=%d\n", fd2);
      964:	85a6                	mv	a1,s1
      966:	00005517          	auipc	a0,0x5
-     96a:	83a50513          	addi	a0,a0,-1990 # 51a0 <malloc+0x41c>
+     96a:	84250513          	addi	a0,a0,-1982 # 51a8 <malloc+0x41a>
      96e:	00004097          	auipc	ra,0x4
-     972:	35e080e7          	jalr	862(ra) # 4ccc <printf>
+     972:	368080e7          	jalr	872(ra) # 4cd6 <printf>
     printf("%s: read %d bytes, wanted 0\n", s, n);
      976:	8652                	mv	a2,s4
      978:	85d6                	mv	a1,s5
      97a:	00005517          	auipc	a0,0x5
-     97e:	80650513          	addi	a0,a0,-2042 # 5180 <malloc+0x3fc>
+     97e:	80e50513          	addi	a0,a0,-2034 # 5188 <malloc+0x3fa>
      982:	00004097          	auipc	ra,0x4
-     986:	34a080e7          	jalr	842(ra) # 4ccc <printf>
+     986:	354080e7          	jalr	852(ra) # 4cd6 <printf>
     exit(1);
      98a:	4505                	li	a0,1
      98c:	00004097          	auipc	ra,0x4
@@ -1062,9 +1062,9 @@ badwrite(char *s)
      994:	862a                	mv	a2,a0
      996:	85d6                	mv	a1,s5
      998:	00005517          	auipc	a0,0x5
-     99c:	82050513          	addi	a0,a0,-2016 # 51b8 <malloc+0x434>
+     99c:	82850513          	addi	a0,a0,-2008 # 51c0 <malloc+0x432>
      9a0:	00004097          	auipc	ra,0x4
-     9a4:	32c080e7          	jalr	812(ra) # 4ccc <printf>
+     9a4:	336080e7          	jalr	822(ra) # 4cd6 <printf>
     exit(1);
      9a8:	4505                	li	a0,1
      9aa:	00004097          	auipc	ra,0x4
@@ -1073,9 +1073,9 @@ badwrite(char *s)
      9b2:	862a                	mv	a2,a0
      9b4:	85d6                	mv	a1,s5
      9b6:	00005517          	auipc	a0,0x5
-     9ba:	82250513          	addi	a0,a0,-2014 # 51d8 <malloc+0x454>
+     9ba:	82a50513          	addi	a0,a0,-2006 # 51e0 <malloc+0x452>
      9be:	00004097          	auipc	ra,0x4
-     9c2:	30e080e7          	jalr	782(ra) # 4ccc <printf>
+     9c2:	318080e7          	jalr	792(ra) # 4cd6 <printf>
     exit(1);
      9c6:	4505                	li	a0,1
      9c8:	00004097          	auipc	ra,0x4
@@ -1097,7 +1097,7 @@ badwrite(char *s)
   fd = open("small", O_CREATE|O_RDWR);
      9e6:	20200593          	li	a1,514
      9ea:	00005517          	auipc	a0,0x5
-     9ee:	80e50513          	addi	a0,a0,-2034 # 51f8 <malloc+0x474>
+     9ee:	81650513          	addi	a0,a0,-2026 # 5200 <malloc+0x472>
      9f2:	00004097          	auipc	ra,0x4
      9f6:	f5c080e7          	jalr	-164(ra) # 494e <open>
   if(fd < 0){
@@ -1106,10 +1106,10 @@ badwrite(char *s)
      a00:	4481                	li	s1,0
     if(write(fd, "aaaaaaaaaa", SZ) != SZ){
      a02:	00005997          	auipc	s3,0x5
-     a06:	81e98993          	addi	s3,s3,-2018 # 5220 <malloc+0x49c>
+     a06:	82698993          	addi	s3,s3,-2010 # 5228 <malloc+0x49a>
     if(write(fd, "bbbbbbbbbb", SZ) != SZ){
      a0a:	00005a97          	auipc	s5,0x5
-     a0e:	84ea8a93          	addi	s5,s5,-1970 # 5258 <malloc+0x4d4>
+     a0e:	856a8a93          	addi	s5,s5,-1962 # 5260 <malloc+0x4d2>
   for(i = 0; i < N; i++){
      a12:	06400a13          	li	s4,100
     if(write(fd, "aaaaaaaaaa", SZ) != SZ){
@@ -1138,7 +1138,7 @@ badwrite(char *s)
   fd = open("small", O_RDONLY);
      a4e:	4581                	li	a1,0
      a50:	00004517          	auipc	a0,0x4
-     a54:	7a850513          	addi	a0,a0,1960 # 51f8 <malloc+0x474>
+     a54:	7b050513          	addi	a0,a0,1968 # 5200 <malloc+0x472>
      a58:	00004097          	auipc	ra,0x4
      a5c:	ef6080e7          	jalr	-266(ra) # 494e <open>
      a60:	84aa                	mv	s1,a0
@@ -1147,7 +1147,7 @@ badwrite(char *s)
   i = read(fd, buf, N*SZ*2);
      a66:	7d000613          	li	a2,2000
      a6a:	0000a597          	auipc	a1,0xa
-     a6e:	e2e58593          	addi	a1,a1,-466 # a898 <buf>
+     a6e:	e3658593          	addi	a1,a1,-458 # a8a0 <buf>
      a72:	00004097          	auipc	ra,0x4
      a76:	eae080e7          	jalr	-338(ra) # 4920 <read>
   if(i != N*SZ*2){
@@ -1159,7 +1159,7 @@ badwrite(char *s)
      a88:	eb0080e7          	jalr	-336(ra) # 4934 <close>
   if(remove("small") < 0){
      a8c:	00004517          	auipc	a0,0x4
-     a90:	76c50513          	addi	a0,a0,1900 # 51f8 <malloc+0x474>
+     a90:	77450513          	addi	a0,a0,1908 # 5200 <malloc+0x472>
      a94:	00004097          	auipc	ra,0x4
      a98:	f2c080e7          	jalr	-212(ra) # 49c0 <remove>
      a9c:	0a054263          	bltz	a0,b40 <writetest+0x170>
@@ -1177,9 +1177,9 @@ badwrite(char *s)
     printf("%s: error: creat small failed!\n", s);
      ab4:	85da                	mv	a1,s6
      ab6:	00004517          	auipc	a0,0x4
-     aba:	74a50513          	addi	a0,a0,1866 # 5200 <malloc+0x47c>
+     aba:	75250513          	addi	a0,a0,1874 # 5208 <malloc+0x47a>
      abe:	00004097          	auipc	ra,0x4
-     ac2:	20e080e7          	jalr	526(ra) # 4ccc <printf>
+     ac2:	218080e7          	jalr	536(ra) # 4cd6 <printf>
     exit(1);
      ac6:	4505                	li	a0,1
      ac8:	00004097          	auipc	ra,0x4
@@ -1187,9 +1187,9 @@ badwrite(char *s)
       printf("%s: error: write aa %d new file failed\n", i);
      ad0:	85a6                	mv	a1,s1
      ad2:	00004517          	auipc	a0,0x4
-     ad6:	75e50513          	addi	a0,a0,1886 # 5230 <malloc+0x4ac>
+     ad6:	76650513          	addi	a0,a0,1894 # 5238 <malloc+0x4aa>
      ada:	00004097          	auipc	ra,0x4
-     ade:	1f2080e7          	jalr	498(ra) # 4ccc <printf>
+     ade:	1fc080e7          	jalr	508(ra) # 4cd6 <printf>
       exit(1);
      ae2:	4505                	li	a0,1
      ae4:	00004097          	auipc	ra,0x4
@@ -1197,9 +1197,9 @@ badwrite(char *s)
       printf("%s: error: write bb %d new file failed\n", i);
      aec:	85a6                	mv	a1,s1
      aee:	00004517          	auipc	a0,0x4
-     af2:	77a50513          	addi	a0,a0,1914 # 5268 <malloc+0x4e4>
+     af2:	78250513          	addi	a0,a0,1922 # 5270 <malloc+0x4e2>
      af6:	00004097          	auipc	ra,0x4
-     afa:	1d6080e7          	jalr	470(ra) # 4ccc <printf>
+     afa:	1e0080e7          	jalr	480(ra) # 4cd6 <printf>
       exit(1);
      afe:	4505                	li	a0,1
      b00:	00004097          	auipc	ra,0x4
@@ -1207,9 +1207,9 @@ badwrite(char *s)
     printf("%s: error: open small failed!\n", s);
      b08:	85da                	mv	a1,s6
      b0a:	00004517          	auipc	a0,0x4
-     b0e:	78650513          	addi	a0,a0,1926 # 5290 <malloc+0x50c>
+     b0e:	78e50513          	addi	a0,a0,1934 # 5298 <malloc+0x50a>
      b12:	00004097          	auipc	ra,0x4
-     b16:	1ba080e7          	jalr	442(ra) # 4ccc <printf>
+     b16:	1c4080e7          	jalr	452(ra) # 4cd6 <printf>
     exit(1);
      b1a:	4505                	li	a0,1
      b1c:	00004097          	auipc	ra,0x4
@@ -1217,9 +1217,9 @@ badwrite(char *s)
     printf("%s: read failed\n", s);
      b24:	85da                	mv	a1,s6
      b26:	00004517          	auipc	a0,0x4
-     b2a:	78a50513          	addi	a0,a0,1930 # 52b0 <malloc+0x52c>
+     b2a:	79250513          	addi	a0,a0,1938 # 52b8 <malloc+0x52a>
      b2e:	00004097          	auipc	ra,0x4
-     b32:	19e080e7          	jalr	414(ra) # 4ccc <printf>
+     b32:	1a8080e7          	jalr	424(ra) # 4cd6 <printf>
     exit(1);
      b36:	4505                	li	a0,1
      b38:	00004097          	auipc	ra,0x4
@@ -1227,9 +1227,9 @@ badwrite(char *s)
     printf("%s: remove small failed\n", s);
      b40:	85da                	mv	a1,s6
      b42:	00004517          	auipc	a0,0x4
-     b46:	78650513          	addi	a0,a0,1926 # 52c8 <malloc+0x544>
+     b46:	78e50513          	addi	a0,a0,1934 # 52d0 <malloc+0x542>
      b4a:	00004097          	auipc	ra,0x4
-     b4e:	182080e7          	jalr	386(ra) # 4ccc <printf>
+     b4e:	18c080e7          	jalr	396(ra) # 4cd6 <printf>
     exit(1);
      b52:	4505                	li	a0,1
      b54:	00004097          	auipc	ra,0x4
@@ -1249,7 +1249,7 @@ badwrite(char *s)
   fd = open("big", O_CREATE|O_RDWR);
      b6e:	20200593          	li	a1,514
      b72:	00004517          	auipc	a0,0x4
-     b76:	77650513          	addi	a0,a0,1910 # 52e8 <malloc+0x564>
+     b76:	77e50513          	addi	a0,a0,1918 # 52f0 <malloc+0x562>
      b7a:	00004097          	auipc	ra,0x4
      b7e:	dd4080e7          	jalr	-556(ra) # 494e <open>
      b82:	89aa                	mv	s3,a0
@@ -1257,7 +1257,7 @@ badwrite(char *s)
      b84:	4481                	li	s1,0
     ((int*)buf)[0] = i;
      b86:	0000a917          	auipc	s2,0xa
-     b8a:	d1290913          	addi	s2,s2,-750 # a898 <buf>
+     b8a:	d1a90913          	addi	s2,s2,-742 # a8a0 <buf>
   if(fd < 0){
      b8e:	06054e63          	bltz	a0,c0a <writebig+0xae>
     ((int*)buf)[0] = i;
@@ -1281,7 +1281,7 @@ badwrite(char *s)
   fd = open("big", O_RDONLY);
      bc2:	4581                	li	a1,0
      bc4:	00004517          	auipc	a0,0x4
-     bc8:	72450513          	addi	a0,a0,1828 # 52e8 <malloc+0x564>
+     bc8:	72c50513          	addi	a0,a0,1836 # 52f0 <malloc+0x562>
      bcc:	00004097          	auipc	ra,0x4
      bd0:	d82080e7          	jalr	-638(ra) # 494e <open>
      bd4:	89aa                	mv	s3,a0
@@ -1289,7 +1289,7 @@ badwrite(char *s)
      bd6:	4481                	li	s1,0
     i = read(fd, buf, BSIZE);
      bd8:	0000a917          	auipc	s2,0xa
-     bdc:	cc090913          	addi	s2,s2,-832 # a898 <buf>
+     bdc:	cc890913          	addi	s2,s2,-824 # a8a0 <buf>
   if(fd < 0){
      be0:	06054163          	bltz	a0,c42 <writebig+0xe6>
     i = read(fd, buf, BSIZE);
@@ -1313,9 +1313,9 @@ badwrite(char *s)
     printf("%s: error: creat big failed!\n", s);
      c0a:	85d2                	mv	a1,s4
      c0c:	00004517          	auipc	a0,0x4
-     c10:	6e450513          	addi	a0,a0,1764 # 52f0 <malloc+0x56c>
+     c10:	6ec50513          	addi	a0,a0,1772 # 52f8 <malloc+0x56a>
      c14:	00004097          	auipc	ra,0x4
-     c18:	0b8080e7          	jalr	184(ra) # 4ccc <printf>
+     c18:	0c2080e7          	jalr	194(ra) # 4cd6 <printf>
     exit(1);
      c1c:	4505                	li	a0,1
      c1e:	00004097          	auipc	ra,0x4
@@ -1323,9 +1323,9 @@ badwrite(char *s)
       printf("%s: error: write big file failed\n", i);
      c26:	85a6                	mv	a1,s1
      c28:	00004517          	auipc	a0,0x4
-     c2c:	6e850513          	addi	a0,a0,1768 # 5310 <malloc+0x58c>
+     c2c:	6f050513          	addi	a0,a0,1776 # 5318 <malloc+0x58a>
      c30:	00004097          	auipc	ra,0x4
-     c34:	09c080e7          	jalr	156(ra) # 4ccc <printf>
+     c34:	0a6080e7          	jalr	166(ra) # 4cd6 <printf>
       exit(1);
      c38:	4505                	li	a0,1
      c3a:	00004097          	auipc	ra,0x4
@@ -1333,9 +1333,9 @@ badwrite(char *s)
     printf("%s: error: open big failed!\n", s);
      c42:	85d2                	mv	a1,s4
      c44:	00004517          	auipc	a0,0x4
-     c48:	6f450513          	addi	a0,a0,1780 # 5338 <malloc+0x5b4>
+     c48:	6fc50513          	addi	a0,a0,1788 # 5340 <malloc+0x5b2>
      c4c:	00004097          	auipc	ra,0x4
-     c50:	080080e7          	jalr	128(ra) # 4ccc <printf>
+     c50:	08a080e7          	jalr	138(ra) # 4cd6 <printf>
     exit(1);
      c54:	4505                	li	a0,1
      c56:	00004097          	auipc	ra,0x4
@@ -1349,7 +1349,7 @@ badwrite(char *s)
      c6c:	ccc080e7          	jalr	-820(ra) # 4934 <close>
   if(remove("big") < 0){
      c70:	00004517          	auipc	a0,0x4
-     c74:	67850513          	addi	a0,a0,1656 # 52e8 <malloc+0x564>
+     c74:	68050513          	addi	a0,a0,1664 # 52f0 <malloc+0x562>
      c78:	00004097          	auipc	ra,0x4
      c7c:	d48080e7          	jalr	-696(ra) # 49c0 <remove>
      c80:	06054563          	bltz	a0,cea <writebig+0x18e>
@@ -1365,9 +1365,9 @@ badwrite(char *s)
         printf("%s: read only %d blocks from big", n);
      c94:	1ff00593          	li	a1,511
      c98:	00004517          	auipc	a0,0x4
-     c9c:	6c050513          	addi	a0,a0,1728 # 5358 <malloc+0x5d4>
+     c9c:	6c850513          	addi	a0,a0,1736 # 5360 <malloc+0x5d2>
      ca0:	00004097          	auipc	ra,0x4
-     ca4:	02c080e7          	jalr	44(ra) # 4ccc <printf>
+     ca4:	036080e7          	jalr	54(ra) # 4cd6 <printf>
         exit(1);
      ca8:	4505                	li	a0,1
      caa:	00004097          	auipc	ra,0x4
@@ -1375,9 +1375,9 @@ badwrite(char *s)
       printf("%s: read failed %d\n", i);
      cb2:	85aa                	mv	a1,a0
      cb4:	00004517          	auipc	a0,0x4
-     cb8:	6cc50513          	addi	a0,a0,1740 # 5380 <malloc+0x5fc>
+     cb8:	6d450513          	addi	a0,a0,1748 # 5388 <malloc+0x5fa>
      cbc:	00004097          	auipc	ra,0x4
-     cc0:	010080e7          	jalr	16(ra) # 4ccc <printf>
+     cc0:	01a080e7          	jalr	26(ra) # 4cd6 <printf>
       exit(1);
      cc4:	4505                	li	a0,1
      cc6:	00004097          	auipc	ra,0x4
@@ -1385,9 +1385,9 @@ badwrite(char *s)
       printf("%s: read content of block %d is %d\n",
      cce:	85a6                	mv	a1,s1
      cd0:	00004517          	auipc	a0,0x4
-     cd4:	6c850513          	addi	a0,a0,1736 # 5398 <malloc+0x614>
+     cd4:	6d050513          	addi	a0,a0,1744 # 53a0 <malloc+0x612>
      cd8:	00004097          	auipc	ra,0x4
-     cdc:	ff4080e7          	jalr	-12(ra) # 4ccc <printf>
+     cdc:	ffe080e7          	jalr	-2(ra) # 4cd6 <printf>
       exit(1);
      ce0:	4505                	li	a0,1
      ce2:	00004097          	auipc	ra,0x4
@@ -1395,9 +1395,9 @@ badwrite(char *s)
     printf("%s: remove big failed\n", s);
      cea:	85d2                	mv	a1,s4
      cec:	00004517          	auipc	a0,0x4
-     cf0:	6d450513          	addi	a0,a0,1748 # 53c0 <malloc+0x63c>
+     cf0:	6dc50513          	addi	a0,a0,1756 # 53c8 <malloc+0x63a>
      cf4:	00004097          	auipc	ra,0x4
-     cf8:	fd8080e7          	jalr	-40(ra) # 4ccc <printf>
+     cf8:	fe2080e7          	jalr	-30(ra) # 4cd6 <printf>
     exit(1);
      cfc:	4505                	li	a0,1
      cfe:	00004097          	auipc	ra,0x4
@@ -1416,7 +1416,7 @@ badwrite(char *s)
   fd = open("removeread", O_CREATE | O_RDWR);
      d16:	20200593          	li	a1,514
      d1a:	00004517          	auipc	a0,0x4
-     d1e:	6be50513          	addi	a0,a0,1726 # 53d8 <malloc+0x654>
+     d1e:	6c650513          	addi	a0,a0,1734 # 53e0 <malloc+0x652>
      d22:	00004097          	auipc	ra,0x4
      d26:	c2c080e7          	jalr	-980(ra) # 494e <open>
   if(fd < 0){
@@ -1425,7 +1425,7 @@ badwrite(char *s)
   write(fd, "hello", SZ);
      d30:	4615                	li	a2,5
      d32:	00004597          	auipc	a1,0x4
-     d36:	6d658593          	addi	a1,a1,1750 # 5408 <malloc+0x684>
+     d36:	6de58593          	addi	a1,a1,1758 # 5410 <malloc+0x682>
      d3a:	00004097          	auipc	ra,0x4
      d3e:	bf0080e7          	jalr	-1040(ra) # 492a <write>
   close(fd);
@@ -1435,7 +1435,7 @@ badwrite(char *s)
   fd = open("removeread", O_RDWR);
      d4c:	4589                	li	a1,2
      d4e:	00004517          	auipc	a0,0x4
-     d52:	68a50513          	addi	a0,a0,1674 # 53d8 <malloc+0x654>
+     d52:	69250513          	addi	a0,a0,1682 # 53e0 <malloc+0x652>
      d56:	00004097          	auipc	ra,0x4
      d5a:	bf8080e7          	jalr	-1032(ra) # 494e <open>
      d5e:	84aa                	mv	s1,a0
@@ -1443,21 +1443,21 @@ badwrite(char *s)
      d60:	0c054a63          	bltz	a0,e34 <removeread+0x12e>
   if(remove("removeread") != 0){
      d64:	00004517          	auipc	a0,0x4
-     d68:	67450513          	addi	a0,a0,1652 # 53d8 <malloc+0x654>
+     d68:	67c50513          	addi	a0,a0,1660 # 53e0 <malloc+0x652>
      d6c:	00004097          	auipc	ra,0x4
      d70:	c54080e7          	jalr	-940(ra) # 49c0 <remove>
      d74:	ed71                	bnez	a0,e50 <removeread+0x14a>
   fd1 = open("removeread", O_CREATE | O_RDWR);
      d76:	20200593          	li	a1,514
      d7a:	00004517          	auipc	a0,0x4
-     d7e:	65e50513          	addi	a0,a0,1630 # 53d8 <malloc+0x654>
+     d7e:	66650513          	addi	a0,a0,1638 # 53e0 <malloc+0x652>
      d82:	00004097          	auipc	ra,0x4
      d86:	bcc080e7          	jalr	-1076(ra) # 494e <open>
      d8a:	892a                	mv	s2,a0
   write(fd1, "yyy", 3);
      d8c:	460d                	li	a2,3
      d8e:	00004597          	auipc	a1,0x4
-     d92:	6c258593          	addi	a1,a1,1730 # 5450 <malloc+0x6cc>
+     d92:	6ca58593          	addi	a1,a1,1738 # 5458 <malloc+0x6ca>
      d96:	00004097          	auipc	ra,0x4
      d9a:	b94080e7          	jalr	-1132(ra) # 492a <write>
   close(fd1);
@@ -1468,7 +1468,7 @@ badwrite(char *s)
      da8:	6609                	lui	a2,0x2
      daa:	80060613          	addi	a2,a2,-2048 # 1800 <forkfork+0x42>
      dae:	0000a597          	auipc	a1,0xa
-     db2:	aea58593          	addi	a1,a1,-1302 # a898 <buf>
+     db2:	af258593          	addi	a1,a1,-1294 # a8a0 <buf>
      db6:	8526                	mv	a0,s1
      db8:	00004097          	auipc	ra,0x4
      dbc:	b68080e7          	jalr	-1176(ra) # 4920 <read>
@@ -1476,13 +1476,13 @@ badwrite(char *s)
      dc2:	0af51563          	bne	a0,a5,e6c <removeread+0x166>
   if(buf[0] != 'h'){
      dc6:	0000a717          	auipc	a4,0xa
-     dca:	ad274703          	lbu	a4,-1326(a4) # a898 <buf>
+     dca:	ada74703          	lbu	a4,-1318(a4) # a8a0 <buf>
      dce:	06800793          	li	a5,104
      dd2:	0af71b63          	bne	a4,a5,e88 <removeread+0x182>
   if(write(fd, buf, 10) != 10){
      dd6:	4629                	li	a2,10
      dd8:	0000a597          	auipc	a1,0xa
-     ddc:	ac058593          	addi	a1,a1,-1344 # a898 <buf>
+     ddc:	ac858593          	addi	a1,a1,-1336 # a8a0 <buf>
      de0:	8526                	mv	a0,s1
      de2:	00004097          	auipc	ra,0x4
      de6:	b48080e7          	jalr	-1208(ra) # 492a <write>
@@ -1494,7 +1494,7 @@ badwrite(char *s)
      df6:	b42080e7          	jalr	-1214(ra) # 4934 <close>
   remove("removeread");
      dfa:	00004517          	auipc	a0,0x4
-     dfe:	5de50513          	addi	a0,a0,1502 # 53d8 <malloc+0x654>
+     dfe:	5e650513          	addi	a0,a0,1510 # 53e0 <malloc+0x652>
      e02:	00004097          	auipc	ra,0x4
      e06:	bbe080e7          	jalr	-1090(ra) # 49c0 <remove>
 }
@@ -1508,9 +1508,9 @@ badwrite(char *s)
     printf("%s: create removeread failed\n", s);
      e18:	85ce                	mv	a1,s3
      e1a:	00004517          	auipc	a0,0x4
-     e1e:	5ce50513          	addi	a0,a0,1486 # 53e8 <malloc+0x664>
+     e1e:	5d650513          	addi	a0,a0,1494 # 53f0 <malloc+0x662>
      e22:	00004097          	auipc	ra,0x4
-     e26:	eaa080e7          	jalr	-342(ra) # 4ccc <printf>
+     e26:	eb4080e7          	jalr	-332(ra) # 4cd6 <printf>
     exit(1);
      e2a:	4505                	li	a0,1
      e2c:	00004097          	auipc	ra,0x4
@@ -1518,9 +1518,9 @@ badwrite(char *s)
     printf("%s: open removeread failed\n", s);
      e34:	85ce                	mv	a1,s3
      e36:	00004517          	auipc	a0,0x4
-     e3a:	5da50513          	addi	a0,a0,1498 # 5410 <malloc+0x68c>
+     e3a:	5e250513          	addi	a0,a0,1506 # 5418 <malloc+0x68a>
      e3e:	00004097          	auipc	ra,0x4
-     e42:	e8e080e7          	jalr	-370(ra) # 4ccc <printf>
+     e42:	e98080e7          	jalr	-360(ra) # 4cd6 <printf>
     exit(1);
      e46:	4505                	li	a0,1
      e48:	00004097          	auipc	ra,0x4
@@ -1528,9 +1528,9 @@ badwrite(char *s)
     printf("%s: remove removeread failed\n", s);
      e50:	85ce                	mv	a1,s3
      e52:	00004517          	auipc	a0,0x4
-     e56:	5de50513          	addi	a0,a0,1502 # 5430 <malloc+0x6ac>
+     e56:	5e650513          	addi	a0,a0,1510 # 5438 <malloc+0x6aa>
      e5a:	00004097          	auipc	ra,0x4
-     e5e:	e72080e7          	jalr	-398(ra) # 4ccc <printf>
+     e5e:	e7c080e7          	jalr	-388(ra) # 4cd6 <printf>
     exit(1);
      e62:	4505                	li	a0,1
      e64:	00004097          	auipc	ra,0x4
@@ -1538,9 +1538,9 @@ badwrite(char *s)
     printf("%s: removeread read failed", s);
      e6c:	85ce                	mv	a1,s3
      e6e:	00004517          	auipc	a0,0x4
-     e72:	5ea50513          	addi	a0,a0,1514 # 5458 <malloc+0x6d4>
+     e72:	5f250513          	addi	a0,a0,1522 # 5460 <malloc+0x6d2>
      e76:	00004097          	auipc	ra,0x4
-     e7a:	e56080e7          	jalr	-426(ra) # 4ccc <printf>
+     e7a:	e60080e7          	jalr	-416(ra) # 4cd6 <printf>
     exit(1);
      e7e:	4505                	li	a0,1
      e80:	00004097          	auipc	ra,0x4
@@ -1548,9 +1548,9 @@ badwrite(char *s)
     printf("%s: removeread wrong data\n", s);
      e88:	85ce                	mv	a1,s3
      e8a:	00004517          	auipc	a0,0x4
-     e8e:	5ee50513          	addi	a0,a0,1518 # 5478 <malloc+0x6f4>
+     e8e:	5f650513          	addi	a0,a0,1526 # 5480 <malloc+0x6f2>
      e92:	00004097          	auipc	ra,0x4
-     e96:	e3a080e7          	jalr	-454(ra) # 4ccc <printf>
+     e96:	e44080e7          	jalr	-444(ra) # 4cd6 <printf>
     exit(1);
      e9a:	4505                	li	a0,1
      e9c:	00004097          	auipc	ra,0x4
@@ -1558,9 +1558,9 @@ badwrite(char *s)
     printf("%s: removeread write failed\n", s);
      ea4:	85ce                	mv	a1,s3
      ea6:	00004517          	auipc	a0,0x4
-     eaa:	5f250513          	addi	a0,a0,1522 # 5498 <malloc+0x714>
+     eaa:	5fa50513          	addi	a0,a0,1530 # 54a0 <malloc+0x712>
      eae:	00004097          	auipc	ra,0x4
-     eb2:	e1e080e7          	jalr	-482(ra) # 4ccc <printf>
+     eb2:	e28080e7          	jalr	-472(ra) # 4cd6 <printf>
     exit(1);
      eb6:	4505                	li	a0,1
      eb8:	00004097          	auipc	ra,0x4
@@ -1577,7 +1577,7 @@ badwrite(char *s)
      eca:	fc043c23          	sd	zero,-40(s0)
   exec((char*)0xeaeb0b5b00002f5e, argv);
      ece:	00006497          	auipc	s1,0x6
-     ed2:	dc24b483          	ld	s1,-574(s1) # 6c90 <malloc+0x1f0c>
+     ed2:	dca4b483          	ld	s1,-566(s1) # 6c98 <malloc+0x1f0a>
      ed6:	fd840593          	addi	a1,s0,-40
      eda:	8526                	mv	a0,s1
      edc:	00004097          	auipc	ra,0x4
@@ -1607,7 +1607,7 @@ badarg(char *s)
      f04:	e852                	sd	s4,16(sp)
      f06:	0080                	addi	s0,sp,64
      f08:	64b1                	lui	s1,0xc
-     f0a:	35048493          	addi	s1,s1,848 # c350 <__BSS_END__+0x2a0>
+     f0a:	35048493          	addi	s1,s1,848 # c350 <__BSS_END__+0x298>
   for(int i = 0; i < 50000; i++){
     char *argv[2];
     argv[0] = (char*)0xffffffff;
@@ -1617,7 +1617,7 @@ badarg(char *s)
     exec("echo", argv);
      f14:	fc040a13          	addi	s4,s0,-64
      f18:	00004997          	auipc	s3,0x4
-     f1c:	fc898993          	addi	s3,s3,-56 # 4ee0 <malloc+0x15c>
+     f1c:	fd098993          	addi	s3,s3,-48 # 4ee8 <malloc+0x15a>
     argv[0] = (char*)0xffffffff;
      f20:	fd243023          	sd	s2,-64(s0)
     argv[1] = 0;
@@ -1671,7 +1671,7 @@ badarg(char *s)
      f88:	0cf51b63          	bne	a0,a5,105e <copyinstr2+0x11c>
   char *args[] = { "xx", 0 };
      f8c:	00005797          	auipc	a5,0x5
-     f90:	14478793          	addi	a5,a5,324 # 60d0 <malloc+0x134c>
+     f90:	14c78793          	addi	a5,a5,332 # 60d8 <malloc+0x134a>
      f94:	ecf43c23          	sd	a5,-296(s0)
      f98:	ee043023          	sd	zero,-288(s0)
   ret = exec(b, args);
@@ -1690,9 +1690,9 @@ badarg(char *s)
   if(pid == 0){
      fbe:	10051363          	bnez	a0,10c4 <copyinstr2+0x182>
      fc2:	00006797          	auipc	a5,0x6
-     fc6:	1be78793          	addi	a5,a5,446 # 7180 <big.0>
+     fc6:	1c678793          	addi	a5,a5,454 # 7188 <big.0>
      fca:	00007697          	auipc	a3,0x7
-     fce:	1b668693          	addi	a3,a3,438 # 8180 <__global_pointer$+0x908>
+     fce:	1be68693          	addi	a3,a3,446 # 8188 <__global_pointer$+0x908>
       big[i] = 'x';
      fd2:	07800713          	li	a4,120
      fd6:	00e78023          	sb	a4,0(a5)
@@ -1701,10 +1701,10 @@ badarg(char *s)
      fdc:	fed79de3          	bne	a5,a3,fd6 <copyinstr2+0x94>
     big[PGSIZE] = '\0';
      fe0:	00007797          	auipc	a5,0x7
-     fe4:	1a078023          	sb	zero,416(a5) # 8180 <__global_pointer$+0x908>
+     fe4:	1a078423          	sb	zero,424(a5) # 8188 <__global_pointer$+0x908>
     char *args2[] = { big, big, big, 0 };
      fe8:	00006797          	auipc	a5,0x6
-     fec:	d2878793          	addi	a5,a5,-728 # 6d10 <__DATA_BEGIN__>
+     fec:	d3078793          	addi	a5,a5,-720 # 6d18 <__DATA_BEGIN__>
      ff0:	6390                	ld	a2,0(a5)
      ff2:	6794                	ld	a3,8(a5)
      ff4:	6b98                	ld	a4,16(a5)
@@ -1716,7 +1716,7 @@ badarg(char *s)
     ret = exec("echo", args2);
     1008:	eb040593          	addi	a1,s0,-336
     100c:	00004517          	auipc	a0,0x4
-    1010:	ed450513          	addi	a0,a0,-300 # 4ee0 <malloc+0x15c>
+    1010:	edc50513          	addi	a0,a0,-292 # 4ee8 <malloc+0x15a>
     1014:	00004097          	auipc	ra,0x4
     1018:	932080e7          	jalr	-1742(ra) # 4946 <exec>
     if(ret != -1){
@@ -1725,9 +1725,9 @@ badarg(char *s)
       printf("exec(echo, BIG) returned %d, not -1\n", fd);
     1022:	55fd                	li	a1,-1
     1024:	00004517          	auipc	a0,0x4
-    1028:	4f450513          	addi	a0,a0,1268 # 5518 <malloc+0x794>
+    1028:	4fc50513          	addi	a0,a0,1276 # 5520 <malloc+0x792>
     102c:	00004097          	auipc	ra,0x4
-    1030:	ca0080e7          	jalr	-864(ra) # 4ccc <printf>
+    1030:	caa080e7          	jalr	-854(ra) # 4cd6 <printf>
       exit(1);
     1034:	4505                	li	a0,1
     1036:	00004097          	auipc	ra,0x4
@@ -1736,9 +1736,9 @@ badarg(char *s)
     103e:	862a                	mv	a2,a0
     1040:	ee840593          	addi	a1,s0,-280
     1044:	00004517          	auipc	a0,0x4
-    1048:	47450513          	addi	a0,a0,1140 # 54b8 <malloc+0x734>
+    1048:	47c50513          	addi	a0,a0,1148 # 54c0 <malloc+0x732>
     104c:	00004097          	auipc	ra,0x4
-    1050:	c80080e7          	jalr	-896(ra) # 4ccc <printf>
+    1050:	c8a080e7          	jalr	-886(ra) # 4cd6 <printf>
     exit(1);
     1054:	4505                	li	a0,1
     1056:	00004097          	auipc	ra,0x4
@@ -1747,9 +1747,9 @@ badarg(char *s)
     105e:	862a                	mv	a2,a0
     1060:	ee840593          	addi	a1,s0,-280
     1064:	00004517          	auipc	a0,0x4
-    1068:	47450513          	addi	a0,a0,1140 # 54d8 <malloc+0x754>
+    1068:	47c50513          	addi	a0,a0,1148 # 54e0 <malloc+0x752>
     106c:	00004097          	auipc	ra,0x4
-    1070:	c60080e7          	jalr	-928(ra) # 4ccc <printf>
+    1070:	c6a080e7          	jalr	-918(ra) # 4cd6 <printf>
     exit(1);
     1074:	4505                	li	a0,1
     1076:	00004097          	auipc	ra,0x4
@@ -1758,18 +1758,18 @@ badarg(char *s)
     107e:	567d                	li	a2,-1
     1080:	ee840593          	addi	a1,s0,-280
     1084:	00004517          	auipc	a0,0x4
-    1088:	47450513          	addi	a0,a0,1140 # 54f8 <malloc+0x774>
+    1088:	47c50513          	addi	a0,a0,1148 # 5500 <malloc+0x772>
     108c:	00004097          	auipc	ra,0x4
-    1090:	c40080e7          	jalr	-960(ra) # 4ccc <printf>
+    1090:	c4a080e7          	jalr	-950(ra) # 4cd6 <printf>
     exit(1);
     1094:	4505                	li	a0,1
     1096:	00004097          	auipc	ra,0x4
     109a:	86e080e7          	jalr	-1938(ra) # 4904 <exit>
     printf("fork failed\n");
     109e:	00005517          	auipc	a0,0x5
-    10a2:	85250513          	addi	a0,a0,-1966 # 58f0 <malloc+0xb6c>
+    10a2:	85a50513          	addi	a0,a0,-1958 # 58f8 <malloc+0xb6a>
     10a6:	00004097          	auipc	ra,0x4
-    10aa:	c26080e7          	jalr	-986(ra) # 4ccc <printf>
+    10aa:	c30080e7          	jalr	-976(ra) # 4cd6 <printf>
     exit(1);
     10ae:	4505                	li	a0,1
     10b0:	00004097          	auipc	ra,0x4
@@ -1795,9 +1795,9 @@ badarg(char *s)
     10e6:	8082                	ret
     printf("exec(echo, BIG) succeeded, should have failed\n");
     10e8:	00004517          	auipc	a0,0x4
-    10ec:	45850513          	addi	a0,a0,1112 # 5540 <malloc+0x7bc>
+    10ec:	46050513          	addi	a0,a0,1120 # 5548 <malloc+0x7ba>
     10f0:	00004097          	auipc	ra,0x4
-    10f4:	bdc080e7          	jalr	-1060(ra) # 4ccc <printf>
+    10f4:	be6080e7          	jalr	-1050(ra) # 4cd6 <printf>
     exit(1);
     10f8:	4505                	li	a0,1
     10fa:	00004097          	auipc	ra,0x4
@@ -1819,7 +1819,7 @@ badarg(char *s)
   close(open("truncfile", O_CREATE|O_TRUNC|O_WRONLY));
     1118:	60100593          	li	a1,1537
     111c:	00004517          	auipc	a0,0x4
-    1120:	e1c50513          	addi	a0,a0,-484 # 4f38 <malloc+0x1b4>
+    1120:	e2450513          	addi	a0,a0,-476 # 4f40 <malloc+0x1b2>
     1124:	00004097          	auipc	ra,0x4
     1128:	82a080e7          	jalr	-2006(ra) # 494e <open>
     112c:	00004097          	auipc	ra,0x4
@@ -1834,10 +1834,10 @@ badarg(char *s)
     1142:	06400993          	li	s3,100
       int fd = open("truncfile", O_WRONLY);
     1146:	00004a17          	auipc	s4,0x4
-    114a:	df2a0a13          	addi	s4,s4,-526 # 4f38 <malloc+0x1b4>
+    114a:	dfaa0a13          	addi	s4,s4,-518 # 4f40 <malloc+0x1b2>
       int n = write(fd, "1234567890", 10);
     114e:	00004a97          	auipc	s5,0x4
-    1152:	452a8a93          	addi	s5,s5,1106 # 55a0 <malloc+0x81c>
+    1152:	45aa8a93          	addi	s5,s5,1114 # 55a8 <malloc+0x81a>
       read(fd, buf, sizeof(buf));
     1156:	f9840b13          	addi	s6,s0,-104
       int fd = open("truncfile", O_WRONLY);
@@ -1885,9 +1885,9 @@ badarg(char *s)
     printf("%s: fork failed\n", s);
     11be:	85ca                	mv	a1,s2
     11c0:	00004517          	auipc	a0,0x4
-    11c4:	3b050513          	addi	a0,a0,944 # 5570 <malloc+0x7ec>
+    11c4:	3b850513          	addi	a0,a0,952 # 5578 <malloc+0x7ea>
     11c8:	00004097          	auipc	ra,0x4
-    11cc:	b04080e7          	jalr	-1276(ra) # 4ccc <printf>
+    11cc:	b0e080e7          	jalr	-1266(ra) # 4cd6 <printf>
     exit(1);
     11d0:	4505                	li	a0,1
     11d2:	00003097          	auipc	ra,0x3
@@ -1895,9 +1895,9 @@ badarg(char *s)
         printf("%s: open failed\n", s);
     11da:	85ca                	mv	a1,s2
     11dc:	00004517          	auipc	a0,0x4
-    11e0:	3ac50513          	addi	a0,a0,940 # 5588 <malloc+0x804>
+    11e0:	3b450513          	addi	a0,a0,948 # 5590 <malloc+0x802>
     11e4:	00004097          	auipc	ra,0x4
-    11e8:	ae8080e7          	jalr	-1304(ra) # 4ccc <printf>
+    11e8:	af2080e7          	jalr	-1294(ra) # 4cd6 <printf>
         exit(1);
     11ec:	4505                	li	a0,1
     11ee:	00003097          	auipc	ra,0x3
@@ -1906,9 +1906,9 @@ badarg(char *s)
     11f6:	862a                	mv	a2,a0
     11f8:	85ca                	mv	a1,s2
     11fa:	00004517          	auipc	a0,0x4
-    11fe:	3b650513          	addi	a0,a0,950 # 55b0 <malloc+0x82c>
+    11fe:	3be50513          	addi	a0,a0,958 # 55b8 <malloc+0x82a>
     1202:	00004097          	auipc	ra,0x4
-    1206:	aca080e7          	jalr	-1334(ra) # 4ccc <printf>
+    1206:	ad4080e7          	jalr	-1324(ra) # 4cd6 <printf>
         exit(1);
     120a:	4505                	li	a0,1
     120c:	00003097          	auipc	ra,0x3
@@ -1916,10 +1916,10 @@ badarg(char *s)
     1214:	09600993          	li	s3,150
     int fd = open("truncfile", O_CREATE|O_WRONLY|O_TRUNC);
     1218:	00004a17          	auipc	s4,0x4
-    121c:	d20a0a13          	addi	s4,s4,-736 # 4f38 <malloc+0x1b4>
+    121c:	d28a0a13          	addi	s4,s4,-728 # 4f40 <malloc+0x1b2>
     int n = write(fd, "xxx", 3);
     1220:	00004a97          	auipc	s5,0x4
-    1224:	3b0a8a93          	addi	s5,s5,944 # 55d0 <malloc+0x84c>
+    1224:	3b8a8a93          	addi	s5,s5,952 # 55d8 <malloc+0x84a>
     int fd = open("truncfile", O_CREATE|O_WRONLY|O_TRUNC);
     1228:	60100593          	li	a1,1537
     122c:	8552                	mv	a0,s4
@@ -1949,7 +1949,7 @@ badarg(char *s)
     1266:	6ac080e7          	jalr	1708(ra) # 490e <wait>
   remove("truncfile");
     126a:	00004517          	auipc	a0,0x4
-    126e:	cce50513          	addi	a0,a0,-818 # 4f38 <malloc+0x1b4>
+    126e:	cd650513          	addi	a0,a0,-810 # 4f40 <malloc+0x1b2>
     1272:	00003097          	auipc	ra,0x3
     1276:	74e080e7          	jalr	1870(ra) # 49c0 <remove>
   exit(xstatus);
@@ -1959,9 +1959,9 @@ badarg(char *s)
       printf("%s: open failed\n", s);
     1286:	85ca                	mv	a1,s2
     1288:	00004517          	auipc	a0,0x4
-    128c:	30050513          	addi	a0,a0,768 # 5588 <malloc+0x804>
+    128c:	30850513          	addi	a0,a0,776 # 5590 <malloc+0x802>
     1290:	00004097          	auipc	ra,0x4
-    1294:	a3c080e7          	jalr	-1476(ra) # 4ccc <printf>
+    1294:	a46080e7          	jalr	-1466(ra) # 4cd6 <printf>
       exit(1);
     1298:	4505                	li	a0,1
     129a:	00003097          	auipc	ra,0x3
@@ -1970,9 +1970,9 @@ badarg(char *s)
     12a2:	862a                	mv	a2,a0
     12a4:	85ca                	mv	a1,s2
     12a6:	00004517          	auipc	a0,0x4
-    12aa:	33250513          	addi	a0,a0,818 # 55d8 <malloc+0x854>
+    12aa:	33a50513          	addi	a0,a0,826 # 55e0 <malloc+0x852>
     12ae:	00004097          	auipc	ra,0x4
-    12b2:	a1e080e7          	jalr	-1506(ra) # 4ccc <printf>
+    12b2:	a28080e7          	jalr	-1496(ra) # 4cd6 <printf>
       exit(1);
     12b6:	4505                	li	a0,1
     12b8:	00003097          	auipc	ra,0x3
@@ -1989,15 +1989,15 @@ badarg(char *s)
     12cc:	892a                	mv	s2,a0
   char *echoargv[] = { "echo", "OK", 0 };
     12ce:	00004797          	auipc	a5,0x4
-    12d2:	c1278793          	addi	a5,a5,-1006 # 4ee0 <malloc+0x15c>
+    12d2:	c1a78793          	addi	a5,a5,-998 # 4ee8 <malloc+0x15a>
     12d6:	fcf43023          	sd	a5,-64(s0)
     12da:	00004797          	auipc	a5,0x4
-    12de:	31e78793          	addi	a5,a5,798 # 55f8 <malloc+0x874>
+    12de:	32678793          	addi	a5,a5,806 # 5600 <malloc+0x872>
     12e2:	fcf43423          	sd	a5,-56(s0)
     12e6:	fc043823          	sd	zero,-48(s0)
   remove("echo-ok");
     12ea:	00004517          	auipc	a0,0x4
-    12ee:	31650513          	addi	a0,a0,790 # 5600 <malloc+0x87c>
+    12ee:	31e50513          	addi	a0,a0,798 # 5608 <malloc+0x87a>
     12f2:	00003097          	auipc	ra,0x3
     12f6:	6ce080e7          	jalr	1742(ra) # 49c0 <remove>
   pid = fork();
@@ -2015,7 +2015,7 @@ badarg(char *s)
     fd = open("echo-ok", O_CREATE|O_WRONLY);
     1314:	20100593          	li	a1,513
     1318:	00004517          	auipc	a0,0x4
-    131c:	2e850513          	addi	a0,a0,744 # 5600 <malloc+0x87c>
+    131c:	2f050513          	addi	a0,a0,752 # 5608 <malloc+0x87a>
     1320:	00003097          	auipc	ra,0x3
     1324:	62e080e7          	jalr	1582(ra) # 494e <open>
     if(fd < 0) {
@@ -2026,9 +2026,9 @@ badarg(char *s)
       printf("%s: wrong fd\n", s);
     1332:	85ca                	mv	a1,s2
     1334:	00004517          	auipc	a0,0x4
-    1338:	2ec50513          	addi	a0,a0,748 # 5620 <malloc+0x89c>
+    1338:	2f450513          	addi	a0,a0,756 # 5628 <malloc+0x89a>
     133c:	00004097          	auipc	ra,0x4
-    1340:	990080e7          	jalr	-1648(ra) # 4ccc <printf>
+    1340:	99a080e7          	jalr	-1638(ra) # 4cd6 <printf>
       exit(1);
     1344:	4505                	li	a0,1
     1346:	00003097          	auipc	ra,0x3
@@ -2036,9 +2036,9 @@ badarg(char *s)
      printf("%s: fork failed\n", s);
     134e:	85ca                	mv	a1,s2
     1350:	00004517          	auipc	a0,0x4
-    1354:	22050513          	addi	a0,a0,544 # 5570 <malloc+0x7ec>
+    1354:	22850513          	addi	a0,a0,552 # 5578 <malloc+0x7ea>
     1358:	00004097          	auipc	ra,0x4
-    135c:	974080e7          	jalr	-1676(ra) # 4ccc <printf>
+    135c:	97e080e7          	jalr	-1666(ra) # 4cd6 <printf>
      exit(1);
     1360:	4505                	li	a0,1
     1362:	00003097          	auipc	ra,0x3
@@ -2046,9 +2046,9 @@ badarg(char *s)
       printf("%s: create failed\n", s);
     136a:	85ca                	mv	a1,s2
     136c:	00004517          	auipc	a0,0x4
-    1370:	29c50513          	addi	a0,a0,668 # 5608 <malloc+0x884>
+    1370:	2a450513          	addi	a0,a0,676 # 5610 <malloc+0x882>
     1374:	00004097          	auipc	ra,0x4
-    1378:	958080e7          	jalr	-1704(ra) # 4ccc <printf>
+    1378:	962080e7          	jalr	-1694(ra) # 4cd6 <printf>
       exit(1);
     137c:	4505                	li	a0,1
     137e:	00003097          	auipc	ra,0x3
@@ -2056,7 +2056,7 @@ badarg(char *s)
     if(exec("echo", echoargv) < 0){
     1386:	fc040593          	addi	a1,s0,-64
     138a:	00004517          	auipc	a0,0x4
-    138e:	b5650513          	addi	a0,a0,-1194 # 4ee0 <malloc+0x15c>
+    138e:	b5e50513          	addi	a0,a0,-1186 # 4ee8 <malloc+0x15a>
     1392:	00003097          	auipc	ra,0x3
     1396:	5b4080e7          	jalr	1460(ra) # 4946 <exec>
     139a:	02054163          	bltz	a0,13bc <exectest+0xfc>
@@ -2074,9 +2074,9 @@ badarg(char *s)
       printf("%s: exec echo failed\n", s);
     13bc:	85ca                	mv	a1,s2
     13be:	00004517          	auipc	a0,0x4
-    13c2:	27250513          	addi	a0,a0,626 # 5630 <malloc+0x8ac>
+    13c2:	27a50513          	addi	a0,a0,634 # 5638 <malloc+0x8aa>
     13c6:	00004097          	auipc	ra,0x4
-    13ca:	906080e7          	jalr	-1786(ra) # 4ccc <printf>
+    13ca:	910080e7          	jalr	-1776(ra) # 4cd6 <printf>
       exit(1);
     13ce:	4505                	li	a0,1
     13d0:	00003097          	auipc	ra,0x3
@@ -2084,14 +2084,14 @@ badarg(char *s)
     printf("%s: wait failed!\n", s);
     13d8:	85ca                	mv	a1,s2
     13da:	00004517          	auipc	a0,0x4
-    13de:	26e50513          	addi	a0,a0,622 # 5648 <malloc+0x8c4>
+    13de:	27650513          	addi	a0,a0,630 # 5650 <malloc+0x8c2>
     13e2:	00004097          	auipc	ra,0x4
-    13e6:	8ea080e7          	jalr	-1814(ra) # 4ccc <printf>
+    13e6:	8f4080e7          	jalr	-1804(ra) # 4cd6 <printf>
     13ea:	b7d1                	j	13ae <exectest+0xee>
   fd = open("echo-ok", O_RDONLY);
     13ec:	4581                	li	a1,0
     13ee:	00004517          	auipc	a0,0x4
-    13f2:	21250513          	addi	a0,a0,530 # 5600 <malloc+0x87c>
+    13f2:	21a50513          	addi	a0,a0,538 # 5608 <malloc+0x87a>
     13f6:	00003097          	auipc	ra,0x3
     13fa:	558080e7          	jalr	1368(ra) # 494e <open>
   if(fd < 0) {
@@ -2106,9 +2106,9 @@ badarg(char *s)
     printf("%s: read failed\n", s);
     1416:	85ca                	mv	a1,s2
     1418:	00004517          	auipc	a0,0x4
-    141c:	e9850513          	addi	a0,a0,-360 # 52b0 <malloc+0x52c>
+    141c:	ea050513          	addi	a0,a0,-352 # 52b8 <malloc+0x52a>
     1420:	00004097          	auipc	ra,0x4
-    1424:	8ac080e7          	jalr	-1876(ra) # 4ccc <printf>
+    1424:	8b6080e7          	jalr	-1866(ra) # 4cd6 <printf>
     exit(1);
     1428:	4505                	li	a0,1
     142a:	00003097          	auipc	ra,0x3
@@ -2116,16 +2116,16 @@ badarg(char *s)
     printf("%s: open failed\n", s);
     1432:	85ca                	mv	a1,s2
     1434:	00004517          	auipc	a0,0x4
-    1438:	15450513          	addi	a0,a0,340 # 5588 <malloc+0x804>
+    1438:	15c50513          	addi	a0,a0,348 # 5590 <malloc+0x802>
     143c:	00004097          	auipc	ra,0x4
-    1440:	890080e7          	jalr	-1904(ra) # 4ccc <printf>
+    1440:	89a080e7          	jalr	-1894(ra) # 4cd6 <printf>
     exit(1);
     1444:	4505                	li	a0,1
     1446:	00003097          	auipc	ra,0x3
     144a:	4be080e7          	jalr	1214(ra) # 4904 <exit>
   remove("echo-ok");
     144e:	00004517          	auipc	a0,0x4
-    1452:	1b250513          	addi	a0,a0,434 # 5600 <malloc+0x87c>
+    1452:	1ba50513          	addi	a0,a0,442 # 5608 <malloc+0x87a>
     1456:	00003097          	auipc	ra,0x3
     145a:	56a080e7          	jalr	1386(ra) # 49c0 <remove>
   if(buf[0] == 'O' && buf[1] == 'K')
@@ -2138,9 +2138,9 @@ badarg(char *s)
     printf("%s: wrong output\n", s);
     1476:	85ca                	mv	a1,s2
     1478:	00004517          	auipc	a0,0x4
-    147c:	1e850513          	addi	a0,a0,488 # 5660 <malloc+0x8dc>
+    147c:	1f050513          	addi	a0,a0,496 # 5668 <malloc+0x8da>
     1480:	00004097          	auipc	ra,0x4
-    1484:	84c080e7          	jalr	-1972(ra) # 4ccc <printf>
+    1484:	856080e7          	jalr	-1962(ra) # 4cd6 <printf>
     exit(1);
     1488:	4505                	li	a0,1
     148a:	00003097          	auipc	ra,0x3
@@ -2188,7 +2188,7 @@ badarg(char *s)
     14e2:	4985                	li	s3,1
     while((n = read(fds[0], buf, cc)) > 0){
     14e4:	00009b17          	auipc	s6,0x9
-    14e8:	3b4b0b13          	addi	s6,s6,948 # a898 <buf>
+    14e8:	3bcb0b13          	addi	s6,s6,956 # a8a0 <buf>
       if(cc > sizeof(buf))
     14ec:	6a09                	lui	s4,0x2
     14ee:	800a0a13          	addi	s4,s4,-2048 # 1800 <forkfork+0x42>
@@ -2201,7 +2201,7 @@ badarg(char *s)
     1502:	10a05163          	blez	a0,1604 <pipe1+0x168>
       for(i = 0; i < n; i++){
     1506:	00009717          	auipc	a4,0x9
-    150a:	39270713          	addi	a4,a4,914 # a898 <buf>
+    150a:	39a70713          	addi	a4,a4,922 # a8a0 <buf>
     150e:	00a4863b          	addw	a2,s1,a0
         if((buf[i] & 0xff) != (seq++ & 0xff)){
     1512:	00074683          	lbu	a3,0(a4)
@@ -2224,9 +2224,9 @@ badarg(char *s)
     printf("%s: pipe() failed\n", s);
     153a:	85ca                	mv	a1,s2
     153c:	00004517          	auipc	a0,0x4
-    1540:	13c50513          	addi	a0,a0,316 # 5678 <malloc+0x8f4>
+    1540:	14450513          	addi	a0,a0,324 # 5680 <malloc+0x8f2>
     1544:	00003097          	auipc	ra,0x3
-    1548:	788080e7          	jalr	1928(ra) # 4ccc <printf>
+    1548:	792080e7          	jalr	1938(ra) # 4cd6 <printf>
     exit(1);
     154c:	4505                	li	a0,1
     154e:	00003097          	auipc	ra,0x3
@@ -2237,7 +2237,7 @@ badarg(char *s)
     155e:	3da080e7          	jalr	986(ra) # 4934 <close>
     for(n = 0; n < N; n++){
     1562:	00009b17          	auipc	s6,0x9
-    1566:	336b0b13          	addi	s6,s6,822 # a898 <buf>
+    1566:	33eb0b13          	addi	s6,s6,830 # a8a0 <buf>
     156a:	416004bb          	negw	s1,s6
     156e:	0ff4f493          	zext.b	s1,s1
     1572:	409b0993          	addi	s3,s6,1033
@@ -2275,9 +2275,9 @@ badarg(char *s)
         printf("%s: pipe1 oops 1\n", s);
     15c0:	85ca                	mv	a1,s2
     15c2:	00004517          	auipc	a0,0x4
-    15c6:	0ce50513          	addi	a0,a0,206 # 5690 <malloc+0x90c>
+    15c6:	0d650513          	addi	a0,a0,214 # 5698 <malloc+0x90a>
     15ca:	00003097          	auipc	ra,0x3
-    15ce:	702080e7          	jalr	1794(ra) # 4ccc <printf>
+    15ce:	70c080e7          	jalr	1804(ra) # 4cd6 <printf>
         exit(1);
     15d2:	4505                	li	a0,1
     15d4:	00003097          	auipc	ra,0x3
@@ -2285,9 +2285,9 @@ badarg(char *s)
           printf("%s: pipe1 oops 2\n", s);
     15dc:	85ca                	mv	a1,s2
     15de:	00004517          	auipc	a0,0x4
-    15e2:	0ca50513          	addi	a0,a0,202 # 56a8 <malloc+0x924>
+    15e2:	0d250513          	addi	a0,a0,210 # 56b0 <malloc+0x922>
     15e6:	00003097          	auipc	ra,0x3
-    15ea:	6e6080e7          	jalr	1766(ra) # 4ccc <printf>
+    15ea:	6f0080e7          	jalr	1776(ra) # 4cd6 <printf>
 }
     15ee:	60e6                	ld	ra,88(sp)
     15f0:	6446                	ld	s0,80(sp)
@@ -2307,9 +2307,9 @@ badarg(char *s)
       printf("%s: pipe1 oops 3 total %d\n", total);
     160e:	85d6                	mv	a1,s5
     1610:	00004517          	auipc	a0,0x4
-    1614:	0b050513          	addi	a0,a0,176 # 56c0 <malloc+0x93c>
+    1614:	0b850513          	addi	a0,a0,184 # 56c8 <malloc+0x93a>
     1618:	00003097          	auipc	ra,0x3
-    161c:	6b4080e7          	jalr	1716(ra) # 4ccc <printf>
+    161c:	6be080e7          	jalr	1726(ra) # 4cd6 <printf>
       exit(1);
     1620:	4505                	li	a0,1
     1622:	00003097          	auipc	ra,0x3
@@ -2329,9 +2329,9 @@ badarg(char *s)
     printf("%s: fork() failed\n", s);
     164e:	85ca                	mv	a1,s2
     1650:	00004517          	auipc	a0,0x4
-    1654:	09050513          	addi	a0,a0,144 # 56e0 <malloc+0x95c>
+    1654:	09850513          	addi	a0,a0,152 # 56e8 <malloc+0x95a>
     1658:	00003097          	auipc	ra,0x3
-    165c:	674080e7          	jalr	1652(ra) # 4ccc <printf>
+    165c:	67e080e7          	jalr	1662(ra) # 4cd6 <printf>
     exit(1);
     1660:	4505                	li	a0,1
     1662:	00003097          	auipc	ra,0x3
@@ -2387,9 +2387,9 @@ badarg(char *s)
       printf("%s: fork failed\n", s);
     16c6:	85d6                	mv	a1,s5
     16c8:	00004517          	auipc	a0,0x4
-    16cc:	ea850513          	addi	a0,a0,-344 # 5570 <malloc+0x7ec>
+    16cc:	eb050513          	addi	a0,a0,-336 # 5578 <malloc+0x7ea>
     16d0:	00003097          	auipc	ra,0x3
-    16d4:	5fc080e7          	jalr	1532(ra) # 4ccc <printf>
+    16d4:	606080e7          	jalr	1542(ra) # 4cd6 <printf>
       exit(1);
     16d8:	4505                	li	a0,1
     16da:	00003097          	auipc	ra,0x3
@@ -2397,9 +2397,9 @@ badarg(char *s)
         printf("%s: wait wrong pid\n", s);
     16e2:	85d6                	mv	a1,s5
     16e4:	00004517          	auipc	a0,0x4
-    16e8:	01450513          	addi	a0,a0,20 # 56f8 <malloc+0x974>
+    16e8:	01c50513          	addi	a0,a0,28 # 5700 <malloc+0x972>
     16ec:	00003097          	auipc	ra,0x3
-    16f0:	5e0080e7          	jalr	1504(ra) # 4ccc <printf>
+    16f0:	5ea080e7          	jalr	1514(ra) # 4cd6 <printf>
         exit(1);
     16f4:	4505                	li	a0,1
     16f6:	00003097          	auipc	ra,0x3
@@ -2407,9 +2407,9 @@ badarg(char *s)
         printf("%s: wait wrong exit status\n", s);
     16fe:	85d6                	mv	a1,s5
     1700:	00004517          	auipc	a0,0x4
-    1704:	01050513          	addi	a0,a0,16 # 5710 <malloc+0x98c>
+    1704:	01850513          	addi	a0,a0,24 # 5718 <malloc+0x98a>
     1708:	00003097          	auipc	ra,0x3
-    170c:	5c4080e7          	jalr	1476(ra) # 4ccc <printf>
+    170c:	5ce080e7          	jalr	1486(ra) # 4cd6 <printf>
         exit(1);
     1710:	4505                	li	a0,1
     1712:	00003097          	auipc	ra,0x3
@@ -2464,9 +2464,9 @@ badarg(char *s)
       printf("%s: fork failed\n", s);
     1776:	85ca                	mv	a1,s2
     1778:	00004517          	auipc	a0,0x4
-    177c:	df850513          	addi	a0,a0,-520 # 5570 <malloc+0x7ec>
+    177c:	e0050513          	addi	a0,a0,-512 # 5578 <malloc+0x7ea>
     1780:	00003097          	auipc	ra,0x3
-    1784:	54c080e7          	jalr	1356(ra) # 4ccc <printf>
+    1784:	556080e7          	jalr	1366(ra) # 4cd6 <printf>
       exit(1);
     1788:	4505                	li	a0,1
     178a:	00003097          	auipc	ra,0x3
@@ -2477,9 +2477,9 @@ badarg(char *s)
         printf("%s: fork failed\n", s);
     179a:	85ca                	mv	a1,s2
     179c:	00004517          	auipc	a0,0x4
-    17a0:	dd450513          	addi	a0,a0,-556 # 5570 <malloc+0x7ec>
+    17a0:	ddc50513          	addi	a0,a0,-548 # 5578 <malloc+0x7ea>
     17a4:	00003097          	auipc	ra,0x3
-    17a8:	528080e7          	jalr	1320(ra) # 4ccc <printf>
+    17a8:	532080e7          	jalr	1330(ra) # 4cd6 <printf>
         exit(1);
     17ac:	4505                	li	a0,1
     17ae:	00003097          	auipc	ra,0x3
@@ -2533,9 +2533,9 @@ badarg(char *s)
       printf("%s: fork failed", s);
     1814:	85a6                	mv	a1,s1
     1816:	00004517          	auipc	a0,0x4
-    181a:	f1a50513          	addi	a0,a0,-230 # 5730 <malloc+0x9ac>
+    181a:	f2250513          	addi	a0,a0,-222 # 5738 <malloc+0x9aa>
     181e:	00003097          	auipc	ra,0x3
-    1822:	4ae080e7          	jalr	1198(ra) # 4ccc <printf>
+    1822:	4b8080e7          	jalr	1208(ra) # 4cd6 <printf>
       exit(1);
     1826:	4505                	li	a0,1
     1828:	00003097          	auipc	ra,0x3
@@ -2570,9 +2570,9 @@ badarg(char *s)
       printf("%s: fork in child failed", s);
     186c:	85a6                	mv	a1,s1
     186e:	00004517          	auipc	a0,0x4
-    1872:	ed250513          	addi	a0,a0,-302 # 5740 <malloc+0x9bc>
+    1872:	eda50513          	addi	a0,a0,-294 # 5748 <malloc+0x9ba>
     1876:	00003097          	auipc	ra,0x3
-    187a:	456080e7          	jalr	1110(ra) # 4ccc <printf>
+    187a:	460080e7          	jalr	1120(ra) # 4cd6 <printf>
       exit(1);
     187e:	4505                	li	a0,1
     1880:	00003097          	auipc	ra,0x3
@@ -2606,9 +2606,9 @@ badarg(char *s)
     18b8:	050080e7          	jalr	80(ra) # 4904 <exit>
       printf("fork failed\n");
     18bc:	00004517          	auipc	a0,0x4
-    18c0:	03450513          	addi	a0,a0,52 # 58f0 <malloc+0xb6c>
+    18c0:	03c50513          	addi	a0,a0,60 # 58f8 <malloc+0xb6a>
     18c4:	00003097          	auipc	ra,0x3
-    18c8:	408080e7          	jalr	1032(ra) # 4ccc <printf>
+    18c8:	412080e7          	jalr	1042(ra) # 4cd6 <printf>
       exit(1);
     18cc:	4505                	li	a0,1
     18ce:	00003097          	auipc	ra,0x3
@@ -2650,9 +2650,9 @@ badarg(char *s)
     printf("%s: fork claimed to work 1000 times!\n", s);
     191a:	85ce                	mv	a1,s3
     191c:	00004517          	auipc	a0,0x4
-    1920:	e5c50513          	addi	a0,a0,-420 # 5778 <malloc+0x9f4>
+    1920:	e6450513          	addi	a0,a0,-412 # 5780 <malloc+0x9f2>
     1924:	00003097          	auipc	ra,0x3
-    1928:	3a8080e7          	jalr	936(ra) # 4ccc <printf>
+    1928:	3b2080e7          	jalr	946(ra) # 4cd6 <printf>
     exit(1);
     192c:	4505                	li	a0,1
     192e:	00003097          	auipc	ra,0x3
@@ -2692,9 +2692,9 @@ badarg(char *s)
     printf("%s: no fork at all!\n", s);
     197c:	85ce                	mv	a1,s3
     197e:	00004517          	auipc	a0,0x4
-    1982:	de250513          	addi	a0,a0,-542 # 5760 <malloc+0x9dc>
+    1982:	dea50513          	addi	a0,a0,-534 # 5768 <malloc+0x9da>
     1986:	00003097          	auipc	ra,0x3
-    198a:	346080e7          	jalr	838(ra) # 4ccc <printf>
+    198a:	350080e7          	jalr	848(ra) # 4cd6 <printf>
     exit(1);
     198e:	4505                	li	a0,1
     1990:	00003097          	auipc	ra,0x3
@@ -2702,9 +2702,9 @@ badarg(char *s)
       printf("%s: wait stopped early\n", s);
     1998:	85ce                	mv	a1,s3
     199a:	00004517          	auipc	a0,0x4
-    199e:	e0650513          	addi	a0,a0,-506 # 57a0 <malloc+0xa1c>
+    199e:	e0e50513          	addi	a0,a0,-498 # 57a8 <malloc+0xa1a>
     19a2:	00003097          	auipc	ra,0x3
-    19a6:	32a080e7          	jalr	810(ra) # 4ccc <printf>
+    19a6:	334080e7          	jalr	820(ra) # 4cd6 <printf>
       exit(1);
     19aa:	4505                	li	a0,1
     19ac:	00003097          	auipc	ra,0x3
@@ -2712,9 +2712,9 @@ badarg(char *s)
     printf("%s: wait got too many\n", s);
     19b4:	85ce                	mv	a1,s3
     19b6:	00004517          	auipc	a0,0x4
-    19ba:	e0250513          	addi	a0,a0,-510 # 57b8 <malloc+0xa34>
+    19ba:	e0a50513          	addi	a0,a0,-502 # 57c0 <malloc+0xa32>
     19be:	00003097          	auipc	ra,0x3
-    19c2:	30e080e7          	jalr	782(ra) # 4ccc <printf>
+    19c2:	318080e7          	jalr	792(ra) # 4cd6 <printf>
     exit(1);
     19c6:	4505                	li	a0,1
     19c8:	00003097          	auipc	ra,0x3
@@ -2742,10 +2742,10 @@ badarg(char *s)
     19f0:	5a7d                	li	s4,-1
   for(a = (char*)(KERNBASE); a < (char*) (KERNBASE+2000000); a += 50000){
     19f2:	69b1                	lui	s3,0xc
-    19f4:	35098993          	addi	s3,s3,848 # c350 <__BSS_END__+0x2a0>
+    19f4:	35098993          	addi	s3,s3,848 # c350 <__BSS_END__+0x298>
     19f8:	1007d937          	lui	s2,0x1007d
     19fc:	090e                	slli	s2,s2,0x3
-    19fe:	48090913          	addi	s2,s2,1152 # 1007d480 <__BSS_END__+0x100713d0>
+    19fe:	48090913          	addi	s2,s2,1152 # 1007d480 <__BSS_END__+0x100713c8>
     pid = fork();
     1a02:	00003097          	auipc	ra,0x3
     1a06:	efa080e7          	jalr	-262(ra) # 48fc <fork>
@@ -2777,9 +2777,9 @@ badarg(char *s)
       printf("%s: fork failed\n", s);
     1a3c:	85da                	mv	a1,s6
     1a3e:	00004517          	auipc	a0,0x4
-    1a42:	b3250513          	addi	a0,a0,-1230 # 5570 <malloc+0x7ec>
+    1a42:	b3a50513          	addi	a0,a0,-1222 # 5578 <malloc+0x7ea>
     1a46:	00003097          	auipc	ra,0x3
-    1a4a:	286080e7          	jalr	646(ra) # 4ccc <printf>
+    1a4a:	290080e7          	jalr	656(ra) # 4cd6 <printf>
       exit(1);
     1a4e:	4505                	li	a0,1
     1a50:	00003097          	auipc	ra,0x3
@@ -2788,9 +2788,9 @@ badarg(char *s)
     1a58:	0004c603          	lbu	a2,0(s1)
     1a5c:	85a6                	mv	a1,s1
     1a5e:	00004517          	auipc	a0,0x4
-    1a62:	d7250513          	addi	a0,a0,-654 # 57d0 <malloc+0xa4c>
+    1a62:	d7a50513          	addi	a0,a0,-646 # 57d8 <malloc+0xa4a>
     1a66:	00003097          	auipc	ra,0x3
-    1a6a:	266080e7          	jalr	614(ra) # 4ccc <printf>
+    1a6a:	270080e7          	jalr	624(ra) # 4cd6 <printf>
       exit(1);
     1a6e:	4505                	li	a0,1
     1a70:	00003097          	auipc	ra,0x3
@@ -2810,7 +2810,7 @@ badarg(char *s)
     1a8c:	84aa                	mv	s1,a0
   remove("bigarg-ok");
     1a8e:	00004517          	auipc	a0,0x4
-    1a92:	d6250513          	addi	a0,a0,-670 # 57f0 <malloc+0xa6c>
+    1a92:	d6a50513          	addi	a0,a0,-662 # 57f8 <malloc+0xa6a>
     1a96:	00003097          	auipc	ra,0x3
     1a9a:	f2a080e7          	jalr	-214(ra) # 49c0 <remove>
   pid = fork();
@@ -2830,7 +2830,7 @@ badarg(char *s)
   fd = open("bigarg-ok", 0);
     1abe:	4581                	li	a1,0
     1ac0:	00004517          	auipc	a0,0x4
-    1ac4:	d3050513          	addi	a0,a0,-720 # 57f0 <malloc+0xa6c>
+    1ac4:	d3850513          	addi	a0,a0,-712 # 57f8 <malloc+0xa6a>
     1ac8:	00003097          	auipc	ra,0x3
     1acc:	e86080e7          	jalr	-378(ra) # 494e <open>
   if(fd < 0){
@@ -2840,7 +2840,7 @@ badarg(char *s)
     1ad8:	e60080e7          	jalr	-416(ra) # 4934 <close>
   remove("bigarg-ok");
     1adc:	00004517          	auipc	a0,0x4
-    1ae0:	d1450513          	addi	a0,a0,-748 # 57f0 <malloc+0xa6c>
+    1ae0:	d1c50513          	addi	a0,a0,-740 # 57f8 <malloc+0xa6a>
     1ae4:	00003097          	auipc	ra,0x3
     1ae8:	edc080e7          	jalr	-292(ra) # 49c0 <remove>
 }
@@ -2850,30 +2850,30 @@ badarg(char *s)
     1af2:	6145                	addi	sp,sp,48
     1af4:	8082                	ret
     1af6:	00005797          	auipc	a5,0x5
-    1afa:	58a78793          	addi	a5,a5,1418 # 7080 <args.1>
+    1afa:	59278793          	addi	a5,a5,1426 # 7088 <args.1>
     1afe:	00005697          	auipc	a3,0x5
-    1b02:	67a68693          	addi	a3,a3,1658 # 7178 <args.1+0xf8>
+    1b02:	68268693          	addi	a3,a3,1666 # 7180 <args.1+0xf8>
       args[i] = "bigargs test: failed\n                                                                                                                                                                                                       ";
     1b06:	00004717          	auipc	a4,0x4
-    1b0a:	cfa70713          	addi	a4,a4,-774 # 5800 <malloc+0xa7c>
+    1b0a:	d0270713          	addi	a4,a4,-766 # 5808 <malloc+0xa7a>
     1b0e:	e398                	sd	a4,0(a5)
     for(i = 0; i < MAXARG-1; i++)
     1b10:	07a1                	addi	a5,a5,8
     1b12:	fed79ee3          	bne	a5,a3,1b0e <bigargtest+0x8c>
     args[MAXARG-1] = 0;
     1b16:	00005797          	auipc	a5,0x5
-    1b1a:	6607b123          	sd	zero,1634(a5) # 7178 <args.1+0xf8>
+    1b1a:	6607b523          	sd	zero,1642(a5) # 7180 <args.1+0xf8>
     exec("echo", args);
     1b1e:	00005597          	auipc	a1,0x5
-    1b22:	56258593          	addi	a1,a1,1378 # 7080 <args.1>
+    1b22:	56a58593          	addi	a1,a1,1386 # 7088 <args.1>
     1b26:	00003517          	auipc	a0,0x3
-    1b2a:	3ba50513          	addi	a0,a0,954 # 4ee0 <malloc+0x15c>
+    1b2a:	3c250513          	addi	a0,a0,962 # 4ee8 <malloc+0x15a>
     1b2e:	00003097          	auipc	ra,0x3
     1b32:	e18080e7          	jalr	-488(ra) # 4946 <exec>
     fd = open("bigarg-ok", O_CREATE);
     1b36:	20000593          	li	a1,512
     1b3a:	00004517          	auipc	a0,0x4
-    1b3e:	cb650513          	addi	a0,a0,-842 # 57f0 <malloc+0xa6c>
+    1b3e:	cbe50513          	addi	a0,a0,-834 # 57f8 <malloc+0xa6a>
     1b42:	00003097          	auipc	ra,0x3
     1b46:	e0c080e7          	jalr	-500(ra) # 494e <open>
     close(fd);
@@ -2886,9 +2886,9 @@ badarg(char *s)
     printf("%s: bigargtest: fork failed\n", s);
     1b5c:	85a6                	mv	a1,s1
     1b5e:	00004517          	auipc	a0,0x4
-    1b62:	d8250513          	addi	a0,a0,-638 # 58e0 <malloc+0xb5c>
+    1b62:	d8a50513          	addi	a0,a0,-630 # 58e8 <malloc+0xb5a>
     1b66:	00003097          	auipc	ra,0x3
-    1b6a:	166080e7          	jalr	358(ra) # 4ccc <printf>
+    1b6a:	170080e7          	jalr	368(ra) # 4cd6 <printf>
     exit(1);
     1b6e:	4505                	li	a0,1
     1b70:	00003097          	auipc	ra,0x3
@@ -2899,9 +2899,9 @@ badarg(char *s)
     printf("%s: bigarg test failed!\n", s);
     1b80:	85a6                	mv	a1,s1
     1b82:	00004517          	auipc	a0,0x4
-    1b86:	d7e50513          	addi	a0,a0,-642 # 5900 <malloc+0xb7c>
+    1b86:	d8650513          	addi	a0,a0,-634 # 5908 <malloc+0xb7a>
     1b8a:	00003097          	auipc	ra,0x3
-    1b8e:	142080e7          	jalr	322(ra) # 4ccc <printf>
+    1b8e:	14c080e7          	jalr	332(ra) # 4cd6 <printf>
     exit(1);
     1b92:	4505                	li	a0,1
     1b94:	00003097          	auipc	ra,0x3
@@ -2943,11 +2943,11 @@ r_sp()
     printf("%s: stacktest: read below stack %p\n", *sp);
     1bd6:	77fd                	lui	a5,0xfffff
     1bd8:	97ba                	add	a5,a5,a4
-    1bda:	0007c583          	lbu	a1,0(a5) # fffffffffffff000 <__BSS_END__+0xffffffffffff2f50>
+    1bda:	0007c583          	lbu	a1,0(a5) # fffffffffffff000 <__BSS_END__+0xffffffffffff2f48>
     1bde:	00004517          	auipc	a0,0x4
-    1be2:	d4250513          	addi	a0,a0,-702 # 5920 <malloc+0xb9c>
+    1be2:	d4a50513          	addi	a0,a0,-694 # 5928 <malloc+0xb9a>
     1be6:	00003097          	auipc	ra,0x3
-    1bea:	0e6080e7          	jalr	230(ra) # 4ccc <printf>
+    1bea:	0f0080e7          	jalr	240(ra) # 4cd6 <printf>
     exit(1);
     1bee:	4505                	li	a0,1
     1bf0:	00003097          	auipc	ra,0x3
@@ -2955,9 +2955,9 @@ r_sp()
     printf("%s: fork failed\n", s);
     1bf8:	85a6                	mv	a1,s1
     1bfa:	00004517          	auipc	a0,0x4
-    1bfe:	97650513          	addi	a0,a0,-1674 # 5570 <malloc+0x7ec>
+    1bfe:	97e50513          	addi	a0,a0,-1666 # 5578 <malloc+0x7ea>
     1c02:	00003097          	auipc	ra,0x3
-    1c06:	0ca080e7          	jalr	202(ra) # 4ccc <printf>
+    1c06:	0d4080e7          	jalr	212(ra) # 4cd6 <printf>
     exit(1);
     1c0a:	4505                	li	a0,1
     1c0c:	00003097          	auipc	ra,0x3
@@ -3014,7 +3014,7 @@ r_sp()
     1c7e:	06f51f63          	bne	a0,a5,1cfc <copyinstr3+0xde>
   char *args[] = { "xx", 0 };
     1c82:	00004797          	auipc	a5,0x4
-    1c86:	44e78793          	addi	a5,a5,1102 # 60d0 <malloc+0x134c>
+    1c86:	45678793          	addi	a5,a5,1110 # 60d8 <malloc+0x134a>
     1c8a:	fcf43823          	sd	a5,-48(s0)
     1c8e:	fc043c23          	sd	zero,-40(s0)
   ret = exec(b, args);
@@ -3040,9 +3040,9 @@ r_sp()
     1cc2:	b741                	j	1c42 <copyinstr3+0x24>
     printf("oops\n");
     1cc4:	00004517          	auipc	a0,0x4
-    1cc8:	c8450513          	addi	a0,a0,-892 # 5948 <malloc+0xbc4>
+    1cc8:	c8c50513          	addi	a0,a0,-884 # 5950 <malloc+0xbc2>
     1ccc:	00003097          	auipc	ra,0x3
-    1cd0:	000080e7          	jalr	ra # 4ccc <printf>
+    1cd0:	00a080e7          	jalr	10(ra) # 4cd6 <printf>
     exit(1);
     1cd4:	4505                	li	a0,1
     1cd6:	00003097          	auipc	ra,0x3
@@ -3051,9 +3051,9 @@ r_sp()
     1cde:	862a                	mv	a2,a0
     1ce0:	85a6                	mv	a1,s1
     1ce2:	00003517          	auipc	a0,0x3
-    1ce6:	7d650513          	addi	a0,a0,2006 # 54b8 <malloc+0x734>
+    1ce6:	7de50513          	addi	a0,a0,2014 # 54c0 <malloc+0x732>
     1cea:	00003097          	auipc	ra,0x3
-    1cee:	fe2080e7          	jalr	-30(ra) # 4ccc <printf>
+    1cee:	fec080e7          	jalr	-20(ra) # 4cd6 <printf>
     exit(1);
     1cf2:	4505                	li	a0,1
     1cf4:	00003097          	auipc	ra,0x3
@@ -3062,9 +3062,9 @@ r_sp()
     1cfc:	862a                	mv	a2,a0
     1cfe:	85a6                	mv	a1,s1
     1d00:	00003517          	auipc	a0,0x3
-    1d04:	7d850513          	addi	a0,a0,2008 # 54d8 <malloc+0x754>
+    1d04:	7e050513          	addi	a0,a0,2016 # 54e0 <malloc+0x752>
     1d08:	00003097          	auipc	ra,0x3
-    1d0c:	fc4080e7          	jalr	-60(ra) # 4ccc <printf>
+    1d0c:	fce080e7          	jalr	-50(ra) # 4cd6 <printf>
     exit(1);
     1d10:	4505                	li	a0,1
     1d12:	00003097          	auipc	ra,0x3
@@ -3073,9 +3073,9 @@ r_sp()
     1d1a:	567d                	li	a2,-1
     1d1c:	85a6                	mv	a1,s1
     1d1e:	00003517          	auipc	a0,0x3
-    1d22:	7da50513          	addi	a0,a0,2010 # 54f8 <malloc+0x774>
+    1d22:	7e250513          	addi	a0,a0,2018 # 5500 <malloc+0x772>
     1d26:	00003097          	auipc	ra,0x3
-    1d2a:	fa6080e7          	jalr	-90(ra) # 4ccc <printf>
+    1d2a:	fb0080e7          	jalr	-80(ra) # 4cd6 <printf>
     exit(1);
     1d2e:	4505                	li	a0,1
     1d30:	00003097          	auipc	ra,0x3
@@ -3114,7 +3114,7 @@ r_sp()
     for(b = a; b < a+TOOMUCH; b += 4096){
     1d74:	6705                	lui	a4,0x1
       *b = 99;
-    1d76:	00d50023          	sb	a3,0(a0) # 40000000 <__BSS_END__+0x3fff3f50>
+    1d76:	00d50023          	sb	a3,0(a0) # 40000000 <__BSS_END__+0x3fff3f48>
     for(b = a; b < a+TOOMUCH; b += 4096){
     1d7a:	953a                	add	a0,a0,a4
     1d7c:	fef51de3          	bne	a0,a5,1d76 <sbrkbasic+0x3e>
@@ -3124,9 +3124,9 @@ r_sp()
     1d86:	b82080e7          	jalr	-1150(ra) # 4904 <exit>
     printf("fork failed in sbrkbasic\n");
     1d8a:	00004517          	auipc	a0,0x4
-    1d8e:	bc650513          	addi	a0,a0,-1082 # 5950 <malloc+0xbcc>
+    1d8e:	bce50513          	addi	a0,a0,-1074 # 5958 <malloc+0xbca>
     1d92:	00003097          	auipc	ra,0x3
-    1d96:	f3a080e7          	jalr	-198(ra) # 4ccc <printf>
+    1d96:	f44080e7          	jalr	-188(ra) # 4cd6 <printf>
     exit(1);
     1d9a:	4505                	li	a0,1
     1d9c:	00003097          	auipc	ra,0x3
@@ -3156,9 +3156,9 @@ r_sp()
     printf("%s: too much memory allocated!\n", s);
     1dda:	85d2                	mv	a1,s4
     1ddc:	00004517          	auipc	a0,0x4
-    1de0:	b9450513          	addi	a0,a0,-1132 # 5970 <malloc+0xbec>
+    1de0:	b9c50513          	addi	a0,a0,-1124 # 5978 <malloc+0xbea>
     1de4:	00003097          	auipc	ra,0x3
-    1de8:	ee8080e7          	jalr	-280(ra) # 4ccc <printf>
+    1de8:	ef2080e7          	jalr	-270(ra) # 4cd6 <printf>
     exit(1);
     1dec:	4505                	li	a0,1
     1dee:	00003097          	auipc	ra,0x3
@@ -3199,9 +3199,9 @@ r_sp()
     printf("%s: sbrk test failed post-fork\n", s);
     1e3e:	85d2                	mv	a1,s4
     1e40:	00004517          	auipc	a0,0x4
-    1e44:	b9050513          	addi	a0,a0,-1136 # 59d0 <malloc+0xc4c>
+    1e44:	b9850513          	addi	a0,a0,-1128 # 59d8 <malloc+0xc4a>
     1e48:	00003097          	auipc	ra,0x3
-    1e4c:	e84080e7          	jalr	-380(ra) # 4ccc <printf>
+    1e4c:	e8e080e7          	jalr	-370(ra) # 4cd6 <printf>
     exit(1);
     1e50:	4505                	li	a0,1
     1e52:	00003097          	auipc	ra,0x3
@@ -3211,9 +3211,9 @@ r_sp()
     1e5c:	8626                	mv	a2,s1
     1e5e:	85ca                	mv	a1,s2
     1e60:	00004517          	auipc	a0,0x4
-    1e64:	b3050513          	addi	a0,a0,-1232 # 5990 <malloc+0xc0c>
+    1e64:	b3850513          	addi	a0,a0,-1224 # 5998 <malloc+0xc0a>
     1e68:	00003097          	auipc	ra,0x3
-    1e6c:	e64080e7          	jalr	-412(ra) # 4ccc <printf>
+    1e6c:	e6e080e7          	jalr	-402(ra) # 4cd6 <printf>
       exit(1);
     1e70:	4505                	li	a0,1
     1e72:	00003097          	auipc	ra,0x3
@@ -3221,9 +3221,9 @@ r_sp()
     printf("%s: sbrk test fork failed\n", s);
     1e7a:	85d2                	mv	a1,s4
     1e7c:	00004517          	auipc	a0,0x4
-    1e80:	b3450513          	addi	a0,a0,-1228 # 59b0 <malloc+0xc2c>
+    1e80:	b3c50513          	addi	a0,a0,-1220 # 59b8 <malloc+0xc2a>
     1e84:	00003097          	auipc	ra,0x3
-    1e88:	e48080e7          	jalr	-440(ra) # 4ccc <printf>
+    1e88:	e52080e7          	jalr	-430(ra) # 4cd6 <printf>
     exit(1);
     1e8c:	4505                	li	a0,1
     1e8e:	00003097          	auipc	ra,0x3
@@ -3290,7 +3290,7 @@ r_sp()
   *lastaddr = 99;
     1f16:	003007b7          	lui	a5,0x300
     1f1a:	06300713          	li	a4,99
-    1f1e:	fee78fa3          	sb	a4,-1(a5) # 2fffff <__BSS_END__+0x2f3f4f>
+    1f1e:	fee78fa3          	sb	a4,-1(a5) # 2fffff <__BSS_END__+0x2f3f47>
   a = sbrk(0);
     1f22:	4501                	li	a0,0
     1f24:	00003097          	auipc	ra,0x3
@@ -3331,7 +3331,7 @@ r_sp()
     1f7a:	0af51063          	bne	a0,a5,201a <sbrkmuch+0x15e>
   if(*lastaddr == 99){
     1f7e:	003007b7          	lui	a5,0x300
-    1f82:	fff7c703          	lbu	a4,-1(a5) # 2fffff <__BSS_END__+0x2f3f4f>
+    1f82:	fff7c703          	lbu	a4,-1(a5) # 2fffff <__BSS_END__+0x2f3f47>
     1f86:	06300793          	li	a5,99
     1f8a:	0af70763          	beq	a4,a5,2038 <sbrkmuch+0x17c>
   a = sbrk(0);
@@ -3360,9 +3360,9 @@ r_sp()
     printf("%s: sbrk test failed to grow big address space; enough phys mem?\n", s);
     1fc4:	85ce                	mv	a1,s3
     1fc6:	00004517          	auipc	a0,0x4
-    1fca:	a2a50513          	addi	a0,a0,-1494 # 59f0 <malloc+0xc6c>
+    1fca:	a3250513          	addi	a0,a0,-1486 # 59f8 <malloc+0xc6a>
     1fce:	00003097          	auipc	ra,0x3
-    1fd2:	cfe080e7          	jalr	-770(ra) # 4ccc <printf>
+    1fd2:	d08080e7          	jalr	-760(ra) # 4cd6 <printf>
     exit(1);
     1fd6:	4505                	li	a0,1
     1fd8:	00003097          	auipc	ra,0x3
@@ -3370,9 +3370,9 @@ r_sp()
     printf("%s: sbrk could not deallocate\n", s);
     1fe0:	85ce                	mv	a1,s3
     1fe2:	00004517          	auipc	a0,0x4
-    1fe6:	a5650513          	addi	a0,a0,-1450 # 5a38 <malloc+0xcb4>
+    1fe6:	a5e50513          	addi	a0,a0,-1442 # 5a40 <malloc+0xcb2>
     1fea:	00003097          	auipc	ra,0x3
-    1fee:	ce2080e7          	jalr	-798(ra) # 4ccc <printf>
+    1fee:	cec080e7          	jalr	-788(ra) # 4cd6 <printf>
     exit(1);
     1ff2:	4505                	li	a0,1
     1ff4:	00003097          	auipc	ra,0x3
@@ -3381,9 +3381,9 @@ r_sp()
     1ffc:	862a                	mv	a2,a0
     1ffe:	85a6                	mv	a1,s1
     2000:	00004517          	auipc	a0,0x4
-    2004:	a5850513          	addi	a0,a0,-1448 # 5a58 <malloc+0xcd4>
+    2004:	a6050513          	addi	a0,a0,-1440 # 5a60 <malloc+0xcd2>
     2008:	00003097          	auipc	ra,0x3
-    200c:	cc4080e7          	jalr	-828(ra) # 4ccc <printf>
+    200c:	cce080e7          	jalr	-818(ra) # 4cd6 <printf>
     exit(1);
     2010:	4505                	li	a0,1
     2012:	00003097          	auipc	ra,0x3
@@ -3392,9 +3392,9 @@ r_sp()
     201a:	8652                	mv	a2,s4
     201c:	85a6                	mv	a1,s1
     201e:	00004517          	auipc	a0,0x4
-    2022:	a7a50513          	addi	a0,a0,-1414 # 5a98 <malloc+0xd14>
+    2022:	a8250513          	addi	a0,a0,-1406 # 5aa0 <malloc+0xd12>
     2026:	00003097          	auipc	ra,0x3
-    202a:	ca6080e7          	jalr	-858(ra) # 4ccc <printf>
+    202a:	cb0080e7          	jalr	-848(ra) # 4cd6 <printf>
     exit(1);
     202e:	4505                	li	a0,1
     2030:	00003097          	auipc	ra,0x3
@@ -3402,9 +3402,9 @@ r_sp()
     printf("%s: sbrk de-allocation didn't really deallocate\n", s);
     2038:	85ce                	mv	a1,s3
     203a:	00004517          	auipc	a0,0x4
-    203e:	a8e50513          	addi	a0,a0,-1394 # 5ac8 <malloc+0xd44>
+    203e:	a9650513          	addi	a0,a0,-1386 # 5ad0 <malloc+0xd42>
     2042:	00003097          	auipc	ra,0x3
-    2046:	c8a080e7          	jalr	-886(ra) # 4ccc <printf>
+    2046:	c94080e7          	jalr	-876(ra) # 4cd6 <printf>
     exit(1);
     204a:	4505                	li	a0,1
     204c:	00003097          	auipc	ra,0x3
@@ -3413,9 +3413,9 @@ r_sp()
     2054:	862a                	mv	a2,a0
     2056:	85a6                	mv	a1,s1
     2058:	00004517          	auipc	a0,0x4
-    205c:	aa850513          	addi	a0,a0,-1368 # 5b00 <malloc+0xd7c>
+    205c:	ab050513          	addi	a0,a0,-1360 # 5b08 <malloc+0xd7a>
     2060:	00003097          	auipc	ra,0x3
-    2064:	c6c080e7          	jalr	-916(ra) # 4ccc <printf>
+    2064:	c76080e7          	jalr	-906(ra) # 4cd6 <printf>
     exit(1);
     2068:	4505                	li	a0,1
     206a:	00003097          	auipc	ra,0x3
@@ -3439,13 +3439,13 @@ r_sp()
   fd = open("sbrk", O_CREATE|O_WRONLY);
     208e:	20100593          	li	a1,513
     2092:	00004517          	auipc	a0,0x4
-    2096:	a9650513          	addi	a0,a0,-1386 # 5b28 <malloc+0xda4>
+    2096:	a9e50513          	addi	a0,a0,-1378 # 5b30 <malloc+0xda2>
     209a:	00003097          	auipc	ra,0x3
     209e:	8b4080e7          	jalr	-1868(ra) # 494e <open>
     20a2:	84aa                	mv	s1,a0
   remove("sbrk");
     20a4:	00004517          	auipc	a0,0x4
-    20a8:	a8450513          	addi	a0,a0,-1404 # 5b28 <malloc+0xda4>
+    20a8:	a8c50513          	addi	a0,a0,-1396 # 5b30 <malloc+0xda2>
     20ac:	00003097          	auipc	ra,0x3
     20b0:	914080e7          	jalr	-1772(ra) # 49c0 <remove>
   if(fd < 0)  {
@@ -3480,9 +3480,9 @@ r_sp()
     printf("%s: open sbrk failed\n", s);
     20f6:	85ce                	mv	a1,s3
     20f8:	00004517          	auipc	a0,0x4
-    20fc:	a3850513          	addi	a0,a0,-1480 # 5b30 <malloc+0xdac>
+    20fc:	a4050513          	addi	a0,a0,-1472 # 5b38 <malloc+0xdaa>
     2100:	00003097          	auipc	ra,0x3
-    2104:	bcc080e7          	jalr	-1076(ra) # 4ccc <printf>
+    2104:	bd6080e7          	jalr	-1066(ra) # 4cd6 <printf>
     exit(1);
     2108:	4505                	li	a0,1
     210a:	00002097          	auipc	ra,0x2
@@ -3490,9 +3490,9 @@ r_sp()
     printf("%s: write sbrk failed\n", s);
     2112:	85ce                	mv	a1,s3
     2114:	00004517          	auipc	a0,0x4
-    2118:	a3450513          	addi	a0,a0,-1484 # 5b48 <malloc+0xdc4>
+    2118:	a3c50513          	addi	a0,a0,-1476 # 5b50 <malloc+0xdc2>
     211c:	00003097          	auipc	ra,0x3
-    2120:	bb0080e7          	jalr	-1104(ra) # 4ccc <printf>
+    2120:	bba080e7          	jalr	-1094(ra) # 4cd6 <printf>
     exit(1);
     2124:	4505                	li	a0,1
     2126:	00002097          	auipc	ra,0x2
@@ -3500,9 +3500,9 @@ r_sp()
     printf("%s: pipe() failed\n", s);
     212e:	85ce                	mv	a1,s3
     2130:	00003517          	auipc	a0,0x3
-    2134:	54850513          	addi	a0,a0,1352 # 5678 <malloc+0x8f4>
+    2134:	55050513          	addi	a0,a0,1360 # 5680 <malloc+0x8f2>
     2138:	00003097          	auipc	ra,0x3
-    213c:	b94080e7          	jalr	-1132(ra) # 4ccc <printf>
+    213c:	b9e080e7          	jalr	-1122(ra) # 4cd6 <printf>
     exit(1);
     2140:	4505                	li	a0,1
     2142:	00002097          	auipc	ra,0x2
@@ -3520,7 +3520,7 @@ r_sp()
   fd = open("init", O_RDONLY);
     2158:	4581                	li	a1,0
     215a:	00004517          	auipc	a0,0x4
-    215e:	a0650513          	addi	a0,a0,-1530 # 5b60 <malloc+0xddc>
+    215e:	a0e50513          	addi	a0,a0,-1522 # 5b68 <malloc+0xdda>
     2162:	00002097          	auipc	ra,0x2
     2166:	7ec080e7          	jalr	2028(ra) # 494e <open>
   if (fd < 0) {
@@ -3549,9 +3549,9 @@ r_sp()
     printf("%s: open failed\n", s);
     21a0:	85ca                	mv	a1,s2
     21a2:	00003517          	auipc	a0,0x3
-    21a6:	3e650513          	addi	a0,a0,998 # 5588 <malloc+0x804>
+    21a6:	3ee50513          	addi	a0,a0,1006 # 5590 <malloc+0x802>
     21aa:	00003097          	auipc	ra,0x3
-    21ae:	b22080e7          	jalr	-1246(ra) # 4ccc <printf>
+    21ae:	b2c080e7          	jalr	-1236(ra) # 4cd6 <printf>
     exit(1);
     21b2:	4505                	li	a0,1
     21b4:	00002097          	auipc	ra,0x2
@@ -3583,9 +3583,9 @@ r_sp()
     21ec:	71c080e7          	jalr	1820(ra) # 4904 <exit>
     printf("fork failed\n");
     21f0:	00003517          	auipc	a0,0x3
-    21f4:	70050513          	addi	a0,a0,1792 # 58f0 <malloc+0xb6c>
+    21f4:	70850513          	addi	a0,a0,1800 # 58f8 <malloc+0xb6a>
     21f8:	00003097          	auipc	ra,0x3
-    21fc:	ad4080e7          	jalr	-1324(ra) # 4ccc <printf>
+    21fc:	ade080e7          	jalr	-1314(ra) # 4cd6 <printf>
     exit(1);
     2200:	4505                	li	a0,1
     2202:	00002097          	auipc	ra,0x2
@@ -3616,9 +3616,9 @@ r_sp()
     2242:	6c6080e7          	jalr	1734(ra) # 4904 <exit>
     printf("fork failed\n");
     2246:	00003517          	auipc	a0,0x3
-    224a:	6aa50513          	addi	a0,a0,1706 # 58f0 <malloc+0xb6c>
+    224a:	6b250513          	addi	a0,a0,1714 # 58f8 <malloc+0xb6a>
     224e:	00003097          	auipc	ra,0x3
-    2252:	a7e080e7          	jalr	-1410(ra) # 4ccc <printf>
+    2252:	a88080e7          	jalr	-1400(ra) # 4cd6 <printf>
     exit(1);
     2256:	4505                	li	a0,1
     2258:	00002097          	auipc	ra,0x2
@@ -3638,7 +3638,7 @@ r_sp()
     2278:	00002097          	auipc	ra,0x2
     227c:	710080e7          	jalr	1808(ra) # 4988 <sbrk>
     2280:	67ad                	lui	a5,0xb
-    2282:	8007879b          	addiw	a5,a5,-2048 # a800 <uninit+0x2678>
+    2282:	8007879b          	addiw	a5,a5,-2048 # a800 <uninit+0x2670>
     2286:	40a7853b          	subw	a0,a5,a0
     228a:	00002097          	auipc	ra,0x2
     228e:	6fe080e7          	jalr	1790(ra) # 4988 <sbrk>
@@ -3652,9 +3652,9 @@ r_sp()
     22a2:	666080e7          	jalr	1638(ra) # 4904 <exit>
     printf("fork failed\n");
     22a6:	00003517          	auipc	a0,0x3
-    22aa:	64a50513          	addi	a0,a0,1610 # 58f0 <malloc+0xb6c>
+    22aa:	65250513          	addi	a0,a0,1618 # 58f8 <malloc+0xb6a>
     22ae:	00003097          	auipc	ra,0x3
-    22b2:	a1e080e7          	jalr	-1506(ra) # 4ccc <printf>
+    22b2:	a28080e7          	jalr	-1496(ra) # 4cd6 <printf>
     exit(1);
     22b6:	4505                	li	a0,1
     22b8:	00002097          	auipc	ra,0x2
@@ -3717,9 +3717,9 @@ execout(char *s)
     230e:	5fa080e7          	jalr	1530(ra) # 4904 <exit>
       printf("fork failed\n");
     2312:	00003517          	auipc	a0,0x3
-    2316:	5de50513          	addi	a0,a0,1502 # 58f0 <malloc+0xb6c>
+    2316:	5e650513          	addi	a0,a0,1510 # 58f8 <malloc+0xb6a>
     231a:	00003097          	auipc	ra,0x3
-    231e:	9b2080e7          	jalr	-1614(ra) # 4ccc <printf>
+    231e:	9bc080e7          	jalr	-1604(ra) # 4cd6 <printf>
       exit(1);
     2322:	4505                	li	a0,1
     2324:	00002097          	auipc	ra,0x2
@@ -3755,10 +3755,10 @@ execout(char *s)
     2362:	5d6080e7          	jalr	1494(ra) # 4934 <close>
       char *args[] = { "echo", "x", 0 };
     2366:	00003517          	auipc	a0,0x3
-    236a:	b7a50513          	addi	a0,a0,-1158 # 4ee0 <malloc+0x15c>
+    236a:	b8250513          	addi	a0,a0,-1150 # 4ee8 <malloc+0x15a>
     236e:	faa43c23          	sd	a0,-72(s0)
     2372:	00003797          	auipc	a5,0x3
-    2376:	bde78793          	addi	a5,a5,-1058 # 4f50 <malloc+0x1cc>
+    2376:	be678793          	addi	a5,a5,-1050 # 4f58 <malloc+0x1ca>
     237a:	fcf43023          	sd	a5,-64(s0)
     237e:	fc043423          	sd	zero,-56(s0)
       exec("echo", args);
@@ -3780,25 +3780,25 @@ execout(char *s)
     23a2:	84aa                	mv	s1,a0
   if(mkdir("iputdir") < 0){
     23a4:	00003517          	auipc	a0,0x3
-    23a8:	7c450513          	addi	a0,a0,1988 # 5b68 <malloc+0xde4>
+    23a8:	7cc50513          	addi	a0,a0,1996 # 5b70 <malloc+0xde2>
     23ac:	00002097          	auipc	ra,0x2
     23b0:	5b6080e7          	jalr	1462(ra) # 4962 <mkdir>
     23b4:	04054563          	bltz	a0,23fe <iputtest+0x66>
   if(chdir("iputdir") < 0){
     23b8:	00003517          	auipc	a0,0x3
-    23bc:	7b050513          	addi	a0,a0,1968 # 5b68 <malloc+0xde4>
+    23bc:	7b850513          	addi	a0,a0,1976 # 5b70 <malloc+0xde2>
     23c0:	00002097          	auipc	ra,0x2
     23c4:	5ac080e7          	jalr	1452(ra) # 496c <chdir>
     23c8:	04054963          	bltz	a0,241a <iputtest+0x82>
   if(remove("../iputdir") < 0){
     23cc:	00003517          	auipc	a0,0x3
-    23d0:	7dc50513          	addi	a0,a0,2012 # 5ba8 <malloc+0xe24>
+    23d0:	7e450513          	addi	a0,a0,2020 # 5bb0 <malloc+0xe22>
     23d4:	00002097          	auipc	ra,0x2
     23d8:	5ec080e7          	jalr	1516(ra) # 49c0 <remove>
     23dc:	04054d63          	bltz	a0,2436 <iputtest+0x9e>
   if(chdir("/") < 0){
-    23e0:	00003517          	auipc	a0,0x3
-    23e4:	7f850513          	addi	a0,a0,2040 # 5bd8 <malloc+0xe54>
+    23e0:	00004517          	auipc	a0,0x4
+    23e4:	80050513          	addi	a0,a0,-2048 # 5be0 <malloc+0xe52>
     23e8:	00002097          	auipc	ra,0x2
     23ec:	584080e7          	jalr	1412(ra) # 496c <chdir>
     23f0:	06054163          	bltz	a0,2452 <iputtest+0xba>
@@ -3811,9 +3811,9 @@ execout(char *s)
     printf("%s: mkdir failed\n", s);
     23fe:	85a6                	mv	a1,s1
     2400:	00003517          	auipc	a0,0x3
-    2404:	77050513          	addi	a0,a0,1904 # 5b70 <malloc+0xdec>
+    2404:	77850513          	addi	a0,a0,1912 # 5b78 <malloc+0xdea>
     2408:	00003097          	auipc	ra,0x3
-    240c:	8c4080e7          	jalr	-1852(ra) # 4ccc <printf>
+    240c:	8ce080e7          	jalr	-1842(ra) # 4cd6 <printf>
     exit(1);
     2410:	4505                	li	a0,1
     2412:	00002097          	auipc	ra,0x2
@@ -3821,9 +3821,9 @@ execout(char *s)
     printf("%s: chdir iputdir failed\n", s);
     241a:	85a6                	mv	a1,s1
     241c:	00003517          	auipc	a0,0x3
-    2420:	76c50513          	addi	a0,a0,1900 # 5b88 <malloc+0xe04>
+    2420:	77450513          	addi	a0,a0,1908 # 5b90 <malloc+0xe02>
     2424:	00003097          	auipc	ra,0x3
-    2428:	8a8080e7          	jalr	-1880(ra) # 4ccc <printf>
+    2428:	8b2080e7          	jalr	-1870(ra) # 4cd6 <printf>
     exit(1);
     242c:	4505                	li	a0,1
     242e:	00002097          	auipc	ra,0x2
@@ -3831,9 +3831,9 @@ execout(char *s)
     printf("%s: remove ../iputdir failed\n", s);
     2436:	85a6                	mv	a1,s1
     2438:	00003517          	auipc	a0,0x3
-    243c:	78050513          	addi	a0,a0,1920 # 5bb8 <malloc+0xe34>
+    243c:	78850513          	addi	a0,a0,1928 # 5bc0 <malloc+0xe32>
     2440:	00003097          	auipc	ra,0x3
-    2444:	88c080e7          	jalr	-1908(ra) # 4ccc <printf>
+    2444:	896080e7          	jalr	-1898(ra) # 4cd6 <printf>
     exit(1);
     2448:	4505                	li	a0,1
     244a:	00002097          	auipc	ra,0x2
@@ -3841,9 +3841,9 @@ execout(char *s)
     printf("%s: chdir / failed\n", s);
     2452:	85a6                	mv	a1,s1
     2454:	00003517          	auipc	a0,0x3
-    2458:	78c50513          	addi	a0,a0,1932 # 5be0 <malloc+0xe5c>
+    2458:	79450513          	addi	a0,a0,1940 # 5be8 <malloc+0xe5a>
     245c:	00003097          	auipc	ra,0x3
-    2460:	870080e7          	jalr	-1936(ra) # 4ccc <printf>
+    2460:	87a080e7          	jalr	-1926(ra) # 4cd6 <printf>
     exit(1);
     2464:	4505                	li	a0,1
     2466:	00002097          	auipc	ra,0x2
@@ -3866,19 +3866,19 @@ execout(char *s)
     2486:	ed45                	bnez	a0,253e <exitiputtest+0xd0>
     if(mkdir("iputdir") < 0){
     2488:	00003517          	auipc	a0,0x3
-    248c:	6e050513          	addi	a0,a0,1760 # 5b68 <malloc+0xde4>
+    248c:	6e850513          	addi	a0,a0,1768 # 5b70 <malloc+0xde2>
     2490:	00002097          	auipc	ra,0x2
     2494:	4d2080e7          	jalr	1234(ra) # 4962 <mkdir>
     2498:	04054963          	bltz	a0,24ea <exitiputtest+0x7c>
     if(chdir("iputdir") < 0){
     249c:	00003517          	auipc	a0,0x3
-    24a0:	6cc50513          	addi	a0,a0,1740 # 5b68 <malloc+0xde4>
+    24a0:	6d450513          	addi	a0,a0,1748 # 5b70 <malloc+0xde2>
     24a4:	00002097          	auipc	ra,0x2
     24a8:	4c8080e7          	jalr	1224(ra) # 496c <chdir>
     24ac:	04054d63          	bltz	a0,2506 <exitiputtest+0x98>
     if(remove("../iputdir") < 0){
     24b0:	00003517          	auipc	a0,0x3
-    24b4:	6f850513          	addi	a0,a0,1784 # 5ba8 <malloc+0xe24>
+    24b4:	70050513          	addi	a0,a0,1792 # 5bb0 <malloc+0xe22>
     24b8:	00002097          	auipc	ra,0x2
     24bc:	508080e7          	jalr	1288(ra) # 49c0 <remove>
     24c0:	06054163          	bltz	a0,2522 <exitiputtest+0xb4>
@@ -3889,9 +3889,9 @@ execout(char *s)
     printf("%s: fork failed\n", s);
     24ce:	85a6                	mv	a1,s1
     24d0:	00003517          	auipc	a0,0x3
-    24d4:	0a050513          	addi	a0,a0,160 # 5570 <malloc+0x7ec>
+    24d4:	0a850513          	addi	a0,a0,168 # 5578 <malloc+0x7ea>
     24d8:	00002097          	auipc	ra,0x2
-    24dc:	7f4080e7          	jalr	2036(ra) # 4ccc <printf>
+    24dc:	7fe080e7          	jalr	2046(ra) # 4cd6 <printf>
     exit(1);
     24e0:	4505                	li	a0,1
     24e2:	00002097          	auipc	ra,0x2
@@ -3899,9 +3899,9 @@ execout(char *s)
       printf("%s: mkdir failed\n", s);
     24ea:	85a6                	mv	a1,s1
     24ec:	00003517          	auipc	a0,0x3
-    24f0:	68450513          	addi	a0,a0,1668 # 5b70 <malloc+0xdec>
+    24f0:	68c50513          	addi	a0,a0,1676 # 5b78 <malloc+0xdea>
     24f4:	00002097          	auipc	ra,0x2
-    24f8:	7d8080e7          	jalr	2008(ra) # 4ccc <printf>
+    24f8:	7e2080e7          	jalr	2018(ra) # 4cd6 <printf>
       exit(1);
     24fc:	4505                	li	a0,1
     24fe:	00002097          	auipc	ra,0x2
@@ -3909,9 +3909,9 @@ execout(char *s)
       printf("%s: child chdir failed\n", s);
     2506:	85a6                	mv	a1,s1
     2508:	00003517          	auipc	a0,0x3
-    250c:	6f050513          	addi	a0,a0,1776 # 5bf8 <malloc+0xe74>
+    250c:	6f850513          	addi	a0,a0,1784 # 5c00 <malloc+0xe72>
     2510:	00002097          	auipc	ra,0x2
-    2514:	7bc080e7          	jalr	1980(ra) # 4ccc <printf>
+    2514:	7c6080e7          	jalr	1990(ra) # 4cd6 <printf>
       exit(1);
     2518:	4505                	li	a0,1
     251a:	00002097          	auipc	ra,0x2
@@ -3919,9 +3919,9 @@ execout(char *s)
       printf("%s: remove ../iputdir failed\n", s);
     2522:	85a6                	mv	a1,s1
     2524:	00003517          	auipc	a0,0x3
-    2528:	69450513          	addi	a0,a0,1684 # 5bb8 <malloc+0xe34>
+    2528:	69c50513          	addi	a0,a0,1692 # 5bc0 <malloc+0xe32>
     252c:	00002097          	auipc	ra,0x2
-    2530:	7a0080e7          	jalr	1952(ra) # 4ccc <printf>
+    2530:	7aa080e7          	jalr	1962(ra) # 4cd6 <printf>
       exit(1);
     2534:	4505                	li	a0,1
     2536:	00002097          	auipc	ra,0x2
@@ -3946,19 +3946,19 @@ execout(char *s)
     2562:	892a                	mv	s2,a0
   remove("ff");
     2564:	00003517          	auipc	a0,0x3
-    2568:	6ac50513          	addi	a0,a0,1708 # 5c10 <malloc+0xe8c>
+    2568:	6b450513          	addi	a0,a0,1716 # 5c18 <malloc+0xe8a>
     256c:	00002097          	auipc	ra,0x2
     2570:	454080e7          	jalr	1108(ra) # 49c0 <remove>
   if(mkdir("dd") != 0){
     2574:	00003517          	auipc	a0,0x3
-    2578:	6a450513          	addi	a0,a0,1700 # 5c18 <malloc+0xe94>
+    2578:	6ac50513          	addi	a0,a0,1708 # 5c20 <malloc+0xe92>
     257c:	00002097          	auipc	ra,0x2
     2580:	3e6080e7          	jalr	998(ra) # 4962 <mkdir>
     2584:	24051363          	bnez	a0,27ca <subdir+0x274>
   fd = open("dd/ff", O_CREATE | O_RDWR);
     2588:	20200593          	li	a1,514
     258c:	00003517          	auipc	a0,0x3
-    2590:	6ac50513          	addi	a0,a0,1708 # 5c38 <malloc+0xeb4>
+    2590:	6b450513          	addi	a0,a0,1716 # 5c40 <malloc+0xeb2>
     2594:	00002097          	auipc	ra,0x2
     2598:	3ba080e7          	jalr	954(ra) # 494e <open>
     259c:	84aa                	mv	s1,a0
@@ -3967,7 +3967,7 @@ execout(char *s)
   write(fd, "ff", 2);
     25a2:	4609                	li	a2,2
     25a4:	00003597          	auipc	a1,0x3
-    25a8:	66c58593          	addi	a1,a1,1644 # 5c10 <malloc+0xe8c>
+    25a8:	67458593          	addi	a1,a1,1652 # 5c18 <malloc+0xe8a>
     25ac:	00002097          	auipc	ra,0x2
     25b0:	37e080e7          	jalr	894(ra) # 492a <write>
   close(fd);
@@ -3976,20 +3976,20 @@ execout(char *s)
     25ba:	37e080e7          	jalr	894(ra) # 4934 <close>
   if(remove("dd") >= 0){
     25be:	00003517          	auipc	a0,0x3
-    25c2:	65a50513          	addi	a0,a0,1626 # 5c18 <malloc+0xe94>
+    25c2:	66250513          	addi	a0,a0,1634 # 5c20 <malloc+0xe92>
     25c6:	00002097          	auipc	ra,0x2
     25ca:	3fa080e7          	jalr	1018(ra) # 49c0 <remove>
     25ce:	22055a63          	bgez	a0,2802 <subdir+0x2ac>
   if(mkdir("/dd/dd") != 0){
     25d2:	00003517          	auipc	a0,0x3
-    25d6:	6be50513          	addi	a0,a0,1726 # 5c90 <malloc+0xf0c>
+    25d6:	6c650513          	addi	a0,a0,1734 # 5c98 <malloc+0xf0a>
     25da:	00002097          	auipc	ra,0x2
     25de:	388080e7          	jalr	904(ra) # 4962 <mkdir>
     25e2:	22051e63          	bnez	a0,281e <subdir+0x2c8>
   fd = open("dd/dd/ff", O_CREATE | O_RDWR);
     25e6:	20200593          	li	a1,514
     25ea:	00003517          	auipc	a0,0x3
-    25ee:	6ce50513          	addi	a0,a0,1742 # 5cb8 <malloc+0xf34>
+    25ee:	6d650513          	addi	a0,a0,1750 # 5cc0 <malloc+0xf32>
     25f2:	00002097          	auipc	ra,0x2
     25f6:	35c080e7          	jalr	860(ra) # 494e <open>
     25fa:	84aa                	mv	s1,a0
@@ -3998,7 +3998,7 @@ execout(char *s)
   write(fd, "FF", 2);
     2600:	4609                	li	a2,2
     2602:	00003597          	auipc	a1,0x3
-    2606:	6e658593          	addi	a1,a1,1766 # 5ce8 <malloc+0xf64>
+    2606:	6ee58593          	addi	a1,a1,1774 # 5cf0 <malloc+0xf62>
     260a:	00002097          	auipc	ra,0x2
     260e:	320080e7          	jalr	800(ra) # 492a <write>
   close(fd);
@@ -4008,7 +4008,7 @@ execout(char *s)
   fd = open("dd/dd/../ff", 0);
     261c:	4581                	li	a1,0
     261e:	00003517          	auipc	a0,0x3
-    2622:	6d250513          	addi	a0,a0,1746 # 5cf0 <malloc+0xf6c>
+    2622:	6da50513          	addi	a0,a0,1754 # 5cf8 <malloc+0xf6a>
     2626:	00002097          	auipc	ra,0x2
     262a:	328080e7          	jalr	808(ra) # 494e <open>
     262e:	84aa                	mv	s1,a0
@@ -4018,14 +4018,14 @@ execout(char *s)
     2634:	6609                	lui	a2,0x2
     2636:	80060613          	addi	a2,a2,-2048 # 1800 <forkfork+0x42>
     263a:	00008597          	auipc	a1,0x8
-    263e:	25e58593          	addi	a1,a1,606 # a898 <buf>
+    263e:	26658593          	addi	a1,a1,614 # a8a0 <buf>
     2642:	00002097          	auipc	ra,0x2
     2646:	2de080e7          	jalr	734(ra) # 4920 <read>
   if(cc != 2 || buf[0] != 'f'){
     264a:	4789                	li	a5,2
     264c:	22f51363          	bne	a0,a5,2872 <subdir+0x31c>
     2650:	00008717          	auipc	a4,0x8
-    2654:	24874703          	lbu	a4,584(a4) # a898 <buf>
+    2654:	25074703          	lbu	a4,592(a4) # a8a0 <buf>
     2658:	06600793          	li	a5,102
     265c:	20f71b63          	bne	a4,a5,2872 <subdir+0x31c>
   close(fd);
@@ -4034,104 +4034,104 @@ execout(char *s)
     2666:	2d2080e7          	jalr	722(ra) # 4934 <close>
   if(remove("dd/dd/ff") != 0){
     266a:	00003517          	auipc	a0,0x3
-    266e:	64e50513          	addi	a0,a0,1614 # 5cb8 <malloc+0xf34>
+    266e:	65650513          	addi	a0,a0,1622 # 5cc0 <malloc+0xf32>
     2672:	00002097          	auipc	ra,0x2
     2676:	34e080e7          	jalr	846(ra) # 49c0 <remove>
     267a:	20051a63          	bnez	a0,288e <subdir+0x338>
   if(open("dd/dd/ff", O_RDONLY) >= 0){
     267e:	4581                	li	a1,0
     2680:	00003517          	auipc	a0,0x3
-    2684:	63850513          	addi	a0,a0,1592 # 5cb8 <malloc+0xf34>
+    2684:	64050513          	addi	a0,a0,1600 # 5cc0 <malloc+0xf32>
     2688:	00002097          	auipc	ra,0x2
     268c:	2c6080e7          	jalr	710(ra) # 494e <open>
     2690:	20055d63          	bgez	a0,28aa <subdir+0x354>
   if(chdir("dd") != 0){
     2694:	00003517          	auipc	a0,0x3
-    2698:	58450513          	addi	a0,a0,1412 # 5c18 <malloc+0xe94>
+    2698:	58c50513          	addi	a0,a0,1420 # 5c20 <malloc+0xe92>
     269c:	00002097          	auipc	ra,0x2
     26a0:	2d0080e7          	jalr	720(ra) # 496c <chdir>
     26a4:	22051163          	bnez	a0,28c6 <subdir+0x370>
   if(chdir("dd/../../dd") != 0){
     26a8:	00003517          	auipc	a0,0x3
-    26ac:	6f850513          	addi	a0,a0,1784 # 5da0 <malloc+0x101c>
+    26ac:	70050513          	addi	a0,a0,1792 # 5da8 <malloc+0x101a>
     26b0:	00002097          	auipc	ra,0x2
     26b4:	2bc080e7          	jalr	700(ra) # 496c <chdir>
     26b8:	22051563          	bnez	a0,28e2 <subdir+0x38c>
   if(chdir("dd/../../../dd") != 0){
     26bc:	00003517          	auipc	a0,0x3
-    26c0:	71450513          	addi	a0,a0,1812 # 5dd0 <malloc+0x104c>
+    26c0:	71c50513          	addi	a0,a0,1820 # 5dd8 <malloc+0x104a>
     26c4:	00002097          	auipc	ra,0x2
     26c8:	2a8080e7          	jalr	680(ra) # 496c <chdir>
     26cc:	22051963          	bnez	a0,28fe <subdir+0x3a8>
   if(chdir("./..") != 0){
     26d0:	00003517          	auipc	a0,0x3
-    26d4:	73050513          	addi	a0,a0,1840 # 5e00 <malloc+0x107c>
+    26d4:	73850513          	addi	a0,a0,1848 # 5e08 <malloc+0x107a>
     26d8:	00002097          	auipc	ra,0x2
     26dc:	294080e7          	jalr	660(ra) # 496c <chdir>
     26e0:	22051d63          	bnez	a0,291a <subdir+0x3c4>
   if(open("dd/dd/ff", O_RDONLY) >= 0){
     26e4:	4581                	li	a1,0
     26e6:	00003517          	auipc	a0,0x3
-    26ea:	5d250513          	addi	a0,a0,1490 # 5cb8 <malloc+0xf34>
+    26ea:	5da50513          	addi	a0,a0,1498 # 5cc0 <malloc+0xf32>
     26ee:	00002097          	auipc	ra,0x2
     26f2:	260080e7          	jalr	608(ra) # 494e <open>
     26f6:	24055063          	bgez	a0,2936 <subdir+0x3e0>
   if(open("dd/ff/ff", O_CREATE|O_RDWR) >= 0){
     26fa:	20200593          	li	a1,514
     26fe:	00003517          	auipc	a0,0x3
-    2702:	75250513          	addi	a0,a0,1874 # 5e50 <malloc+0x10cc>
+    2702:	75a50513          	addi	a0,a0,1882 # 5e58 <malloc+0x10ca>
     2706:	00002097          	auipc	ra,0x2
     270a:	248080e7          	jalr	584(ra) # 494e <open>
     270e:	24055263          	bgez	a0,2952 <subdir+0x3fc>
   if(open("dd/xx/ff", O_CREATE|O_RDWR) >= 0){
     2712:	20200593          	li	a1,514
     2716:	00003517          	auipc	a0,0x3
-    271a:	76a50513          	addi	a0,a0,1898 # 5e80 <malloc+0x10fc>
+    271a:	77250513          	addi	a0,a0,1906 # 5e88 <malloc+0x10fa>
     271e:	00002097          	auipc	ra,0x2
     2722:	230080e7          	jalr	560(ra) # 494e <open>
     2726:	24055463          	bgez	a0,296e <subdir+0x418>
   if(open("dd", O_CREATE) >= 0){
     272a:	20000593          	li	a1,512
     272e:	00003517          	auipc	a0,0x3
-    2732:	4ea50513          	addi	a0,a0,1258 # 5c18 <malloc+0xe94>
+    2732:	4f250513          	addi	a0,a0,1266 # 5c20 <malloc+0xe92>
     2736:	00002097          	auipc	ra,0x2
     273a:	218080e7          	jalr	536(ra) # 494e <open>
     273e:	24055663          	bgez	a0,298a <subdir+0x434>
   if(open("dd", O_RDWR) >= 0){
     2742:	4589                	li	a1,2
     2744:	00003517          	auipc	a0,0x3
-    2748:	4d450513          	addi	a0,a0,1236 # 5c18 <malloc+0xe94>
+    2748:	4dc50513          	addi	a0,a0,1244 # 5c20 <malloc+0xe92>
     274c:	00002097          	auipc	ra,0x2
     2750:	202080e7          	jalr	514(ra) # 494e <open>
     2754:	24055963          	bgez	a0,29a6 <subdir+0x450>
   if(open("dd", O_WRONLY) >= 0){
     2758:	4585                	li	a1,1
     275a:	00003517          	auipc	a0,0x3
-    275e:	4be50513          	addi	a0,a0,1214 # 5c18 <malloc+0xe94>
+    275e:	4c650513          	addi	a0,a0,1222 # 5c20 <malloc+0xe92>
     2762:	00002097          	auipc	ra,0x2
     2766:	1ec080e7          	jalr	492(ra) # 494e <open>
     276a:	24055c63          	bgez	a0,29c2 <subdir+0x46c>
   if(remove("dd/ff") != 0){
     276e:	00003517          	auipc	a0,0x3
-    2772:	4ca50513          	addi	a0,a0,1226 # 5c38 <malloc+0xeb4>
+    2772:	4d250513          	addi	a0,a0,1234 # 5c40 <malloc+0xeb2>
     2776:	00002097          	auipc	ra,0x2
     277a:	24a080e7          	jalr	586(ra) # 49c0 <remove>
     277e:	26051063          	bnez	a0,29de <subdir+0x488>
   if(remove("dd") == 0){
     2782:	00003517          	auipc	a0,0x3
-    2786:	49650513          	addi	a0,a0,1174 # 5c18 <malloc+0xe94>
+    2786:	49e50513          	addi	a0,a0,1182 # 5c20 <malloc+0xe92>
     278a:	00002097          	auipc	ra,0x2
     278e:	236080e7          	jalr	566(ra) # 49c0 <remove>
     2792:	26050463          	beqz	a0,29fa <subdir+0x4a4>
   if(remove("dd/dd") < 0){
     2796:	00003517          	auipc	a0,0x3
-    279a:	7c250513          	addi	a0,a0,1986 # 5f58 <malloc+0x11d4>
+    279a:	7ca50513          	addi	a0,a0,1994 # 5f60 <malloc+0x11d2>
     279e:	00002097          	auipc	ra,0x2
     27a2:	222080e7          	jalr	546(ra) # 49c0 <remove>
     27a6:	26054863          	bltz	a0,2a16 <subdir+0x4c0>
   if(remove("dd") < 0){
     27aa:	00003517          	auipc	a0,0x3
-    27ae:	46e50513          	addi	a0,a0,1134 # 5c18 <malloc+0xe94>
+    27ae:	47650513          	addi	a0,a0,1142 # 5c20 <malloc+0xe92>
     27b2:	00002097          	auipc	ra,0x2
     27b6:	20e080e7          	jalr	526(ra) # 49c0 <remove>
     27ba:	26054c63          	bltz	a0,2a32 <subdir+0x4dc>
@@ -4145,9 +4145,9 @@ execout(char *s)
     printf("%s: mkdir dd failed\n", s);
     27ca:	85ca                	mv	a1,s2
     27cc:	00003517          	auipc	a0,0x3
-    27d0:	45450513          	addi	a0,a0,1108 # 5c20 <malloc+0xe9c>
+    27d0:	45c50513          	addi	a0,a0,1116 # 5c28 <malloc+0xe9a>
     27d4:	00002097          	auipc	ra,0x2
-    27d8:	4f8080e7          	jalr	1272(ra) # 4ccc <printf>
+    27d8:	502080e7          	jalr	1282(ra) # 4cd6 <printf>
     exit(1);
     27dc:	4505                	li	a0,1
     27de:	00002097          	auipc	ra,0x2
@@ -4155,9 +4155,9 @@ execout(char *s)
     printf("%s: create dd/ff failed\n", s);
     27e6:	85ca                	mv	a1,s2
     27e8:	00003517          	auipc	a0,0x3
-    27ec:	45850513          	addi	a0,a0,1112 # 5c40 <malloc+0xebc>
+    27ec:	46050513          	addi	a0,a0,1120 # 5c48 <malloc+0xeba>
     27f0:	00002097          	auipc	ra,0x2
-    27f4:	4dc080e7          	jalr	1244(ra) # 4ccc <printf>
+    27f4:	4e6080e7          	jalr	1254(ra) # 4cd6 <printf>
     exit(1);
     27f8:	4505                	li	a0,1
     27fa:	00002097          	auipc	ra,0x2
@@ -4165,9 +4165,9 @@ execout(char *s)
     printf("%s: remove dd (non-empty dir) succeeded!\n", s);
     2802:	85ca                	mv	a1,s2
     2804:	00003517          	auipc	a0,0x3
-    2808:	45c50513          	addi	a0,a0,1116 # 5c60 <malloc+0xedc>
+    2808:	46450513          	addi	a0,a0,1124 # 5c68 <malloc+0xeda>
     280c:	00002097          	auipc	ra,0x2
-    2810:	4c0080e7          	jalr	1216(ra) # 4ccc <printf>
+    2810:	4ca080e7          	jalr	1226(ra) # 4cd6 <printf>
     exit(1);
     2814:	4505                	li	a0,1
     2816:	00002097          	auipc	ra,0x2
@@ -4175,9 +4175,9 @@ execout(char *s)
     printf("subdir mkdir dd/dd failed\n", s);
     281e:	85ca                	mv	a1,s2
     2820:	00003517          	auipc	a0,0x3
-    2824:	47850513          	addi	a0,a0,1144 # 5c98 <malloc+0xf14>
+    2824:	48050513          	addi	a0,a0,1152 # 5ca0 <malloc+0xf12>
     2828:	00002097          	auipc	ra,0x2
-    282c:	4a4080e7          	jalr	1188(ra) # 4ccc <printf>
+    282c:	4ae080e7          	jalr	1198(ra) # 4cd6 <printf>
     exit(1);
     2830:	4505                	li	a0,1
     2832:	00002097          	auipc	ra,0x2
@@ -4185,9 +4185,9 @@ execout(char *s)
     printf("%s: create dd/dd/ff failed\n", s);
     283a:	85ca                	mv	a1,s2
     283c:	00003517          	auipc	a0,0x3
-    2840:	48c50513          	addi	a0,a0,1164 # 5cc8 <malloc+0xf44>
+    2840:	49450513          	addi	a0,a0,1172 # 5cd0 <malloc+0xf42>
     2844:	00002097          	auipc	ra,0x2
-    2848:	488080e7          	jalr	1160(ra) # 4ccc <printf>
+    2848:	492080e7          	jalr	1170(ra) # 4cd6 <printf>
     exit(1);
     284c:	4505                	li	a0,1
     284e:	00002097          	auipc	ra,0x2
@@ -4195,9 +4195,9 @@ execout(char *s)
     printf("%s: open dd/dd/../ff failed\n", s);
     2856:	85ca                	mv	a1,s2
     2858:	00003517          	auipc	a0,0x3
-    285c:	4a850513          	addi	a0,a0,1192 # 5d00 <malloc+0xf7c>
+    285c:	4b050513          	addi	a0,a0,1200 # 5d08 <malloc+0xf7a>
     2860:	00002097          	auipc	ra,0x2
-    2864:	46c080e7          	jalr	1132(ra) # 4ccc <printf>
+    2864:	476080e7          	jalr	1142(ra) # 4cd6 <printf>
     exit(1);
     2868:	4505                	li	a0,1
     286a:	00002097          	auipc	ra,0x2
@@ -4205,9 +4205,9 @@ execout(char *s)
     printf("%s: dd/dd/../ff wrong content\n", s);
     2872:	85ca                	mv	a1,s2
     2874:	00003517          	auipc	a0,0x3
-    2878:	4ac50513          	addi	a0,a0,1196 # 5d20 <malloc+0xf9c>
+    2878:	4b450513          	addi	a0,a0,1204 # 5d28 <malloc+0xf9a>
     287c:	00002097          	auipc	ra,0x2
-    2880:	450080e7          	jalr	1104(ra) # 4ccc <printf>
+    2880:	45a080e7          	jalr	1114(ra) # 4cd6 <printf>
     exit(1);
     2884:	4505                	li	a0,1
     2886:	00002097          	auipc	ra,0x2
@@ -4215,9 +4215,9 @@ execout(char *s)
     printf("%s: remove dd/dd/ff failed\n", s);
     288e:	85ca                	mv	a1,s2
     2890:	00003517          	auipc	a0,0x3
-    2894:	4b050513          	addi	a0,a0,1200 # 5d40 <malloc+0xfbc>
+    2894:	4b850513          	addi	a0,a0,1208 # 5d48 <malloc+0xfba>
     2898:	00002097          	auipc	ra,0x2
-    289c:	434080e7          	jalr	1076(ra) # 4ccc <printf>
+    289c:	43e080e7          	jalr	1086(ra) # 4cd6 <printf>
     exit(1);
     28a0:	4505                	li	a0,1
     28a2:	00002097          	auipc	ra,0x2
@@ -4225,9 +4225,9 @@ execout(char *s)
     printf("%s: open (removeed) dd/dd/ff succeeded\n", s);
     28aa:	85ca                	mv	a1,s2
     28ac:	00003517          	auipc	a0,0x3
-    28b0:	4b450513          	addi	a0,a0,1204 # 5d60 <malloc+0xfdc>
+    28b0:	4bc50513          	addi	a0,a0,1212 # 5d68 <malloc+0xfda>
     28b4:	00002097          	auipc	ra,0x2
-    28b8:	418080e7          	jalr	1048(ra) # 4ccc <printf>
+    28b8:	422080e7          	jalr	1058(ra) # 4cd6 <printf>
     exit(1);
     28bc:	4505                	li	a0,1
     28be:	00002097          	auipc	ra,0x2
@@ -4235,9 +4235,9 @@ execout(char *s)
     printf("%s: chdir dd failed\n", s);
     28c6:	85ca                	mv	a1,s2
     28c8:	00003517          	auipc	a0,0x3
-    28cc:	4c050513          	addi	a0,a0,1216 # 5d88 <malloc+0x1004>
+    28cc:	4c850513          	addi	a0,a0,1224 # 5d90 <malloc+0x1002>
     28d0:	00002097          	auipc	ra,0x2
-    28d4:	3fc080e7          	jalr	1020(ra) # 4ccc <printf>
+    28d4:	406080e7          	jalr	1030(ra) # 4cd6 <printf>
     exit(1);
     28d8:	4505                	li	a0,1
     28da:	00002097          	auipc	ra,0x2
@@ -4245,9 +4245,9 @@ execout(char *s)
     printf("%s: chdir dd/../../dd failed\n", s);
     28e2:	85ca                	mv	a1,s2
     28e4:	00003517          	auipc	a0,0x3
-    28e8:	4cc50513          	addi	a0,a0,1228 # 5db0 <malloc+0x102c>
+    28e8:	4d450513          	addi	a0,a0,1236 # 5db8 <malloc+0x102a>
     28ec:	00002097          	auipc	ra,0x2
-    28f0:	3e0080e7          	jalr	992(ra) # 4ccc <printf>
+    28f0:	3ea080e7          	jalr	1002(ra) # 4cd6 <printf>
     exit(1);
     28f4:	4505                	li	a0,1
     28f6:	00002097          	auipc	ra,0x2
@@ -4255,9 +4255,9 @@ execout(char *s)
     printf("chdir dd/../../dd failed\n", s);
     28fe:	85ca                	mv	a1,s2
     2900:	00003517          	auipc	a0,0x3
-    2904:	4e050513          	addi	a0,a0,1248 # 5de0 <malloc+0x105c>
+    2904:	4e850513          	addi	a0,a0,1256 # 5de8 <malloc+0x105a>
     2908:	00002097          	auipc	ra,0x2
-    290c:	3c4080e7          	jalr	964(ra) # 4ccc <printf>
+    290c:	3ce080e7          	jalr	974(ra) # 4cd6 <printf>
     exit(1);
     2910:	4505                	li	a0,1
     2912:	00002097          	auipc	ra,0x2
@@ -4265,9 +4265,9 @@ execout(char *s)
     printf("%s: chdir ./.. failed\n", s);
     291a:	85ca                	mv	a1,s2
     291c:	00003517          	auipc	a0,0x3
-    2920:	4ec50513          	addi	a0,a0,1260 # 5e08 <malloc+0x1084>
+    2920:	4f450513          	addi	a0,a0,1268 # 5e10 <malloc+0x1082>
     2924:	00002097          	auipc	ra,0x2
-    2928:	3a8080e7          	jalr	936(ra) # 4ccc <printf>
+    2928:	3b2080e7          	jalr	946(ra) # 4cd6 <printf>
     exit(1);
     292c:	4505                	li	a0,1
     292e:	00002097          	auipc	ra,0x2
@@ -4275,9 +4275,9 @@ execout(char *s)
     printf("%s: open (removeed) dd/dd/ff succeeded!\n", s);
     2936:	85ca                	mv	a1,s2
     2938:	00003517          	auipc	a0,0x3
-    293c:	4e850513          	addi	a0,a0,1256 # 5e20 <malloc+0x109c>
+    293c:	4f050513          	addi	a0,a0,1264 # 5e28 <malloc+0x109a>
     2940:	00002097          	auipc	ra,0x2
-    2944:	38c080e7          	jalr	908(ra) # 4ccc <printf>
+    2944:	396080e7          	jalr	918(ra) # 4cd6 <printf>
     exit(1);
     2948:	4505                	li	a0,1
     294a:	00002097          	auipc	ra,0x2
@@ -4285,9 +4285,9 @@ execout(char *s)
     printf("%s: create dd/ff/ff succeeded!\n", s);
     2952:	85ca                	mv	a1,s2
     2954:	00003517          	auipc	a0,0x3
-    2958:	50c50513          	addi	a0,a0,1292 # 5e60 <malloc+0x10dc>
+    2958:	51450513          	addi	a0,a0,1300 # 5e68 <malloc+0x10da>
     295c:	00002097          	auipc	ra,0x2
-    2960:	370080e7          	jalr	880(ra) # 4ccc <printf>
+    2960:	37a080e7          	jalr	890(ra) # 4cd6 <printf>
     exit(1);
     2964:	4505                	li	a0,1
     2966:	00002097          	auipc	ra,0x2
@@ -4295,9 +4295,9 @@ execout(char *s)
     printf("%s: create dd/xx/ff succeeded!\n", s);
     296e:	85ca                	mv	a1,s2
     2970:	00003517          	auipc	a0,0x3
-    2974:	52050513          	addi	a0,a0,1312 # 5e90 <malloc+0x110c>
+    2974:	52850513          	addi	a0,a0,1320 # 5e98 <malloc+0x110a>
     2978:	00002097          	auipc	ra,0x2
-    297c:	354080e7          	jalr	852(ra) # 4ccc <printf>
+    297c:	35e080e7          	jalr	862(ra) # 4cd6 <printf>
     exit(1);
     2980:	4505                	li	a0,1
     2982:	00002097          	auipc	ra,0x2
@@ -4305,9 +4305,9 @@ execout(char *s)
     printf("%s: create dd succeeded!\n", s);
     298a:	85ca                	mv	a1,s2
     298c:	00003517          	auipc	a0,0x3
-    2990:	52450513          	addi	a0,a0,1316 # 5eb0 <malloc+0x112c>
+    2990:	52c50513          	addi	a0,a0,1324 # 5eb8 <malloc+0x112a>
     2994:	00002097          	auipc	ra,0x2
-    2998:	338080e7          	jalr	824(ra) # 4ccc <printf>
+    2998:	342080e7          	jalr	834(ra) # 4cd6 <printf>
     exit(1);
     299c:	4505                	li	a0,1
     299e:	00002097          	auipc	ra,0x2
@@ -4315,9 +4315,9 @@ execout(char *s)
     printf("%s: open dd rdwr succeeded!\n", s);
     29a6:	85ca                	mv	a1,s2
     29a8:	00003517          	auipc	a0,0x3
-    29ac:	52850513          	addi	a0,a0,1320 # 5ed0 <malloc+0x114c>
+    29ac:	53050513          	addi	a0,a0,1328 # 5ed8 <malloc+0x114a>
     29b0:	00002097          	auipc	ra,0x2
-    29b4:	31c080e7          	jalr	796(ra) # 4ccc <printf>
+    29b4:	326080e7          	jalr	806(ra) # 4cd6 <printf>
     exit(1);
     29b8:	4505                	li	a0,1
     29ba:	00002097          	auipc	ra,0x2
@@ -4325,9 +4325,9 @@ execout(char *s)
     printf("%s: open dd wronly succeeded!\n", s);
     29c2:	85ca                	mv	a1,s2
     29c4:	00003517          	auipc	a0,0x3
-    29c8:	52c50513          	addi	a0,a0,1324 # 5ef0 <malloc+0x116c>
+    29c8:	53450513          	addi	a0,a0,1332 # 5ef8 <malloc+0x116a>
     29cc:	00002097          	auipc	ra,0x2
-    29d0:	300080e7          	jalr	768(ra) # 4ccc <printf>
+    29d0:	30a080e7          	jalr	778(ra) # 4cd6 <printf>
     exit(1);
     29d4:	4505                	li	a0,1
     29d6:	00002097          	auipc	ra,0x2
@@ -4335,9 +4335,9 @@ execout(char *s)
     printf("%s: remove dd/ff failed\n", s);
     29de:	85ca                	mv	a1,s2
     29e0:	00003517          	auipc	a0,0x3
-    29e4:	53050513          	addi	a0,a0,1328 # 5f10 <malloc+0x118c>
+    29e4:	53850513          	addi	a0,a0,1336 # 5f18 <malloc+0x118a>
     29e8:	00002097          	auipc	ra,0x2
-    29ec:	2e4080e7          	jalr	740(ra) # 4ccc <printf>
+    29ec:	2ee080e7          	jalr	750(ra) # 4cd6 <printf>
     exit(1);
     29f0:	4505                	li	a0,1
     29f2:	00002097          	auipc	ra,0x2
@@ -4345,9 +4345,9 @@ execout(char *s)
     printf("%s: remove non-empty dd succeeded!\n", s);
     29fa:	85ca                	mv	a1,s2
     29fc:	00003517          	auipc	a0,0x3
-    2a00:	53450513          	addi	a0,a0,1332 # 5f30 <malloc+0x11ac>
+    2a00:	53c50513          	addi	a0,a0,1340 # 5f38 <malloc+0x11aa>
     2a04:	00002097          	auipc	ra,0x2
-    2a08:	2c8080e7          	jalr	712(ra) # 4ccc <printf>
+    2a08:	2d2080e7          	jalr	722(ra) # 4cd6 <printf>
     exit(1);
     2a0c:	4505                	li	a0,1
     2a0e:	00002097          	auipc	ra,0x2
@@ -4355,9 +4355,9 @@ execout(char *s)
     printf("%s: remove dd/dd failed\n", s);
     2a16:	85ca                	mv	a1,s2
     2a18:	00003517          	auipc	a0,0x3
-    2a1c:	54850513          	addi	a0,a0,1352 # 5f60 <malloc+0x11dc>
+    2a1c:	55050513          	addi	a0,a0,1360 # 5f68 <malloc+0x11da>
     2a20:	00002097          	auipc	ra,0x2
-    2a24:	2ac080e7          	jalr	684(ra) # 4ccc <printf>
+    2a24:	2b6080e7          	jalr	694(ra) # 4cd6 <printf>
     exit(1);
     2a28:	4505                	li	a0,1
     2a2a:	00002097          	auipc	ra,0x2
@@ -4365,9 +4365,9 @@ execout(char *s)
     printf("%s: remove dd failed\n", s);
     2a32:	85ca                	mv	a1,s2
     2a34:	00003517          	auipc	a0,0x3
-    2a38:	54c50513          	addi	a0,a0,1356 # 5f80 <malloc+0x11fc>
+    2a38:	55450513          	addi	a0,a0,1364 # 5f88 <malloc+0x11fa>
     2a3c:	00002097          	auipc	ra,0x2
-    2a40:	290080e7          	jalr	656(ra) # 4ccc <printf>
+    2a40:	29a080e7          	jalr	666(ra) # 4cd6 <printf>
     exit(1);
     2a44:	4505                	li	a0,1
     2a46:	00002097          	auipc	ra,0x2
@@ -4383,49 +4383,49 @@ execout(char *s)
     2a58:	84aa                	mv	s1,a0
   if(mkdir("dots") != 0){
     2a5a:	00003517          	auipc	a0,0x3
-    2a5e:	53e50513          	addi	a0,a0,1342 # 5f98 <malloc+0x1214>
+    2a5e:	54650513          	addi	a0,a0,1350 # 5fa0 <malloc+0x1212>
     2a62:	00002097          	auipc	ra,0x2
     2a66:	f00080e7          	jalr	-256(ra) # 4962 <mkdir>
     2a6a:	e549                	bnez	a0,2af4 <rmdot+0xa6>
   if(chdir("dots") != 0){
     2a6c:	00003517          	auipc	a0,0x3
-    2a70:	52c50513          	addi	a0,a0,1324 # 5f98 <malloc+0x1214>
+    2a70:	53450513          	addi	a0,a0,1332 # 5fa0 <malloc+0x1212>
     2a74:	00002097          	auipc	ra,0x2
     2a78:	ef8080e7          	jalr	-264(ra) # 496c <chdir>
     2a7c:	e951                	bnez	a0,2b10 <rmdot+0xc2>
   if(remove(".") == 0){
     2a7e:	00003517          	auipc	a0,0x3
-    2a82:	55250513          	addi	a0,a0,1362 # 5fd0 <malloc+0x124c>
+    2a82:	55a50513          	addi	a0,a0,1370 # 5fd8 <malloc+0x124a>
     2a86:	00002097          	auipc	ra,0x2
     2a8a:	f3a080e7          	jalr	-198(ra) # 49c0 <remove>
     2a8e:	cd59                	beqz	a0,2b2c <rmdot+0xde>
   if(remove("..") == 0){
     2a90:	00003517          	auipc	a0,0x3
-    2a94:	56050513          	addi	a0,a0,1376 # 5ff0 <malloc+0x126c>
+    2a94:	56850513          	addi	a0,a0,1384 # 5ff8 <malloc+0x126a>
     2a98:	00002097          	auipc	ra,0x2
     2a9c:	f28080e7          	jalr	-216(ra) # 49c0 <remove>
     2aa0:	c545                	beqz	a0,2b48 <rmdot+0xfa>
   if(chdir("/") != 0){
     2aa2:	00003517          	auipc	a0,0x3
-    2aa6:	13650513          	addi	a0,a0,310 # 5bd8 <malloc+0xe54>
+    2aa6:	13e50513          	addi	a0,a0,318 # 5be0 <malloc+0xe52>
     2aaa:	00002097          	auipc	ra,0x2
     2aae:	ec2080e7          	jalr	-318(ra) # 496c <chdir>
     2ab2:	e94d                	bnez	a0,2b64 <rmdot+0x116>
   if(remove("dots/.") == 0){
     2ab4:	00003517          	auipc	a0,0x3
-    2ab8:	55c50513          	addi	a0,a0,1372 # 6010 <malloc+0x128c>
+    2ab8:	56450513          	addi	a0,a0,1380 # 6018 <malloc+0x128a>
     2abc:	00002097          	auipc	ra,0x2
     2ac0:	f04080e7          	jalr	-252(ra) # 49c0 <remove>
     2ac4:	cd55                	beqz	a0,2b80 <rmdot+0x132>
   if(remove("dots/..") == 0){
     2ac6:	00003517          	auipc	a0,0x3
-    2aca:	57250513          	addi	a0,a0,1394 # 6038 <malloc+0x12b4>
+    2aca:	57a50513          	addi	a0,a0,1402 # 6040 <malloc+0x12b2>
     2ace:	00002097          	auipc	ra,0x2
     2ad2:	ef2080e7          	jalr	-270(ra) # 49c0 <remove>
     2ad6:	c179                	beqz	a0,2b9c <rmdot+0x14e>
   if(remove("dots") != 0){
     2ad8:	00003517          	auipc	a0,0x3
-    2adc:	4c050513          	addi	a0,a0,1216 # 5f98 <malloc+0x1214>
+    2adc:	4c850513          	addi	a0,a0,1224 # 5fa0 <malloc+0x1212>
     2ae0:	00002097          	auipc	ra,0x2
     2ae4:	ee0080e7          	jalr	-288(ra) # 49c0 <remove>
     2ae8:	e961                	bnez	a0,2bb8 <rmdot+0x16a>
@@ -4438,9 +4438,9 @@ execout(char *s)
     printf("%s: mkdir dots failed\n", s);
     2af4:	85a6                	mv	a1,s1
     2af6:	00003517          	auipc	a0,0x3
-    2afa:	4aa50513          	addi	a0,a0,1194 # 5fa0 <malloc+0x121c>
+    2afa:	4b250513          	addi	a0,a0,1202 # 5fa8 <malloc+0x121a>
     2afe:	00002097          	auipc	ra,0x2
-    2b02:	1ce080e7          	jalr	462(ra) # 4ccc <printf>
+    2b02:	1d8080e7          	jalr	472(ra) # 4cd6 <printf>
     exit(1);
     2b06:	4505                	li	a0,1
     2b08:	00002097          	auipc	ra,0x2
@@ -4448,9 +4448,9 @@ execout(char *s)
     printf("%s: chdir dots failed\n", s);
     2b10:	85a6                	mv	a1,s1
     2b12:	00003517          	auipc	a0,0x3
-    2b16:	4a650513          	addi	a0,a0,1190 # 5fb8 <malloc+0x1234>
+    2b16:	4ae50513          	addi	a0,a0,1198 # 5fc0 <malloc+0x1232>
     2b1a:	00002097          	auipc	ra,0x2
-    2b1e:	1b2080e7          	jalr	434(ra) # 4ccc <printf>
+    2b1e:	1bc080e7          	jalr	444(ra) # 4cd6 <printf>
     exit(1);
     2b22:	4505                	li	a0,1
     2b24:	00002097          	auipc	ra,0x2
@@ -4458,9 +4458,9 @@ execout(char *s)
     printf("%s: rm . worked!\n", s);
     2b2c:	85a6                	mv	a1,s1
     2b2e:	00003517          	auipc	a0,0x3
-    2b32:	4aa50513          	addi	a0,a0,1194 # 5fd8 <malloc+0x1254>
+    2b32:	4b250513          	addi	a0,a0,1202 # 5fe0 <malloc+0x1252>
     2b36:	00002097          	auipc	ra,0x2
-    2b3a:	196080e7          	jalr	406(ra) # 4ccc <printf>
+    2b3a:	1a0080e7          	jalr	416(ra) # 4cd6 <printf>
     exit(1);
     2b3e:	4505                	li	a0,1
     2b40:	00002097          	auipc	ra,0x2
@@ -4468,9 +4468,9 @@ execout(char *s)
     printf("%s: rm .. worked!\n", s);
     2b48:	85a6                	mv	a1,s1
     2b4a:	00003517          	auipc	a0,0x3
-    2b4e:	4ae50513          	addi	a0,a0,1198 # 5ff8 <malloc+0x1274>
+    2b4e:	4b650513          	addi	a0,a0,1206 # 6000 <malloc+0x1272>
     2b52:	00002097          	auipc	ra,0x2
-    2b56:	17a080e7          	jalr	378(ra) # 4ccc <printf>
+    2b56:	184080e7          	jalr	388(ra) # 4cd6 <printf>
     exit(1);
     2b5a:	4505                	li	a0,1
     2b5c:	00002097          	auipc	ra,0x2
@@ -4478,9 +4478,9 @@ execout(char *s)
     printf("%s: chdir / failed\n", s);
     2b64:	85a6                	mv	a1,s1
     2b66:	00003517          	auipc	a0,0x3
-    2b6a:	07a50513          	addi	a0,a0,122 # 5be0 <malloc+0xe5c>
+    2b6a:	08250513          	addi	a0,a0,130 # 5be8 <malloc+0xe5a>
     2b6e:	00002097          	auipc	ra,0x2
-    2b72:	15e080e7          	jalr	350(ra) # 4ccc <printf>
+    2b72:	168080e7          	jalr	360(ra) # 4cd6 <printf>
     exit(1);
     2b76:	4505                	li	a0,1
     2b78:	00002097          	auipc	ra,0x2
@@ -4488,9 +4488,9 @@ execout(char *s)
     printf("%s: remove dots/. worked!\n", s);
     2b80:	85a6                	mv	a1,s1
     2b82:	00003517          	auipc	a0,0x3
-    2b86:	49650513          	addi	a0,a0,1174 # 6018 <malloc+0x1294>
+    2b86:	49e50513          	addi	a0,a0,1182 # 6020 <malloc+0x1292>
     2b8a:	00002097          	auipc	ra,0x2
-    2b8e:	142080e7          	jalr	322(ra) # 4ccc <printf>
+    2b8e:	14c080e7          	jalr	332(ra) # 4cd6 <printf>
     exit(1);
     2b92:	4505                	li	a0,1
     2b94:	00002097          	auipc	ra,0x2
@@ -4498,9 +4498,9 @@ execout(char *s)
     printf("%s: remove dots/.. worked!\n", s);
     2b9c:	85a6                	mv	a1,s1
     2b9e:	00003517          	auipc	a0,0x3
-    2ba2:	4a250513          	addi	a0,a0,1186 # 6040 <malloc+0x12bc>
+    2ba2:	4aa50513          	addi	a0,a0,1194 # 6048 <malloc+0x12ba>
     2ba6:	00002097          	auipc	ra,0x2
-    2baa:	126080e7          	jalr	294(ra) # 4ccc <printf>
+    2baa:	130080e7          	jalr	304(ra) # 4cd6 <printf>
     exit(1);
     2bae:	4505                	li	a0,1
     2bb0:	00002097          	auipc	ra,0x2
@@ -4508,9 +4508,9 @@ execout(char *s)
     printf("%s: remove dots failed!\n", s);
     2bb8:	85a6                	mv	a1,s1
     2bba:	00003517          	auipc	a0,0x3
-    2bbe:	4a650513          	addi	a0,a0,1190 # 6060 <malloc+0x12dc>
+    2bbe:	4ae50513          	addi	a0,a0,1198 # 6068 <malloc+0x12da>
     2bc2:	00002097          	auipc	ra,0x2
-    2bc6:	10a080e7          	jalr	266(ra) # 4ccc <printf>
+    2bc6:	114080e7          	jalr	276(ra) # 4cd6 <printf>
     exit(1);
     2bca:	4505                	li	a0,1
     2bcc:	00002097          	auipc	ra,0x2
@@ -4528,7 +4528,7 @@ execout(char *s)
   fd = open("dirfile", O_CREATE);
     2be2:	20000593          	li	a1,512
     2be6:	00003517          	auipc	a0,0x3
-    2bea:	49a50513          	addi	a0,a0,1178 # 6080 <malloc+0x12fc>
+    2bea:	4a250513          	addi	a0,a0,1186 # 6088 <malloc+0x12fa>
     2bee:	00002097          	auipc	ra,0x2
     2bf2:	d60080e7          	jalr	-672(ra) # 494e <open>
   if(fd < 0){
@@ -4538,14 +4538,14 @@ execout(char *s)
     2bfe:	d3a080e7          	jalr	-710(ra) # 4934 <close>
   if(chdir("dirfile") == 0){
     2c02:	00003517          	auipc	a0,0x3
-    2c06:	47e50513          	addi	a0,a0,1150 # 6080 <malloc+0x12fc>
+    2c06:	48650513          	addi	a0,a0,1158 # 6088 <malloc+0x12fa>
     2c0a:	00002097          	auipc	ra,0x2
     2c0e:	d62080e7          	jalr	-670(ra) # 496c <chdir>
     2c12:	cd69                	beqz	a0,2cec <dirfile+0x118>
   fd = open("dirfile/xx", 0);
     2c14:	4581                	li	a1,0
     2c16:	00003517          	auipc	a0,0x3
-    2c1a:	4b250513          	addi	a0,a0,1202 # 60c8 <malloc+0x1344>
+    2c1a:	4ba50513          	addi	a0,a0,1210 # 60d0 <malloc+0x1342>
     2c1e:	00002097          	auipc	ra,0x2
     2c22:	d30080e7          	jalr	-720(ra) # 494e <open>
   if(fd >= 0){
@@ -4553,33 +4553,33 @@ execout(char *s)
   fd = open("dirfile/xx", O_CREATE);
     2c2a:	20000593          	li	a1,512
     2c2e:	00003517          	auipc	a0,0x3
-    2c32:	49a50513          	addi	a0,a0,1178 # 60c8 <malloc+0x1344>
+    2c32:	4a250513          	addi	a0,a0,1186 # 60d0 <malloc+0x1342>
     2c36:	00002097          	auipc	ra,0x2
     2c3a:	d18080e7          	jalr	-744(ra) # 494e <open>
   if(fd >= 0){
     2c3e:	0e055363          	bgez	a0,2d24 <dirfile+0x150>
   if(mkdir("dirfile/xx") == 0){
     2c42:	00003517          	auipc	a0,0x3
-    2c46:	48650513          	addi	a0,a0,1158 # 60c8 <malloc+0x1344>
+    2c46:	48e50513          	addi	a0,a0,1166 # 60d0 <malloc+0x1342>
     2c4a:	00002097          	auipc	ra,0x2
     2c4e:	d18080e7          	jalr	-744(ra) # 4962 <mkdir>
     2c52:	c57d                	beqz	a0,2d40 <dirfile+0x16c>
   if(remove("dirfile/xx") == 0){
     2c54:	00003517          	auipc	a0,0x3
-    2c58:	47450513          	addi	a0,a0,1140 # 60c8 <malloc+0x1344>
+    2c58:	47c50513          	addi	a0,a0,1148 # 60d0 <malloc+0x1342>
     2c5c:	00002097          	auipc	ra,0x2
     2c60:	d64080e7          	jalr	-668(ra) # 49c0 <remove>
     2c64:	cd65                	beqz	a0,2d5c <dirfile+0x188>
   if(remove("dirfile") != 0){
     2c66:	00003517          	auipc	a0,0x3
-    2c6a:	41a50513          	addi	a0,a0,1050 # 6080 <malloc+0x12fc>
+    2c6a:	42250513          	addi	a0,a0,1058 # 6088 <malloc+0x12fa>
     2c6e:	00002097          	auipc	ra,0x2
     2c72:	d52080e7          	jalr	-686(ra) # 49c0 <remove>
     2c76:	10051163          	bnez	a0,2d78 <dirfile+0x1a4>
   fd = open(".", O_RDWR);
     2c7a:	4589                	li	a1,2
     2c7c:	00003517          	auipc	a0,0x3
-    2c80:	35450513          	addi	a0,a0,852 # 5fd0 <malloc+0x124c>
+    2c80:	35c50513          	addi	a0,a0,860 # 5fd8 <malloc+0x124a>
     2c84:	00002097          	auipc	ra,0x2
     2c88:	cca080e7          	jalr	-822(ra) # 494e <open>
   if(fd >= 0){
@@ -4587,14 +4587,14 @@ execout(char *s)
   fd = open(".", 0);
     2c90:	4581                	li	a1,0
     2c92:	00003517          	auipc	a0,0x3
-    2c96:	33e50513          	addi	a0,a0,830 # 5fd0 <malloc+0x124c>
+    2c96:	34650513          	addi	a0,a0,838 # 5fd8 <malloc+0x124a>
     2c9a:	00002097          	auipc	ra,0x2
     2c9e:	cb4080e7          	jalr	-844(ra) # 494e <open>
     2ca2:	84aa                	mv	s1,a0
   if(write(fd, "x", 1) > 0){
     2ca4:	4605                	li	a2,1
     2ca6:	00002597          	auipc	a1,0x2
-    2caa:	2aa58593          	addi	a1,a1,682 # 4f50 <malloc+0x1cc>
+    2caa:	2b258593          	addi	a1,a1,690 # 4f58 <malloc+0x1ca>
     2cae:	00002097          	auipc	ra,0x2
     2cb2:	c7c080e7          	jalr	-900(ra) # 492a <write>
     2cb6:	0ea04d63          	bgtz	a0,2db0 <dirfile+0x1dc>
@@ -4612,9 +4612,9 @@ execout(char *s)
     printf("%s: create dirfile failed\n", s);
     2cd0:	85ca                	mv	a1,s2
     2cd2:	00003517          	auipc	a0,0x3
-    2cd6:	3b650513          	addi	a0,a0,950 # 6088 <malloc+0x1304>
+    2cd6:	3be50513          	addi	a0,a0,958 # 6090 <malloc+0x1302>
     2cda:	00002097          	auipc	ra,0x2
-    2cde:	ff2080e7          	jalr	-14(ra) # 4ccc <printf>
+    2cde:	ffc080e7          	jalr	-4(ra) # 4cd6 <printf>
     exit(1);
     2ce2:	4505                	li	a0,1
     2ce4:	00002097          	auipc	ra,0x2
@@ -4622,9 +4622,9 @@ execout(char *s)
     printf("%s: chdir dirfile succeeded!\n", s);
     2cec:	85ca                	mv	a1,s2
     2cee:	00003517          	auipc	a0,0x3
-    2cf2:	3ba50513          	addi	a0,a0,954 # 60a8 <malloc+0x1324>
+    2cf2:	3c250513          	addi	a0,a0,962 # 60b0 <malloc+0x1322>
     2cf6:	00002097          	auipc	ra,0x2
-    2cfa:	fd6080e7          	jalr	-42(ra) # 4ccc <printf>
+    2cfa:	fe0080e7          	jalr	-32(ra) # 4cd6 <printf>
     exit(1);
     2cfe:	4505                	li	a0,1
     2d00:	00002097          	auipc	ra,0x2
@@ -4632,9 +4632,9 @@ execout(char *s)
     printf("%s: create dirfile/xx succeeded!\n", s);
     2d08:	85ca                	mv	a1,s2
     2d0a:	00003517          	auipc	a0,0x3
-    2d0e:	3ce50513          	addi	a0,a0,974 # 60d8 <malloc+0x1354>
+    2d0e:	3d650513          	addi	a0,a0,982 # 60e0 <malloc+0x1352>
     2d12:	00002097          	auipc	ra,0x2
-    2d16:	fba080e7          	jalr	-70(ra) # 4ccc <printf>
+    2d16:	fc4080e7          	jalr	-60(ra) # 4cd6 <printf>
     exit(1);
     2d1a:	4505                	li	a0,1
     2d1c:	00002097          	auipc	ra,0x2
@@ -4642,9 +4642,9 @@ execout(char *s)
     printf("%s: create dirfile/xx succeeded!\n", s);
     2d24:	85ca                	mv	a1,s2
     2d26:	00003517          	auipc	a0,0x3
-    2d2a:	3b250513          	addi	a0,a0,946 # 60d8 <malloc+0x1354>
+    2d2a:	3ba50513          	addi	a0,a0,954 # 60e0 <malloc+0x1352>
     2d2e:	00002097          	auipc	ra,0x2
-    2d32:	f9e080e7          	jalr	-98(ra) # 4ccc <printf>
+    2d32:	fa8080e7          	jalr	-88(ra) # 4cd6 <printf>
     exit(1);
     2d36:	4505                	li	a0,1
     2d38:	00002097          	auipc	ra,0x2
@@ -4652,9 +4652,9 @@ execout(char *s)
     printf("%s: mkdir dirfile/xx succeeded!\n", s);
     2d40:	85ca                	mv	a1,s2
     2d42:	00003517          	auipc	a0,0x3
-    2d46:	3be50513          	addi	a0,a0,958 # 6100 <malloc+0x137c>
+    2d46:	3c650513          	addi	a0,a0,966 # 6108 <malloc+0x137a>
     2d4a:	00002097          	auipc	ra,0x2
-    2d4e:	f82080e7          	jalr	-126(ra) # 4ccc <printf>
+    2d4e:	f8c080e7          	jalr	-116(ra) # 4cd6 <printf>
     exit(1);
     2d52:	4505                	li	a0,1
     2d54:	00002097          	auipc	ra,0x2
@@ -4662,9 +4662,9 @@ execout(char *s)
     printf("%s: remove dirfile/xx succeeded!\n", s);
     2d5c:	85ca                	mv	a1,s2
     2d5e:	00003517          	auipc	a0,0x3
-    2d62:	3ca50513          	addi	a0,a0,970 # 6128 <malloc+0x13a4>
+    2d62:	3d250513          	addi	a0,a0,978 # 6130 <malloc+0x13a2>
     2d66:	00002097          	auipc	ra,0x2
-    2d6a:	f66080e7          	jalr	-154(ra) # 4ccc <printf>
+    2d6a:	f70080e7          	jalr	-144(ra) # 4cd6 <printf>
     exit(1);
     2d6e:	4505                	li	a0,1
     2d70:	00002097          	auipc	ra,0x2
@@ -4672,9 +4672,9 @@ execout(char *s)
     printf("%s: remove dirfile failed!\n", s);
     2d78:	85ca                	mv	a1,s2
     2d7a:	00003517          	auipc	a0,0x3
-    2d7e:	3d650513          	addi	a0,a0,982 # 6150 <malloc+0x13cc>
+    2d7e:	3de50513          	addi	a0,a0,990 # 6158 <malloc+0x13ca>
     2d82:	00002097          	auipc	ra,0x2
-    2d86:	f4a080e7          	jalr	-182(ra) # 4ccc <printf>
+    2d86:	f54080e7          	jalr	-172(ra) # 4cd6 <printf>
     exit(1);
     2d8a:	4505                	li	a0,1
     2d8c:	00002097          	auipc	ra,0x2
@@ -4682,9 +4682,9 @@ execout(char *s)
     printf("%s: open . for writing succeeded!\n", s);
     2d94:	85ca                	mv	a1,s2
     2d96:	00003517          	auipc	a0,0x3
-    2d9a:	3da50513          	addi	a0,a0,986 # 6170 <malloc+0x13ec>
+    2d9a:	3e250513          	addi	a0,a0,994 # 6178 <malloc+0x13ea>
     2d9e:	00002097          	auipc	ra,0x2
-    2da2:	f2e080e7          	jalr	-210(ra) # 4ccc <printf>
+    2da2:	f38080e7          	jalr	-200(ra) # 4cd6 <printf>
     exit(1);
     2da6:	4505                	li	a0,1
     2da8:	00002097          	auipc	ra,0x2
@@ -4692,9 +4692,9 @@ execout(char *s)
     printf("%s: write . succeeded!\n", s);
     2db0:	85ca                	mv	a1,s2
     2db2:	00003517          	auipc	a0,0x3
-    2db6:	3e650513          	addi	a0,a0,998 # 6198 <malloc+0x1414>
+    2db6:	3ee50513          	addi	a0,a0,1006 # 61a0 <malloc+0x1412>
     2dba:	00002097          	auipc	ra,0x2
-    2dbe:	f12080e7          	jalr	-238(ra) # 4ccc <printf>
+    2dbe:	f1c080e7          	jalr	-228(ra) # 4cd6 <printf>
     exit(1);
     2dc2:	4505                	li	a0,1
     2dc4:	00002097          	auipc	ra,0x2
@@ -4715,20 +4715,20 @@ execout(char *s)
     2de0:	02e00493          	li	s1,46
     if(mkdir("irefd") != 0){
     2de4:	00003917          	auipc	s2,0x3
-    2de8:	3cc90913          	addi	s2,s2,972 # 61b0 <malloc+0x142c>
+    2de8:	3d490913          	addi	s2,s2,980 # 61b8 <malloc+0x142a>
     mkdir("");
     2dec:	00003a17          	auipc	s4,0x3
-    2df0:	05ca0a13          	addi	s4,s4,92 # 5e48 <malloc+0x10c4>
+    2df0:	064a0a13          	addi	s4,s4,100 # 5e50 <malloc+0x10c2>
     fd = open("xx", O_CREATE);
     2df4:	00003997          	auipc	s3,0x3
-    2df8:	2dc98993          	addi	s3,s3,732 # 60d0 <malloc+0x134c>
+    2df8:	2e498993          	addi	s3,s3,740 # 60d8 <malloc+0x134a>
     2dfc:	a889                	j	2e4e <iref+0x82>
       printf("%s: mkdir irefd failed\n", s);
     2dfe:	85d6                	mv	a1,s5
     2e00:	00003517          	auipc	a0,0x3
-    2e04:	3b850513          	addi	a0,a0,952 # 61b8 <malloc+0x1434>
+    2e04:	3c050513          	addi	a0,a0,960 # 61c0 <malloc+0x1432>
     2e08:	00002097          	auipc	ra,0x2
-    2e0c:	ec4080e7          	jalr	-316(ra) # 4ccc <printf>
+    2e0c:	ece080e7          	jalr	-306(ra) # 4cd6 <printf>
       exit(1);
     2e10:	4505                	li	a0,1
     2e12:	00002097          	auipc	ra,0x2
@@ -4736,9 +4736,9 @@ execout(char *s)
       printf("%s: chdir irefd failed\n", s);
     2e1a:	85d6                	mv	a1,s5
     2e1c:	00003517          	auipc	a0,0x3
-    2e20:	3b450513          	addi	a0,a0,948 # 61d0 <malloc+0x144c>
+    2e20:	3bc50513          	addi	a0,a0,956 # 61d8 <malloc+0x144a>
     2e24:	00002097          	auipc	ra,0x2
-    2e28:	ea8080e7          	jalr	-344(ra) # 4ccc <printf>
+    2e28:	eb2080e7          	jalr	-334(ra) # 4cd6 <printf>
       exit(1);
     2e2c:	4505                	li	a0,1
     2e2e:	00002097          	auipc	ra,0x2
@@ -4789,10 +4789,10 @@ execout(char *s)
     2e9e:	03300493          	li	s1,51
     chdir("..");
     2ea2:	00003997          	auipc	s3,0x3
-    2ea6:	14e98993          	addi	s3,s3,334 # 5ff0 <malloc+0x126c>
+    2ea6:	15698993          	addi	s3,s3,342 # 5ff8 <malloc+0x126a>
     remove("irefd");
     2eaa:	00003917          	auipc	s2,0x3
-    2eae:	30690913          	addi	s2,s2,774 # 61b0 <malloc+0x142c>
+    2eae:	30e90913          	addi	s2,s2,782 # 61b8 <malloc+0x142a>
     chdir("..");
     2eb2:	854e                	mv	a0,s3
     2eb4:	00002097          	auipc	ra,0x2
@@ -4806,7 +4806,7 @@ execout(char *s)
     2ec8:	f4ed                	bnez	s1,2eb2 <iref+0xe6>
   chdir("/");
     2eca:	00003517          	auipc	a0,0x3
-    2ece:	d0e50513          	addi	a0,a0,-754 # 5bd8 <malloc+0xe54>
+    2ece:	d1650513          	addi	a0,a0,-746 # 5be0 <malloc+0xe52>
     2ed2:	00002097          	auipc	ra,0x2
     2ed6:	a9a080e7          	jalr	-1382(ra) # 496c <chdir>
 }
@@ -4830,7 +4830,7 @@ execout(char *s)
     2ef6:	84aa                	mv	s1,a0
   if(mkdir("oidir") < 0){
     2ef8:	00003517          	auipc	a0,0x3
-    2efc:	2f050513          	addi	a0,a0,752 # 61e8 <malloc+0x1464>
+    2efc:	2f850513          	addi	a0,a0,760 # 61f0 <malloc+0x1462>
     2f00:	00002097          	auipc	ra,0x2
     2f04:	a62080e7          	jalr	-1438(ra) # 4962 <mkdir>
     2f08:	04054263          	bltz	a0,2f4c <openiputtest+0x60>
@@ -4844,7 +4844,7 @@ execout(char *s)
     int fd = open("oidir", O_RDWR);
     2f1a:	4589                	li	a1,2
     2f1c:	00003517          	auipc	a0,0x3
-    2f20:	2cc50513          	addi	a0,a0,716 # 61e8 <malloc+0x1464>
+    2f20:	2d450513          	addi	a0,a0,724 # 61f0 <malloc+0x1462>
     2f24:	00002097          	auipc	ra,0x2
     2f28:	a2a080e7          	jalr	-1494(ra) # 494e <open>
     if(fd >= 0){
@@ -4852,9 +4852,9 @@ execout(char *s)
       printf("%s: open directory for write succeeded\n", s);
     2f30:	85a6                	mv	a1,s1
     2f32:	00003517          	auipc	a0,0x3
-    2f36:	2d650513          	addi	a0,a0,726 # 6208 <malloc+0x1484>
+    2f36:	2de50513          	addi	a0,a0,734 # 6210 <malloc+0x1482>
     2f3a:	00002097          	auipc	ra,0x2
-    2f3e:	d92080e7          	jalr	-622(ra) # 4ccc <printf>
+    2f3e:	d9c080e7          	jalr	-612(ra) # 4cd6 <printf>
       exit(1);
     2f42:	4505                	li	a0,1
     2f44:	00002097          	auipc	ra,0x2
@@ -4862,9 +4862,9 @@ execout(char *s)
     printf("%s: mkdir oidir failed\n", s);
     2f4c:	85a6                	mv	a1,s1
     2f4e:	00003517          	auipc	a0,0x3
-    2f52:	2a250513          	addi	a0,a0,674 # 61f0 <malloc+0x146c>
+    2f52:	2aa50513          	addi	a0,a0,682 # 61f8 <malloc+0x146a>
     2f56:	00002097          	auipc	ra,0x2
-    2f5a:	d76080e7          	jalr	-650(ra) # 4ccc <printf>
+    2f5a:	d80080e7          	jalr	-640(ra) # 4cd6 <printf>
     exit(1);
     2f5e:	4505                	li	a0,1
     2f60:	00002097          	auipc	ra,0x2
@@ -4872,9 +4872,9 @@ execout(char *s)
     printf("%s: fork failed\n", s);
     2f68:	85a6                	mv	a1,s1
     2f6a:	00002517          	auipc	a0,0x2
-    2f6e:	60650513          	addi	a0,a0,1542 # 5570 <malloc+0x7ec>
+    2f6e:	60e50513          	addi	a0,a0,1550 # 5578 <malloc+0x7ea>
     2f72:	00002097          	auipc	ra,0x2
-    2f76:	d5a080e7          	jalr	-678(ra) # 4ccc <printf>
+    2f76:	d64080e7          	jalr	-668(ra) # 4cd6 <printf>
     exit(1);
     2f7a:	4505                	li	a0,1
     2f7c:	00002097          	auipc	ra,0x2
@@ -4889,16 +4889,16 @@ execout(char *s)
     2f94:	a00080e7          	jalr	-1536(ra) # 4990 <sleep>
   if(remove("oidir") != 0){
     2f98:	00003517          	auipc	a0,0x3
-    2f9c:	25050513          	addi	a0,a0,592 # 61e8 <malloc+0x1464>
+    2f9c:	25850513          	addi	a0,a0,600 # 61f0 <malloc+0x1462>
     2fa0:	00002097          	auipc	ra,0x2
     2fa4:	a20080e7          	jalr	-1504(ra) # 49c0 <remove>
     2fa8:	cd19                	beqz	a0,2fc6 <openiputtest+0xda>
     printf("%s: remove failed\n", s);
     2faa:	85a6                	mv	a1,s1
     2fac:	00003517          	auipc	a0,0x3
-    2fb0:	28450513          	addi	a0,a0,644 # 6230 <malloc+0x14ac>
+    2fb0:	28c50513          	addi	a0,a0,652 # 6238 <malloc+0x14aa>
     2fb4:	00002097          	auipc	ra,0x2
-    2fb8:	d18080e7          	jalr	-744(ra) # 4ccc <printf>
+    2fb8:	d22080e7          	jalr	-734(ra) # 4cd6 <printf>
     exit(1);
     2fbc:	4505                	li	a0,1
     2fbe:	00002097          	auipc	ra,0x2
@@ -4922,7 +4922,7 @@ execout(char *s)
     2fe8:	84aa                	mv	s1,a0
   remove("stopforking");
     2fea:	00003517          	auipc	a0,0x3
-    2fee:	25e50513          	addi	a0,a0,606 # 6248 <malloc+0x14c4>
+    2fee:	26650513          	addi	a0,a0,614 # 6250 <malloc+0x14c2>
     2ff2:	00002097          	auipc	ra,0x2
     2ff6:	9ce080e7          	jalr	-1586(ra) # 49c0 <remove>
   int pid = fork();
@@ -4939,7 +4939,7 @@ execout(char *s)
   close(open("stopforking", O_CREATE|O_RDWR));
     3012:	20200593          	li	a1,514
     3016:	00003517          	auipc	a0,0x3
-    301a:	23250513          	addi	a0,a0,562 # 6248 <malloc+0x14c4>
+    301a:	23a50513          	addi	a0,a0,570 # 6250 <malloc+0x14c2>
     301e:	00002097          	auipc	ra,0x2
     3022:	930080e7          	jalr	-1744(ra) # 494e <open>
     3026:	00002097          	auipc	ra,0x2
@@ -4954,7 +4954,7 @@ execout(char *s)
     303e:	956080e7          	jalr	-1706(ra) # 4990 <sleep>
   remove("stopforking");
     3042:	00003517          	auipc	a0,0x3
-    3046:	20650513          	addi	a0,a0,518 # 6248 <malloc+0x14c4>
+    3046:	20e50513          	addi	a0,a0,526 # 6250 <malloc+0x14c2>
     304a:	00002097          	auipc	ra,0x2
     304e:	976080e7          	jalr	-1674(ra) # 49c0 <remove>
 }
@@ -4966,16 +4966,16 @@ execout(char *s)
     printf("%s: fork failed", s);
     305c:	85a6                	mv	a1,s1
     305e:	00002517          	auipc	a0,0x2
-    3062:	6d250513          	addi	a0,a0,1746 # 5730 <malloc+0x9ac>
+    3062:	6da50513          	addi	a0,a0,1754 # 5738 <malloc+0x9aa>
     3066:	00002097          	auipc	ra,0x2
-    306a:	c66080e7          	jalr	-922(ra) # 4ccc <printf>
+    306a:	c70080e7          	jalr	-912(ra) # 4cd6 <printf>
     exit(1);
     306e:	4505                	li	a0,1
     3070:	00002097          	auipc	ra,0x2
     3074:	894080e7          	jalr	-1900(ra) # 4904 <exit>
       int fd = open("stopforking", 0);
     3078:	00003497          	auipc	s1,0x3
-    307c:	1d048493          	addi	s1,s1,464 # 6248 <malloc+0x14c4>
+    307c:	1d848493          	addi	s1,s1,472 # 6250 <malloc+0x14c2>
     3080:	4581                	li	a1,0
     3082:	8526                	mv	a0,s1
     3084:	00002097          	auipc	ra,0x2
@@ -5022,9 +5022,9 @@ execout(char *s)
     30e0:	a001                	j	30e0 <preempt+0x22>
     printf("%s: fork failed");
     30e2:	00002517          	auipc	a0,0x2
-    30e6:	64e50513          	addi	a0,a0,1614 # 5730 <malloc+0x9ac>
+    30e6:	65650513          	addi	a0,a0,1622 # 5738 <malloc+0x9aa>
     30ea:	00002097          	auipc	ra,0x2
-    30ee:	be2080e7          	jalr	-1054(ra) # 4ccc <printf>
+    30ee:	bec080e7          	jalr	-1044(ra) # 4cd6 <printf>
     exit(1);
     30f2:	4505                	li	a0,1
     30f4:	00002097          	auipc	ra,0x2
@@ -5042,9 +5042,9 @@ execout(char *s)
     printf("%s: fork failed\n", s);
     310e:	85ca                	mv	a1,s2
     3110:	00002517          	auipc	a0,0x2
-    3114:	46050513          	addi	a0,a0,1120 # 5570 <malloc+0x7ec>
+    3114:	46850513          	addi	a0,a0,1128 # 5578 <malloc+0x7ea>
     3118:	00002097          	auipc	ra,0x2
-    311c:	bb4080e7          	jalr	-1100(ra) # 4ccc <printf>
+    311c:	bbe080e7          	jalr	-1090(ra) # 4cd6 <printf>
     exit(1);
     3120:	4505                	li	a0,1
     3122:	00001097          	auipc	ra,0x1
@@ -5068,7 +5068,7 @@ execout(char *s)
     if(write(pfds[1], "x", 1) != 1)
     3152:	4605                	li	a2,1
     3154:	00002597          	auipc	a1,0x2
-    3158:	dfc58593          	addi	a1,a1,-516 # 4f50 <malloc+0x1cc>
+    3158:	e0458593          	addi	a1,a1,-508 # 4f58 <malloc+0x1ca>
     315c:	fcc42503          	lw	a0,-52(s0)
     3160:	00001097          	auipc	ra,0x1
     3164:	7ca080e7          	jalr	1994(ra) # 492a <write>
@@ -5083,18 +5083,18 @@ execout(char *s)
      printf("%s: fork failed\n", s);
     317c:	85ca                	mv	a1,s2
     317e:	00002517          	auipc	a0,0x2
-    3182:	3f250513          	addi	a0,a0,1010 # 5570 <malloc+0x7ec>
+    3182:	3fa50513          	addi	a0,a0,1018 # 5578 <malloc+0x7ea>
     3186:	00002097          	auipc	ra,0x2
-    318a:	b46080e7          	jalr	-1210(ra) # 4ccc <printf>
+    318a:	b50080e7          	jalr	-1200(ra) # 4cd6 <printf>
      exit(1);
     318e:	4505                	li	a0,1
     3190:	00001097          	auipc	ra,0x1
     3194:	774080e7          	jalr	1908(ra) # 4904 <exit>
       printf("%s: preempt write error");
     3198:	00003517          	auipc	a0,0x3
-    319c:	0c050513          	addi	a0,a0,192 # 6258 <malloc+0x14d4>
+    319c:	0c850513          	addi	a0,a0,200 # 6260 <malloc+0x14d2>
     31a0:	00002097          	auipc	ra,0x2
-    31a4:	b2c080e7          	jalr	-1236(ra) # 4ccc <printf>
+    31a4:	b36080e7          	jalr	-1226(ra) # 4cd6 <printf>
     31a8:	b7d9                	j	316e <preempt+0xb0>
   close(pfds[1]);
     31aa:	fcc42503          	lw	a0,-52(s0)
@@ -5104,7 +5104,7 @@ execout(char *s)
     31b6:	6609                	lui	a2,0x2
     31b8:	80060613          	addi	a2,a2,-2048 # 1800 <forkfork+0x42>
     31bc:	00007597          	auipc	a1,0x7
-    31c0:	6dc58593          	addi	a1,a1,1756 # a898 <buf>
+    31c0:	6e458593          	addi	a1,a1,1764 # a8a0 <buf>
     31c4:	fc842503          	lw	a0,-56(s0)
     31c8:	00001097          	auipc	ra,0x1
     31cc:	758080e7          	jalr	1880(ra) # 4920 <read>
@@ -5112,9 +5112,9 @@ execout(char *s)
     31d2:	02f50263          	beq	a0,a5,31f6 <preempt+0x138>
     printf("%s: preempt read error");
     31d6:	00003517          	auipc	a0,0x3
-    31da:	09a50513          	addi	a0,a0,154 # 6270 <malloc+0x14ec>
+    31da:	0a250513          	addi	a0,a0,162 # 6278 <malloc+0x14ea>
     31de:	00002097          	auipc	ra,0x2
-    31e2:	aee080e7          	jalr	-1298(ra) # 4ccc <printf>
+    31e2:	af8080e7          	jalr	-1288(ra) # 4cd6 <printf>
 }
     31e6:	70e2                	ld	ra,56(sp)
     31e8:	7442                	ld	s0,48(sp)
@@ -5130,9 +5130,9 @@ execout(char *s)
     31fe:	73a080e7          	jalr	1850(ra) # 4934 <close>
   printf("kill... ");
     3202:	00003517          	auipc	a0,0x3
-    3206:	08650513          	addi	a0,a0,134 # 6288 <malloc+0x1504>
+    3206:	08e50513          	addi	a0,a0,142 # 6290 <malloc+0x1502>
     320a:	00002097          	auipc	ra,0x2
-    320e:	ac2080e7          	jalr	-1342(ra) # 4ccc <printf>
+    320e:	acc080e7          	jalr	-1332(ra) # 4cd6 <printf>
   kill(pid1);
     3212:	8526                	mv	a0,s1
     3214:	00001097          	auipc	ra,0x1
@@ -5147,9 +5147,9 @@ execout(char *s)
     322c:	716080e7          	jalr	1814(ra) # 493e <kill>
   printf("wait... ");
     3230:	00003517          	auipc	a0,0x3
-    3234:	06850513          	addi	a0,a0,104 # 6298 <malloc+0x1514>
+    3234:	07050513          	addi	a0,a0,112 # 62a0 <malloc+0x1512>
     3238:	00002097          	auipc	ra,0x2
-    323c:	a94080e7          	jalr	-1388(ra) # 4ccc <printf>
+    323c:	a9e080e7          	jalr	-1378(ra) # 4cd6 <printf>
   wait(0);
     3240:	4501                	li	a0,0
     3242:	00001097          	auipc	ra,0x1
@@ -5193,9 +5193,9 @@ execout(char *s)
     printf("%s: pipe() failed\n", s);
     3296:	85da                	mv	a1,s6
     3298:	00002517          	auipc	a0,0x2
-    329c:	3e050513          	addi	a0,a0,992 # 5678 <malloc+0x8f4>
+    329c:	3e850513          	addi	a0,a0,1000 # 5680 <malloc+0x8f2>
     32a0:	00002097          	auipc	ra,0x2
-    32a4:	a2c080e7          	jalr	-1492(ra) # 4ccc <printf>
+    32a4:	a36080e7          	jalr	-1482(ra) # 4cd6 <printf>
     exit(1);
     32a8:	4505                	li	a0,1
     32aa:	00001097          	auipc	ra,0x1
@@ -5210,7 +5210,7 @@ execout(char *s)
       write(fds[1], "x", 1);
     32ca:	4605                	li	a2,1
     32cc:	00002597          	auipc	a1,0x2
-    32d0:	c8458593          	addi	a1,a1,-892 # 4f50 <malloc+0x1cc>
+    32d0:	c8c58593          	addi	a1,a1,-884 # 4f58 <malloc+0x1ca>
     32d4:	fb442503          	lw	a0,-76(s0)
     32d8:	00001097          	auipc	ra,0x1
     32dc:	652080e7          	jalr	1618(ra) # 492a <write>
@@ -5293,9 +5293,9 @@ execout(char *s)
     printf("%s: failed sbrk leaked memory\n", s);
     338e:	85da                	mv	a1,s6
     3390:	00003517          	auipc	a0,0x3
-    3394:	f1850513          	addi	a0,a0,-232 # 62a8 <malloc+0x1524>
+    3394:	f2050513          	addi	a0,a0,-224 # 62b0 <malloc+0x1522>
     3398:	00002097          	auipc	ra,0x2
-    339c:	934080e7          	jalr	-1740(ra) # 4ccc <printf>
+    339c:	93e080e7          	jalr	-1730(ra) # 4cd6 <printf>
     exit(1);
     33a0:	4505                	li	a0,1
     33a2:	00001097          	auipc	ra,0x1
@@ -5303,9 +5303,9 @@ execout(char *s)
     printf("%s: fork failed\n", s);
     33aa:	85da                	mv	a1,s6
     33ac:	00002517          	auipc	a0,0x2
-    33b0:	1c450513          	addi	a0,a0,452 # 5570 <malloc+0x7ec>
+    33b0:	1cc50513          	addi	a0,a0,460 # 5578 <malloc+0x7ea>
     33b4:	00002097          	auipc	ra,0x2
-    33b8:	918080e7          	jalr	-1768(ra) # 4ccc <printf>
+    33b8:	922080e7          	jalr	-1758(ra) # 4cd6 <printf>
     exit(1);
     33bc:	4505                	li	a0,1
     33be:	00001097          	auipc	ra,0x1
@@ -5325,7 +5325,7 @@ execout(char *s)
     33e4:	993a                	add	s2,s2,a4
     33e6:	6705                	lui	a4,0x1
       n += *(a+i);
-    33e8:	0007c683          	lbu	a3,0(a5) # 6400000 <__BSS_END__+0x63f3f50>
+    33e8:	0007c683          	lbu	a3,0(a5) # 6400000 <__BSS_END__+0x63f3f48>
     33ec:	9cb5                	addw	s1,s1,a3
     for (i = 0; i < 10*BIG; i += PGSIZE) {
     33ee:	97ba                	add	a5,a5,a4
@@ -5333,9 +5333,9 @@ execout(char *s)
     printf("%s: allocate a lot of memory succeeded %d\n", n);
     33f4:	85a6                	mv	a1,s1
     33f6:	00003517          	auipc	a0,0x3
-    33fa:	ed250513          	addi	a0,a0,-302 # 62c8 <malloc+0x1544>
+    33fa:	eda50513          	addi	a0,a0,-294 # 62d0 <malloc+0x1542>
     33fe:	00002097          	auipc	ra,0x2
-    3402:	8ce080e7          	jalr	-1842(ra) # 4ccc <printf>
+    3402:	8d8080e7          	jalr	-1832(ra) # 4cd6 <printf>
     exit(1);
     3406:	4505                	li	a0,1
     3408:	00001097          	auipc	ra,0x1
@@ -5384,9 +5384,9 @@ execout(char *s)
       printf("%s: fork failed\n", s);
     3468:	85ce                	mv	a1,s3
     346a:	00002517          	auipc	a0,0x2
-    346e:	10650513          	addi	a0,a0,262 # 5570 <malloc+0x7ec>
+    346e:	10e50513          	addi	a0,a0,270 # 5578 <malloc+0x7ea>
     3472:	00002097          	auipc	ra,0x2
-    3476:	85a080e7          	jalr	-1958(ra) # 4ccc <printf>
+    3476:	864080e7          	jalr	-1948(ra) # 4cd6 <printf>
       exit(1);
     347a:	4505                	li	a0,1
     347c:	00001097          	auipc	ra,0x1
@@ -5394,9 +5394,9 @@ execout(char *s)
         printf("%s: wait wrong pid\n", s);
     3484:	85ce                	mv	a1,s3
     3486:	00002517          	auipc	a0,0x2
-    348a:	27250513          	addi	a0,a0,626 # 56f8 <malloc+0x974>
+    348a:	27a50513          	addi	a0,a0,634 # 5700 <malloc+0x972>
     348e:	00002097          	auipc	ra,0x2
-    3492:	83e080e7          	jalr	-1986(ra) # 4ccc <printf>
+    3492:	848080e7          	jalr	-1976(ra) # 4cd6 <printf>
         exit(1);
     3496:	4505                	li	a0,1
     3498:	00001097          	auipc	ra,0x1
@@ -5457,7 +5457,7 @@ execout(char *s)
     while((m2 = malloc(10001)) != 0){
     350e:	854a                	mv	a0,s2
     3510:	00002097          	auipc	ra,0x2
-    3514:	874080e7          	jalr	-1932(ra) # 4d84 <malloc>
+    3514:	87e080e7          	jalr	-1922(ra) # 4d8e <malloc>
     3518:	f96d                	bnez	a0,350a <mem+0x40>
     while(m1){
     351a:	c881                	beqz	s1,352a <mem+0x60>
@@ -5466,18 +5466,18 @@ execout(char *s)
     351e:	6084                	ld	s1,0(s1)
       free(m1);
     3520:	00001097          	auipc	ra,0x1
-    3524:	7e2080e7          	jalr	2018(ra) # 4d02 <free>
+    3524:	7ec080e7          	jalr	2028(ra) # 4d0c <free>
     while(m1){
     3528:	f8f5                	bnez	s1,351c <mem+0x52>
     m1 = malloc(1024*20);
     352a:	6515                	lui	a0,0x5
     352c:	00002097          	auipc	ra,0x2
-    3530:	858080e7          	jalr	-1960(ra) # 4d84 <malloc>
+    3530:	862080e7          	jalr	-1950(ra) # 4d8e <malloc>
     if(m1 == 0){
     3534:	c911                	beqz	a0,3548 <mem+0x7e>
     free(m1);
     3536:	00001097          	auipc	ra,0x1
-    353a:	7cc080e7          	jalr	1996(ra) # 4d02 <free>
+    353a:	7d6080e7          	jalr	2006(ra) # 4d0c <free>
     exit(0);
     353e:	4501                	li	a0,0
     3540:	00001097          	auipc	ra,0x1
@@ -5485,9 +5485,9 @@ execout(char *s)
       printf("couldn't allocate mem?!!\n", s);
     3548:	85ce                	mv	a1,s3
     354a:	00003517          	auipc	a0,0x3
-    354e:	dae50513          	addi	a0,a0,-594 # 62f8 <malloc+0x1574>
+    354e:	db650513          	addi	a0,a0,-586 # 6300 <malloc+0x1572>
     3552:	00001097          	auipc	ra,0x1
-    3556:	77a080e7          	jalr	1914(ra) # 4ccc <printf>
+    3556:	784080e7          	jalr	1924(ra) # 4cd6 <printf>
       exit(1);
     355a:	4505                	li	a0,1
     355c:	00001097          	auipc	ra,0x1
@@ -5514,13 +5514,13 @@ execout(char *s)
     3586:	8aaa                	mv	s5,a0
   remove("sharedfd");
     3588:	00003517          	auipc	a0,0x3
-    358c:	d9050513          	addi	a0,a0,-624 # 6318 <malloc+0x1594>
+    358c:	d9850513          	addi	a0,a0,-616 # 6320 <malloc+0x1592>
     3590:	00001097          	auipc	ra,0x1
     3594:	430080e7          	jalr	1072(ra) # 49c0 <remove>
   fd = open("sharedfd", O_CREATE|O_RDWR);
     3598:	20200593          	li	a1,514
     359c:	00003517          	auipc	a0,0x3
-    35a0:	d7c50513          	addi	a0,a0,-644 # 6318 <malloc+0x1594>
+    35a0:	d8450513          	addi	a0,a0,-636 # 6320 <malloc+0x1592>
     35a4:	00001097          	auipc	ra,0x1
     35a8:	3aa080e7          	jalr	938(ra) # 494e <open>
   if(fd < 0){
@@ -5560,9 +5560,9 @@ execout(char *s)
     printf("%s: cannot open sharedfd for writing", s);
     3602:	85d6                	mv	a1,s5
     3604:	00003517          	auipc	a0,0x3
-    3608:	d2450513          	addi	a0,a0,-732 # 6328 <malloc+0x15a4>
+    3608:	d2c50513          	addi	a0,a0,-724 # 6330 <malloc+0x15a2>
     360c:	00001097          	auipc	ra,0x1
-    3610:	6c0080e7          	jalr	1728(ra) # 4ccc <printf>
+    3610:	6ca080e7          	jalr	1738(ra) # 4cd6 <printf>
     exit(1);
     3614:	4505                	li	a0,1
     3616:	00001097          	auipc	ra,0x1
@@ -5570,9 +5570,9 @@ execout(char *s)
       printf("%s: write sharedfd failed\n", s);
     361e:	85d6                	mv	a1,s5
     3620:	00003517          	auipc	a0,0x3
-    3624:	d3050513          	addi	a0,a0,-720 # 6350 <malloc+0x15cc>
+    3624:	d3850513          	addi	a0,a0,-712 # 6358 <malloc+0x15ca>
     3628:	00001097          	auipc	ra,0x1
-    362c:	6a4080e7          	jalr	1700(ra) # 4ccc <printf>
+    362c:	6ae080e7          	jalr	1710(ra) # 4cd6 <printf>
       exit(1);
     3630:	4505                	li	a0,1
     3632:	00001097          	auipc	ra,0x1
@@ -5595,7 +5595,7 @@ execout(char *s)
   fd = open("sharedfd", 0);
     3662:	4581                	li	a1,0
     3664:	00003517          	auipc	a0,0x3
-    3668:	cb450513          	addi	a0,a0,-844 # 6318 <malloc+0x1594>
+    3668:	cbc50513          	addi	a0,a0,-836 # 6320 <malloc+0x1592>
     366c:	00001097          	auipc	ra,0x1
     3670:	2e2080e7          	jalr	738(ra) # 494e <open>
     3674:	8baa                	mv	s7,a0
@@ -5622,9 +5622,9 @@ execout(char *s)
     printf("%s: cannot open sharedfd for reading\n", s);
     36a4:	85d6                	mv	a1,s5
     36a6:	00003517          	auipc	a0,0x3
-    36aa:	cca50513          	addi	a0,a0,-822 # 6370 <malloc+0x15ec>
+    36aa:	cd250513          	addi	a0,a0,-814 # 6378 <malloc+0x15ea>
     36ae:	00001097          	auipc	ra,0x1
-    36b2:	61e080e7          	jalr	1566(ra) # 4ccc <printf>
+    36b2:	628080e7          	jalr	1576(ra) # 4cd6 <printf>
     exit(1);
     36b6:	4505                	li	a0,1
     36b8:	00001097          	auipc	ra,0x1
@@ -5648,7 +5648,7 @@ execout(char *s)
     36de:	25a080e7          	jalr	602(ra) # 4934 <close>
   remove("sharedfd");
     36e2:	00003517          	auipc	a0,0x3
-    36e6:	c3650513          	addi	a0,a0,-970 # 6318 <malloc+0x1594>
+    36e6:	c3e50513          	addi	a0,a0,-962 # 6320 <malloc+0x1592>
     36ea:	00001097          	auipc	ra,0x1
     36ee:	2d6080e7          	jalr	726(ra) # 49c0 <remove>
   if(nc == N*SZ && np == N*SZ){
@@ -5661,9 +5661,9 @@ execout(char *s)
     printf("%s: nc/np test fails\n", s);
     3706:	85d6                	mv	a1,s5
     3708:	00003517          	auipc	a0,0x3
-    370c:	c9050513          	addi	a0,a0,-880 # 6398 <malloc+0x1614>
+    370c:	c9850513          	addi	a0,a0,-872 # 63a0 <malloc+0x1612>
     3710:	00001097          	auipc	ra,0x1
-    3714:	5bc080e7          	jalr	1468(ra) # 4ccc <printf>
+    3714:	5c6080e7          	jalr	1478(ra) # 4cd6 <printf>
     exit(1);
     3718:	4505                	li	a0,1
     371a:	00001097          	auipc	ra,0x1
@@ -5693,16 +5693,16 @@ execout(char *s)
     374a:	f4a43c23          	sd	a0,-168(s0)
   char *names[] = { "f0", "f1", "f2", "f3" };
     374e:	00003797          	auipc	a5,0x3
-    3752:	c6278793          	addi	a5,a5,-926 # 63b0 <malloc+0x162c>
+    3752:	c6a78793          	addi	a5,a5,-918 # 63b8 <malloc+0x162a>
     3756:	f6f43823          	sd	a5,-144(s0)
     375a:	00003797          	auipc	a5,0x3
-    375e:	c5e78793          	addi	a5,a5,-930 # 63b8 <malloc+0x1634>
+    375e:	c6678793          	addi	a5,a5,-922 # 63c0 <malloc+0x1632>
     3762:	f6f43c23          	sd	a5,-136(s0)
     3766:	00003797          	auipc	a5,0x3
-    376a:	c5a78793          	addi	a5,a5,-934 # 63c0 <malloc+0x163c>
+    376a:	c6278793          	addi	a5,a5,-926 # 63c8 <malloc+0x163a>
     376e:	f8f43023          	sd	a5,-128(s0)
     3772:	00003797          	auipc	a5,0x3
-    3776:	c5678793          	addi	a5,a5,-938 # 63c8 <malloc+0x1644>
+    3776:	c5e78793          	addi	a5,a5,-930 # 63d0 <malloc+0x1642>
     377a:	f8f43423          	sd	a5,-120(s0)
   for(pi = 0; pi < NCHILD; pi++){
     377e:	f7040c93          	addi	s9,s0,-144
@@ -5745,9 +5745,9 @@ execout(char *s)
     37cc:	6a09                	lui	s4,0x2
     37ce:	800a0a13          	addi	s4,s4,-2048 # 1800 <forkfork+0x42>
     37d2:	00007a97          	auipc	s5,0x7
-    37d6:	0c6a8a93          	addi	s5,s5,198 # a898 <buf>
+    37d6:	0cea8a93          	addi	s5,s5,206 # a8a0 <buf>
     37da:	00007b17          	auipc	s6,0x7
-    37de:	0bfb0b13          	addi	s6,s6,191 # a899 <buf+0x1>
+    37de:	0c7b0b13          	addi	s6,s6,199 # a8a1 <buf+0x1>
     if(total != N*SZ){
     37e2:	6785                	lui	a5,0x1
     37e4:	77078793          	addi	a5,a5,1904 # 1770 <twochildren+0x4c>
@@ -5758,9 +5758,9 @@ execout(char *s)
       printf("fork failed\n", s);
     37f2:	f5843583          	ld	a1,-168(s0)
     37f6:	00002517          	auipc	a0,0x2
-    37fa:	0fa50513          	addi	a0,a0,250 # 58f0 <malloc+0xb6c>
+    37fa:	10250513          	addi	a0,a0,258 # 58f8 <malloc+0xb6a>
     37fe:	00001097          	auipc	ra,0x1
-    3802:	4ce080e7          	jalr	1230(ra) # 4ccc <printf>
+    3802:	4d8080e7          	jalr	1240(ra) # 4cd6 <printf>
       exit(1);
     3806:	4505                	li	a0,1
     3808:	00001097          	auipc	ra,0x1
@@ -5777,13 +5777,13 @@ execout(char *s)
     3824:	1f400613          	li	a2,500
     3828:	0304859b          	addiw	a1,s1,48
     382c:	00007517          	auipc	a0,0x7
-    3830:	06c50513          	addi	a0,a0,108 # a898 <buf>
+    3830:	07450513          	addi	a0,a0,116 # a8a0 <buf>
     3834:	00001097          	auipc	ra,0x1
     3838:	eb8080e7          	jalr	-328(ra) # 46ec <memset>
     383c:	44b1                	li	s1,12
         if((n = write(fd, buf, SZ)) != SZ){
     383e:	00007997          	auipc	s3,0x7
-    3842:	05a98993          	addi	s3,s3,90 # a898 <buf>
+    3842:	06298993          	addi	s3,s3,98 # a8a0 <buf>
     3846:	1f400613          	li	a2,500
     384a:	85ce                	mv	a1,s3
     384c:	854a                	mv	a0,s2
@@ -5802,18 +5802,18 @@ execout(char *s)
         printf("create failed\n", s);
     386e:	f5843583          	ld	a1,-168(s0)
     3872:	00003517          	auipc	a0,0x3
-    3876:	b5e50513          	addi	a0,a0,-1186 # 63d0 <malloc+0x164c>
+    3876:	b6650513          	addi	a0,a0,-1178 # 63d8 <malloc+0x164a>
     387a:	00001097          	auipc	ra,0x1
-    387e:	452080e7          	jalr	1106(ra) # 4ccc <printf>
+    387e:	45c080e7          	jalr	1116(ra) # 4cd6 <printf>
         exit(1);
     3882:	4505                	li	a0,1
     3884:	00001097          	auipc	ra,0x1
     3888:	080080e7          	jalr	128(ra) # 4904 <exit>
           printf("write failed %d\n", n);
     388c:	00003517          	auipc	a0,0x3
-    3890:	b5450513          	addi	a0,a0,-1196 # 63e0 <malloc+0x165c>
+    3890:	b5c50513          	addi	a0,a0,-1188 # 63e8 <malloc+0x165a>
     3894:	00001097          	auipc	ra,0x1
-    3898:	438080e7          	jalr	1080(ra) # 4ccc <printf>
+    3898:	442080e7          	jalr	1090(ra) # 4cd6 <printf>
           exit(1);
     389c:	4505                	li	a0,1
     389e:	00001097          	auipc	ra,0x1
@@ -5825,9 +5825,9 @@ execout(char *s)
           printf("wrong char\n", s);
     38b0:	f5843583          	ld	a1,-168(s0)
     38b4:	00003517          	auipc	a0,0x3
-    38b8:	b4450513          	addi	a0,a0,-1212 # 63f8 <malloc+0x1674>
+    38b8:	b4c50513          	addi	a0,a0,-1204 # 6400 <malloc+0x1672>
     38bc:	00001097          	auipc	ra,0x1
-    38c0:	410080e7          	jalr	1040(ra) # 4ccc <printf>
+    38c0:	41a080e7          	jalr	1050(ra) # 4cd6 <printf>
           exit(1);
     38c4:	4505                	li	a0,1
     38c6:	00001097          	auipc	ra,0x1
@@ -5842,7 +5842,7 @@ execout(char *s)
     38dc:	048080e7          	jalr	72(ra) # 4920 <read>
     38e0:	02a05363          	blez	a0,3906 <fourfiles+0x1da>
     38e4:	00007797          	auipc	a5,0x7
-    38e8:	fb478793          	addi	a5,a5,-76 # a898 <buf>
+    38e8:	fbc78793          	addi	a5,a5,-68 # a8a0 <buf>
     38ec:	fff5069b          	addiw	a3,a0,-1
     38f0:	1682                	slli	a3,a3,0x20
     38f2:	9281                	srli	a3,a3,0x20
@@ -5886,9 +5886,9 @@ execout(char *s)
       printf("wrong length %d\n", total);
     3944:	85ca                	mv	a1,s2
     3946:	00003517          	auipc	a0,0x3
-    394a:	ac250513          	addi	a0,a0,-1342 # 6408 <malloc+0x1684>
+    394a:	aca50513          	addi	a0,a0,-1334 # 6410 <malloc+0x1682>
     394e:	00001097          	auipc	ra,0x1
-    3952:	37e080e7          	jalr	894(ra) # 4ccc <printf>
+    3952:	388080e7          	jalr	904(ra) # 4cd6 <printf>
       exit(1);
     3956:	4505                	li	a0,1
     3958:	00001097          	auipc	ra,0x1
@@ -5924,13 +5924,13 @@ execout(char *s)
     3990:	8aaa                	mv	s5,a0
   remove("bigfile.dat");
     3992:	00003517          	auipc	a0,0x3
-    3996:	a8e50513          	addi	a0,a0,-1394 # 6420 <malloc+0x169c>
+    3996:	a9650513          	addi	a0,a0,-1386 # 6428 <malloc+0x169a>
     399a:	00001097          	auipc	ra,0x1
     399e:	026080e7          	jalr	38(ra) # 49c0 <remove>
   fd = open("bigfile.dat", O_CREATE | O_RDWR);
     39a2:	20200593          	li	a1,514
     39a6:	00003517          	auipc	a0,0x3
-    39aa:	a7a50513          	addi	a0,a0,-1414 # 6420 <malloc+0x169c>
+    39aa:	a8250513          	addi	a0,a0,-1406 # 6428 <malloc+0x169a>
     39ae:	00001097          	auipc	ra,0x1
     39b2:	fa0080e7          	jalr	-96(ra) # 494e <open>
     39b6:	89aa                	mv	s3,a0
@@ -5938,7 +5938,7 @@ execout(char *s)
     39b8:	4481                	li	s1,0
     memset(buf, i, SZ);
     39ba:	00007917          	auipc	s2,0x7
-    39be:	ede90913          	addi	s2,s2,-290 # a898 <buf>
+    39be:	ee690913          	addi	s2,s2,-282 # a8a0 <buf>
   for(i = 0; i < N; i++){
     39c2:	4a51                	li	s4,20
   if(fd < 0){
@@ -5967,7 +5967,7 @@ execout(char *s)
   fd = open("bigfile.dat", 0);
     3a00:	4581                	li	a1,0
     3a02:	00003517          	auipc	a0,0x3
-    3a06:	a1e50513          	addi	a0,a0,-1506 # 6420 <malloc+0x169c>
+    3a06:	a2650513          	addi	a0,a0,-1498 # 6428 <malloc+0x169a>
     3a0a:	00001097          	auipc	ra,0x1
     3a0e:	f44080e7          	jalr	-188(ra) # 494e <open>
     3a12:	8a2a                	mv	s4,a0
@@ -5977,7 +5977,7 @@ execout(char *s)
     3a16:	4481                	li	s1,0
     cc = read(fd, buf, SZ/2);
     3a18:	00007917          	auipc	s2,0x7
-    3a1c:	e8090913          	addi	s2,s2,-384 # a898 <buf>
+    3a1c:	e8890913          	addi	s2,s2,-376 # a8a0 <buf>
   if(fd < 0){
     3a20:	06054e63          	bltz	a0,3a9c <bigfile+0x11e>
     cc = read(fd, buf, SZ/2);
@@ -6010,9 +6010,9 @@ execout(char *s)
     printf("%s: cannot create bigfile", s);
     3a64:	85d6                	mv	a1,s5
     3a66:	00003517          	auipc	a0,0x3
-    3a6a:	9ca50513          	addi	a0,a0,-1590 # 6430 <malloc+0x16ac>
+    3a6a:	9d250513          	addi	a0,a0,-1582 # 6438 <malloc+0x16aa>
     3a6e:	00001097          	auipc	ra,0x1
-    3a72:	25e080e7          	jalr	606(ra) # 4ccc <printf>
+    3a72:	268080e7          	jalr	616(ra) # 4cd6 <printf>
     exit(1);
     3a76:	4505                	li	a0,1
     3a78:	00001097          	auipc	ra,0x1
@@ -6020,9 +6020,9 @@ execout(char *s)
       printf("%s: write bigfile failed\n", s);
     3a80:	85d6                	mv	a1,s5
     3a82:	00003517          	auipc	a0,0x3
-    3a86:	9ce50513          	addi	a0,a0,-1586 # 6450 <malloc+0x16cc>
+    3a86:	9d650513          	addi	a0,a0,-1578 # 6458 <malloc+0x16ca>
     3a8a:	00001097          	auipc	ra,0x1
-    3a8e:	242080e7          	jalr	578(ra) # 4ccc <printf>
+    3a8e:	24c080e7          	jalr	588(ra) # 4cd6 <printf>
       exit(1);
     3a92:	4505                	li	a0,1
     3a94:	00001097          	auipc	ra,0x1
@@ -6030,9 +6030,9 @@ execout(char *s)
     printf("%s: cannot open bigfile\n", s);
     3a9c:	85d6                	mv	a1,s5
     3a9e:	00003517          	auipc	a0,0x3
-    3aa2:	9d250513          	addi	a0,a0,-1582 # 6470 <malloc+0x16ec>
+    3aa2:	9da50513          	addi	a0,a0,-1574 # 6478 <malloc+0x16ea>
     3aa6:	00001097          	auipc	ra,0x1
-    3aaa:	226080e7          	jalr	550(ra) # 4ccc <printf>
+    3aaa:	230080e7          	jalr	560(ra) # 4cd6 <printf>
     exit(1);
     3aae:	4505                	li	a0,1
     3ab0:	00001097          	auipc	ra,0x1
@@ -6040,9 +6040,9 @@ execout(char *s)
       printf("%s: read bigfile failed\n", s);
     3ab8:	85d6                	mv	a1,s5
     3aba:	00003517          	auipc	a0,0x3
-    3abe:	9d650513          	addi	a0,a0,-1578 # 6490 <malloc+0x170c>
+    3abe:	9de50513          	addi	a0,a0,-1570 # 6498 <malloc+0x170a>
     3ac2:	00001097          	auipc	ra,0x1
-    3ac6:	20a080e7          	jalr	522(ra) # 4ccc <printf>
+    3ac6:	214080e7          	jalr	532(ra) # 4cd6 <printf>
       exit(1);
     3aca:	4505                	li	a0,1
     3acc:	00001097          	auipc	ra,0x1
@@ -6050,9 +6050,9 @@ execout(char *s)
       printf("%s: short read bigfile\n", s);
     3ad4:	85d6                	mv	a1,s5
     3ad6:	00003517          	auipc	a0,0x3
-    3ada:	9da50513          	addi	a0,a0,-1574 # 64b0 <malloc+0x172c>
+    3ada:	9e250513          	addi	a0,a0,-1566 # 64b8 <malloc+0x172a>
     3ade:	00001097          	auipc	ra,0x1
-    3ae2:	1ee080e7          	jalr	494(ra) # 4ccc <printf>
+    3ae2:	1f8080e7          	jalr	504(ra) # 4cd6 <printf>
       exit(1);
     3ae6:	4505                	li	a0,1
     3ae8:	00001097          	auipc	ra,0x1
@@ -6060,9 +6060,9 @@ execout(char *s)
       printf("%s: read bigfile wrong data\n", s);
     3af0:	85d6                	mv	a1,s5
     3af2:	00003517          	auipc	a0,0x3
-    3af6:	9d650513          	addi	a0,a0,-1578 # 64c8 <malloc+0x1744>
+    3af6:	9de50513          	addi	a0,a0,-1570 # 64d0 <malloc+0x1742>
     3afa:	00001097          	auipc	ra,0x1
-    3afe:	1d2080e7          	jalr	466(ra) # 4ccc <printf>
+    3afe:	1dc080e7          	jalr	476(ra) # 4cd6 <printf>
       exit(1);
     3b02:	4505                	li	a0,1
     3b04:	00001097          	auipc	ra,0x1
@@ -6077,7 +6077,7 @@ execout(char *s)
     3b1c:	02f99363          	bne	s3,a5,3b42 <bigfile+0x1c4>
   remove("bigfile.dat");
     3b20:	00003517          	auipc	a0,0x3
-    3b24:	90050513          	addi	a0,a0,-1792 # 6420 <malloc+0x169c>
+    3b24:	90850513          	addi	a0,a0,-1784 # 6428 <malloc+0x169a>
     3b28:	00001097          	auipc	ra,0x1
     3b2c:	e98080e7          	jalr	-360(ra) # 49c0 <remove>
 }
@@ -6093,9 +6093,9 @@ execout(char *s)
     printf("%s: read bigfile wrong total\n", s);
     3b42:	85d6                	mv	a1,s5
     3b44:	00003517          	auipc	a0,0x3
-    3b48:	9a450513          	addi	a0,a0,-1628 # 64e8 <malloc+0x1764>
+    3b48:	9ac50513          	addi	a0,a0,-1620 # 64f0 <malloc+0x1762>
     3b4c:	00001097          	auipc	ra,0x1
-    3b50:	180080e7          	jalr	384(ra) # 4ccc <printf>
+    3b50:	18a080e7          	jalr	394(ra) # 4cd6 <printf>
     exit(1);
     3b54:	4505                	li	a0,1
     3b56:	00001097          	auipc	ra,0x1
@@ -6121,7 +6121,7 @@ execout(char *s)
     3b7c:	8daa                	mv	s11,a0
   char illegal[] = { '\"', '*', '/', ':', '<', '>', '?', '\\', '|', 0 };
     3b7e:	00003797          	auipc	a5,0x3
-    3b82:	9f278793          	addi	a5,a5,-1550 # 6570 <malloc+0x17ec>
+    3b82:	9fa78793          	addi	a5,a5,-1542 # 6578 <malloc+0x17ea>
     3b86:	6398                	ld	a4,0(a5)
     3b88:	f6e43023          	sd	a4,-160(s0)
     3b8c:	0087d783          	lhu	a5,8(a5)
@@ -6169,9 +6169,9 @@ execout(char *s)
       printf("fork failed\n", s);
     3be6:	85ee                	mv	a1,s11
     3be8:	00002517          	auipc	a0,0x2
-    3bec:	d0850513          	addi	a0,a0,-760 # 58f0 <malloc+0xb6c>
+    3bec:	d1050513          	addi	a0,a0,-752 # 58f8 <malloc+0xb6a>
     3bf0:	00001097          	auipc	ra,0x1
-    3bf4:	0dc080e7          	jalr	220(ra) # 4ccc <printf>
+    3bf4:	0e6080e7          	jalr	230(ra) # 4cd6 <printf>
       exit(1);
     3bf8:	4505                	li	a0,1
     3bfa:	00001097          	auipc	ra,0x1
@@ -6203,9 +6203,9 @@ execout(char *s)
     3c36:	f7040613          	addi	a2,s0,-144
     3c3a:	85ee                	mv	a1,s11
     3c3c:	00003517          	auipc	a0,0x3
-    3c40:	8cc50513          	addi	a0,a0,-1844 # 6508 <malloc+0x1784>
+    3c40:	8d450513          	addi	a0,a0,-1836 # 6510 <malloc+0x1782>
     3c44:	00001097          	auipc	ra,0x1
-    3c48:	088080e7          	jalr	136(ra) # 4ccc <printf>
+    3c48:	092080e7          	jalr	146(ra) # 4cd6 <printf>
             exit(1);
     3c4c:	4505                	li	a0,1
     3c4e:	00001097          	auipc	ra,0x1
@@ -6246,9 +6246,9 @@ execout(char *s)
               printf("%s: remove failed\n", s);
     3cae:	85ee                	mv	a1,s11
     3cb0:	00002517          	auipc	a0,0x2
-    3cb4:	58050513          	addi	a0,a0,1408 # 6230 <malloc+0x14ac>
+    3cb4:	58850513          	addi	a0,a0,1416 # 6238 <malloc+0x14aa>
     3cb8:	00001097          	auipc	ra,0x1
-    3cbc:	014080e7          	jalr	20(ra) # 4ccc <printf>
+    3cbc:	01e080e7          	jalr	30(ra) # 4cd6 <printf>
               exit(1);
     3cc0:	4505                	li	a0,1
     3cc2:	00001097          	auipc	ra,0x1
@@ -6265,9 +6265,9 @@ execout(char *s)
     3cde:	f7040613          	addi	a2,s0,-144
     3ce2:	85ee                	mv	a1,s11
     3ce4:	00003517          	auipc	a0,0x3
-    3ce8:	83c50513          	addi	a0,a0,-1988 # 6520 <malloc+0x179c>
+    3ce8:	84450513          	addi	a0,a0,-1980 # 6528 <malloc+0x179a>
     3cec:	00001097          	auipc	ra,0x1
-    3cf0:	fe0080e7          	jalr	-32(ra) # 4ccc <printf>
+    3cf0:	fea080e7          	jalr	-22(ra) # 4cd6 <printf>
         exit(1);
     3cf4:	4505                	li	a0,1
     3cf6:	00001097          	auipc	ra,0x1
@@ -6311,9 +6311,9 @@ execout(char *s)
     3d50:	f7040613          	addi	a2,s0,-144
     3d54:	85ee                	mv	a1,s11
     3d56:	00002517          	auipc	a0,0x2
-    3d5a:	7f250513          	addi	a0,a0,2034 # 6548 <malloc+0x17c4>
+    3d5a:	7fa50513          	addi	a0,a0,2042 # 6550 <malloc+0x17c2>
     3d5e:	00001097          	auipc	ra,0x1
-    3d62:	f6e080e7          	jalr	-146(ra) # 4ccc <printf>
+    3d62:	f78080e7          	jalr	-136(ra) # 4cd6 <printf>
         exit(1);
     3d66:	4505                	li	a0,1
     3d68:	00001097          	auipc	ra,0x1
@@ -6385,38 +6385,38 @@ execout(char *s)
     3df0:	84aa                	mv	s1,a0
   printf("mkdir test\n");
     3df2:	00002517          	auipc	a0,0x2
-    3df6:	78e50513          	addi	a0,a0,1934 # 6580 <malloc+0x17fc>
+    3df6:	79650513          	addi	a0,a0,1942 # 6588 <malloc+0x17fa>
     3dfa:	00001097          	auipc	ra,0x1
-    3dfe:	ed2080e7          	jalr	-302(ra) # 4ccc <printf>
+    3dfe:	edc080e7          	jalr	-292(ra) # 4cd6 <printf>
   if(mkdir("dir0") < 0){
     3e02:	00002517          	auipc	a0,0x2
-    3e06:	78e50513          	addi	a0,a0,1934 # 6590 <malloc+0x180c>
+    3e06:	79650513          	addi	a0,a0,1942 # 6598 <malloc+0x180a>
     3e0a:	00001097          	auipc	ra,0x1
     3e0e:	b58080e7          	jalr	-1192(ra) # 4962 <mkdir>
     3e12:	04054d63          	bltz	a0,3e6c <dirtest+0x86>
   if(chdir("dir0") < 0){
     3e16:	00002517          	auipc	a0,0x2
-    3e1a:	77a50513          	addi	a0,a0,1914 # 6590 <malloc+0x180c>
+    3e1a:	78250513          	addi	a0,a0,1922 # 6598 <malloc+0x180a>
     3e1e:	00001097          	auipc	ra,0x1
     3e22:	b4e080e7          	jalr	-1202(ra) # 496c <chdir>
     3e26:	06054163          	bltz	a0,3e88 <dirtest+0xa2>
   if(chdir("..") < 0){
     3e2a:	00002517          	auipc	a0,0x2
-    3e2e:	1c650513          	addi	a0,a0,454 # 5ff0 <malloc+0x126c>
+    3e2e:	1ce50513          	addi	a0,a0,462 # 5ff8 <malloc+0x126a>
     3e32:	00001097          	auipc	ra,0x1
     3e36:	b3a080e7          	jalr	-1222(ra) # 496c <chdir>
     3e3a:	06054563          	bltz	a0,3ea4 <dirtest+0xbe>
   if(remove("dir0") < 0){
     3e3e:	00002517          	auipc	a0,0x2
-    3e42:	75250513          	addi	a0,a0,1874 # 6590 <malloc+0x180c>
+    3e42:	75a50513          	addi	a0,a0,1882 # 6598 <malloc+0x180a>
     3e46:	00001097          	auipc	ra,0x1
     3e4a:	b7a080e7          	jalr	-1158(ra) # 49c0 <remove>
     3e4e:	06054963          	bltz	a0,3ec0 <dirtest+0xda>
   printf("%s: mkdir test ok\n");
     3e52:	00002517          	auipc	a0,0x2
-    3e56:	78e50513          	addi	a0,a0,1934 # 65e0 <malloc+0x185c>
+    3e56:	79650513          	addi	a0,a0,1942 # 65e8 <malloc+0x185a>
     3e5a:	00001097          	auipc	ra,0x1
-    3e5e:	e72080e7          	jalr	-398(ra) # 4ccc <printf>
+    3e5e:	e7c080e7          	jalr	-388(ra) # 4cd6 <printf>
 }
     3e62:	60e2                	ld	ra,24(sp)
     3e64:	6442                	ld	s0,16(sp)
@@ -6426,9 +6426,9 @@ execout(char *s)
     printf("%s: mkdir failed\n", s);
     3e6c:	85a6                	mv	a1,s1
     3e6e:	00002517          	auipc	a0,0x2
-    3e72:	d0250513          	addi	a0,a0,-766 # 5b70 <malloc+0xdec>
+    3e72:	d0a50513          	addi	a0,a0,-758 # 5b78 <malloc+0xdea>
     3e76:	00001097          	auipc	ra,0x1
-    3e7a:	e56080e7          	jalr	-426(ra) # 4ccc <printf>
+    3e7a:	e60080e7          	jalr	-416(ra) # 4cd6 <printf>
     exit(1);
     3e7e:	4505                	li	a0,1
     3e80:	00001097          	auipc	ra,0x1
@@ -6436,9 +6436,9 @@ execout(char *s)
     printf("%s: chdir dir0 failed\n", s);
     3e88:	85a6                	mv	a1,s1
     3e8a:	00002517          	auipc	a0,0x2
-    3e8e:	70e50513          	addi	a0,a0,1806 # 6598 <malloc+0x1814>
+    3e8e:	71650513          	addi	a0,a0,1814 # 65a0 <malloc+0x1812>
     3e92:	00001097          	auipc	ra,0x1
-    3e96:	e3a080e7          	jalr	-454(ra) # 4ccc <printf>
+    3e96:	e44080e7          	jalr	-444(ra) # 4cd6 <printf>
     exit(1);
     3e9a:	4505                	li	a0,1
     3e9c:	00001097          	auipc	ra,0x1
@@ -6446,9 +6446,9 @@ execout(char *s)
     printf("%s: chdir .. failed\n", s);
     3ea4:	85a6                	mv	a1,s1
     3ea6:	00002517          	auipc	a0,0x2
-    3eaa:	70a50513          	addi	a0,a0,1802 # 65b0 <malloc+0x182c>
+    3eaa:	71250513          	addi	a0,a0,1810 # 65b8 <malloc+0x182a>
     3eae:	00001097          	auipc	ra,0x1
-    3eb2:	e1e080e7          	jalr	-482(ra) # 4ccc <printf>
+    3eb2:	e28080e7          	jalr	-472(ra) # 4cd6 <printf>
     exit(1);
     3eb6:	4505                	li	a0,1
     3eb8:	00001097          	auipc	ra,0x1
@@ -6456,9 +6456,9 @@ execout(char *s)
     printf("%s: remove dir0 failed\n", s);
     3ec0:	85a6                	mv	a1,s1
     3ec2:	00002517          	auipc	a0,0x2
-    3ec6:	70650513          	addi	a0,a0,1798 # 65c8 <malloc+0x1844>
+    3ec6:	70e50513          	addi	a0,a0,1806 # 65d0 <malloc+0x1842>
     3eca:	00001097          	auipc	ra,0x1
-    3ece:	e02080e7          	jalr	-510(ra) # 4ccc <printf>
+    3ece:	e0c080e7          	jalr	-500(ra) # 4cd6 <printf>
     exit(1);
     3ed2:	4505                	li	a0,1
     3ed4:	00001097          	auipc	ra,0x1
@@ -6474,20 +6474,20 @@ execout(char *s)
     3ee6:	84aa                	mv	s1,a0
   if(mkdir("12345678901234") != 0){
     3ee8:	00003517          	auipc	a0,0x3
-    3eec:	8e050513          	addi	a0,a0,-1824 # 67c8 <malloc+0x1a44>
+    3eec:	8e850513          	addi	a0,a0,-1816 # 67d0 <malloc+0x1a42>
     3ef0:	00001097          	auipc	ra,0x1
     3ef4:	a72080e7          	jalr	-1422(ra) # 4962 <mkdir>
     3ef8:	e165                	bnez	a0,3fd8 <fourteen+0xfc>
   if(mkdir("12345678901234/123456789012345") != 0){
     3efa:	00002517          	auipc	a0,0x2
-    3efe:	72650513          	addi	a0,a0,1830 # 6620 <malloc+0x189c>
+    3efe:	72e50513          	addi	a0,a0,1838 # 6628 <malloc+0x189a>
     3f02:	00001097          	auipc	ra,0x1
     3f06:	a60080e7          	jalr	-1440(ra) # 4962 <mkdir>
     3f0a:	e56d                	bnez	a0,3ff4 <fourteen+0x118>
   fd = open("123456789012345/123456789012345/123456789012345", O_CREATE);
     3f0c:	20000593          	li	a1,512
     3f10:	00002517          	auipc	a0,0x2
-    3f14:	76850513          	addi	a0,a0,1896 # 6678 <malloc+0x18f4>
+    3f14:	77050513          	addi	a0,a0,1904 # 6680 <malloc+0x18f2>
     3f18:	00001097          	auipc	ra,0x1
     3f1c:	a36080e7          	jalr	-1482(ra) # 494e <open>
   if(fd < 0){
@@ -6498,7 +6498,7 @@ execout(char *s)
   fd = open("12345678901234/12345678901234/12345678901234", 0);
     3f2c:	4581                	li	a1,0
     3f2e:	00002517          	auipc	a0,0x2
-    3f32:	7c250513          	addi	a0,a0,1986 # 66f0 <malloc+0x196c>
+    3f32:	7ca50513          	addi	a0,a0,1994 # 66f8 <malloc+0x196a>
     3f36:	00001097          	auipc	ra,0x1
     3f3a:	a18080e7          	jalr	-1512(ra) # 494e <open>
   if(fd < 0){
@@ -6508,44 +6508,44 @@ execout(char *s)
     3f46:	9f2080e7          	jalr	-1550(ra) # 4934 <close>
   if(mkdir("12345678901234/12345678901234") == 0){
     3f4a:	00003517          	auipc	a0,0x3
-    3f4e:	81650513          	addi	a0,a0,-2026 # 6760 <malloc+0x19dc>
+    3f4e:	81e50513          	addi	a0,a0,-2018 # 6768 <malloc+0x19da>
     3f52:	00001097          	auipc	ra,0x1
     3f56:	a10080e7          	jalr	-1520(ra) # 4962 <mkdir>
     3f5a:	c57d                	beqz	a0,4048 <fourteen+0x16c>
   if(mkdir("123456789012345/12345678901234") == 0){
     3f5c:	00003517          	auipc	a0,0x3
-    3f60:	85c50513          	addi	a0,a0,-1956 # 67b8 <malloc+0x1a34>
+    3f60:	86450513          	addi	a0,a0,-1948 # 67c0 <malloc+0x1a32>
     3f64:	00001097          	auipc	ra,0x1
     3f68:	9fe080e7          	jalr	-1538(ra) # 4962 <mkdir>
     3f6c:	cd65                	beqz	a0,4064 <fourteen+0x188>
   remove("123456789012345/12345678901234");
     3f6e:	00003517          	auipc	a0,0x3
-    3f72:	84a50513          	addi	a0,a0,-1974 # 67b8 <malloc+0x1a34>
+    3f72:	85250513          	addi	a0,a0,-1966 # 67c0 <malloc+0x1a32>
     3f76:	00001097          	auipc	ra,0x1
     3f7a:	a4a080e7          	jalr	-1462(ra) # 49c0 <remove>
   remove("12345678901234/12345678901234");
     3f7e:	00002517          	auipc	a0,0x2
-    3f82:	7e250513          	addi	a0,a0,2018 # 6760 <malloc+0x19dc>
+    3f82:	7ea50513          	addi	a0,a0,2026 # 6768 <malloc+0x19da>
     3f86:	00001097          	auipc	ra,0x1
     3f8a:	a3a080e7          	jalr	-1478(ra) # 49c0 <remove>
   remove("12345678901234/12345678901234/12345678901234");
     3f8e:	00002517          	auipc	a0,0x2
-    3f92:	76250513          	addi	a0,a0,1890 # 66f0 <malloc+0x196c>
+    3f92:	76a50513          	addi	a0,a0,1898 # 66f8 <malloc+0x196a>
     3f96:	00001097          	auipc	ra,0x1
     3f9a:	a2a080e7          	jalr	-1494(ra) # 49c0 <remove>
   remove("123456789012345/123456789012345/123456789012345");
     3f9e:	00002517          	auipc	a0,0x2
-    3fa2:	6da50513          	addi	a0,a0,1754 # 6678 <malloc+0x18f4>
+    3fa2:	6e250513          	addi	a0,a0,1762 # 6680 <malloc+0x18f2>
     3fa6:	00001097          	auipc	ra,0x1
     3faa:	a1a080e7          	jalr	-1510(ra) # 49c0 <remove>
   remove("12345678901234/123456789012345");
     3fae:	00002517          	auipc	a0,0x2
-    3fb2:	67250513          	addi	a0,a0,1650 # 6620 <malloc+0x189c>
+    3fb2:	67a50513          	addi	a0,a0,1658 # 6628 <malloc+0x189a>
     3fb6:	00001097          	auipc	ra,0x1
     3fba:	a0a080e7          	jalr	-1526(ra) # 49c0 <remove>
   remove("12345678901234");
     3fbe:	00003517          	auipc	a0,0x3
-    3fc2:	80a50513          	addi	a0,a0,-2038 # 67c8 <malloc+0x1a44>
+    3fc2:	81250513          	addi	a0,a0,-2030 # 67d0 <malloc+0x1a42>
     3fc6:	00001097          	auipc	ra,0x1
     3fca:	9fa080e7          	jalr	-1542(ra) # 49c0 <remove>
 }
@@ -6557,9 +6557,9 @@ execout(char *s)
     printf("%s: mkdir 12345678901234 failed\n", s);
     3fd8:	85a6                	mv	a1,s1
     3fda:	00002517          	auipc	a0,0x2
-    3fde:	61e50513          	addi	a0,a0,1566 # 65f8 <malloc+0x1874>
+    3fde:	62650513          	addi	a0,a0,1574 # 6600 <malloc+0x1872>
     3fe2:	00001097          	auipc	ra,0x1
-    3fe6:	cea080e7          	jalr	-790(ra) # 4ccc <printf>
+    3fe6:	cf4080e7          	jalr	-780(ra) # 4cd6 <printf>
     exit(1);
     3fea:	4505                	li	a0,1
     3fec:	00001097          	auipc	ra,0x1
@@ -6567,9 +6567,9 @@ execout(char *s)
     printf("%s: mkdir 12345678901234/123456789012345 failed\n", s);
     3ff4:	85a6                	mv	a1,s1
     3ff6:	00002517          	auipc	a0,0x2
-    3ffa:	64a50513          	addi	a0,a0,1610 # 6640 <malloc+0x18bc>
+    3ffa:	65250513          	addi	a0,a0,1618 # 6648 <malloc+0x18ba>
     3ffe:	00001097          	auipc	ra,0x1
-    4002:	cce080e7          	jalr	-818(ra) # 4ccc <printf>
+    4002:	cd8080e7          	jalr	-808(ra) # 4cd6 <printf>
     exit(1);
     4006:	4505                	li	a0,1
     4008:	00001097          	auipc	ra,0x1
@@ -6577,9 +6577,9 @@ execout(char *s)
     printf("%s: create 123456789012345/123456789012345/123456789012345 failed\n", s);
     4010:	85a6                	mv	a1,s1
     4012:	00002517          	auipc	a0,0x2
-    4016:	69650513          	addi	a0,a0,1686 # 66a8 <malloc+0x1924>
+    4016:	69e50513          	addi	a0,a0,1694 # 66b0 <malloc+0x1922>
     401a:	00001097          	auipc	ra,0x1
-    401e:	cb2080e7          	jalr	-846(ra) # 4ccc <printf>
+    401e:	cbc080e7          	jalr	-836(ra) # 4cd6 <printf>
     exit(1);
     4022:	4505                	li	a0,1
     4024:	00001097          	auipc	ra,0x1
@@ -6587,9 +6587,9 @@ execout(char *s)
     printf("%s: open 12345678901234/12345678901234/12345678901234 failed\n", s);
     402c:	85a6                	mv	a1,s1
     402e:	00002517          	auipc	a0,0x2
-    4032:	6f250513          	addi	a0,a0,1778 # 6720 <malloc+0x199c>
+    4032:	6fa50513          	addi	a0,a0,1786 # 6728 <malloc+0x199a>
     4036:	00001097          	auipc	ra,0x1
-    403a:	c96080e7          	jalr	-874(ra) # 4ccc <printf>
+    403a:	ca0080e7          	jalr	-864(ra) # 4cd6 <printf>
     exit(1);
     403e:	4505                	li	a0,1
     4040:	00001097          	auipc	ra,0x1
@@ -6597,9 +6597,9 @@ execout(char *s)
     printf("%s: mkdir 12345678901234/12345678901234 succeeded!\n", s);
     4048:	85a6                	mv	a1,s1
     404a:	00002517          	auipc	a0,0x2
-    404e:	73650513          	addi	a0,a0,1846 # 6780 <malloc+0x19fc>
+    404e:	73e50513          	addi	a0,a0,1854 # 6788 <malloc+0x19fa>
     4052:	00001097          	auipc	ra,0x1
-    4056:	c7a080e7          	jalr	-902(ra) # 4ccc <printf>
+    4056:	c84080e7          	jalr	-892(ra) # 4cd6 <printf>
     exit(1);
     405a:	4505                	li	a0,1
     405c:	00001097          	auipc	ra,0x1
@@ -6607,9 +6607,9 @@ execout(char *s)
     printf("%s: mkdir 12345678901234/123456789012345 succeeded!\n", s);
     4064:	85a6                	mv	a1,s1
     4066:	00002517          	auipc	a0,0x2
-    406a:	77250513          	addi	a0,a0,1906 # 67d8 <malloc+0x1a54>
+    406a:	77a50513          	addi	a0,a0,1914 # 67e0 <malloc+0x1a52>
     406e:	00001097          	auipc	ra,0x1
-    4072:	c5e080e7          	jalr	-930(ra) # 4ccc <printf>
+    4072:	c68080e7          	jalr	-920(ra) # 4cd6 <printf>
     exit(1);
     4076:	4505                	li	a0,1
     4078:	00001097          	auipc	ra,0x1
@@ -6634,9 +6634,9 @@ execout(char *s)
     409c:	1900                	addi	s0,sp,176
   printf("fsfull test\n");
     409e:	00002517          	auipc	a0,0x2
-    40a2:	77250513          	addi	a0,a0,1906 # 6810 <malloc+0x1a8c>
+    40a2:	77a50513          	addi	a0,a0,1914 # 6818 <malloc+0x1a8a>
     40a6:	00001097          	auipc	ra,0x1
-    40aa:	c26080e7          	jalr	-986(ra) # 4ccc <printf>
+    40aa:	c30080e7          	jalr	-976(ra) # 4cd6 <printf>
   for(nfiles = 0; ; nfiles++){
     40ae:	4481                	li	s1,0
     name[0] = 'f';
@@ -6650,10 +6650,10 @@ execout(char *s)
     printf("%s: writing %s\n", name);
     40be:	f5040b13          	addi	s6,s0,-176
     40c2:	00002d17          	auipc	s10,0x2
-    40c6:	75ed0d13          	addi	s10,s10,1886 # 6820 <malloc+0x1a9c>
+    40c6:	766d0d13          	addi	s10,s10,1894 # 6828 <malloc+0x1a9a>
       int cc = write(fd, buf, BSIZE);
     40ca:	00006a17          	auipc	s4,0x6
-    40ce:	7cea0a13          	addi	s4,s4,1998 # a898 <buf>
+    40ce:	7d6a0a13          	addi	s4,s4,2006 # a8a0 <buf>
     name[0] = 'f';
     40d2:	f5b40823          	sb	s11,-176(s0)
     name[1] = '0' + nfiles / 1000;
@@ -6680,7 +6680,7 @@ execout(char *s)
     4112:	85da                	mv	a1,s6
     4114:	856a                	mv	a0,s10
     4116:	00001097          	auipc	ra,0x1
-    411a:	bb6080e7          	jalr	-1098(ra) # 4ccc <printf>
+    411a:	bc0080e7          	jalr	-1088(ra) # 4cd6 <printf>
     int fd = open(name, O_CREATE|O_RDWR);
     411e:	20200593          	li	a1,514
     4122:	855a                	mv	a0,s6
@@ -6692,9 +6692,9 @@ execout(char *s)
       printf("%s: open %s failed\n", name);
     4132:	f5040593          	addi	a1,s0,-176
     4136:	00002517          	auipc	a0,0x2
-    413a:	6fa50513          	addi	a0,a0,1786 # 6830 <malloc+0x1aac>
+    413a:	70250513          	addi	a0,a0,1794 # 6838 <malloc+0x1aaa>
     413e:	00001097          	auipc	ra,0x1
-    4142:	b8e080e7          	jalr	-1138(ra) # 4ccc <printf>
+    4142:	b98080e7          	jalr	-1128(ra) # 4cd6 <printf>
   while(nfiles >= 0){
     4146:	0604c463          	bltz	s1,41ae <fsfull+0x12e>
     name[0] = 'f';
@@ -6741,9 +6741,9 @@ execout(char *s)
     41aa:	fb549ae3          	bne	s1,s5,415e <fsfull+0xde>
   printf("fsfull test finished\n");
     41ae:	00002517          	auipc	a0,0x2
-    41b2:	6b250513          	addi	a0,a0,1714 # 6860 <malloc+0x1adc>
+    41b2:	6ba50513          	addi	a0,a0,1722 # 6868 <malloc+0x1ada>
     41b6:	00001097          	auipc	ra,0x1
-    41ba:	b16080e7          	jalr	-1258(ra) # 4ccc <printf>
+    41ba:	b20080e7          	jalr	-1248(ra) # 4cd6 <printf>
 }
     41be:	70aa                	ld	ra,168(sp)
     41c0:	740a                	ld	s0,160(sp)
@@ -6779,9 +6779,9 @@ execout(char *s)
     printf("%s: wrote %d bytes\n", total);
     41fc:	85ce                	mv	a1,s3
     41fe:	00002517          	auipc	a0,0x2
-    4202:	64a50513          	addi	a0,a0,1610 # 6848 <malloc+0x1ac4>
+    4202:	65250513          	addi	a0,a0,1618 # 6850 <malloc+0x1ac2>
     4206:	00001097          	auipc	ra,0x1
-    420a:	ac6080e7          	jalr	-1338(ra) # 4ccc <printf>
+    420a:	ad0080e7          	jalr	-1328(ra) # 4cd6 <printf>
     close(fd);
     420e:	854a                	mv	a0,s2
     4210:	00000097          	auipc	ra,0x0
@@ -6799,13 +6799,13 @@ execout(char *s)
     4224:	0800                	addi	s0,sp,16
   randstate = randstate * 1664525 + 1013904223;
     4226:	00003717          	auipc	a4,0x3
-    422a:	aea70713          	addi	a4,a4,-1302 # 6d10 <__DATA_BEGIN__>
+    422a:	af270713          	addi	a4,a4,-1294 # 6d18 <__DATA_BEGIN__>
     422e:	7308                	ld	a0,32(a4)
     4230:	001967b7          	lui	a5,0x196
-    4234:	60d78793          	addi	a5,a5,1549 # 19660d <__BSS_END__+0x18a55d>
+    4234:	60d78793          	addi	a5,a5,1549 # 19660d <__BSS_END__+0x18a555>
     4238:	02f50533          	mul	a0,a0,a5
     423c:	3c6ef7b7          	lui	a5,0x3c6ef
-    4240:	35f78793          	addi	a5,a5,863 # 3c6ef35f <__BSS_END__+0x3c6e32af>
+    4240:	35f78793          	addi	a5,a5,863 # 3c6ef35f <__BSS_END__+0x3c6e32a7>
     4244:	953e                	add	a0,a0,a5
     4246:	f308                	sd	a0,32(a4)
 }
@@ -6870,7 +6870,7 @@ countfree()
       // report back one more page.
       if(write(fds[1], "x", 1) != 1){
     428c:	00001997          	auipc	s3,0x1
-    4290:	cc498993          	addi	s3,s3,-828 # 4f50 <malloc+0x1cc>
+    4290:	ccc98993          	addi	s3,s3,-820 # 4f58 <malloc+0x1ca>
       uint64 a = (uint64) sbrk(4096);
     4294:	6505                	lui	a0,0x1
     4296:	00000097          	auipc	ra,0x0
@@ -6890,27 +6890,27 @@ countfree()
     42ba:	fc950de3          	beq	a0,s1,4294 <countfree+0x44>
         printf("write() failed in countfree()\n");
     42be:	00002517          	auipc	a0,0x2
-    42c2:	5fa50513          	addi	a0,a0,1530 # 68b8 <malloc+0x1b34>
+    42c2:	60250513          	addi	a0,a0,1538 # 68c0 <malloc+0x1b32>
     42c6:	00001097          	auipc	ra,0x1
-    42ca:	a06080e7          	jalr	-1530(ra) # 4ccc <printf>
+    42ca:	a10080e7          	jalr	-1520(ra) # 4cd6 <printf>
         exit(1);
     42ce:	4505                	li	a0,1
     42d0:	00000097          	auipc	ra,0x0
     42d4:	634080e7          	jalr	1588(ra) # 4904 <exit>
     printf("pipe() failed in countfree()\n");
     42d8:	00002517          	auipc	a0,0x2
-    42dc:	5a050513          	addi	a0,a0,1440 # 6878 <malloc+0x1af4>
+    42dc:	5a850513          	addi	a0,a0,1448 # 6880 <malloc+0x1af2>
     42e0:	00001097          	auipc	ra,0x1
-    42e4:	9ec080e7          	jalr	-1556(ra) # 4ccc <printf>
+    42e4:	9f6080e7          	jalr	-1546(ra) # 4cd6 <printf>
     exit(1);
     42e8:	4505                	li	a0,1
     42ea:	00000097          	auipc	ra,0x0
     42ee:	61a080e7          	jalr	1562(ra) # 4904 <exit>
     printf("fork failed in countfree()\n");
     42f2:	00002517          	auipc	a0,0x2
-    42f6:	5a650513          	addi	a0,a0,1446 # 6898 <malloc+0x1b14>
+    42f6:	5ae50513          	addi	a0,a0,1454 # 68a0 <malloc+0x1b12>
     42fa:	00001097          	auipc	ra,0x1
-    42fe:	9d2080e7          	jalr	-1582(ra) # 4ccc <printf>
+    42fe:	9dc080e7          	jalr	-1572(ra) # 4cd6 <printf>
     exit(1);
     4302:	4505                	li	a0,1
     4304:	00000097          	auipc	ra,0x0
@@ -6954,9 +6954,9 @@ countfree()
     4340:	b7e5                	j	4328 <countfree+0xd8>
       printf("read() failed in countfree()\n");
     4342:	00002517          	auipc	a0,0x2
-    4346:	59650513          	addi	a0,a0,1430 # 68d8 <malloc+0x1b54>
+    4346:	59e50513          	addi	a0,a0,1438 # 68e0 <malloc+0x1b52>
     434a:	00001097          	auipc	ra,0x1
-    434e:	982080e7          	jalr	-1662(ra) # 4ccc <printf>
+    434e:	98c080e7          	jalr	-1652(ra) # 4cd6 <printf>
       exit(1);
     4352:	4505                	li	a0,1
     4354:	00000097          	auipc	ra,0x0
@@ -7002,9 +7002,9 @@ run(void f(char *), char *s) {
 
   printf("test %s: ", s);
     4392:	00002517          	auipc	a0,0x2
-    4396:	56650513          	addi	a0,a0,1382 # 68f8 <malloc+0x1b74>
+    4396:	56e50513          	addi	a0,a0,1390 # 6900 <malloc+0x1b72>
     439a:	00001097          	auipc	ra,0x1
-    439e:	932080e7          	jalr	-1742(ra) # 4ccc <printf>
+    439e:	93c080e7          	jalr	-1732(ra) # 4cd6 <printf>
   if((pid = fork()) < 0) {
     43a2:	00000097          	auipc	ra,0x0
     43a6:	55a080e7          	jalr	1370(ra) # 48fc <fork>
@@ -7026,9 +7026,9 @@ run(void f(char *), char *s) {
     43c0:	c7b9                	beqz	a5,440e <run+0x8c>
       printf("FAILED\n");
     43c2:	00002517          	auipc	a0,0x2
-    43c6:	55e50513          	addi	a0,a0,1374 # 6920 <malloc+0x1b9c>
+    43c6:	56650513          	addi	a0,a0,1382 # 6928 <malloc+0x1b9a>
     43ca:	00001097          	auipc	ra,0x1
-    43ce:	902080e7          	jalr	-1790(ra) # 4ccc <printf>
+    43ce:	90c080e7          	jalr	-1780(ra) # 4cd6 <printf>
     else
       printf("OK\n");
     return xstatus == 0;
@@ -7044,9 +7044,9 @@ run(void f(char *), char *s) {
     43e4:	8082                	ret
     printf("runtest: fork error\n");
     43e6:	00002517          	auipc	a0,0x2
-    43ea:	52250513          	addi	a0,a0,1314 # 6908 <malloc+0x1b84>
+    43ea:	52a50513          	addi	a0,a0,1322 # 6910 <malloc+0x1b82>
     43ee:	00001097          	auipc	ra,0x1
-    43f2:	8de080e7          	jalr	-1826(ra) # 4ccc <printf>
+    43f2:	8e8080e7          	jalr	-1816(ra) # 4cd6 <printf>
     exit(1);
     43f6:	4505                	li	a0,1
     43f8:	00000097          	auipc	ra,0x0
@@ -7060,9 +7060,9 @@ run(void f(char *), char *s) {
     440a:	4fe080e7          	jalr	1278(ra) # 4904 <exit>
       printf("OK\n");
     440e:	00002517          	auipc	a0,0x2
-    4412:	51a50513          	addi	a0,a0,1306 # 6928 <malloc+0x1ba4>
+    4412:	52250513          	addi	a0,a0,1314 # 6930 <malloc+0x1ba2>
     4416:	00001097          	auipc	ra,0x1
-    441a:	8b6080e7          	jalr	-1866(ra) # 4ccc <printf>
+    441a:	8c0080e7          	jalr	-1856(ra) # 4cd6 <printf>
     441e:	bf55                	j	43d2 <run+0x50>
 
 0000000000004420 <main>:
@@ -7105,10 +7105,10 @@ main(int argc, char *argv[])
     char *s;
   } tests[] = {
     4456:	00003797          	auipc	a5,0x3
-    445a:	8e278793          	addi	a5,a5,-1822 # 6d38 <randstate+0x8>
+    445a:	8ea78793          	addi	a5,a5,-1814 # 6d40 <randstate+0x8>
     445e:	c8040713          	addi	a4,s0,-896
     4462:	00003817          	auipc	a6,0x3
-    4466:	c1680813          	addi	a6,a6,-1002 # 7078 <name>
+    4466:	c1e80813          	addi	a6,a6,-994 # 7080 <name>
     446a:	6388                	ld	a0,0(a5)
     446c:	678c                	ld	a1,8(a5)
     446e:	6b90                	ld	a2,16(a5)
@@ -7127,9 +7127,9 @@ main(int argc, char *argv[])
 
   printf("usertests starting\n");
     4486:	00002517          	auipc	a0,0x2
-    448a:	55a50513          	addi	a0,a0,1370 # 69e0 <malloc+0x1c5c>
+    448a:	56250513          	addi	a0,a0,1378 # 69e8 <malloc+0x1c5a>
     448e:	00001097          	auipc	ra,0x1
-    4492:	83e080e7          	jalr	-1986(ra) # 4ccc <printf>
+    4492:	848080e7          	jalr	-1976(ra) # 4cd6 <printf>
   int free0 = countfree();
     4496:	00000097          	auipc	ra,0x0
     449a:	dba080e7          	jalr	-582(ra) # 4250 <countfree>
@@ -7160,9 +7160,9 @@ main(int argc, char *argv[])
     printf("FAILED -- lost some free pages %d (out of %d)\n", free1, free0);
     44bc:	8652                	mv	a2,s4
     44be:	00002517          	auipc	a0,0x2
-    44c2:	4da50513          	addi	a0,a0,1242 # 6998 <malloc+0x1c14>
+    44c2:	4e250513          	addi	a0,a0,1250 # 69a0 <malloc+0x1c12>
     44c6:	00001097          	auipc	ra,0x1
-    44ca:	806080e7          	jalr	-2042(ra) # 4ccc <printf>
+    44ca:	810080e7          	jalr	-2032(ra) # 4cd6 <printf>
     exit(1);
     44ce:	4505                	li	a0,1
     44d0:	00000097          	auipc	ra,0x0
@@ -7170,14 +7170,14 @@ main(int argc, char *argv[])
     44d8:	84ae                	mv	s1,a1
   if(argc == 2 && strcmp(argv[1], "-c") == 0){
     44da:	00002597          	auipc	a1,0x2
-    44de:	45658593          	addi	a1,a1,1110 # 6930 <malloc+0x1bac>
+    44de:	45e58593          	addi	a1,a1,1118 # 6938 <malloc+0x1baa>
     44e2:	6488                	ld	a0,8(s1)
     44e4:	00000097          	auipc	ra,0x0
     44e8:	1b2080e7          	jalr	434(ra) # 4696 <strcmp>
     44ec:	10050563          	beqz	a0,45f6 <main+0x1d6>
   } else if(argc == 2 && strcmp(argv[1], "-C") == 0){
     44f0:	00002597          	auipc	a1,0x2
-    44f4:	52858593          	addi	a1,a1,1320 # 6a18 <malloc+0x1c94>
+    44f4:	53058593          	addi	a1,a1,1328 # 6a20 <malloc+0x1c92>
     44f8:	6488                	ld	a0,8(s1)
     44fa:	00000097          	auipc	ra,0x0
     44fe:	19c080e7          	jalr	412(ra) # 4696 <strcmp>
@@ -7189,9 +7189,9 @@ main(int argc, char *argv[])
     4510:	f4f713e3          	bne	a4,a5,4456 <main+0x36>
     printf("Usage: usertests [-c] [testname]\n");
     4514:	00002517          	auipc	a0,0x2
-    4518:	42450513          	addi	a0,a0,1060 # 6938 <malloc+0x1bb4>
+    4518:	42c50513          	addi	a0,a0,1068 # 6940 <malloc+0x1bb2>
     451c:	00000097          	auipc	ra,0x0
-    4520:	7b0080e7          	jalr	1968(ra) # 4ccc <printf>
+    4520:	7ba080e7          	jalr	1978(ra) # 4cd6 <printf>
     exit(1);
     4524:	4505                	li	a0,1
     4526:	00000097          	auipc	ra,0x0
@@ -7204,7 +7204,7 @@ main(int argc, char *argv[])
     4538:	40a905bb          	subw	a1,s2,a0
     453c:	855a                	mv	a0,s6
     453e:	00000097          	auipc	ra,0x0
-    4542:	78e080e7          	jalr	1934(ra) # 4ccc <printf>
+    4542:	798080e7          	jalr	1944(ra) # 4cd6 <printf>
         if(continuous != 2)
     4546:	09498463          	beq	s3,s4,45ce <main+0x1ae>
           exit(1);
@@ -7234,9 +7234,9 @@ main(int argc, char *argv[])
     457c:	f20989e3          	beqz	s3,44ae <main+0x8e>
     printf("SOME TESTS FAILED\n");
     4580:	00002517          	auipc	a0,0x2
-    4584:	40050513          	addi	a0,a0,1024 # 6980 <malloc+0x1bfc>
+    4584:	40850513          	addi	a0,a0,1032 # 6988 <malloc+0x1bfa>
     4588:	00000097          	auipc	ra,0x0
-    458c:	744080e7          	jalr	1860(ra) # 4ccc <printf>
+    458c:	74e080e7          	jalr	1870(ra) # 4cd6 <printf>
     exit(1);
     4590:	4505                	li	a0,1
     4592:	00000097          	auipc	ra,0x0
@@ -7244,9 +7244,9 @@ main(int argc, char *argv[])
   } else {
     printf("ALL TESTS PASSED\n");
     459a:	00002517          	auipc	a0,0x2
-    459e:	42e50513          	addi	a0,a0,1070 # 69c8 <malloc+0x1c44>
+    459e:	43650513          	addi	a0,a0,1078 # 69d0 <malloc+0x1c42>
     45a2:	00000097          	auipc	ra,0x0
-    45a6:	72a080e7          	jalr	1834(ra) # 4ccc <printf>
+    45a6:	734080e7          	jalr	1844(ra) # 4cd6 <printf>
     exit(0);
     45aa:	4501                	li	a0,0
     45ac:	00000097          	auipc	ra,0x0
@@ -7254,7 +7254,7 @@ main(int argc, char *argv[])
         printf("SOME TESTS FAILED\n");
     45b4:	8556                	mv	a0,s5
     45b6:	00000097          	auipc	ra,0x0
-    45ba:	716080e7          	jalr	1814(ra) # 4ccc <printf>
+    45ba:	720080e7          	jalr	1824(ra) # 4cd6 <printf>
         if(continuous != 2)
     45be:	f74998e3          	bne	s3,s4,452e <main+0x10e>
       int free1 = countfree();
@@ -7284,10 +7284,10 @@ main(int argc, char *argv[])
     45f6:	4985                	li	s3,1
   } tests[] = {
     45f8:	00002797          	auipc	a5,0x2
-    45fc:	74078793          	addi	a5,a5,1856 # 6d38 <randstate+0x8>
+    45fc:	74878793          	addi	a5,a5,1864 # 6d40 <randstate+0x8>
     4600:	c8040713          	addi	a4,s0,-896
     4604:	00003817          	auipc	a6,0x3
-    4608:	a7480813          	addi	a6,a6,-1420 # 7078 <name>
+    4608:	a7c80813          	addi	a6,a6,-1412 # 7080 <name>
     460c:	6388                	ld	a0,0(a5)
     460e:	678c                	ld	a1,8(a5)
     4610:	6b90                	ld	a2,16(a5)
@@ -7301,17 +7301,17 @@ main(int argc, char *argv[])
     4624:	ff0794e3          	bne	a5,a6,460c <main+0x1ec>
     printf("continuous usertests starting\n");
     4628:	00002517          	auipc	a0,0x2
-    462c:	3d050513          	addi	a0,a0,976 # 69f8 <malloc+0x1c74>
+    462c:	3d850513          	addi	a0,a0,984 # 6a00 <malloc+0x1c72>
     4630:	00000097          	auipc	ra,0x0
-    4634:	69c080e7          	jalr	1692(ra) # 4ccc <printf>
+    4634:	6a6080e7          	jalr	1702(ra) # 4cd6 <printf>
         printf("SOME TESTS FAILED\n");
     4638:	00002a97          	auipc	s5,0x2
-    463c:	348a8a93          	addi	s5,s5,840 # 6980 <malloc+0x1bfc>
+    463c:	350a8a93          	addi	s5,s5,848 # 6988 <malloc+0x1bfa>
         if(continuous != 2)
     4640:	4a09                	li	s4,2
         printf("FAILED -- lost %d free pages\n", free0 - free1);
     4642:	00002b17          	auipc	s6,0x2
-    4646:	31eb0b13          	addi	s6,s6,798 # 6960 <malloc+0x1bdc>
+    4646:	326b0b13          	addi	s6,s6,806 # 6968 <malloc+0x1bda>
     464a:	b751                	j	45ce <main+0x1ae>
 
 000000000000464c <strcpy>:
@@ -8070,637 +8070,647 @@ uname:
  ret
     49f2:	8082                	ret
 
-00000000000049f4 <putc>:
+00000000000049f4 <times>:
+.global times
+times:
+ li a7, SYS_times
+    49f4:	09900893          	li	a7,153
+ ecall
+    49f8:	00000073          	ecall
+ ret
+    49fc:	8082                	ret
+
+00000000000049fe <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
-    49f4:	1101                	addi	sp,sp,-32
-    49f6:	ec06                	sd	ra,24(sp)
-    49f8:	e822                	sd	s0,16(sp)
-    49fa:	1000                	addi	s0,sp,32
-    49fc:	feb407a3          	sb	a1,-17(s0)
+    49fe:	1101                	addi	sp,sp,-32
+    4a00:	ec06                	sd	ra,24(sp)
+    4a02:	e822                	sd	s0,16(sp)
+    4a04:	1000                	addi	s0,sp,32
+    4a06:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
-    4a00:	4605                	li	a2,1
-    4a02:	fef40593          	addi	a1,s0,-17
-    4a06:	00000097          	auipc	ra,0x0
-    4a0a:	f24080e7          	jalr	-220(ra) # 492a <write>
+    4a0a:	4605                	li	a2,1
+    4a0c:	fef40593          	addi	a1,s0,-17
+    4a10:	00000097          	auipc	ra,0x0
+    4a14:	f1a080e7          	jalr	-230(ra) # 492a <write>
 }
-    4a0e:	60e2                	ld	ra,24(sp)
-    4a10:	6442                	ld	s0,16(sp)
-    4a12:	6105                	addi	sp,sp,32
-    4a14:	8082                	ret
+    4a18:	60e2                	ld	ra,24(sp)
+    4a1a:	6442                	ld	s0,16(sp)
+    4a1c:	6105                	addi	sp,sp,32
+    4a1e:	8082                	ret
 
-0000000000004a16 <printint>:
+0000000000004a20 <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
-    4a16:	7139                	addi	sp,sp,-64
-    4a18:	fc06                	sd	ra,56(sp)
-    4a1a:	f822                	sd	s0,48(sp)
-    4a1c:	f426                	sd	s1,40(sp)
-    4a1e:	f04a                	sd	s2,32(sp)
-    4a20:	ec4e                	sd	s3,24(sp)
-    4a22:	0080                	addi	s0,sp,64
-    4a24:	84aa                	mv	s1,a0
+    4a20:	7139                	addi	sp,sp,-64
+    4a22:	fc06                	sd	ra,56(sp)
+    4a24:	f822                	sd	s0,48(sp)
+    4a26:	f426                	sd	s1,40(sp)
+    4a28:	f04a                	sd	s2,32(sp)
+    4a2a:	ec4e                	sd	s3,24(sp)
+    4a2c:	0080                	addi	s0,sp,64
+    4a2e:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
-    4a26:	c299                	beqz	a3,4a2c <printint+0x16>
-    4a28:	0805c863          	bltz	a1,4ab8 <printint+0xa2>
+    4a30:	c299                	beqz	a3,4a36 <printint+0x16>
+    4a32:	0805c863          	bltz	a1,4ac2 <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
-    4a2c:	2581                	sext.w	a1,a1
+    4a36:	2581                	sext.w	a1,a1
   neg = 0;
-    4a2e:	4881                	li	a7,0
+    4a38:	4881                	li	a7,0
   }
 
   i = 0;
-    4a30:	fc040993          	addi	s3,s0,-64
+    4a3a:	fc040993          	addi	s3,s0,-64
   neg = 0;
-    4a34:	86ce                	mv	a3,s3
+    4a3e:	86ce                	mv	a3,s3
   i = 0;
-    4a36:	4701                	li	a4,0
+    4a40:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
-    4a38:	2601                	sext.w	a2,a2
-    4a3a:	00002517          	auipc	a0,0x2
-    4a3e:	2be50513          	addi	a0,a0,702 # 6cf8 <digits>
-    4a42:	883a                	mv	a6,a4
-    4a44:	2705                	addiw	a4,a4,1
-    4a46:	02c5f7bb          	remuw	a5,a1,a2
-    4a4a:	1782                	slli	a5,a5,0x20
-    4a4c:	9381                	srli	a5,a5,0x20
-    4a4e:	97aa                	add	a5,a5,a0
-    4a50:	0007c783          	lbu	a5,0(a5)
-    4a54:	00f68023          	sb	a5,0(a3)
+    4a42:	2601                	sext.w	a2,a2
+    4a44:	00002517          	auipc	a0,0x2
+    4a48:	2bc50513          	addi	a0,a0,700 # 6d00 <digits>
+    4a4c:	883a                	mv	a6,a4
+    4a4e:	2705                	addiw	a4,a4,1
+    4a50:	02c5f7bb          	remuw	a5,a1,a2
+    4a54:	1782                	slli	a5,a5,0x20
+    4a56:	9381                	srli	a5,a5,0x20
+    4a58:	97aa                	add	a5,a5,a0
+    4a5a:	0007c783          	lbu	a5,0(a5)
+    4a5e:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
-    4a58:	0005879b          	sext.w	a5,a1
-    4a5c:	02c5d5bb          	divuw	a1,a1,a2
-    4a60:	0685                	addi	a3,a3,1
-    4a62:	fec7f0e3          	bgeu	a5,a2,4a42 <printint+0x2c>
+    4a62:	0005879b          	sext.w	a5,a1
+    4a66:	02c5d5bb          	divuw	a1,a1,a2
+    4a6a:	0685                	addi	a3,a3,1
+    4a6c:	fec7f0e3          	bgeu	a5,a2,4a4c <printint+0x2c>
   if(neg)
-    4a66:	00088c63          	beqz	a7,4a7e <printint+0x68>
+    4a70:	00088c63          	beqz	a7,4a88 <printint+0x68>
     buf[i++] = '-';
-    4a6a:	fd070793          	addi	a5,a4,-48
-    4a6e:	00878733          	add	a4,a5,s0
-    4a72:	02d00793          	li	a5,45
-    4a76:	fef70823          	sb	a5,-16(a4)
-    4a7a:	0028071b          	addiw	a4,a6,2
+    4a74:	fd070793          	addi	a5,a4,-48
+    4a78:	00878733          	add	a4,a5,s0
+    4a7c:	02d00793          	li	a5,45
+    4a80:	fef70823          	sb	a5,-16(a4)
+    4a84:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
-    4a7e:	02e05663          	blez	a4,4aaa <printint+0x94>
-    4a82:	fc040913          	addi	s2,s0,-64
-    4a86:	993a                	add	s2,s2,a4
-    4a88:	19fd                	addi	s3,s3,-1
-    4a8a:	99ba                	add	s3,s3,a4
-    4a8c:	377d                	addiw	a4,a4,-1
-    4a8e:	1702                	slli	a4,a4,0x20
-    4a90:	9301                	srli	a4,a4,0x20
-    4a92:	40e989b3          	sub	s3,s3,a4
+    4a88:	02e05663          	blez	a4,4ab4 <printint+0x94>
+    4a8c:	fc040913          	addi	s2,s0,-64
+    4a90:	993a                	add	s2,s2,a4
+    4a92:	19fd                	addi	s3,s3,-1
+    4a94:	99ba                	add	s3,s3,a4
+    4a96:	377d                	addiw	a4,a4,-1
+    4a98:	1702                	slli	a4,a4,0x20
+    4a9a:	9301                	srli	a4,a4,0x20
+    4a9c:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
-    4a96:	fff94583          	lbu	a1,-1(s2)
-    4a9a:	8526                	mv	a0,s1
-    4a9c:	00000097          	auipc	ra,0x0
-    4aa0:	f58080e7          	jalr	-168(ra) # 49f4 <putc>
+    4aa0:	fff94583          	lbu	a1,-1(s2)
+    4aa4:	8526                	mv	a0,s1
+    4aa6:	00000097          	auipc	ra,0x0
+    4aaa:	f58080e7          	jalr	-168(ra) # 49fe <putc>
   while(--i >= 0)
-    4aa4:	197d                	addi	s2,s2,-1
-    4aa6:	ff3918e3          	bne	s2,s3,4a96 <printint+0x80>
+    4aae:	197d                	addi	s2,s2,-1
+    4ab0:	ff3918e3          	bne	s2,s3,4aa0 <printint+0x80>
 }
-    4aaa:	70e2                	ld	ra,56(sp)
-    4aac:	7442                	ld	s0,48(sp)
-    4aae:	74a2                	ld	s1,40(sp)
-    4ab0:	7902                	ld	s2,32(sp)
-    4ab2:	69e2                	ld	s3,24(sp)
-    4ab4:	6121                	addi	sp,sp,64
-    4ab6:	8082                	ret
+    4ab4:	70e2                	ld	ra,56(sp)
+    4ab6:	7442                	ld	s0,48(sp)
+    4ab8:	74a2                	ld	s1,40(sp)
+    4aba:	7902                	ld	s2,32(sp)
+    4abc:	69e2                	ld	s3,24(sp)
+    4abe:	6121                	addi	sp,sp,64
+    4ac0:	8082                	ret
     x = -xx;
-    4ab8:	40b005bb          	negw	a1,a1
+    4ac2:	40b005bb          	negw	a1,a1
     neg = 1;
-    4abc:	4885                	li	a7,1
+    4ac6:	4885                	li	a7,1
     x = -xx;
-    4abe:	bf8d                	j	4a30 <printint+0x1a>
+    4ac8:	bf8d                	j	4a3a <printint+0x1a>
 
-0000000000004ac0 <vprintf>:
+0000000000004aca <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
-    4ac0:	7119                	addi	sp,sp,-128
-    4ac2:	fc86                	sd	ra,120(sp)
-    4ac4:	f8a2                	sd	s0,112(sp)
-    4ac6:	f4a6                	sd	s1,104(sp)
-    4ac8:	f0ca                	sd	s2,96(sp)
-    4aca:	ecce                	sd	s3,88(sp)
-    4acc:	e8d2                	sd	s4,80(sp)
-    4ace:	e4d6                	sd	s5,72(sp)
-    4ad0:	e0da                	sd	s6,64(sp)
-    4ad2:	fc5e                	sd	s7,56(sp)
-    4ad4:	f862                	sd	s8,48(sp)
-    4ad6:	f466                	sd	s9,40(sp)
-    4ad8:	f06a                	sd	s10,32(sp)
-    4ada:	ec6e                	sd	s11,24(sp)
-    4adc:	0100                	addi	s0,sp,128
+    4aca:	7119                	addi	sp,sp,-128
+    4acc:	fc86                	sd	ra,120(sp)
+    4ace:	f8a2                	sd	s0,112(sp)
+    4ad0:	f4a6                	sd	s1,104(sp)
+    4ad2:	f0ca                	sd	s2,96(sp)
+    4ad4:	ecce                	sd	s3,88(sp)
+    4ad6:	e8d2                	sd	s4,80(sp)
+    4ad8:	e4d6                	sd	s5,72(sp)
+    4ada:	e0da                	sd	s6,64(sp)
+    4adc:	fc5e                	sd	s7,56(sp)
+    4ade:	f862                	sd	s8,48(sp)
+    4ae0:	f466                	sd	s9,40(sp)
+    4ae2:	f06a                	sd	s10,32(sp)
+    4ae4:	ec6e                	sd	s11,24(sp)
+    4ae6:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
-    4ade:	0005c903          	lbu	s2,0(a1)
-    4ae2:	18090f63          	beqz	s2,4c80 <vprintf+0x1c0>
-    4ae6:	8aaa                	mv	s5,a0
-    4ae8:	8b32                	mv	s6,a2
-    4aea:	00158493          	addi	s1,a1,1
+    4ae8:	0005c903          	lbu	s2,0(a1)
+    4aec:	18090f63          	beqz	s2,4c8a <vprintf+0x1c0>
+    4af0:	8aaa                	mv	s5,a0
+    4af2:	8b32                	mv	s6,a2
+    4af4:	00158493          	addi	s1,a1,1
   state = 0;
-    4aee:	4981                	li	s3,0
+    4af8:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
-    4af0:	02500a13          	li	s4,37
-    4af4:	4c55                	li	s8,21
-    4af6:	00002c97          	auipc	s9,0x2
-    4afa:	1aac8c93          	addi	s9,s9,426 # 6ca0 <malloc+0x1f1c>
+    4afa:	02500a13          	li	s4,37
+    4afe:	4c55                	li	s8,21
+    4b00:	00002c97          	auipc	s9,0x2
+    4b04:	1a8c8c93          	addi	s9,s9,424 # 6ca8 <malloc+0x1f1a>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
-    4afe:	02800d93          	li	s11,40
+    4b08:	02800d93          	li	s11,40
   putc(fd, 'x');
-    4b02:	4d41                	li	s10,16
+    4b0c:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
-    4b04:	00002b97          	auipc	s7,0x2
-    4b08:	1f4b8b93          	addi	s7,s7,500 # 6cf8 <digits>
-    4b0c:	a839                	j	4b2a <vprintf+0x6a>
+    4b0e:	00002b97          	auipc	s7,0x2
+    4b12:	1f2b8b93          	addi	s7,s7,498 # 6d00 <digits>
+    4b16:	a839                	j	4b34 <vprintf+0x6a>
         putc(fd, c);
-    4b0e:	85ca                	mv	a1,s2
-    4b10:	8556                	mv	a0,s5
-    4b12:	00000097          	auipc	ra,0x0
-    4b16:	ee2080e7          	jalr	-286(ra) # 49f4 <putc>
-    4b1a:	a019                	j	4b20 <vprintf+0x60>
+    4b18:	85ca                	mv	a1,s2
+    4b1a:	8556                	mv	a0,s5
+    4b1c:	00000097          	auipc	ra,0x0
+    4b20:	ee2080e7          	jalr	-286(ra) # 49fe <putc>
+    4b24:	a019                	j	4b2a <vprintf+0x60>
     } else if(state == '%'){
-    4b1c:	01498d63          	beq	s3,s4,4b36 <vprintf+0x76>
+    4b26:	01498d63          	beq	s3,s4,4b40 <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
-    4b20:	0485                	addi	s1,s1,1
-    4b22:	fff4c903          	lbu	s2,-1(s1)
-    4b26:	14090d63          	beqz	s2,4c80 <vprintf+0x1c0>
+    4b2a:	0485                	addi	s1,s1,1
+    4b2c:	fff4c903          	lbu	s2,-1(s1)
+    4b30:	14090d63          	beqz	s2,4c8a <vprintf+0x1c0>
     if(state == 0){
-    4b2a:	fe0999e3          	bnez	s3,4b1c <vprintf+0x5c>
+    4b34:	fe0999e3          	bnez	s3,4b26 <vprintf+0x5c>
       if(c == '%'){
-    4b2e:	ff4910e3          	bne	s2,s4,4b0e <vprintf+0x4e>
+    4b38:	ff4910e3          	bne	s2,s4,4b18 <vprintf+0x4e>
         state = '%';
-    4b32:	89d2                	mv	s3,s4
-    4b34:	b7f5                	j	4b20 <vprintf+0x60>
+    4b3c:	89d2                	mv	s3,s4
+    4b3e:	b7f5                	j	4b2a <vprintf+0x60>
       if(c == 'd'){
-    4b36:	11490c63          	beq	s2,s4,4c4e <vprintf+0x18e>
-    4b3a:	f9d9079b          	addiw	a5,s2,-99
-    4b3e:	0ff7f793          	zext.b	a5,a5
-    4b42:	10fc6e63          	bltu	s8,a5,4c5e <vprintf+0x19e>
-    4b46:	f9d9079b          	addiw	a5,s2,-99
-    4b4a:	0ff7f713          	zext.b	a4,a5
-    4b4e:	10ec6863          	bltu	s8,a4,4c5e <vprintf+0x19e>
-    4b52:	00271793          	slli	a5,a4,0x2
-    4b56:	97e6                	add	a5,a5,s9
-    4b58:	439c                	lw	a5,0(a5)
-    4b5a:	97e6                	add	a5,a5,s9
-    4b5c:	8782                	jr	a5
+    4b40:	11490c63          	beq	s2,s4,4c58 <vprintf+0x18e>
+    4b44:	f9d9079b          	addiw	a5,s2,-99
+    4b48:	0ff7f793          	zext.b	a5,a5
+    4b4c:	10fc6e63          	bltu	s8,a5,4c68 <vprintf+0x19e>
+    4b50:	f9d9079b          	addiw	a5,s2,-99
+    4b54:	0ff7f713          	zext.b	a4,a5
+    4b58:	10ec6863          	bltu	s8,a4,4c68 <vprintf+0x19e>
+    4b5c:	00271793          	slli	a5,a4,0x2
+    4b60:	97e6                	add	a5,a5,s9
+    4b62:	439c                	lw	a5,0(a5)
+    4b64:	97e6                	add	a5,a5,s9
+    4b66:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
-    4b5e:	008b0913          	addi	s2,s6,8
-    4b62:	4685                	li	a3,1
-    4b64:	4629                	li	a2,10
-    4b66:	000b2583          	lw	a1,0(s6)
-    4b6a:	8556                	mv	a0,s5
-    4b6c:	00000097          	auipc	ra,0x0
-    4b70:	eaa080e7          	jalr	-342(ra) # 4a16 <printint>
-    4b74:	8b4a                	mv	s6,s2
+    4b68:	008b0913          	addi	s2,s6,8
+    4b6c:	4685                	li	a3,1
+    4b6e:	4629                	li	a2,10
+    4b70:	000b2583          	lw	a1,0(s6)
+    4b74:	8556                	mv	a0,s5
+    4b76:	00000097          	auipc	ra,0x0
+    4b7a:	eaa080e7          	jalr	-342(ra) # 4a20 <printint>
+    4b7e:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
-    4b76:	4981                	li	s3,0
-    4b78:	b765                	j	4b20 <vprintf+0x60>
+    4b80:	4981                	li	s3,0
+    4b82:	b765                	j	4b2a <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
-    4b7a:	008b0913          	addi	s2,s6,8
-    4b7e:	4681                	li	a3,0
-    4b80:	4629                	li	a2,10
-    4b82:	000b2583          	lw	a1,0(s6)
-    4b86:	8556                	mv	a0,s5
-    4b88:	00000097          	auipc	ra,0x0
-    4b8c:	e8e080e7          	jalr	-370(ra) # 4a16 <printint>
-    4b90:	8b4a                	mv	s6,s2
+    4b84:	008b0913          	addi	s2,s6,8
+    4b88:	4681                	li	a3,0
+    4b8a:	4629                	li	a2,10
+    4b8c:	000b2583          	lw	a1,0(s6)
+    4b90:	8556                	mv	a0,s5
+    4b92:	00000097          	auipc	ra,0x0
+    4b96:	e8e080e7          	jalr	-370(ra) # 4a20 <printint>
+    4b9a:	8b4a                	mv	s6,s2
       state = 0;
-    4b92:	4981                	li	s3,0
-    4b94:	b771                	j	4b20 <vprintf+0x60>
+    4b9c:	4981                	li	s3,0
+    4b9e:	b771                	j	4b2a <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
-    4b96:	008b0913          	addi	s2,s6,8
-    4b9a:	4681                	li	a3,0
-    4b9c:	866a                	mv	a2,s10
-    4b9e:	000b2583          	lw	a1,0(s6)
-    4ba2:	8556                	mv	a0,s5
-    4ba4:	00000097          	auipc	ra,0x0
-    4ba8:	e72080e7          	jalr	-398(ra) # 4a16 <printint>
-    4bac:	8b4a                	mv	s6,s2
+    4ba0:	008b0913          	addi	s2,s6,8
+    4ba4:	4681                	li	a3,0
+    4ba6:	866a                	mv	a2,s10
+    4ba8:	000b2583          	lw	a1,0(s6)
+    4bac:	8556                	mv	a0,s5
+    4bae:	00000097          	auipc	ra,0x0
+    4bb2:	e72080e7          	jalr	-398(ra) # 4a20 <printint>
+    4bb6:	8b4a                	mv	s6,s2
       state = 0;
-    4bae:	4981                	li	s3,0
-    4bb0:	bf85                	j	4b20 <vprintf+0x60>
+    4bb8:	4981                	li	s3,0
+    4bba:	bf85                	j	4b2a <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
-    4bb2:	008b0793          	addi	a5,s6,8
-    4bb6:	f8f43423          	sd	a5,-120(s0)
-    4bba:	000b3983          	ld	s3,0(s6)
+    4bbc:	008b0793          	addi	a5,s6,8
+    4bc0:	f8f43423          	sd	a5,-120(s0)
+    4bc4:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
-    4bbe:	03000593          	li	a1,48
-    4bc2:	8556                	mv	a0,s5
-    4bc4:	00000097          	auipc	ra,0x0
-    4bc8:	e30080e7          	jalr	-464(ra) # 49f4 <putc>
+    4bc8:	03000593          	li	a1,48
+    4bcc:	8556                	mv	a0,s5
+    4bce:	00000097          	auipc	ra,0x0
+    4bd2:	e30080e7          	jalr	-464(ra) # 49fe <putc>
   putc(fd, 'x');
-    4bcc:	07800593          	li	a1,120
-    4bd0:	8556                	mv	a0,s5
-    4bd2:	00000097          	auipc	ra,0x0
-    4bd6:	e22080e7          	jalr	-478(ra) # 49f4 <putc>
-    4bda:	896a                	mv	s2,s10
+    4bd6:	07800593          	li	a1,120
+    4bda:	8556                	mv	a0,s5
+    4bdc:	00000097          	auipc	ra,0x0
+    4be0:	e22080e7          	jalr	-478(ra) # 49fe <putc>
+    4be4:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
-    4bdc:	03c9d793          	srli	a5,s3,0x3c
-    4be0:	97de                	add	a5,a5,s7
-    4be2:	0007c583          	lbu	a1,0(a5)
-    4be6:	8556                	mv	a0,s5
-    4be8:	00000097          	auipc	ra,0x0
-    4bec:	e0c080e7          	jalr	-500(ra) # 49f4 <putc>
+    4be6:	03c9d793          	srli	a5,s3,0x3c
+    4bea:	97de                	add	a5,a5,s7
+    4bec:	0007c583          	lbu	a1,0(a5)
+    4bf0:	8556                	mv	a0,s5
+    4bf2:	00000097          	auipc	ra,0x0
+    4bf6:	e0c080e7          	jalr	-500(ra) # 49fe <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
-    4bf0:	0992                	slli	s3,s3,0x4
-    4bf2:	397d                	addiw	s2,s2,-1
-    4bf4:	fe0914e3          	bnez	s2,4bdc <vprintf+0x11c>
+    4bfa:	0992                	slli	s3,s3,0x4
+    4bfc:	397d                	addiw	s2,s2,-1
+    4bfe:	fe0914e3          	bnez	s2,4be6 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
-    4bf8:	f8843b03          	ld	s6,-120(s0)
+    4c02:	f8843b03          	ld	s6,-120(s0)
       state = 0;
-    4bfc:	4981                	li	s3,0
-    4bfe:	b70d                	j	4b20 <vprintf+0x60>
+    4c06:	4981                	li	s3,0
+    4c08:	b70d                	j	4b2a <vprintf+0x60>
         s = va_arg(ap, char*);
-    4c00:	008b0913          	addi	s2,s6,8
-    4c04:	000b3983          	ld	s3,0(s6)
+    4c0a:	008b0913          	addi	s2,s6,8
+    4c0e:	000b3983          	ld	s3,0(s6)
         if(s == 0)
-    4c08:	02098163          	beqz	s3,4c2a <vprintf+0x16a>
+    4c12:	02098163          	beqz	s3,4c34 <vprintf+0x16a>
         while(*s != 0){
-    4c0c:	0009c583          	lbu	a1,0(s3)
-    4c10:	c5ad                	beqz	a1,4c7a <vprintf+0x1ba>
+    4c16:	0009c583          	lbu	a1,0(s3)
+    4c1a:	c5ad                	beqz	a1,4c84 <vprintf+0x1ba>
           putc(fd, *s);
-    4c12:	8556                	mv	a0,s5
-    4c14:	00000097          	auipc	ra,0x0
-    4c18:	de0080e7          	jalr	-544(ra) # 49f4 <putc>
+    4c1c:	8556                	mv	a0,s5
+    4c1e:	00000097          	auipc	ra,0x0
+    4c22:	de0080e7          	jalr	-544(ra) # 49fe <putc>
           s++;
-    4c1c:	0985                	addi	s3,s3,1
+    4c26:	0985                	addi	s3,s3,1
         while(*s != 0){
-    4c1e:	0009c583          	lbu	a1,0(s3)
-    4c22:	f9e5                	bnez	a1,4c12 <vprintf+0x152>
+    4c28:	0009c583          	lbu	a1,0(s3)
+    4c2c:	f9e5                	bnez	a1,4c1c <vprintf+0x152>
         s = va_arg(ap, char*);
-    4c24:	8b4a                	mv	s6,s2
+    4c2e:	8b4a                	mv	s6,s2
       state = 0;
-    4c26:	4981                	li	s3,0
-    4c28:	bde5                	j	4b20 <vprintf+0x60>
+    4c30:	4981                	li	s3,0
+    4c32:	bde5                	j	4b2a <vprintf+0x60>
           s = "(null)";
-    4c2a:	00002997          	auipc	s3,0x2
-    4c2e:	06e98993          	addi	s3,s3,110 # 6c98 <malloc+0x1f14>
+    4c34:	00002997          	auipc	s3,0x2
+    4c38:	06c98993          	addi	s3,s3,108 # 6ca0 <malloc+0x1f12>
         while(*s != 0){
-    4c32:	85ee                	mv	a1,s11
-    4c34:	bff9                	j	4c12 <vprintf+0x152>
+    4c3c:	85ee                	mv	a1,s11
+    4c3e:	bff9                	j	4c1c <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
-    4c36:	008b0913          	addi	s2,s6,8
-    4c3a:	000b4583          	lbu	a1,0(s6)
-    4c3e:	8556                	mv	a0,s5
-    4c40:	00000097          	auipc	ra,0x0
-    4c44:	db4080e7          	jalr	-588(ra) # 49f4 <putc>
-    4c48:	8b4a                	mv	s6,s2
+    4c40:	008b0913          	addi	s2,s6,8
+    4c44:	000b4583          	lbu	a1,0(s6)
+    4c48:	8556                	mv	a0,s5
+    4c4a:	00000097          	auipc	ra,0x0
+    4c4e:	db4080e7          	jalr	-588(ra) # 49fe <putc>
+    4c52:	8b4a                	mv	s6,s2
       state = 0;
-    4c4a:	4981                	li	s3,0
-    4c4c:	bdd1                	j	4b20 <vprintf+0x60>
+    4c54:	4981                	li	s3,0
+    4c56:	bdd1                	j	4b2a <vprintf+0x60>
         putc(fd, c);
-    4c4e:	85d2                	mv	a1,s4
-    4c50:	8556                	mv	a0,s5
-    4c52:	00000097          	auipc	ra,0x0
-    4c56:	da2080e7          	jalr	-606(ra) # 49f4 <putc>
+    4c58:	85d2                	mv	a1,s4
+    4c5a:	8556                	mv	a0,s5
+    4c5c:	00000097          	auipc	ra,0x0
+    4c60:	da2080e7          	jalr	-606(ra) # 49fe <putc>
       state = 0;
-    4c5a:	4981                	li	s3,0
-    4c5c:	b5d1                	j	4b20 <vprintf+0x60>
+    4c64:	4981                	li	s3,0
+    4c66:	b5d1                	j	4b2a <vprintf+0x60>
         putc(fd, '%');
-    4c5e:	85d2                	mv	a1,s4
-    4c60:	8556                	mv	a0,s5
-    4c62:	00000097          	auipc	ra,0x0
-    4c66:	d92080e7          	jalr	-622(ra) # 49f4 <putc>
+    4c68:	85d2                	mv	a1,s4
+    4c6a:	8556                	mv	a0,s5
+    4c6c:	00000097          	auipc	ra,0x0
+    4c70:	d92080e7          	jalr	-622(ra) # 49fe <putc>
         putc(fd, c);
-    4c6a:	85ca                	mv	a1,s2
-    4c6c:	8556                	mv	a0,s5
-    4c6e:	00000097          	auipc	ra,0x0
-    4c72:	d86080e7          	jalr	-634(ra) # 49f4 <putc>
+    4c74:	85ca                	mv	a1,s2
+    4c76:	8556                	mv	a0,s5
+    4c78:	00000097          	auipc	ra,0x0
+    4c7c:	d86080e7          	jalr	-634(ra) # 49fe <putc>
       state = 0;
-    4c76:	4981                	li	s3,0
-    4c78:	b565                	j	4b20 <vprintf+0x60>
+    4c80:	4981                	li	s3,0
+    4c82:	b565                	j	4b2a <vprintf+0x60>
         s = va_arg(ap, char*);
-    4c7a:	8b4a                	mv	s6,s2
+    4c84:	8b4a                	mv	s6,s2
       state = 0;
-    4c7c:	4981                	li	s3,0
-    4c7e:	b54d                	j	4b20 <vprintf+0x60>
+    4c86:	4981                	li	s3,0
+    4c88:	b54d                	j	4b2a <vprintf+0x60>
     }
   }
 }
-    4c80:	70e6                	ld	ra,120(sp)
-    4c82:	7446                	ld	s0,112(sp)
-    4c84:	74a6                	ld	s1,104(sp)
-    4c86:	7906                	ld	s2,96(sp)
-    4c88:	69e6                	ld	s3,88(sp)
-    4c8a:	6a46                	ld	s4,80(sp)
-    4c8c:	6aa6                	ld	s5,72(sp)
-    4c8e:	6b06                	ld	s6,64(sp)
-    4c90:	7be2                	ld	s7,56(sp)
-    4c92:	7c42                	ld	s8,48(sp)
-    4c94:	7ca2                	ld	s9,40(sp)
-    4c96:	7d02                	ld	s10,32(sp)
-    4c98:	6de2                	ld	s11,24(sp)
-    4c9a:	6109                	addi	sp,sp,128
-    4c9c:	8082                	ret
-
-0000000000004c9e <fprintf>:
+    4c8a:	70e6                	ld	ra,120(sp)
+    4c8c:	7446                	ld	s0,112(sp)
+    4c8e:	74a6                	ld	s1,104(sp)
+    4c90:	7906                	ld	s2,96(sp)
+    4c92:	69e6                	ld	s3,88(sp)
+    4c94:	6a46                	ld	s4,80(sp)
+    4c96:	6aa6                	ld	s5,72(sp)
+    4c98:	6b06                	ld	s6,64(sp)
+    4c9a:	7be2                	ld	s7,56(sp)
+    4c9c:	7c42                	ld	s8,48(sp)
+    4c9e:	7ca2                	ld	s9,40(sp)
+    4ca0:	7d02                	ld	s10,32(sp)
+    4ca2:	6de2                	ld	s11,24(sp)
+    4ca4:	6109                	addi	sp,sp,128
+    4ca6:	8082                	ret
+
+0000000000004ca8 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
-    4c9e:	715d                	addi	sp,sp,-80
-    4ca0:	ec06                	sd	ra,24(sp)
-    4ca2:	e822                	sd	s0,16(sp)
-    4ca4:	1000                	addi	s0,sp,32
-    4ca6:	e010                	sd	a2,0(s0)
-    4ca8:	e414                	sd	a3,8(s0)
-    4caa:	e818                	sd	a4,16(s0)
-    4cac:	ec1c                	sd	a5,24(s0)
-    4cae:	03043023          	sd	a6,32(s0)
-    4cb2:	03143423          	sd	a7,40(s0)
+    4ca8:	715d                	addi	sp,sp,-80
+    4caa:	ec06                	sd	ra,24(sp)
+    4cac:	e822                	sd	s0,16(sp)
+    4cae:	1000                	addi	s0,sp,32
+    4cb0:	e010                	sd	a2,0(s0)
+    4cb2:	e414                	sd	a3,8(s0)
+    4cb4:	e818                	sd	a4,16(s0)
+    4cb6:	ec1c                	sd	a5,24(s0)
+    4cb8:	03043023          	sd	a6,32(s0)
+    4cbc:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
-    4cb6:	8622                	mv	a2,s0
-    4cb8:	fe843423          	sd	s0,-24(s0)
+    4cc0:	8622                	mv	a2,s0
+    4cc2:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
-    4cbc:	00000097          	auipc	ra,0x0
-    4cc0:	e04080e7          	jalr	-508(ra) # 4ac0 <vprintf>
+    4cc6:	00000097          	auipc	ra,0x0
+    4cca:	e04080e7          	jalr	-508(ra) # 4aca <vprintf>
 }
-    4cc4:	60e2                	ld	ra,24(sp)
-    4cc6:	6442                	ld	s0,16(sp)
-    4cc8:	6161                	addi	sp,sp,80
-    4cca:	8082                	ret
+    4cce:	60e2                	ld	ra,24(sp)
+    4cd0:	6442                	ld	s0,16(sp)
+    4cd2:	6161                	addi	sp,sp,80
+    4cd4:	8082                	ret
 
-0000000000004ccc <printf>:
+0000000000004cd6 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
-    4ccc:	711d                	addi	sp,sp,-96
-    4cce:	ec06                	sd	ra,24(sp)
-    4cd0:	e822                	sd	s0,16(sp)
-    4cd2:	1000                	addi	s0,sp,32
-    4cd4:	e40c                	sd	a1,8(s0)
-    4cd6:	e810                	sd	a2,16(s0)
-    4cd8:	ec14                	sd	a3,24(s0)
-    4cda:	f018                	sd	a4,32(s0)
-    4cdc:	f41c                	sd	a5,40(s0)
-    4cde:	03043823          	sd	a6,48(s0)
-    4ce2:	03143c23          	sd	a7,56(s0)
+    4cd6:	711d                	addi	sp,sp,-96
+    4cd8:	ec06                	sd	ra,24(sp)
+    4cda:	e822                	sd	s0,16(sp)
+    4cdc:	1000                	addi	s0,sp,32
+    4cde:	e40c                	sd	a1,8(s0)
+    4ce0:	e810                	sd	a2,16(s0)
+    4ce2:	ec14                	sd	a3,24(s0)
+    4ce4:	f018                	sd	a4,32(s0)
+    4ce6:	f41c                	sd	a5,40(s0)
+    4ce8:	03043823          	sd	a6,48(s0)
+    4cec:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
-    4ce6:	00840613          	addi	a2,s0,8
-    4cea:	fec43423          	sd	a2,-24(s0)
+    4cf0:	00840613          	addi	a2,s0,8
+    4cf4:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
-    4cee:	85aa                	mv	a1,a0
-    4cf0:	4505                	li	a0,1
-    4cf2:	00000097          	auipc	ra,0x0
-    4cf6:	dce080e7          	jalr	-562(ra) # 4ac0 <vprintf>
+    4cf8:	85aa                	mv	a1,a0
+    4cfa:	4505                	li	a0,1
+    4cfc:	00000097          	auipc	ra,0x0
+    4d00:	dce080e7          	jalr	-562(ra) # 4aca <vprintf>
 }
-    4cfa:	60e2                	ld	ra,24(sp)
-    4cfc:	6442                	ld	s0,16(sp)
-    4cfe:	6125                	addi	sp,sp,96
-    4d00:	8082                	ret
+    4d04:	60e2                	ld	ra,24(sp)
+    4d06:	6442                	ld	s0,16(sp)
+    4d08:	6125                	addi	sp,sp,96
+    4d0a:	8082                	ret
 
-0000000000004d02 <free>:
+0000000000004d0c <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
-    4d02:	1141                	addi	sp,sp,-16
-    4d04:	e422                	sd	s0,8(sp)
-    4d06:	0800                	addi	s0,sp,16
+    4d0c:	1141                	addi	sp,sp,-16
+    4d0e:	e422                	sd	s0,8(sp)
+    4d10:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
-    4d08:	ff050693          	addi	a3,a0,-16
+    4d12:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
-    4d0c:	00007797          	auipc	a5,0x7
-    4d10:	38c7b783          	ld	a5,908(a5) # c098 <freep>
-    4d14:	a02d                	j	4d3e <free+0x3c>
+    4d16:	00007797          	auipc	a5,0x7
+    4d1a:	38a7b783          	ld	a5,906(a5) # c0a0 <freep>
+    4d1e:	a02d                	j	4d48 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
-    4d16:	4618                	lw	a4,8(a2)
-    4d18:	9f2d                	addw	a4,a4,a1
-    4d1a:	fee52c23          	sw	a4,-8(a0)
+    4d20:	4618                	lw	a4,8(a2)
+    4d22:	9f2d                	addw	a4,a4,a1
+    4d24:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
-    4d1e:	6398                	ld	a4,0(a5)
-    4d20:	6310                	ld	a2,0(a4)
-    4d22:	a83d                	j	4d60 <free+0x5e>
+    4d28:	6398                	ld	a4,0(a5)
+    4d2a:	6310                	ld	a2,0(a4)
+    4d2c:	a83d                	j	4d6a <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
-    4d24:	ff852703          	lw	a4,-8(a0)
-    4d28:	9f31                	addw	a4,a4,a2
-    4d2a:	c798                	sw	a4,8(a5)
+    4d2e:	ff852703          	lw	a4,-8(a0)
+    4d32:	9f31                	addw	a4,a4,a2
+    4d34:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
-    4d2c:	ff053683          	ld	a3,-16(a0)
-    4d30:	a091                	j	4d74 <free+0x72>
+    4d36:	ff053683          	ld	a3,-16(a0)
+    4d3a:	a091                	j	4d7e <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
-    4d32:	6398                	ld	a4,0(a5)
-    4d34:	00e7e463          	bltu	a5,a4,4d3c <free+0x3a>
-    4d38:	00e6ea63          	bltu	a3,a4,4d4c <free+0x4a>
+    4d3c:	6398                	ld	a4,0(a5)
+    4d3e:	00e7e463          	bltu	a5,a4,4d46 <free+0x3a>
+    4d42:	00e6ea63          	bltu	a3,a4,4d56 <free+0x4a>
 {
-    4d3c:	87ba                	mv	a5,a4
+    4d46:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
-    4d3e:	fed7fae3          	bgeu	a5,a3,4d32 <free+0x30>
-    4d42:	6398                	ld	a4,0(a5)
-    4d44:	00e6e463          	bltu	a3,a4,4d4c <free+0x4a>
+    4d48:	fed7fae3          	bgeu	a5,a3,4d3c <free+0x30>
+    4d4c:	6398                	ld	a4,0(a5)
+    4d4e:	00e6e463          	bltu	a3,a4,4d56 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
-    4d48:	fee7eae3          	bltu	a5,a4,4d3c <free+0x3a>
+    4d52:	fee7eae3          	bltu	a5,a4,4d46 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
-    4d4c:	ff852583          	lw	a1,-8(a0)
-    4d50:	6390                	ld	a2,0(a5)
-    4d52:	02059813          	slli	a6,a1,0x20
-    4d56:	01c85713          	srli	a4,a6,0x1c
-    4d5a:	9736                	add	a4,a4,a3
-    4d5c:	fae60de3          	beq	a2,a4,4d16 <free+0x14>
+    4d56:	ff852583          	lw	a1,-8(a0)
+    4d5a:	6390                	ld	a2,0(a5)
+    4d5c:	02059813          	slli	a6,a1,0x20
+    4d60:	01c85713          	srli	a4,a6,0x1c
+    4d64:	9736                	add	a4,a4,a3
+    4d66:	fae60de3          	beq	a2,a4,4d20 <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
-    4d60:	fec53823          	sd	a2,-16(a0)
+    4d6a:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
-    4d64:	4790                	lw	a2,8(a5)
-    4d66:	02061593          	slli	a1,a2,0x20
-    4d6a:	01c5d713          	srli	a4,a1,0x1c
-    4d6e:	973e                	add	a4,a4,a5
-    4d70:	fae68ae3          	beq	a3,a4,4d24 <free+0x22>
+    4d6e:	4790                	lw	a2,8(a5)
+    4d70:	02061593          	slli	a1,a2,0x20
+    4d74:	01c5d713          	srli	a4,a1,0x1c
+    4d78:	973e                	add	a4,a4,a5
+    4d7a:	fae68ae3          	beq	a3,a4,4d2e <free+0x22>
     p->s.ptr = bp->s.ptr;
-    4d74:	e394                	sd	a3,0(a5)
+    4d7e:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
-    4d76:	00007717          	auipc	a4,0x7
-    4d7a:	32f73123          	sd	a5,802(a4) # c098 <freep>
+    4d80:	00007717          	auipc	a4,0x7
+    4d84:	32f73023          	sd	a5,800(a4) # c0a0 <freep>
 }
-    4d7e:	6422                	ld	s0,8(sp)
-    4d80:	0141                	addi	sp,sp,16
-    4d82:	8082                	ret
+    4d88:	6422                	ld	s0,8(sp)
+    4d8a:	0141                	addi	sp,sp,16
+    4d8c:	8082                	ret
 
-0000000000004d84 <malloc>:
+0000000000004d8e <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
-    4d84:	7139                	addi	sp,sp,-64
-    4d86:	fc06                	sd	ra,56(sp)
-    4d88:	f822                	sd	s0,48(sp)
-    4d8a:	f426                	sd	s1,40(sp)
-    4d8c:	f04a                	sd	s2,32(sp)
-    4d8e:	ec4e                	sd	s3,24(sp)
-    4d90:	e852                	sd	s4,16(sp)
-    4d92:	e456                	sd	s5,8(sp)
-    4d94:	e05a                	sd	s6,0(sp)
-    4d96:	0080                	addi	s0,sp,64
+    4d8e:	7139                	addi	sp,sp,-64
+    4d90:	fc06                	sd	ra,56(sp)
+    4d92:	f822                	sd	s0,48(sp)
+    4d94:	f426                	sd	s1,40(sp)
+    4d96:	f04a                	sd	s2,32(sp)
+    4d98:	ec4e                	sd	s3,24(sp)
+    4d9a:	e852                	sd	s4,16(sp)
+    4d9c:	e456                	sd	s5,8(sp)
+    4d9e:	e05a                	sd	s6,0(sp)
+    4da0:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
-    4d98:	02051493          	slli	s1,a0,0x20
-    4d9c:	9081                	srli	s1,s1,0x20
-    4d9e:	04bd                	addi	s1,s1,15
-    4da0:	8091                	srli	s1,s1,0x4
-    4da2:	00148a1b          	addiw	s4,s1,1
-    4da6:	0485                	addi	s1,s1,1
+    4da2:	02051493          	slli	s1,a0,0x20
+    4da6:	9081                	srli	s1,s1,0x20
+    4da8:	04bd                	addi	s1,s1,15
+    4daa:	8091                	srli	s1,s1,0x4
+    4dac:	00148a1b          	addiw	s4,s1,1
+    4db0:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
-    4da8:	00007517          	auipc	a0,0x7
-    4dac:	2f053503          	ld	a0,752(a0) # c098 <freep>
-    4db0:	c515                	beqz	a0,4ddc <malloc+0x58>
+    4db2:	00007517          	auipc	a0,0x7
+    4db6:	2ee53503          	ld	a0,750(a0) # c0a0 <freep>
+    4dba:	c515                	beqz	a0,4de6 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
-    4db2:	611c                	ld	a5,0(a0)
+    4dbc:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
-    4db4:	4798                	lw	a4,8(a5)
-    4db6:	04977163          	bgeu	a4,s1,4df8 <malloc+0x74>
-    4dba:	89d2                	mv	s3,s4
-    4dbc:	000a071b          	sext.w	a4,s4
-    4dc0:	6685                	lui	a3,0x1
-    4dc2:	00d77363          	bgeu	a4,a3,4dc8 <malloc+0x44>
-    4dc6:	6985                	lui	s3,0x1
-    4dc8:	00098b1b          	sext.w	s6,s3
+    4dbe:	4798                	lw	a4,8(a5)
+    4dc0:	04977163          	bgeu	a4,s1,4e02 <malloc+0x74>
+    4dc4:	89d2                	mv	s3,s4
+    4dc6:	000a071b          	sext.w	a4,s4
+    4dca:	6685                	lui	a3,0x1
+    4dcc:	00d77363          	bgeu	a4,a3,4dd2 <malloc+0x44>
+    4dd0:	6985                	lui	s3,0x1
+    4dd2:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
-    4dcc:	0049999b          	slliw	s3,s3,0x4
+    4dd6:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
-    4dd0:	00007917          	auipc	s2,0x7
-    4dd4:	2c890913          	addi	s2,s2,712 # c098 <freep>
+    4dda:	00007917          	auipc	s2,0x7
+    4dde:	2c690913          	addi	s2,s2,710 # c0a0 <freep>
   if(p == (char*)-1)
-    4dd8:	5afd                	li	s5,-1
-    4dda:	a8a5                	j	4e52 <malloc+0xce>
+    4de2:	5afd                	li	s5,-1
+    4de4:	a8a5                	j	4e5c <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
-    4ddc:	00007797          	auipc	a5,0x7
-    4de0:	2bc78793          	addi	a5,a5,700 # c098 <freep>
-    4de4:	00007717          	auipc	a4,0x7
-    4de8:	2bc70713          	addi	a4,a4,700 # c0a0 <base>
-    4dec:	e398                	sd	a4,0(a5)
-    4dee:	e798                	sd	a4,8(a5)
+    4de6:	00007797          	auipc	a5,0x7
+    4dea:	2ba78793          	addi	a5,a5,698 # c0a0 <freep>
+    4dee:	00007717          	auipc	a4,0x7
+    4df2:	2ba70713          	addi	a4,a4,698 # c0a8 <base>
+    4df6:	e398                	sd	a4,0(a5)
+    4df8:	e798                	sd	a4,8(a5)
     base.s.size = 0;
-    4df0:	0007a823          	sw	zero,16(a5)
+    4dfa:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
-    4df4:	87ba                	mv	a5,a4
-    4df6:	b7d1                	j	4dba <malloc+0x36>
+    4dfe:	87ba                	mv	a5,a4
+    4e00:	b7d1                	j	4dc4 <malloc+0x36>
       if(p->s.size == nunits)
-    4df8:	02e48c63          	beq	s1,a4,4e30 <malloc+0xac>
+    4e02:	02e48c63          	beq	s1,a4,4e3a <malloc+0xac>
         p->s.size -= nunits;
-    4dfc:	4147073b          	subw	a4,a4,s4
-    4e00:	c798                	sw	a4,8(a5)
+    4e06:	4147073b          	subw	a4,a4,s4
+    4e0a:	c798                	sw	a4,8(a5)
         p += p->s.size;
-    4e02:	02071693          	slli	a3,a4,0x20
-    4e06:	01c6d713          	srli	a4,a3,0x1c
-    4e0a:	97ba                	add	a5,a5,a4
+    4e0c:	02071693          	slli	a3,a4,0x20
+    4e10:	01c6d713          	srli	a4,a3,0x1c
+    4e14:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
-    4e0c:	0147a423          	sw	s4,8(a5)
+    4e16:	0147a423          	sw	s4,8(a5)
       freep = prevp;
-    4e10:	00007717          	auipc	a4,0x7
-    4e14:	28a73423          	sd	a0,648(a4) # c098 <freep>
+    4e1a:	00007717          	auipc	a4,0x7
+    4e1e:	28a73323          	sd	a0,646(a4) # c0a0 <freep>
       return (void*)(p + 1);
-    4e18:	01078513          	addi	a0,a5,16
+    4e22:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
-    4e1c:	70e2                	ld	ra,56(sp)
-    4e1e:	7442                	ld	s0,48(sp)
-    4e20:	74a2                	ld	s1,40(sp)
-    4e22:	7902                	ld	s2,32(sp)
-    4e24:	69e2                	ld	s3,24(sp)
-    4e26:	6a42                	ld	s4,16(sp)
-    4e28:	6aa2                	ld	s5,8(sp)
-    4e2a:	6b02                	ld	s6,0(sp)
-    4e2c:	6121                	addi	sp,sp,64
-    4e2e:	8082                	ret
+    4e26:	70e2                	ld	ra,56(sp)
+    4e28:	7442                	ld	s0,48(sp)
+    4e2a:	74a2                	ld	s1,40(sp)
+    4e2c:	7902                	ld	s2,32(sp)
+    4e2e:	69e2                	ld	s3,24(sp)
+    4e30:	6a42                	ld	s4,16(sp)
+    4e32:	6aa2                	ld	s5,8(sp)
+    4e34:	6b02                	ld	s6,0(sp)
+    4e36:	6121                	addi	sp,sp,64
+    4e38:	8082                	ret
         prevp->s.ptr = p->s.ptr;
-    4e30:	6398                	ld	a4,0(a5)
-    4e32:	e118                	sd	a4,0(a0)
-    4e34:	bff1                	j	4e10 <malloc+0x8c>
+    4e3a:	6398                	ld	a4,0(a5)
+    4e3c:	e118                	sd	a4,0(a0)
+    4e3e:	bff1                	j	4e1a <malloc+0x8c>
   hp->s.size = nu;
-    4e36:	01652423          	sw	s6,8(a0)
+    4e40:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
-    4e3a:	0541                	addi	a0,a0,16
-    4e3c:	00000097          	auipc	ra,0x0
-    4e40:	ec6080e7          	jalr	-314(ra) # 4d02 <free>
+    4e44:	0541                	addi	a0,a0,16
+    4e46:	00000097          	auipc	ra,0x0
+    4e4a:	ec6080e7          	jalr	-314(ra) # 4d0c <free>
   return freep;
-    4e44:	00093503          	ld	a0,0(s2)
+    4e4e:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
-    4e48:	d971                	beqz	a0,4e1c <malloc+0x98>
+    4e52:	d971                	beqz	a0,4e26 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
-    4e4a:	611c                	ld	a5,0(a0)
+    4e54:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
-    4e4c:	4798                	lw	a4,8(a5)
-    4e4e:	fa9775e3          	bgeu	a4,s1,4df8 <malloc+0x74>
+    4e56:	4798                	lw	a4,8(a5)
+    4e58:	fa9775e3          	bgeu	a4,s1,4e02 <malloc+0x74>
     if(p == freep)
-    4e52:	00093703          	ld	a4,0(s2)
-    4e56:	853e                	mv	a0,a5
-    4e58:	fef719e3          	bne	a4,a5,4e4a <malloc+0xc6>
+    4e5c:	00093703          	ld	a4,0(s2)
+    4e60:	853e                	mv	a0,a5
+    4e62:	fef719e3          	bne	a4,a5,4e54 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
-    4e5c:	854e                	mv	a0,s3
-    4e5e:	00000097          	auipc	ra,0x0
-    4e62:	b2a080e7          	jalr	-1238(ra) # 4988 <sbrk>
+    4e66:	854e                	mv	a0,s3
+    4e68:	00000097          	auipc	ra,0x0
+    4e6c:	b20080e7          	jalr	-1248(ra) # 4988 <sbrk>
   if(p == (char*)-1)
-    4e66:	fd5518e3          	bne	a0,s5,4e36 <malloc+0xb2>
+    4e70:	fd5518e3          	bne	a0,s5,4e40 <malloc+0xb2>
         return 0;
-    4e6a:	4501                	li	a0,0
-    4e6c:	bf45                	j	4e1c <malloc+0x98>
+    4e74:	4501                	li	a0,0
+    4e76:	bf45                	j	4e26 <malloc+0x98>
diff --git a/xv6-user/usertests.sym b/xv6-user/usertests.sym
index bb1853d..7101964 100644
--- a/xv6-user/usertests.sym
+++ b/xv6-user/usertests.sym
@@ -1,7 +1,7 @@
 0000000000000000 .text
-0000000000004e70 .rodata
-0000000000006d10 .data
-0000000000007078 .bss
+0000000000004e78 .rodata
+0000000000006d18 .data
+0000000000007080 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -14,36 +14,37 @@
 0000000000000000 .debug_loclists
 0000000000000000 .debug_rnglists
 0000000000000000 usertests.c
-0000000000007180 big.0
-0000000000007080 args.1
+0000000000007188 big.0
+0000000000007088 args.1
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-00000000000049f4 putc
-0000000000004a16 printint
-0000000000006cf8 digits
+00000000000049fe putc
+0000000000004a20 printint
+0000000000006d00 digits
 0000000000000000 umalloc.c
-000000000000c098 freep
-000000000000c0a0 base
+000000000000c0a0 freep
+000000000000c0a8 base
 0000000000000b5c writebig
 000000000000464c strcpy
 000000000000166a exitwait
-0000000000004ccc printf
-0000000000007878 __global_pointer$
+0000000000004cd6 printf
+0000000000007880 __global_pointer$
 00000000000049a8 dev
 0000000000001a82 bigargtest
 0000000000004852 memmove
 0000000000002eec openiputtest
+00000000000049f4 times
 00000000000049c8 trace
 000000000000341a reparent
 0000000000004732 gets
-0000000000007078 __SDATA_BEGIN__
+0000000000007080 __SDATA_BEGIN__
 000000000000497e getpid
 000000000000149c pipe1
 00000000000048e4 memcpy
 0000000000002dcc iref
 0000000000000ec0 pgbug
-0000000000004d84 malloc
+0000000000004d8e malloc
 00000000000049c0 remove
 0000000000000654 copyout
 0000000000004990 sleep
@@ -58,22 +59,22 @@
 0000000000001102 truncate3
 00000000000002f0 bigwrite
 000000000000356e sharedfd
-0000000000006d30 randstate
+0000000000006d38 randstate
 0000000000004916 pipe
 00000000000049ea uname
-0000000000008188 uninit
+0000000000008190 uninit
 00000000000049d8 rename
 0000000000002bd4 dirfile
 000000000000492a write
 00000000000000d0 bsstest
 0000000000004958 fstat
-0000000000004c9e fprintf
+0000000000004ca8 fprintf
 000000000000493e kill
 0000000000000058 validatetest
 0000000000004668 strcat
 0000000000002a4e rmdot
 00000000000004ea copyin
-0000000000004ac0 vprintf
+0000000000004aca vprintf
 0000000000000194 truncate2
 000000000000496c chdir
 00000000000012c0 exectest
@@ -88,14 +89,14 @@
 00000000000034ca mem
 00000000000048aa memcmp
 00000000000048fc fork
-000000000000c0b0 __BSS_END__
+000000000000c0b8 __BSS_END__
 0000000000001c1e copyinstr3
 00000000000017be forkfork
 0000000000004988 sbrk
 00000000000049a0 test_proc
 0000000000004998 uptime
 0000000000001724 twochildren
-0000000000007078 __bss_start
+0000000000007080 __bss_start
 00000000000046ec memset
 00000000000019d0 kernmem
 000000000000025c createtest
@@ -113,21 +114,21 @@
 0000000000004382 run
 0000000000002556 subdir
 0000000000000f42 copyinstr2
-000000000000a898 buf
+000000000000a8a0 buf
 0000000000003de6 dirtest
 0000000000002072 sbrkarg
 0000000000002398 iputtest
-0000000000006d10 __DATA_BEGIN__
+0000000000006d18 __DATA_BEGIN__
 00000000000047ac stat
 000000000000397e bigfile
-0000000000007078 _edata
-000000000000c0b0 _end
+0000000000007080 _edata
+000000000000c0b8 _end
 0000000000004250 countfree
 0000000000004904 exit
 00000000000047f2 atoi
 0000000000000000 copyinstr1
 0000000000001d38 sbrkbasic
-0000000000007078 name
+0000000000007080 name
 00000000000046c2 strlen
 000000000000494e open
 0000000000000d06 removeread
@@ -138,4 +139,4 @@
 0000000000004962 mkdir
 0000000000004934 close
 0000000000001888 reparent2
-0000000000004d02 free
+0000000000004d0c free
diff --git a/xv6-user/usys.S b/xv6-user/usys.S
index c0a62cf..54f260a 100644
--- a/xv6-user/usys.S
+++ b/xv6-user/usys.S
@@ -140,3 +140,8 @@ uname:
  li a7, SYS_uname
  ecall
  ret
+.global times
+times:
+ li a7, SYS_times
+ ecall
+ ret
diff --git a/xv6-user/usys.o b/xv6-user/usys.o
index 666fab2119e7acdf8596e912a7f2d177f607055f..dc05f5af01297997db34564aafc446ab20e76b14 100644
GIT binary patch
delta 624
zcmYk3KS(1%6vpSxiexdXi6Wcj3e9GB4gLWOF-pKSY2;A2v-EONiT?{hP>$=2DFh2a
z_-Y#~8xLfy1i@hAiB}&M2i8_;4lF#l8Fqx3V!k)O?|Y9K=KRy`{7IhIz01K)>OkVe
z++~b4>T}T~6*z9G8#_jkH#jbgT=ZzXB(P{@3}SC+wq=NLmi$H><n>_K8snUznssQH
zS7Jzt5qrf`>dx8Q+Fp}m<#J;Y9%El|k+z+xB2q?GE!{=@N!zp({Y^(*PLaosY+q0z
zDMd81_I^oozi93|4+PV@X0&`o%fEA(*XPV?`DHDycsr8~75vKD&W2`Ns+O<W#6RKI
zH1~t%u42Ts@s>?mIgPHPD(JAAv{H)7d(?33+Rln1QZlN}3#~;rZU>2vz(a1F%Hn52
zv6sBiEX!+%^%+NA!OVBZr+fVL3Yhj2Nca=<10_G?Ef)=cihiT%htvWEA+P694yLFd
q2SG?BG=s4Bds{rAm5jAZ$ToThhRn@$Os?^9pkO|$C!NCd`u+oo@?MGn

delta 502
zcmYk3KS;ws6vlf=s0}vuADU*dv@w5F3L;2a#b$68acgU9wK@bRad2~RuTc7dgCOeW
zD(NPIqi!xjy9h4grehbuI}_m^+<V{szQ?-<_qchx(X|CnznhyNWZ7RMj)0E1B8&*0
zMcw}vKVq0x+8D%>=t@zXD~nW5`ESaR2rt#2jnF8tM1#;%`%^(OL(O;{>uFWn;@l<9
zZTKf?Ke1XC0>%b5xz>Nq239#93pIOSA3p^Z4Lz=;Ldu4<P}Eg)D9v%bZ8UXN+Y1RR
zQO@1Q8FgEnn+^30tvh(oRnqcb^>Lz%xTXk*o#`1_Qo^Z{K~j>iVA$O4(6HqaTa`uy
zH-;l$hpU$GZaCx^n(2}rYNjg;^0+W7<Q_wcUZ7d7;1y7}D)^GdaAlQA9z)BWtV+SW
dZak<7S`JXO=jG32K>FCV9r-Ezqf6wC+%KpqQ{eyr

diff --git a/xv6-user/usys.pl b/xv6-user/usys.pl
index 1695aec..ec2e437 100755
--- a/xv6-user/usys.pl
+++ b/xv6-user/usys.pl
@@ -43,3 +43,4 @@ entry("sysinfo");
 entry("rename");
 entry("shutdown");
 entry("uname");
+entry("times");
diff --git a/xv6-user/wc.asm b/xv6-user/wc.asm
index f951d91..59451ac 100644
--- a/xv6-user/wc.asm
+++ b/xv6-user/wc.asm
@@ -39,7 +39,7 @@ wc(int fd, char *name)
   2a:	4c01                	li	s8,0
   2c:	4b81                	li	s7,0
   2e:	00001d97          	auipc	s11,0x1
-  32:	a7bd8d93          	addi	s11,s11,-1413 # aa9 <buf+0x1>
+  32:	a83d8d93          	addi	s11,s11,-1405 # ab1 <buf+0x1>
   while((n = read(fd, buf, sizeof(buf))) > 0){
     for(i=0; i<n; i++){
       c++;
@@ -48,7 +48,7 @@ wc(int fd, char *name)
         l++;
       if(strchr(" \r\t\n\v", buf[i]))
   38:	00001a17          	auipc	s4,0x1
-  3c:	998a0a13          	addi	s4,s4,-1640 # 9d0 <malloc+0xf0>
+  3c:	9a0a0a13          	addi	s4,s4,-1632 # 9d8 <malloc+0xee>
         inword = 0;
   40:	4b01                	li	s6,0
   while((n = read(fd, buf, sizeof(buf))) > 0){
@@ -81,14 +81,14 @@ wc(int fd, char *name)
   while((n = read(fd, buf, sizeof(buf))) > 0){
   72:	20000613          	li	a2,512
   76:	00001597          	auipc	a1,0x1
-  7a:	a3258593          	addi	a1,a1,-1486 # aa8 <buf>
+  7a:	a3a58593          	addi	a1,a1,-1478 # ab0 <buf>
   7e:	f8843503          	ld	a0,-120(s0)
   82:	00000097          	auipc	ra,0x0
   86:	3fa080e7          	jalr	1018(ra) # 47c <read>
   8a:	00a05f63          	blez	a0,a8 <wc+0xa8>
     for(i=0; i<n; i++){
   8e:	00001497          	auipc	s1,0x1
-  92:	a1a48493          	addi	s1,s1,-1510 # aa8 <buf>
+  92:	a2248493          	addi	s1,s1,-1502 # ab0 <buf>
   96:	00050d1b          	sext.w	s10,a0
   9a:	fff5091b          	addiw	s2,a0,-1
   9e:	1902                	slli	s2,s2,0x20
@@ -109,9 +109,9 @@ wc(int fd, char *name)
   b2:	8662                	mv	a2,s8
   b4:	85de                	mv	a1,s7
   b6:	00001517          	auipc	a0,0x1
-  ba:	93250513          	addi	a0,a0,-1742 # 9e8 <malloc+0x108>
+  ba:	93a50513          	addi	a0,a0,-1734 # 9f0 <malloc+0x106>
   be:	00000097          	auipc	ra,0x0
-  c2:	76a080e7          	jalr	1898(ra) # 828 <printf>
+  c2:	774080e7          	jalr	1908(ra) # 832 <printf>
 }
   c6:	70e6                	ld	ra,120(sp)
   c8:	7446                	ld	s0,112(sp)
@@ -130,9 +130,9 @@ wc(int fd, char *name)
   e2:	8082                	ret
     printf("wc: read error\n");
   e4:	00001517          	auipc	a0,0x1
-  e8:	8f450513          	addi	a0,a0,-1804 # 9d8 <malloc+0xf8>
+  e8:	8fc50513          	addi	a0,a0,-1796 # 9e0 <malloc+0xf6>
   ec:	00000097          	auipc	ra,0x0
-  f0:	73c080e7          	jalr	1852(ra) # 828 <printf>
+  f0:	746080e7          	jalr	1862(ra) # 832 <printf>
     exit(1);
   f4:	4505                	li	a0,1
   f6:	00000097          	auipc	ra,0x0
@@ -164,9 +164,9 @@ main(int argc, char *argv[])
 
   printf("LINE\tWORD\tBYTE\tFILE\n");
  118:	00001517          	auipc	a0,0x1
- 11c:	8e850513          	addi	a0,a0,-1816 # a00 <malloc+0x120>
+ 11c:	8f050513          	addi	a0,a0,-1808 # a08 <malloc+0x11e>
  120:	00000097          	auipc	ra,0x0
- 124:	708080e7          	jalr	1800(ra) # 828 <printf>
+ 124:	712080e7          	jalr	1810(ra) # 832 <printf>
   for(i = 1; i < argc; i++){
  128:	00890493          	addi	s1,s2,8
  12c:	39f9                	addiw	s3,s3,-2
@@ -202,7 +202,7 @@ main(int argc, char *argv[])
  16c:	2f8080e7          	jalr	760(ra) # 460 <exit>
     wc(0, "");
  170:	00001597          	auipc	a1,0x1
- 174:	88858593          	addi	a1,a1,-1912 # 9f8 <malloc+0x118>
+ 174:	89058593          	addi	a1,a1,-1904 # a00 <malloc+0x116>
  178:	4501                	li	a0,0
  17a:	00000097          	auipc	ra,0x0
  17e:	e86080e7          	jalr	-378(ra) # 0 <wc>
@@ -213,9 +213,9 @@ main(int argc, char *argv[])
       printf("wc: cannot open %s\n", argv[i]);
  18c:	608c                	ld	a1,0(s1)
  18e:	00001517          	auipc	a0,0x1
- 192:	88a50513          	addi	a0,a0,-1910 # a18 <malloc+0x138>
+ 192:	89250513          	addi	a0,a0,-1902 # a20 <malloc+0x136>
  196:	00000097          	auipc	ra,0x0
- 19a:	692080e7          	jalr	1682(ra) # 828 <printf>
+ 19a:	69c080e7          	jalr	1692(ra) # 832 <printf>
       exit(1);
  19e:	4505                	li	a0,1
  1a0:	00000097          	auipc	ra,0x0
@@ -977,637 +977,647 @@ uname:
  ret
  54e:	8082                	ret
 
-0000000000000550 <putc>:
+0000000000000550 <times>:
+.global times
+times:
+ li a7, SYS_times
+ 550:	09900893          	li	a7,153
+ ecall
+ 554:	00000073          	ecall
+ ret
+ 558:	8082                	ret
+
+000000000000055a <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 550:	1101                	addi	sp,sp,-32
- 552:	ec06                	sd	ra,24(sp)
- 554:	e822                	sd	s0,16(sp)
- 556:	1000                	addi	s0,sp,32
- 558:	feb407a3          	sb	a1,-17(s0)
+ 55a:	1101                	addi	sp,sp,-32
+ 55c:	ec06                	sd	ra,24(sp)
+ 55e:	e822                	sd	s0,16(sp)
+ 560:	1000                	addi	s0,sp,32
+ 562:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 55c:	4605                	li	a2,1
- 55e:	fef40593          	addi	a1,s0,-17
- 562:	00000097          	auipc	ra,0x0
- 566:	f24080e7          	jalr	-220(ra) # 486 <write>
+ 566:	4605                	li	a2,1
+ 568:	fef40593          	addi	a1,s0,-17
+ 56c:	00000097          	auipc	ra,0x0
+ 570:	f1a080e7          	jalr	-230(ra) # 486 <write>
 }
- 56a:	60e2                	ld	ra,24(sp)
- 56c:	6442                	ld	s0,16(sp)
- 56e:	6105                	addi	sp,sp,32
- 570:	8082                	ret
+ 574:	60e2                	ld	ra,24(sp)
+ 576:	6442                	ld	s0,16(sp)
+ 578:	6105                	addi	sp,sp,32
+ 57a:	8082                	ret
 
-0000000000000572 <printint>:
+000000000000057c <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 572:	7139                	addi	sp,sp,-64
- 574:	fc06                	sd	ra,56(sp)
- 576:	f822                	sd	s0,48(sp)
- 578:	f426                	sd	s1,40(sp)
- 57a:	f04a                	sd	s2,32(sp)
- 57c:	ec4e                	sd	s3,24(sp)
- 57e:	0080                	addi	s0,sp,64
- 580:	84aa                	mv	s1,a0
+ 57c:	7139                	addi	sp,sp,-64
+ 57e:	fc06                	sd	ra,56(sp)
+ 580:	f822                	sd	s0,48(sp)
+ 582:	f426                	sd	s1,40(sp)
+ 584:	f04a                	sd	s2,32(sp)
+ 586:	ec4e                	sd	s3,24(sp)
+ 588:	0080                	addi	s0,sp,64
+ 58a:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 582:	c299                	beqz	a3,588 <printint+0x16>
- 584:	0805c863          	bltz	a1,614 <printint+0xa2>
+ 58c:	c299                	beqz	a3,592 <printint+0x16>
+ 58e:	0805c863          	bltz	a1,61e <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 588:	2581                	sext.w	a1,a1
+ 592:	2581                	sext.w	a1,a1
   neg = 0;
- 58a:	4881                	li	a7,0
+ 594:	4881                	li	a7,0
   }
 
   i = 0;
- 58c:	fc040993          	addi	s3,s0,-64
+ 596:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 590:	86ce                	mv	a3,s3
+ 59a:	86ce                	mv	a3,s3
   i = 0;
- 592:	4701                	li	a4,0
+ 59c:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 594:	2601                	sext.w	a2,a2
- 596:	00000517          	auipc	a0,0x0
- 59a:	4fa50513          	addi	a0,a0,1274 # a90 <digits>
- 59e:	883a                	mv	a6,a4
- 5a0:	2705                	addiw	a4,a4,1
- 5a2:	02c5f7bb          	remuw	a5,a1,a2
- 5a6:	1782                	slli	a5,a5,0x20
- 5a8:	9381                	srli	a5,a5,0x20
- 5aa:	97aa                	add	a5,a5,a0
- 5ac:	0007c783          	lbu	a5,0(a5)
- 5b0:	00f68023          	sb	a5,0(a3)
+ 59e:	2601                	sext.w	a2,a2
+ 5a0:	00000517          	auipc	a0,0x0
+ 5a4:	4f850513          	addi	a0,a0,1272 # a98 <digits>
+ 5a8:	883a                	mv	a6,a4
+ 5aa:	2705                	addiw	a4,a4,1
+ 5ac:	02c5f7bb          	remuw	a5,a1,a2
+ 5b0:	1782                	slli	a5,a5,0x20
+ 5b2:	9381                	srli	a5,a5,0x20
+ 5b4:	97aa                	add	a5,a5,a0
+ 5b6:	0007c783          	lbu	a5,0(a5)
+ 5ba:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 5b4:	0005879b          	sext.w	a5,a1
- 5b8:	02c5d5bb          	divuw	a1,a1,a2
- 5bc:	0685                	addi	a3,a3,1
- 5be:	fec7f0e3          	bgeu	a5,a2,59e <printint+0x2c>
+ 5be:	0005879b          	sext.w	a5,a1
+ 5c2:	02c5d5bb          	divuw	a1,a1,a2
+ 5c6:	0685                	addi	a3,a3,1
+ 5c8:	fec7f0e3          	bgeu	a5,a2,5a8 <printint+0x2c>
   if(neg)
- 5c2:	00088c63          	beqz	a7,5da <printint+0x68>
+ 5cc:	00088c63          	beqz	a7,5e4 <printint+0x68>
     buf[i++] = '-';
- 5c6:	fd070793          	addi	a5,a4,-48
- 5ca:	00878733          	add	a4,a5,s0
- 5ce:	02d00793          	li	a5,45
- 5d2:	fef70823          	sb	a5,-16(a4)
- 5d6:	0028071b          	addiw	a4,a6,2
+ 5d0:	fd070793          	addi	a5,a4,-48
+ 5d4:	00878733          	add	a4,a5,s0
+ 5d8:	02d00793          	li	a5,45
+ 5dc:	fef70823          	sb	a5,-16(a4)
+ 5e0:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 5da:	02e05663          	blez	a4,606 <printint+0x94>
- 5de:	fc040913          	addi	s2,s0,-64
- 5e2:	993a                	add	s2,s2,a4
- 5e4:	19fd                	addi	s3,s3,-1
- 5e6:	99ba                	add	s3,s3,a4
- 5e8:	377d                	addiw	a4,a4,-1
- 5ea:	1702                	slli	a4,a4,0x20
- 5ec:	9301                	srli	a4,a4,0x20
- 5ee:	40e989b3          	sub	s3,s3,a4
+ 5e4:	02e05663          	blez	a4,610 <printint+0x94>
+ 5e8:	fc040913          	addi	s2,s0,-64
+ 5ec:	993a                	add	s2,s2,a4
+ 5ee:	19fd                	addi	s3,s3,-1
+ 5f0:	99ba                	add	s3,s3,a4
+ 5f2:	377d                	addiw	a4,a4,-1
+ 5f4:	1702                	slli	a4,a4,0x20
+ 5f6:	9301                	srli	a4,a4,0x20
+ 5f8:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 5f2:	fff94583          	lbu	a1,-1(s2)
- 5f6:	8526                	mv	a0,s1
- 5f8:	00000097          	auipc	ra,0x0
- 5fc:	f58080e7          	jalr	-168(ra) # 550 <putc>
+ 5fc:	fff94583          	lbu	a1,-1(s2)
+ 600:	8526                	mv	a0,s1
+ 602:	00000097          	auipc	ra,0x0
+ 606:	f58080e7          	jalr	-168(ra) # 55a <putc>
   while(--i >= 0)
- 600:	197d                	addi	s2,s2,-1
- 602:	ff3918e3          	bne	s2,s3,5f2 <printint+0x80>
+ 60a:	197d                	addi	s2,s2,-1
+ 60c:	ff3918e3          	bne	s2,s3,5fc <printint+0x80>
 }
- 606:	70e2                	ld	ra,56(sp)
- 608:	7442                	ld	s0,48(sp)
- 60a:	74a2                	ld	s1,40(sp)
- 60c:	7902                	ld	s2,32(sp)
- 60e:	69e2                	ld	s3,24(sp)
- 610:	6121                	addi	sp,sp,64
- 612:	8082                	ret
+ 610:	70e2                	ld	ra,56(sp)
+ 612:	7442                	ld	s0,48(sp)
+ 614:	74a2                	ld	s1,40(sp)
+ 616:	7902                	ld	s2,32(sp)
+ 618:	69e2                	ld	s3,24(sp)
+ 61a:	6121                	addi	sp,sp,64
+ 61c:	8082                	ret
     x = -xx;
- 614:	40b005bb          	negw	a1,a1
+ 61e:	40b005bb          	negw	a1,a1
     neg = 1;
- 618:	4885                	li	a7,1
+ 622:	4885                	li	a7,1
     x = -xx;
- 61a:	bf8d                	j	58c <printint+0x1a>
+ 624:	bf8d                	j	596 <printint+0x1a>
 
-000000000000061c <vprintf>:
+0000000000000626 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 61c:	7119                	addi	sp,sp,-128
- 61e:	fc86                	sd	ra,120(sp)
- 620:	f8a2                	sd	s0,112(sp)
- 622:	f4a6                	sd	s1,104(sp)
- 624:	f0ca                	sd	s2,96(sp)
- 626:	ecce                	sd	s3,88(sp)
- 628:	e8d2                	sd	s4,80(sp)
- 62a:	e4d6                	sd	s5,72(sp)
- 62c:	e0da                	sd	s6,64(sp)
- 62e:	fc5e                	sd	s7,56(sp)
- 630:	f862                	sd	s8,48(sp)
- 632:	f466                	sd	s9,40(sp)
- 634:	f06a                	sd	s10,32(sp)
- 636:	ec6e                	sd	s11,24(sp)
- 638:	0100                	addi	s0,sp,128
+ 626:	7119                	addi	sp,sp,-128
+ 628:	fc86                	sd	ra,120(sp)
+ 62a:	f8a2                	sd	s0,112(sp)
+ 62c:	f4a6                	sd	s1,104(sp)
+ 62e:	f0ca                	sd	s2,96(sp)
+ 630:	ecce                	sd	s3,88(sp)
+ 632:	e8d2                	sd	s4,80(sp)
+ 634:	e4d6                	sd	s5,72(sp)
+ 636:	e0da                	sd	s6,64(sp)
+ 638:	fc5e                	sd	s7,56(sp)
+ 63a:	f862                	sd	s8,48(sp)
+ 63c:	f466                	sd	s9,40(sp)
+ 63e:	f06a                	sd	s10,32(sp)
+ 640:	ec6e                	sd	s11,24(sp)
+ 642:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 63a:	0005c903          	lbu	s2,0(a1)
- 63e:	18090f63          	beqz	s2,7dc <vprintf+0x1c0>
- 642:	8aaa                	mv	s5,a0
- 644:	8b32                	mv	s6,a2
- 646:	00158493          	addi	s1,a1,1
+ 644:	0005c903          	lbu	s2,0(a1)
+ 648:	18090f63          	beqz	s2,7e6 <vprintf+0x1c0>
+ 64c:	8aaa                	mv	s5,a0
+ 64e:	8b32                	mv	s6,a2
+ 650:	00158493          	addi	s1,a1,1
   state = 0;
- 64a:	4981                	li	s3,0
+ 654:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 64c:	02500a13          	li	s4,37
- 650:	4c55                	li	s8,21
- 652:	00000c97          	auipc	s9,0x0
- 656:	3e6c8c93          	addi	s9,s9,998 # a38 <malloc+0x158>
+ 656:	02500a13          	li	s4,37
+ 65a:	4c55                	li	s8,21
+ 65c:	00000c97          	auipc	s9,0x0
+ 660:	3e4c8c93          	addi	s9,s9,996 # a40 <malloc+0x156>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 65a:	02800d93          	li	s11,40
+ 664:	02800d93          	li	s11,40
   putc(fd, 'x');
- 65e:	4d41                	li	s10,16
+ 668:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 660:	00000b97          	auipc	s7,0x0
- 664:	430b8b93          	addi	s7,s7,1072 # a90 <digits>
- 668:	a839                	j	686 <vprintf+0x6a>
+ 66a:	00000b97          	auipc	s7,0x0
+ 66e:	42eb8b93          	addi	s7,s7,1070 # a98 <digits>
+ 672:	a839                	j	690 <vprintf+0x6a>
         putc(fd, c);
- 66a:	85ca                	mv	a1,s2
- 66c:	8556                	mv	a0,s5
- 66e:	00000097          	auipc	ra,0x0
- 672:	ee2080e7          	jalr	-286(ra) # 550 <putc>
- 676:	a019                	j	67c <vprintf+0x60>
+ 674:	85ca                	mv	a1,s2
+ 676:	8556                	mv	a0,s5
+ 678:	00000097          	auipc	ra,0x0
+ 67c:	ee2080e7          	jalr	-286(ra) # 55a <putc>
+ 680:	a019                	j	686 <vprintf+0x60>
     } else if(state == '%'){
- 678:	01498d63          	beq	s3,s4,692 <vprintf+0x76>
+ 682:	01498d63          	beq	s3,s4,69c <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 67c:	0485                	addi	s1,s1,1
- 67e:	fff4c903          	lbu	s2,-1(s1)
- 682:	14090d63          	beqz	s2,7dc <vprintf+0x1c0>
+ 686:	0485                	addi	s1,s1,1
+ 688:	fff4c903          	lbu	s2,-1(s1)
+ 68c:	14090d63          	beqz	s2,7e6 <vprintf+0x1c0>
     if(state == 0){
- 686:	fe0999e3          	bnez	s3,678 <vprintf+0x5c>
+ 690:	fe0999e3          	bnez	s3,682 <vprintf+0x5c>
       if(c == '%'){
- 68a:	ff4910e3          	bne	s2,s4,66a <vprintf+0x4e>
+ 694:	ff4910e3          	bne	s2,s4,674 <vprintf+0x4e>
         state = '%';
- 68e:	89d2                	mv	s3,s4
- 690:	b7f5                	j	67c <vprintf+0x60>
+ 698:	89d2                	mv	s3,s4
+ 69a:	b7f5                	j	686 <vprintf+0x60>
       if(c == 'd'){
- 692:	11490c63          	beq	s2,s4,7aa <vprintf+0x18e>
- 696:	f9d9079b          	addiw	a5,s2,-99
- 69a:	0ff7f793          	zext.b	a5,a5
- 69e:	10fc6e63          	bltu	s8,a5,7ba <vprintf+0x19e>
- 6a2:	f9d9079b          	addiw	a5,s2,-99
- 6a6:	0ff7f713          	zext.b	a4,a5
- 6aa:	10ec6863          	bltu	s8,a4,7ba <vprintf+0x19e>
- 6ae:	00271793          	slli	a5,a4,0x2
- 6b2:	97e6                	add	a5,a5,s9
- 6b4:	439c                	lw	a5,0(a5)
- 6b6:	97e6                	add	a5,a5,s9
- 6b8:	8782                	jr	a5
+ 69c:	11490c63          	beq	s2,s4,7b4 <vprintf+0x18e>
+ 6a0:	f9d9079b          	addiw	a5,s2,-99
+ 6a4:	0ff7f793          	zext.b	a5,a5
+ 6a8:	10fc6e63          	bltu	s8,a5,7c4 <vprintf+0x19e>
+ 6ac:	f9d9079b          	addiw	a5,s2,-99
+ 6b0:	0ff7f713          	zext.b	a4,a5
+ 6b4:	10ec6863          	bltu	s8,a4,7c4 <vprintf+0x19e>
+ 6b8:	00271793          	slli	a5,a4,0x2
+ 6bc:	97e6                	add	a5,a5,s9
+ 6be:	439c                	lw	a5,0(a5)
+ 6c0:	97e6                	add	a5,a5,s9
+ 6c2:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 6ba:	008b0913          	addi	s2,s6,8
- 6be:	4685                	li	a3,1
- 6c0:	4629                	li	a2,10
- 6c2:	000b2583          	lw	a1,0(s6)
- 6c6:	8556                	mv	a0,s5
- 6c8:	00000097          	auipc	ra,0x0
- 6cc:	eaa080e7          	jalr	-342(ra) # 572 <printint>
- 6d0:	8b4a                	mv	s6,s2
+ 6c4:	008b0913          	addi	s2,s6,8
+ 6c8:	4685                	li	a3,1
+ 6ca:	4629                	li	a2,10
+ 6cc:	000b2583          	lw	a1,0(s6)
+ 6d0:	8556                	mv	a0,s5
+ 6d2:	00000097          	auipc	ra,0x0
+ 6d6:	eaa080e7          	jalr	-342(ra) # 57c <printint>
+ 6da:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 6d2:	4981                	li	s3,0
- 6d4:	b765                	j	67c <vprintf+0x60>
+ 6dc:	4981                	li	s3,0
+ 6de:	b765                	j	686 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 6d6:	008b0913          	addi	s2,s6,8
- 6da:	4681                	li	a3,0
- 6dc:	4629                	li	a2,10
- 6de:	000b2583          	lw	a1,0(s6)
- 6e2:	8556                	mv	a0,s5
- 6e4:	00000097          	auipc	ra,0x0
- 6e8:	e8e080e7          	jalr	-370(ra) # 572 <printint>
- 6ec:	8b4a                	mv	s6,s2
+ 6e0:	008b0913          	addi	s2,s6,8
+ 6e4:	4681                	li	a3,0
+ 6e6:	4629                	li	a2,10
+ 6e8:	000b2583          	lw	a1,0(s6)
+ 6ec:	8556                	mv	a0,s5
+ 6ee:	00000097          	auipc	ra,0x0
+ 6f2:	e8e080e7          	jalr	-370(ra) # 57c <printint>
+ 6f6:	8b4a                	mv	s6,s2
       state = 0;
- 6ee:	4981                	li	s3,0
- 6f0:	b771                	j	67c <vprintf+0x60>
+ 6f8:	4981                	li	s3,0
+ 6fa:	b771                	j	686 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 6f2:	008b0913          	addi	s2,s6,8
- 6f6:	4681                	li	a3,0
- 6f8:	866a                	mv	a2,s10
- 6fa:	000b2583          	lw	a1,0(s6)
- 6fe:	8556                	mv	a0,s5
- 700:	00000097          	auipc	ra,0x0
- 704:	e72080e7          	jalr	-398(ra) # 572 <printint>
- 708:	8b4a                	mv	s6,s2
+ 6fc:	008b0913          	addi	s2,s6,8
+ 700:	4681                	li	a3,0
+ 702:	866a                	mv	a2,s10
+ 704:	000b2583          	lw	a1,0(s6)
+ 708:	8556                	mv	a0,s5
+ 70a:	00000097          	auipc	ra,0x0
+ 70e:	e72080e7          	jalr	-398(ra) # 57c <printint>
+ 712:	8b4a                	mv	s6,s2
       state = 0;
- 70a:	4981                	li	s3,0
- 70c:	bf85                	j	67c <vprintf+0x60>
+ 714:	4981                	li	s3,0
+ 716:	bf85                	j	686 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 70e:	008b0793          	addi	a5,s6,8
- 712:	f8f43423          	sd	a5,-120(s0)
- 716:	000b3983          	ld	s3,0(s6)
+ 718:	008b0793          	addi	a5,s6,8
+ 71c:	f8f43423          	sd	a5,-120(s0)
+ 720:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 71a:	03000593          	li	a1,48
- 71e:	8556                	mv	a0,s5
- 720:	00000097          	auipc	ra,0x0
- 724:	e30080e7          	jalr	-464(ra) # 550 <putc>
+ 724:	03000593          	li	a1,48
+ 728:	8556                	mv	a0,s5
+ 72a:	00000097          	auipc	ra,0x0
+ 72e:	e30080e7          	jalr	-464(ra) # 55a <putc>
   putc(fd, 'x');
- 728:	07800593          	li	a1,120
- 72c:	8556                	mv	a0,s5
- 72e:	00000097          	auipc	ra,0x0
- 732:	e22080e7          	jalr	-478(ra) # 550 <putc>
- 736:	896a                	mv	s2,s10
+ 732:	07800593          	li	a1,120
+ 736:	8556                	mv	a0,s5
+ 738:	00000097          	auipc	ra,0x0
+ 73c:	e22080e7          	jalr	-478(ra) # 55a <putc>
+ 740:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 738:	03c9d793          	srli	a5,s3,0x3c
- 73c:	97de                	add	a5,a5,s7
- 73e:	0007c583          	lbu	a1,0(a5)
- 742:	8556                	mv	a0,s5
- 744:	00000097          	auipc	ra,0x0
- 748:	e0c080e7          	jalr	-500(ra) # 550 <putc>
+ 742:	03c9d793          	srli	a5,s3,0x3c
+ 746:	97de                	add	a5,a5,s7
+ 748:	0007c583          	lbu	a1,0(a5)
+ 74c:	8556                	mv	a0,s5
+ 74e:	00000097          	auipc	ra,0x0
+ 752:	e0c080e7          	jalr	-500(ra) # 55a <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 74c:	0992                	slli	s3,s3,0x4
- 74e:	397d                	addiw	s2,s2,-1
- 750:	fe0914e3          	bnez	s2,738 <vprintf+0x11c>
+ 756:	0992                	slli	s3,s3,0x4
+ 758:	397d                	addiw	s2,s2,-1
+ 75a:	fe0914e3          	bnez	s2,742 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 754:	f8843b03          	ld	s6,-120(s0)
+ 75e:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 758:	4981                	li	s3,0
- 75a:	b70d                	j	67c <vprintf+0x60>
+ 762:	4981                	li	s3,0
+ 764:	b70d                	j	686 <vprintf+0x60>
         s = va_arg(ap, char*);
- 75c:	008b0913          	addi	s2,s6,8
- 760:	000b3983          	ld	s3,0(s6)
+ 766:	008b0913          	addi	s2,s6,8
+ 76a:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 764:	02098163          	beqz	s3,786 <vprintf+0x16a>
+ 76e:	02098163          	beqz	s3,790 <vprintf+0x16a>
         while(*s != 0){
- 768:	0009c583          	lbu	a1,0(s3)
- 76c:	c5ad                	beqz	a1,7d6 <vprintf+0x1ba>
+ 772:	0009c583          	lbu	a1,0(s3)
+ 776:	c5ad                	beqz	a1,7e0 <vprintf+0x1ba>
           putc(fd, *s);
- 76e:	8556                	mv	a0,s5
- 770:	00000097          	auipc	ra,0x0
- 774:	de0080e7          	jalr	-544(ra) # 550 <putc>
+ 778:	8556                	mv	a0,s5
+ 77a:	00000097          	auipc	ra,0x0
+ 77e:	de0080e7          	jalr	-544(ra) # 55a <putc>
           s++;
- 778:	0985                	addi	s3,s3,1
+ 782:	0985                	addi	s3,s3,1
         while(*s != 0){
- 77a:	0009c583          	lbu	a1,0(s3)
- 77e:	f9e5                	bnez	a1,76e <vprintf+0x152>
+ 784:	0009c583          	lbu	a1,0(s3)
+ 788:	f9e5                	bnez	a1,778 <vprintf+0x152>
         s = va_arg(ap, char*);
- 780:	8b4a                	mv	s6,s2
+ 78a:	8b4a                	mv	s6,s2
       state = 0;
- 782:	4981                	li	s3,0
- 784:	bde5                	j	67c <vprintf+0x60>
+ 78c:	4981                	li	s3,0
+ 78e:	bde5                	j	686 <vprintf+0x60>
           s = "(null)";
- 786:	00000997          	auipc	s3,0x0
- 78a:	2aa98993          	addi	s3,s3,682 # a30 <malloc+0x150>
+ 790:	00000997          	auipc	s3,0x0
+ 794:	2a898993          	addi	s3,s3,680 # a38 <malloc+0x14e>
         while(*s != 0){
- 78e:	85ee                	mv	a1,s11
- 790:	bff9                	j	76e <vprintf+0x152>
+ 798:	85ee                	mv	a1,s11
+ 79a:	bff9                	j	778 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 792:	008b0913          	addi	s2,s6,8
- 796:	000b4583          	lbu	a1,0(s6)
- 79a:	8556                	mv	a0,s5
- 79c:	00000097          	auipc	ra,0x0
- 7a0:	db4080e7          	jalr	-588(ra) # 550 <putc>
- 7a4:	8b4a                	mv	s6,s2
+ 79c:	008b0913          	addi	s2,s6,8
+ 7a0:	000b4583          	lbu	a1,0(s6)
+ 7a4:	8556                	mv	a0,s5
+ 7a6:	00000097          	auipc	ra,0x0
+ 7aa:	db4080e7          	jalr	-588(ra) # 55a <putc>
+ 7ae:	8b4a                	mv	s6,s2
       state = 0;
- 7a6:	4981                	li	s3,0
- 7a8:	bdd1                	j	67c <vprintf+0x60>
+ 7b0:	4981                	li	s3,0
+ 7b2:	bdd1                	j	686 <vprintf+0x60>
         putc(fd, c);
- 7aa:	85d2                	mv	a1,s4
- 7ac:	8556                	mv	a0,s5
- 7ae:	00000097          	auipc	ra,0x0
- 7b2:	da2080e7          	jalr	-606(ra) # 550 <putc>
+ 7b4:	85d2                	mv	a1,s4
+ 7b6:	8556                	mv	a0,s5
+ 7b8:	00000097          	auipc	ra,0x0
+ 7bc:	da2080e7          	jalr	-606(ra) # 55a <putc>
       state = 0;
- 7b6:	4981                	li	s3,0
- 7b8:	b5d1                	j	67c <vprintf+0x60>
+ 7c0:	4981                	li	s3,0
+ 7c2:	b5d1                	j	686 <vprintf+0x60>
         putc(fd, '%');
- 7ba:	85d2                	mv	a1,s4
- 7bc:	8556                	mv	a0,s5
- 7be:	00000097          	auipc	ra,0x0
- 7c2:	d92080e7          	jalr	-622(ra) # 550 <putc>
+ 7c4:	85d2                	mv	a1,s4
+ 7c6:	8556                	mv	a0,s5
+ 7c8:	00000097          	auipc	ra,0x0
+ 7cc:	d92080e7          	jalr	-622(ra) # 55a <putc>
         putc(fd, c);
- 7c6:	85ca                	mv	a1,s2
- 7c8:	8556                	mv	a0,s5
- 7ca:	00000097          	auipc	ra,0x0
- 7ce:	d86080e7          	jalr	-634(ra) # 550 <putc>
+ 7d0:	85ca                	mv	a1,s2
+ 7d2:	8556                	mv	a0,s5
+ 7d4:	00000097          	auipc	ra,0x0
+ 7d8:	d86080e7          	jalr	-634(ra) # 55a <putc>
       state = 0;
- 7d2:	4981                	li	s3,0
- 7d4:	b565                	j	67c <vprintf+0x60>
+ 7dc:	4981                	li	s3,0
+ 7de:	b565                	j	686 <vprintf+0x60>
         s = va_arg(ap, char*);
- 7d6:	8b4a                	mv	s6,s2
+ 7e0:	8b4a                	mv	s6,s2
       state = 0;
- 7d8:	4981                	li	s3,0
- 7da:	b54d                	j	67c <vprintf+0x60>
+ 7e2:	4981                	li	s3,0
+ 7e4:	b54d                	j	686 <vprintf+0x60>
     }
   }
 }
- 7dc:	70e6                	ld	ra,120(sp)
- 7de:	7446                	ld	s0,112(sp)
- 7e0:	74a6                	ld	s1,104(sp)
- 7e2:	7906                	ld	s2,96(sp)
- 7e4:	69e6                	ld	s3,88(sp)
- 7e6:	6a46                	ld	s4,80(sp)
- 7e8:	6aa6                	ld	s5,72(sp)
- 7ea:	6b06                	ld	s6,64(sp)
- 7ec:	7be2                	ld	s7,56(sp)
- 7ee:	7c42                	ld	s8,48(sp)
- 7f0:	7ca2                	ld	s9,40(sp)
- 7f2:	7d02                	ld	s10,32(sp)
- 7f4:	6de2                	ld	s11,24(sp)
- 7f6:	6109                	addi	sp,sp,128
- 7f8:	8082                	ret
-
-00000000000007fa <fprintf>:
+ 7e6:	70e6                	ld	ra,120(sp)
+ 7e8:	7446                	ld	s0,112(sp)
+ 7ea:	74a6                	ld	s1,104(sp)
+ 7ec:	7906                	ld	s2,96(sp)
+ 7ee:	69e6                	ld	s3,88(sp)
+ 7f0:	6a46                	ld	s4,80(sp)
+ 7f2:	6aa6                	ld	s5,72(sp)
+ 7f4:	6b06                	ld	s6,64(sp)
+ 7f6:	7be2                	ld	s7,56(sp)
+ 7f8:	7c42                	ld	s8,48(sp)
+ 7fa:	7ca2                	ld	s9,40(sp)
+ 7fc:	7d02                	ld	s10,32(sp)
+ 7fe:	6de2                	ld	s11,24(sp)
+ 800:	6109                	addi	sp,sp,128
+ 802:	8082                	ret
+
+0000000000000804 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 7fa:	715d                	addi	sp,sp,-80
- 7fc:	ec06                	sd	ra,24(sp)
- 7fe:	e822                	sd	s0,16(sp)
- 800:	1000                	addi	s0,sp,32
- 802:	e010                	sd	a2,0(s0)
- 804:	e414                	sd	a3,8(s0)
- 806:	e818                	sd	a4,16(s0)
- 808:	ec1c                	sd	a5,24(s0)
- 80a:	03043023          	sd	a6,32(s0)
- 80e:	03143423          	sd	a7,40(s0)
+ 804:	715d                	addi	sp,sp,-80
+ 806:	ec06                	sd	ra,24(sp)
+ 808:	e822                	sd	s0,16(sp)
+ 80a:	1000                	addi	s0,sp,32
+ 80c:	e010                	sd	a2,0(s0)
+ 80e:	e414                	sd	a3,8(s0)
+ 810:	e818                	sd	a4,16(s0)
+ 812:	ec1c                	sd	a5,24(s0)
+ 814:	03043023          	sd	a6,32(s0)
+ 818:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 812:	8622                	mv	a2,s0
- 814:	fe843423          	sd	s0,-24(s0)
+ 81c:	8622                	mv	a2,s0
+ 81e:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 818:	00000097          	auipc	ra,0x0
- 81c:	e04080e7          	jalr	-508(ra) # 61c <vprintf>
+ 822:	00000097          	auipc	ra,0x0
+ 826:	e04080e7          	jalr	-508(ra) # 626 <vprintf>
 }
- 820:	60e2                	ld	ra,24(sp)
- 822:	6442                	ld	s0,16(sp)
- 824:	6161                	addi	sp,sp,80
- 826:	8082                	ret
+ 82a:	60e2                	ld	ra,24(sp)
+ 82c:	6442                	ld	s0,16(sp)
+ 82e:	6161                	addi	sp,sp,80
+ 830:	8082                	ret
 
-0000000000000828 <printf>:
+0000000000000832 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 828:	711d                	addi	sp,sp,-96
- 82a:	ec06                	sd	ra,24(sp)
- 82c:	e822                	sd	s0,16(sp)
- 82e:	1000                	addi	s0,sp,32
- 830:	e40c                	sd	a1,8(s0)
- 832:	e810                	sd	a2,16(s0)
- 834:	ec14                	sd	a3,24(s0)
- 836:	f018                	sd	a4,32(s0)
- 838:	f41c                	sd	a5,40(s0)
- 83a:	03043823          	sd	a6,48(s0)
- 83e:	03143c23          	sd	a7,56(s0)
+ 832:	711d                	addi	sp,sp,-96
+ 834:	ec06                	sd	ra,24(sp)
+ 836:	e822                	sd	s0,16(sp)
+ 838:	1000                	addi	s0,sp,32
+ 83a:	e40c                	sd	a1,8(s0)
+ 83c:	e810                	sd	a2,16(s0)
+ 83e:	ec14                	sd	a3,24(s0)
+ 840:	f018                	sd	a4,32(s0)
+ 842:	f41c                	sd	a5,40(s0)
+ 844:	03043823          	sd	a6,48(s0)
+ 848:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 842:	00840613          	addi	a2,s0,8
- 846:	fec43423          	sd	a2,-24(s0)
+ 84c:	00840613          	addi	a2,s0,8
+ 850:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 84a:	85aa                	mv	a1,a0
- 84c:	4505                	li	a0,1
- 84e:	00000097          	auipc	ra,0x0
- 852:	dce080e7          	jalr	-562(ra) # 61c <vprintf>
+ 854:	85aa                	mv	a1,a0
+ 856:	4505                	li	a0,1
+ 858:	00000097          	auipc	ra,0x0
+ 85c:	dce080e7          	jalr	-562(ra) # 626 <vprintf>
 }
- 856:	60e2                	ld	ra,24(sp)
- 858:	6442                	ld	s0,16(sp)
- 85a:	6125                	addi	sp,sp,96
- 85c:	8082                	ret
+ 860:	60e2                	ld	ra,24(sp)
+ 862:	6442                	ld	s0,16(sp)
+ 864:	6125                	addi	sp,sp,96
+ 866:	8082                	ret
 
-000000000000085e <free>:
+0000000000000868 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 85e:	1141                	addi	sp,sp,-16
- 860:	e422                	sd	s0,8(sp)
- 862:	0800                	addi	s0,sp,16
+ 868:	1141                	addi	sp,sp,-16
+ 86a:	e422                	sd	s0,8(sp)
+ 86c:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 864:	ff050693          	addi	a3,a0,-16
+ 86e:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 868:	00000797          	auipc	a5,0x0
- 86c:	4407b783          	ld	a5,1088(a5) # ca8 <freep>
- 870:	a02d                	j	89a <free+0x3c>
+ 872:	00000797          	auipc	a5,0x0
+ 876:	43e7b783          	ld	a5,1086(a5) # cb0 <freep>
+ 87a:	a02d                	j	8a4 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 872:	4618                	lw	a4,8(a2)
- 874:	9f2d                	addw	a4,a4,a1
- 876:	fee52c23          	sw	a4,-8(a0)
+ 87c:	4618                	lw	a4,8(a2)
+ 87e:	9f2d                	addw	a4,a4,a1
+ 880:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 87a:	6398                	ld	a4,0(a5)
- 87c:	6310                	ld	a2,0(a4)
- 87e:	a83d                	j	8bc <free+0x5e>
+ 884:	6398                	ld	a4,0(a5)
+ 886:	6310                	ld	a2,0(a4)
+ 888:	a83d                	j	8c6 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 880:	ff852703          	lw	a4,-8(a0)
- 884:	9f31                	addw	a4,a4,a2
- 886:	c798                	sw	a4,8(a5)
+ 88a:	ff852703          	lw	a4,-8(a0)
+ 88e:	9f31                	addw	a4,a4,a2
+ 890:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 888:	ff053683          	ld	a3,-16(a0)
- 88c:	a091                	j	8d0 <free+0x72>
+ 892:	ff053683          	ld	a3,-16(a0)
+ 896:	a091                	j	8da <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 88e:	6398                	ld	a4,0(a5)
- 890:	00e7e463          	bltu	a5,a4,898 <free+0x3a>
- 894:	00e6ea63          	bltu	a3,a4,8a8 <free+0x4a>
+ 898:	6398                	ld	a4,0(a5)
+ 89a:	00e7e463          	bltu	a5,a4,8a2 <free+0x3a>
+ 89e:	00e6ea63          	bltu	a3,a4,8b2 <free+0x4a>
 {
- 898:	87ba                	mv	a5,a4
+ 8a2:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 89a:	fed7fae3          	bgeu	a5,a3,88e <free+0x30>
- 89e:	6398                	ld	a4,0(a5)
- 8a0:	00e6e463          	bltu	a3,a4,8a8 <free+0x4a>
+ 8a4:	fed7fae3          	bgeu	a5,a3,898 <free+0x30>
+ 8a8:	6398                	ld	a4,0(a5)
+ 8aa:	00e6e463          	bltu	a3,a4,8b2 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 8a4:	fee7eae3          	bltu	a5,a4,898 <free+0x3a>
+ 8ae:	fee7eae3          	bltu	a5,a4,8a2 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 8a8:	ff852583          	lw	a1,-8(a0)
- 8ac:	6390                	ld	a2,0(a5)
- 8ae:	02059813          	slli	a6,a1,0x20
- 8b2:	01c85713          	srli	a4,a6,0x1c
- 8b6:	9736                	add	a4,a4,a3
- 8b8:	fae60de3          	beq	a2,a4,872 <free+0x14>
+ 8b2:	ff852583          	lw	a1,-8(a0)
+ 8b6:	6390                	ld	a2,0(a5)
+ 8b8:	02059813          	slli	a6,a1,0x20
+ 8bc:	01c85713          	srli	a4,a6,0x1c
+ 8c0:	9736                	add	a4,a4,a3
+ 8c2:	fae60de3          	beq	a2,a4,87c <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 8bc:	fec53823          	sd	a2,-16(a0)
+ 8c6:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 8c0:	4790                	lw	a2,8(a5)
- 8c2:	02061593          	slli	a1,a2,0x20
- 8c6:	01c5d713          	srli	a4,a1,0x1c
- 8ca:	973e                	add	a4,a4,a5
- 8cc:	fae68ae3          	beq	a3,a4,880 <free+0x22>
+ 8ca:	4790                	lw	a2,8(a5)
+ 8cc:	02061593          	slli	a1,a2,0x20
+ 8d0:	01c5d713          	srli	a4,a1,0x1c
+ 8d4:	973e                	add	a4,a4,a5
+ 8d6:	fae68ae3          	beq	a3,a4,88a <free+0x22>
     p->s.ptr = bp->s.ptr;
- 8d0:	e394                	sd	a3,0(a5)
+ 8da:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 8d2:	00000717          	auipc	a4,0x0
- 8d6:	3cf73b23          	sd	a5,982(a4) # ca8 <freep>
+ 8dc:	00000717          	auipc	a4,0x0
+ 8e0:	3cf73a23          	sd	a5,980(a4) # cb0 <freep>
 }
- 8da:	6422                	ld	s0,8(sp)
- 8dc:	0141                	addi	sp,sp,16
- 8de:	8082                	ret
+ 8e4:	6422                	ld	s0,8(sp)
+ 8e6:	0141                	addi	sp,sp,16
+ 8e8:	8082                	ret
 
-00000000000008e0 <malloc>:
+00000000000008ea <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 8e0:	7139                	addi	sp,sp,-64
- 8e2:	fc06                	sd	ra,56(sp)
- 8e4:	f822                	sd	s0,48(sp)
- 8e6:	f426                	sd	s1,40(sp)
- 8e8:	f04a                	sd	s2,32(sp)
- 8ea:	ec4e                	sd	s3,24(sp)
- 8ec:	e852                	sd	s4,16(sp)
- 8ee:	e456                	sd	s5,8(sp)
- 8f0:	e05a                	sd	s6,0(sp)
- 8f2:	0080                	addi	s0,sp,64
+ 8ea:	7139                	addi	sp,sp,-64
+ 8ec:	fc06                	sd	ra,56(sp)
+ 8ee:	f822                	sd	s0,48(sp)
+ 8f0:	f426                	sd	s1,40(sp)
+ 8f2:	f04a                	sd	s2,32(sp)
+ 8f4:	ec4e                	sd	s3,24(sp)
+ 8f6:	e852                	sd	s4,16(sp)
+ 8f8:	e456                	sd	s5,8(sp)
+ 8fa:	e05a                	sd	s6,0(sp)
+ 8fc:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 8f4:	02051493          	slli	s1,a0,0x20
- 8f8:	9081                	srli	s1,s1,0x20
- 8fa:	04bd                	addi	s1,s1,15
- 8fc:	8091                	srli	s1,s1,0x4
- 8fe:	00148a1b          	addiw	s4,s1,1
- 902:	0485                	addi	s1,s1,1
+ 8fe:	02051493          	slli	s1,a0,0x20
+ 902:	9081                	srli	s1,s1,0x20
+ 904:	04bd                	addi	s1,s1,15
+ 906:	8091                	srli	s1,s1,0x4
+ 908:	00148a1b          	addiw	s4,s1,1
+ 90c:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 904:	00000517          	auipc	a0,0x0
- 908:	3a453503          	ld	a0,932(a0) # ca8 <freep>
- 90c:	c515                	beqz	a0,938 <malloc+0x58>
+ 90e:	00000517          	auipc	a0,0x0
+ 912:	3a253503          	ld	a0,930(a0) # cb0 <freep>
+ 916:	c515                	beqz	a0,942 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 90e:	611c                	ld	a5,0(a0)
+ 918:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 910:	4798                	lw	a4,8(a5)
- 912:	04977163          	bgeu	a4,s1,954 <malloc+0x74>
- 916:	89d2                	mv	s3,s4
- 918:	000a071b          	sext.w	a4,s4
- 91c:	6685                	lui	a3,0x1
- 91e:	00d77363          	bgeu	a4,a3,924 <malloc+0x44>
- 922:	6985                	lui	s3,0x1
- 924:	00098b1b          	sext.w	s6,s3
+ 91a:	4798                	lw	a4,8(a5)
+ 91c:	04977163          	bgeu	a4,s1,95e <malloc+0x74>
+ 920:	89d2                	mv	s3,s4
+ 922:	000a071b          	sext.w	a4,s4
+ 926:	6685                	lui	a3,0x1
+ 928:	00d77363          	bgeu	a4,a3,92e <malloc+0x44>
+ 92c:	6985                	lui	s3,0x1
+ 92e:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 928:	0049999b          	slliw	s3,s3,0x4
+ 932:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 92c:	00000917          	auipc	s2,0x0
- 930:	37c90913          	addi	s2,s2,892 # ca8 <freep>
+ 936:	00000917          	auipc	s2,0x0
+ 93a:	37a90913          	addi	s2,s2,890 # cb0 <freep>
   if(p == (char*)-1)
- 934:	5afd                	li	s5,-1
- 936:	a8a5                	j	9ae <malloc+0xce>
+ 93e:	5afd                	li	s5,-1
+ 940:	a8a5                	j	9b8 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 938:	00000797          	auipc	a5,0x0
- 93c:	37078793          	addi	a5,a5,880 # ca8 <freep>
- 940:	00000717          	auipc	a4,0x0
- 944:	37070713          	addi	a4,a4,880 # cb0 <base>
- 948:	e398                	sd	a4,0(a5)
- 94a:	e798                	sd	a4,8(a5)
+ 942:	00000797          	auipc	a5,0x0
+ 946:	36e78793          	addi	a5,a5,878 # cb0 <freep>
+ 94a:	00000717          	auipc	a4,0x0
+ 94e:	36e70713          	addi	a4,a4,878 # cb8 <base>
+ 952:	e398                	sd	a4,0(a5)
+ 954:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 94c:	0007a823          	sw	zero,16(a5)
+ 956:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 950:	87ba                	mv	a5,a4
- 952:	b7d1                	j	916 <malloc+0x36>
+ 95a:	87ba                	mv	a5,a4
+ 95c:	b7d1                	j	920 <malloc+0x36>
       if(p->s.size == nunits)
- 954:	02e48c63          	beq	s1,a4,98c <malloc+0xac>
+ 95e:	02e48c63          	beq	s1,a4,996 <malloc+0xac>
         p->s.size -= nunits;
- 958:	4147073b          	subw	a4,a4,s4
- 95c:	c798                	sw	a4,8(a5)
+ 962:	4147073b          	subw	a4,a4,s4
+ 966:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 95e:	02071693          	slli	a3,a4,0x20
- 962:	01c6d713          	srli	a4,a3,0x1c
- 966:	97ba                	add	a5,a5,a4
+ 968:	02071693          	slli	a3,a4,0x20
+ 96c:	01c6d713          	srli	a4,a3,0x1c
+ 970:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 968:	0147a423          	sw	s4,8(a5)
+ 972:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 96c:	00000717          	auipc	a4,0x0
- 970:	32a73e23          	sd	a0,828(a4) # ca8 <freep>
+ 976:	00000717          	auipc	a4,0x0
+ 97a:	32a73d23          	sd	a0,826(a4) # cb0 <freep>
       return (void*)(p + 1);
- 974:	01078513          	addi	a0,a5,16
+ 97e:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 978:	70e2                	ld	ra,56(sp)
- 97a:	7442                	ld	s0,48(sp)
- 97c:	74a2                	ld	s1,40(sp)
- 97e:	7902                	ld	s2,32(sp)
- 980:	69e2                	ld	s3,24(sp)
- 982:	6a42                	ld	s4,16(sp)
- 984:	6aa2                	ld	s5,8(sp)
- 986:	6b02                	ld	s6,0(sp)
- 988:	6121                	addi	sp,sp,64
- 98a:	8082                	ret
+ 982:	70e2                	ld	ra,56(sp)
+ 984:	7442                	ld	s0,48(sp)
+ 986:	74a2                	ld	s1,40(sp)
+ 988:	7902                	ld	s2,32(sp)
+ 98a:	69e2                	ld	s3,24(sp)
+ 98c:	6a42                	ld	s4,16(sp)
+ 98e:	6aa2                	ld	s5,8(sp)
+ 990:	6b02                	ld	s6,0(sp)
+ 992:	6121                	addi	sp,sp,64
+ 994:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 98c:	6398                	ld	a4,0(a5)
- 98e:	e118                	sd	a4,0(a0)
- 990:	bff1                	j	96c <malloc+0x8c>
+ 996:	6398                	ld	a4,0(a5)
+ 998:	e118                	sd	a4,0(a0)
+ 99a:	bff1                	j	976 <malloc+0x8c>
   hp->s.size = nu;
- 992:	01652423          	sw	s6,8(a0)
+ 99c:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 996:	0541                	addi	a0,a0,16
- 998:	00000097          	auipc	ra,0x0
- 99c:	ec6080e7          	jalr	-314(ra) # 85e <free>
+ 9a0:	0541                	addi	a0,a0,16
+ 9a2:	00000097          	auipc	ra,0x0
+ 9a6:	ec6080e7          	jalr	-314(ra) # 868 <free>
   return freep;
- 9a0:	00093503          	ld	a0,0(s2)
+ 9aa:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 9a4:	d971                	beqz	a0,978 <malloc+0x98>
+ 9ae:	d971                	beqz	a0,982 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 9a6:	611c                	ld	a5,0(a0)
+ 9b0:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 9a8:	4798                	lw	a4,8(a5)
- 9aa:	fa9775e3          	bgeu	a4,s1,954 <malloc+0x74>
+ 9b2:	4798                	lw	a4,8(a5)
+ 9b4:	fa9775e3          	bgeu	a4,s1,95e <malloc+0x74>
     if(p == freep)
- 9ae:	00093703          	ld	a4,0(s2)
- 9b2:	853e                	mv	a0,a5
- 9b4:	fef719e3          	bne	a4,a5,9a6 <malloc+0xc6>
+ 9b8:	00093703          	ld	a4,0(s2)
+ 9bc:	853e                	mv	a0,a5
+ 9be:	fef719e3          	bne	a4,a5,9b0 <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 9b8:	854e                	mv	a0,s3
- 9ba:	00000097          	auipc	ra,0x0
- 9be:	b2a080e7          	jalr	-1238(ra) # 4e4 <sbrk>
+ 9c2:	854e                	mv	a0,s3
+ 9c4:	00000097          	auipc	ra,0x0
+ 9c8:	b20080e7          	jalr	-1248(ra) # 4e4 <sbrk>
   if(p == (char*)-1)
- 9c2:	fd5518e3          	bne	a0,s5,992 <malloc+0xb2>
+ 9cc:	fd5518e3          	bne	a0,s5,99c <malloc+0xb2>
         return 0;
- 9c6:	4501                	li	a0,0
- 9c8:	bf45                	j	978 <malloc+0x98>
+ 9d0:	4501                	li	a0,0
+ 9d2:	bf45                	j	982 <malloc+0x98>
diff --git a/xv6-user/wc.sym b/xv6-user/wc.sym
index 12d95bc..8e8695a 100644
--- a/xv6-user/wc.sym
+++ b/xv6-user/wc.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-00000000000009d0 .rodata
-0000000000000aa8 .bss
+00000000000009d8 .rodata
+0000000000000ab0 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,23 +16,24 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-0000000000000550 putc
-0000000000000572 printint
-0000000000000a90 digits
+000000000000055a putc
+000000000000057c printint
+0000000000000a98 digits
 0000000000000000 umalloc.c
-0000000000000ca8 freep
-0000000000000cb0 base
+0000000000000cb0 freep
+0000000000000cb8 base
 00000000000001a8 strcpy
-0000000000000828 printf
-00000000000012a1 __global_pointer$
+0000000000000832 printf
+00000000000012a9 __global_pointer$
 0000000000000504 dev
 00000000000003ae memmove
+0000000000000550 times
 0000000000000524 trace
 000000000000028e gets
-0000000000000aa1 __SDATA_BEGIN__
+0000000000000aa9 __SDATA_BEGIN__
 00000000000004da getpid
 0000000000000440 memcpy
-00000000000008e0 malloc
+00000000000008ea malloc
 000000000000051c remove
 00000000000004ec sleep
 000000000000052c sysinfo
@@ -42,10 +43,10 @@
 0000000000000534 rename
 0000000000000486 write
 00000000000004b4 fstat
-00000000000007fa fprintf
+0000000000000804 fprintf
 000000000000049a kill
 00000000000001c4 strcat
-000000000000061c vprintf
+0000000000000626 vprintf
 00000000000004c8 chdir
 00000000000004a2 exec
 000000000000046a wait
@@ -53,22 +54,22 @@
 0000000000000000 wc
 0000000000000406 memcmp
 0000000000000458 fork
-0000000000000cc0 __BSS_END__
+0000000000000cc8 __BSS_END__
 00000000000004e4 sbrk
 00000000000004fc test_proc
 00000000000004f4 uptime
-0000000000000aa1 __bss_start
+0000000000000aa9 __bss_start
 0000000000000248 memset
 00000000000000fe main
 00000000000001f2 strcmp
 000000000000053c shutdown
 00000000000004d2 dup
 0000000000000514 getcwd
-0000000000000aa8 buf
-0000000000000aa1 __DATA_BEGIN__
+0000000000000ab0 buf
+0000000000000aa9 __DATA_BEGIN__
 0000000000000308 stat
-0000000000000aa1 _edata
-0000000000000cc0 _end
+0000000000000aa9 _edata
+0000000000000cc8 _end
 0000000000000460 exit
 000000000000034e atoi
 000000000000021e strlen
@@ -76,4 +77,4 @@
 000000000000026a strchr
 00000000000004be mkdir
 0000000000000490 close
-000000000000085e free
+0000000000000868 free
diff --git a/xv6-user/xargs.asm b/xv6-user/xargs.asm
index 0488ea8..725beb8 100644
--- a/xv6-user/xargs.asm
+++ b/xv6-user/xargs.asm
@@ -167,10 +167,10 @@ int main(int argc, char *argv[])
  114:	35e080e7          	jalr	862(ra) # 46e <exit>
         fprintf(2, "Usage: xargs COMMAND [INITIAL-ARGS]...\n");
  118:	00001597          	auipc	a1,0x1
- 11c:	8c058593          	addi	a1,a1,-1856 # 9d8 <malloc+0xea>
+ 11c:	8d058593          	addi	a1,a1,-1840 # 9e8 <malloc+0xf0>
  120:	4509                	li	a0,2
  122:	00000097          	auipc	ra,0x0
- 126:	6e6080e7          	jalr	1766(ra) # 808 <fprintf>
+ 126:	6f0080e7          	jalr	1776(ra) # 812 <fprintf>
         exit(-1);
  12a:	557d                	li	a0,-1
  12c:	00000097          	auipc	ra,0x0
@@ -192,9 +192,9 @@ int main(int argc, char *argv[])
             printf("xargs: exec %s fail\n", argv[1]);
  15e:	00893583          	ld	a1,8(s2)
  162:	00001517          	auipc	a0,0x1
- 166:	89e50513          	addi	a0,a0,-1890 # a00 <malloc+0x112>
+ 166:	8ae50513          	addi	a0,a0,-1874 # a10 <malloc+0x118>
  16a:	00000097          	auipc	ra,0x0
- 16e:	6cc080e7          	jalr	1740(ra) # 836 <printf>
+ 16e:	6d6080e7          	jalr	1750(ra) # 840 <printf>
             exit(0);
  172:	4501                	li	a0,0
  174:	00000097          	auipc	ra,0x0
@@ -212,9 +212,9 @@ int main(int argc, char *argv[])
                 printf("xargs: exec %s fail\n", argv[1]);
  198:	00893583          	ld	a1,8(s2)
  19c:	00001517          	auipc	a0,0x1
- 1a0:	86450513          	addi	a0,a0,-1948 # a00 <malloc+0x112>
+ 1a0:	87450513          	addi	a0,a0,-1932 # a10 <malloc+0x118>
  1a4:	00000097          	auipc	ra,0x0
- 1a8:	692080e7          	jalr	1682(ra) # 836 <printf>
+ 1a8:	69c080e7          	jalr	1692(ra) # 840 <printf>
                 exit(0);
  1ac:	4501                	li	a0,0
  1ae:	00000097          	auipc	ra,0x0
@@ -976,637 +976,647 @@ uname:
  ret
  55c:	8082                	ret
 
-000000000000055e <putc>:
+000000000000055e <times>:
+.global times
+times:
+ li a7, SYS_times
+ 55e:	09900893          	li	a7,153
+ ecall
+ 562:	00000073          	ecall
+ ret
+ 566:	8082                	ret
+
+0000000000000568 <putc>:
 
 static char digits[] = "0123456789ABCDEF";
 
 static void
 putc(int fd, char c)
 {
- 55e:	1101                	addi	sp,sp,-32
- 560:	ec06                	sd	ra,24(sp)
- 562:	e822                	sd	s0,16(sp)
- 564:	1000                	addi	s0,sp,32
- 566:	feb407a3          	sb	a1,-17(s0)
+ 568:	1101                	addi	sp,sp,-32
+ 56a:	ec06                	sd	ra,24(sp)
+ 56c:	e822                	sd	s0,16(sp)
+ 56e:	1000                	addi	s0,sp,32
+ 570:	feb407a3          	sb	a1,-17(s0)
   write(fd, &c, 1);
- 56a:	4605                	li	a2,1
- 56c:	fef40593          	addi	a1,s0,-17
- 570:	00000097          	auipc	ra,0x0
- 574:	f24080e7          	jalr	-220(ra) # 494 <write>
+ 574:	4605                	li	a2,1
+ 576:	fef40593          	addi	a1,s0,-17
+ 57a:	00000097          	auipc	ra,0x0
+ 57e:	f1a080e7          	jalr	-230(ra) # 494 <write>
 }
- 578:	60e2                	ld	ra,24(sp)
- 57a:	6442                	ld	s0,16(sp)
- 57c:	6105                	addi	sp,sp,32
- 57e:	8082                	ret
+ 582:	60e2                	ld	ra,24(sp)
+ 584:	6442                	ld	s0,16(sp)
+ 586:	6105                	addi	sp,sp,32
+ 588:	8082                	ret
 
-0000000000000580 <printint>:
+000000000000058a <printint>:
 
 static void
 printint(int fd, int xx, int base, int sgn)
 {
- 580:	7139                	addi	sp,sp,-64
- 582:	fc06                	sd	ra,56(sp)
- 584:	f822                	sd	s0,48(sp)
- 586:	f426                	sd	s1,40(sp)
- 588:	f04a                	sd	s2,32(sp)
- 58a:	ec4e                	sd	s3,24(sp)
- 58c:	0080                	addi	s0,sp,64
- 58e:	84aa                	mv	s1,a0
+ 58a:	7139                	addi	sp,sp,-64
+ 58c:	fc06                	sd	ra,56(sp)
+ 58e:	f822                	sd	s0,48(sp)
+ 590:	f426                	sd	s1,40(sp)
+ 592:	f04a                	sd	s2,32(sp)
+ 594:	ec4e                	sd	s3,24(sp)
+ 596:	0080                	addi	s0,sp,64
+ 598:	84aa                	mv	s1,a0
   char buf[16];
   int i, neg;
   uint x;
 
   neg = 0;
   if(sgn && xx < 0){
- 590:	c299                	beqz	a3,596 <printint+0x16>
- 592:	0805c863          	bltz	a1,622 <printint+0xa2>
+ 59a:	c299                	beqz	a3,5a0 <printint+0x16>
+ 59c:	0805c863          	bltz	a1,62c <printint+0xa2>
     neg = 1;
     x = -xx;
   } else {
     x = xx;
- 596:	2581                	sext.w	a1,a1
+ 5a0:	2581                	sext.w	a1,a1
   neg = 0;
- 598:	4881                	li	a7,0
+ 5a2:	4881                	li	a7,0
   }
 
   i = 0;
- 59a:	fc040993          	addi	s3,s0,-64
+ 5a4:	fc040993          	addi	s3,s0,-64
   neg = 0;
- 59e:	86ce                	mv	a3,s3
+ 5a8:	86ce                	mv	a3,s3
   i = 0;
- 5a0:	4701                	li	a4,0
+ 5aa:	4701                	li	a4,0
   do{
     buf[i++] = digits[x % base];
- 5a2:	2601                	sext.w	a2,a2
- 5a4:	00000517          	auipc	a0,0x0
- 5a8:	4d450513          	addi	a0,a0,1236 # a78 <digits>
- 5ac:	883a                	mv	a6,a4
- 5ae:	2705                	addiw	a4,a4,1
- 5b0:	02c5f7bb          	remuw	a5,a1,a2
- 5b4:	1782                	slli	a5,a5,0x20
- 5b6:	9381                	srli	a5,a5,0x20
- 5b8:	97aa                	add	a5,a5,a0
- 5ba:	0007c783          	lbu	a5,0(a5)
- 5be:	00f68023          	sb	a5,0(a3)
+ 5ac:	2601                	sext.w	a2,a2
+ 5ae:	00000517          	auipc	a0,0x0
+ 5b2:	4da50513          	addi	a0,a0,1242 # a88 <digits>
+ 5b6:	883a                	mv	a6,a4
+ 5b8:	2705                	addiw	a4,a4,1
+ 5ba:	02c5f7bb          	remuw	a5,a1,a2
+ 5be:	1782                	slli	a5,a5,0x20
+ 5c0:	9381                	srli	a5,a5,0x20
+ 5c2:	97aa                	add	a5,a5,a0
+ 5c4:	0007c783          	lbu	a5,0(a5)
+ 5c8:	00f68023          	sb	a5,0(a3)
   }while((x /= base) != 0);
- 5c2:	0005879b          	sext.w	a5,a1
- 5c6:	02c5d5bb          	divuw	a1,a1,a2
- 5ca:	0685                	addi	a3,a3,1
- 5cc:	fec7f0e3          	bgeu	a5,a2,5ac <printint+0x2c>
+ 5cc:	0005879b          	sext.w	a5,a1
+ 5d0:	02c5d5bb          	divuw	a1,a1,a2
+ 5d4:	0685                	addi	a3,a3,1
+ 5d6:	fec7f0e3          	bgeu	a5,a2,5b6 <printint+0x2c>
   if(neg)
- 5d0:	00088c63          	beqz	a7,5e8 <printint+0x68>
+ 5da:	00088c63          	beqz	a7,5f2 <printint+0x68>
     buf[i++] = '-';
- 5d4:	fd070793          	addi	a5,a4,-48
- 5d8:	00878733          	add	a4,a5,s0
- 5dc:	02d00793          	li	a5,45
- 5e0:	fef70823          	sb	a5,-16(a4)
- 5e4:	0028071b          	addiw	a4,a6,2
+ 5de:	fd070793          	addi	a5,a4,-48
+ 5e2:	00878733          	add	a4,a5,s0
+ 5e6:	02d00793          	li	a5,45
+ 5ea:	fef70823          	sb	a5,-16(a4)
+ 5ee:	0028071b          	addiw	a4,a6,2
 
   while(--i >= 0)
- 5e8:	02e05663          	blez	a4,614 <printint+0x94>
- 5ec:	fc040913          	addi	s2,s0,-64
- 5f0:	993a                	add	s2,s2,a4
- 5f2:	19fd                	addi	s3,s3,-1
- 5f4:	99ba                	add	s3,s3,a4
- 5f6:	377d                	addiw	a4,a4,-1
- 5f8:	1702                	slli	a4,a4,0x20
- 5fa:	9301                	srli	a4,a4,0x20
- 5fc:	40e989b3          	sub	s3,s3,a4
+ 5f2:	02e05663          	blez	a4,61e <printint+0x94>
+ 5f6:	fc040913          	addi	s2,s0,-64
+ 5fa:	993a                	add	s2,s2,a4
+ 5fc:	19fd                	addi	s3,s3,-1
+ 5fe:	99ba                	add	s3,s3,a4
+ 600:	377d                	addiw	a4,a4,-1
+ 602:	1702                	slli	a4,a4,0x20
+ 604:	9301                	srli	a4,a4,0x20
+ 606:	40e989b3          	sub	s3,s3,a4
     putc(fd, buf[i]);
- 600:	fff94583          	lbu	a1,-1(s2)
- 604:	8526                	mv	a0,s1
- 606:	00000097          	auipc	ra,0x0
- 60a:	f58080e7          	jalr	-168(ra) # 55e <putc>
+ 60a:	fff94583          	lbu	a1,-1(s2)
+ 60e:	8526                	mv	a0,s1
+ 610:	00000097          	auipc	ra,0x0
+ 614:	f58080e7          	jalr	-168(ra) # 568 <putc>
   while(--i >= 0)
- 60e:	197d                	addi	s2,s2,-1
- 610:	ff3918e3          	bne	s2,s3,600 <printint+0x80>
+ 618:	197d                	addi	s2,s2,-1
+ 61a:	ff3918e3          	bne	s2,s3,60a <printint+0x80>
 }
- 614:	70e2                	ld	ra,56(sp)
- 616:	7442                	ld	s0,48(sp)
- 618:	74a2                	ld	s1,40(sp)
- 61a:	7902                	ld	s2,32(sp)
- 61c:	69e2                	ld	s3,24(sp)
- 61e:	6121                	addi	sp,sp,64
- 620:	8082                	ret
+ 61e:	70e2                	ld	ra,56(sp)
+ 620:	7442                	ld	s0,48(sp)
+ 622:	74a2                	ld	s1,40(sp)
+ 624:	7902                	ld	s2,32(sp)
+ 626:	69e2                	ld	s3,24(sp)
+ 628:	6121                	addi	sp,sp,64
+ 62a:	8082                	ret
     x = -xx;
- 622:	40b005bb          	negw	a1,a1
+ 62c:	40b005bb          	negw	a1,a1
     neg = 1;
- 626:	4885                	li	a7,1
+ 630:	4885                	li	a7,1
     x = -xx;
- 628:	bf8d                	j	59a <printint+0x1a>
+ 632:	bf8d                	j	5a4 <printint+0x1a>
 
-000000000000062a <vprintf>:
+0000000000000634 <vprintf>:
 }
 
 // Print to the given fd. Only understands %d, %x, %p, %s.
 void
 vprintf(int fd, const char *fmt, va_list ap)
 {
- 62a:	7119                	addi	sp,sp,-128
- 62c:	fc86                	sd	ra,120(sp)
- 62e:	f8a2                	sd	s0,112(sp)
- 630:	f4a6                	sd	s1,104(sp)
- 632:	f0ca                	sd	s2,96(sp)
- 634:	ecce                	sd	s3,88(sp)
- 636:	e8d2                	sd	s4,80(sp)
- 638:	e4d6                	sd	s5,72(sp)
- 63a:	e0da                	sd	s6,64(sp)
- 63c:	fc5e                	sd	s7,56(sp)
- 63e:	f862                	sd	s8,48(sp)
- 640:	f466                	sd	s9,40(sp)
- 642:	f06a                	sd	s10,32(sp)
- 644:	ec6e                	sd	s11,24(sp)
- 646:	0100                	addi	s0,sp,128
+ 634:	7119                	addi	sp,sp,-128
+ 636:	fc86                	sd	ra,120(sp)
+ 638:	f8a2                	sd	s0,112(sp)
+ 63a:	f4a6                	sd	s1,104(sp)
+ 63c:	f0ca                	sd	s2,96(sp)
+ 63e:	ecce                	sd	s3,88(sp)
+ 640:	e8d2                	sd	s4,80(sp)
+ 642:	e4d6                	sd	s5,72(sp)
+ 644:	e0da                	sd	s6,64(sp)
+ 646:	fc5e                	sd	s7,56(sp)
+ 648:	f862                	sd	s8,48(sp)
+ 64a:	f466                	sd	s9,40(sp)
+ 64c:	f06a                	sd	s10,32(sp)
+ 64e:	ec6e                	sd	s11,24(sp)
+ 650:	0100                	addi	s0,sp,128
   char *s;
   int c, i, state;
 
   state = 0;
   for(i = 0; fmt[i]; i++){
- 648:	0005c903          	lbu	s2,0(a1)
- 64c:	18090f63          	beqz	s2,7ea <vprintf+0x1c0>
- 650:	8aaa                	mv	s5,a0
- 652:	8b32                	mv	s6,a2
- 654:	00158493          	addi	s1,a1,1
+ 652:	0005c903          	lbu	s2,0(a1)
+ 656:	18090f63          	beqz	s2,7f4 <vprintf+0x1c0>
+ 65a:	8aaa                	mv	s5,a0
+ 65c:	8b32                	mv	s6,a2
+ 65e:	00158493          	addi	s1,a1,1
   state = 0;
- 658:	4981                	li	s3,0
+ 662:	4981                	li	s3,0
       if(c == '%'){
         state = '%';
       } else {
         putc(fd, c);
       }
     } else if(state == '%'){
- 65a:	02500a13          	li	s4,37
- 65e:	4c55                	li	s8,21
- 660:	00000c97          	auipc	s9,0x0
- 664:	3c0c8c93          	addi	s9,s9,960 # a20 <malloc+0x132>
+ 664:	02500a13          	li	s4,37
+ 668:	4c55                	li	s8,21
+ 66a:	00000c97          	auipc	s9,0x0
+ 66e:	3c6c8c93          	addi	s9,s9,966 # a30 <malloc+0x138>
         printptr(fd, va_arg(ap, uint64));
       } else if(c == 's'){
         s = va_arg(ap, char*);
         if(s == 0)
           s = "(null)";
         while(*s != 0){
- 668:	02800d93          	li	s11,40
+ 672:	02800d93          	li	s11,40
   putc(fd, 'x');
- 66c:	4d41                	li	s10,16
+ 676:	4d41                	li	s10,16
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 66e:	00000b97          	auipc	s7,0x0
- 672:	40ab8b93          	addi	s7,s7,1034 # a78 <digits>
- 676:	a839                	j	694 <vprintf+0x6a>
+ 678:	00000b97          	auipc	s7,0x0
+ 67c:	410b8b93          	addi	s7,s7,1040 # a88 <digits>
+ 680:	a839                	j	69e <vprintf+0x6a>
         putc(fd, c);
- 678:	85ca                	mv	a1,s2
- 67a:	8556                	mv	a0,s5
- 67c:	00000097          	auipc	ra,0x0
- 680:	ee2080e7          	jalr	-286(ra) # 55e <putc>
- 684:	a019                	j	68a <vprintf+0x60>
+ 682:	85ca                	mv	a1,s2
+ 684:	8556                	mv	a0,s5
+ 686:	00000097          	auipc	ra,0x0
+ 68a:	ee2080e7          	jalr	-286(ra) # 568 <putc>
+ 68e:	a019                	j	694 <vprintf+0x60>
     } else if(state == '%'){
- 686:	01498d63          	beq	s3,s4,6a0 <vprintf+0x76>
+ 690:	01498d63          	beq	s3,s4,6aa <vprintf+0x76>
   for(i = 0; fmt[i]; i++){
- 68a:	0485                	addi	s1,s1,1
- 68c:	fff4c903          	lbu	s2,-1(s1)
- 690:	14090d63          	beqz	s2,7ea <vprintf+0x1c0>
+ 694:	0485                	addi	s1,s1,1
+ 696:	fff4c903          	lbu	s2,-1(s1)
+ 69a:	14090d63          	beqz	s2,7f4 <vprintf+0x1c0>
     if(state == 0){
- 694:	fe0999e3          	bnez	s3,686 <vprintf+0x5c>
+ 69e:	fe0999e3          	bnez	s3,690 <vprintf+0x5c>
       if(c == '%'){
- 698:	ff4910e3          	bne	s2,s4,678 <vprintf+0x4e>
+ 6a2:	ff4910e3          	bne	s2,s4,682 <vprintf+0x4e>
         state = '%';
- 69c:	89d2                	mv	s3,s4
- 69e:	b7f5                	j	68a <vprintf+0x60>
+ 6a6:	89d2                	mv	s3,s4
+ 6a8:	b7f5                	j	694 <vprintf+0x60>
       if(c == 'd'){
- 6a0:	11490c63          	beq	s2,s4,7b8 <vprintf+0x18e>
- 6a4:	f9d9079b          	addiw	a5,s2,-99
- 6a8:	0ff7f793          	zext.b	a5,a5
- 6ac:	10fc6e63          	bltu	s8,a5,7c8 <vprintf+0x19e>
- 6b0:	f9d9079b          	addiw	a5,s2,-99
- 6b4:	0ff7f713          	zext.b	a4,a5
- 6b8:	10ec6863          	bltu	s8,a4,7c8 <vprintf+0x19e>
- 6bc:	00271793          	slli	a5,a4,0x2
- 6c0:	97e6                	add	a5,a5,s9
- 6c2:	439c                	lw	a5,0(a5)
- 6c4:	97e6                	add	a5,a5,s9
- 6c6:	8782                	jr	a5
+ 6aa:	11490c63          	beq	s2,s4,7c2 <vprintf+0x18e>
+ 6ae:	f9d9079b          	addiw	a5,s2,-99
+ 6b2:	0ff7f793          	zext.b	a5,a5
+ 6b6:	10fc6e63          	bltu	s8,a5,7d2 <vprintf+0x19e>
+ 6ba:	f9d9079b          	addiw	a5,s2,-99
+ 6be:	0ff7f713          	zext.b	a4,a5
+ 6c2:	10ec6863          	bltu	s8,a4,7d2 <vprintf+0x19e>
+ 6c6:	00271793          	slli	a5,a4,0x2
+ 6ca:	97e6                	add	a5,a5,s9
+ 6cc:	439c                	lw	a5,0(a5)
+ 6ce:	97e6                	add	a5,a5,s9
+ 6d0:	8782                	jr	a5
         printint(fd, va_arg(ap, int), 10, 1);
- 6c8:	008b0913          	addi	s2,s6,8
- 6cc:	4685                	li	a3,1
- 6ce:	4629                	li	a2,10
- 6d0:	000b2583          	lw	a1,0(s6)
- 6d4:	8556                	mv	a0,s5
- 6d6:	00000097          	auipc	ra,0x0
- 6da:	eaa080e7          	jalr	-342(ra) # 580 <printint>
- 6de:	8b4a                	mv	s6,s2
+ 6d2:	008b0913          	addi	s2,s6,8
+ 6d6:	4685                	li	a3,1
+ 6d8:	4629                	li	a2,10
+ 6da:	000b2583          	lw	a1,0(s6)
+ 6de:	8556                	mv	a0,s5
+ 6e0:	00000097          	auipc	ra,0x0
+ 6e4:	eaa080e7          	jalr	-342(ra) # 58a <printint>
+ 6e8:	8b4a                	mv	s6,s2
       } else {
         // Unknown % sequence.  Print it to draw attention.
         putc(fd, '%');
         putc(fd, c);
       }
       state = 0;
- 6e0:	4981                	li	s3,0
- 6e2:	b765                	j	68a <vprintf+0x60>
+ 6ea:	4981                	li	s3,0
+ 6ec:	b765                	j	694 <vprintf+0x60>
         printint(fd, va_arg(ap, uint64), 10, 0);
- 6e4:	008b0913          	addi	s2,s6,8
- 6e8:	4681                	li	a3,0
- 6ea:	4629                	li	a2,10
- 6ec:	000b2583          	lw	a1,0(s6)
- 6f0:	8556                	mv	a0,s5
- 6f2:	00000097          	auipc	ra,0x0
- 6f6:	e8e080e7          	jalr	-370(ra) # 580 <printint>
- 6fa:	8b4a                	mv	s6,s2
+ 6ee:	008b0913          	addi	s2,s6,8
+ 6f2:	4681                	li	a3,0
+ 6f4:	4629                	li	a2,10
+ 6f6:	000b2583          	lw	a1,0(s6)
+ 6fa:	8556                	mv	a0,s5
+ 6fc:	00000097          	auipc	ra,0x0
+ 700:	e8e080e7          	jalr	-370(ra) # 58a <printint>
+ 704:	8b4a                	mv	s6,s2
       state = 0;
- 6fc:	4981                	li	s3,0
- 6fe:	b771                	j	68a <vprintf+0x60>
+ 706:	4981                	li	s3,0
+ 708:	b771                	j	694 <vprintf+0x60>
         printint(fd, va_arg(ap, int), 16, 0);
- 700:	008b0913          	addi	s2,s6,8
- 704:	4681                	li	a3,0
- 706:	866a                	mv	a2,s10
- 708:	000b2583          	lw	a1,0(s6)
- 70c:	8556                	mv	a0,s5
- 70e:	00000097          	auipc	ra,0x0
- 712:	e72080e7          	jalr	-398(ra) # 580 <printint>
- 716:	8b4a                	mv	s6,s2
+ 70a:	008b0913          	addi	s2,s6,8
+ 70e:	4681                	li	a3,0
+ 710:	866a                	mv	a2,s10
+ 712:	000b2583          	lw	a1,0(s6)
+ 716:	8556                	mv	a0,s5
+ 718:	00000097          	auipc	ra,0x0
+ 71c:	e72080e7          	jalr	-398(ra) # 58a <printint>
+ 720:	8b4a                	mv	s6,s2
       state = 0;
- 718:	4981                	li	s3,0
- 71a:	bf85                	j	68a <vprintf+0x60>
+ 722:	4981                	li	s3,0
+ 724:	bf85                	j	694 <vprintf+0x60>
         printptr(fd, va_arg(ap, uint64));
- 71c:	008b0793          	addi	a5,s6,8
- 720:	f8f43423          	sd	a5,-120(s0)
- 724:	000b3983          	ld	s3,0(s6)
+ 726:	008b0793          	addi	a5,s6,8
+ 72a:	f8f43423          	sd	a5,-120(s0)
+ 72e:	000b3983          	ld	s3,0(s6)
   putc(fd, '0');
- 728:	03000593          	li	a1,48
- 72c:	8556                	mv	a0,s5
- 72e:	00000097          	auipc	ra,0x0
- 732:	e30080e7          	jalr	-464(ra) # 55e <putc>
+ 732:	03000593          	li	a1,48
+ 736:	8556                	mv	a0,s5
+ 738:	00000097          	auipc	ra,0x0
+ 73c:	e30080e7          	jalr	-464(ra) # 568 <putc>
   putc(fd, 'x');
- 736:	07800593          	li	a1,120
- 73a:	8556                	mv	a0,s5
- 73c:	00000097          	auipc	ra,0x0
- 740:	e22080e7          	jalr	-478(ra) # 55e <putc>
- 744:	896a                	mv	s2,s10
+ 740:	07800593          	li	a1,120
+ 744:	8556                	mv	a0,s5
+ 746:	00000097          	auipc	ra,0x0
+ 74a:	e22080e7          	jalr	-478(ra) # 568 <putc>
+ 74e:	896a                	mv	s2,s10
     putc(fd, digits[x >> (sizeof(uint64) * 8 - 4)]);
- 746:	03c9d793          	srli	a5,s3,0x3c
- 74a:	97de                	add	a5,a5,s7
- 74c:	0007c583          	lbu	a1,0(a5)
- 750:	8556                	mv	a0,s5
- 752:	00000097          	auipc	ra,0x0
- 756:	e0c080e7          	jalr	-500(ra) # 55e <putc>
+ 750:	03c9d793          	srli	a5,s3,0x3c
+ 754:	97de                	add	a5,a5,s7
+ 756:	0007c583          	lbu	a1,0(a5)
+ 75a:	8556                	mv	a0,s5
+ 75c:	00000097          	auipc	ra,0x0
+ 760:	e0c080e7          	jalr	-500(ra) # 568 <putc>
   for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4)
- 75a:	0992                	slli	s3,s3,0x4
- 75c:	397d                	addiw	s2,s2,-1
- 75e:	fe0914e3          	bnez	s2,746 <vprintf+0x11c>
+ 764:	0992                	slli	s3,s3,0x4
+ 766:	397d                	addiw	s2,s2,-1
+ 768:	fe0914e3          	bnez	s2,750 <vprintf+0x11c>
         printptr(fd, va_arg(ap, uint64));
- 762:	f8843b03          	ld	s6,-120(s0)
+ 76c:	f8843b03          	ld	s6,-120(s0)
       state = 0;
- 766:	4981                	li	s3,0
- 768:	b70d                	j	68a <vprintf+0x60>
+ 770:	4981                	li	s3,0
+ 772:	b70d                	j	694 <vprintf+0x60>
         s = va_arg(ap, char*);
- 76a:	008b0913          	addi	s2,s6,8
- 76e:	000b3983          	ld	s3,0(s6)
+ 774:	008b0913          	addi	s2,s6,8
+ 778:	000b3983          	ld	s3,0(s6)
         if(s == 0)
- 772:	02098163          	beqz	s3,794 <vprintf+0x16a>
+ 77c:	02098163          	beqz	s3,79e <vprintf+0x16a>
         while(*s != 0){
- 776:	0009c583          	lbu	a1,0(s3)
- 77a:	c5ad                	beqz	a1,7e4 <vprintf+0x1ba>
+ 780:	0009c583          	lbu	a1,0(s3)
+ 784:	c5ad                	beqz	a1,7ee <vprintf+0x1ba>
           putc(fd, *s);
- 77c:	8556                	mv	a0,s5
- 77e:	00000097          	auipc	ra,0x0
- 782:	de0080e7          	jalr	-544(ra) # 55e <putc>
+ 786:	8556                	mv	a0,s5
+ 788:	00000097          	auipc	ra,0x0
+ 78c:	de0080e7          	jalr	-544(ra) # 568 <putc>
           s++;
- 786:	0985                	addi	s3,s3,1
+ 790:	0985                	addi	s3,s3,1
         while(*s != 0){
- 788:	0009c583          	lbu	a1,0(s3)
- 78c:	f9e5                	bnez	a1,77c <vprintf+0x152>
+ 792:	0009c583          	lbu	a1,0(s3)
+ 796:	f9e5                	bnez	a1,786 <vprintf+0x152>
         s = va_arg(ap, char*);
- 78e:	8b4a                	mv	s6,s2
+ 798:	8b4a                	mv	s6,s2
       state = 0;
- 790:	4981                	li	s3,0
- 792:	bde5                	j	68a <vprintf+0x60>
+ 79a:	4981                	li	s3,0
+ 79c:	bde5                	j	694 <vprintf+0x60>
           s = "(null)";
- 794:	00000997          	auipc	s3,0x0
- 798:	28498993          	addi	s3,s3,644 # a18 <malloc+0x12a>
+ 79e:	00000997          	auipc	s3,0x0
+ 7a2:	28a98993          	addi	s3,s3,650 # a28 <malloc+0x130>
         while(*s != 0){
- 79c:	85ee                	mv	a1,s11
- 79e:	bff9                	j	77c <vprintf+0x152>
+ 7a6:	85ee                	mv	a1,s11
+ 7a8:	bff9                	j	786 <vprintf+0x152>
         putc(fd, va_arg(ap, uint));
- 7a0:	008b0913          	addi	s2,s6,8
- 7a4:	000b4583          	lbu	a1,0(s6)
- 7a8:	8556                	mv	a0,s5
- 7aa:	00000097          	auipc	ra,0x0
- 7ae:	db4080e7          	jalr	-588(ra) # 55e <putc>
- 7b2:	8b4a                	mv	s6,s2
+ 7aa:	008b0913          	addi	s2,s6,8
+ 7ae:	000b4583          	lbu	a1,0(s6)
+ 7b2:	8556                	mv	a0,s5
+ 7b4:	00000097          	auipc	ra,0x0
+ 7b8:	db4080e7          	jalr	-588(ra) # 568 <putc>
+ 7bc:	8b4a                	mv	s6,s2
       state = 0;
- 7b4:	4981                	li	s3,0
- 7b6:	bdd1                	j	68a <vprintf+0x60>
+ 7be:	4981                	li	s3,0
+ 7c0:	bdd1                	j	694 <vprintf+0x60>
         putc(fd, c);
- 7b8:	85d2                	mv	a1,s4
- 7ba:	8556                	mv	a0,s5
- 7bc:	00000097          	auipc	ra,0x0
- 7c0:	da2080e7          	jalr	-606(ra) # 55e <putc>
+ 7c2:	85d2                	mv	a1,s4
+ 7c4:	8556                	mv	a0,s5
+ 7c6:	00000097          	auipc	ra,0x0
+ 7ca:	da2080e7          	jalr	-606(ra) # 568 <putc>
       state = 0;
- 7c4:	4981                	li	s3,0
- 7c6:	b5d1                	j	68a <vprintf+0x60>
+ 7ce:	4981                	li	s3,0
+ 7d0:	b5d1                	j	694 <vprintf+0x60>
         putc(fd, '%');
- 7c8:	85d2                	mv	a1,s4
- 7ca:	8556                	mv	a0,s5
- 7cc:	00000097          	auipc	ra,0x0
- 7d0:	d92080e7          	jalr	-622(ra) # 55e <putc>
+ 7d2:	85d2                	mv	a1,s4
+ 7d4:	8556                	mv	a0,s5
+ 7d6:	00000097          	auipc	ra,0x0
+ 7da:	d92080e7          	jalr	-622(ra) # 568 <putc>
         putc(fd, c);
- 7d4:	85ca                	mv	a1,s2
- 7d6:	8556                	mv	a0,s5
- 7d8:	00000097          	auipc	ra,0x0
- 7dc:	d86080e7          	jalr	-634(ra) # 55e <putc>
+ 7de:	85ca                	mv	a1,s2
+ 7e0:	8556                	mv	a0,s5
+ 7e2:	00000097          	auipc	ra,0x0
+ 7e6:	d86080e7          	jalr	-634(ra) # 568 <putc>
       state = 0;
- 7e0:	4981                	li	s3,0
- 7e2:	b565                	j	68a <vprintf+0x60>
+ 7ea:	4981                	li	s3,0
+ 7ec:	b565                	j	694 <vprintf+0x60>
         s = va_arg(ap, char*);
- 7e4:	8b4a                	mv	s6,s2
+ 7ee:	8b4a                	mv	s6,s2
       state = 0;
- 7e6:	4981                	li	s3,0
- 7e8:	b54d                	j	68a <vprintf+0x60>
+ 7f0:	4981                	li	s3,0
+ 7f2:	b54d                	j	694 <vprintf+0x60>
     }
   }
 }
- 7ea:	70e6                	ld	ra,120(sp)
- 7ec:	7446                	ld	s0,112(sp)
- 7ee:	74a6                	ld	s1,104(sp)
- 7f0:	7906                	ld	s2,96(sp)
- 7f2:	69e6                	ld	s3,88(sp)
- 7f4:	6a46                	ld	s4,80(sp)
- 7f6:	6aa6                	ld	s5,72(sp)
- 7f8:	6b06                	ld	s6,64(sp)
- 7fa:	7be2                	ld	s7,56(sp)
- 7fc:	7c42                	ld	s8,48(sp)
- 7fe:	7ca2                	ld	s9,40(sp)
- 800:	7d02                	ld	s10,32(sp)
- 802:	6de2                	ld	s11,24(sp)
- 804:	6109                	addi	sp,sp,128
- 806:	8082                	ret
-
-0000000000000808 <fprintf>:
+ 7f4:	70e6                	ld	ra,120(sp)
+ 7f6:	7446                	ld	s0,112(sp)
+ 7f8:	74a6                	ld	s1,104(sp)
+ 7fa:	7906                	ld	s2,96(sp)
+ 7fc:	69e6                	ld	s3,88(sp)
+ 7fe:	6a46                	ld	s4,80(sp)
+ 800:	6aa6                	ld	s5,72(sp)
+ 802:	6b06                	ld	s6,64(sp)
+ 804:	7be2                	ld	s7,56(sp)
+ 806:	7c42                	ld	s8,48(sp)
+ 808:	7ca2                	ld	s9,40(sp)
+ 80a:	7d02                	ld	s10,32(sp)
+ 80c:	6de2                	ld	s11,24(sp)
+ 80e:	6109                	addi	sp,sp,128
+ 810:	8082                	ret
+
+0000000000000812 <fprintf>:
 
 void
 fprintf(int fd, const char *fmt, ...)
 {
- 808:	715d                	addi	sp,sp,-80
- 80a:	ec06                	sd	ra,24(sp)
- 80c:	e822                	sd	s0,16(sp)
- 80e:	1000                	addi	s0,sp,32
- 810:	e010                	sd	a2,0(s0)
- 812:	e414                	sd	a3,8(s0)
- 814:	e818                	sd	a4,16(s0)
- 816:	ec1c                	sd	a5,24(s0)
- 818:	03043023          	sd	a6,32(s0)
- 81c:	03143423          	sd	a7,40(s0)
+ 812:	715d                	addi	sp,sp,-80
+ 814:	ec06                	sd	ra,24(sp)
+ 816:	e822                	sd	s0,16(sp)
+ 818:	1000                	addi	s0,sp,32
+ 81a:	e010                	sd	a2,0(s0)
+ 81c:	e414                	sd	a3,8(s0)
+ 81e:	e818                	sd	a4,16(s0)
+ 820:	ec1c                	sd	a5,24(s0)
+ 822:	03043023          	sd	a6,32(s0)
+ 826:	03143423          	sd	a7,40(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 820:	8622                	mv	a2,s0
- 822:	fe843423          	sd	s0,-24(s0)
+ 82a:	8622                	mv	a2,s0
+ 82c:	fe843423          	sd	s0,-24(s0)
   vprintf(fd, fmt, ap);
- 826:	00000097          	auipc	ra,0x0
- 82a:	e04080e7          	jalr	-508(ra) # 62a <vprintf>
+ 830:	00000097          	auipc	ra,0x0
+ 834:	e04080e7          	jalr	-508(ra) # 634 <vprintf>
 }
- 82e:	60e2                	ld	ra,24(sp)
- 830:	6442                	ld	s0,16(sp)
- 832:	6161                	addi	sp,sp,80
- 834:	8082                	ret
+ 838:	60e2                	ld	ra,24(sp)
+ 83a:	6442                	ld	s0,16(sp)
+ 83c:	6161                	addi	sp,sp,80
+ 83e:	8082                	ret
 
-0000000000000836 <printf>:
+0000000000000840 <printf>:
 
 void
 printf(const char *fmt, ...)
 {
- 836:	711d                	addi	sp,sp,-96
- 838:	ec06                	sd	ra,24(sp)
- 83a:	e822                	sd	s0,16(sp)
- 83c:	1000                	addi	s0,sp,32
- 83e:	e40c                	sd	a1,8(s0)
- 840:	e810                	sd	a2,16(s0)
- 842:	ec14                	sd	a3,24(s0)
- 844:	f018                	sd	a4,32(s0)
- 846:	f41c                	sd	a5,40(s0)
- 848:	03043823          	sd	a6,48(s0)
- 84c:	03143c23          	sd	a7,56(s0)
+ 840:	711d                	addi	sp,sp,-96
+ 842:	ec06                	sd	ra,24(sp)
+ 844:	e822                	sd	s0,16(sp)
+ 846:	1000                	addi	s0,sp,32
+ 848:	e40c                	sd	a1,8(s0)
+ 84a:	e810                	sd	a2,16(s0)
+ 84c:	ec14                	sd	a3,24(s0)
+ 84e:	f018                	sd	a4,32(s0)
+ 850:	f41c                	sd	a5,40(s0)
+ 852:	03043823          	sd	a6,48(s0)
+ 856:	03143c23          	sd	a7,56(s0)
   va_list ap;
 
   va_start(ap, fmt);
- 850:	00840613          	addi	a2,s0,8
- 854:	fec43423          	sd	a2,-24(s0)
+ 85a:	00840613          	addi	a2,s0,8
+ 85e:	fec43423          	sd	a2,-24(s0)
   vprintf(1, fmt, ap);
- 858:	85aa                	mv	a1,a0
- 85a:	4505                	li	a0,1
- 85c:	00000097          	auipc	ra,0x0
- 860:	dce080e7          	jalr	-562(ra) # 62a <vprintf>
+ 862:	85aa                	mv	a1,a0
+ 864:	4505                	li	a0,1
+ 866:	00000097          	auipc	ra,0x0
+ 86a:	dce080e7          	jalr	-562(ra) # 634 <vprintf>
 }
- 864:	60e2                	ld	ra,24(sp)
- 866:	6442                	ld	s0,16(sp)
- 868:	6125                	addi	sp,sp,96
- 86a:	8082                	ret
+ 86e:	60e2                	ld	ra,24(sp)
+ 870:	6442                	ld	s0,16(sp)
+ 872:	6125                	addi	sp,sp,96
+ 874:	8082                	ret
 
-000000000000086c <free>:
+0000000000000876 <free>:
 static Header base;
 static Header *freep;
 
 void
 free(void *ap)
 {
- 86c:	1141                	addi	sp,sp,-16
- 86e:	e422                	sd	s0,8(sp)
- 870:	0800                	addi	s0,sp,16
+ 876:	1141                	addi	sp,sp,-16
+ 878:	e422                	sd	s0,8(sp)
+ 87a:	0800                	addi	s0,sp,16
   Header *bp, *p;
 
   bp = (Header*)ap - 1;
- 872:	ff050693          	addi	a3,a0,-16
+ 87c:	ff050693          	addi	a3,a0,-16
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 876:	00000797          	auipc	a5,0x0
- 87a:	21a7b783          	ld	a5,538(a5) # a90 <freep>
- 87e:	a02d                	j	8a8 <free+0x3c>
+ 880:	00000797          	auipc	a5,0x0
+ 884:	2207b783          	ld	a5,544(a5) # aa0 <freep>
+ 888:	a02d                	j	8b2 <free+0x3c>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
       break;
   if(bp + bp->s.size == p->s.ptr){
     bp->s.size += p->s.ptr->s.size;
- 880:	4618                	lw	a4,8(a2)
- 882:	9f2d                	addw	a4,a4,a1
- 884:	fee52c23          	sw	a4,-8(a0)
+ 88a:	4618                	lw	a4,8(a2)
+ 88c:	9f2d                	addw	a4,a4,a1
+ 88e:	fee52c23          	sw	a4,-8(a0)
     bp->s.ptr = p->s.ptr->s.ptr;
- 888:	6398                	ld	a4,0(a5)
- 88a:	6310                	ld	a2,0(a4)
- 88c:	a83d                	j	8ca <free+0x5e>
+ 892:	6398                	ld	a4,0(a5)
+ 894:	6310                	ld	a2,0(a4)
+ 896:	a83d                	j	8d4 <free+0x5e>
   } else
     bp->s.ptr = p->s.ptr;
   if(p + p->s.size == bp){
     p->s.size += bp->s.size;
- 88e:	ff852703          	lw	a4,-8(a0)
- 892:	9f31                	addw	a4,a4,a2
- 894:	c798                	sw	a4,8(a5)
+ 898:	ff852703          	lw	a4,-8(a0)
+ 89c:	9f31                	addw	a4,a4,a2
+ 89e:	c798                	sw	a4,8(a5)
     p->s.ptr = bp->s.ptr;
- 896:	ff053683          	ld	a3,-16(a0)
- 89a:	a091                	j	8de <free+0x72>
+ 8a0:	ff053683          	ld	a3,-16(a0)
+ 8a4:	a091                	j	8e8 <free+0x72>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 89c:	6398                	ld	a4,0(a5)
- 89e:	00e7e463          	bltu	a5,a4,8a6 <free+0x3a>
- 8a2:	00e6ea63          	bltu	a3,a4,8b6 <free+0x4a>
+ 8a6:	6398                	ld	a4,0(a5)
+ 8a8:	00e7e463          	bltu	a5,a4,8b0 <free+0x3a>
+ 8ac:	00e6ea63          	bltu	a3,a4,8c0 <free+0x4a>
 {
- 8a6:	87ba                	mv	a5,a4
+ 8b0:	87ba                	mv	a5,a4
   for(p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
- 8a8:	fed7fae3          	bgeu	a5,a3,89c <free+0x30>
- 8ac:	6398                	ld	a4,0(a5)
- 8ae:	00e6e463          	bltu	a3,a4,8b6 <free+0x4a>
+ 8b2:	fed7fae3          	bgeu	a5,a3,8a6 <free+0x30>
+ 8b6:	6398                	ld	a4,0(a5)
+ 8b8:	00e6e463          	bltu	a3,a4,8c0 <free+0x4a>
     if(p >= p->s.ptr && (bp > p || bp < p->s.ptr))
- 8b2:	fee7eae3          	bltu	a5,a4,8a6 <free+0x3a>
+ 8bc:	fee7eae3          	bltu	a5,a4,8b0 <free+0x3a>
   if(bp + bp->s.size == p->s.ptr){
- 8b6:	ff852583          	lw	a1,-8(a0)
- 8ba:	6390                	ld	a2,0(a5)
- 8bc:	02059813          	slli	a6,a1,0x20
- 8c0:	01c85713          	srli	a4,a6,0x1c
- 8c4:	9736                	add	a4,a4,a3
- 8c6:	fae60de3          	beq	a2,a4,880 <free+0x14>
+ 8c0:	ff852583          	lw	a1,-8(a0)
+ 8c4:	6390                	ld	a2,0(a5)
+ 8c6:	02059813          	slli	a6,a1,0x20
+ 8ca:	01c85713          	srli	a4,a6,0x1c
+ 8ce:	9736                	add	a4,a4,a3
+ 8d0:	fae60de3          	beq	a2,a4,88a <free+0x14>
     bp->s.ptr = p->s.ptr->s.ptr;
- 8ca:	fec53823          	sd	a2,-16(a0)
+ 8d4:	fec53823          	sd	a2,-16(a0)
   if(p + p->s.size == bp){
- 8ce:	4790                	lw	a2,8(a5)
- 8d0:	02061593          	slli	a1,a2,0x20
- 8d4:	01c5d713          	srli	a4,a1,0x1c
- 8d8:	973e                	add	a4,a4,a5
- 8da:	fae68ae3          	beq	a3,a4,88e <free+0x22>
+ 8d8:	4790                	lw	a2,8(a5)
+ 8da:	02061593          	slli	a1,a2,0x20
+ 8de:	01c5d713          	srli	a4,a1,0x1c
+ 8e2:	973e                	add	a4,a4,a5
+ 8e4:	fae68ae3          	beq	a3,a4,898 <free+0x22>
     p->s.ptr = bp->s.ptr;
- 8de:	e394                	sd	a3,0(a5)
+ 8e8:	e394                	sd	a3,0(a5)
   } else
     p->s.ptr = bp;
   freep = p;
- 8e0:	00000717          	auipc	a4,0x0
- 8e4:	1af73823          	sd	a5,432(a4) # a90 <freep>
+ 8ea:	00000717          	auipc	a4,0x0
+ 8ee:	1af73b23          	sd	a5,438(a4) # aa0 <freep>
 }
- 8e8:	6422                	ld	s0,8(sp)
- 8ea:	0141                	addi	sp,sp,16
- 8ec:	8082                	ret
+ 8f2:	6422                	ld	s0,8(sp)
+ 8f4:	0141                	addi	sp,sp,16
+ 8f6:	8082                	ret
 
-00000000000008ee <malloc>:
+00000000000008f8 <malloc>:
   return freep;
 }
 
 void*
 malloc(uint nbytes)
 {
- 8ee:	7139                	addi	sp,sp,-64
- 8f0:	fc06                	sd	ra,56(sp)
- 8f2:	f822                	sd	s0,48(sp)
- 8f4:	f426                	sd	s1,40(sp)
- 8f6:	f04a                	sd	s2,32(sp)
- 8f8:	ec4e                	sd	s3,24(sp)
- 8fa:	e852                	sd	s4,16(sp)
- 8fc:	e456                	sd	s5,8(sp)
- 8fe:	e05a                	sd	s6,0(sp)
- 900:	0080                	addi	s0,sp,64
+ 8f8:	7139                	addi	sp,sp,-64
+ 8fa:	fc06                	sd	ra,56(sp)
+ 8fc:	f822                	sd	s0,48(sp)
+ 8fe:	f426                	sd	s1,40(sp)
+ 900:	f04a                	sd	s2,32(sp)
+ 902:	ec4e                	sd	s3,24(sp)
+ 904:	e852                	sd	s4,16(sp)
+ 906:	e456                	sd	s5,8(sp)
+ 908:	e05a                	sd	s6,0(sp)
+ 90a:	0080                	addi	s0,sp,64
   Header *p, *prevp;
   uint nunits;
 
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
- 902:	02051493          	slli	s1,a0,0x20
- 906:	9081                	srli	s1,s1,0x20
- 908:	04bd                	addi	s1,s1,15
- 90a:	8091                	srli	s1,s1,0x4
- 90c:	00148a1b          	addiw	s4,s1,1
- 910:	0485                	addi	s1,s1,1
+ 90c:	02051493          	slli	s1,a0,0x20
+ 910:	9081                	srli	s1,s1,0x20
+ 912:	04bd                	addi	s1,s1,15
+ 914:	8091                	srli	s1,s1,0x4
+ 916:	00148a1b          	addiw	s4,s1,1
+ 91a:	0485                	addi	s1,s1,1
   if((prevp = freep) == 0){
- 912:	00000517          	auipc	a0,0x0
- 916:	17e53503          	ld	a0,382(a0) # a90 <freep>
- 91a:	c515                	beqz	a0,946 <malloc+0x58>
+ 91c:	00000517          	auipc	a0,0x0
+ 920:	18453503          	ld	a0,388(a0) # aa0 <freep>
+ 924:	c515                	beqz	a0,950 <malloc+0x58>
     base.s.ptr = freep = prevp = &base;
     base.s.size = 0;
   }
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 91c:	611c                	ld	a5,0(a0)
+ 926:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 91e:	4798                	lw	a4,8(a5)
- 920:	04977163          	bgeu	a4,s1,962 <malloc+0x74>
- 924:	89d2                	mv	s3,s4
- 926:	000a071b          	sext.w	a4,s4
- 92a:	6685                	lui	a3,0x1
- 92c:	00d77363          	bgeu	a4,a3,932 <malloc+0x44>
- 930:	6985                	lui	s3,0x1
- 932:	00098b1b          	sext.w	s6,s3
+ 928:	4798                	lw	a4,8(a5)
+ 92a:	04977163          	bgeu	a4,s1,96c <malloc+0x74>
+ 92e:	89d2                	mv	s3,s4
+ 930:	000a071b          	sext.w	a4,s4
+ 934:	6685                	lui	a3,0x1
+ 936:	00d77363          	bgeu	a4,a3,93c <malloc+0x44>
+ 93a:	6985                	lui	s3,0x1
+ 93c:	00098b1b          	sext.w	s6,s3
   p = sbrk(nu * sizeof(Header));
- 936:	0049999b          	slliw	s3,s3,0x4
+ 940:	0049999b          	slliw	s3,s3,0x4
         p->s.size = nunits;
       }
       freep = prevp;
       return (void*)(p + 1);
     }
     if(p == freep)
- 93a:	00000917          	auipc	s2,0x0
- 93e:	15690913          	addi	s2,s2,342 # a90 <freep>
+ 944:	00000917          	auipc	s2,0x0
+ 948:	15c90913          	addi	s2,s2,348 # aa0 <freep>
   if(p == (char*)-1)
- 942:	5afd                	li	s5,-1
- 944:	a8a5                	j	9bc <malloc+0xce>
+ 94c:	5afd                	li	s5,-1
+ 94e:	a8a5                	j	9c6 <malloc+0xce>
     base.s.ptr = freep = prevp = &base;
- 946:	00000797          	auipc	a5,0x0
- 94a:	14a78793          	addi	a5,a5,330 # a90 <freep>
- 94e:	00000717          	auipc	a4,0x0
- 952:	14a70713          	addi	a4,a4,330 # a98 <base>
- 956:	e398                	sd	a4,0(a5)
- 958:	e798                	sd	a4,8(a5)
+ 950:	00000797          	auipc	a5,0x0
+ 954:	15078793          	addi	a5,a5,336 # aa0 <freep>
+ 958:	00000717          	auipc	a4,0x0
+ 95c:	15070713          	addi	a4,a4,336 # aa8 <base>
+ 960:	e398                	sd	a4,0(a5)
+ 962:	e798                	sd	a4,8(a5)
     base.s.size = 0;
- 95a:	0007a823          	sw	zero,16(a5)
+ 964:	0007a823          	sw	zero,16(a5)
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 95e:	87ba                	mv	a5,a4
- 960:	b7d1                	j	924 <malloc+0x36>
+ 968:	87ba                	mv	a5,a4
+ 96a:	b7d1                	j	92e <malloc+0x36>
       if(p->s.size == nunits)
- 962:	02e48c63          	beq	s1,a4,99a <malloc+0xac>
+ 96c:	02e48c63          	beq	s1,a4,9a4 <malloc+0xac>
         p->s.size -= nunits;
- 966:	4147073b          	subw	a4,a4,s4
- 96a:	c798                	sw	a4,8(a5)
+ 970:	4147073b          	subw	a4,a4,s4
+ 974:	c798                	sw	a4,8(a5)
         p += p->s.size;
- 96c:	02071693          	slli	a3,a4,0x20
- 970:	01c6d713          	srli	a4,a3,0x1c
- 974:	97ba                	add	a5,a5,a4
+ 976:	02071693          	slli	a3,a4,0x20
+ 97a:	01c6d713          	srli	a4,a3,0x1c
+ 97e:	97ba                	add	a5,a5,a4
         p->s.size = nunits;
- 976:	0147a423          	sw	s4,8(a5)
+ 980:	0147a423          	sw	s4,8(a5)
       freep = prevp;
- 97a:	00000717          	auipc	a4,0x0
- 97e:	10a73b23          	sd	a0,278(a4) # a90 <freep>
+ 984:	00000717          	auipc	a4,0x0
+ 988:	10a73e23          	sd	a0,284(a4) # aa0 <freep>
       return (void*)(p + 1);
- 982:	01078513          	addi	a0,a5,16
+ 98c:	01078513          	addi	a0,a5,16
       if((p = morecore(nunits)) == 0)
         return 0;
   }
 }
- 986:	70e2                	ld	ra,56(sp)
- 988:	7442                	ld	s0,48(sp)
- 98a:	74a2                	ld	s1,40(sp)
- 98c:	7902                	ld	s2,32(sp)
- 98e:	69e2                	ld	s3,24(sp)
- 990:	6a42                	ld	s4,16(sp)
- 992:	6aa2                	ld	s5,8(sp)
- 994:	6b02                	ld	s6,0(sp)
- 996:	6121                	addi	sp,sp,64
- 998:	8082                	ret
+ 990:	70e2                	ld	ra,56(sp)
+ 992:	7442                	ld	s0,48(sp)
+ 994:	74a2                	ld	s1,40(sp)
+ 996:	7902                	ld	s2,32(sp)
+ 998:	69e2                	ld	s3,24(sp)
+ 99a:	6a42                	ld	s4,16(sp)
+ 99c:	6aa2                	ld	s5,8(sp)
+ 99e:	6b02                	ld	s6,0(sp)
+ 9a0:	6121                	addi	sp,sp,64
+ 9a2:	8082                	ret
         prevp->s.ptr = p->s.ptr;
- 99a:	6398                	ld	a4,0(a5)
- 99c:	e118                	sd	a4,0(a0)
- 99e:	bff1                	j	97a <malloc+0x8c>
+ 9a4:	6398                	ld	a4,0(a5)
+ 9a6:	e118                	sd	a4,0(a0)
+ 9a8:	bff1                	j	984 <malloc+0x8c>
   hp->s.size = nu;
- 9a0:	01652423          	sw	s6,8(a0)
+ 9aa:	01652423          	sw	s6,8(a0)
   free((void*)(hp + 1));
- 9a4:	0541                	addi	a0,a0,16
- 9a6:	00000097          	auipc	ra,0x0
- 9aa:	ec6080e7          	jalr	-314(ra) # 86c <free>
+ 9ae:	0541                	addi	a0,a0,16
+ 9b0:	00000097          	auipc	ra,0x0
+ 9b4:	ec6080e7          	jalr	-314(ra) # 876 <free>
   return freep;
- 9ae:	00093503          	ld	a0,0(s2)
+ 9b8:	00093503          	ld	a0,0(s2)
       if((p = morecore(nunits)) == 0)
- 9b2:	d971                	beqz	a0,986 <malloc+0x98>
+ 9bc:	d971                	beqz	a0,990 <malloc+0x98>
   for(p = prevp->s.ptr; ; prevp = p, p = p->s.ptr){
- 9b4:	611c                	ld	a5,0(a0)
+ 9be:	611c                	ld	a5,0(a0)
     if(p->s.size >= nunits){
- 9b6:	4798                	lw	a4,8(a5)
- 9b8:	fa9775e3          	bgeu	a4,s1,962 <malloc+0x74>
+ 9c0:	4798                	lw	a4,8(a5)
+ 9c2:	fa9775e3          	bgeu	a4,s1,96c <malloc+0x74>
     if(p == freep)
- 9bc:	00093703          	ld	a4,0(s2)
- 9c0:	853e                	mv	a0,a5
- 9c2:	fef719e3          	bne	a4,a5,9b4 <malloc+0xc6>
+ 9c6:	00093703          	ld	a4,0(s2)
+ 9ca:	853e                	mv	a0,a5
+ 9cc:	fef719e3          	bne	a4,a5,9be <malloc+0xc6>
   p = sbrk(nu * sizeof(Header));
- 9c6:	854e                	mv	a0,s3
- 9c8:	00000097          	auipc	ra,0x0
- 9cc:	b2a080e7          	jalr	-1238(ra) # 4f2 <sbrk>
+ 9d0:	854e                	mv	a0,s3
+ 9d2:	00000097          	auipc	ra,0x0
+ 9d6:	b20080e7          	jalr	-1248(ra) # 4f2 <sbrk>
   if(p == (char*)-1)
- 9d0:	fd5518e3          	bne	a0,s5,9a0 <malloc+0xb2>
+ 9da:	fd5518e3          	bne	a0,s5,9aa <malloc+0xb2>
         return 0;
- 9d4:	4501                	li	a0,0
- 9d6:	bf45                	j	986 <malloc+0x98>
+ 9de:	4501                	li	a0,0
+ 9e0:	bf45                	j	990 <malloc+0x98>
diff --git a/xv6-user/xargs.sym b/xv6-user/xargs.sym
index 15ac61e..e4caefa 100644
--- a/xv6-user/xargs.sym
+++ b/xv6-user/xargs.sym
@@ -1,6 +1,6 @@
 0000000000000000 .text
-00000000000009d8 .rodata
-0000000000000a90 .bss
+00000000000009e8 .rodata
+0000000000000aa0 .bss
 0000000000000000 .comment
 0000000000000000 .riscv.attributes
 0000000000000000 .debug_aranges
@@ -16,24 +16,25 @@
 0000000000000000 ulib.c
 0000000000000000 usys.o
 0000000000000000 printf.c
-000000000000055e putc
-0000000000000580 printint
-0000000000000a78 digits
+0000000000000568 putc
+000000000000058a printint
+0000000000000a88 digits
 0000000000000000 umalloc.c
-0000000000000a90 freep
-0000000000000a98 base
+0000000000000aa0 freep
+0000000000000aa8 base
 00000000000001b6 strcpy
-0000000000000836 printf
-0000000000001289 __global_pointer$
+0000000000000840 printf
+0000000000001299 __global_pointer$
 0000000000000512 dev
 00000000000003bc memmove
+000000000000055e times
 0000000000000532 trace
 000000000000029c gets
-0000000000000a89 __SDATA_BEGIN__
+0000000000000a99 __SDATA_BEGIN__
 00000000000004e8 getpid
 000000000000044e memcpy
 0000000000000000 readline
-00000000000008ee malloc
+00000000000008f8 malloc
 000000000000052a remove
 00000000000004fa sleep
 000000000000053a sysinfo
@@ -43,31 +44,31 @@
 0000000000000542 rename
 0000000000000494 write
 00000000000004c2 fstat
-0000000000000808 fprintf
+0000000000000812 fprintf
 00000000000004a8 kill
 00000000000001d2 strcat
-000000000000062a vprintf
+0000000000000634 vprintf
 00000000000004d6 chdir
 00000000000004b0 exec
 0000000000000478 wait
 000000000000048a read
 0000000000000414 memcmp
 0000000000000466 fork
-0000000000000aa8 __BSS_END__
+0000000000000ab8 __BSS_END__
 00000000000004f2 sbrk
 000000000000050a test_proc
 0000000000000502 uptime
-0000000000000a89 __bss_start
+0000000000000a99 __bss_start
 0000000000000256 memset
 0000000000000068 main
 0000000000000200 strcmp
 000000000000054a shutdown
 00000000000004e0 dup
 0000000000000522 getcwd
-0000000000000a89 __DATA_BEGIN__
+0000000000000a99 __DATA_BEGIN__
 0000000000000316 stat
-0000000000000a89 _edata
-0000000000000aa8 _end
+0000000000000a99 _edata
+0000000000000ab8 _end
 000000000000046e exit
 000000000000035c atoi
 000000000000022c strlen
@@ -75,4 +76,4 @@
 0000000000000278 strchr
 00000000000004cc mkdir
 000000000000049e close
-000000000000086c free
+0000000000000876 free
-- 
GitLab