diff --git a/kernel/proc.c b/kernel/proc.c index 8aae51ec8e64b9037bbd570371ec7657df01d5c3..048bc90a28f4e0c141deeb814a6f3ba5bcd8ae95 100755 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -168,7 +168,6 @@ found: p->vma[i].valid = 0; p->vma[i].alloc = 0; } - p->max_addr = p->sz; return p; } diff --git a/kernel/proc.o b/kernel/proc.o index 7e53867a56749c4a1ab9f522acd801fd3e60d9b1..2fd596a496d24f68fce0a3b8b6fa39381760924f 100644 Binary files a/kernel/proc.o and b/kernel/proc.o differ diff --git a/kernel/sysfile.c b/kernel/sysfile.c index 56a9662b61908ac3d531c6fa342fa36843ba5a64..6d602d867073529343781c9bb1e233180b272a6b 100755 --- a/kernel/sysfile.c +++ b/kernel/sysfile.c @@ -655,8 +655,7 @@ sys_mmap(void) if (vma->valid == 0) { vma->valid = 1; vma->alloc = 0; - vma->addr = p->max_addr; - p->max_addr += len; + vma->addr = p->sz; vma->len = len; vma->prot = prot; vma->flags = flags; @@ -689,15 +688,14 @@ sys_munmap(void) { addr = PGROUNDDOWN(addr); - if(vma->alloc){ - printf("here\n"); + if(vma->alloc !=0){ if( walkaddr( p->pagetable , addr ) != 0) { if (vma->flags & MAP_SHARED) { vma->f->off = vma->off; filewrite(vma->f, addr, len); } - vmunmap(p->pagetable, addr, len/PGSIZE, 1); + //vmunmap(p->pagetable, addr, len/PGSIZE, 1); vma->alloc = 0; } diff --git a/kernel/sysfile.o b/kernel/sysfile.o index f56b7c6d7a43ec68b1f7195ed7dbfac6e03e00c5..142239eef113063fc6612d1d944f10963240d45b 100644 Binary files a/kernel/sysfile.o and b/kernel/sysfile.o differ diff --git a/kernel/trap.c b/kernel/trap.c index 2b8f2f5708b9c88dafd5440f27fc85bc27dbb90d..ac5d2bc3d04ca9f13ce1f71185f99929c22f097d 100755 --- a/kernel/trap.c +++ b/kernel/trap.c @@ -114,6 +114,7 @@ usertrap(void) eunlock(vma->f->ep); vma->alloc = 1; + p->sz+=len; break; } } diff --git a/kernel/trap.o b/kernel/trap.o index 6a3035c6687546d5949bfe9446be881393b850c5..5867ff9ec2bee41616e1c2dea3ace2bc1fdada9c 100644 Binary files a/kernel/trap.o and b/kernel/trap.o differ diff --git a/sdcard.img b/sdcard.img index 657d3b64edab0a0d84027639c7b378f9139b0297..e9f9ba52ba254a180e2b44909b863ac323fed932 100755 Binary files a/sdcard.img and b/sdcard.img differ diff --git a/target/kernel b/target/kernel index 6bb17b5b9b57b6ab83bf883ef3a97b0931172201..cf6f2f151968163af1d2485d3c47d5aa08680013 100755 Binary files a/target/kernel and b/target/kernel differ diff --git a/target/kernel.asm b/target/kernel.asm index 13db4cb92083062bb70f849c7e95688163be5ba5..1dfb89ff2be46912ab599e5d38d784e1245bae73 100644 --- a/target/kernel.asm +++ b/target/kernel.asm @@ -88,7 +88,7 @@ printint(int xx, int base, int sign) consputc(buf[i]); 80200092: fff4c503 lbu a0,-1(s1) 80200096: 00008097 auipc ra,0x8 - 8020009a: a64080e7 jalr -1436(ra) # 80207afa <consputc> + 8020009a: a24080e7 jalr -1500(ra) # 80207aba <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: 00008097 auipc ra,0x8 - 802000d0: a2e080e7 jalr -1490(ra) # 80207afa <consputc> + 802000d0: 9ee080e7 jalr -1554(ra) # 80207aba <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: 00008097 auipc ra,0x8 - 80200224: 8da080e7 jalr -1830(ra) # 80207afa <consputc> + 80200224: 89a080e7 jalr -1894(ra) # 80207aba <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: 00008097 auipc ra,0x8 - 802002b6: 848080e7 jalr -1976(ra) # 80207afa <consputc> + 802002b6: 808080e7 jalr -2040(ra) # 80207aba <consputc> consputc('x'); 802002ba: 07800513 li a0,120 - 802002be: 00008097 auipc ra,0x8 - 802002c2: 83c080e7 jalr -1988(ra) # 80207afa <consputc> + 802002be: 00007097 auipc ra,0x7 + 802002c2: 7fc080e7 jalr 2044(ra) # 80207aba <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: 00008097 auipc ra,0x8 - 802002d6: 828080e7 jalr -2008(ra) # 80207afa <consputc> + 802002d2: 00007097 auipc ra,0x7 + 802002d6: 7e8080e7 jalr 2024(ra) # 80207aba <consputc> for (i = 0; i < (sizeof(uint64) * 2); i++, x <<= 4) 802002da: 0912 slli s2,s2,0x4 802002dc: 34fd addiw s1,s1,-1 @@ -368,8 +368,8 @@ r_fp() 802002f2: 0004c503 lbu a0,0(s1) 802002f6: d90d beqz a0,80200228 <printf+0x9a> consputc(*s); - 802002f8: 00008097 auipc ra,0x8 - 802002fc: 802080e7 jalr -2046(ra) # 80207afa <consputc> + 802002f8: 00007097 auipc ra,0x7 + 802002fc: 7c2080e7 jalr 1986(ra) # 80207aba <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: 7e0080e7 jalr 2016(ra) # 80207afa <consputc> + 8020031e: 7a0080e7 jalr 1952(ra) # 80207aba <consputc> break; 80200322: b719 j 80200228 <printf+0x9a> consputc('%'); 80200324: 8556 mv a0,s5 80200326: 00007097 auipc ra,0x7 - 8020032a: 7d4080e7 jalr 2004(ra) # 80207afa <consputc> + 8020032a: 794080e7 jalr 1940(ra) # 80207aba <consputc> consputc(c); 8020032e: 8526 mv a0,s1 80200330: 00007097 auipc ra,0x7 - 80200334: 7ca080e7 jalr 1994(ra) # 80207afa <consputc> + 80200334: 78a080e7 jalr 1930(ra) # 80207aba <consputc> break; 80200338: bdc5 j 80200228 <printf+0x9a> if(locking) @@ -1443,10 +1443,10 @@ main(unsigned long hartid, unsigned long dtb_pa) 80200a0a: 0de080e7 jalr 222(ra) # 80200ae4 <kvminithart> trapinithart(); 80200a0e: 00002097 auipc ra,0x2 - 80200a12: f84080e7 jalr -124(ra) # 80202992 <trapinithart> + 80200a12: f7e080e7 jalr -130(ra) # 8020298c <trapinithart> plicinithart(); // ask PLIC for device interrupts 80200a16: 00007097 auipc ra,0x7 - 80200a1a: ea2080e7 jalr -350(ra) # 802078b8 <plicinithart> + 80200a1a: e62080e7 jalr -414(ra) # 80207878 <plicinithart> printf("hart 1 init done\n"); 80200a1e: 0000a517 auipc a0,0xa 80200a22: 9d250513 addi a0,a0,-1582 # 8020a3f0 <digits+0x70> @@ -1455,10 +1455,10 @@ main(unsigned long hartid, unsigned long dtb_pa) } scheduler(); 80200a2e: 00001097 auipc ra,0x1 - 80200a32: 6ee080e7 jalr 1774(ra) # 8020211c <scheduler> + 80200a32: 6e8080e7 jalr 1768(ra) # 80202116 <scheduler> consoleinit(); 80200a36: 00007097 auipc ra,0x7 - 80200a3a: 294080e7 jalr 660(ra) # 80207cca <consoleinit> + 80200a3a: 254080e7 jalr 596(ra) # 80207c8a <consoleinit> printfinit(); // init a lock for printf 80200a3e: 00000097 auipc ra,0x0 80200a42: 930080e7 jalr -1744(ra) # 8020036e <printfinit> @@ -1476,31 +1476,31 @@ main(unsigned long hartid, unsigned long dtb_pa) 80200a62: 086080e7 jalr 134(ra) # 80200ae4 <kvminithart> timerinit(); // init a lock for timer 80200a66: 00005097 auipc ra,0x5 - 80200a6a: 408080e7 jalr 1032(ra) # 80205e6e <timerinit> + 80200a6a: 3c8080e7 jalr 968(ra) # 80205e2e <timerinit> trapinithart(); // install kernel trap vector, including interrupt handler 80200a6e: 00002097 auipc ra,0x2 - 80200a72: f24080e7 jalr -220(ra) # 80202992 <trapinithart> + 80200a72: f1e080e7 jalr -226(ra) # 8020298c <trapinithart> procinit(); 80200a76: 00001097 auipc ra,0x1 80200a7a: f24080e7 jalr -220(ra) # 8020199a <procinit> plicinit(); 80200a7e: 00007097 auipc ra,0x7 - 80200a82: e22080e7 jalr -478(ra) # 802078a0 <plicinit> + 80200a82: de2080e7 jalr -542(ra) # 80207860 <plicinit> plicinithart(); 80200a86: 00007097 auipc ra,0x7 - 80200a8a: e32080e7 jalr -462(ra) # 802078b8 <plicinithart> + 80200a8a: df2080e7 jalr -526(ra) # 80207878 <plicinithart> disk_init(); 80200a8e: 00005097 auipc ra,0x5 - 80200a92: 47c080e7 jalr 1148(ra) # 80205f0a <disk_init> + 80200a92: 43c080e7 jalr 1084(ra) # 80205eca <disk_init> binit(); // buffer cache 80200a96: 00003097 auipc ra,0x3 - 80200a9a: 090080e7 jalr 144(ra) # 80203b26 <binit> + 80200a9a: 094080e7 jalr 148(ra) # 80203b2a <binit> fileinit(); // file table 80200a9e: 00003097 auipc ra,0x3 - 80200aa2: 494080e7 jalr 1172(ra) # 80203f32 <fileinit> + 80200aa2: 498080e7 jalr 1176(ra) # 80203f36 <fileinit> userinit(); // first user process 80200aa6: 00001097 auipc ra,0x1 - 80200aaa: 2c6080e7 jalr 710(ra) # 80201d6c <userinit> + 80200aaa: 2c0080e7 jalr 704(ra) # 80201d66 <userinit> printf("hart 0 init done\n"); 80200aae: 0000a517 auipc a0,0xa 80200ab2: 92a50513 addi a0,a0,-1750 # 8020a3d8 <digits+0x58> @@ -3777,7 +3777,7 @@ myproc(void) { 80201a96: eb91 bnez a5,80201aaa <forkret+0x36> usertrapret(); 80201a98: 00001097 auipc ra,0x1 - 80201a9c: f36080e7 jalr -202(ra) # 802029ce <usertrapret> + 80201a9c: f30080e7 jalr -208(ra) # 802029c8 <usertrapret> } 80201aa0: 60e2 ld ra,24(sp) 80201aa2: 6442 ld s0,16(sp) @@ -3789,7 +3789,7 @@ myproc(void) { 80201aae: 5407ab23 sw zero,1366(a5) # 8020b000 <first.1> fat32_init(); 80201ab2: 00005097 auipc ra,0x5 - 80201ab6: b42080e7 jalr -1214(ra) # 802065f4 <fat32_init> + 80201ab6: b02080e7 jalr -1278(ra) # 802065b4 <fat32_init> myproc()->cwd = ename("/"); 80201aba: 00000097 auipc ra,0x0 80201abe: f82080e7 jalr -126(ra) # 80201a3c <myproc> @@ -3797,7 +3797,7 @@ myproc(void) { 80201ac4: 00009517 auipc a0,0x9 80201ac8: b6c50513 addi a0,a0,-1172 # 8020a630 <digits+0x2b0> 80201acc: 00006097 auipc ra,0x6 - 80201ad0: d9a080e7 jalr -614(ra) # 80207866 <ename> + 80201ad0: d5a080e7 jalr -678(ra) # 80207826 <ename> 80201ad4: 40a4b023 sd a0,1024(s1) 80201ad8: b7c1 j 80201a98 <forkret+0x24> @@ -4033,7 +4033,7 @@ allocpid() { 80201cb2: ff3492e3 bne s1,s3,80201c96 <allocproc+0x1e> return NULL; 80201cb6: 4481 li s1,0 - 80201cb8: a8bd j 80201d36 <allocproc+0xbe> + 80201cb8: a8a5 j 80201d30 <allocproc+0xb8> p->pid = allocpid(); 80201cba: 00000097 auipc ra,0x0 80201cbe: e20080e7 jalr -480(ra) # 80201ada <allocpid> @@ -4043,19 +4043,19 @@ allocpid() { 80201cc8: 896080e7 jalr -1898(ra) # 8020055a <kalloc> 80201ccc: 89aa mv s3,a0 80201cce: f0a8 sd a0,96(s1) - 80201cd0: c93d beqz a0,80201d46 <allocproc+0xce> + 80201cd0: c925 beqz a0,80201d40 <allocproc+0xc8> if ((p->pagetable = proc_pagetable(p)) == NULL || 80201cd2: 8526 mv a0,s1 80201cd4: 00000097 auipc ra,0x0 80201cd8: e4c080e7 jalr -436(ra) # 80201b20 <proc_pagetable> 80201cdc: e8a8 sd a0,80(s1) - 80201cde: c93d beqz a0,80201d54 <allocproc+0xdc> + 80201cde: c925 beqz a0,80201d4e <allocproc+0xd6> (p->kpagetable = proc_kpagetable()) == NULL) { 80201ce0: 00000097 auipc ra,0x0 80201ce4: 9ec080e7 jalr -1556(ra) # 802016cc <proc_kpagetable> 80201ce8: eca8 sd a0,88(s1) if ((p->pagetable = proc_pagetable(p)) == NULL || - 80201cea: c52d beqz a0,80201d54 <allocproc+0xdc> + 80201cea: c135 beqz a0,80201d4e <allocproc+0xd6> p->kstack = VKSTACK; 80201cec: 0fb00793 li a5,251 80201cf0: 07fa slli a5,a5,0x1e @@ -4085,12656 +4085,12634 @@ allocpid() { for( int i=0 ; i<VMA_MAX ; i++ ) 80201d28: 03078793 addi a5,a5,48 80201d2c: ff279ae3 bne a5,s2,80201d20 <allocproc+0xa8> - p->max_addr = p->sz; - 80201d30: 64bc ld a5,72(s1) - 80201d32: 74f4b023 sd a5,1856(s1) } - 80201d36: 8526 mv a0,s1 - 80201d38: 70a2 ld ra,40(sp) - 80201d3a: 7402 ld s0,32(sp) - 80201d3c: 64e2 ld s1,24(sp) - 80201d3e: 6942 ld s2,16(sp) - 80201d40: 69a2 ld s3,8(sp) - 80201d42: 6145 addi sp,sp,48 - 80201d44: 8082 ret + 80201d30: 8526 mv a0,s1 + 80201d32: 70a2 ld ra,40(sp) + 80201d34: 7402 ld s0,32(sp) + 80201d36: 64e2 ld s1,24(sp) + 80201d38: 6942 ld s2,16(sp) + 80201d3a: 69a2 ld s3,8(sp) + 80201d3c: 6145 addi sp,sp,48 + 80201d3e: 8082 ret release(&p->lock); - 80201d46: 8526 mv a0,s1 - 80201d48: fffff097 auipc ra,0xfffff - 80201d4c: 9d2080e7 jalr -1582(ra) # 8020071a <release> + 80201d40: 8526 mv a0,s1 + 80201d42: fffff097 auipc ra,0xfffff + 80201d46: 9d8080e7 jalr -1576(ra) # 8020071a <release> return NULL; - 80201d50: 84ce mv s1,s3 - 80201d52: b7d5 j 80201d36 <allocproc+0xbe> + 80201d4a: 84ce mv s1,s3 + 80201d4c: b7d5 j 80201d30 <allocproc+0xb8> freeproc(p); - 80201d54: 8526 mv a0,s1 - 80201d56: 00000097 auipc ra,0x0 - 80201d5a: eb8080e7 jalr -328(ra) # 80201c0e <freeproc> + 80201d4e: 8526 mv a0,s1 + 80201d50: 00000097 auipc ra,0x0 + 80201d54: ebe080e7 jalr -322(ra) # 80201c0e <freeproc> release(&p->lock); - 80201d5e: 8526 mv a0,s1 - 80201d60: fffff097 auipc ra,0xfffff - 80201d64: 9ba080e7 jalr -1606(ra) # 8020071a <release> + 80201d58: 8526 mv a0,s1 + 80201d5a: fffff097 auipc ra,0xfffff + 80201d5e: 9c0080e7 jalr -1600(ra) # 8020071a <release> return NULL; - 80201d68: 4481 li s1,0 - 80201d6a: b7f1 j 80201d36 <allocproc+0xbe> + 80201d62: 4481 li s1,0 + 80201d64: b7f1 j 80201d30 <allocproc+0xb8> -0000000080201d6c <userinit>: +0000000080201d66 <userinit>: { - 80201d6c: 1101 addi sp,sp,-32 - 80201d6e: ec06 sd ra,24(sp) - 80201d70: e822 sd s0,16(sp) - 80201d72: e426 sd s1,8(sp) - 80201d74: e04a sd s2,0(sp) - 80201d76: 1000 addi s0,sp,32 + 80201d66: 1101 addi sp,sp,-32 + 80201d68: ec06 sd ra,24(sp) + 80201d6a: e822 sd s0,16(sp) + 80201d6c: e426 sd s1,8(sp) + 80201d6e: e04a sd s2,0(sp) + 80201d70: 1000 addi s0,sp,32 p = allocproc(); - 80201d78: 00000097 auipc ra,0x0 - 80201d7c: f00080e7 jalr -256(ra) # 80201c78 <allocproc> - 80201d80: 84aa mv s1,a0 + 80201d72: 00000097 auipc ra,0x0 + 80201d76: f06080e7 jalr -250(ra) # 80201c78 <allocproc> + 80201d7a: 84aa mv s1,a0 initproc = p; - 80201d82: 00014797 auipc a5,0x14 - 80201d86: 3ea7bb23 sd a0,1014(a5) # 80216178 <initproc> + 80201d7c: 00014797 auipc a5,0x14 + 80201d80: 3ea7be23 sd a0,1020(a5) # 80216178 <initproc> uvminit(p->pagetable , p->kpagetable, initcode, sizeof(initcode)); - 80201d8a: 6905 lui s2,0x1 - 80201d8c: cd090693 addi a3,s2,-816 # cd0 <_entry-0x801ff330> - 80201d90: 00009617 auipc a2,0x9 - 80201d94: 27860613 addi a2,a2,632 # 8020b008 <initcode> - 80201d98: 6d2c ld a1,88(a0) - 80201d9a: 6928 ld a0,80(a0) - 80201d9c: fffff097 auipc ra,0xfffff - 80201da0: 178080e7 jalr 376(ra) # 80200f14 <uvminit> + 80201d84: 6905 lui s2,0x1 + 80201d86: cd090693 addi a3,s2,-816 # cd0 <_entry-0x801ff330> + 80201d8a: 00009617 auipc a2,0x9 + 80201d8e: 27e60613 addi a2,a2,638 # 8020b008 <initcode> + 80201d92: 6d2c ld a1,88(a0) + 80201d94: 6928 ld a0,80(a0) + 80201d96: fffff097 auipc ra,0xfffff + 80201d9a: 17e080e7 jalr 382(ra) # 80200f14 <uvminit> p->sz = PGSIZE; - 80201da4: 0524b423 sd s2,72(s1) + 80201d9e: 0524b423 sd s2,72(s1) p->trapframe->epc = 0x0; // user program counter - 80201da8: 70bc ld a5,96(s1) - 80201daa: 0007bc23 sd zero,24(a5) + 80201da2: 70bc ld a5,96(s1) + 80201da4: 0007bc23 sd zero,24(a5) p->trapframe->sp = PGSIZE; // user stack pointer - 80201dae: 70bc ld a5,96(s1) - 80201db0: 0327b823 sd s2,48(a5) + 80201da8: 70bc ld a5,96(s1) + 80201daa: 0327b823 sd s2,48(a5) safestrcpy(p->name, "initcode", sizeof(p->name)); - 80201db4: 4641 li a2,16 - 80201db6: 00009597 auipc a1,0x9 - 80201dba: 88258593 addi a1,a1,-1918 # 8020a638 <digits+0x2b8> - 80201dbe: 40848513 addi a0,s1,1032 - 80201dc2: fffff097 auipc ra,0xfffff - 80201dc6: af2080e7 jalr -1294(ra) # 802008b4 <safestrcpy> + 80201dae: 4641 li a2,16 + 80201db0: 00009597 auipc a1,0x9 + 80201db4: 88858593 addi a1,a1,-1912 # 8020a638 <digits+0x2b8> + 80201db8: 40848513 addi a0,s1,1032 + 80201dbc: fffff097 auipc ra,0xfffff + 80201dc0: af8080e7 jalr -1288(ra) # 802008b4 <safestrcpy> p->state = RUNNABLE; - 80201dca: 4789 li a5,2 - 80201dcc: cc9c sw a5,24(s1) + 80201dc4: 4789 li a5,2 + 80201dc6: cc9c sw a5,24(s1) p->tmask = 0; - 80201dce: 4004ac23 sw zero,1048(s1) + 80201dc8: 4004ac23 sw zero,1048(s1) release(&p->lock); - 80201dd2: 8526 mv a0,s1 - 80201dd4: fffff097 auipc ra,0xfffff - 80201dd8: 946080e7 jalr -1722(ra) # 8020071a <release> + 80201dcc: 8526 mv a0,s1 + 80201dce: fffff097 auipc ra,0xfffff + 80201dd2: 94c080e7 jalr -1716(ra) # 8020071a <release> } - 80201ddc: 60e2 ld ra,24(sp) - 80201dde: 6442 ld s0,16(sp) - 80201de0: 64a2 ld s1,8(sp) - 80201de2: 6902 ld s2,0(sp) - 80201de4: 6105 addi sp,sp,32 - 80201de6: 8082 ret - -0000000080201de8 <growproc>: + 80201dd6: 60e2 ld ra,24(sp) + 80201dd8: 6442 ld s0,16(sp) + 80201dda: 64a2 ld s1,8(sp) + 80201ddc: 6902 ld s2,0(sp) + 80201dde: 6105 addi sp,sp,32 + 80201de0: 8082 ret + +0000000080201de2 <growproc>: { - 80201de8: 1101 addi sp,sp,-32 - 80201dea: ec06 sd ra,24(sp) - 80201dec: e822 sd s0,16(sp) - 80201dee: e426 sd s1,8(sp) - 80201df0: e04a sd s2,0(sp) - 80201df2: 1000 addi s0,sp,32 - 80201df4: 84aa mv s1,a0 + 80201de2: 1101 addi sp,sp,-32 + 80201de4: ec06 sd ra,24(sp) + 80201de6: e822 sd s0,16(sp) + 80201de8: e426 sd s1,8(sp) + 80201dea: e04a sd s2,0(sp) + 80201dec: 1000 addi s0,sp,32 + 80201dee: 84aa mv s1,a0 struct proc *p = myproc(); - 80201df6: 00000097 auipc ra,0x0 - 80201dfa: c46080e7 jalr -954(ra) # 80201a3c <myproc> - 80201dfe: 892a mv s2,a0 + 80201df0: 00000097 auipc ra,0x0 + 80201df4: c4c080e7 jalr -948(ra) # 80201a3c <myproc> + 80201df8: 892a mv s2,a0 sz = p->sz; - 80201e00: 6530 ld a2,72(a0) - 80201e02: 0006079b sext.w a5,a2 + 80201dfa: 6530 ld a2,72(a0) + 80201dfc: 0006079b sext.w a5,a2 if(n > 0){ - 80201e06: 00904f63 bgtz s1,80201e24 <growproc+0x3c> + 80201e00: 00904f63 bgtz s1,80201e1e <growproc+0x3c> } else if(n < 0){ - 80201e0a: 0204ce63 bltz s1,80201e46 <growproc+0x5e> + 80201e04: 0204ce63 bltz s1,80201e40 <growproc+0x5e> p->sz = sz; - 80201e0e: 1782 slli a5,a5,0x20 - 80201e10: 9381 srli a5,a5,0x20 - 80201e12: 04f93423 sd a5,72(s2) + 80201e08: 1782 slli a5,a5,0x20 + 80201e0a: 9381 srli a5,a5,0x20 + 80201e0c: 04f93423 sd a5,72(s2) return 0; - 80201e16: 4501 li a0,0 + 80201e10: 4501 li a0,0 } - 80201e18: 60e2 ld ra,24(sp) - 80201e1a: 6442 ld s0,16(sp) - 80201e1c: 64a2 ld s1,8(sp) - 80201e1e: 6902 ld s2,0(sp) - 80201e20: 6105 addi sp,sp,32 - 80201e22: 8082 ret + 80201e12: 60e2 ld ra,24(sp) + 80201e14: 6442 ld s0,16(sp) + 80201e16: 64a2 ld s1,8(sp) + 80201e18: 6902 ld s2,0(sp) + 80201e1a: 6105 addi sp,sp,32 + 80201e1c: 8082 ret if((sz = uvmalloc(p->pagetable, p->kpagetable, sz, sz + n)) == 0) { - 80201e24: 00f486bb addw a3,s1,a5 - 80201e28: 1682 slli a3,a3,0x20 - 80201e2a: 9281 srli a3,a3,0x20 - 80201e2c: 1602 slli a2,a2,0x20 - 80201e2e: 9201 srli a2,a2,0x20 - 80201e30: 6d2c ld a1,88(a0) - 80201e32: 6928 ld a0,80(a0) - 80201e34: fffff097 auipc ra,0xfffff - 80201e38: 1d6080e7 jalr 470(ra) # 8020100a <uvmalloc> - 80201e3c: 0005079b sext.w a5,a0 - 80201e40: f7f9 bnez a5,80201e0e <growproc+0x26> + 80201e1e: 00f486bb addw a3,s1,a5 + 80201e22: 1682 slli a3,a3,0x20 + 80201e24: 9281 srli a3,a3,0x20 + 80201e26: 1602 slli a2,a2,0x20 + 80201e28: 9201 srli a2,a2,0x20 + 80201e2a: 6d2c ld a1,88(a0) + 80201e2c: 6928 ld a0,80(a0) + 80201e2e: fffff097 auipc ra,0xfffff + 80201e32: 1dc080e7 jalr 476(ra) # 8020100a <uvmalloc> + 80201e36: 0005079b sext.w a5,a0 + 80201e3a: f7f9 bnez a5,80201e08 <growproc+0x26> return -1; - 80201e42: 557d li a0,-1 - 80201e44: bfd1 j 80201e18 <growproc+0x30> + 80201e3c: 557d li a0,-1 + 80201e3e: bfd1 j 80201e12 <growproc+0x30> sz = uvmdealloc(p->pagetable, p->kpagetable, sz, sz + n); - 80201e46: 00f486bb addw a3,s1,a5 - 80201e4a: 1682 slli a3,a3,0x20 - 80201e4c: 9281 srli a3,a3,0x20 - 80201e4e: 1602 slli a2,a2,0x20 - 80201e50: 9201 srli a2,a2,0x20 - 80201e52: 6d2c ld a1,88(a0) - 80201e54: 6928 ld a0,80(a0) - 80201e56: fffff097 auipc ra,0xfffff - 80201e5a: 148080e7 jalr 328(ra) # 80200f9e <uvmdealloc> - 80201e5e: 0005079b sext.w a5,a0 - 80201e62: b775 j 80201e0e <growproc+0x26> - -0000000080201e64 <fork>: + 80201e40: 00f486bb addw a3,s1,a5 + 80201e44: 1682 slli a3,a3,0x20 + 80201e46: 9281 srli a3,a3,0x20 + 80201e48: 1602 slli a2,a2,0x20 + 80201e4a: 9201 srli a2,a2,0x20 + 80201e4c: 6d2c ld a1,88(a0) + 80201e4e: 6928 ld a0,80(a0) + 80201e50: fffff097 auipc ra,0xfffff + 80201e54: 14e080e7 jalr 334(ra) # 80200f9e <uvmdealloc> + 80201e58: 0005079b sext.w a5,a0 + 80201e5c: b775 j 80201e08 <growproc+0x26> + +0000000080201e5e <fork>: { - 80201e64: 7139 addi sp,sp,-64 - 80201e66: fc06 sd ra,56(sp) - 80201e68: f822 sd s0,48(sp) - 80201e6a: f426 sd s1,40(sp) - 80201e6c: f04a sd s2,32(sp) - 80201e6e: ec4e sd s3,24(sp) - 80201e70: e852 sd s4,16(sp) - 80201e72: e456 sd s5,8(sp) - 80201e74: 0080 addi s0,sp,64 + 80201e5e: 7139 addi sp,sp,-64 + 80201e60: fc06 sd ra,56(sp) + 80201e62: f822 sd s0,48(sp) + 80201e64: f426 sd s1,40(sp) + 80201e66: f04a sd s2,32(sp) + 80201e68: ec4e sd s3,24(sp) + 80201e6a: e852 sd s4,16(sp) + 80201e6c: e456 sd s5,8(sp) + 80201e6e: 0080 addi s0,sp,64 struct proc *p = myproc(); - 80201e76: 00000097 auipc ra,0x0 - 80201e7a: bc6080e7 jalr -1082(ra) # 80201a3c <myproc> - 80201e7e: 8aaa mv s5,a0 + 80201e70: 00000097 auipc ra,0x0 + 80201e74: bcc080e7 jalr -1076(ra) # 80201a3c <myproc> + 80201e78: 8aaa mv s5,a0 if((np = allocproc()) == NULL){ - 80201e80: 00000097 auipc ra,0x0 - 80201e84: df8080e7 jalr -520(ra) # 80201c78 <allocproc> - 80201e88: c965 beqz a0,80201f78 <fork+0x114> - 80201e8a: 8a2a mv s4,a0 + 80201e7a: 00000097 auipc ra,0x0 + 80201e7e: dfe080e7 jalr -514(ra) # 80201c78 <allocproc> + 80201e82: c965 beqz a0,80201f72 <fork+0x114> + 80201e84: 8a2a mv s4,a0 if(uvmcopy(p->pagetable, np->pagetable, np->kpagetable, p->sz) < 0){ - 80201e8c: 048ab683 ld a3,72(s5) - 80201e90: 6d30 ld a2,88(a0) - 80201e92: 692c ld a1,80(a0) - 80201e94: 050ab503 ld a0,80(s5) - 80201e98: fffff097 auipc ra,0xfffff - 80201e9c: 30e080e7 jalr 782(ra) # 802011a6 <uvmcopy> - 80201ea0: 04054e63 bltz a0,80201efc <fork+0x98> + 80201e86: 048ab683 ld a3,72(s5) + 80201e8a: 6d30 ld a2,88(a0) + 80201e8c: 692c ld a1,80(a0) + 80201e8e: 050ab503 ld a0,80(s5) + 80201e92: fffff097 auipc ra,0xfffff + 80201e96: 314080e7 jalr 788(ra) # 802011a6 <uvmcopy> + 80201e9a: 04054e63 bltz a0,80201ef6 <fork+0x98> np->sz = p->sz; - 80201ea4: 048ab783 ld a5,72(s5) - 80201ea8: 04fa3423 sd a5,72(s4) + 80201e9e: 048ab783 ld a5,72(s5) + 80201ea2: 04fa3423 sd a5,72(s4) np->parent = p; - 80201eac: 035a3023 sd s5,32(s4) + 80201ea6: 035a3023 sd s5,32(s4) np->tmask = p->tmask; - 80201eb0: 418aa783 lw a5,1048(s5) - 80201eb4: 40fa2c23 sw a5,1048(s4) + 80201eaa: 418aa783 lw a5,1048(s5) + 80201eae: 40fa2c23 sw a5,1048(s4) *(np->trapframe) = *(p->trapframe); - 80201eb8: 060ab683 ld a3,96(s5) - 80201ebc: 87b6 mv a5,a3 - 80201ebe: 060a3703 ld a4,96(s4) - 80201ec2: 12068693 addi a3,a3,288 - 80201ec6: 0007b803 ld a6,0(a5) - 80201eca: 6788 ld a0,8(a5) - 80201ecc: 6b8c ld a1,16(a5) - 80201ece: 6f90 ld a2,24(a5) - 80201ed0: 01073023 sd a6,0(a4) # 1000 <_entry-0x801ff000> - 80201ed4: e708 sd a0,8(a4) - 80201ed6: eb0c sd a1,16(a4) - 80201ed8: ef10 sd a2,24(a4) - 80201eda: 02078793 addi a5,a5,32 - 80201ede: 02070713 addi a4,a4,32 - 80201ee2: fed792e3 bne a5,a3,80201ec6 <fork+0x62> + 80201eb2: 060ab683 ld a3,96(s5) + 80201eb6: 87b6 mv a5,a3 + 80201eb8: 060a3703 ld a4,96(s4) + 80201ebc: 12068693 addi a3,a3,288 + 80201ec0: 0007b803 ld a6,0(a5) + 80201ec4: 6788 ld a0,8(a5) + 80201ec6: 6b8c ld a1,16(a5) + 80201ec8: 6f90 ld a2,24(a5) + 80201eca: 01073023 sd a6,0(a4) # 1000 <_entry-0x801ff000> + 80201ece: e708 sd a0,8(a4) + 80201ed0: eb0c sd a1,16(a4) + 80201ed2: ef10 sd a2,24(a4) + 80201ed4: 02078793 addi a5,a5,32 + 80201ed8: 02070713 addi a4,a4,32 + 80201edc: fed792e3 bne a5,a3,80201ec0 <fork+0x62> np->trapframe->a0 = 0; - 80201ee6: 060a3783 ld a5,96(s4) - 80201eea: 0607b823 sd zero,112(a5) + 80201ee0: 060a3783 ld a5,96(s4) + 80201ee4: 0607b823 sd zero,112(a5) for(i = 0; i < NOFILE; i++) - 80201eee: 0d8a8493 addi s1,s5,216 - 80201ef2: 0d8a0913 addi s2,s4,216 - 80201ef6: 400a8993 addi s3,s5,1024 - 80201efa: a03d j 80201f28 <fork+0xc4> + 80201ee8: 0d8a8493 addi s1,s5,216 + 80201eec: 0d8a0913 addi s2,s4,216 + 80201ef0: 400a8993 addi s3,s5,1024 + 80201ef4: a03d j 80201f22 <fork+0xc4> freeproc(np); - 80201efc: 8552 mv a0,s4 - 80201efe: 00000097 auipc ra,0x0 - 80201f02: d10080e7 jalr -752(ra) # 80201c0e <freeproc> + 80201ef6: 8552 mv a0,s4 + 80201ef8: 00000097 auipc ra,0x0 + 80201efc: d16080e7 jalr -746(ra) # 80201c0e <freeproc> release(&np->lock); - 80201f06: 8552 mv a0,s4 - 80201f08: fffff097 auipc ra,0xfffff - 80201f0c: 812080e7 jalr -2030(ra) # 8020071a <release> + 80201f00: 8552 mv a0,s4 + 80201f02: fffff097 auipc ra,0xfffff + 80201f06: 818080e7 jalr -2024(ra) # 8020071a <release> return -1; - 80201f10: 54fd li s1,-1 - 80201f12: a889 j 80201f64 <fork+0x100> + 80201f0a: 54fd li s1,-1 + 80201f0c: a889 j 80201f5e <fork+0x100> np->ofile[i] = filedup(p->ofile[i]); - 80201f14: 00002097 auipc ra,0x2 - 80201f18: 0e0080e7 jalr 224(ra) # 80203ff4 <filedup> - 80201f1c: 00a93023 sd a0,0(s2) + 80201f0e: 00002097 auipc ra,0x2 + 80201f12: 0ea080e7 jalr 234(ra) # 80203ff8 <filedup> + 80201f16: 00a93023 sd a0,0(s2) for(i = 0; i < NOFILE; i++) - 80201f20: 04a1 addi s1,s1,8 - 80201f22: 0921 addi s2,s2,8 - 80201f24: 01348563 beq s1,s3,80201f2e <fork+0xca> + 80201f1a: 04a1 addi s1,s1,8 + 80201f1c: 0921 addi s2,s2,8 + 80201f1e: 01348563 beq s1,s3,80201f28 <fork+0xca> if(p->ofile[i]) - 80201f28: 6088 ld a0,0(s1) - 80201f2a: f56d bnez a0,80201f14 <fork+0xb0> - 80201f2c: bfd5 j 80201f20 <fork+0xbc> + 80201f22: 6088 ld a0,0(s1) + 80201f24: f56d bnez a0,80201f0e <fork+0xb0> + 80201f26: bfd5 j 80201f1a <fork+0xbc> np->cwd = edup(p->cwd); - 80201f2e: 400ab503 ld a0,1024(s5) - 80201f32: 00005097 auipc ra,0x5 - 80201f36: f2e080e7 jalr -210(ra) # 80206e60 <edup> - 80201f3a: 40aa3023 sd a0,1024(s4) + 80201f28: 400ab503 ld a0,1024(s5) + 80201f2c: 00005097 auipc ra,0x5 + 80201f30: ef4080e7 jalr -268(ra) # 80206e20 <edup> + 80201f34: 40aa3023 sd a0,1024(s4) safestrcpy(np->name, p->name, sizeof(p->name)); - 80201f3e: 4641 li a2,16 - 80201f40: 408a8593 addi a1,s5,1032 - 80201f44: 408a0513 addi a0,s4,1032 - 80201f48: fffff097 auipc ra,0xfffff - 80201f4c: 96c080e7 jalr -1684(ra) # 802008b4 <safestrcpy> + 80201f38: 4641 li a2,16 + 80201f3a: 408a8593 addi a1,s5,1032 + 80201f3e: 408a0513 addi a0,s4,1032 + 80201f42: fffff097 auipc ra,0xfffff + 80201f46: 972080e7 jalr -1678(ra) # 802008b4 <safestrcpy> pid = np->pid; - 80201f50: 038a2483 lw s1,56(s4) + 80201f4a: 038a2483 lw s1,56(s4) np->state = RUNNABLE; - 80201f54: 4789 li a5,2 - 80201f56: 00fa2c23 sw a5,24(s4) + 80201f4e: 4789 li a5,2 + 80201f50: 00fa2c23 sw a5,24(s4) release(&np->lock); - 80201f5a: 8552 mv a0,s4 - 80201f5c: ffffe097 auipc ra,0xffffe - 80201f60: 7be080e7 jalr 1982(ra) # 8020071a <release> + 80201f54: 8552 mv a0,s4 + 80201f56: ffffe097 auipc ra,0xffffe + 80201f5a: 7c4080e7 jalr 1988(ra) # 8020071a <release> } - 80201f64: 8526 mv a0,s1 - 80201f66: 70e2 ld ra,56(sp) - 80201f68: 7442 ld s0,48(sp) - 80201f6a: 74a2 ld s1,40(sp) - 80201f6c: 7902 ld s2,32(sp) - 80201f6e: 69e2 ld s3,24(sp) - 80201f70: 6a42 ld s4,16(sp) - 80201f72: 6aa2 ld s5,8(sp) - 80201f74: 6121 addi sp,sp,64 - 80201f76: 8082 ret + 80201f5e: 8526 mv a0,s1 + 80201f60: 70e2 ld ra,56(sp) + 80201f62: 7442 ld s0,48(sp) + 80201f64: 74a2 ld s1,40(sp) + 80201f66: 7902 ld s2,32(sp) + 80201f68: 69e2 ld s3,24(sp) + 80201f6a: 6a42 ld s4,16(sp) + 80201f6c: 6aa2 ld s5,8(sp) + 80201f6e: 6121 addi sp,sp,64 + 80201f70: 8082 ret return -1; - 80201f78: 54fd li s1,-1 - 80201f7a: b7ed j 80201f64 <fork+0x100> + 80201f72: 54fd li s1,-1 + 80201f74: b7ed j 80201f5e <fork+0x100> -0000000080201f7c <reparent>: +0000000080201f76 <reparent>: { - 80201f7c: 7179 addi sp,sp,-48 - 80201f7e: f406 sd ra,40(sp) - 80201f80: f022 sd s0,32(sp) - 80201f82: ec26 sd s1,24(sp) - 80201f84: e84a sd s2,16(sp) - 80201f86: e44e sd s3,8(sp) - 80201f88: e052 sd s4,0(sp) - 80201f8a: 1800 addi s0,sp,48 - 80201f8c: 892a mv s2,a0 + 80201f76: 7179 addi sp,sp,-48 + 80201f78: f406 sd ra,40(sp) + 80201f7a: f022 sd s0,32(sp) + 80201f7c: ec26 sd s1,24(sp) + 80201f7e: e84a sd s2,16(sp) + 80201f80: e44e sd s3,8(sp) + 80201f82: e052 sd s4,0(sp) + 80201f84: 1800 addi s0,sp,48 + 80201f86: 892a mv s2,a0 for(pp = proc; pp < &proc[NPROC]; pp++){ - 80201f8e: 00014497 auipc s1,0x14 - 80201f92: 1f248493 addi s1,s1,498 # 80216180 <proc> + 80201f88: 00014497 auipc s1,0x14 + 80201f8c: 1f848493 addi s1,s1,504 # 80216180 <proc> pp->parent = initproc; - 80201f96: 00014a17 auipc s4,0x14 - 80201f9a: 0caa0a13 addi s4,s4,202 # 80216060 <pid_lock> + 80201f90: 00014a17 auipc s4,0x14 + 80201f94: 0d0a0a13 addi s4,s4,208 # 80216060 <pid_lock> for(pp = proc; pp < &proc[NPROC]; pp++){ - 80201f9e: 0002b997 auipc s3,0x2b - 80201fa2: df298993 addi s3,s3,-526 # 8022cd90 <syscall_counts> - 80201fa6: a029 j 80201fb0 <reparent+0x34> - 80201fa8: 74848493 addi s1,s1,1864 - 80201fac: 03348363 beq s1,s3,80201fd2 <reparent+0x56> + 80201f98: 0002b997 auipc s3,0x2b + 80201f9c: df898993 addi s3,s3,-520 # 8022cd90 <syscall_counts> + 80201fa0: a029 j 80201faa <reparent+0x34> + 80201fa2: 74848493 addi s1,s1,1864 + 80201fa6: 03348363 beq s1,s3,80201fcc <reparent+0x56> if(pp->parent == p){ - 80201fb0: 709c ld a5,32(s1) - 80201fb2: ff279be3 bne a5,s2,80201fa8 <reparent+0x2c> + 80201faa: 709c ld a5,32(s1) + 80201fac: ff279be3 bne a5,s2,80201fa2 <reparent+0x2c> acquire(&pp->lock); - 80201fb6: 8526 mv a0,s1 - 80201fb8: ffffe097 auipc ra,0xffffe - 80201fbc: 70e080e7 jalr 1806(ra) # 802006c6 <acquire> + 80201fb0: 8526 mv a0,s1 + 80201fb2: ffffe097 auipc ra,0xffffe + 80201fb6: 714080e7 jalr 1812(ra) # 802006c6 <acquire> pp->parent = initproc; - 80201fc0: 118a3783 ld a5,280(s4) - 80201fc4: f09c sd a5,32(s1) + 80201fba: 118a3783 ld a5,280(s4) + 80201fbe: f09c sd a5,32(s1) release(&pp->lock); - 80201fc6: 8526 mv a0,s1 - 80201fc8: ffffe097 auipc ra,0xffffe - 80201fcc: 752080e7 jalr 1874(ra) # 8020071a <release> - 80201fd0: bfe1 j 80201fa8 <reparent+0x2c> + 80201fc0: 8526 mv a0,s1 + 80201fc2: ffffe097 auipc ra,0xffffe + 80201fc6: 758080e7 jalr 1880(ra) # 8020071a <release> + 80201fca: bfe1 j 80201fa2 <reparent+0x2c> } - 80201fd2: 70a2 ld ra,40(sp) - 80201fd4: 7402 ld s0,32(sp) - 80201fd6: 64e2 ld s1,24(sp) - 80201fd8: 6942 ld s2,16(sp) - 80201fda: 69a2 ld s3,8(sp) - 80201fdc: 6a02 ld s4,0(sp) - 80201fde: 6145 addi sp,sp,48 - 80201fe0: 8082 ret - -0000000080201fe2 <clone>: + 80201fcc: 70a2 ld ra,40(sp) + 80201fce: 7402 ld s0,32(sp) + 80201fd0: 64e2 ld s1,24(sp) + 80201fd2: 6942 ld s2,16(sp) + 80201fd4: 69a2 ld s3,8(sp) + 80201fd6: 6a02 ld s4,0(sp) + 80201fd8: 6145 addi sp,sp,48 + 80201fda: 8082 ret + +0000000080201fdc <clone>: int clone(int flags, void *stack, int *ptid, uint64 tls, int *ctid){ - 80201fe2: 7139 addi sp,sp,-64 - 80201fe4: fc06 sd ra,56(sp) - 80201fe6: f822 sd s0,48(sp) - 80201fe8: f426 sd s1,40(sp) - 80201fea: f04a sd s2,32(sp) - 80201fec: ec4e sd s3,24(sp) - 80201fee: e852 sd s4,16(sp) - 80201ff0: e456 sd s5,8(sp) - 80201ff2: 0080 addi s0,sp,64 - 80201ff4: 84aa mv s1,a0 - 80201ff6: 892e mv s2,a1 + 80201fdc: 7139 addi sp,sp,-64 + 80201fde: fc06 sd ra,56(sp) + 80201fe0: f822 sd s0,48(sp) + 80201fe2: f426 sd s1,40(sp) + 80201fe4: f04a sd s2,32(sp) + 80201fe6: ec4e sd s3,24(sp) + 80201fe8: e852 sd s4,16(sp) + 80201fea: e456 sd s5,8(sp) + 80201fec: 0080 addi s0,sp,64 + 80201fee: 84aa mv s1,a0 + 80201ff0: 892e mv s2,a1 struct proc *p = myproc(); - 80201ff8: 00000097 auipc ra,0x0 - 80201ffc: a44080e7 jalr -1468(ra) # 80201a3c <myproc> - 80202000: 8aaa mv s5,a0 + 80201ff2: 00000097 auipc ra,0x0 + 80201ff6: a4a080e7 jalr -1462(ra) # 80201a3c <myproc> + 80201ffa: 8aaa mv s5,a0 if((np = allocproc()) == NULL){ - 80202002: 00000097 auipc ra,0x0 - 80202006: c76080e7 jalr -906(ra) # 80201c78 <allocproc> - 8020200a: 10050763 beqz a0,80202118 <clone+0x136> - 8020200e: 8a2a mv s4,a0 + 80201ffc: 00000097 auipc ra,0x0 + 80202000: c7c080e7 jalr -900(ra) # 80201c78 <allocproc> + 80202004: 10050763 beqz a0,80202112 <clone+0x136> + 80202008: 8a2a mv s4,a0 if(uvmcopy(p->pagetable, np->pagetable, np->kpagetable, p->sz) < 0){ - 80202010: 048ab683 ld a3,72(s5) - 80202014: 6d30 ld a2,88(a0) - 80202016: 692c ld a1,80(a0) - 80202018: 050ab503 ld a0,80(s5) - 8020201c: fffff097 auipc ra,0xfffff - 80202020: 18a080e7 jalr 394(ra) # 802011a6 <uvmcopy> - 80202024: 06054c63 bltz a0,8020209c <clone+0xba> + 8020200a: 048ab683 ld a3,72(s5) + 8020200e: 6d30 ld a2,88(a0) + 80202010: 692c ld a1,80(a0) + 80202012: 050ab503 ld a0,80(s5) + 80202016: fffff097 auipc ra,0xfffff + 8020201a: 190080e7 jalr 400(ra) # 802011a6 <uvmcopy> + 8020201e: 06054c63 bltz a0,80202096 <clone+0xba> np->sz = p->sz; - 80202028: 048ab783 ld a5,72(s5) - 8020202c: 04fa3423 sd a5,72(s4) + 80202022: 048ab783 ld a5,72(s5) + 80202026: 04fa3423 sd a5,72(s4) if (flags & 17) { - 80202030: 0114f793 andi a5,s1,17 + 8020202a: 0114f793 andi a5,s1,17 np->parent = NULL; - 80202034: 00f037b3 snez a5,a5 - 80202038: 40f007b3 neg a5,a5 - 8020203c: 00faf7b3 and a5,s5,a5 - 80202040: 02fa3023 sd a5,32(s4) + 8020202e: 00f037b3 snez a5,a5 + 80202032: 40f007b3 neg a5,a5 + 80202036: 00faf7b3 and a5,s5,a5 + 8020203a: 02fa3023 sd a5,32(s4) np->tmask = p->tmask; - 80202044: 418aa783 lw a5,1048(s5) - 80202048: 40fa2c23 sw a5,1048(s4) + 8020203e: 418aa783 lw a5,1048(s5) + 80202042: 40fa2c23 sw a5,1048(s4) *(np->trapframe) = *(p->trapframe); - 8020204c: 060ab683 ld a3,96(s5) - 80202050: 87b6 mv a5,a3 - 80202052: 060a3703 ld a4,96(s4) - 80202056: 12068693 addi a3,a3,288 - 8020205a: 0007b803 ld a6,0(a5) - 8020205e: 6788 ld a0,8(a5) - 80202060: 6b8c ld a1,16(a5) - 80202062: 6f90 ld a2,24(a5) - 80202064: 01073023 sd a6,0(a4) - 80202068: e708 sd a0,8(a4) - 8020206a: eb0c sd a1,16(a4) - 8020206c: ef10 sd a2,24(a4) - 8020206e: 02078793 addi a5,a5,32 - 80202072: 02070713 addi a4,a4,32 - 80202076: fed792e3 bne a5,a3,8020205a <clone+0x78> + 80202046: 060ab683 ld a3,96(s5) + 8020204a: 87b6 mv a5,a3 + 8020204c: 060a3703 ld a4,96(s4) + 80202050: 12068693 addi a3,a3,288 + 80202054: 0007b803 ld a6,0(a5) + 80202058: 6788 ld a0,8(a5) + 8020205a: 6b8c ld a1,16(a5) + 8020205c: 6f90 ld a2,24(a5) + 8020205e: 01073023 sd a6,0(a4) + 80202062: e708 sd a0,8(a4) + 80202064: eb0c sd a1,16(a4) + 80202066: ef10 sd a2,24(a4) + 80202068: 02078793 addi a5,a5,32 + 8020206c: 02070713 addi a4,a4,32 + 80202070: fed792e3 bne a5,a3,80202054 <clone+0x78> np->trapframe->a0 = 0; - 8020207a: 060a3783 ld a5,96(s4) - 8020207e: 0607b823 sd zero,112(a5) + 80202074: 060a3783 ld a5,96(s4) + 80202078: 0607b823 sd zero,112(a5) if (stack != 0) { - 80202082: 00090663 beqz s2,8020208e <clone+0xac> + 8020207c: 00090663 beqz s2,80202088 <clone+0xac> np->trapframe->sp = (uint64)stack; - 80202086: 060a3783 ld a5,96(s4) - 8020208a: 0327b823 sd s2,48(a5) + 80202080: 060a3783 ld a5,96(s4) + 80202084: 0327b823 sd s2,48(a5) for(i = 0; i < NOFILE; i++) - 8020208e: 0d8a8493 addi s1,s5,216 - 80202092: 0d8a0913 addi s2,s4,216 - 80202096: 400a8993 addi s3,s5,1024 - 8020209a: a03d j 802020c8 <clone+0xe6> + 80202088: 0d8a8493 addi s1,s5,216 + 8020208c: 0d8a0913 addi s2,s4,216 + 80202090: 400a8993 addi s3,s5,1024 + 80202094: a03d j 802020c2 <clone+0xe6> freeproc(np); - 8020209c: 8552 mv a0,s4 - 8020209e: 00000097 auipc ra,0x0 - 802020a2: b70080e7 jalr -1168(ra) # 80201c0e <freeproc> + 80202096: 8552 mv a0,s4 + 80202098: 00000097 auipc ra,0x0 + 8020209c: b76080e7 jalr -1162(ra) # 80201c0e <freeproc> release(&np->lock); - 802020a6: 8552 mv a0,s4 - 802020a8: ffffe097 auipc ra,0xffffe - 802020ac: 672080e7 jalr 1650(ra) # 8020071a <release> + 802020a0: 8552 mv a0,s4 + 802020a2: ffffe097 auipc ra,0xffffe + 802020a6: 678080e7 jalr 1656(ra) # 8020071a <release> return -1; - 802020b0: 54fd li s1,-1 - 802020b2: a889 j 80202104 <clone+0x122> + 802020aa: 54fd li s1,-1 + 802020ac: a889 j 802020fe <clone+0x122> np->ofile[i] = filedup(p->ofile[i]); - 802020b4: 00002097 auipc ra,0x2 - 802020b8: f40080e7 jalr -192(ra) # 80203ff4 <filedup> - 802020bc: 00a93023 sd a0,0(s2) + 802020ae: 00002097 auipc ra,0x2 + 802020b2: f4a080e7 jalr -182(ra) # 80203ff8 <filedup> + 802020b6: 00a93023 sd a0,0(s2) for(i = 0; i < NOFILE; i++) - 802020c0: 04a1 addi s1,s1,8 - 802020c2: 0921 addi s2,s2,8 - 802020c4: 01348563 beq s1,s3,802020ce <clone+0xec> + 802020ba: 04a1 addi s1,s1,8 + 802020bc: 0921 addi s2,s2,8 + 802020be: 01348563 beq s1,s3,802020c8 <clone+0xec> if(p->ofile[i]) - 802020c8: 6088 ld a0,0(s1) - 802020ca: f56d bnez a0,802020b4 <clone+0xd2> - 802020cc: bfd5 j 802020c0 <clone+0xde> + 802020c2: 6088 ld a0,0(s1) + 802020c4: f56d bnez a0,802020ae <clone+0xd2> + 802020c6: bfd5 j 802020ba <clone+0xde> np->cwd = edup(p->cwd); - 802020ce: 400ab503 ld a0,1024(s5) - 802020d2: 00005097 auipc ra,0x5 - 802020d6: d8e080e7 jalr -626(ra) # 80206e60 <edup> - 802020da: 40aa3023 sd a0,1024(s4) + 802020c8: 400ab503 ld a0,1024(s5) + 802020cc: 00005097 auipc ra,0x5 + 802020d0: d54080e7 jalr -684(ra) # 80206e20 <edup> + 802020d4: 40aa3023 sd a0,1024(s4) safestrcpy(np->name, p->name, sizeof(p->name)); - 802020de: 4641 li a2,16 - 802020e0: 408a8593 addi a1,s5,1032 - 802020e4: 408a0513 addi a0,s4,1032 - 802020e8: ffffe097 auipc ra,0xffffe - 802020ec: 7cc080e7 jalr 1996(ra) # 802008b4 <safestrcpy> + 802020d8: 4641 li a2,16 + 802020da: 408a8593 addi a1,s5,1032 + 802020de: 408a0513 addi a0,s4,1032 + 802020e2: ffffe097 auipc ra,0xffffe + 802020e6: 7d2080e7 jalr 2002(ra) # 802008b4 <safestrcpy> pid = np->pid; - 802020f0: 038a2483 lw s1,56(s4) + 802020ea: 038a2483 lw s1,56(s4) np->state = RUNNABLE; - 802020f4: 4789 li a5,2 - 802020f6: 00fa2c23 sw a5,24(s4) + 802020ee: 4789 li a5,2 + 802020f0: 00fa2c23 sw a5,24(s4) release(&np->lock); - 802020fa: 8552 mv a0,s4 - 802020fc: ffffe097 auipc ra,0xffffe - 80202100: 61e080e7 jalr 1566(ra) # 8020071a <release> + 802020f4: 8552 mv a0,s4 + 802020f6: ffffe097 auipc ra,0xffffe + 802020fa: 624080e7 jalr 1572(ra) # 8020071a <release> } - 80202104: 8526 mv a0,s1 - 80202106: 70e2 ld ra,56(sp) - 80202108: 7442 ld s0,48(sp) - 8020210a: 74a2 ld s1,40(sp) - 8020210c: 7902 ld s2,32(sp) - 8020210e: 69e2 ld s3,24(sp) - 80202110: 6a42 ld s4,16(sp) - 80202112: 6aa2 ld s5,8(sp) - 80202114: 6121 addi sp,sp,64 - 80202116: 8082 ret + 802020fe: 8526 mv a0,s1 + 80202100: 70e2 ld ra,56(sp) + 80202102: 7442 ld s0,48(sp) + 80202104: 74a2 ld s1,40(sp) + 80202106: 7902 ld s2,32(sp) + 80202108: 69e2 ld s3,24(sp) + 8020210a: 6a42 ld s4,16(sp) + 8020210c: 6aa2 ld s5,8(sp) + 8020210e: 6121 addi sp,sp,64 + 80202110: 8082 ret return -1; - 80202118: 54fd li s1,-1 - 8020211a: b7ed j 80202104 <clone+0x122> + 80202112: 54fd li s1,-1 + 80202114: b7ed j 802020fe <clone+0x122> -000000008020211c <scheduler>: +0000000080202116 <scheduler>: { - 8020211c: 715d addi sp,sp,-80 - 8020211e: e486 sd ra,72(sp) - 80202120: e0a2 sd s0,64(sp) - 80202122: fc26 sd s1,56(sp) - 80202124: f84a sd s2,48(sp) - 80202126: f44e sd s3,40(sp) - 80202128: f052 sd s4,32(sp) - 8020212a: ec56 sd s5,24(sp) - 8020212c: e85a sd s6,16(sp) - 8020212e: e45e sd s7,8(sp) - 80202130: e062 sd s8,0(sp) - 80202132: 0880 addi s0,sp,80 - 80202134: 8792 mv a5,tp + 80202116: 715d addi sp,sp,-80 + 80202118: e486 sd ra,72(sp) + 8020211a: e0a2 sd s0,64(sp) + 8020211c: fc26 sd s1,56(sp) + 8020211e: f84a sd s2,48(sp) + 80202120: f44e sd s3,40(sp) + 80202122: f052 sd s4,32(sp) + 80202124: ec56 sd s5,24(sp) + 80202126: e85a sd s6,16(sp) + 80202128: e45e sd s7,8(sp) + 8020212a: e062 sd s8,0(sp) + 8020212c: 0880 addi s0,sp,80 + 8020212e: 8792 mv a5,tp int id = r_tp(); - 80202136: 2781 sext.w a5,a5 + 80202130: 2781 sext.w a5,a5 c->proc = 0; - 80202138: 00779b13 slli s6,a5,0x7 - 8020213c: 00014717 auipc a4,0x14 - 80202140: f2470713 addi a4,a4,-220 # 80216060 <pid_lock> - 80202144: 975a add a4,a4,s6 - 80202146: 00073c23 sd zero,24(a4) + 80202132: 00779b13 slli s6,a5,0x7 + 80202136: 00014717 auipc a4,0x14 + 8020213a: f2a70713 addi a4,a4,-214 # 80216060 <pid_lock> + 8020213e: 975a add a4,a4,s6 + 80202140: 00073c23 sd zero,24(a4) swtch(&c->context, &p->context); - 8020214a: 00014717 auipc a4,0x14 - 8020214e: f3670713 addi a4,a4,-202 # 80216080 <cpus+0x8> - 80202152: 9b3a add s6,s6,a4 + 80202144: 00014717 auipc a4,0x14 + 80202148: f3c70713 addi a4,a4,-196 # 80216080 <cpus+0x8> + 8020214c: 9b3a add s6,s6,a4 c->proc = p; - 80202154: 079e slli a5,a5,0x7 - 80202156: 00014a97 auipc s5,0x14 - 8020215a: f0aa8a93 addi s5,s5,-246 # 80216060 <pid_lock> - 8020215e: 9abe add s5,s5,a5 + 8020214e: 079e slli a5,a5,0x7 + 80202150: 00014a97 auipc s5,0x14 + 80202154: f10a8a93 addi s5,s5,-240 # 80216060 <pid_lock> + 80202158: 9abe add s5,s5,a5 w_satp(MAKE_SATP(p->kpagetable)); - 80202160: 5a7d li s4,-1 - 80202162: 1a7e slli s4,s4,0x3f + 8020215a: 5a7d li s4,-1 + 8020215c: 1a7e slli s4,s4,0x3f w_satp(MAKE_SATP(kernel_pagetable)); - 80202164: 0000bb97 auipc s7,0xb - 80202168: efcbbb83 ld s7,-260(s7) # 8020d060 <_GLOBAL_OFFSET_TABLE_+0x48> - 8020216c: a8a5 j 802021e4 <scheduler+0xc8> + 8020215e: 0000bb97 auipc s7,0xb + 80202162: f02bbb83 ld s7,-254(s7) # 8020d060 <_GLOBAL_OFFSET_TABLE_+0x48> + 80202166: a8a5 j 802021de <scheduler+0xc8> release(&p->lock); - 8020216e: 8526 mv a0,s1 - 80202170: ffffe097 auipc ra,0xffffe - 80202174: 5aa080e7 jalr 1450(ra) # 8020071a <release> + 80202168: 8526 mv a0,s1 + 8020216a: ffffe097 auipc ra,0xffffe + 8020216e: 5b0080e7 jalr 1456(ra) # 8020071a <release> for(p = proc; p < &proc[NPROC]; p++) { - 80202178: 74848493 addi s1,s1,1864 - 8020217c: 05248a63 beq s1,s2,802021d0 <scheduler+0xb4> + 80202172: 74848493 addi s1,s1,1864 + 80202176: 05248a63 beq s1,s2,802021ca <scheduler+0xb4> acquire(&p->lock); - 80202180: 8526 mv a0,s1 - 80202182: ffffe097 auipc ra,0xffffe - 80202186: 544080e7 jalr 1348(ra) # 802006c6 <acquire> + 8020217a: 8526 mv a0,s1 + 8020217c: ffffe097 auipc ra,0xffffe + 80202180: 54a080e7 jalr 1354(ra) # 802006c6 <acquire> if(p->state == RUNNABLE) { - 8020218a: 4c9c lw a5,24(s1) - 8020218c: ff3791e3 bne a5,s3,8020216e <scheduler+0x52> + 80202184: 4c9c lw a5,24(s1) + 80202186: ff3791e3 bne a5,s3,80202168 <scheduler+0x52> p->state = RUNNING; - 80202190: 478d li a5,3 - 80202192: cc9c sw a5,24(s1) + 8020218a: 478d li a5,3 + 8020218c: cc9c sw a5,24(s1) c->proc = p; - 80202194: 009abc23 sd s1,24(s5) + 8020218e: 009abc23 sd s1,24(s5) w_satp(MAKE_SATP(p->kpagetable)); - 80202198: 6cbc ld a5,88(s1) - 8020219a: 83b1 srli a5,a5,0xc - 8020219c: 0147e7b3 or a5,a5,s4 + 80202192: 6cbc ld a5,88(s1) + 80202194: 83b1 srli a5,a5,0xc + 80202196: 0147e7b3 or a5,a5,s4 asm volatile("csrw satp, %0" : : "r" (x)); - 802021a0: 18079073 csrw satp,a5 + 8020219a: 18079073 csrw satp,a5 asm volatile("sfence.vma"); - 802021a4: 12000073 sfence.vma + 8020219e: 12000073 sfence.vma swtch(&c->context, &p->context); - 802021a8: 06848593 addi a1,s1,104 - 802021ac: 855a mv a0,s6 - 802021ae: 00000097 auipc ra,0x0 - 802021b2: 77a080e7 jalr 1914(ra) # 80202928 <swtch> + 802021a2: 06848593 addi a1,s1,104 + 802021a6: 855a mv a0,s6 + 802021a8: 00000097 auipc ra,0x0 + 802021ac: 77a080e7 jalr 1914(ra) # 80202922 <swtch> w_satp(MAKE_SATP(kernel_pagetable)); - 802021b6: 000bb783 ld a5,0(s7) - 802021ba: 83b1 srli a5,a5,0xc - 802021bc: 0147e7b3 or a5,a5,s4 + 802021b0: 000bb783 ld a5,0(s7) + 802021b4: 83b1 srli a5,a5,0xc + 802021b6: 0147e7b3 or a5,a5,s4 asm volatile("csrw satp, %0" : : "r" (x)); - 802021c0: 18079073 csrw satp,a5 + 802021ba: 18079073 csrw satp,a5 asm volatile("sfence.vma"); - 802021c4: 12000073 sfence.vma + 802021be: 12000073 sfence.vma c->proc = 0; - 802021c8: 000abc23 sd zero,24(s5) + 802021c2: 000abc23 sd zero,24(s5) found = 1; - 802021cc: 4c05 li s8,1 - 802021ce: b745 j 8020216e <scheduler+0x52> + 802021c6: 4c05 li s8,1 + 802021c8: b745 j 80202168 <scheduler+0x52> if(found == 0) { - 802021d0: 000c1a63 bnez s8,802021e4 <scheduler+0xc8> + 802021ca: 000c1a63 bnez s8,802021de <scheduler+0xc8> asm volatile("csrr %0, sstatus" : "=r" (x) ); - 802021d4: 100027f3 csrr a5,sstatus + 802021ce: 100027f3 csrr a5,sstatus w_sstatus(r_sstatus() | SSTATUS_SIE); - 802021d8: 0027e793 ori a5,a5,2 + 802021d2: 0027e793 ori a5,a5,2 asm volatile("csrw sstatus, %0" : : "r" (x)); - 802021dc: 10079073 csrw sstatus,a5 + 802021d6: 10079073 csrw sstatus,a5 asm volatile("wfi"); - 802021e0: 10500073 wfi + 802021da: 10500073 wfi asm volatile("csrr %0, sstatus" : "=r" (x) ); - 802021e4: 100027f3 csrr a5,sstatus + 802021de: 100027f3 csrr a5,sstatus w_sstatus(r_sstatus() | SSTATUS_SIE); - 802021e8: 0027e793 ori a5,a5,2 + 802021e2: 0027e793 ori a5,a5,2 asm volatile("csrw sstatus, %0" : : "r" (x)); - 802021ec: 10079073 csrw sstatus,a5 + 802021e6: 10079073 csrw sstatus,a5 int found = 0; - 802021f0: 4c01 li s8,0 + 802021ea: 4c01 li s8,0 for(p = proc; p < &proc[NPROC]; p++) { - 802021f2: 00014497 auipc s1,0x14 - 802021f6: f8e48493 addi s1,s1,-114 # 80216180 <proc> + 802021ec: 00014497 auipc s1,0x14 + 802021f0: f9448493 addi s1,s1,-108 # 80216180 <proc> if(p->state == RUNNABLE) { - 802021fa: 4989 li s3,2 + 802021f4: 4989 li s3,2 for(p = proc; p < &proc[NPROC]; p++) { - 802021fc: 0002b917 auipc s2,0x2b - 80202200: b9490913 addi s2,s2,-1132 # 8022cd90 <syscall_counts> - 80202204: bfb5 j 80202180 <scheduler+0x64> + 802021f6: 0002b917 auipc s2,0x2b + 802021fa: b9a90913 addi s2,s2,-1126 # 8022cd90 <syscall_counts> + 802021fe: bfb5 j 8020217a <scheduler+0x64> -0000000080202206 <sched>: +0000000080202200 <sched>: { - 80202206: 7179 addi sp,sp,-48 - 80202208: f406 sd ra,40(sp) - 8020220a: f022 sd s0,32(sp) - 8020220c: ec26 sd s1,24(sp) - 8020220e: e84a sd s2,16(sp) - 80202210: e44e sd s3,8(sp) - 80202212: 1800 addi s0,sp,48 + 80202200: 7179 addi sp,sp,-48 + 80202202: f406 sd ra,40(sp) + 80202204: f022 sd s0,32(sp) + 80202206: ec26 sd s1,24(sp) + 80202208: e84a sd s2,16(sp) + 8020220a: e44e sd s3,8(sp) + 8020220c: 1800 addi s0,sp,48 struct proc *p = myproc(); - 80202214: 00000097 auipc ra,0x0 - 80202218: 828080e7 jalr -2008(ra) # 80201a3c <myproc> - 8020221c: 84aa mv s1,a0 + 8020220e: 00000097 auipc ra,0x0 + 80202212: 82e080e7 jalr -2002(ra) # 80201a3c <myproc> + 80202216: 84aa mv s1,a0 if(!holding(&p->lock)) - 8020221e: ffffe097 auipc ra,0xffffe - 80202222: 47a080e7 jalr 1146(ra) # 80200698 <holding> - 80202226: c93d beqz a0,8020229c <sched+0x96> + 80202218: ffffe097 auipc ra,0xffffe + 8020221c: 480080e7 jalr 1152(ra) # 80200698 <holding> + 80202220: c93d beqz a0,80202296 <sched+0x96> asm volatile("mv %0, tp" : "=r" (x) ); - 80202228: 8792 mv a5,tp + 80202222: 8792 mv a5,tp if(mycpu()->noff != 1) - 8020222a: 2781 sext.w a5,a5 - 8020222c: 079e slli a5,a5,0x7 - 8020222e: 00014717 auipc a4,0x14 - 80202232: e3270713 addi a4,a4,-462 # 80216060 <pid_lock> - 80202236: 97ba add a5,a5,a4 - 80202238: 0907a703 lw a4,144(a5) - 8020223c: 4785 li a5,1 - 8020223e: 06f71763 bne a4,a5,802022ac <sched+0xa6> + 80202224: 2781 sext.w a5,a5 + 80202226: 079e slli a5,a5,0x7 + 80202228: 00014717 auipc a4,0x14 + 8020222c: e3870713 addi a4,a4,-456 # 80216060 <pid_lock> + 80202230: 97ba add a5,a5,a4 + 80202232: 0907a703 lw a4,144(a5) + 80202236: 4785 li a5,1 + 80202238: 06f71763 bne a4,a5,802022a6 <sched+0xa6> if(p->state == RUNNING) - 80202242: 4c98 lw a4,24(s1) - 80202244: 478d li a5,3 - 80202246: 06f70b63 beq a4,a5,802022bc <sched+0xb6> + 8020223c: 4c98 lw a4,24(s1) + 8020223e: 478d li a5,3 + 80202240: 06f70b63 beq a4,a5,802022b6 <sched+0xb6> asm volatile("csrr %0, sstatus" : "=r" (x) ); - 8020224a: 100027f3 csrr a5,sstatus + 80202244: 100027f3 csrr a5,sstatus return (x & SSTATUS_SIE) != 0; - 8020224e: 8b89 andi a5,a5,2 + 80202248: 8b89 andi a5,a5,2 if(intr_get()) - 80202250: efb5 bnez a5,802022cc <sched+0xc6> + 8020224a: efb5 bnez a5,802022c6 <sched+0xc6> asm volatile("mv %0, tp" : "=r" (x) ); - 80202252: 8792 mv a5,tp + 8020224c: 8792 mv a5,tp intena = mycpu()->intena; - 80202254: 00014917 auipc s2,0x14 - 80202258: e0c90913 addi s2,s2,-500 # 80216060 <pid_lock> - 8020225c: 2781 sext.w a5,a5 - 8020225e: 079e slli a5,a5,0x7 - 80202260: 97ca add a5,a5,s2 - 80202262: 0947a983 lw s3,148(a5) - 80202266: 8792 mv a5,tp + 8020224e: 00014917 auipc s2,0x14 + 80202252: e1290913 addi s2,s2,-494 # 80216060 <pid_lock> + 80202256: 2781 sext.w a5,a5 + 80202258: 079e slli a5,a5,0x7 + 8020225a: 97ca add a5,a5,s2 + 8020225c: 0947a983 lw s3,148(a5) + 80202260: 8792 mv a5,tp swtch(&p->context, &mycpu()->context); - 80202268: 2781 sext.w a5,a5 - 8020226a: 079e slli a5,a5,0x7 - 8020226c: 00014597 auipc a1,0x14 - 80202270: e1458593 addi a1,a1,-492 # 80216080 <cpus+0x8> - 80202274: 95be add a1,a1,a5 - 80202276: 06848513 addi a0,s1,104 - 8020227a: 00000097 auipc ra,0x0 - 8020227e: 6ae080e7 jalr 1710(ra) # 80202928 <swtch> - 80202282: 8792 mv a5,tp + 80202262: 2781 sext.w a5,a5 + 80202264: 079e slli a5,a5,0x7 + 80202266: 00014597 auipc a1,0x14 + 8020226a: e1a58593 addi a1,a1,-486 # 80216080 <cpus+0x8> + 8020226e: 95be add a1,a1,a5 + 80202270: 06848513 addi a0,s1,104 + 80202274: 00000097 auipc ra,0x0 + 80202278: 6ae080e7 jalr 1710(ra) # 80202922 <swtch> + 8020227c: 8792 mv a5,tp mycpu()->intena = intena; - 80202284: 2781 sext.w a5,a5 - 80202286: 079e slli a5,a5,0x7 - 80202288: 993e add s2,s2,a5 - 8020228a: 09392a23 sw s3,148(s2) + 8020227e: 2781 sext.w a5,a5 + 80202280: 079e slli a5,a5,0x7 + 80202282: 993e add s2,s2,a5 + 80202284: 09392a23 sw s3,148(s2) } - 8020228e: 70a2 ld ra,40(sp) - 80202290: 7402 ld s0,32(sp) - 80202292: 64e2 ld s1,24(sp) - 80202294: 6942 ld s2,16(sp) - 80202296: 69a2 ld s3,8(sp) - 80202298: 6145 addi sp,sp,48 - 8020229a: 8082 ret + 80202288: 70a2 ld ra,40(sp) + 8020228a: 7402 ld s0,32(sp) + 8020228c: 64e2 ld s1,24(sp) + 8020228e: 6942 ld s2,16(sp) + 80202290: 69a2 ld s3,8(sp) + 80202292: 6145 addi sp,sp,48 + 80202294: 8082 ret panic("sched p->lock"); - 8020229c: 00008517 auipc a0,0x8 - 802022a0: 3ac50513 addi a0,a0,940 # 8020a648 <digits+0x2c8> - 802022a4: ffffe097 auipc ra,0xffffe - 802022a8: ea0080e7 jalr -352(ra) # 80200144 <panic> + 80202296: 00008517 auipc a0,0x8 + 8020229a: 3b250513 addi a0,a0,946 # 8020a648 <digits+0x2c8> + 8020229e: ffffe097 auipc ra,0xffffe + 802022a2: ea6080e7 jalr -346(ra) # 80200144 <panic> panic("sched locks"); - 802022ac: 00008517 auipc a0,0x8 - 802022b0: 3ac50513 addi a0,a0,940 # 8020a658 <digits+0x2d8> - 802022b4: ffffe097 auipc ra,0xffffe - 802022b8: e90080e7 jalr -368(ra) # 80200144 <panic> + 802022a6: 00008517 auipc a0,0x8 + 802022aa: 3b250513 addi a0,a0,946 # 8020a658 <digits+0x2d8> + 802022ae: ffffe097 auipc ra,0xffffe + 802022b2: e96080e7 jalr -362(ra) # 80200144 <panic> panic("sched running"); - 802022bc: 00008517 auipc a0,0x8 - 802022c0: 3ac50513 addi a0,a0,940 # 8020a668 <digits+0x2e8> - 802022c4: ffffe097 auipc ra,0xffffe - 802022c8: e80080e7 jalr -384(ra) # 80200144 <panic> + 802022b6: 00008517 auipc a0,0x8 + 802022ba: 3b250513 addi a0,a0,946 # 8020a668 <digits+0x2e8> + 802022be: ffffe097 auipc ra,0xffffe + 802022c2: e86080e7 jalr -378(ra) # 80200144 <panic> panic("sched interruptible"); - 802022cc: 00008517 auipc a0,0x8 - 802022d0: 3ac50513 addi a0,a0,940 # 8020a678 <digits+0x2f8> - 802022d4: ffffe097 auipc ra,0xffffe - 802022d8: e70080e7 jalr -400(ra) # 80200144 <panic> + 802022c6: 00008517 auipc a0,0x8 + 802022ca: 3b250513 addi a0,a0,946 # 8020a678 <digits+0x2f8> + 802022ce: ffffe097 auipc ra,0xffffe + 802022d2: e76080e7 jalr -394(ra) # 80200144 <panic> -00000000802022dc <exit>: +00000000802022d6 <exit>: { - 802022dc: 7179 addi sp,sp,-48 - 802022de: f406 sd ra,40(sp) - 802022e0: f022 sd s0,32(sp) - 802022e2: ec26 sd s1,24(sp) - 802022e4: e84a sd s2,16(sp) - 802022e6: e44e sd s3,8(sp) - 802022e8: e052 sd s4,0(sp) - 802022ea: 1800 addi s0,sp,48 - 802022ec: 8a2a mv s4,a0 + 802022d6: 7179 addi sp,sp,-48 + 802022d8: f406 sd ra,40(sp) + 802022da: f022 sd s0,32(sp) + 802022dc: ec26 sd s1,24(sp) + 802022de: e84a sd s2,16(sp) + 802022e0: e44e sd s3,8(sp) + 802022e2: e052 sd s4,0(sp) + 802022e4: 1800 addi s0,sp,48 + 802022e6: 8a2a mv s4,a0 struct proc *p = myproc(); - 802022ee: fffff097 auipc ra,0xfffff - 802022f2: 74e080e7 jalr 1870(ra) # 80201a3c <myproc> - 802022f6: 89aa mv s3,a0 + 802022e8: fffff097 auipc ra,0xfffff + 802022ec: 754080e7 jalr 1876(ra) # 80201a3c <myproc> + 802022f0: 89aa mv s3,a0 if(p == initproc) - 802022f8: 00014797 auipc a5,0x14 - 802022fc: e807b783 ld a5,-384(a5) # 80216178 <initproc> - 80202300: 0d850493 addi s1,a0,216 - 80202304: 40050913 addi s2,a0,1024 - 80202308: 02a79363 bne a5,a0,8020232e <exit+0x52> + 802022f2: 00014797 auipc a5,0x14 + 802022f6: e867b783 ld a5,-378(a5) # 80216178 <initproc> + 802022fa: 0d850493 addi s1,a0,216 + 802022fe: 40050913 addi s2,a0,1024 + 80202302: 02a79363 bne a5,a0,80202328 <exit+0x52> panic("init exiting"); - 8020230c: 00008517 auipc a0,0x8 - 80202310: 38450513 addi a0,a0,900 # 8020a690 <digits+0x310> - 80202314: ffffe097 auipc ra,0xffffe - 80202318: e30080e7 jalr -464(ra) # 80200144 <panic> + 80202306: 00008517 auipc a0,0x8 + 8020230a: 38a50513 addi a0,a0,906 # 8020a690 <digits+0x310> + 8020230e: ffffe097 auipc ra,0xffffe + 80202312: e36080e7 jalr -458(ra) # 80200144 <panic> fileclose(f); - 8020231c: 00002097 auipc ra,0x2 - 80202320: d2a080e7 jalr -726(ra) # 80204046 <fileclose> + 80202316: 00002097 auipc ra,0x2 + 8020231a: d34080e7 jalr -716(ra) # 8020404a <fileclose> p->ofile[fd] = 0; - 80202324: 0004b023 sd zero,0(s1) + 8020231e: 0004b023 sd zero,0(s1) for(int fd = 0; fd < NOFILE; fd++){ - 80202328: 04a1 addi s1,s1,8 - 8020232a: 01248563 beq s1,s2,80202334 <exit+0x58> + 80202322: 04a1 addi s1,s1,8 + 80202324: 01248563 beq s1,s2,8020232e <exit+0x58> if(p->ofile[fd]){ - 8020232e: 6088 ld a0,0(s1) - 80202330: f575 bnez a0,8020231c <exit+0x40> - 80202332: bfdd j 80202328 <exit+0x4c> + 80202328: 6088 ld a0,0(s1) + 8020232a: f575 bnez a0,80202316 <exit+0x40> + 8020232c: bfdd j 80202322 <exit+0x4c> eput(p->cwd); - 80202334: 4009b503 ld a0,1024(s3) - 80202338: 00005097 auipc ra,0x5 - 8020233c: e0a080e7 jalr -502(ra) # 80207142 <eput> + 8020232e: 4009b503 ld a0,1024(s3) + 80202332: 00005097 auipc ra,0x5 + 80202336: dd0080e7 jalr -560(ra) # 80207102 <eput> p->cwd = 0; - 80202340: 4009b023 sd zero,1024(s3) + 8020233a: 4009b023 sd zero,1024(s3) acquire(&initproc->lock); - 80202344: 00014497 auipc s1,0x14 - 80202348: d1c48493 addi s1,s1,-740 # 80216060 <pid_lock> - 8020234c: 1184b503 ld a0,280(s1) - 80202350: ffffe097 auipc ra,0xffffe - 80202354: 376080e7 jalr 886(ra) # 802006c6 <acquire> + 8020233e: 00014497 auipc s1,0x14 + 80202342: d2248493 addi s1,s1,-734 # 80216060 <pid_lock> + 80202346: 1184b503 ld a0,280(s1) + 8020234a: ffffe097 auipc ra,0xffffe + 8020234e: 37c080e7 jalr 892(ra) # 802006c6 <acquire> wakeup1(initproc); - 80202358: 1184b503 ld a0,280(s1) - 8020235c: fffff097 auipc ra,0xfffff - 80202360: 4f4080e7 jalr 1268(ra) # 80201850 <wakeup1> + 80202352: 1184b503 ld a0,280(s1) + 80202356: fffff097 auipc ra,0xfffff + 8020235a: 4fa080e7 jalr 1274(ra) # 80201850 <wakeup1> release(&initproc->lock); - 80202364: 1184b503 ld a0,280(s1) - 80202368: ffffe097 auipc ra,0xffffe - 8020236c: 3b2080e7 jalr 946(ra) # 8020071a <release> + 8020235e: 1184b503 ld a0,280(s1) + 80202362: ffffe097 auipc ra,0xffffe + 80202366: 3b8080e7 jalr 952(ra) # 8020071a <release> acquire(&p->lock); - 80202370: 854e mv a0,s3 - 80202372: ffffe097 auipc ra,0xffffe - 80202376: 354080e7 jalr 852(ra) # 802006c6 <acquire> + 8020236a: 854e mv a0,s3 + 8020236c: ffffe097 auipc ra,0xffffe + 80202370: 35a080e7 jalr 858(ra) # 802006c6 <acquire> struct proc *original_parent = p->parent; - 8020237a: 0209b483 ld s1,32(s3) + 80202374: 0209b483 ld s1,32(s3) release(&p->lock); - 8020237e: 854e mv a0,s3 - 80202380: ffffe097 auipc ra,0xffffe - 80202384: 39a080e7 jalr 922(ra) # 8020071a <release> + 80202378: 854e mv a0,s3 + 8020237a: ffffe097 auipc ra,0xffffe + 8020237e: 3a0080e7 jalr 928(ra) # 8020071a <release> acquire(&original_parent->lock); - 80202388: 8526 mv a0,s1 - 8020238a: ffffe097 auipc ra,0xffffe - 8020238e: 33c080e7 jalr 828(ra) # 802006c6 <acquire> + 80202382: 8526 mv a0,s1 + 80202384: ffffe097 auipc ra,0xffffe + 80202388: 342080e7 jalr 834(ra) # 802006c6 <acquire> acquire(&p->lock); - 80202392: 854e mv a0,s3 - 80202394: ffffe097 auipc ra,0xffffe - 80202398: 332080e7 jalr 818(ra) # 802006c6 <acquire> + 8020238c: 854e mv a0,s3 + 8020238e: ffffe097 auipc ra,0xffffe + 80202392: 338080e7 jalr 824(ra) # 802006c6 <acquire> reparent(p); - 8020239c: 854e mv a0,s3 - 8020239e: 00000097 auipc ra,0x0 - 802023a2: bde080e7 jalr -1058(ra) # 80201f7c <reparent> + 80202396: 854e mv a0,s3 + 80202398: 00000097 auipc ra,0x0 + 8020239c: bde080e7 jalr -1058(ra) # 80201f76 <reparent> wakeup1(original_parent); - 802023a6: 8526 mv a0,s1 - 802023a8: fffff097 auipc ra,0xfffff - 802023ac: 4a8080e7 jalr 1192(ra) # 80201850 <wakeup1> + 802023a0: 8526 mv a0,s1 + 802023a2: fffff097 auipc ra,0xfffff + 802023a6: 4ae080e7 jalr 1198(ra) # 80201850 <wakeup1> p->xstate = status; - 802023b0: 0349aa23 sw s4,52(s3) + 802023aa: 0349aa23 sw s4,52(s3) p->state = ZOMBIE; - 802023b4: 4791 li a5,4 - 802023b6: 00f9ac23 sw a5,24(s3) + 802023ae: 4791 li a5,4 + 802023b0: 00f9ac23 sw a5,24(s3) release(&original_parent->lock); - 802023ba: 8526 mv a0,s1 - 802023bc: ffffe097 auipc ra,0xffffe - 802023c0: 35e080e7 jalr 862(ra) # 8020071a <release> + 802023b4: 8526 mv a0,s1 + 802023b6: ffffe097 auipc ra,0xffffe + 802023ba: 364080e7 jalr 868(ra) # 8020071a <release> sched(); - 802023c4: 00000097 auipc ra,0x0 - 802023c8: e42080e7 jalr -446(ra) # 80202206 <sched> + 802023be: 00000097 auipc ra,0x0 + 802023c2: e42080e7 jalr -446(ra) # 80202200 <sched> panic("zombie exit"); - 802023cc: 00008517 auipc a0,0x8 - 802023d0: 2d450513 addi a0,a0,724 # 8020a6a0 <digits+0x320> - 802023d4: ffffe097 auipc ra,0xffffe - 802023d8: d70080e7 jalr -656(ra) # 80200144 <panic> + 802023c6: 00008517 auipc a0,0x8 + 802023ca: 2da50513 addi a0,a0,730 # 8020a6a0 <digits+0x320> + 802023ce: ffffe097 auipc ra,0xffffe + 802023d2: d76080e7 jalr -650(ra) # 80200144 <panic> -00000000802023dc <yield>: +00000000802023d6 <yield>: { - 802023dc: 1101 addi sp,sp,-32 - 802023de: ec06 sd ra,24(sp) - 802023e0: e822 sd s0,16(sp) - 802023e2: e426 sd s1,8(sp) - 802023e4: 1000 addi s0,sp,32 + 802023d6: 1101 addi sp,sp,-32 + 802023d8: ec06 sd ra,24(sp) + 802023da: e822 sd s0,16(sp) + 802023dc: e426 sd s1,8(sp) + 802023de: 1000 addi s0,sp,32 struct proc *p = myproc(); - 802023e6: fffff097 auipc ra,0xfffff - 802023ea: 656080e7 jalr 1622(ra) # 80201a3c <myproc> - 802023ee: 84aa mv s1,a0 + 802023e0: fffff097 auipc ra,0xfffff + 802023e4: 65c080e7 jalr 1628(ra) # 80201a3c <myproc> + 802023e8: 84aa mv s1,a0 acquire(&p->lock); - 802023f0: ffffe097 auipc ra,0xffffe - 802023f4: 2d6080e7 jalr 726(ra) # 802006c6 <acquire> + 802023ea: ffffe097 auipc ra,0xffffe + 802023ee: 2dc080e7 jalr 732(ra) # 802006c6 <acquire> p->state = RUNNABLE; - 802023f8: 4789 li a5,2 - 802023fa: cc9c sw a5,24(s1) + 802023f2: 4789 li a5,2 + 802023f4: cc9c sw a5,24(s1) sched(); - 802023fc: 00000097 auipc ra,0x0 - 80202400: e0a080e7 jalr -502(ra) # 80202206 <sched> + 802023f6: 00000097 auipc ra,0x0 + 802023fa: e0a080e7 jalr -502(ra) # 80202200 <sched> release(&p->lock); - 80202404: 8526 mv a0,s1 - 80202406: ffffe097 auipc ra,0xffffe - 8020240a: 314080e7 jalr 788(ra) # 8020071a <release> + 802023fe: 8526 mv a0,s1 + 80202400: ffffe097 auipc ra,0xffffe + 80202404: 31a080e7 jalr 794(ra) # 8020071a <release> } - 8020240e: 60e2 ld ra,24(sp) - 80202410: 6442 ld s0,16(sp) - 80202412: 64a2 ld s1,8(sp) - 80202414: 6105 addi sp,sp,32 - 80202416: 8082 ret + 80202408: 60e2 ld ra,24(sp) + 8020240a: 6442 ld s0,16(sp) + 8020240c: 64a2 ld s1,8(sp) + 8020240e: 6105 addi sp,sp,32 + 80202410: 8082 ret -0000000080202418 <sleep>: +0000000080202412 <sleep>: { - 80202418: 7179 addi sp,sp,-48 - 8020241a: f406 sd ra,40(sp) - 8020241c: f022 sd s0,32(sp) - 8020241e: ec26 sd s1,24(sp) - 80202420: e84a sd s2,16(sp) - 80202422: e44e sd s3,8(sp) - 80202424: 1800 addi s0,sp,48 - 80202426: 89aa mv s3,a0 - 80202428: 892e mv s2,a1 + 80202412: 7179 addi sp,sp,-48 + 80202414: f406 sd ra,40(sp) + 80202416: f022 sd s0,32(sp) + 80202418: ec26 sd s1,24(sp) + 8020241a: e84a sd s2,16(sp) + 8020241c: e44e sd s3,8(sp) + 8020241e: 1800 addi s0,sp,48 + 80202420: 89aa mv s3,a0 + 80202422: 892e mv s2,a1 struct proc *p = myproc(); - 8020242a: fffff097 auipc ra,0xfffff - 8020242e: 612080e7 jalr 1554(ra) # 80201a3c <myproc> - 80202432: 84aa mv s1,a0 + 80202424: fffff097 auipc ra,0xfffff + 80202428: 618080e7 jalr 1560(ra) # 80201a3c <myproc> + 8020242c: 84aa mv s1,a0 if(lk != &p->lock){ //DOC: sleeplock0 - 80202434: 05250663 beq a0,s2,80202480 <sleep+0x68> + 8020242e: 05250663 beq a0,s2,8020247a <sleep+0x68> acquire(&p->lock); //DOC: sleeplock1 - 80202438: ffffe097 auipc ra,0xffffe - 8020243c: 28e080e7 jalr 654(ra) # 802006c6 <acquire> + 80202432: ffffe097 auipc ra,0xffffe + 80202436: 294080e7 jalr 660(ra) # 802006c6 <acquire> release(lk); - 80202440: 854a mv a0,s2 - 80202442: ffffe097 auipc ra,0xffffe - 80202446: 2d8080e7 jalr 728(ra) # 8020071a <release> + 8020243a: 854a mv a0,s2 + 8020243c: ffffe097 auipc ra,0xffffe + 80202440: 2de080e7 jalr 734(ra) # 8020071a <release> p->chan = chan; - 8020244a: 0334b423 sd s3,40(s1) + 80202444: 0334b423 sd s3,40(s1) p->state = SLEEPING; - 8020244e: 4785 li a5,1 - 80202450: cc9c sw a5,24(s1) + 80202448: 4785 li a5,1 + 8020244a: cc9c sw a5,24(s1) sched(); - 80202452: 00000097 auipc ra,0x0 - 80202456: db4080e7 jalr -588(ra) # 80202206 <sched> + 8020244c: 00000097 auipc ra,0x0 + 80202450: db4080e7 jalr -588(ra) # 80202200 <sched> p->chan = 0; - 8020245a: 0204b423 sd zero,40(s1) + 80202454: 0204b423 sd zero,40(s1) release(&p->lock); - 8020245e: 8526 mv a0,s1 - 80202460: ffffe097 auipc ra,0xffffe - 80202464: 2ba080e7 jalr 698(ra) # 8020071a <release> + 80202458: 8526 mv a0,s1 + 8020245a: ffffe097 auipc ra,0xffffe + 8020245e: 2c0080e7 jalr 704(ra) # 8020071a <release> acquire(lk); - 80202468: 854a mv a0,s2 - 8020246a: ffffe097 auipc ra,0xffffe - 8020246e: 25c080e7 jalr 604(ra) # 802006c6 <acquire> + 80202462: 854a mv a0,s2 + 80202464: ffffe097 auipc ra,0xffffe + 80202468: 262080e7 jalr 610(ra) # 802006c6 <acquire> } - 80202472: 70a2 ld ra,40(sp) - 80202474: 7402 ld s0,32(sp) - 80202476: 64e2 ld s1,24(sp) - 80202478: 6942 ld s2,16(sp) - 8020247a: 69a2 ld s3,8(sp) - 8020247c: 6145 addi sp,sp,48 - 8020247e: 8082 ret + 8020246c: 70a2 ld ra,40(sp) + 8020246e: 7402 ld s0,32(sp) + 80202470: 64e2 ld s1,24(sp) + 80202472: 6942 ld s2,16(sp) + 80202474: 69a2 ld s3,8(sp) + 80202476: 6145 addi sp,sp,48 + 80202478: 8082 ret p->chan = chan; - 80202480: 03353423 sd s3,40(a0) + 8020247a: 03353423 sd s3,40(a0) p->state = SLEEPING; - 80202484: 4785 li a5,1 - 80202486: cd1c sw a5,24(a0) + 8020247e: 4785 li a5,1 + 80202480: cd1c sw a5,24(a0) sched(); - 80202488: 00000097 auipc ra,0x0 - 8020248c: d7e080e7 jalr -642(ra) # 80202206 <sched> + 80202482: 00000097 auipc ra,0x0 + 80202486: d7e080e7 jalr -642(ra) # 80202200 <sched> p->chan = 0; - 80202490: 0204b423 sd zero,40(s1) + 8020248a: 0204b423 sd zero,40(s1) if(lk != &p->lock){ - 80202494: bff9 j 80202472 <sleep+0x5a> + 8020248e: bff9 j 8020246c <sleep+0x5a> -0000000080202496 <wait>: +0000000080202490 <wait>: { - 80202496: 715d addi sp,sp,-80 - 80202498: e486 sd ra,72(sp) - 8020249a: e0a2 sd s0,64(sp) - 8020249c: fc26 sd s1,56(sp) - 8020249e: f84a sd s2,48(sp) - 802024a0: f44e sd s3,40(sp) - 802024a2: f052 sd s4,32(sp) - 802024a4: ec56 sd s5,24(sp) - 802024a6: e85a sd s6,16(sp) - 802024a8: e45e sd s7,8(sp) - 802024aa: 0880 addi s0,sp,80 - 802024ac: 8b2a mv s6,a0 + 80202490: 715d addi sp,sp,-80 + 80202492: e486 sd ra,72(sp) + 80202494: e0a2 sd s0,64(sp) + 80202496: fc26 sd s1,56(sp) + 80202498: f84a sd s2,48(sp) + 8020249a: f44e sd s3,40(sp) + 8020249c: f052 sd s4,32(sp) + 8020249e: ec56 sd s5,24(sp) + 802024a0: e85a sd s6,16(sp) + 802024a2: e45e sd s7,8(sp) + 802024a4: 0880 addi s0,sp,80 + 802024a6: 8b2a mv s6,a0 struct proc *p = myproc(); - 802024ae: fffff097 auipc ra,0xfffff - 802024b2: 58e080e7 jalr 1422(ra) # 80201a3c <myproc> - 802024b6: 892a mv s2,a0 + 802024a8: fffff097 auipc ra,0xfffff + 802024ac: 594080e7 jalr 1428(ra) # 80201a3c <myproc> + 802024b0: 892a mv s2,a0 acquire(&p->lock); - 802024b8: ffffe097 auipc ra,0xffffe - 802024bc: 20e080e7 jalr 526(ra) # 802006c6 <acquire> + 802024b2: ffffe097 auipc ra,0xffffe + 802024b6: 214080e7 jalr 532(ra) # 802006c6 <acquire> havekids = 0; - 802024c0: 4b81 li s7,0 + 802024ba: 4b81 li s7,0 if(np->state == ZOMBIE){ - 802024c2: 4a11 li s4,4 + 802024bc: 4a11 li s4,4 havekids = 1; - 802024c4: 4a85 li s5,1 + 802024be: 4a85 li s5,1 for(np = proc; np < &proc[NPROC]; np++){ - 802024c6: 0002b997 auipc s3,0x2b - 802024ca: 8ca98993 addi s3,s3,-1846 # 8022cd90 <syscall_counts> + 802024c0: 0002b997 auipc s3,0x2b + 802024c4: 8d098993 addi s3,s3,-1840 # 8022cd90 <syscall_counts> havekids = 0; - 802024ce: 875e mv a4,s7 + 802024c8: 875e mv a4,s7 for(np = proc; np < &proc[NPROC]; np++){ - 802024d0: 00014497 auipc s1,0x14 - 802024d4: cb048493 addi s1,s1,-848 # 80216180 <proc> - 802024d8: a8ad j 80202552 <wait+0xbc> + 802024ca: 00014497 auipc s1,0x14 + 802024ce: cb648493 addi s1,s1,-842 # 80216180 <proc> + 802024d2: a8ad j 8020254c <wait+0xbc> (p->cutime) += (np->utime); - 802024da: 43093783 ld a5,1072(s2) - 802024de: 4204b703 ld a4,1056(s1) - 802024e2: 97ba add a5,a5,a4 - 802024e4: 42f93823 sd a5,1072(s2) + 802024d4: 43093783 ld a5,1072(s2) + 802024d8: 4204b703 ld a4,1056(s1) + 802024dc: 97ba add a5,a5,a4 + 802024de: 42f93823 sd a5,1072(s2) (p->cstime) += (np->stime); - 802024e8: 43893783 ld a5,1080(s2) - 802024ec: 4284b703 ld a4,1064(s1) - 802024f0: 97ba add a5,a5,a4 - 802024f2: 42f93c23 sd a5,1080(s2) + 802024e2: 43893783 ld a5,1080(s2) + 802024e6: 4284b703 ld a4,1064(s1) + 802024ea: 97ba add a5,a5,a4 + 802024ec: 42f93c23 sd a5,1080(s2) pid = np->pid; - 802024f6: 0384a983 lw s3,56(s1) + 802024f0: 0384a983 lw s3,56(s1) if(addr != 0 && copyout2(addr, (char *)&np->xstate, sizeof(np->xstate)) < 0) { - 802024fa: 000b0c63 beqz s6,80202512 <wait+0x7c> - 802024fe: 4611 li a2,4 - 80202500: 03448593 addi a1,s1,52 - 80202504: 855a mv a0,s6 - 80202506: fffff097 auipc ra,0xfffff - 8020250a: e6c080e7 jalr -404(ra) # 80201372 <copyout2> - 8020250e: 02054263 bltz a0,80202532 <wait+0x9c> + 802024f4: 000b0c63 beqz s6,8020250c <wait+0x7c> + 802024f8: 4611 li a2,4 + 802024fa: 03448593 addi a1,s1,52 + 802024fe: 855a mv a0,s6 + 80202500: fffff097 auipc ra,0xfffff + 80202504: e72080e7 jalr -398(ra) # 80201372 <copyout2> + 80202508: 02054263 bltz a0,8020252c <wait+0x9c> freeproc(np); - 80202512: 8526 mv a0,s1 - 80202514: fffff097 auipc ra,0xfffff - 80202518: 6fa080e7 jalr 1786(ra) # 80201c0e <freeproc> + 8020250c: 8526 mv a0,s1 + 8020250e: fffff097 auipc ra,0xfffff + 80202512: 700080e7 jalr 1792(ra) # 80201c0e <freeproc> release(&np->lock); - 8020251c: 8526 mv a0,s1 - 8020251e: ffffe097 auipc ra,0xffffe - 80202522: 1fc080e7 jalr 508(ra) # 8020071a <release> + 80202516: 8526 mv a0,s1 + 80202518: ffffe097 auipc ra,0xffffe + 8020251c: 202080e7 jalr 514(ra) # 8020071a <release> release(&p->lock); - 80202526: 854a mv a0,s2 - 80202528: ffffe097 auipc ra,0xffffe - 8020252c: 1f2080e7 jalr 498(ra) # 8020071a <release> + 80202520: 854a mv a0,s2 + 80202522: ffffe097 auipc ra,0xffffe + 80202526: 1f8080e7 jalr 504(ra) # 8020071a <release> return pid; - 80202530: a8a9 j 8020258a <wait+0xf4> + 8020252a: a8a9 j 80202584 <wait+0xf4> release(&np->lock); - 80202532: 8526 mv a0,s1 - 80202534: ffffe097 auipc ra,0xffffe - 80202538: 1e6080e7 jalr 486(ra) # 8020071a <release> + 8020252c: 8526 mv a0,s1 + 8020252e: ffffe097 auipc ra,0xffffe + 80202532: 1ec080e7 jalr 492(ra) # 8020071a <release> release(&p->lock); - 8020253c: 854a mv a0,s2 - 8020253e: ffffe097 auipc ra,0xffffe - 80202542: 1dc080e7 jalr 476(ra) # 8020071a <release> + 80202536: 854a mv a0,s2 + 80202538: ffffe097 auipc ra,0xffffe + 8020253c: 1e2080e7 jalr 482(ra) # 8020071a <release> return -1; - 80202546: 59fd li s3,-1 - 80202548: a089 j 8020258a <wait+0xf4> + 80202540: 59fd li s3,-1 + 80202542: a089 j 80202584 <wait+0xf4> for(np = proc; np < &proc[NPROC]; np++){ - 8020254a: 74848493 addi s1,s1,1864 - 8020254e: 03348463 beq s1,s3,80202576 <wait+0xe0> + 80202544: 74848493 addi s1,s1,1864 + 80202548: 03348463 beq s1,s3,80202570 <wait+0xe0> if(np->parent == p){ - 80202552: 709c ld a5,32(s1) - 80202554: ff279be3 bne a5,s2,8020254a <wait+0xb4> + 8020254c: 709c ld a5,32(s1) + 8020254e: ff279be3 bne a5,s2,80202544 <wait+0xb4> acquire(&np->lock); - 80202558: 8526 mv a0,s1 - 8020255a: ffffe097 auipc ra,0xffffe - 8020255e: 16c080e7 jalr 364(ra) # 802006c6 <acquire> + 80202552: 8526 mv a0,s1 + 80202554: ffffe097 auipc ra,0xffffe + 80202558: 172080e7 jalr 370(ra) # 802006c6 <acquire> if(np->state == ZOMBIE){ - 80202562: 4c9c lw a5,24(s1) - 80202564: f7478be3 beq a5,s4,802024da <wait+0x44> + 8020255c: 4c9c lw a5,24(s1) + 8020255e: f7478be3 beq a5,s4,802024d4 <wait+0x44> release(&np->lock); - 80202568: 8526 mv a0,s1 - 8020256a: ffffe097 auipc ra,0xffffe - 8020256e: 1b0080e7 jalr 432(ra) # 8020071a <release> + 80202562: 8526 mv a0,s1 + 80202564: ffffe097 auipc ra,0xffffe + 80202568: 1b6080e7 jalr 438(ra) # 8020071a <release> havekids = 1; - 80202572: 8756 mv a4,s5 - 80202574: bfd9 j 8020254a <wait+0xb4> + 8020256c: 8756 mv a4,s5 + 8020256e: bfd9 j 80202544 <wait+0xb4> if(!havekids || p->killed){ - 80202576: c701 beqz a4,8020257e <wait+0xe8> - 80202578: 03092783 lw a5,48(s2) - 8020257c: c39d beqz a5,802025a2 <wait+0x10c> + 80202570: c701 beqz a4,80202578 <wait+0xe8> + 80202572: 03092783 lw a5,48(s2) + 80202576: c39d beqz a5,8020259c <wait+0x10c> release(&p->lock); - 8020257e: 854a mv a0,s2 - 80202580: ffffe097 auipc ra,0xffffe - 80202584: 19a080e7 jalr 410(ra) # 8020071a <release> + 80202578: 854a mv a0,s2 + 8020257a: ffffe097 auipc ra,0xffffe + 8020257e: 1a0080e7 jalr 416(ra) # 8020071a <release> return -1; - 80202588: 59fd li s3,-1 + 80202582: 59fd li s3,-1 } - 8020258a: 854e mv a0,s3 - 8020258c: 60a6 ld ra,72(sp) - 8020258e: 6406 ld s0,64(sp) - 80202590: 74e2 ld s1,56(sp) - 80202592: 7942 ld s2,48(sp) - 80202594: 79a2 ld s3,40(sp) - 80202596: 7a02 ld s4,32(sp) - 80202598: 6ae2 ld s5,24(sp) - 8020259a: 6b42 ld s6,16(sp) - 8020259c: 6ba2 ld s7,8(sp) - 8020259e: 6161 addi sp,sp,80 - 802025a0: 8082 ret + 80202584: 854e mv a0,s3 + 80202586: 60a6 ld ra,72(sp) + 80202588: 6406 ld s0,64(sp) + 8020258a: 74e2 ld s1,56(sp) + 8020258c: 7942 ld s2,48(sp) + 8020258e: 79a2 ld s3,40(sp) + 80202590: 7a02 ld s4,32(sp) + 80202592: 6ae2 ld s5,24(sp) + 80202594: 6b42 ld s6,16(sp) + 80202596: 6ba2 ld s7,8(sp) + 80202598: 6161 addi sp,sp,80 + 8020259a: 8082 ret sleep(p, &p->lock); //DOC: wait-sleep - 802025a2: 85ca mv a1,s2 - 802025a4: 854a mv a0,s2 - 802025a6: 00000097 auipc ra,0x0 - 802025aa: e72080e7 jalr -398(ra) # 80202418 <sleep> + 8020259c: 85ca mv a1,s2 + 8020259e: 854a mv a0,s2 + 802025a0: 00000097 auipc ra,0x0 + 802025a4: e72080e7 jalr -398(ra) # 80202412 <sleep> havekids = 0; - 802025ae: b705 j 802024ce <wait+0x38> + 802025a8: b705 j 802024c8 <wait+0x38> -00000000802025b0 <wait4>: +00000000802025aa <wait4>: { - 802025b0: 7159 addi sp,sp,-112 - 802025b2: f486 sd ra,104(sp) - 802025b4: f0a2 sd s0,96(sp) - 802025b6: eca6 sd s1,88(sp) - 802025b8: e8ca sd s2,80(sp) - 802025ba: e4ce sd s3,72(sp) - 802025bc: e0d2 sd s4,64(sp) - 802025be: fc56 sd s5,56(sp) - 802025c0: f85a sd s6,48(sp) - 802025c2: f45e sd s7,40(sp) - 802025c4: f062 sd s8,32(sp) - 802025c6: ec66 sd s9,24(sp) - 802025c8: 1880 addi s0,sp,112 - 802025ca: 8a2a mv s4,a0 - 802025cc: 8cae mv s9,a1 - 802025ce: 8c32 mv s8,a2 + 802025aa: 7159 addi sp,sp,-112 + 802025ac: f486 sd ra,104(sp) + 802025ae: f0a2 sd s0,96(sp) + 802025b0: eca6 sd s1,88(sp) + 802025b2: e8ca sd s2,80(sp) + 802025b4: e4ce sd s3,72(sp) + 802025b6: e0d2 sd s4,64(sp) + 802025b8: fc56 sd s5,56(sp) + 802025ba: f85a sd s6,48(sp) + 802025bc: f45e sd s7,40(sp) + 802025be: f062 sd s8,32(sp) + 802025c0: ec66 sd s9,24(sp) + 802025c2: 1880 addi s0,sp,112 + 802025c4: 8a2a mv s4,a0 + 802025c6: 8cae mv s9,a1 + 802025c8: 8c32 mv s8,a2 struct proc *p = myproc(); - 802025d0: fffff097 auipc ra,0xfffff - 802025d4: 46c080e7 jalr 1132(ra) # 80201a3c <myproc> - 802025d8: 892a mv s2,a0 + 802025ca: fffff097 auipc ra,0xfffff + 802025ce: 472080e7 jalr 1138(ra) # 80201a3c <myproc> + 802025d2: 892a mv s2,a0 acquire(&p->lock); - 802025da: ffffe097 auipc ra,0xffffe - 802025de: 0ec080e7 jalr 236(ra) # 802006c6 <acquire> + 802025d4: ffffe097 auipc ra,0xffffe + 802025d8: 0f2080e7 jalr 242(ra) # 802006c6 <acquire> if(np->parent == p && (pid == -1 || np->pid == pid)){ - 802025e2: 5afd li s5,-1 + 802025dc: 5afd li s5,-1 if(np->state == ZOMBIE){ - 802025e4: 4b11 li s6,4 + 802025de: 4b11 li s6,4 for(np = proc; np < &proc[NPROC]; np++){ - 802025e6: 0002a997 auipc s3,0x2a - 802025ea: 7aa98993 addi s3,s3,1962 # 8022cd90 <syscall_counts> + 802025e0: 0002a997 auipc s3,0x2a + 802025e4: 7b098993 addi s3,s3,1968 # 8022cd90 <syscall_counts> if(options & 1) { - 802025ee: 001c7c13 andi s8,s8,1 + 802025e8: 001c7c13 andi s8,s8,1 havekids = 0; - 802025f2: 4701 li a4,0 + 802025ec: 4701 li a4,0 for(np = proc; np < &proc[NPROC]; np++){ - 802025f4: 00014497 auipc s1,0x14 - 802025f8: b8c48493 addi s1,s1,-1140 # 80216180 <proc> + 802025ee: 00014497 auipc s1,0x14 + 802025f2: b9248493 addi s1,s1,-1134 # 80216180 <proc> havekids = 1; - 802025fc: 4b85 li s7,1 - 802025fe: a01d j 80202624 <wait4+0x74> + 802025f6: 4b85 li s7,1 + 802025f8: a01d j 8020261e <wait4+0x74> acquire(&np->lock); - 80202600: 8526 mv a0,s1 - 80202602: ffffe097 auipc ra,0xffffe - 80202606: 0c4080e7 jalr 196(ra) # 802006c6 <acquire> + 802025fa: 8526 mv a0,s1 + 802025fc: ffffe097 auipc ra,0xffffe + 80202600: 0ca080e7 jalr 202(ra) # 802006c6 <acquire> if(np->state == ZOMBIE){ - 8020260a: 4c9c lw a5,24(s1) - 8020260c: 03678563 beq a5,s6,80202636 <wait4+0x86> + 80202604: 4c9c lw a5,24(s1) + 80202606: 03678563 beq a5,s6,80202630 <wait4+0x86> release(&np->lock); - 80202610: 8526 mv a0,s1 - 80202612: ffffe097 auipc ra,0xffffe - 80202616: 108080e7 jalr 264(ra) # 8020071a <release> + 8020260a: 8526 mv a0,s1 + 8020260c: ffffe097 auipc ra,0xffffe + 80202610: 10e080e7 jalr 270(ra) # 8020071a <release> havekids = 1; - 8020261a: 875e mv a4,s7 + 80202614: 875e mv a4,s7 for(np = proc; np < &proc[NPROC]; np++){ - 8020261c: 74848493 addi s1,s1,1864 - 80202620: 09348863 beq s1,s3,802026b0 <wait4+0x100> + 80202616: 74848493 addi s1,s1,1864 + 8020261a: 09348863 beq s1,s3,802026aa <wait4+0x100> if(np->parent == p && (pid == -1 || np->pid == pid)){ - 80202624: 709c ld a5,32(s1) - 80202626: ff279be3 bne a5,s2,8020261c <wait4+0x6c> - 8020262a: fd5a0be3 beq s4,s5,80202600 <wait4+0x50> - 8020262e: 5c9c lw a5,56(s1) - 80202630: ff4796e3 bne a5,s4,8020261c <wait4+0x6c> - 80202634: b7f1 j 80202600 <wait4+0x50> + 8020261e: 709c ld a5,32(s1) + 80202620: ff279be3 bne a5,s2,80202616 <wait4+0x6c> + 80202624: fd5a0be3 beq s4,s5,802025fa <wait4+0x50> + 80202628: 5c9c lw a5,56(s1) + 8020262a: ff4796e3 bne a5,s4,80202616 <wait4+0x6c> + 8020262e: b7f1 j 802025fa <wait4+0x50> (p->cutime) += (np->utime); - 80202636: 43093783 ld a5,1072(s2) - 8020263a: 4204b703 ld a4,1056(s1) - 8020263e: 97ba add a5,a5,a4 - 80202640: 42f93823 sd a5,1072(s2) + 80202630: 43093783 ld a5,1072(s2) + 80202634: 4204b703 ld a4,1056(s1) + 80202638: 97ba add a5,a5,a4 + 8020263a: 42f93823 sd a5,1072(s2) (p->cstime) += (np->stime); - 80202644: 43893783 ld a5,1080(s2) - 80202648: 4284b703 ld a4,1064(s1) - 8020264c: 97ba add a5,a5,a4 - 8020264e: 42f93c23 sd a5,1080(s2) + 8020263e: 43893783 ld a5,1080(s2) + 80202642: 4284b703 ld a4,1064(s1) + 80202646: 97ba add a5,a5,a4 + 80202648: 42f93c23 sd a5,1080(s2) int wstatus = np->xstate << 8; - 80202652: 58dc lw a5,52(s1) - 80202654: 0087979b slliw a5,a5,0x8 - 80202658: f8f42e23 sw a5,-100(s0) + 8020264c: 58dc lw a5,52(s1) + 8020264e: 0087979b slliw a5,a5,0x8 + 80202652: f8f42e23 sw a5,-100(s0) if (status != 0 && copyout2((uint64)status, (char*)&wstatus, sizeof(status)) < 0) { - 8020265c: 000c8c63 beqz s9,80202674 <wait4+0xc4> - 80202660: 4621 li a2,8 - 80202662: f9c40593 addi a1,s0,-100 - 80202666: 8566 mv a0,s9 - 80202668: fffff097 auipc ra,0xfffff - 8020266c: d0a080e7 jalr -758(ra) # 80201372 <copyout2> - 80202670: 02054463 bltz a0,80202698 <wait4+0xe8> + 80202656: 000c8c63 beqz s9,8020266e <wait4+0xc4> + 8020265a: 4621 li a2,8 + 8020265c: f9c40593 addi a1,s0,-100 + 80202660: 8566 mv a0,s9 + 80202662: fffff097 auipc ra,0xfffff + 80202666: d10080e7 jalr -752(ra) # 80201372 <copyout2> + 8020266a: 02054463 bltz a0,80202692 <wait4+0xe8> int ret = np->pid; - 80202674: 0384ab83 lw s7,56(s1) + 8020266e: 0384ab83 lw s7,56(s1) freeproc(np); - 80202678: 8526 mv a0,s1 - 8020267a: fffff097 auipc ra,0xfffff - 8020267e: 594080e7 jalr 1428(ra) # 80201c0e <freeproc> + 80202672: 8526 mv a0,s1 + 80202674: fffff097 auipc ra,0xfffff + 80202678: 59a080e7 jalr 1434(ra) # 80201c0e <freeproc> release(&np->lock); - 80202682: 8526 mv a0,s1 - 80202684: ffffe097 auipc ra,0xffffe - 80202688: 096080e7 jalr 150(ra) # 8020071a <release> + 8020267c: 8526 mv a0,s1 + 8020267e: ffffe097 auipc ra,0xffffe + 80202682: 09c080e7 jalr 156(ra) # 8020071a <release> release(&p->lock); - 8020268c: 854a mv a0,s2 - 8020268e: ffffe097 auipc ra,0xffffe - 80202692: 08c080e7 jalr 140(ra) # 8020071a <release> + 80202686: 854a mv a0,s2 + 80202688: ffffe097 auipc ra,0xffffe + 8020268c: 092080e7 jalr 146(ra) # 8020071a <release> return ret; - 80202696: a80d j 802026c8 <wait4+0x118> + 80202690: a80d j 802026c2 <wait4+0x118> release(&np->lock); - 80202698: 8526 mv a0,s1 - 8020269a: ffffe097 auipc ra,0xffffe - 8020269e: 080080e7 jalr 128(ra) # 8020071a <release> + 80202692: 8526 mv a0,s1 + 80202694: ffffe097 auipc ra,0xffffe + 80202698: 086080e7 jalr 134(ra) # 8020071a <release> release(&p->lock); - 802026a2: 854a mv a0,s2 - 802026a4: ffffe097 auipc ra,0xffffe - 802026a8: 076080e7 jalr 118(ra) # 8020071a <release> + 8020269c: 854a mv a0,s2 + 8020269e: ffffe097 auipc ra,0xffffe + 802026a2: 07c080e7 jalr 124(ra) # 8020071a <release> return -1; - 802026ac: 5bfd li s7,-1 - 802026ae: a829 j 802026c8 <wait4+0x118> + 802026a6: 5bfd li s7,-1 + 802026a8: a829 j 802026c2 <wait4+0x118> if(!havekids || p->killed){ - 802026b0: cb15 beqz a4,802026e4 <wait4+0x134> - 802026b2: 03092b83 lw s7,48(s2) - 802026b6: 020b9763 bnez s7,802026e4 <wait4+0x134> + 802026aa: cb15 beqz a4,802026de <wait4+0x134> + 802026ac: 03092b83 lw s7,48(s2) + 802026b0: 020b9763 bnez s7,802026de <wait4+0x134> if(options & 1) { - 802026ba: 020c0c63 beqz s8,802026f2 <wait4+0x142> + 802026b4: 020c0c63 beqz s8,802026ec <wait4+0x142> release(&p->lock); - 802026be: 854a mv a0,s2 - 802026c0: ffffe097 auipc ra,0xffffe - 802026c4: 05a080e7 jalr 90(ra) # 8020071a <release> + 802026b8: 854a mv a0,s2 + 802026ba: ffffe097 auipc ra,0xffffe + 802026be: 060080e7 jalr 96(ra) # 8020071a <release> } - 802026c8: 855e mv a0,s7 - 802026ca: 70a6 ld ra,104(sp) - 802026cc: 7406 ld s0,96(sp) - 802026ce: 64e6 ld s1,88(sp) - 802026d0: 6946 ld s2,80(sp) - 802026d2: 69a6 ld s3,72(sp) - 802026d4: 6a06 ld s4,64(sp) - 802026d6: 7ae2 ld s5,56(sp) - 802026d8: 7b42 ld s6,48(sp) - 802026da: 7ba2 ld s7,40(sp) - 802026dc: 7c02 ld s8,32(sp) - 802026de: 6ce2 ld s9,24(sp) - 802026e0: 6165 addi sp,sp,112 - 802026e2: 8082 ret + 802026c2: 855e mv a0,s7 + 802026c4: 70a6 ld ra,104(sp) + 802026c6: 7406 ld s0,96(sp) + 802026c8: 64e6 ld s1,88(sp) + 802026ca: 6946 ld s2,80(sp) + 802026cc: 69a6 ld s3,72(sp) + 802026ce: 6a06 ld s4,64(sp) + 802026d0: 7ae2 ld s5,56(sp) + 802026d2: 7b42 ld s6,48(sp) + 802026d4: 7ba2 ld s7,40(sp) + 802026d6: 7c02 ld s8,32(sp) + 802026d8: 6ce2 ld s9,24(sp) + 802026da: 6165 addi sp,sp,112 + 802026dc: 8082 ret release(&p->lock); - 802026e4: 854a mv a0,s2 - 802026e6: ffffe097 auipc ra,0xffffe - 802026ea: 034080e7 jalr 52(ra) # 8020071a <release> + 802026de: 854a mv a0,s2 + 802026e0: ffffe097 auipc ra,0xffffe + 802026e4: 03a080e7 jalr 58(ra) # 8020071a <release> return -1; - 802026ee: 5bfd li s7,-1 - 802026f0: bfe1 j 802026c8 <wait4+0x118> + 802026e8: 5bfd li s7,-1 + 802026ea: bfe1 j 802026c2 <wait4+0x118> sleep(p, &p->lock); //DOC: wait-sleep - 802026f2: 85ca mv a1,s2 - 802026f4: 854a mv a0,s2 - 802026f6: 00000097 auipc ra,0x0 - 802026fa: d22080e7 jalr -734(ra) # 80202418 <sleep> + 802026ec: 85ca mv a1,s2 + 802026ee: 854a mv a0,s2 + 802026f0: 00000097 auipc ra,0x0 + 802026f4: d22080e7 jalr -734(ra) # 80202412 <sleep> havekids = 0; - 802026fe: bdd5 j 802025f2 <wait4+0x42> + 802026f8: bdd5 j 802025ec <wait4+0x42> -0000000080202700 <wakeup>: +00000000802026fa <wakeup>: { - 80202700: 7139 addi sp,sp,-64 - 80202702: fc06 sd ra,56(sp) - 80202704: f822 sd s0,48(sp) - 80202706: f426 sd s1,40(sp) - 80202708: f04a sd s2,32(sp) - 8020270a: ec4e sd s3,24(sp) - 8020270c: e852 sd s4,16(sp) - 8020270e: e456 sd s5,8(sp) - 80202710: 0080 addi s0,sp,64 - 80202712: 8a2a mv s4,a0 + 802026fa: 7139 addi sp,sp,-64 + 802026fc: fc06 sd ra,56(sp) + 802026fe: f822 sd s0,48(sp) + 80202700: f426 sd s1,40(sp) + 80202702: f04a sd s2,32(sp) + 80202704: ec4e sd s3,24(sp) + 80202706: e852 sd s4,16(sp) + 80202708: e456 sd s5,8(sp) + 8020270a: 0080 addi s0,sp,64 + 8020270c: 8a2a mv s4,a0 for(p = proc; p < &proc[NPROC]; p++) { - 80202714: 00014497 auipc s1,0x14 - 80202718: a6c48493 addi s1,s1,-1428 # 80216180 <proc> + 8020270e: 00014497 auipc s1,0x14 + 80202712: a7248493 addi s1,s1,-1422 # 80216180 <proc> if(p->state == SLEEPING && p->chan == chan) { - 8020271c: 4985 li s3,1 + 80202716: 4985 li s3,1 p->state = RUNNABLE; - 8020271e: 4a89 li s5,2 + 80202718: 4a89 li s5,2 for(p = proc; p < &proc[NPROC]; p++) { - 80202720: 0002a917 auipc s2,0x2a - 80202724: 67090913 addi s2,s2,1648 # 8022cd90 <syscall_counts> - 80202728: a811 j 8020273c <wakeup+0x3c> + 8020271a: 0002a917 auipc s2,0x2a + 8020271e: 67690913 addi s2,s2,1654 # 8022cd90 <syscall_counts> + 80202722: a811 j 80202736 <wakeup+0x3c> release(&p->lock); - 8020272a: 8526 mv a0,s1 - 8020272c: ffffe097 auipc ra,0xffffe - 80202730: fee080e7 jalr -18(ra) # 8020071a <release> + 80202724: 8526 mv a0,s1 + 80202726: ffffe097 auipc ra,0xffffe + 8020272a: ff4080e7 jalr -12(ra) # 8020071a <release> for(p = proc; p < &proc[NPROC]; p++) { - 80202734: 74848493 addi s1,s1,1864 - 80202738: 03248063 beq s1,s2,80202758 <wakeup+0x58> + 8020272e: 74848493 addi s1,s1,1864 + 80202732: 03248063 beq s1,s2,80202752 <wakeup+0x58> acquire(&p->lock); - 8020273c: 8526 mv a0,s1 - 8020273e: ffffe097 auipc ra,0xffffe - 80202742: f88080e7 jalr -120(ra) # 802006c6 <acquire> + 80202736: 8526 mv a0,s1 + 80202738: ffffe097 auipc ra,0xffffe + 8020273c: f8e080e7 jalr -114(ra) # 802006c6 <acquire> if(p->state == SLEEPING && p->chan == chan) { - 80202746: 4c9c lw a5,24(s1) - 80202748: ff3791e3 bne a5,s3,8020272a <wakeup+0x2a> - 8020274c: 749c ld a5,40(s1) - 8020274e: fd479ee3 bne a5,s4,8020272a <wakeup+0x2a> + 80202740: 4c9c lw a5,24(s1) + 80202742: ff3791e3 bne a5,s3,80202724 <wakeup+0x2a> + 80202746: 749c ld a5,40(s1) + 80202748: fd479ee3 bne a5,s4,80202724 <wakeup+0x2a> p->state = RUNNABLE; - 80202752: 0154ac23 sw s5,24(s1) - 80202756: bfd1 j 8020272a <wakeup+0x2a> + 8020274c: 0154ac23 sw s5,24(s1) + 80202750: bfd1 j 80202724 <wakeup+0x2a> } - 80202758: 70e2 ld ra,56(sp) - 8020275a: 7442 ld s0,48(sp) - 8020275c: 74a2 ld s1,40(sp) - 8020275e: 7902 ld s2,32(sp) - 80202760: 69e2 ld s3,24(sp) - 80202762: 6a42 ld s4,16(sp) - 80202764: 6aa2 ld s5,8(sp) - 80202766: 6121 addi sp,sp,64 - 80202768: 8082 ret - -000000008020276a <kill>: + 80202752: 70e2 ld ra,56(sp) + 80202754: 7442 ld s0,48(sp) + 80202756: 74a2 ld s1,40(sp) + 80202758: 7902 ld s2,32(sp) + 8020275a: 69e2 ld s3,24(sp) + 8020275c: 6a42 ld s4,16(sp) + 8020275e: 6aa2 ld s5,8(sp) + 80202760: 6121 addi sp,sp,64 + 80202762: 8082 ret + +0000000080202764 <kill>: // Kill the process with the given pid. // The victim won't exit until it tries to return // to user space (see usertrap() in trap.c). int kill(int pid) { - 8020276a: 7179 addi sp,sp,-48 - 8020276c: f406 sd ra,40(sp) - 8020276e: f022 sd s0,32(sp) - 80202770: ec26 sd s1,24(sp) - 80202772: e84a sd s2,16(sp) - 80202774: e44e sd s3,8(sp) - 80202776: 1800 addi s0,sp,48 - 80202778: 892a mv s2,a0 + 80202764: 7179 addi sp,sp,-48 + 80202766: f406 sd ra,40(sp) + 80202768: f022 sd s0,32(sp) + 8020276a: ec26 sd s1,24(sp) + 8020276c: e84a sd s2,16(sp) + 8020276e: e44e sd s3,8(sp) + 80202770: 1800 addi s0,sp,48 + 80202772: 892a mv s2,a0 struct proc *p; for(p = proc; p < &proc[NPROC]; p++){ - 8020277a: 00014497 auipc s1,0x14 - 8020277e: a0648493 addi s1,s1,-1530 # 80216180 <proc> - 80202782: 0002a997 auipc s3,0x2a - 80202786: 60e98993 addi s3,s3,1550 # 8022cd90 <syscall_counts> + 80202774: 00014497 auipc s1,0x14 + 80202778: a0c48493 addi s1,s1,-1524 # 80216180 <proc> + 8020277c: 0002a997 auipc s3,0x2a + 80202780: 61498993 addi s3,s3,1556 # 8022cd90 <syscall_counts> acquire(&p->lock); - 8020278a: 8526 mv a0,s1 - 8020278c: ffffe097 auipc ra,0xffffe - 80202790: f3a080e7 jalr -198(ra) # 802006c6 <acquire> + 80202784: 8526 mv a0,s1 + 80202786: ffffe097 auipc ra,0xffffe + 8020278a: f40080e7 jalr -192(ra) # 802006c6 <acquire> if(p->pid == pid){ - 80202794: 5c9c lw a5,56(s1) - 80202796: 01278d63 beq a5,s2,802027b0 <kill+0x46> + 8020278e: 5c9c lw a5,56(s1) + 80202790: 01278d63 beq a5,s2,802027aa <kill+0x46> p->state = RUNNABLE; } release(&p->lock); return 0; } release(&p->lock); - 8020279a: 8526 mv a0,s1 - 8020279c: ffffe097 auipc ra,0xffffe - 802027a0: f7e080e7 jalr -130(ra) # 8020071a <release> + 80202794: 8526 mv a0,s1 + 80202796: ffffe097 auipc ra,0xffffe + 8020279a: f84080e7 jalr -124(ra) # 8020071a <release> for(p = proc; p < &proc[NPROC]; p++){ - 802027a4: 74848493 addi s1,s1,1864 - 802027a8: ff3491e3 bne s1,s3,8020278a <kill+0x20> + 8020279e: 74848493 addi s1,s1,1864 + 802027a2: ff3491e3 bne s1,s3,80202784 <kill+0x20> } return -1; - 802027ac: 557d li a0,-1 - 802027ae: a821 j 802027c6 <kill+0x5c> + 802027a6: 557d li a0,-1 + 802027a8: a821 j 802027c0 <kill+0x5c> p->killed = 1; - 802027b0: 4785 li a5,1 - 802027b2: d89c sw a5,48(s1) + 802027aa: 4785 li a5,1 + 802027ac: d89c sw a5,48(s1) if(p->state == SLEEPING){ - 802027b4: 4c98 lw a4,24(s1) - 802027b6: 00f70f63 beq a4,a5,802027d4 <kill+0x6a> + 802027ae: 4c98 lw a4,24(s1) + 802027b0: 00f70f63 beq a4,a5,802027ce <kill+0x6a> release(&p->lock); - 802027ba: 8526 mv a0,s1 - 802027bc: ffffe097 auipc ra,0xffffe - 802027c0: f5e080e7 jalr -162(ra) # 8020071a <release> + 802027b4: 8526 mv a0,s1 + 802027b6: ffffe097 auipc ra,0xffffe + 802027ba: f64080e7 jalr -156(ra) # 8020071a <release> return 0; - 802027c4: 4501 li a0,0 + 802027be: 4501 li a0,0 } - 802027c6: 70a2 ld ra,40(sp) - 802027c8: 7402 ld s0,32(sp) - 802027ca: 64e2 ld s1,24(sp) - 802027cc: 6942 ld s2,16(sp) - 802027ce: 69a2 ld s3,8(sp) - 802027d0: 6145 addi sp,sp,48 - 802027d2: 8082 ret + 802027c0: 70a2 ld ra,40(sp) + 802027c2: 7402 ld s0,32(sp) + 802027c4: 64e2 ld s1,24(sp) + 802027c6: 6942 ld s2,16(sp) + 802027c8: 69a2 ld s3,8(sp) + 802027ca: 6145 addi sp,sp,48 + 802027cc: 8082 ret p->state = RUNNABLE; - 802027d4: 4789 li a5,2 - 802027d6: cc9c sw a5,24(s1) - 802027d8: b7cd j 802027ba <kill+0x50> + 802027ce: 4789 li a5,2 + 802027d0: cc9c sw a5,24(s1) + 802027d2: b7cd j 802027b4 <kill+0x50> -00000000802027da <either_copyout>: +00000000802027d4 <either_copyout>: // Copy to either a user address, or kernel address, // depending on usr_dst. // Returns 0 on success, -1 on error. int either_copyout(int user_dst, uint64 dst, void *src, uint64 len) { - 802027da: 1101 addi sp,sp,-32 - 802027dc: ec06 sd ra,24(sp) - 802027de: e822 sd s0,16(sp) - 802027e0: e426 sd s1,8(sp) - 802027e2: 1000 addi s0,sp,32 - 802027e4: 84aa mv s1,a0 - 802027e6: 852e mv a0,a1 - 802027e8: 85b2 mv a1,a2 - 802027ea: 8636 mv a2,a3 + 802027d4: 1101 addi sp,sp,-32 + 802027d6: ec06 sd ra,24(sp) + 802027d8: e822 sd s0,16(sp) + 802027da: e426 sd s1,8(sp) + 802027dc: 1000 addi s0,sp,32 + 802027de: 84aa mv s1,a0 + 802027e0: 852e mv a0,a1 + 802027e2: 85b2 mv a1,a2 + 802027e4: 8636 mv a2,a3 // struct proc *p = myproc(); if(user_dst){ - 802027ec: c891 beqz s1,80202800 <either_copyout+0x26> + 802027e6: c891 beqz s1,802027fa <either_copyout+0x26> // return copyout(p->pagetable, dst, src, len); return copyout2(dst, src, len); - 802027ee: fffff097 auipc ra,0xfffff - 802027f2: b84080e7 jalr -1148(ra) # 80201372 <copyout2> + 802027e8: fffff097 auipc ra,0xfffff + 802027ec: b8a080e7 jalr -1142(ra) # 80201372 <copyout2> } else { memmove((char *)dst, src, len); return 0; } } - 802027f6: 60e2 ld ra,24(sp) - 802027f8: 6442 ld s0,16(sp) - 802027fa: 64a2 ld s1,8(sp) - 802027fc: 6105 addi sp,sp,32 - 802027fe: 8082 ret + 802027f0: 60e2 ld ra,24(sp) + 802027f2: 6442 ld s0,16(sp) + 802027f4: 64a2 ld s1,8(sp) + 802027f6: 6105 addi sp,sp,32 + 802027f8: 8082 ret memmove((char *)dst, src, len); - 80202800: 0006861b sext.w a2,a3 - 80202804: ffffe097 auipc ra,0xffffe - 80202808: fba080e7 jalr -70(ra) # 802007be <memmove> + 802027fa: 0006861b sext.w a2,a3 + 802027fe: ffffe097 auipc ra,0xffffe + 80202802: fc0080e7 jalr -64(ra) # 802007be <memmove> return 0; - 8020280c: 8526 mv a0,s1 - 8020280e: b7e5 j 802027f6 <either_copyout+0x1c> + 80202806: 8526 mv a0,s1 + 80202808: b7e5 j 802027f0 <either_copyout+0x1c> -0000000080202810 <either_copyin>: +000000008020280a <either_copyin>: // Copy from either a user address, or kernel address, // depending on usr_src. // Returns 0 on success, -1 on error. int either_copyin(void *dst, int user_src, uint64 src, uint64 len) { - 80202810: 1101 addi sp,sp,-32 - 80202812: ec06 sd ra,24(sp) - 80202814: e822 sd s0,16(sp) - 80202816: e426 sd s1,8(sp) - 80202818: 1000 addi s0,sp,32 - 8020281a: 84ae mv s1,a1 - 8020281c: 85b2 mv a1,a2 - 8020281e: 8636 mv a2,a3 + 8020280a: 1101 addi sp,sp,-32 + 8020280c: ec06 sd ra,24(sp) + 8020280e: e822 sd s0,16(sp) + 80202810: e426 sd s1,8(sp) + 80202812: 1000 addi s0,sp,32 + 80202814: 84ae mv s1,a1 + 80202816: 85b2 mv a1,a2 + 80202818: 8636 mv a2,a3 // struct proc *p = myproc(); if(user_src){ - 80202820: c891 beqz s1,80202834 <either_copyin+0x24> + 8020281a: c891 beqz s1,8020282e <either_copyin+0x24> // return copyin(p->pagetable, dst, src, len); return copyin2(dst, src, len); - 80202822: fffff097 auipc ra,0xfffff - 80202826: c30080e7 jalr -976(ra) # 80201452 <copyin2> + 8020281c: fffff097 auipc ra,0xfffff + 80202820: c36080e7 jalr -970(ra) # 80201452 <copyin2> } else { memmove(dst, (char*)src, len); return 0; } } - 8020282a: 60e2 ld ra,24(sp) - 8020282c: 6442 ld s0,16(sp) - 8020282e: 64a2 ld s1,8(sp) - 80202830: 6105 addi sp,sp,32 - 80202832: 8082 ret + 80202824: 60e2 ld ra,24(sp) + 80202826: 6442 ld s0,16(sp) + 80202828: 64a2 ld s1,8(sp) + 8020282a: 6105 addi sp,sp,32 + 8020282c: 8082 ret memmove(dst, (char*)src, len); - 80202834: 0006861b sext.w a2,a3 - 80202838: ffffe097 auipc ra,0xffffe - 8020283c: f86080e7 jalr -122(ra) # 802007be <memmove> + 8020282e: 0006861b sext.w a2,a3 + 80202832: ffffe097 auipc ra,0xffffe + 80202836: f8c080e7 jalr -116(ra) # 802007be <memmove> return 0; - 80202840: 8526 mv a0,s1 - 80202842: b7e5 j 8020282a <either_copyin+0x1a> + 8020283a: 8526 mv a0,s1 + 8020283c: b7e5 j 80202824 <either_copyin+0x1a> -0000000080202844 <procdump>: +000000008020283e <procdump>: // Print a process listing to console. For debugging. // Runs when user types ^P on console. // No lock to avoid wedging a stuck machine further. void procdump(void) { - 80202844: 715d addi sp,sp,-80 - 80202846: e486 sd ra,72(sp) - 80202848: e0a2 sd s0,64(sp) - 8020284a: fc26 sd s1,56(sp) - 8020284c: f84a sd s2,48(sp) - 8020284e: f44e sd s3,40(sp) - 80202850: f052 sd s4,32(sp) - 80202852: ec56 sd s5,24(sp) - 80202854: e85a sd s6,16(sp) - 80202856: e45e sd s7,8(sp) - 80202858: 0880 addi s0,sp,80 + 8020283e: 715d addi sp,sp,-80 + 80202840: e486 sd ra,72(sp) + 80202842: e0a2 sd s0,64(sp) + 80202844: fc26 sd s1,56(sp) + 80202846: f84a sd s2,48(sp) + 80202848: f44e sd s3,40(sp) + 8020284a: f052 sd s4,32(sp) + 8020284c: ec56 sd s5,24(sp) + 8020284e: e85a sd s6,16(sp) + 80202850: e45e sd s7,8(sp) + 80202852: 0880 addi s0,sp,80 [ZOMBIE] "zombie" }; struct proc *p; char *state; printf("\nPID\tSTATE\tNAME\tMEM\n"); - 8020285a: 00008517 auipc a0,0x8 - 8020285e: e5e50513 addi a0,a0,-418 # 8020a6b8 <digits+0x338> - 80202862: ffffe097 auipc ra,0xffffe - 80202866: 92c080e7 jalr -1748(ra) # 8020018e <printf> + 80202854: 00008517 auipc a0,0x8 + 80202858: e6450513 addi a0,a0,-412 # 8020a6b8 <digits+0x338> + 8020285c: ffffe097 auipc ra,0xffffe + 80202860: 932080e7 jalr -1742(ra) # 8020018e <printf> for(p = proc; p < &proc[NPROC]; p++){ - 8020286a: 00014497 auipc s1,0x14 - 8020286e: d1e48493 addi s1,s1,-738 # 80216588 <proc+0x408> - 80202872: 0002b917 auipc s2,0x2b - 80202876: 92690913 addi s2,s2,-1754 # 8022d198 <syscall_counts+0x408> + 80202864: 00014497 auipc s1,0x14 + 80202868: d2448493 addi s1,s1,-732 # 80216588 <proc+0x408> + 8020286c: 0002b917 auipc s2,0x2b + 80202870: 92c90913 addi s2,s2,-1748 # 8022d198 <syscall_counts+0x408> if(p->state == UNUSED) continue; if(p->state >= 0 && p->state < NELEM(states) && states[p->state]) - 8020287a: 4b11 li s6,4 + 80202874: 4b11 li s6,4 state = states[p->state]; else state = "???"; - 8020287c: 00008997 auipc s3,0x8 - 80202880: e3498993 addi s3,s3,-460 # 8020a6b0 <digits+0x330> + 80202876: 00008997 auipc s3,0x8 + 8020287a: e3a98993 addi s3,s3,-454 # 8020a6b0 <digits+0x330> printf("%d\t%s\t%s\t%d", p->pid, state, p->name, p->sz); - 80202884: 00008a97 auipc s5,0x8 - 80202888: e4ca8a93 addi s5,s5,-436 # 8020a6d0 <digits+0x350> + 8020287e: 00008a97 auipc s5,0x8 + 80202882: e52a8a93 addi s5,s5,-430 # 8020a6d0 <digits+0x350> printf("\n"); - 8020288c: 00008a17 auipc s4,0x8 - 80202890: 84ca0a13 addi s4,s4,-1972 # 8020a0d8 <etext+0xd8> + 80202886: 00008a17 auipc s4,0x8 + 8020288a: 852a0a13 addi s4,s4,-1966 # 8020a0d8 <etext+0xd8> if(p->state >= 0 && p->state < NELEM(states) && states[p->state]) - 80202894: 00009b97 auipc s7,0x9 - 80202898: 444b8b93 addi s7,s7,1092 # 8020bcd8 <states.0> - 8020289c: a01d j 802028c2 <procdump+0x7e> + 8020288e: 00009b97 auipc s7,0x9 + 80202892: 44ab8b93 addi s7,s7,1098 # 8020bcd8 <states.0> + 80202896: a01d j 802028bc <procdump+0x7e> printf("%d\t%s\t%s\t%d", p->pid, state, p->name, p->sz); - 8020289e: c406b703 ld a4,-960(a3) - 802028a2: c306a583 lw a1,-976(a3) - 802028a6: 8556 mv a0,s5 - 802028a8: ffffe097 auipc ra,0xffffe - 802028ac: 8e6080e7 jalr -1818(ra) # 8020018e <printf> + 80202898: c406b703 ld a4,-960(a3) + 8020289c: c306a583 lw a1,-976(a3) + 802028a0: 8556 mv a0,s5 + 802028a2: ffffe097 auipc ra,0xffffe + 802028a6: 8ec080e7 jalr -1812(ra) # 8020018e <printf> printf("\n"); - 802028b0: 8552 mv a0,s4 - 802028b2: ffffe097 auipc ra,0xffffe - 802028b6: 8dc080e7 jalr -1828(ra) # 8020018e <printf> + 802028aa: 8552 mv a0,s4 + 802028ac: ffffe097 auipc ra,0xffffe + 802028b0: 8e2080e7 jalr -1822(ra) # 8020018e <printf> for(p = proc; p < &proc[NPROC]; p++){ - 802028ba: 74848493 addi s1,s1,1864 - 802028be: 03248263 beq s1,s2,802028e2 <procdump+0x9e> + 802028b4: 74848493 addi s1,s1,1864 + 802028b8: 03248263 beq s1,s2,802028dc <procdump+0x9e> if(p->state == UNUSED) - 802028c2: 86a6 mv a3,s1 - 802028c4: c104a783 lw a5,-1008(s1) - 802028c8: dbed beqz a5,802028ba <procdump+0x76> + 802028bc: 86a6 mv a3,s1 + 802028be: c104a783 lw a5,-1008(s1) + 802028c2: dbed beqz a5,802028b4 <procdump+0x76> state = "???"; - 802028ca: 864e mv a2,s3 + 802028c4: 864e mv a2,s3 if(p->state >= 0 && p->state < NELEM(states) && states[p->state]) - 802028cc: fcfb69e3 bltu s6,a5,8020289e <procdump+0x5a> - 802028d0: 02079713 slli a4,a5,0x20 - 802028d4: 01d75793 srli a5,a4,0x1d - 802028d8: 97de add a5,a5,s7 - 802028da: 6390 ld a2,0(a5) - 802028dc: f269 bnez a2,8020289e <procdump+0x5a> + 802028c6: fcfb69e3 bltu s6,a5,80202898 <procdump+0x5a> + 802028ca: 02079713 slli a4,a5,0x20 + 802028ce: 01d75793 srli a5,a4,0x1d + 802028d2: 97de add a5,a5,s7 + 802028d4: 6390 ld a2,0(a5) + 802028d6: f269 bnez a2,80202898 <procdump+0x5a> state = "???"; - 802028de: 864e mv a2,s3 - 802028e0: bf7d j 8020289e <procdump+0x5a> + 802028d8: 864e mv a2,s3 + 802028da: bf7d j 80202898 <procdump+0x5a> } } - 802028e2: 60a6 ld ra,72(sp) - 802028e4: 6406 ld s0,64(sp) - 802028e6: 74e2 ld s1,56(sp) - 802028e8: 7942 ld s2,48(sp) - 802028ea: 79a2 ld s3,40(sp) - 802028ec: 7a02 ld s4,32(sp) - 802028ee: 6ae2 ld s5,24(sp) - 802028f0: 6b42 ld s6,16(sp) - 802028f2: 6ba2 ld s7,8(sp) - 802028f4: 6161 addi sp,sp,80 - 802028f6: 8082 ret - -00000000802028f8 <procnum>: + 802028dc: 60a6 ld ra,72(sp) + 802028de: 6406 ld s0,64(sp) + 802028e0: 74e2 ld s1,56(sp) + 802028e2: 7942 ld s2,48(sp) + 802028e4: 79a2 ld s3,40(sp) + 802028e6: 7a02 ld s4,32(sp) + 802028e8: 6ae2 ld s5,24(sp) + 802028ea: 6b42 ld s6,16(sp) + 802028ec: 6ba2 ld s7,8(sp) + 802028ee: 6161 addi sp,sp,80 + 802028f0: 8082 ret + +00000000802028f2 <procnum>: uint64 procnum(void) { - 802028f8: 1141 addi sp,sp,-16 - 802028fa: e422 sd s0,8(sp) - 802028fc: 0800 addi s0,sp,16 + 802028f2: 1141 addi sp,sp,-16 + 802028f4: e422 sd s0,8(sp) + 802028f6: 0800 addi s0,sp,16 int num = 0; struct proc *p; for (p = proc; p < &proc[NPROC]; p++) { - 802028fe: 00014797 auipc a5,0x14 - 80202902: 88278793 addi a5,a5,-1918 # 80216180 <proc> + 802028f8: 00014797 auipc a5,0x14 + 802028fc: 88878793 addi a5,a5,-1912 # 80216180 <proc> int num = 0; - 80202906: 4501 li a0,0 + 80202900: 4501 li a0,0 for (p = proc; p < &proc[NPROC]; p++) { - 80202908: 0002a697 auipc a3,0x2a - 8020290c: 48868693 addi a3,a3,1160 # 8022cd90 <syscall_counts> - 80202910: a029 j 8020291a <procnum+0x22> - 80202912: 74878793 addi a5,a5,1864 - 80202916: 00d78663 beq a5,a3,80202922 <procnum+0x2a> + 80202902: 0002a697 auipc a3,0x2a + 80202906: 48e68693 addi a3,a3,1166 # 8022cd90 <syscall_counts> + 8020290a: a029 j 80202914 <procnum+0x22> + 8020290c: 74878793 addi a5,a5,1864 + 80202910: 00d78663 beq a5,a3,8020291c <procnum+0x2a> if (p->state != UNUSED) { - 8020291a: 4f98 lw a4,24(a5) - 8020291c: db7d beqz a4,80202912 <procnum+0x1a> + 80202914: 4f98 lw a4,24(a5) + 80202916: db7d beqz a4,8020290c <procnum+0x1a> num++; - 8020291e: 2505 addiw a0,a0,1 - 80202920: bfcd j 80202912 <procnum+0x1a> + 80202918: 2505 addiw a0,a0,1 + 8020291a: bfcd j 8020290c <procnum+0x1a> } } return num; } - 80202922: 6422 ld s0,8(sp) - 80202924: 0141 addi sp,sp,16 - 80202926: 8082 ret - -0000000080202928 <swtch>: - 80202928: 00153023 sd ra,0(a0) - 8020292c: 00253423 sd sp,8(a0) - 80202930: e900 sd s0,16(a0) - 80202932: ed04 sd s1,24(a0) - 80202934: 03253023 sd s2,32(a0) - 80202938: 03353423 sd s3,40(a0) - 8020293c: 03453823 sd s4,48(a0) - 80202940: 03553c23 sd s5,56(a0) - 80202944: 05653023 sd s6,64(a0) - 80202948: 05753423 sd s7,72(a0) - 8020294c: 05853823 sd s8,80(a0) - 80202950: 05953c23 sd s9,88(a0) - 80202954: 07a53023 sd s10,96(a0) - 80202958: 07b53423 sd s11,104(a0) - 8020295c: 0005b083 ld ra,0(a1) - 80202960: 0085b103 ld sp,8(a1) - 80202964: 6980 ld s0,16(a1) - 80202966: 6d84 ld s1,24(a1) - 80202968: 0205b903 ld s2,32(a1) - 8020296c: 0285b983 ld s3,40(a1) - 80202970: 0305ba03 ld s4,48(a1) - 80202974: 0385ba83 ld s5,56(a1) - 80202978: 0405bb03 ld s6,64(a1) - 8020297c: 0485bb83 ld s7,72(a1) - 80202980: 0505bc03 ld s8,80(a1) - 80202984: 0585bc83 ld s9,88(a1) - 80202988: 0605bd03 ld s10,96(a1) - 8020298c: 0685bd83 ld s11,104(a1) - 80202990: 8082 ret - -0000000080202992 <trapinithart>: + 8020291c: 6422 ld s0,8(sp) + 8020291e: 0141 addi sp,sp,16 + 80202920: 8082 ret + +0000000080202922 <swtch>: + 80202922: 00153023 sd ra,0(a0) + 80202926: 00253423 sd sp,8(a0) + 8020292a: e900 sd s0,16(a0) + 8020292c: ed04 sd s1,24(a0) + 8020292e: 03253023 sd s2,32(a0) + 80202932: 03353423 sd s3,40(a0) + 80202936: 03453823 sd s4,48(a0) + 8020293a: 03553c23 sd s5,56(a0) + 8020293e: 05653023 sd s6,64(a0) + 80202942: 05753423 sd s7,72(a0) + 80202946: 05853823 sd s8,80(a0) + 8020294a: 05953c23 sd s9,88(a0) + 8020294e: 07a53023 sd s10,96(a0) + 80202952: 07b53423 sd s11,104(a0) + 80202956: 0005b083 ld ra,0(a1) + 8020295a: 0085b103 ld sp,8(a1) + 8020295e: 6980 ld s0,16(a1) + 80202960: 6d84 ld s1,24(a1) + 80202962: 0205b903 ld s2,32(a1) + 80202966: 0285b983 ld s3,40(a1) + 8020296a: 0305ba03 ld s4,48(a1) + 8020296e: 0385ba83 ld s5,56(a1) + 80202972: 0405bb03 ld s6,64(a1) + 80202976: 0485bb83 ld s7,72(a1) + 8020297a: 0505bc03 ld s8,80(a1) + 8020297e: 0585bc83 ld s9,88(a1) + 80202982: 0605bd03 ld s10,96(a1) + 80202986: 0685bd83 ld s11,104(a1) + 8020298a: 8082 ret + +000000008020298c <trapinithart>: // } // set up to take exceptions and traps while in the kernel. void trapinithart(void) { - 80202992: 1141 addi sp,sp,-16 - 80202994: e406 sd ra,8(sp) - 80202996: e022 sd s0,0(sp) - 80202998: 0800 addi s0,sp,16 + 8020298c: 1141 addi sp,sp,-16 + 8020298e: e406 sd ra,8(sp) + 80202990: e022 sd s0,0(sp) + 80202992: 0800 addi s0,sp,16 asm volatile("csrw stvec, %0" : : "r" (x)); - 8020299a: 0000a797 auipc a5,0xa - 8020299e: 6967b783 ld a5,1686(a5) # 8020d030 <_GLOBAL_OFFSET_TABLE_+0x18> - 802029a2: 10579073 csrw stvec,a5 + 80202994: 0000a797 auipc a5,0xa + 80202998: 69c7b783 ld a5,1692(a5) # 8020d030 <_GLOBAL_OFFSET_TABLE_+0x18> + 8020299c: 10579073 csrw stvec,a5 asm volatile("csrr %0, sstatus" : "=r" (x) ); - 802029a6: 100027f3 csrr a5,sstatus + 802029a0: 100027f3 csrr a5,sstatus w_stvec((uint64)kernelvec); w_sstatus(r_sstatus() | SSTATUS_SIE); - 802029aa: 0027e793 ori a5,a5,2 + 802029a4: 0027e793 ori a5,a5,2 asm volatile("csrw sstatus, %0" : : "r" (x)); - 802029ae: 10079073 csrw sstatus,a5 + 802029a8: 10079073 csrw sstatus,a5 asm volatile("csrr %0, sie" : "=r" (x) ); - 802029b2: 104027f3 csrr a5,sie + 802029ac: 104027f3 csrr a5,sie // enable supervisor-mode timer interrupts. w_sie(r_sie() | SIE_SEIE | SIE_SSIE | SIE_STIE); - 802029b6: 2227e793 ori a5,a5,546 + 802029b0: 2227e793 ori a5,a5,546 asm volatile("csrw sie, %0" : : "r" (x)); - 802029ba: 10479073 csrw sie,a5 + 802029b4: 10479073 csrw sie,a5 set_next_timeout(); - 802029be: 00003097 auipc ra,0x3 - 802029c2: 4d8080e7 jalr 1240(ra) # 80205e96 <set_next_timeout> + 802029b8: 00003097 auipc ra,0x3 + 802029bc: 49e080e7 jalr 1182(ra) # 80205e56 <set_next_timeout> #ifdef DEBUG printf("trapinithart\n"); #endif } - 802029c6: 60a2 ld ra,8(sp) - 802029c8: 6402 ld s0,0(sp) - 802029ca: 0141 addi sp,sp,16 - 802029cc: 8082 ret + 802029c0: 60a2 ld ra,8(sp) + 802029c2: 6402 ld s0,0(sp) + 802029c4: 0141 addi sp,sp,16 + 802029c6: 8082 ret -00000000802029ce <usertrapret>: +00000000802029c8 <usertrapret>: // // return to user space // void usertrapret(void) { - 802029ce: 1141 addi sp,sp,-16 - 802029d0: e406 sd ra,8(sp) - 802029d2: e022 sd s0,0(sp) - 802029d4: 0800 addi s0,sp,16 + 802029c8: 1141 addi sp,sp,-16 + 802029ca: e406 sd ra,8(sp) + 802029cc: e022 sd s0,0(sp) + 802029ce: 0800 addi s0,sp,16 struct proc *p = myproc(); - 802029d6: fffff097 auipc ra,0xfffff - 802029da: 066080e7 jalr 102(ra) # 80201a3c <myproc> + 802029d0: fffff097 auipc ra,0xfffff + 802029d4: 06c080e7 jalr 108(ra) # 80201a3c <myproc> asm volatile("csrr %0, sstatus" : "=r" (x) ); - 802029de: 100027f3 csrr a5,sstatus + 802029d8: 100027f3 csrr a5,sstatus w_sstatus(r_sstatus() & ~SSTATUS_SIE); - 802029e2: 9bf5 andi a5,a5,-3 + 802029dc: 9bf5 andi a5,a5,-3 asm volatile("csrw sstatus, %0" : : "r" (x)); - 802029e4: 10079073 csrw sstatus,a5 + 802029de: 10079073 csrw sstatus,a5 // kerneltrap() to usertrap(), so turn off interrupts until // we're back in user space, where usertrap() is correct. intr_off(); // send syscalls, interrupts, and exceptions to trampoline.S w_stvec(TRAMPOLINE + (uservec - trampoline)); - 802029e8: 0000a697 auipc a3,0xa - 802029ec: 6386b683 ld a3,1592(a3) # 8020d020 <_GLOBAL_OFFSET_TABLE_+0x8> - 802029f0: 0000a717 auipc a4,0xa - 802029f4: 66073703 ld a4,1632(a4) # 8020d050 <_GLOBAL_OFFSET_TABLE_+0x38> - 802029f8: 8f15 sub a4,a4,a3 - 802029fa: 040007b7 lui a5,0x4000 - 802029fe: 17fd addi a5,a5,-1 # 3ffffff <_entry-0x7c200001> - 80202a00: 07b2 slli a5,a5,0xc - 80202a02: 973e add a4,a4,a5 + 802029e2: 0000a697 auipc a3,0xa + 802029e6: 63e6b683 ld a3,1598(a3) # 8020d020 <_GLOBAL_OFFSET_TABLE_+0x8> + 802029ea: 0000a717 auipc a4,0xa + 802029ee: 66673703 ld a4,1638(a4) # 8020d050 <_GLOBAL_OFFSET_TABLE_+0x38> + 802029f2: 8f15 sub a4,a4,a3 + 802029f4: 040007b7 lui a5,0x4000 + 802029f8: 17fd addi a5,a5,-1 # 3ffffff <_entry-0x7c200001> + 802029fa: 07b2 slli a5,a5,0xc + 802029fc: 973e add a4,a4,a5 asm volatile("csrw stvec, %0" : : "r" (x)); - 80202a04: 10571073 csrw stvec,a4 + 802029fe: 10571073 csrw stvec,a4 // set up trapframe values that uservec will need when // the process next re-enters the kernel. p->trapframe->kernel_satp = r_satp(); // kernel page table - 80202a08: 7138 ld a4,96(a0) + 80202a02: 7138 ld a4,96(a0) asm volatile("csrr %0, satp" : "=r" (x) ); - 80202a0a: 18002673 csrr a2,satp - 80202a0e: e310 sd a2,0(a4) + 80202a04: 18002673 csrr a2,satp + 80202a08: e310 sd a2,0(a4) p->trapframe->kernel_sp = p->kstack + PGSIZE; // process's kernel stack - 80202a10: 7130 ld a2,96(a0) - 80202a12: 6138 ld a4,64(a0) - 80202a14: 6585 lui a1,0x1 - 80202a16: 972e add a4,a4,a1 - 80202a18: e618 sd a4,8(a2) + 80202a0a: 7130 ld a2,96(a0) + 80202a0c: 6138 ld a4,64(a0) + 80202a0e: 6585 lui a1,0x1 + 80202a10: 972e add a4,a4,a1 + 80202a12: e618 sd a4,8(a2) p->trapframe->kernel_trap = (uint64)usertrap; - 80202a1a: 7138 ld a4,96(a0) - 80202a1c: 00000617 auipc a2,0x0 - 80202a20: 0f460613 addi a2,a2,244 # 80202b10 <usertrap> - 80202a24: eb10 sd a2,16(a4) + 80202a14: 7138 ld a4,96(a0) + 80202a16: 00000617 auipc a2,0x0 + 80202a1a: 0f460613 addi a2,a2,244 # 80202b0a <usertrap> + 80202a1e: eb10 sd a2,16(a4) p->trapframe->kernel_hartid = r_tp(); // hartid for cpuid() - 80202a26: 7138 ld a4,96(a0) + 80202a20: 7138 ld a4,96(a0) asm volatile("mv %0, tp" : "=r" (x) ); - 80202a28: 8612 mv a2,tp - 80202a2a: f310 sd a2,32(a4) + 80202a22: 8612 mv a2,tp + 80202a24: f310 sd a2,32(a4) asm volatile("csrr %0, sstatus" : "=r" (x) ); - 80202a2c: 10002773 csrr a4,sstatus + 80202a26: 10002773 csrr a4,sstatus // set up the registers that trampoline.S's sret will use // to get to user space. // set S Previous Privilege mode to User. unsigned long x = r_sstatus(); x &= ~SSTATUS_SPP; // clear SPP to 0 for user mode - 80202a30: eff77713 andi a4,a4,-257 + 80202a2a: eff77713 andi a4,a4,-257 x |= SSTATUS_SPIE; // enable interrupts in user mode - 80202a34: 02076713 ori a4,a4,32 + 80202a2e: 02076713 ori a4,a4,32 asm volatile("csrw sstatus, %0" : : "r" (x)); - 80202a38: 10071073 csrw sstatus,a4 + 80202a32: 10071073 csrw sstatus,a4 w_sstatus(x); // set S Exception Program Counter to the saved user pc. w_sepc(p->trapframe->epc); - 80202a3c: 7138 ld a4,96(a0) + 80202a36: 7138 ld a4,96(a0) asm volatile("csrw sepc, %0" : : "r" (x)); - 80202a3e: 6f18 ld a4,24(a4) - 80202a40: 14171073 csrw sepc,a4 + 80202a38: 6f18 ld a4,24(a4) + 80202a3a: 14171073 csrw sepc,a4 // tell trampoline.S the user page table to switch to. // printf("[usertrapret]p->pagetable: %p\n", p->pagetable); uint64 satp = MAKE_SATP(p->pagetable); - 80202a44: 692c ld a1,80(a0) - 80202a46: 81b1 srli a1,a1,0xc + 80202a3e: 692c ld a1,80(a0) + 80202a40: 81b1 srli a1,a1,0xc // jump to trampoline.S at the top of memory, which // switches to the user page table, restores user registers, // and switches to user mode with sret. uint64 fn = TRAMPOLINE + (userret - trampoline); - 80202a48: 0000a717 auipc a4,0xa - 80202a4c: 5e073703 ld a4,1504(a4) # 8020d028 <_GLOBAL_OFFSET_TABLE_+0x10> - 80202a50: 8f15 sub a4,a4,a3 - 80202a52: 97ba add a5,a5,a4 + 80202a42: 0000a717 auipc a4,0xa + 80202a46: 5e673703 ld a4,1510(a4) # 8020d028 <_GLOBAL_OFFSET_TABLE_+0x10> + 80202a4a: 8f15 sub a4,a4,a3 + 80202a4c: 97ba add a5,a5,a4 ((void (*)(uint64,uint64))fn)(TRAPFRAME, satp); - 80202a54: 577d li a4,-1 - 80202a56: 177e slli a4,a4,0x3f - 80202a58: 8dd9 or a1,a1,a4 - 80202a5a: 02000537 lui a0,0x2000 - 80202a5e: 157d addi a0,a0,-1 # 1ffffff <_entry-0x7e200001> - 80202a60: 0536 slli a0,a0,0xd - 80202a62: 9782 jalr a5 + 80202a4e: 577d li a4,-1 + 80202a50: 177e slli a4,a4,0x3f + 80202a52: 8dd9 or a1,a1,a4 + 80202a54: 02000537 lui a0,0x2000 + 80202a58: 157d addi a0,a0,-1 # 1ffffff <_entry-0x7e200001> + 80202a5a: 0536 slli a0,a0,0xd + 80202a5c: 9782 jalr a5 } - 80202a64: 60a2 ld ra,8(sp) - 80202a66: 6402 ld s0,0(sp) - 80202a68: 0141 addi sp,sp,16 - 80202a6a: 8082 ret + 80202a5e: 60a2 ld ra,8(sp) + 80202a60: 6402 ld s0,0(sp) + 80202a62: 0141 addi sp,sp,16 + 80202a64: 8082 ret -0000000080202a6c <devintr>: +0000000080202a66 <devintr>: // Check if it's an external/software interrupt, // and handle it. // returns 2 if timer interrupt, // 1 if other device, // 0 if not recognized. int devintr(void) { - 80202a6c: 1101 addi sp,sp,-32 - 80202a6e: ec06 sd ra,24(sp) - 80202a70: e822 sd s0,16(sp) - 80202a72: e426 sd s1,8(sp) - 80202a74: 1000 addi s0,sp,32 + 80202a66: 1101 addi sp,sp,-32 + 80202a68: ec06 sd ra,24(sp) + 80202a6a: e822 sd s0,16(sp) + 80202a6c: e426 sd s1,8(sp) + 80202a6e: 1000 addi s0,sp,32 asm volatile("csrr %0, scause" : "=r" (x) ); - 80202a76: 14202773 csrr a4,scause + 80202a70: 14202773 csrr a4,scause uint64 scause = r_scause(); #ifdef QEMU // handle external interrupt if ((0x8000000000000000L & scause) && 9 == (scause & 0xff)) - 80202a7a: 00074d63 bltz a4,80202a94 <devintr+0x28> + 80202a74: 00074d63 bltz a4,80202a8e <devintr+0x28> sbi_set_mie(); #endif return 1; } else if (0x8000000000000005L == scause) { - 80202a7e: 57fd li a5,-1 - 80202a80: 17fe slli a5,a5,0x3f - 80202a82: 0795 addi a5,a5,5 + 80202a78: 57fd li a5,-1 + 80202a7a: 17fe slli a5,a5,0x3f + 80202a7c: 0795 addi a5,a5,5 timer_tick(); return 2; } else { return 0;} - 80202a84: 4501 li a0,0 + 80202a7e: 4501 li a0,0 else if (0x8000000000000005L == scause) { - 80202a86: 06f70f63 beq a4,a5,80202b04 <devintr+0x98> + 80202a80: 06f70f63 beq a4,a5,80202afe <devintr+0x98> } - 80202a8a: 60e2 ld ra,24(sp) - 80202a8c: 6442 ld s0,16(sp) - 80202a8e: 64a2 ld s1,8(sp) - 80202a90: 6105 addi sp,sp,32 - 80202a92: 8082 ret + 80202a84: 60e2 ld ra,24(sp) + 80202a86: 6442 ld s0,16(sp) + 80202a88: 64a2 ld s1,8(sp) + 80202a8a: 6105 addi sp,sp,32 + 80202a8c: 8082 ret if ((0x8000000000000000L & scause) && 9 == (scause & 0xff)) - 80202a94: 0ff77793 zext.b a5,a4 - 80202a98: 46a5 li a3,9 - 80202a9a: fed792e3 bne a5,a3,80202a7e <devintr+0x12> + 80202a8e: 0ff77793 zext.b a5,a4 + 80202a92: 46a5 li a3,9 + 80202a94: fed792e3 bne a5,a3,80202a78 <devintr+0x12> int irq = plic_claim(); - 80202a9e: 00005097 auipc ra,0x5 - 80202aa2: e5c080e7 jalr -420(ra) # 802078fa <plic_claim> - 80202aa6: 84aa mv s1,a0 + 80202a98: 00005097 auipc ra,0x5 + 80202a9c: e22080e7 jalr -478(ra) # 802078ba <plic_claim> + 80202aa0: 84aa mv s1,a0 if (UART_IRQ == irq) { - 80202aa8: 47a9 li a5,10 - 80202aaa: 02f50163 beq a0,a5,80202acc <devintr+0x60> + 80202aa2: 47a9 li a5,10 + 80202aa4: 02f50163 beq a0,a5,80202ac6 <devintr+0x60> else if (DISK_IRQ == irq) { - 80202aae: 4785 li a5,1 - 80202ab0: 04f50563 beq a0,a5,80202afa <devintr+0x8e> + 80202aa8: 4785 li a5,1 + 80202aaa: 04f50563 beq a0,a5,80202af4 <devintr+0x8e> return 1; - 80202ab4: 4505 li a0,1 + 80202aae: 4505 li a0,1 else if (irq) { - 80202ab6: d8f1 beqz s1,80202a8a <devintr+0x1e> + 80202ab0: d8f1 beqz s1,80202a84 <devintr+0x1e> printf("unexpected interrupt irq = %d\n", irq); - 80202ab8: 85a6 mv a1,s1 - 80202aba: 00008517 auipc a0,0x8 - 80202abe: c4e50513 addi a0,a0,-946 # 8020a708 <digits+0x388> - 80202ac2: ffffd097 auipc ra,0xffffd - 80202ac6: 6cc080e7 jalr 1740(ra) # 8020018e <printf> - 80202aca: a821 j 80202ae2 <devintr+0x76> + 80202ab2: 85a6 mv a1,s1 + 80202ab4: 00008517 auipc a0,0x8 + 80202ab8: c5450513 addi a0,a0,-940 # 8020a708 <digits+0x388> + 80202abc: ffffd097 auipc ra,0xffffd + 80202ac0: 6d2080e7 jalr 1746(ra) # 8020018e <printf> + 80202ac4: a821 j 80202adc <devintr+0x76> return SBI_CALL_0(SBI_CONSOLE_GETCHAR); - 80202acc: 4501 li a0,0 - 80202ace: 4581 li a1,0 - 80202ad0: 4601 li a2,0 - 80202ad2: 4681 li a3,0 - 80202ad4: 4889 li a7,2 - 80202ad6: 00000073 ecall - 80202ada: 2501 sext.w a0,a0 + 80202ac6: 4501 li a0,0 + 80202ac8: 4581 li a1,0 + 80202aca: 4601 li a2,0 + 80202acc: 4681 li a3,0 + 80202ace: 4889 li a7,2 + 80202ad0: 00000073 ecall + 80202ad4: 2501 sext.w a0,a0 if (-1 != c) { - 80202adc: 57fd li a5,-1 - 80202ade: 00f51963 bne a0,a5,80202af0 <devintr+0x84> + 80202ad6: 57fd li a5,-1 + 80202ad8: 00f51963 bne a0,a5,80202aea <devintr+0x84> if (irq) { plic_complete(irq);} - 80202ae2: 8526 mv a0,s1 - 80202ae4: 00005097 auipc ra,0x5 - 80202ae8: e40080e7 jalr -448(ra) # 80207924 <plic_complete> + 80202adc: 8526 mv a0,s1 + 80202ade: 00005097 auipc ra,0x5 + 80202ae2: e06080e7 jalr -506(ra) # 802078e4 <plic_complete> return 1; - 80202aec: 4505 li a0,1 - 80202aee: bf71 j 80202a8a <devintr+0x1e> + 80202ae6: 4505 li a0,1 + 80202ae8: bf71 j 80202a84 <devintr+0x1e> consoleintr(c); - 80202af0: 00005097 auipc ra,0x5 - 80202af4: 048080e7 jalr 72(ra) # 80207b38 <consoleintr> - 80202af8: b7ed j 80202ae2 <devintr+0x76> + 80202aea: 00005097 auipc ra,0x5 + 80202aee: 00e080e7 jalr 14(ra) # 80207af8 <consoleintr> + 80202af2: b7ed j 80202adc <devintr+0x76> disk_intr(); - 80202afa: 00003097 auipc ra,0x3 - 80202afe: 45c080e7 jalr 1116(ra) # 80205f56 <disk_intr> - 80202b02: b7c5 j 80202ae2 <devintr+0x76> + 80202af4: 00003097 auipc ra,0x3 + 80202af8: 422080e7 jalr 1058(ra) # 80205f16 <disk_intr> + 80202afc: b7c5 j 80202adc <devintr+0x76> timer_tick(); - 80202b04: 00003097 auipc ra,0x3 - 80202b08: 3b8080e7 jalr 952(ra) # 80205ebc <timer_tick> + 80202afe: 00003097 auipc ra,0x3 + 80202b02: 37e080e7 jalr 894(ra) # 80205e7c <timer_tick> return 2; - 80202b0c: 4509 li a0,2 - 80202b0e: bfb5 j 80202a8a <devintr+0x1e> + 80202b06: 4509 li a0,2 + 80202b08: bfb5 j 80202a84 <devintr+0x1e> -0000000080202b10 <usertrap>: +0000000080202b0a <usertrap>: { - 80202b10: 711d addi sp,sp,-96 - 80202b12: ec86 sd ra,88(sp) - 80202b14: e8a2 sd s0,80(sp) - 80202b16: e4a6 sd s1,72(sp) - 80202b18: e0ca sd s2,64(sp) - 80202b1a: fc4e sd s3,56(sp) - 80202b1c: f852 sd s4,48(sp) - 80202b1e: f456 sd s5,40(sp) - 80202b20: f05a sd s6,32(sp) - 80202b22: ec5e sd s7,24(sp) - 80202b24: e862 sd s8,16(sp) - 80202b26: e466 sd s9,8(sp) - 80202b28: 1080 addi s0,sp,96 + 80202b0a: 711d addi sp,sp,-96 + 80202b0c: ec86 sd ra,88(sp) + 80202b0e: e8a2 sd s0,80(sp) + 80202b10: e4a6 sd s1,72(sp) + 80202b12: e0ca sd s2,64(sp) + 80202b14: fc4e sd s3,56(sp) + 80202b16: f852 sd s4,48(sp) + 80202b18: f456 sd s5,40(sp) + 80202b1a: f05a sd s6,32(sp) + 80202b1c: ec5e sd s7,24(sp) + 80202b1e: e862 sd s8,16(sp) + 80202b20: e466 sd s9,8(sp) + 80202b22: 1080 addi s0,sp,96 asm volatile("csrr %0, sstatus" : "=r" (x) ); - 80202b2a: 100029f3 csrr s3,sstatus + 80202b24: 100029f3 csrr s3,sstatus if((r_sstatus() & SSTATUS_SPP) != 0) - 80202b2e: 1009f993 andi s3,s3,256 - 80202b32: 04099763 bnez s3,80202b80 <usertrap+0x70> + 80202b28: 1009f993 andi s3,s3,256 + 80202b2c: 04099763 bnez s3,80202b7a <usertrap+0x70> asm volatile("csrw stvec, %0" : : "r" (x)); - 80202b36: 0000a797 auipc a5,0xa - 80202b3a: 4fa7b783 ld a5,1274(a5) # 8020d030 <_GLOBAL_OFFSET_TABLE_+0x18> - 80202b3e: 10579073 csrw stvec,a5 + 80202b30: 0000a797 auipc a5,0xa + 80202b34: 5007b783 ld a5,1280(a5) # 8020d030 <_GLOBAL_OFFSET_TABLE_+0x18> + 80202b38: 10579073 csrw stvec,a5 struct proc *p = myproc(); - 80202b42: fffff097 auipc ra,0xfffff - 80202b46: efa080e7 jalr -262(ra) # 80201a3c <myproc> - 80202b4a: 892a mv s2,a0 + 80202b3c: fffff097 auipc ra,0xfffff + 80202b40: f00080e7 jalr -256(ra) # 80201a3c <myproc> + 80202b44: 892a mv s2,a0 p->trapframe->epc = r_sepc(); - 80202b4c: 713c ld a5,96(a0) + 80202b46: 713c ld a5,96(a0) asm volatile("csrr %0, sepc" : "=r" (x) ); - 80202b4e: 14102773 csrr a4,sepc - 80202b52: ef98 sd a4,24(a5) + 80202b48: 14102773 csrr a4,sepc + 80202b4c: ef98 sd a4,24(a5) asm volatile("csrr %0, scause" : "=r" (x) ); - 80202b54: 14202773 csrr a4,scause + 80202b4e: 14202773 csrr a4,scause if(r_scause() == 8){ - 80202b58: 47a1 li a5,8 - 80202b5a: 02f70b63 beq a4,a5,80202b90 <usertrap+0x80> - 80202b5e: 14202773 csrr a4,scause + 80202b52: 47a1 li a5,8 + 80202b54: 02f70b63 beq a4,a5,80202b8a <usertrap+0x80> + 80202b58: 14202773 csrr a4,scause else if (r_scause() == 15||r_scause()==13) { - 80202b62: 47bd li a5,15 - 80202b64: 00f70763 beq a4,a5,80202b72 <usertrap+0x62> - 80202b68: 14202773 csrr a4,scause - 80202b6c: 47b5 li a5,13 - 80202b6e: 1af71763 bne a4,a5,80202d1c <usertrap+0x20c> + 80202b5c: 47bd li a5,15 + 80202b5e: 00f70763 beq a4,a5,80202b6c <usertrap+0x62> + 80202b62: 14202773 csrr a4,scause + 80202b66: 47b5 li a5,13 + 80202b68: 1af71c63 bne a4,a5,80202d20 <usertrap+0x216> asm volatile("csrr %0, stval" : "=r" (x) ); - 80202b72: 143025f3 csrr a1,stval + 80202b6c: 143025f3 csrr a1,stval for (int i = 0; i < VMA_MAX; i++) { - 80202b76: 44090793 addi a5,s2,1088 - 80202b7a: 4481 li s1,0 - 80202b7c: 4641 li a2,16 - 80202b7e: a895 j 80202bf2 <usertrap+0xe2> + 80202b70: 44090793 addi a5,s2,1088 + 80202b74: 4481 li s1,0 + 80202b76: 4641 li a2,16 + 80202b78: a895 j 80202bec <usertrap+0xe2> panic("usertrap: not from user mode"); - 80202b80: 00008517 auipc a0,0x8 - 80202b84: ba850513 addi a0,a0,-1112 # 8020a728 <digits+0x3a8> - 80202b88: ffffd097 auipc ra,0xffffd - 80202b8c: 5bc080e7 jalr 1468(ra) # 80200144 <panic> + 80202b7a: 00008517 auipc a0,0x8 + 80202b7e: bae50513 addi a0,a0,-1106 # 8020a728 <digits+0x3a8> + 80202b82: ffffd097 auipc ra,0xffffd + 80202b86: 5c2080e7 jalr 1474(ra) # 80200144 <panic> if(p->killed) - 80202b90: 591c lw a5,48(a0) - 80202b92: e7a9 bnez a5,80202bdc <usertrap+0xcc> + 80202b8a: 591c lw a5,48(a0) + 80202b8c: e7a9 bnez a5,80202bd6 <usertrap+0xcc> p->trapframe->epc += 4; - 80202b94: 06093703 ld a4,96(s2) - 80202b98: 6f1c ld a5,24(a4) - 80202b9a: 0791 addi a5,a5,4 - 80202b9c: ef1c sd a5,24(a4) + 80202b8e: 06093703 ld a4,96(s2) + 80202b92: 6f1c ld a5,24(a4) + 80202b94: 0791 addi a5,a5,4 + 80202b96: ef1c sd a5,24(a4) asm volatile("csrr %0, sstatus" : "=r" (x) ); - 80202b9e: 100027f3 csrr a5,sstatus + 80202b98: 100027f3 csrr a5,sstatus w_sstatus(r_sstatus() | SSTATUS_SIE); - 80202ba2: 0027e793 ori a5,a5,2 + 80202b9c: 0027e793 ori a5,a5,2 asm volatile("csrw sstatus, %0" : : "r" (x)); - 80202ba6: 10079073 csrw sstatus,a5 + 80202ba0: 10079073 csrw sstatus,a5 syscall(); - 80202baa: 00001097 auipc ra,0x1 - 80202bae: 80e080e7 jalr -2034(ra) # 802033b8 <syscall> + 80202ba4: 00001097 auipc ra,0x1 + 80202ba8: 818080e7 jalr -2024(ra) # 802033bc <syscall> if(p->killed) - 80202bb2: 03092783 lw a5,48(s2) - 80202bb6: 1a079b63 bnez a5,80202d6c <usertrap+0x25c> + 80202bac: 03092783 lw a5,48(s2) + 80202bb0: 1c079063 bnez a5,80202d70 <usertrap+0x266> usertrapret(); - 80202bba: 00000097 auipc ra,0x0 - 80202bbe: e14080e7 jalr -492(ra) # 802029ce <usertrapret> + 80202bb4: 00000097 auipc ra,0x0 + 80202bb8: e14080e7 jalr -492(ra) # 802029c8 <usertrapret> } - 80202bc2: 60e6 ld ra,88(sp) - 80202bc4: 6446 ld s0,80(sp) - 80202bc6: 64a6 ld s1,72(sp) - 80202bc8: 6906 ld s2,64(sp) - 80202bca: 79e2 ld s3,56(sp) - 80202bcc: 7a42 ld s4,48(sp) - 80202bce: 7aa2 ld s5,40(sp) - 80202bd0: 7b02 ld s6,32(sp) - 80202bd2: 6be2 ld s7,24(sp) - 80202bd4: 6c42 ld s8,16(sp) - 80202bd6: 6ca2 ld s9,8(sp) - 80202bd8: 6125 addi sp,sp,96 - 80202bda: 8082 ret + 80202bbc: 60e6 ld ra,88(sp) + 80202bbe: 6446 ld s0,80(sp) + 80202bc0: 64a6 ld s1,72(sp) + 80202bc2: 6906 ld s2,64(sp) + 80202bc4: 79e2 ld s3,56(sp) + 80202bc6: 7a42 ld s4,48(sp) + 80202bc8: 7aa2 ld s5,40(sp) + 80202bca: 7b02 ld s6,32(sp) + 80202bcc: 6be2 ld s7,24(sp) + 80202bce: 6c42 ld s8,16(sp) + 80202bd0: 6ca2 ld s9,8(sp) + 80202bd2: 6125 addi sp,sp,96 + 80202bd4: 8082 ret exit(-1); - 80202bdc: 557d li a0,-1 - 80202bde: fffff097 auipc ra,0xfffff - 80202be2: 6fe080e7 jalr 1790(ra) # 802022dc <exit> - 80202be6: b77d j 80202b94 <usertrap+0x84> + 80202bd6: 557d li a0,-1 + 80202bd8: fffff097 auipc ra,0xfffff + 80202bdc: 6fe080e7 jalr 1790(ra) # 802022d6 <exit> + 80202be0: b77d j 80202b8e <usertrap+0x84> for (int i = 0; i < VMA_MAX; i++) { - 80202be8: 2485 addiw s1,s1,1 - 80202bea: 03078793 addi a5,a5,48 - 80202bee: fcc482e3 beq s1,a2,80202bb2 <usertrap+0xa2> + 80202be2: 2485 addiw s1,s1,1 + 80202be4: 03078793 addi a5,a5,48 + 80202be8: fcc482e3 beq s1,a2,80202bac <usertrap+0xa2> if (vma->valid && va >= vma->addr && va < vma->addr+vma->len) { - 80202bf2: 4398 lw a4,0(a5) - 80202bf4: db75 beqz a4,80202be8 <usertrap+0xd8> - 80202bf6: 6798 ld a4,8(a5) - 80202bf8: fee5e8e3 bltu a1,a4,80202be8 <usertrap+0xd8> - 80202bfc: 4b94 lw a3,16(a5) - 80202bfe: 9736 add a4,a4,a3 - 80202c00: fee5f4e3 bgeu a1,a4,80202be8 <usertrap+0xd8> + 80202bec: 4398 lw a4,0(a5) + 80202bee: db75 beqz a4,80202be2 <usertrap+0xd8> + 80202bf0: 6798 ld a4,8(a5) + 80202bf2: fee5e8e3 bltu a1,a4,80202be2 <usertrap+0xd8> + 80202bf6: 4b94 lw a3,16(a5) + 80202bf8: 9736 add a4,a4,a3 + 80202bfa: fee5f4e3 bgeu a1,a4,80202be2 <usertrap+0xd8> va = PGROUNDDOWN(va); - 80202c04: 77fd lui a5,0xfffff - 80202c06: 00f5fa33 and s4,a1,a5 + 80202bfe: 77fd lui a5,0xfffff + 80202c00: 00f5fa33 and s4,a1,a5 uint64 len = PGROUNDUP(vma->len); - 80202c0a: 6785 lui a5,0x1 - 80202c0c: 37fd addiw a5,a5,-1 # fff <_entry-0x801ff001> - 80202c0e: 00f68abb addw s5,a3,a5 - 80202c12: 77fd lui a5,0xfffff - 80202c14: 00fafab3 and s5,s5,a5 - 80202c18: 2a81 sext.w s5,s5 + 80202c04: 6785 lui a5,0x1 + 80202c06: 37fd addiw a5,a5,-1 # fff <_entry-0x801ff001> + 80202c08: 00f68abb addw s5,a3,a5 + 80202c0c: 77fd lui a5,0xfffff + 80202c0e: 00fafab3 and s5,s5,a5 + 80202c12: 2a81 sext.w s5,s5 uint64 pa = (uint64)kalloc(); - 80202c1a: ffffe097 auipc ra,0xffffe - 80202c1e: 940080e7 jalr -1728(ra) # 8020055a <kalloc> - 80202c22: 8caa mv s9,a0 + 80202c14: ffffe097 auipc ra,0xffffe + 80202c18: 946080e7 jalr -1722(ra) # 8020055a <kalloc> + 80202c1c: 8caa mv s9,a0 for(int j = 1; j<len/PGSIZE; j++){ - 80202c24: 00cadb13 srli s6,s5,0xc - 80202c28: 6789 lui a5,0x2 - 80202c2a: 02faee63 bltu s5,a5,80202c66 <usertrap+0x156> + 80202c1e: 00cadb13 srli s6,s5,0xc + 80202c22: 6789 lui a5,0x2 + 80202c24: 02faee63 bltu s5,a5,80202c60 <usertrap+0x156> printf("allocating %d\n", j); - 80202c2e: 00008c17 auipc s8,0x8 - 80202c32: b1ac0c13 addi s8,s8,-1254 # 8020a748 <digits+0x3c8> + 80202c28: 00008c17 auipc s8,0x8 + 80202c2c: b20c0c13 addi s8,s8,-1248 # 8020a748 <digits+0x3c8> memset((void *)pa_next , 0, len); - 80202c36: 000a8b9b sext.w s7,s5 + 80202c30: 000a8b9b sext.w s7,s5 printf("allocating %d\n", j); - 80202c3a: 0019859b addiw a1,s3,1 - 80202c3e: 8562 mv a0,s8 - 80202c40: ffffd097 auipc ra,0xffffd - 80202c44: 54e080e7 jalr 1358(ra) # 8020018e <printf> + 80202c34: 0019859b addiw a1,s3,1 + 80202c38: 8562 mv a0,s8 + 80202c3a: ffffd097 auipc ra,0xffffd + 80202c3e: 554080e7 jalr 1364(ra) # 8020018e <printf> uint64 pa_next = (uint64)kalloc(); - 80202c48: ffffe097 auipc ra,0xffffe - 80202c4c: 912080e7 jalr -1774(ra) # 8020055a <kalloc> + 80202c42: ffffe097 auipc ra,0xffffe + 80202c46: 918080e7 jalr -1768(ra) # 8020055a <kalloc> memset((void *)pa_next , 0, len); - 80202c50: 865e mv a2,s7 - 80202c52: 4581 li a1,0 - 80202c54: ffffe097 auipc ra,0xffffe - 80202c58: b0e080e7 jalr -1266(ra) # 80200762 <memset> + 80202c4a: 865e mv a2,s7 + 80202c4c: 4581 li a1,0 + 80202c4e: ffffe097 auipc ra,0xffffe + 80202c52: b14080e7 jalr -1260(ra) # 80200762 <memset> for(int j = 1; j<len/PGSIZE; j++){ - 80202c5c: 00298793 addi a5,s3,2 - 80202c60: 0985 addi s3,s3,1 - 80202c62: fd67ece3 bltu a5,s6,80202c3a <usertrap+0x12a> + 80202c56: 00298793 addi a5,s3,2 + 80202c5a: 0985 addi s3,s3,1 + 80202c5c: fd67ece3 bltu a5,s6,80202c34 <usertrap+0x12a> memset((void *)pa, 0, len); - 80202c66: 000a8b1b sext.w s6,s5 - 80202c6a: 865a mv a2,s6 - 80202c6c: 4581 li a1,0 - 80202c6e: 8566 mv a0,s9 - 80202c70: ffffe097 auipc ra,0xffffe - 80202c74: af2080e7 jalr -1294(ra) # 80200762 <memset> + 80202c60: 000a8b1b sext.w s6,s5 + 80202c64: 865a mv a2,s6 + 80202c66: 4581 li a1,0 + 80202c68: 8566 mv a0,s9 + 80202c6a: ffffe097 auipc ra,0xffffe + 80202c6e: af8080e7 jalr -1288(ra) # 80200762 <memset> if (vma->prot & PROT_READ) - 80202c78: 00149793 slli a5,s1,0x1 - 80202c7c: 97a6 add a5,a5,s1 - 80202c7e: 0792 slli a5,a5,0x4 - 80202c80: 97ca add a5,a5,s2 - 80202c82: 4547a783 lw a5,1108(a5) # 2454 <_entry-0x801fdbac> - 80202c86: 0017f693 andi a3,a5,1 + 80202c72: 00149793 slli a5,s1,0x1 + 80202c76: 97a6 add a5,a5,s1 + 80202c78: 0792 slli a5,a5,0x4 + 80202c7a: 97ca add a5,a5,s2 + 80202c7c: 4547a783 lw a5,1108(a5) # 2454 <_entry-0x801fdbac> + 80202c80: 0017f693 andi a3,a5,1 int perm = PTE_U; - 80202c8a: 4741 li a4,16 + 80202c84: 4741 li a4,16 if (vma->prot & PROT_READ) - 80202c8c: c291 beqz a3,80202c90 <usertrap+0x180> + 80202c86: c291 beqz a3,80202c8a <usertrap+0x180> perm |= PTE_R; - 80202c8e: 4749 li a4,18 + 80202c88: 4749 li a4,18 if (vma->prot & PROT_WRITE) - 80202c90: 0027f693 andi a3,a5,2 - 80202c94: c299 beqz a3,80202c9a <usertrap+0x18a> + 80202c8a: 0027f693 andi a3,a5,2 + 80202c8e: c299 beqz a3,80202c94 <usertrap+0x18a> perm |= PTE_W; - 80202c96: 00476713 ori a4,a4,4 + 80202c90: 00476713 ori a4,a4,4 if (vma->prot & PROT_EXEC) - 80202c9a: 8b91 andi a5,a5,4 - 80202c9c: c399 beqz a5,80202ca2 <usertrap+0x192> + 80202c94: 8b91 andi a5,a5,4 + 80202c96: c399 beqz a5,80202c9c <usertrap+0x192> perm |= PTE_X; - 80202c9e: 00876713 ori a4,a4,8 + 80202c98: 00876713 ori a4,a4,8 mappages(p->pagetable, va, len, pa, perm); - 80202ca2: 86e6 mv a3,s9 - 80202ca4: 8656 mv a2,s5 - 80202ca6: 85d2 mv a1,s4 - 80202ca8: 05093503 ld a0,80(s2) - 80202cac: ffffe097 auipc ra,0xffffe - 80202cb0: fbc080e7 jalr -68(ra) # 80200c68 <mappages> + 80202c9c: 86e6 mv a3,s9 + 80202c9e: 8656 mv a2,s5 + 80202ca0: 85d2 mv a1,s4 + 80202ca2: 05093503 ld a0,80(s2) + 80202ca6: ffffe097 auipc ra,0xffffe + 80202caa: fc2080e7 jalr -62(ra) # 80200c68 <mappages> mappages(p->kpagetable, va, len, pa, PTE_W|PTE_R|PTE_X); - 80202cb4: 4739 li a4,14 - 80202cb6: 86e6 mv a3,s9 - 80202cb8: 8656 mv a2,s5 - 80202cba: 85d2 mv a1,s4 - 80202cbc: 05893503 ld a0,88(s2) - 80202cc0: ffffe097 auipc ra,0xffffe - 80202cc4: fa8080e7 jalr -88(ra) # 80200c68 <mappages> + 80202cae: 4739 li a4,14 + 80202cb0: 86e6 mv a3,s9 + 80202cb2: 8656 mv a2,s5 + 80202cb4: 85d2 mv a1,s4 + 80202cb6: 05893503 ld a0,88(s2) + 80202cba: ffffe097 auipc ra,0xffffe + 80202cbe: fae080e7 jalr -82(ra) # 80200c68 <mappages> elock(vma->f->ep); - 80202cc8: 00149a93 slli s5,s1,0x1 - 80202ccc: 009a89b3 add s3,s5,s1 - 80202cd0: 0992 slli s3,s3,0x4 - 80202cd2: 99ca add s3,s3,s2 - 80202cd4: 4609b783 ld a5,1120(s3) - 80202cd8: 6f88 ld a0,24(a5) - 80202cda: 00004097 auipc ra,0x4 - 80202cde: 3e4080e7 jalr 996(ra) # 802070be <elock> + 80202cc2: 00149b93 slli s7,s1,0x1 + 80202cc6: 009b89b3 add s3,s7,s1 + 80202cca: 0992 slli s3,s3,0x4 + 80202ccc: 99ca add s3,s3,s2 + 80202cce: 4609b783 ld a5,1120(s3) + 80202cd2: 6f88 ld a0,24(a5) + 80202cd4: 00004097 auipc ra,0x4 + 80202cd8: 3aa080e7 jalr 938(ra) # 8020707e <elock> eread(vma->f->ep, 0, pa, vma->off + va - vma->addr, len); - 80202ce2: 45c9a783 lw a5,1116(s3) - 80202ce6: 014787bb addw a5,a5,s4 - 80202cea: 4489b683 ld a3,1096(s3) - 80202cee: 4609b503 ld a0,1120(s3) - 80202cf2: 875a mv a4,s6 - 80202cf4: 40d786bb subw a3,a5,a3 - 80202cf8: 8666 mv a2,s9 - 80202cfa: 4581 li a1,0 - 80202cfc: 6d08 ld a0,24(a0) - 80202cfe: 00004097 auipc ra,0x4 - 80202d02: abc080e7 jalr -1348(ra) # 802067ba <eread> + 80202cdc: 45c9a783 lw a5,1116(s3) + 80202ce0: 014787bb addw a5,a5,s4 + 80202ce4: 4489b683 ld a3,1096(s3) + 80202ce8: 4609b503 ld a0,1120(s3) + 80202cec: 875a mv a4,s6 + 80202cee: 40d786bb subw a3,a5,a3 + 80202cf2: 8666 mv a2,s9 + 80202cf4: 4581 li a1,0 + 80202cf6: 6d08 ld a0,24(a0) + 80202cf8: 00004097 auipc ra,0x4 + 80202cfc: a82080e7 jalr -1406(ra) # 8020677a <eread> eunlock(vma->f->ep); - 80202d06: 4609b783 ld a5,1120(s3) - 80202d0a: 6f88 ld a0,24(a5) - 80202d0c: 00004097 auipc ra,0x4 - 80202d10: 3e8080e7 jalr 1000(ra) # 802070f4 <eunlock> + 80202d00: 4609b783 ld a5,1120(s3) + 80202d04: 6f88 ld a0,24(a5) + 80202d06: 00004097 auipc ra,0x4 + 80202d0a: 3ae080e7 jalr 942(ra) # 802070b4 <eunlock> vma->alloc = 1; - 80202d14: 4705 li a4,1 - 80202d16: 46e9a623 sw a4,1132(s3) + 80202d0e: 4705 li a4,1 + 80202d10: 46e9a623 sw a4,1132(s3) + p->sz+=len; + 80202d14: 04893783 ld a5,72(s2) + 80202d18: 97d6 add a5,a5,s5 + 80202d1a: 04f93423 sd a5,72(s2) break; - 80202d1a: bd61 j 80202bb2 <usertrap+0xa2> + 80202d1e: b579 j 80202bac <usertrap+0xa2> else if((which_dev = devintr()) != 0){ - 80202d1c: 00000097 auipc ra,0x0 - 80202d20: d50080e7 jalr -688(ra) # 80202a6c <devintr> - 80202d24: 84aa mv s1,a0 - 80202d26: c509 beqz a0,80202d30 <usertrap+0x220> + 80202d20: 00000097 auipc ra,0x0 + 80202d24: d46080e7 jalr -698(ra) # 80202a66 <devintr> + 80202d28: 84aa mv s1,a0 + 80202d2a: c509 beqz a0,80202d34 <usertrap+0x22a> if(p->killed) - 80202d28: 03092783 lw a5,48(s2) - 80202d2c: c7b1 beqz a5,80202d78 <usertrap+0x268> - 80202d2e: a081 j 80202d6e <usertrap+0x25e> + 80202d2c: 03092783 lw a5,48(s2) + 80202d30: c7b1 beqz a5,80202d7c <usertrap+0x272> + 80202d32: a081 j 80202d72 <usertrap+0x268> asm volatile("csrr %0, scause" : "=r" (x) ); - 80202d30: 142025f3 csrr a1,scause + 80202d34: 142025f3 csrr a1,scause printf("\nusertrap(): unexpected scause %p pid=%d %s\n", r_scause(), p->pid, p->name); - 80202d34: 40890693 addi a3,s2,1032 - 80202d38: 03892603 lw a2,56(s2) - 80202d3c: 00008517 auipc a0,0x8 - 80202d40: a1c50513 addi a0,a0,-1508 # 8020a758 <digits+0x3d8> - 80202d44: ffffd097 auipc ra,0xffffd - 80202d48: 44a080e7 jalr 1098(ra) # 8020018e <printf> + 80202d38: 40890693 addi a3,s2,1032 + 80202d3c: 03892603 lw a2,56(s2) + 80202d40: 00008517 auipc a0,0x8 + 80202d44: a1850513 addi a0,a0,-1512 # 8020a758 <digits+0x3d8> + 80202d48: ffffd097 auipc ra,0xffffd + 80202d4c: 446080e7 jalr 1094(ra) # 8020018e <printf> asm volatile("csrr %0, sepc" : "=r" (x) ); - 80202d4c: 141025f3 csrr a1,sepc + 80202d50: 141025f3 csrr a1,sepc asm volatile("csrr %0, stval" : "=r" (x) ); - 80202d50: 14302673 csrr a2,stval + 80202d54: 14302673 csrr a2,stval printf(" sepc=%p stval=%p\n", r_sepc(), r_stval()); - 80202d54: 00008517 auipc a0,0x8 - 80202d58: a3450513 addi a0,a0,-1484 # 8020a788 <digits+0x408> - 80202d5c: ffffd097 auipc ra,0xffffd - 80202d60: 432080e7 jalr 1074(ra) # 8020018e <printf> + 80202d58: 00008517 auipc a0,0x8 + 80202d5c: a3050513 addi a0,a0,-1488 # 8020a788 <digits+0x408> + 80202d60: ffffd097 auipc ra,0xffffd + 80202d64: 42e080e7 jalr 1070(ra) # 8020018e <printf> p->killed = 1; - 80202d64: 4785 li a5,1 - 80202d66: 02f92823 sw a5,48(s2) + 80202d68: 4785 li a5,1 + 80202d6a: 02f92823 sw a5,48(s2) if(p->killed) - 80202d6a: a011 j 80202d6e <usertrap+0x25e> - 80202d6c: 4481 li s1,0 + 80202d6e: a011 j 80202d72 <usertrap+0x268> + 80202d70: 4481 li s1,0 exit(-1); - 80202d6e: 557d li a0,-1 - 80202d70: fffff097 auipc ra,0xfffff - 80202d74: 56c080e7 jalr 1388(ra) # 802022dc <exit> + 80202d72: 557d li a0,-1 + 80202d74: fffff097 auipc ra,0xfffff + 80202d78: 562080e7 jalr 1378(ra) # 802022d6 <exit> if(which_dev == 2){ - 80202d78: 4789 li a5,2 - 80202d7a: e4f490e3 bne s1,a5,80202bba <usertrap+0xaa> + 80202d7c: 4789 li a5,2 + 80202d7e: e2f49be3 bne s1,a5,80202bb4 <usertrap+0xaa> (p->utime) += 1; - 80202d7e: 42093783 ld a5,1056(s2) - 80202d82: 0785 addi a5,a5,1 - 80202d84: 42f93023 sd a5,1056(s2) + 80202d82: 42093783 ld a5,1056(s2) + 80202d86: 0785 addi a5,a5,1 + 80202d88: 42f93023 sd a5,1056(s2) yield(); - 80202d88: fffff097 auipc ra,0xfffff - 80202d8c: 654080e7 jalr 1620(ra) # 802023dc <yield> - 80202d90: b52d j 80202bba <usertrap+0xaa> + 80202d8c: fffff097 auipc ra,0xfffff + 80202d90: 64a080e7 jalr 1610(ra) # 802023d6 <yield> + 80202d94: b505 j 80202bb4 <usertrap+0xaa> -0000000080202d92 <kerneltrap>: +0000000080202d96 <kerneltrap>: kerneltrap() { - 80202d92: 7179 addi sp,sp,-48 - 80202d94: f406 sd ra,40(sp) - 80202d96: f022 sd s0,32(sp) - 80202d98: ec26 sd s1,24(sp) - 80202d9a: e84a sd s2,16(sp) - 80202d9c: e44e sd s3,8(sp) - 80202d9e: 1800 addi s0,sp,48 + 80202d96: 7179 addi sp,sp,-48 + 80202d98: f406 sd ra,40(sp) + 80202d9a: f022 sd s0,32(sp) + 80202d9c: ec26 sd s1,24(sp) + 80202d9e: e84a sd s2,16(sp) + 80202da0: e44e sd s3,8(sp) + 80202da2: 1800 addi s0,sp,48 asm volatile("csrr %0, sepc" : "=r" (x) ); - 80202da0: 14102973 csrr s2,sepc + 80202da4: 14102973 csrr s2,sepc asm volatile("csrr %0, sstatus" : "=r" (x) ); - 80202da4: 100024f3 csrr s1,sstatus + 80202da8: 100024f3 csrr s1,sstatus asm volatile("csrr %0, scause" : "=r" (x) ); - 80202da8: 142029f3 csrr s3,scause + 80202dac: 142029f3 csrr s3,scause if((sstatus & SSTATUS_SPP) == 0) - 80202dac: 1004f793 andi a5,s1,256 - 80202db0: cb85 beqz a5,80202de0 <kerneltrap+0x4e> + 80202db0: 1004f793 andi a5,s1,256 + 80202db4: cb85 beqz a5,80202de4 <kerneltrap+0x4e> asm volatile("csrr %0, sstatus" : "=r" (x) ); - 80202db2: 100027f3 csrr a5,sstatus + 80202db6: 100027f3 csrr a5,sstatus return (x & SSTATUS_SIE) != 0; - 80202db6: 8b89 andi a5,a5,2 + 80202dba: 8b89 andi a5,a5,2 if(intr_get() != 0) - 80202db8: ef85 bnez a5,80202df0 <kerneltrap+0x5e> + 80202dbc: ef85 bnez a5,80202df4 <kerneltrap+0x5e> if((which_dev = devintr()) == 0){ - 80202dba: 00000097 auipc ra,0x0 - 80202dbe: cb2080e7 jalr -846(ra) # 80202a6c <devintr> - 80202dc2: cd1d beqz a0,80202e00 <kerneltrap+0x6e> + 80202dbe: 00000097 auipc ra,0x0 + 80202dc2: ca8080e7 jalr -856(ra) # 80202a66 <devintr> + 80202dc6: cd1d beqz a0,80202e04 <kerneltrap+0x6e> if(which_dev == 2 && myproc() != 0 && myproc()->state == RUNNING) { - 80202dc4: 4789 li a5,2 - 80202dc6: 08f50b63 beq a0,a5,80202e5c <kerneltrap+0xca> + 80202dc8: 4789 li a5,2 + 80202dca: 08f50b63 beq a0,a5,80202e60 <kerneltrap+0xca> asm volatile("csrw sepc, %0" : : "r" (x)); - 80202dca: 14191073 csrw sepc,s2 + 80202dce: 14191073 csrw sepc,s2 asm volatile("csrw sstatus, %0" : : "r" (x)); - 80202dce: 10049073 csrw sstatus,s1 + 80202dd2: 10049073 csrw sstatus,s1 } - 80202dd2: 70a2 ld ra,40(sp) - 80202dd4: 7402 ld s0,32(sp) - 80202dd6: 64e2 ld s1,24(sp) - 80202dd8: 6942 ld s2,16(sp) - 80202dda: 69a2 ld s3,8(sp) - 80202ddc: 6145 addi sp,sp,48 - 80202dde: 8082 ret + 80202dd6: 70a2 ld ra,40(sp) + 80202dd8: 7402 ld s0,32(sp) + 80202dda: 64e2 ld s1,24(sp) + 80202ddc: 6942 ld s2,16(sp) + 80202dde: 69a2 ld s3,8(sp) + 80202de0: 6145 addi sp,sp,48 + 80202de2: 8082 ret panic("kerneltrap: not from supervisor mode"); - 80202de0: 00008517 auipc a0,0x8 - 80202de4: 9c850513 addi a0,a0,-1592 # 8020a7a8 <digits+0x428> - 80202de8: ffffd097 auipc ra,0xffffd - 80202dec: 35c080e7 jalr 860(ra) # 80200144 <panic> + 80202de4: 00008517 auipc a0,0x8 + 80202de8: 9c450513 addi a0,a0,-1596 # 8020a7a8 <digits+0x428> + 80202dec: ffffd097 auipc ra,0xffffd + 80202df0: 358080e7 jalr 856(ra) # 80200144 <panic> panic("kerneltrap: interrupts enabled"); - 80202df0: 00008517 auipc a0,0x8 - 80202df4: 9e050513 addi a0,a0,-1568 # 8020a7d0 <digits+0x450> - 80202df8: ffffd097 auipc ra,0xffffd - 80202dfc: 34c080e7 jalr 844(ra) # 80200144 <panic> + 80202df4: 00008517 auipc a0,0x8 + 80202df8: 9dc50513 addi a0,a0,-1572 # 8020a7d0 <digits+0x450> + 80202dfc: ffffd097 auipc ra,0xffffd + 80202e00: 348080e7 jalr 840(ra) # 80200144 <panic> printf("\nscause %p\n", scause); - 80202e00: 85ce mv a1,s3 - 80202e02: 00008517 auipc a0,0x8 - 80202e06: 9ee50513 addi a0,a0,-1554 # 8020a7f0 <digits+0x470> - 80202e0a: ffffd097 auipc ra,0xffffd - 80202e0e: 384080e7 jalr 900(ra) # 8020018e <printf> + 80202e04: 85ce mv a1,s3 + 80202e06: 00008517 auipc a0,0x8 + 80202e0a: 9ea50513 addi a0,a0,-1558 # 8020a7f0 <digits+0x470> + 80202e0e: ffffd097 auipc ra,0xffffd + 80202e12: 380080e7 jalr 896(ra) # 8020018e <printf> asm volatile("csrr %0, sepc" : "=r" (x) ); - 80202e12: 141025f3 csrr a1,sepc + 80202e16: 141025f3 csrr a1,sepc asm volatile("csrr %0, stval" : "=r" (x) ); - 80202e16: 14302673 csrr a2,stval + 80202e1a: 14302673 csrr a2,stval asm volatile("mv %0, tp" : "=r" (x) ); - 80202e1a: 8692 mv a3,tp + 80202e1e: 8692 mv a3,tp printf("sepc=%p stval=%p hart=%d\n", r_sepc(), r_stval(), r_tp()); - 80202e1c: 00008517 auipc a0,0x8 - 80202e20: 9e450513 addi a0,a0,-1564 # 8020a800 <digits+0x480> - 80202e24: ffffd097 auipc ra,0xffffd - 80202e28: 36a080e7 jalr 874(ra) # 8020018e <printf> + 80202e20: 00008517 auipc a0,0x8 + 80202e24: 9e050513 addi a0,a0,-1568 # 8020a800 <digits+0x480> + 80202e28: ffffd097 auipc ra,0xffffd + 80202e2c: 366080e7 jalr 870(ra) # 8020018e <printf> struct proc *p = myproc(); - 80202e2c: fffff097 auipc ra,0xfffff - 80202e30: c10080e7 jalr -1008(ra) # 80201a3c <myproc> + 80202e30: fffff097 auipc ra,0xfffff + 80202e34: c0c080e7 jalr -1012(ra) # 80201a3c <myproc> if (p != 0) { - 80202e34: cd01 beqz a0,80202e4c <kerneltrap+0xba> + 80202e38: cd01 beqz a0,80202e50 <kerneltrap+0xba> printf("pid: %d, name: %s\n", p->pid, p->name); - 80202e36: 40850613 addi a2,a0,1032 - 80202e3a: 5d0c lw a1,56(a0) - 80202e3c: 00008517 auipc a0,0x8 - 80202e40: 9e450513 addi a0,a0,-1564 # 8020a820 <digits+0x4a0> - 80202e44: ffffd097 auipc ra,0xffffd - 80202e48: 34a080e7 jalr 842(ra) # 8020018e <printf> + 80202e3a: 40850613 addi a2,a0,1032 + 80202e3e: 5d0c lw a1,56(a0) + 80202e40: 00008517 auipc a0,0x8 + 80202e44: 9e050513 addi a0,a0,-1568 # 8020a820 <digits+0x4a0> + 80202e48: ffffd097 auipc ra,0xffffd + 80202e4c: 346080e7 jalr 838(ra) # 8020018e <printf> panic("kerneltrap"); - 80202e4c: 00008517 auipc a0,0x8 - 80202e50: 9ec50513 addi a0,a0,-1556 # 8020a838 <digits+0x4b8> - 80202e54: ffffd097 auipc ra,0xffffd - 80202e58: 2f0080e7 jalr 752(ra) # 80200144 <panic> + 80202e50: 00008517 auipc a0,0x8 + 80202e54: 9e850513 addi a0,a0,-1560 # 8020a838 <digits+0x4b8> + 80202e58: ffffd097 auipc ra,0xffffd + 80202e5c: 2ec080e7 jalr 748(ra) # 80200144 <panic> if(which_dev == 2 && myproc() != 0 && myproc()->state == RUNNING) { - 80202e5c: fffff097 auipc ra,0xfffff - 80202e60: be0080e7 jalr -1056(ra) # 80201a3c <myproc> - 80202e64: d13d beqz a0,80202dca <kerneltrap+0x38> - 80202e66: fffff097 auipc ra,0xfffff - 80202e6a: bd6080e7 jalr -1066(ra) # 80201a3c <myproc> - 80202e6e: 4d18 lw a4,24(a0) - 80202e70: 478d li a5,3 - 80202e72: f4f71ce3 bne a4,a5,80202dca <kerneltrap+0x38> + 80202e60: fffff097 auipc ra,0xfffff + 80202e64: bdc080e7 jalr -1060(ra) # 80201a3c <myproc> + 80202e68: d13d beqz a0,80202dce <kerneltrap+0x38> + 80202e6a: fffff097 auipc ra,0xfffff + 80202e6e: bd2080e7 jalr -1070(ra) # 80201a3c <myproc> + 80202e72: 4d18 lw a4,24(a0) + 80202e74: 478d li a5,3 + 80202e76: f4f71ce3 bne a4,a5,80202dce <kerneltrap+0x38> (myproc()->stime) += 1; - 80202e76: fffff097 auipc ra,0xfffff - 80202e7a: bc6080e7 jalr -1082(ra) # 80201a3c <myproc> - 80202e7e: 42853783 ld a5,1064(a0) - 80202e82: 0785 addi a5,a5,1 - 80202e84: 42f53423 sd a5,1064(a0) + 80202e7a: fffff097 auipc ra,0xfffff + 80202e7e: bc2080e7 jalr -1086(ra) # 80201a3c <myproc> + 80202e82: 42853783 ld a5,1064(a0) + 80202e86: 0785 addi a5,a5,1 + 80202e88: 42f53423 sd a5,1064(a0) yield(); - 80202e88: fffff097 auipc ra,0xfffff - 80202e8c: 554080e7 jalr 1364(ra) # 802023dc <yield> - 80202e90: bf2d j 80202dca <kerneltrap+0x38> + 80202e8c: fffff097 auipc ra,0xfffff + 80202e90: 54a080e7 jalr 1354(ra) # 802023d6 <yield> + 80202e94: bf2d j 80202dce <kerneltrap+0x38> -0000000080202e92 <trapframedump>: +0000000080202e96 <trapframedump>: void trapframedump(struct trapframe *tf) { - 80202e92: 1101 addi sp,sp,-32 - 80202e94: ec06 sd ra,24(sp) - 80202e96: e822 sd s0,16(sp) - 80202e98: e426 sd s1,8(sp) - 80202e9a: 1000 addi s0,sp,32 - 80202e9c: 84aa mv s1,a0 + 80202e96: 1101 addi sp,sp,-32 + 80202e98: ec06 sd ra,24(sp) + 80202e9a: e822 sd s0,16(sp) + 80202e9c: e426 sd s1,8(sp) + 80202e9e: 1000 addi s0,sp,32 + 80202ea0: 84aa mv s1,a0 printf("a0: %p\t", tf->a0); - 80202e9e: 792c ld a1,112(a0) - 80202ea0: 00008517 auipc a0,0x8 - 80202ea4: 9a850513 addi a0,a0,-1624 # 8020a848 <digits+0x4c8> - 80202ea8: ffffd097 auipc ra,0xffffd - 80202eac: 2e6080e7 jalr 742(ra) # 8020018e <printf> + 80202ea2: 792c ld a1,112(a0) + 80202ea4: 00008517 auipc a0,0x8 + 80202ea8: 9a450513 addi a0,a0,-1628 # 8020a848 <digits+0x4c8> + 80202eac: ffffd097 auipc ra,0xffffd + 80202eb0: 2e2080e7 jalr 738(ra) # 8020018e <printf> printf("a1: %p\t", tf->a1); - 80202eb0: 7cac ld a1,120(s1) - 80202eb2: 00008517 auipc a0,0x8 - 80202eb6: 99e50513 addi a0,a0,-1634 # 8020a850 <digits+0x4d0> - 80202eba: ffffd097 auipc ra,0xffffd - 80202ebe: 2d4080e7 jalr 724(ra) # 8020018e <printf> + 80202eb4: 7cac ld a1,120(s1) + 80202eb6: 00008517 auipc a0,0x8 + 80202eba: 99a50513 addi a0,a0,-1638 # 8020a850 <digits+0x4d0> + 80202ebe: ffffd097 auipc ra,0xffffd + 80202ec2: 2d0080e7 jalr 720(ra) # 8020018e <printf> printf("a2: %p\t", tf->a2); - 80202ec2: 60cc ld a1,128(s1) - 80202ec4: 00008517 auipc a0,0x8 - 80202ec8: 99450513 addi a0,a0,-1644 # 8020a858 <digits+0x4d8> - 80202ecc: ffffd097 auipc ra,0xffffd - 80202ed0: 2c2080e7 jalr 706(ra) # 8020018e <printf> + 80202ec6: 60cc ld a1,128(s1) + 80202ec8: 00008517 auipc a0,0x8 + 80202ecc: 99050513 addi a0,a0,-1648 # 8020a858 <digits+0x4d8> + 80202ed0: ffffd097 auipc ra,0xffffd + 80202ed4: 2be080e7 jalr 702(ra) # 8020018e <printf> printf("a3: %p\n", tf->a3); - 80202ed4: 64cc ld a1,136(s1) - 80202ed6: 00008517 auipc a0,0x8 - 80202eda: 98a50513 addi a0,a0,-1654 # 8020a860 <digits+0x4e0> - 80202ede: ffffd097 auipc ra,0xffffd - 80202ee2: 2b0080e7 jalr 688(ra) # 8020018e <printf> + 80202ed8: 64cc ld a1,136(s1) + 80202eda: 00008517 auipc a0,0x8 + 80202ede: 98650513 addi a0,a0,-1658 # 8020a860 <digits+0x4e0> + 80202ee2: ffffd097 auipc ra,0xffffd + 80202ee6: 2ac080e7 jalr 684(ra) # 8020018e <printf> printf("a4: %p\t", tf->a4); - 80202ee6: 68cc ld a1,144(s1) - 80202ee8: 00008517 auipc a0,0x8 - 80202eec: 98050513 addi a0,a0,-1664 # 8020a868 <digits+0x4e8> - 80202ef0: ffffd097 auipc ra,0xffffd - 80202ef4: 29e080e7 jalr 670(ra) # 8020018e <printf> + 80202eea: 68cc ld a1,144(s1) + 80202eec: 00008517 auipc a0,0x8 + 80202ef0: 97c50513 addi a0,a0,-1668 # 8020a868 <digits+0x4e8> + 80202ef4: ffffd097 auipc ra,0xffffd + 80202ef8: 29a080e7 jalr 666(ra) # 8020018e <printf> printf("a5: %p\t", tf->a5); - 80202ef8: 6ccc ld a1,152(s1) - 80202efa: 00008517 auipc a0,0x8 - 80202efe: 97650513 addi a0,a0,-1674 # 8020a870 <digits+0x4f0> - 80202f02: ffffd097 auipc ra,0xffffd - 80202f06: 28c080e7 jalr 652(ra) # 8020018e <printf> + 80202efc: 6ccc ld a1,152(s1) + 80202efe: 00008517 auipc a0,0x8 + 80202f02: 97250513 addi a0,a0,-1678 # 8020a870 <digits+0x4f0> + 80202f06: ffffd097 auipc ra,0xffffd + 80202f0a: 288080e7 jalr 648(ra) # 8020018e <printf> printf("a6: %p\t", tf->a6); - 80202f0a: 70cc ld a1,160(s1) - 80202f0c: 00008517 auipc a0,0x8 - 80202f10: 96c50513 addi a0,a0,-1684 # 8020a878 <digits+0x4f8> - 80202f14: ffffd097 auipc ra,0xffffd - 80202f18: 27a080e7 jalr 634(ra) # 8020018e <printf> + 80202f0e: 70cc ld a1,160(s1) + 80202f10: 00008517 auipc a0,0x8 + 80202f14: 96850513 addi a0,a0,-1688 # 8020a878 <digits+0x4f8> + 80202f18: ffffd097 auipc ra,0xffffd + 80202f1c: 276080e7 jalr 630(ra) # 8020018e <printf> printf("a7: %p\n", tf->a7); - 80202f1c: 74cc ld a1,168(s1) - 80202f1e: 00008517 auipc a0,0x8 - 80202f22: 96250513 addi a0,a0,-1694 # 8020a880 <digits+0x500> - 80202f26: ffffd097 auipc ra,0xffffd - 80202f2a: 268080e7 jalr 616(ra) # 8020018e <printf> + 80202f20: 74cc ld a1,168(s1) + 80202f22: 00008517 auipc a0,0x8 + 80202f26: 95e50513 addi a0,a0,-1698 # 8020a880 <digits+0x500> + 80202f2a: ffffd097 auipc ra,0xffffd + 80202f2e: 264080e7 jalr 612(ra) # 8020018e <printf> printf("t0: %p\t", tf->t0); - 80202f2e: 64ac ld a1,72(s1) - 80202f30: 00008517 auipc a0,0x8 - 80202f34: 95850513 addi a0,a0,-1704 # 8020a888 <digits+0x508> - 80202f38: ffffd097 auipc ra,0xffffd - 80202f3c: 256080e7 jalr 598(ra) # 8020018e <printf> + 80202f32: 64ac ld a1,72(s1) + 80202f34: 00008517 auipc a0,0x8 + 80202f38: 95450513 addi a0,a0,-1708 # 8020a888 <digits+0x508> + 80202f3c: ffffd097 auipc ra,0xffffd + 80202f40: 252080e7 jalr 594(ra) # 8020018e <printf> printf("t1: %p\t", tf->t1); - 80202f40: 68ac ld a1,80(s1) - 80202f42: 00008517 auipc a0,0x8 - 80202f46: 94e50513 addi a0,a0,-1714 # 8020a890 <digits+0x510> - 80202f4a: ffffd097 auipc ra,0xffffd - 80202f4e: 244080e7 jalr 580(ra) # 8020018e <printf> + 80202f44: 68ac ld a1,80(s1) + 80202f46: 00008517 auipc a0,0x8 + 80202f4a: 94a50513 addi a0,a0,-1718 # 8020a890 <digits+0x510> + 80202f4e: ffffd097 auipc ra,0xffffd + 80202f52: 240080e7 jalr 576(ra) # 8020018e <printf> printf("t2: %p\t", tf->t2); - 80202f52: 6cac ld a1,88(s1) - 80202f54: 00008517 auipc a0,0x8 - 80202f58: 94450513 addi a0,a0,-1724 # 8020a898 <digits+0x518> - 80202f5c: ffffd097 auipc ra,0xffffd - 80202f60: 232080e7 jalr 562(ra) # 8020018e <printf> + 80202f56: 6cac ld a1,88(s1) + 80202f58: 00008517 auipc a0,0x8 + 80202f5c: 94050513 addi a0,a0,-1728 # 8020a898 <digits+0x518> + 80202f60: ffffd097 auipc ra,0xffffd + 80202f64: 22e080e7 jalr 558(ra) # 8020018e <printf> printf("t3: %p\n", tf->t3); - 80202f64: 1004b583 ld a1,256(s1) - 80202f68: 00008517 auipc a0,0x8 - 80202f6c: 93850513 addi a0,a0,-1736 # 8020a8a0 <digits+0x520> - 80202f70: ffffd097 auipc ra,0xffffd - 80202f74: 21e080e7 jalr 542(ra) # 8020018e <printf> + 80202f68: 1004b583 ld a1,256(s1) + 80202f6c: 00008517 auipc a0,0x8 + 80202f70: 93450513 addi a0,a0,-1740 # 8020a8a0 <digits+0x520> + 80202f74: ffffd097 auipc ra,0xffffd + 80202f78: 21a080e7 jalr 538(ra) # 8020018e <printf> printf("t4: %p\t", tf->t4); - 80202f78: 1084b583 ld a1,264(s1) - 80202f7c: 00008517 auipc a0,0x8 - 80202f80: 92c50513 addi a0,a0,-1748 # 8020a8a8 <digits+0x528> - 80202f84: ffffd097 auipc ra,0xffffd - 80202f88: 20a080e7 jalr 522(ra) # 8020018e <printf> + 80202f7c: 1084b583 ld a1,264(s1) + 80202f80: 00008517 auipc a0,0x8 + 80202f84: 92850513 addi a0,a0,-1752 # 8020a8a8 <digits+0x528> + 80202f88: ffffd097 auipc ra,0xffffd + 80202f8c: 206080e7 jalr 518(ra) # 8020018e <printf> printf("t5: %p\t", tf->t5); - 80202f8c: 1104b583 ld a1,272(s1) - 80202f90: 00008517 auipc a0,0x8 - 80202f94: 92050513 addi a0,a0,-1760 # 8020a8b0 <digits+0x530> - 80202f98: ffffd097 auipc ra,0xffffd - 80202f9c: 1f6080e7 jalr 502(ra) # 8020018e <printf> + 80202f90: 1104b583 ld a1,272(s1) + 80202f94: 00008517 auipc a0,0x8 + 80202f98: 91c50513 addi a0,a0,-1764 # 8020a8b0 <digits+0x530> + 80202f9c: ffffd097 auipc ra,0xffffd + 80202fa0: 1f2080e7 jalr 498(ra) # 8020018e <printf> printf("t6: %p\t", tf->t6); - 80202fa0: 1184b583 ld a1,280(s1) - 80202fa4: 00008517 auipc a0,0x8 - 80202fa8: 91450513 addi a0,a0,-1772 # 8020a8b8 <digits+0x538> - 80202fac: ffffd097 auipc ra,0xffffd - 80202fb0: 1e2080e7 jalr 482(ra) # 8020018e <printf> + 80202fa4: 1184b583 ld a1,280(s1) + 80202fa8: 00008517 auipc a0,0x8 + 80202fac: 91050513 addi a0,a0,-1776 # 8020a8b8 <digits+0x538> + 80202fb0: ffffd097 auipc ra,0xffffd + 80202fb4: 1de080e7 jalr 478(ra) # 8020018e <printf> printf("s0: %p\n", tf->s0); - 80202fb4: 70ac ld a1,96(s1) - 80202fb6: 00008517 auipc a0,0x8 - 80202fba: 90a50513 addi a0,a0,-1782 # 8020a8c0 <digits+0x540> - 80202fbe: ffffd097 auipc ra,0xffffd - 80202fc2: 1d0080e7 jalr 464(ra) # 8020018e <printf> + 80202fb8: 70ac ld a1,96(s1) + 80202fba: 00008517 auipc a0,0x8 + 80202fbe: 90650513 addi a0,a0,-1786 # 8020a8c0 <digits+0x540> + 80202fc2: ffffd097 auipc ra,0xffffd + 80202fc6: 1cc080e7 jalr 460(ra) # 8020018e <printf> printf("s1: %p\t", tf->s1); - 80202fc6: 74ac ld a1,104(s1) - 80202fc8: 00008517 auipc a0,0x8 - 80202fcc: 90050513 addi a0,a0,-1792 # 8020a8c8 <digits+0x548> - 80202fd0: ffffd097 auipc ra,0xffffd - 80202fd4: 1be080e7 jalr 446(ra) # 8020018e <printf> + 80202fca: 74ac ld a1,104(s1) + 80202fcc: 00008517 auipc a0,0x8 + 80202fd0: 8fc50513 addi a0,a0,-1796 # 8020a8c8 <digits+0x548> + 80202fd4: ffffd097 auipc ra,0xffffd + 80202fd8: 1ba080e7 jalr 442(ra) # 8020018e <printf> printf("s2: %p\t", tf->s2); - 80202fd8: 78cc ld a1,176(s1) - 80202fda: 00008517 auipc a0,0x8 - 80202fde: 8f650513 addi a0,a0,-1802 # 8020a8d0 <digits+0x550> - 80202fe2: ffffd097 auipc ra,0xffffd - 80202fe6: 1ac080e7 jalr 428(ra) # 8020018e <printf> + 80202fdc: 78cc ld a1,176(s1) + 80202fde: 00008517 auipc a0,0x8 + 80202fe2: 8f250513 addi a0,a0,-1806 # 8020a8d0 <digits+0x550> + 80202fe6: ffffd097 auipc ra,0xffffd + 80202fea: 1a8080e7 jalr 424(ra) # 8020018e <printf> printf("s3: %p\t", tf->s3); - 80202fea: 7ccc ld a1,184(s1) - 80202fec: 00008517 auipc a0,0x8 - 80202ff0: 8ec50513 addi a0,a0,-1812 # 8020a8d8 <digits+0x558> - 80202ff4: ffffd097 auipc ra,0xffffd - 80202ff8: 19a080e7 jalr 410(ra) # 8020018e <printf> + 80202fee: 7ccc ld a1,184(s1) + 80202ff0: 00008517 auipc a0,0x8 + 80202ff4: 8e850513 addi a0,a0,-1816 # 8020a8d8 <digits+0x558> + 80202ff8: ffffd097 auipc ra,0xffffd + 80202ffc: 196080e7 jalr 406(ra) # 8020018e <printf> printf("s4: %p\n", tf->s4); - 80202ffc: 60ec ld a1,192(s1) - 80202ffe: 00008517 auipc a0,0x8 - 80203002: 8e250513 addi a0,a0,-1822 # 8020a8e0 <digits+0x560> - 80203006: ffffd097 auipc ra,0xffffd - 8020300a: 188080e7 jalr 392(ra) # 8020018e <printf> + 80203000: 60ec ld a1,192(s1) + 80203002: 00008517 auipc a0,0x8 + 80203006: 8de50513 addi a0,a0,-1826 # 8020a8e0 <digits+0x560> + 8020300a: ffffd097 auipc ra,0xffffd + 8020300e: 184080e7 jalr 388(ra) # 8020018e <printf> printf("s5: %p\t", tf->s5); - 8020300e: 64ec ld a1,200(s1) - 80203010: 00008517 auipc a0,0x8 - 80203014: 8d850513 addi a0,a0,-1832 # 8020a8e8 <digits+0x568> - 80203018: ffffd097 auipc ra,0xffffd - 8020301c: 176080e7 jalr 374(ra) # 8020018e <printf> + 80203012: 64ec ld a1,200(s1) + 80203014: 00008517 auipc a0,0x8 + 80203018: 8d450513 addi a0,a0,-1836 # 8020a8e8 <digits+0x568> + 8020301c: ffffd097 auipc ra,0xffffd + 80203020: 172080e7 jalr 370(ra) # 8020018e <printf> printf("s6: %p\t", tf->s6); - 80203020: 68ec ld a1,208(s1) - 80203022: 00008517 auipc a0,0x8 - 80203026: 8ce50513 addi a0,a0,-1842 # 8020a8f0 <digits+0x570> - 8020302a: ffffd097 auipc ra,0xffffd - 8020302e: 164080e7 jalr 356(ra) # 8020018e <printf> + 80203024: 68ec ld a1,208(s1) + 80203026: 00008517 auipc a0,0x8 + 8020302a: 8ca50513 addi a0,a0,-1846 # 8020a8f0 <digits+0x570> + 8020302e: ffffd097 auipc ra,0xffffd + 80203032: 160080e7 jalr 352(ra) # 8020018e <printf> printf("s7: %p\t", tf->s7); - 80203032: 6cec ld a1,216(s1) - 80203034: 00008517 auipc a0,0x8 - 80203038: 8c450513 addi a0,a0,-1852 # 8020a8f8 <digits+0x578> - 8020303c: ffffd097 auipc ra,0xffffd - 80203040: 152080e7 jalr 338(ra) # 8020018e <printf> + 80203036: 6cec ld a1,216(s1) + 80203038: 00008517 auipc a0,0x8 + 8020303c: 8c050513 addi a0,a0,-1856 # 8020a8f8 <digits+0x578> + 80203040: ffffd097 auipc ra,0xffffd + 80203044: 14e080e7 jalr 334(ra) # 8020018e <printf> printf("s8: %p\n", tf->s8); - 80203044: 70ec ld a1,224(s1) - 80203046: 00008517 auipc a0,0x8 - 8020304a: 8ba50513 addi a0,a0,-1862 # 8020a900 <digits+0x580> - 8020304e: ffffd097 auipc ra,0xffffd - 80203052: 140080e7 jalr 320(ra) # 8020018e <printf> + 80203048: 70ec ld a1,224(s1) + 8020304a: 00008517 auipc a0,0x8 + 8020304e: 8b650513 addi a0,a0,-1866 # 8020a900 <digits+0x580> + 80203052: ffffd097 auipc ra,0xffffd + 80203056: 13c080e7 jalr 316(ra) # 8020018e <printf> printf("s9: %p\t", tf->s9); - 80203056: 74ec ld a1,232(s1) - 80203058: 00008517 auipc a0,0x8 - 8020305c: 8b050513 addi a0,a0,-1872 # 8020a908 <digits+0x588> - 80203060: ffffd097 auipc ra,0xffffd - 80203064: 12e080e7 jalr 302(ra) # 8020018e <printf> + 8020305a: 74ec ld a1,232(s1) + 8020305c: 00008517 auipc a0,0x8 + 80203060: 8ac50513 addi a0,a0,-1876 # 8020a908 <digits+0x588> + 80203064: ffffd097 auipc ra,0xffffd + 80203068: 12a080e7 jalr 298(ra) # 8020018e <printf> printf("s10: %p\t", tf->s10); - 80203068: 78ec ld a1,240(s1) - 8020306a: 00008517 auipc a0,0x8 - 8020306e: 8a650513 addi a0,a0,-1882 # 8020a910 <digits+0x590> - 80203072: ffffd097 auipc ra,0xffffd - 80203076: 11c080e7 jalr 284(ra) # 8020018e <printf> + 8020306c: 78ec ld a1,240(s1) + 8020306e: 00008517 auipc a0,0x8 + 80203072: 8a250513 addi a0,a0,-1886 # 8020a910 <digits+0x590> + 80203076: ffffd097 auipc ra,0xffffd + 8020307a: 118080e7 jalr 280(ra) # 8020018e <printf> printf("s11: %p\t", tf->s11); - 8020307a: 7cec ld a1,248(s1) - 8020307c: 00008517 auipc a0,0x8 - 80203080: 8a450513 addi a0,a0,-1884 # 8020a920 <digits+0x5a0> - 80203084: ffffd097 auipc ra,0xffffd - 80203088: 10a080e7 jalr 266(ra) # 8020018e <printf> + 8020307e: 7cec ld a1,248(s1) + 80203080: 00008517 auipc a0,0x8 + 80203084: 8a050513 addi a0,a0,-1888 # 8020a920 <digits+0x5a0> + 80203088: ffffd097 auipc ra,0xffffd + 8020308c: 106080e7 jalr 262(ra) # 8020018e <printf> printf("ra: %p\n", tf->ra); - 8020308c: 748c ld a1,40(s1) - 8020308e: 00007517 auipc a0,0x7 - 80203092: 58250513 addi a0,a0,1410 # 8020a610 <digits+0x290> - 80203096: ffffd097 auipc ra,0xffffd - 8020309a: 0f8080e7 jalr 248(ra) # 8020018e <printf> + 80203090: 748c ld a1,40(s1) + 80203092: 00007517 auipc a0,0x7 + 80203096: 57e50513 addi a0,a0,1406 # 8020a610 <digits+0x290> + 8020309a: ffffd097 auipc ra,0xffffd + 8020309e: 0f4080e7 jalr 244(ra) # 8020018e <printf> printf("sp: %p\t", tf->sp); - 8020309e: 788c ld a1,48(s1) - 802030a0: 00008517 auipc a0,0x8 - 802030a4: 89050513 addi a0,a0,-1904 # 8020a930 <digits+0x5b0> - 802030a8: ffffd097 auipc ra,0xffffd - 802030ac: 0e6080e7 jalr 230(ra) # 8020018e <printf> + 802030a2: 788c ld a1,48(s1) + 802030a4: 00008517 auipc a0,0x8 + 802030a8: 88c50513 addi a0,a0,-1908 # 8020a930 <digits+0x5b0> + 802030ac: ffffd097 auipc ra,0xffffd + 802030b0: 0e2080e7 jalr 226(ra) # 8020018e <printf> printf("gp: %p\t", tf->gp); - 802030b0: 7c8c ld a1,56(s1) - 802030b2: 00008517 auipc a0,0x8 - 802030b6: 88650513 addi a0,a0,-1914 # 8020a938 <digits+0x5b8> - 802030ba: ffffd097 auipc ra,0xffffd - 802030be: 0d4080e7 jalr 212(ra) # 8020018e <printf> + 802030b4: 7c8c ld a1,56(s1) + 802030b6: 00008517 auipc a0,0x8 + 802030ba: 88250513 addi a0,a0,-1918 # 8020a938 <digits+0x5b8> + 802030be: ffffd097 auipc ra,0xffffd + 802030c2: 0d0080e7 jalr 208(ra) # 8020018e <printf> printf("tp: %p\t", tf->tp); - 802030c2: 60ac ld a1,64(s1) - 802030c4: 00008517 auipc a0,0x8 - 802030c8: 87c50513 addi a0,a0,-1924 # 8020a940 <digits+0x5c0> - 802030cc: ffffd097 auipc ra,0xffffd - 802030d0: 0c2080e7 jalr 194(ra) # 8020018e <printf> + 802030c6: 60ac ld a1,64(s1) + 802030c8: 00008517 auipc a0,0x8 + 802030cc: 87850513 addi a0,a0,-1928 # 8020a940 <digits+0x5c0> + 802030d0: ffffd097 auipc ra,0xffffd + 802030d4: 0be080e7 jalr 190(ra) # 8020018e <printf> printf("epc: %p\n", tf->epc); - 802030d4: 6c8c ld a1,24(s1) - 802030d6: 00008517 auipc a0,0x8 - 802030da: 87250513 addi a0,a0,-1934 # 8020a948 <digits+0x5c8> - 802030de: ffffd097 auipc ra,0xffffd - 802030e2: 0b0080e7 jalr 176(ra) # 8020018e <printf> + 802030d8: 6c8c ld a1,24(s1) + 802030da: 00008517 auipc a0,0x8 + 802030de: 86e50513 addi a0,a0,-1938 # 8020a948 <digits+0x5c8> + 802030e2: ffffd097 auipc ra,0xffffd + 802030e6: 0ac080e7 jalr 172(ra) # 8020018e <printf> } - 802030e6: 60e2 ld ra,24(sp) - 802030e8: 6442 ld s0,16(sp) - 802030ea: 64a2 ld s1,8(sp) - 802030ec: 6105 addi sp,sp,32 - 802030ee: 8082 ret + 802030ea: 60e2 ld ra,24(sp) + 802030ec: 6442 ld s0,16(sp) + 802030ee: 64a2 ld s1,8(sp) + 802030f0: 6105 addi sp,sp,32 + 802030f2: 8082 ret -00000000802030f0 <argraw>: +00000000802030f4 <argraw>: return strlen(buf); } static uint64 argraw(int n) { - 802030f0: 1101 addi sp,sp,-32 - 802030f2: ec06 sd ra,24(sp) - 802030f4: e822 sd s0,16(sp) - 802030f6: e426 sd s1,8(sp) - 802030f8: 1000 addi s0,sp,32 - 802030fa: 84aa mv s1,a0 + 802030f4: 1101 addi sp,sp,-32 + 802030f6: ec06 sd ra,24(sp) + 802030f8: e822 sd s0,16(sp) + 802030fa: e426 sd s1,8(sp) + 802030fc: 1000 addi s0,sp,32 + 802030fe: 84aa mv s1,a0 struct proc *p = myproc(); - 802030fc: fffff097 auipc ra,0xfffff - 80203100: 940080e7 jalr -1728(ra) # 80201a3c <myproc> + 80203100: fffff097 auipc ra,0xfffff + 80203104: 93c080e7 jalr -1732(ra) # 80201a3c <myproc> switch (n) { - 80203104: 4795 li a5,5 - 80203106: 0497e163 bltu a5,s1,80203148 <argraw+0x58> - 8020310a: 048a slli s1,s1,0x2 - 8020310c: 00008717 auipc a4,0x8 - 80203110: 9b470713 addi a4,a4,-1612 # 8020aac0 <digits+0x740> - 80203114: 94ba add s1,s1,a4 - 80203116: 409c lw a5,0(s1) - 80203118: 97ba add a5,a5,a4 - 8020311a: 8782 jr a5 + 80203108: 4795 li a5,5 + 8020310a: 0497e163 bltu a5,s1,8020314c <argraw+0x58> + 8020310e: 048a slli s1,s1,0x2 + 80203110: 00008717 auipc a4,0x8 + 80203114: 9b070713 addi a4,a4,-1616 # 8020aac0 <digits+0x740> + 80203118: 94ba add s1,s1,a4 + 8020311a: 409c lw a5,0(s1) + 8020311c: 97ba add a5,a5,a4 + 8020311e: 8782 jr a5 case 0: return p->trapframe->a0; - 8020311c: 713c ld a5,96(a0) - 8020311e: 7ba8 ld a0,112(a5) + 80203120: 713c ld a5,96(a0) + 80203122: 7ba8 ld a0,112(a5) case 5: return p->trapframe->a5; } panic("argraw"); return -1; } - 80203120: 60e2 ld ra,24(sp) - 80203122: 6442 ld s0,16(sp) - 80203124: 64a2 ld s1,8(sp) - 80203126: 6105 addi sp,sp,32 - 80203128: 8082 ret + 80203124: 60e2 ld ra,24(sp) + 80203126: 6442 ld s0,16(sp) + 80203128: 64a2 ld s1,8(sp) + 8020312a: 6105 addi sp,sp,32 + 8020312c: 8082 ret return p->trapframe->a1; - 8020312a: 713c ld a5,96(a0) - 8020312c: 7fa8 ld a0,120(a5) - 8020312e: bfcd j 80203120 <argraw+0x30> + 8020312e: 713c ld a5,96(a0) + 80203130: 7fa8 ld a0,120(a5) + 80203132: bfcd j 80203124 <argraw+0x30> return p->trapframe->a2; - 80203130: 713c ld a5,96(a0) - 80203132: 63c8 ld a0,128(a5) - 80203134: b7f5 j 80203120 <argraw+0x30> + 80203134: 713c ld a5,96(a0) + 80203136: 63c8 ld a0,128(a5) + 80203138: b7f5 j 80203124 <argraw+0x30> return p->trapframe->a3; - 80203136: 713c ld a5,96(a0) - 80203138: 67c8 ld a0,136(a5) - 8020313a: b7dd j 80203120 <argraw+0x30> + 8020313a: 713c ld a5,96(a0) + 8020313c: 67c8 ld a0,136(a5) + 8020313e: b7dd j 80203124 <argraw+0x30> return p->trapframe->a4; - 8020313c: 713c ld a5,96(a0) - 8020313e: 6bc8 ld a0,144(a5) - 80203140: b7c5 j 80203120 <argraw+0x30> + 80203140: 713c ld a5,96(a0) + 80203142: 6bc8 ld a0,144(a5) + 80203144: b7c5 j 80203124 <argraw+0x30> return p->trapframe->a5; - 80203142: 713c ld a5,96(a0) - 80203144: 6fc8 ld a0,152(a5) - 80203146: bfe9 j 80203120 <argraw+0x30> + 80203146: 713c ld a5,96(a0) + 80203148: 6fc8 ld a0,152(a5) + 8020314a: bfe9 j 80203124 <argraw+0x30> panic("argraw"); - 80203148: 00008517 auipc a0,0x8 - 8020314c: 81050513 addi a0,a0,-2032 # 8020a958 <digits+0x5d8> - 80203150: ffffd097 auipc ra,0xffffd - 80203154: ff4080e7 jalr -12(ra) # 80200144 <panic> + 8020314c: 00008517 auipc a0,0x8 + 80203150: 80c50513 addi a0,a0,-2036 # 8020a958 <digits+0x5d8> + 80203154: ffffd097 auipc ra,0xffffd + 80203158: ff0080e7 jalr -16(ra) # 80200144 <panic> -0000000080203158 <sys_stat_syscall>: +000000008020315c <sys_stat_syscall>: return 0; } uint64 sys_stat_syscall(void) { - 80203158: 7179 addi sp,sp,-48 - 8020315a: f406 sd ra,40(sp) - 8020315c: f022 sd s0,32(sp) - 8020315e: ec26 sd s1,24(sp) - 80203160: e84a sd s2,16(sp) - 80203162: e44e sd s3,8(sp) - 80203164: e052 sd s4,0(sp) - 80203166: 1800 addi s0,sp,48 + 8020315c: 7179 addi sp,sp,-48 + 8020315e: f406 sd ra,40(sp) + 80203160: f022 sd s0,32(sp) + 80203162: ec26 sd s1,24(sp) + 80203164: e84a sd s2,16(sp) + 80203166: e44e sd s3,8(sp) + 80203168: e052 sd s4,0(sp) + 8020316a: 1800 addi s0,sp,48 printf("Name\t\tCount\n"); - 80203168: 00007517 auipc a0,0x7 - 8020316c: 7f850513 addi a0,a0,2040 # 8020a960 <digits+0x5e0> - 80203170: ffffd097 auipc ra,0xffffd - 80203174: 01e080e7 jalr 30(ra) # 8020018e <printf> + 8020316c: 00007517 auipc a0,0x7 + 80203170: 7f450513 addi a0,a0,2036 # 8020a960 <digits+0x5e0> + 80203174: ffffd097 auipc ra,0xffffd + 80203178: 01a080e7 jalr 26(ra) # 8020018e <printf> for (int i = 0; i < NELEM(syscalls); i++) { - 80203178: 0002a497 auipc s1,0x2a - 8020317c: c1848493 addi s1,s1,-1000 # 8022cd90 <syscall_counts> - 80203180: 00009917 auipc s2,0x9 - 80203184: 50090913 addi s2,s2,1280 # 8020c680 <sysnames> - 80203188: 0002a997 auipc s3,0x2a - 8020318c: 0c898993 addi s3,s3,200 # 8022d250 <bcache> + 8020317c: 0002a497 auipc s1,0x2a + 80203180: c1448493 addi s1,s1,-1004 # 8022cd90 <syscall_counts> + 80203184: 00009917 auipc s2,0x9 + 80203188: 4fc90913 addi s2,s2,1276 # 8020c680 <sysnames> + 8020318c: 0002a997 auipc s3,0x2a + 80203190: 0c498993 addi s3,s3,196 # 8022d250 <bcache> if (syscall_counts[i] > 0) { printf("%s\t\t%d\n", sysnames[i], syscall_counts[i]); - 80203190: 00007a17 auipc s4,0x7 - 80203194: 7e0a0a13 addi s4,s4,2016 # 8020a970 <digits+0x5f0> - 80203198: a029 j 802031a2 <sys_stat_syscall+0x4a> + 80203194: 00007a17 auipc s4,0x7 + 80203198: 7dca0a13 addi s4,s4,2012 # 8020a970 <digits+0x5f0> + 8020319c: a029 j 802031a6 <sys_stat_syscall+0x4a> for (int i = 0; i < NELEM(syscalls); i++) { - 8020319a: 0491 addi s1,s1,4 - 8020319c: 0921 addi s2,s2,8 - 8020319e: 01348d63 beq s1,s3,802031b8 <sys_stat_syscall+0x60> + 8020319e: 0491 addi s1,s1,4 + 802031a0: 0921 addi s2,s2,8 + 802031a2: 01348d63 beq s1,s3,802031bc <sys_stat_syscall+0x60> if (syscall_counts[i] > 0) { - 802031a2: 4090 lw a2,0(s1) - 802031a4: fec05be3 blez a2,8020319a <sys_stat_syscall+0x42> + 802031a6: 4090 lw a2,0(s1) + 802031a8: fec05be3 blez a2,8020319e <sys_stat_syscall+0x42> printf("%s\t\t%d\n", sysnames[i], syscall_counts[i]); - 802031a8: 00093583 ld a1,0(s2) - 802031ac: 8552 mv a0,s4 - 802031ae: ffffd097 auipc ra,0xffffd - 802031b2: fe0080e7 jalr -32(ra) # 8020018e <printf> - 802031b6: b7d5 j 8020319a <sys_stat_syscall+0x42> + 802031ac: 00093583 ld a1,0(s2) + 802031b0: 8552 mv a0,s4 + 802031b2: ffffd097 auipc ra,0xffffd + 802031b6: fdc080e7 jalr -36(ra) # 8020018e <printf> + 802031ba: b7d5 j 8020319e <sys_stat_syscall+0x42> } } return 0; } - 802031b8: 4501 li a0,0 - 802031ba: 70a2 ld ra,40(sp) - 802031bc: 7402 ld s0,32(sp) - 802031be: 64e2 ld s1,24(sp) - 802031c0: 6942 ld s2,16(sp) - 802031c2: 69a2 ld s3,8(sp) - 802031c4: 6a02 ld s4,0(sp) - 802031c6: 6145 addi sp,sp,48 - 802031c8: 8082 ret - -00000000802031ca <sys_uname>: + 802031bc: 4501 li a0,0 + 802031be: 70a2 ld ra,40(sp) + 802031c0: 7402 ld s0,32(sp) + 802031c2: 64e2 ld s1,24(sp) + 802031c4: 6942 ld s2,16(sp) + 802031c6: 69a2 ld s3,8(sp) + 802031c8: 6a02 ld s4,0(sp) + 802031ca: 6145 addi sp,sp,48 + 802031cc: 8082 ret + +00000000802031ce <sys_uname>: uint64 sys_uname(void) { - 802031ca: 7125 addi sp,sp,-416 - 802031cc: ef06 sd ra,408(sp) - 802031ce: eb22 sd s0,400(sp) - 802031d0: 1300 addi s0,sp,416 + 802031ce: 7125 addi sp,sp,-416 + 802031d0: ef06 sd ra,408(sp) + 802031d2: eb22 sd s0,400(sp) + 802031d4: 1300 addi s0,sp,416 *ip = argraw(n); - 802031d2: 4501 li a0,0 - 802031d4: 00000097 auipc ra,0x0 - 802031d8: f1c080e7 jalr -228(ra) # 802030f0 <argraw> + 802031d6: 4501 li a0,0 + 802031d8: 00000097 auipc ra,0x0 + 802031dc: f1c080e7 jalr -228(ra) # 802030f4 <argraw> uint64 uts; if (argaddr(0, &uts) < 0) { return -1; } struct utsname info={ - 802031dc: 00008797 auipc a5,0x8 - 802031e0: 8fc78793 addi a5,a5,-1796 # 8020aad8 <digits+0x758> - 802031e4: e6840713 addi a4,s0,-408 - 802031e8: 00008697 auipc a3,0x8 - 802031ec: a7068693 addi a3,a3,-1424 # 8020ac58 <digits+0x8d8> - 802031f0: 0007b883 ld a7,0(a5) - 802031f4: 0087b803 ld a6,8(a5) - 802031f8: 6b8c ld a1,16(a5) - 802031fa: 6f90 ld a2,24(a5) - 802031fc: 01173023 sd a7,0(a4) - 80203200: 01073423 sd a6,8(a4) - 80203204: eb0c sd a1,16(a4) - 80203206: ef10 sd a2,24(a4) - 80203208: 02078793 addi a5,a5,32 - 8020320c: 02070713 addi a4,a4,32 - 80203210: fed790e3 bne a5,a3,802031f0 <sys_uname+0x26> - 80203214: 4394 lw a3,0(a5) - 80203216: c314 sw a3,0(a4) - 80203218: 0047d783 lhu a5,4(a5) - 8020321c: 00f71223 sh a5,4(a4) + 802031e0: 00008797 auipc a5,0x8 + 802031e4: 8f878793 addi a5,a5,-1800 # 8020aad8 <digits+0x758> + 802031e8: e6840713 addi a4,s0,-408 + 802031ec: 00008697 auipc a3,0x8 + 802031f0: a6c68693 addi a3,a3,-1428 # 8020ac58 <digits+0x8d8> + 802031f4: 0007b883 ld a7,0(a5) + 802031f8: 0087b803 ld a6,8(a5) + 802031fc: 6b8c ld a1,16(a5) + 802031fe: 6f90 ld a2,24(a5) + 80203200: 01173023 sd a7,0(a4) + 80203204: 01073423 sd a6,8(a4) + 80203208: eb0c sd a1,16(a4) + 8020320a: ef10 sd a2,24(a4) + 8020320c: 02078793 addi a5,a5,32 + 80203210: 02070713 addi a4,a4,32 + 80203214: fed790e3 bne a5,a3,802031f4 <sys_uname+0x26> + 80203218: 4394 lw a3,0(a5) + 8020321a: c314 sw a3,0(a4) + 8020321c: 0047d783 lhu a5,4(a5) + 80203220: 00f71223 sh a5,4(a4) "0.0.1", "riscv64", "localdomain" }; if (copyout2(uts, (char *)&info, sizeof(info)) < 0) { - 80203220: 18600613 li a2,390 - 80203224: e6840593 addi a1,s0,-408 - 80203228: ffffe097 auipc ra,0xffffe - 8020322c: 14a080e7 jalr 330(ra) # 80201372 <copyout2> + 80203224: 18600613 li a2,390 + 80203228: e6840593 addi a1,s0,-408 + 8020322c: ffffe097 auipc ra,0xffffe + 80203230: 146080e7 jalr 326(ra) # 80201372 <copyout2> return -1; } return 0; - 80203230: 957d srai a0,a0,0x3f - 80203232: 60fa ld ra,408(sp) - 80203234: 645a ld s0,400(sp) - 80203236: 611d addi sp,sp,416 - 80203238: 8082 ret + 80203234: 957d srai a0,a0,0x3f + 80203236: 60fa ld ra,408(sp) + 80203238: 645a ld s0,400(sp) + 8020323a: 611d addi sp,sp,416 + 8020323c: 8082 ret -000000008020323a <sys_sysinfo>: +000000008020323e <sys_sysinfo>: { - 8020323a: 7179 addi sp,sp,-48 - 8020323c: f406 sd ra,40(sp) - 8020323e: f022 sd s0,32(sp) - 80203240: ec26 sd s1,24(sp) - 80203242: 1800 addi s0,sp,48 + 8020323e: 7179 addi sp,sp,-48 + 80203240: f406 sd ra,40(sp) + 80203242: f022 sd s0,32(sp) + 80203244: ec26 sd s1,24(sp) + 80203246: 1800 addi s0,sp,48 *ip = argraw(n); - 80203244: 4501 li a0,0 - 80203246: 00000097 auipc ra,0x0 - 8020324a: eaa080e7 jalr -342(ra) # 802030f0 <argraw> - 8020324e: 84aa mv s1,a0 + 80203248: 4501 li a0,0 + 8020324a: 00000097 auipc ra,0x0 + 8020324e: eaa080e7 jalr -342(ra) # 802030f4 <argraw> + 80203252: 84aa mv s1,a0 info.freemem = freemem_amount(); - 80203250: ffffd097 auipc ra,0xffffd - 80203254: 370080e7 jalr 880(ra) # 802005c0 <freemem_amount> - 80203258: fca43823 sd a0,-48(s0) + 80203254: ffffd097 auipc ra,0xffffd + 80203258: 36c080e7 jalr 876(ra) # 802005c0 <freemem_amount> + 8020325c: fca43823 sd a0,-48(s0) info.nproc = procnum(); - 8020325c: fffff097 auipc ra,0xfffff - 80203260: 69c080e7 jalr 1692(ra) # 802028f8 <procnum> - 80203264: fca43c23 sd a0,-40(s0) + 80203260: fffff097 auipc ra,0xfffff + 80203264: 692080e7 jalr 1682(ra) # 802028f2 <procnum> + 80203268: fca43c23 sd a0,-40(s0) if (copyout2(addr, (char *)&info, sizeof(info)) < 0) { - 80203268: 4641 li a2,16 - 8020326a: fd040593 addi a1,s0,-48 - 8020326e: 8526 mv a0,s1 - 80203270: ffffe097 auipc ra,0xffffe - 80203274: 102080e7 jalr 258(ra) # 80201372 <copyout2> + 8020326c: 4641 li a2,16 + 8020326e: fd040593 addi a1,s0,-48 + 80203272: 8526 mv a0,s1 + 80203274: ffffe097 auipc ra,0xffffe + 80203278: 0fe080e7 jalr 254(ra) # 80201372 <copyout2> } - 80203278: 957d srai a0,a0,0x3f - 8020327a: 70a2 ld ra,40(sp) - 8020327c: 7402 ld s0,32(sp) - 8020327e: 64e2 ld s1,24(sp) - 80203280: 6145 addi sp,sp,48 - 80203282: 8082 ret - -0000000080203284 <fetchaddr>: + 8020327c: 957d srai a0,a0,0x3f + 8020327e: 70a2 ld ra,40(sp) + 80203280: 7402 ld s0,32(sp) + 80203282: 64e2 ld s1,24(sp) + 80203284: 6145 addi sp,sp,48 + 80203286: 8082 ret + +0000000080203288 <fetchaddr>: { - 80203284: 1101 addi sp,sp,-32 - 80203286: ec06 sd ra,24(sp) - 80203288: e822 sd s0,16(sp) - 8020328a: e426 sd s1,8(sp) - 8020328c: e04a sd s2,0(sp) - 8020328e: 1000 addi s0,sp,32 - 80203290: 84aa mv s1,a0 - 80203292: 892e mv s2,a1 + 80203288: 1101 addi sp,sp,-32 + 8020328a: ec06 sd ra,24(sp) + 8020328c: e822 sd s0,16(sp) + 8020328e: e426 sd s1,8(sp) + 80203290: e04a sd s2,0(sp) + 80203292: 1000 addi s0,sp,32 + 80203294: 84aa mv s1,a0 + 80203296: 892e mv s2,a1 struct proc *p = myproc(); - 80203294: ffffe097 auipc ra,0xffffe - 80203298: 7a8080e7 jalr 1960(ra) # 80201a3c <myproc> + 80203298: ffffe097 auipc ra,0xffffe + 8020329c: 7a4080e7 jalr 1956(ra) # 80201a3c <myproc> if(addr >= p->sz || addr+sizeof(uint64) > p->sz) - 8020329c: 653c ld a5,72(a0) - 8020329e: 02f4f763 bgeu s1,a5,802032cc <fetchaddr+0x48> - 802032a2: 00848713 addi a4,s1,8 - 802032a6: 02e7e563 bltu a5,a4,802032d0 <fetchaddr+0x4c> + 802032a0: 653c ld a5,72(a0) + 802032a2: 02f4f763 bgeu s1,a5,802032d0 <fetchaddr+0x48> + 802032a6: 00848713 addi a4,s1,8 + 802032aa: 02e7e563 bltu a5,a4,802032d4 <fetchaddr+0x4c> if(copyin2((char *)ip, addr, sizeof(*ip)) != 0) - 802032aa: 4621 li a2,8 - 802032ac: 85a6 mv a1,s1 - 802032ae: 854a mv a0,s2 - 802032b0: ffffe097 auipc ra,0xffffe - 802032b4: 1a2080e7 jalr 418(ra) # 80201452 <copyin2> - 802032b8: 00a03533 snez a0,a0 - 802032bc: 40a00533 neg a0,a0 + 802032ae: 4621 li a2,8 + 802032b0: 85a6 mv a1,s1 + 802032b2: 854a mv a0,s2 + 802032b4: ffffe097 auipc ra,0xffffe + 802032b8: 19e080e7 jalr 414(ra) # 80201452 <copyin2> + 802032bc: 00a03533 snez a0,a0 + 802032c0: 40a00533 neg a0,a0 } - 802032c0: 60e2 ld ra,24(sp) - 802032c2: 6442 ld s0,16(sp) - 802032c4: 64a2 ld s1,8(sp) - 802032c6: 6902 ld s2,0(sp) - 802032c8: 6105 addi sp,sp,32 - 802032ca: 8082 ret + 802032c4: 60e2 ld ra,24(sp) + 802032c6: 6442 ld s0,16(sp) + 802032c8: 64a2 ld s1,8(sp) + 802032ca: 6902 ld s2,0(sp) + 802032cc: 6105 addi sp,sp,32 + 802032ce: 8082 ret return -1; - 802032cc: 557d li a0,-1 - 802032ce: bfcd j 802032c0 <fetchaddr+0x3c> 802032d0: 557d li a0,-1 - 802032d2: b7fd j 802032c0 <fetchaddr+0x3c> + 802032d2: bfcd j 802032c4 <fetchaddr+0x3c> + 802032d4: 557d li a0,-1 + 802032d6: b7fd j 802032c4 <fetchaddr+0x3c> -00000000802032d4 <fetchstr>: +00000000802032d8 <fetchstr>: { - 802032d4: 1101 addi sp,sp,-32 - 802032d6: ec06 sd ra,24(sp) - 802032d8: e822 sd s0,16(sp) - 802032da: e426 sd s1,8(sp) - 802032dc: 1000 addi s0,sp,32 - 802032de: 84ae mv s1,a1 + 802032d8: 1101 addi sp,sp,-32 + 802032da: ec06 sd ra,24(sp) + 802032dc: e822 sd s0,16(sp) + 802032de: e426 sd s1,8(sp) + 802032e0: 1000 addi s0,sp,32 + 802032e2: 84ae mv s1,a1 int err = copyinstr2(buf, addr, max); - 802032e0: 85aa mv a1,a0 - 802032e2: 8526 mv a0,s1 - 802032e4: ffffe097 auipc ra,0xffffe - 802032e8: 270080e7 jalr 624(ra) # 80201554 <copyinstr2> + 802032e4: 85aa mv a1,a0 + 802032e6: 8526 mv a0,s1 + 802032e8: ffffe097 auipc ra,0xffffe + 802032ec: 26c080e7 jalr 620(ra) # 80201554 <copyinstr2> if(err < 0) - 802032ec: 00054763 bltz a0,802032fa <fetchstr+0x26> + 802032f0: 00054763 bltz a0,802032fe <fetchstr+0x26> return strlen(buf); - 802032f0: 8526 mv a0,s1 - 802032f2: ffffd097 auipc ra,0xffffd - 802032f6: 5f4080e7 jalr 1524(ra) # 802008e6 <strlen> + 802032f4: 8526 mv a0,s1 + 802032f6: ffffd097 auipc ra,0xffffd + 802032fa: 5f0080e7 jalr 1520(ra) # 802008e6 <strlen> } - 802032fa: 60e2 ld ra,24(sp) - 802032fc: 6442 ld s0,16(sp) - 802032fe: 64a2 ld s1,8(sp) - 80203300: 6105 addi sp,sp,32 - 80203302: 8082 ret + 802032fe: 60e2 ld ra,24(sp) + 80203300: 6442 ld s0,16(sp) + 80203302: 64a2 ld s1,8(sp) + 80203304: 6105 addi sp,sp,32 + 80203306: 8082 ret -0000000080203304 <argint>: +0000000080203308 <argint>: { - 80203304: 1101 addi sp,sp,-32 - 80203306: ec06 sd ra,24(sp) - 80203308: e822 sd s0,16(sp) - 8020330a: e426 sd s1,8(sp) - 8020330c: 1000 addi s0,sp,32 - 8020330e: 84ae mv s1,a1 + 80203308: 1101 addi sp,sp,-32 + 8020330a: ec06 sd ra,24(sp) + 8020330c: e822 sd s0,16(sp) + 8020330e: e426 sd s1,8(sp) + 80203310: 1000 addi s0,sp,32 + 80203312: 84ae mv s1,a1 *ip = argraw(n); - 80203310: 00000097 auipc ra,0x0 - 80203314: de0080e7 jalr -544(ra) # 802030f0 <argraw> - 80203318: c088 sw a0,0(s1) + 80203314: 00000097 auipc ra,0x0 + 80203318: de0080e7 jalr -544(ra) # 802030f4 <argraw> + 8020331c: c088 sw a0,0(s1) } - 8020331a: 4501 li a0,0 - 8020331c: 60e2 ld ra,24(sp) - 8020331e: 6442 ld s0,16(sp) - 80203320: 64a2 ld s1,8(sp) - 80203322: 6105 addi sp,sp,32 - 80203324: 8082 ret - -0000000080203326 <sys_test_proc>: + 8020331e: 4501 li a0,0 + 80203320: 60e2 ld ra,24(sp) + 80203322: 6442 ld s0,16(sp) + 80203324: 64a2 ld s1,8(sp) + 80203326: 6105 addi sp,sp,32 + 80203328: 8082 ret + +000000008020332a <sys_test_proc>: sys_test_proc(void) { - 80203326: 1101 addi sp,sp,-32 - 80203328: ec06 sd ra,24(sp) - 8020332a: e822 sd s0,16(sp) - 8020332c: 1000 addi s0,sp,32 + 8020332a: 1101 addi sp,sp,-32 + 8020332c: ec06 sd ra,24(sp) + 8020332e: e822 sd s0,16(sp) + 80203330: 1000 addi s0,sp,32 argint(0, &n); - 8020332e: fec40593 addi a1,s0,-20 - 80203332: 4501 li a0,0 - 80203334: 00000097 auipc ra,0x0 - 80203338: fd0080e7 jalr -48(ra) # 80203304 <argint> + 80203332: fec40593 addi a1,s0,-20 + 80203336: 4501 li a0,0 + 80203338: 00000097 auipc ra,0x0 + 8020333c: fd0080e7 jalr -48(ra) # 80203308 <argint> printf("hello world from proc %d, hart %d, arg %d\n", myproc()->pid, r_tp(), n); - 8020333c: ffffe097 auipc ra,0xffffe - 80203340: 700080e7 jalr 1792(ra) # 80201a3c <myproc> - 80203344: 8612 mv a2,tp - 80203346: fec42683 lw a3,-20(s0) - 8020334a: 5d0c lw a1,56(a0) - 8020334c: 00007517 auipc a0,0x7 - 80203350: 62c50513 addi a0,a0,1580 # 8020a978 <digits+0x5f8> - 80203354: ffffd097 auipc ra,0xffffd - 80203358: e3a080e7 jalr -454(ra) # 8020018e <printf> + 80203340: ffffe097 auipc ra,0xffffe + 80203344: 6fc080e7 jalr 1788(ra) # 80201a3c <myproc> + 80203348: 8612 mv a2,tp + 8020334a: fec42683 lw a3,-20(s0) + 8020334e: 5d0c lw a1,56(a0) + 80203350: 00007517 auipc a0,0x7 + 80203354: 62850513 addi a0,a0,1576 # 8020a978 <digits+0x5f8> + 80203358: ffffd097 auipc ra,0xffffd + 8020335c: e36080e7 jalr -458(ra) # 8020018e <printf> } - 8020335c: 4501 li a0,0 - 8020335e: 60e2 ld ra,24(sp) - 80203360: 6442 ld s0,16(sp) - 80203362: 6105 addi sp,sp,32 - 80203364: 8082 ret + 80203360: 4501 li a0,0 + 80203362: 60e2 ld ra,24(sp) + 80203364: 6442 ld s0,16(sp) + 80203366: 6105 addi sp,sp,32 + 80203368: 8082 ret -0000000080203366 <argaddr>: +000000008020336a <argaddr>: { - 80203366: 1101 addi sp,sp,-32 - 80203368: ec06 sd ra,24(sp) - 8020336a: e822 sd s0,16(sp) - 8020336c: e426 sd s1,8(sp) - 8020336e: 1000 addi s0,sp,32 - 80203370: 84ae mv s1,a1 + 8020336a: 1101 addi sp,sp,-32 + 8020336c: ec06 sd ra,24(sp) + 8020336e: e822 sd s0,16(sp) + 80203370: e426 sd s1,8(sp) + 80203372: 1000 addi s0,sp,32 + 80203374: 84ae mv s1,a1 *ip = argraw(n); - 80203372: 00000097 auipc ra,0x0 - 80203376: d7e080e7 jalr -642(ra) # 802030f0 <argraw> - 8020337a: e088 sd a0,0(s1) + 80203376: 00000097 auipc ra,0x0 + 8020337a: d7e080e7 jalr -642(ra) # 802030f4 <argraw> + 8020337e: e088 sd a0,0(s1) } - 8020337c: 4501 li a0,0 - 8020337e: 60e2 ld ra,24(sp) - 80203380: 6442 ld s0,16(sp) - 80203382: 64a2 ld s1,8(sp) - 80203384: 6105 addi sp,sp,32 - 80203386: 8082 ret - -0000000080203388 <argstr>: + 80203380: 4501 li a0,0 + 80203382: 60e2 ld ra,24(sp) + 80203384: 6442 ld s0,16(sp) + 80203386: 64a2 ld s1,8(sp) + 80203388: 6105 addi sp,sp,32 + 8020338a: 8082 ret + +000000008020338c <argstr>: { - 80203388: 1101 addi sp,sp,-32 - 8020338a: ec06 sd ra,24(sp) - 8020338c: e822 sd s0,16(sp) - 8020338e: e426 sd s1,8(sp) - 80203390: e04a sd s2,0(sp) - 80203392: 1000 addi s0,sp,32 - 80203394: 84ae mv s1,a1 - 80203396: 8932 mv s2,a2 + 8020338c: 1101 addi sp,sp,-32 + 8020338e: ec06 sd ra,24(sp) + 80203390: e822 sd s0,16(sp) + 80203392: e426 sd s1,8(sp) + 80203394: e04a sd s2,0(sp) + 80203396: 1000 addi s0,sp,32 + 80203398: 84ae mv s1,a1 + 8020339a: 8932 mv s2,a2 *ip = argraw(n); - 80203398: 00000097 auipc ra,0x0 - 8020339c: d58080e7 jalr -680(ra) # 802030f0 <argraw> + 8020339c: 00000097 auipc ra,0x0 + 802033a0: d58080e7 jalr -680(ra) # 802030f4 <argraw> return fetchstr(addr, buf, max); - 802033a0: 864a mv a2,s2 - 802033a2: 85a6 mv a1,s1 - 802033a4: 00000097 auipc ra,0x0 - 802033a8: f30080e7 jalr -208(ra) # 802032d4 <fetchstr> + 802033a4: 864a mv a2,s2 + 802033a6: 85a6 mv a1,s1 + 802033a8: 00000097 auipc ra,0x0 + 802033ac: f30080e7 jalr -208(ra) # 802032d8 <fetchstr> } - 802033ac: 60e2 ld ra,24(sp) - 802033ae: 6442 ld s0,16(sp) - 802033b0: 64a2 ld s1,8(sp) - 802033b2: 6902 ld s2,0(sp) - 802033b4: 6105 addi sp,sp,32 - 802033b6: 8082 ret - -00000000802033b8 <syscall>: + 802033b0: 60e2 ld ra,24(sp) + 802033b2: 6442 ld s0,16(sp) + 802033b4: 64a2 ld s1,8(sp) + 802033b6: 6902 ld s2,0(sp) + 802033b8: 6105 addi sp,sp,32 + 802033ba: 8082 ret + +00000000802033bc <syscall>: { - 802033b8: 7179 addi sp,sp,-48 - 802033ba: f406 sd ra,40(sp) - 802033bc: f022 sd s0,32(sp) - 802033be: ec26 sd s1,24(sp) - 802033c0: e84a sd s2,16(sp) - 802033c2: e44e sd s3,8(sp) - 802033c4: 1800 addi s0,sp,48 + 802033bc: 7179 addi sp,sp,-48 + 802033be: f406 sd ra,40(sp) + 802033c0: f022 sd s0,32(sp) + 802033c2: ec26 sd s1,24(sp) + 802033c4: e84a sd s2,16(sp) + 802033c6: e44e sd s3,8(sp) + 802033c8: 1800 addi s0,sp,48 struct proc *p = myproc(); - 802033c6: ffffe097 auipc ra,0xffffe - 802033ca: 676080e7 jalr 1654(ra) # 80201a3c <myproc> - 802033ce: 84aa mv s1,a0 + 802033ca: ffffe097 auipc ra,0xffffe + 802033ce: 672080e7 jalr 1650(ra) # 80201a3c <myproc> + 802033d2: 84aa mv s1,a0 num = p->trapframe->a7; - 802033d0: 06053983 ld s3,96(a0) - 802033d4: 0a89b783 ld a5,168(s3) - 802033d8: 0007891b sext.w s2,a5 + 802033d4: 06053983 ld s3,96(a0) + 802033d8: 0a89b783 ld a5,168(s3) + 802033dc: 0007891b sext.w s2,a5 if(num > 0 && num < NELEM(syscalls) && syscalls[num]) { - 802033dc: 37fd addiw a5,a5,-1 - 802033de: 12e00713 li a4,302 - 802033e2: 06f76163 bltu a4,a5,80203444 <syscall+0x8c> - 802033e6: 00391713 slli a4,s2,0x3 - 802033ea: 00009797 auipc a5,0x9 - 802033ee: 91678793 addi a5,a5,-1770 # 8020bd00 <syscalls> - 802033f2: 97ba add a5,a5,a4 - 802033f4: 639c ld a5,0(a5) - 802033f6: c7b9 beqz a5,80203444 <syscall+0x8c> + 802033e0: 37fd addiw a5,a5,-1 + 802033e2: 12e00713 li a4,302 + 802033e6: 06f76163 bltu a4,a5,80203448 <syscall+0x8c> + 802033ea: 00391713 slli a4,s2,0x3 + 802033ee: 00009797 auipc a5,0x9 + 802033f2: 91278793 addi a5,a5,-1774 # 8020bd00 <syscalls> + 802033f6: 97ba add a5,a5,a4 + 802033f8: 639c ld a5,0(a5) + 802033fa: c7b9 beqz a5,80203448 <syscall+0x8c> p->trapframe->a0 = syscalls[num](); - 802033f8: 9782 jalr a5 - 802033fa: 06a9b823 sd a0,112(s3) + 802033fc: 9782 jalr a5 + 802033fe: 06a9b823 sd a0,112(s3) syscall_counts[num]++; - 802033fe: 00291713 slli a4,s2,0x2 - 80203402: 0002a797 auipc a5,0x2a - 80203406: 98e78793 addi a5,a5,-1650 # 8022cd90 <syscall_counts> - 8020340a: 97ba add a5,a5,a4 - 8020340c: 4398 lw a4,0(a5) - 8020340e: 2705 addiw a4,a4,1 - 80203410: c398 sw a4,0(a5) + 80203402: 00291713 slli a4,s2,0x2 + 80203406: 0002a797 auipc a5,0x2a + 8020340a: 98a78793 addi a5,a5,-1654 # 8022cd90 <syscall_counts> + 8020340e: 97ba add a5,a5,a4 + 80203410: 4398 lw a4,0(a5) + 80203412: 2705 addiw a4,a4,1 + 80203414: c398 sw a4,0(a5) if ((p->tmask & (1 << num)) != 0) { - 80203412: 4184a783 lw a5,1048(s1) - 80203416: 4127d7bb sraw a5,a5,s2 - 8020341a: 8b85 andi a5,a5,1 - 8020341c: c3b9 beqz a5,80203462 <syscall+0xaa> + 80203416: 4184a783 lw a5,1048(s1) + 8020341a: 4127d7bb sraw a5,a5,s2 + 8020341e: 8b85 andi a5,a5,1 + 80203420: c3b9 beqz a5,80203466 <syscall+0xaa> printf("pid %d: %s -> %d\n", p->pid, sysnames[num], p->trapframe->a0); - 8020341e: 70b8 ld a4,96(s1) - 80203420: 090e slli s2,s2,0x3 - 80203422: 00009797 auipc a5,0x9 - 80203426: 25e78793 addi a5,a5,606 # 8020c680 <sysnames> - 8020342a: 97ca add a5,a5,s2 - 8020342c: 7b34 ld a3,112(a4) - 8020342e: 6390 ld a2,0(a5) - 80203430: 5c8c lw a1,56(s1) - 80203432: 00007517 auipc a0,0x7 - 80203436: 57650513 addi a0,a0,1398 # 8020a9a8 <digits+0x628> - 8020343a: ffffd097 auipc ra,0xffffd - 8020343e: d54080e7 jalr -684(ra) # 8020018e <printf> - 80203442: a005 j 80203462 <syscall+0xaa> + 80203422: 70b8 ld a4,96(s1) + 80203424: 090e slli s2,s2,0x3 + 80203426: 00009797 auipc a5,0x9 + 8020342a: 25a78793 addi a5,a5,602 # 8020c680 <sysnames> + 8020342e: 97ca add a5,a5,s2 + 80203430: 7b34 ld a3,112(a4) + 80203432: 6390 ld a2,0(a5) + 80203434: 5c8c lw a1,56(s1) + 80203436: 00007517 auipc a0,0x7 + 8020343a: 57250513 addi a0,a0,1394 # 8020a9a8 <digits+0x628> + 8020343e: ffffd097 auipc ra,0xffffd + 80203442: d50080e7 jalr -688(ra) # 8020018e <printf> + 80203446: a005 j 80203466 <syscall+0xaa> printf("pid %d %s: unknown sys call %d\n", - 80203444: 86ca mv a3,s2 - 80203446: 40848613 addi a2,s1,1032 - 8020344a: 5c8c lw a1,56(s1) - 8020344c: 00007517 auipc a0,0x7 - 80203450: 57450513 addi a0,a0,1396 # 8020a9c0 <digits+0x640> - 80203454: ffffd097 auipc ra,0xffffd - 80203458: d3a080e7 jalr -710(ra) # 8020018e <printf> + 80203448: 86ca mv a3,s2 + 8020344a: 40848613 addi a2,s1,1032 + 8020344e: 5c8c lw a1,56(s1) + 80203450: 00007517 auipc a0,0x7 + 80203454: 57050513 addi a0,a0,1392 # 8020a9c0 <digits+0x640> + 80203458: ffffd097 auipc ra,0xffffd + 8020345c: d36080e7 jalr -714(ra) # 8020018e <printf> p->trapframe->a0 = -1; - 8020345c: 70bc ld a5,96(s1) - 8020345e: 577d li a4,-1 - 80203460: fbb8 sd a4,112(a5) + 80203460: 70bc ld a5,96(s1) + 80203462: 577d li a4,-1 + 80203464: fbb8 sd a4,112(a5) } - 80203462: 70a2 ld ra,40(sp) - 80203464: 7402 ld s0,32(sp) - 80203466: 64e2 ld s1,24(sp) - 80203468: 6942 ld s2,16(sp) - 8020346a: 69a2 ld s3,8(sp) - 8020346c: 6145 addi sp,sp,48 - 8020346e: 8082 ret - -0000000080203470 <sys_exec>: + 80203466: 70a2 ld ra,40(sp) + 80203468: 7402 ld s0,32(sp) + 8020346a: 64e2 ld s1,24(sp) + 8020346c: 6942 ld s2,16(sp) + 8020346e: 69a2 ld s3,8(sp) + 80203470: 6145 addi sp,sp,48 + 80203472: 8082 ret + +0000000080203474 <sys_exec>: uint64 tv_nsec; }; uint64 sys_exec(void) { - 80203470: d9010113 addi sp,sp,-624 - 80203474: 26113423 sd ra,616(sp) - 80203478: 26813023 sd s0,608(sp) - 8020347c: 24913c23 sd s1,600(sp) - 80203480: 25213823 sd s2,592(sp) - 80203484: 25313423 sd s3,584(sp) - 80203488: 25413023 sd s4,576(sp) - 8020348c: 23513c23 sd s5,568(sp) - 80203490: 23613823 sd s6,560(sp) - 80203494: 23713423 sd s7,552(sp) - 80203498: 1c80 addi s0,sp,624 + 80203474: d9010113 addi sp,sp,-624 + 80203478: 26113423 sd ra,616(sp) + 8020347c: 26813023 sd s0,608(sp) + 80203480: 24913c23 sd s1,600(sp) + 80203484: 25213823 sd s2,592(sp) + 80203488: 25313423 sd s3,584(sp) + 8020348c: 25413023 sd s4,576(sp) + 80203490: 23513c23 sd s5,568(sp) + 80203494: 23613823 sd s6,560(sp) + 80203498: 23713423 sd s7,552(sp) + 8020349c: 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){ - 8020349a: 10400613 li a2,260 - 8020349e: ea840593 addi a1,s0,-344 - 802034a2: 4501 li a0,0 - 802034a4: 00000097 auipc ra,0x0 - 802034a8: ee4080e7 jalr -284(ra) # 80203388 <argstr> + 8020349e: 10400613 li a2,260 + 802034a2: ea840593 addi a1,s0,-344 + 802034a6: 4501 li a0,0 + 802034a8: 00000097 auipc ra,0x0 + 802034ac: ee4080e7 jalr -284(ra) # 8020338c <argstr> return -1; - 802034ac: 597d li s2,-1 + 802034b0: 597d li s2,-1 if(argstr(0, path, FAT32_MAX_PATH) < 0 || argaddr(1, &uargv) < 0){ - 802034ae: 0c054c63 bltz a0,80203586 <sys_exec+0x116> - 802034b2: da040593 addi a1,s0,-608 - 802034b6: 4505 li a0,1 - 802034b8: 00000097 auipc ra,0x0 - 802034bc: eae080e7 jalr -338(ra) # 80203366 <argaddr> - 802034c0: 0c054363 bltz a0,80203586 <sys_exec+0x116> + 802034b2: 0c054c63 bltz a0,8020358a <sys_exec+0x116> + 802034b6: da040593 addi a1,s0,-608 + 802034ba: 4505 li a0,1 + 802034bc: 00000097 auipc ra,0x0 + 802034c0: eae080e7 jalr -338(ra) # 8020336a <argaddr> + 802034c4: 0c054363 bltz a0,8020358a <sys_exec+0x116> } memset(argv, 0, sizeof(argv)); - 802034c4: da840a13 addi s4,s0,-600 - 802034c8: 10000613 li a2,256 - 802034cc: 4581 li a1,0 - 802034ce: 8552 mv a0,s4 - 802034d0: ffffd097 auipc ra,0xffffd - 802034d4: 292080e7 jalr 658(ra) # 80200762 <memset> + 802034c8: da840a13 addi s4,s0,-600 + 802034cc: 10000613 li a2,256 + 802034d0: 4581 li a1,0 + 802034d2: 8552 mv a0,s4 + 802034d4: ffffd097 auipc ra,0xffffd + 802034d8: 28e080e7 jalr 654(ra) # 80200762 <memset> for(i=0;; i++){ if(i >= NELEM(argv)){ - 802034d8: 84d2 mv s1,s4 + 802034dc: 84d2 mv s1,s4 memset(argv, 0, sizeof(argv)); - 802034da: 89d2 mv s3,s4 - 802034dc: 4901 li s2,0 + 802034de: 89d2 mv s3,s4 + 802034e0: 4901 li s2,0 goto bad; } if(fetchaddr(uargv+sizeof(uint64)*i, (uint64*)&uarg) < 0){ - 802034de: d9840a93 addi s5,s0,-616 + 802034e2: d9840a93 addi s5,s0,-616 if(i >= NELEM(argv)){ - 802034e2: 02000b13 li s6,32 - 802034e6: 00090b9b sext.w s7,s2 + 802034e6: 02000b13 li s6,32 + 802034ea: 00090b9b sext.w s7,s2 if(fetchaddr(uargv+sizeof(uint64)*i, (uint64*)&uarg) < 0){ - 802034ea: 00391513 slli a0,s2,0x3 - 802034ee: 85d6 mv a1,s5 - 802034f0: da043783 ld a5,-608(s0) - 802034f4: 953e add a0,a0,a5 - 802034f6: 00000097 auipc ra,0x0 - 802034fa: d8e080e7 jalr -626(ra) # 80203284 <fetchaddr> - 802034fe: 02054a63 bltz a0,80203532 <sys_exec+0xc2> + 802034ee: 00391513 slli a0,s2,0x3 + 802034f2: 85d6 mv a1,s5 + 802034f4: da043783 ld a5,-608(s0) + 802034f8: 953e add a0,a0,a5 + 802034fa: 00000097 auipc ra,0x0 + 802034fe: d8e080e7 jalr -626(ra) # 80203288 <fetchaddr> + 80203502: 02054a63 bltz a0,80203536 <sys_exec+0xc2> goto bad; } if(uarg == 0){ - 80203502: d9843783 ld a5,-616(s0) - 80203506: c3b9 beqz a5,8020354c <sys_exec+0xdc> + 80203506: d9843783 ld a5,-616(s0) + 8020350a: c3b9 beqz a5,80203550 <sys_exec+0xdc> argv[i] = 0; break; } argv[i] = kalloc(); - 80203508: ffffd097 auipc ra,0xffffd - 8020350c: 052080e7 jalr 82(ra) # 8020055a <kalloc> - 80203510: 85aa mv a1,a0 - 80203512: 00a9b023 sd a0,0(s3) + 8020350c: ffffd097 auipc ra,0xffffd + 80203510: 04e080e7 jalr 78(ra) # 8020055a <kalloc> + 80203514: 85aa mv a1,a0 + 80203516: 00a9b023 sd a0,0(s3) if(argv[i] == 0) - 80203516: cd11 beqz a0,80203532 <sys_exec+0xc2> + 8020351a: cd11 beqz a0,80203536 <sys_exec+0xc2> goto bad; if(fetchstr(uarg, argv[i], PGSIZE) < 0) - 80203518: 6605 lui a2,0x1 - 8020351a: d9843503 ld a0,-616(s0) - 8020351e: 00000097 auipc ra,0x0 - 80203522: db6080e7 jalr -586(ra) # 802032d4 <fetchstr> - 80203526: 00054663 bltz a0,80203532 <sys_exec+0xc2> + 8020351c: 6605 lui a2,0x1 + 8020351e: d9843503 ld a0,-616(s0) + 80203522: 00000097 auipc ra,0x0 + 80203526: db6080e7 jalr -586(ra) # 802032d8 <fetchstr> + 8020352a: 00054663 bltz a0,80203536 <sys_exec+0xc2> if(i >= NELEM(argv)){ - 8020352a: 0905 addi s2,s2,1 - 8020352c: 09a1 addi s3,s3,8 - 8020352e: fb691ce3 bne s2,s6,802034e6 <sys_exec+0x76> + 8020352e: 0905 addi s2,s2,1 + 80203530: 09a1 addi s3,s3,8 + 80203532: fb691ce3 bne s2,s6,802034ea <sys_exec+0x76> kfree(argv[i]); return ret; bad: for(i = 0; i < NELEM(argv) && argv[i] != 0; i++) - 80203532: 100a0a13 addi s4,s4,256 - 80203536: 6088 ld a0,0(s1) - 80203538: c531 beqz a0,80203584 <sys_exec+0x114> + 80203536: 100a0a13 addi s4,s4,256 + 8020353a: 6088 ld a0,0(s1) + 8020353c: c531 beqz a0,80203588 <sys_exec+0x114> kfree(argv[i]); - 8020353a: ffffd097 auipc ra,0xffffd - 8020353e: f06080e7 jalr -250(ra) # 80200440 <kfree> + 8020353e: ffffd097 auipc ra,0xffffd + 80203542: f02080e7 jalr -254(ra) # 80200440 <kfree> for(i = 0; i < NELEM(argv) && argv[i] != 0; i++) - 80203542: 04a1 addi s1,s1,8 - 80203544: ff4499e3 bne s1,s4,80203536 <sys_exec+0xc6> + 80203546: 04a1 addi s1,s1,8 + 80203548: ff4499e3 bne s1,s4,8020353a <sys_exec+0xc6> return -1; - 80203548: 597d li s2,-1 - 8020354a: a835 j 80203586 <sys_exec+0x116> + 8020354c: 597d li s2,-1 + 8020354e: a835 j 8020358a <sys_exec+0x116> argv[i] = 0; - 8020354c: 0b8e slli s7,s7,0x3 - 8020354e: fb0b8793 addi a5,s7,-80 - 80203552: 00878bb3 add s7,a5,s0 - 80203556: de0bbc23 sd zero,-520(s7) + 80203550: 0b8e slli s7,s7,0x3 + 80203552: fb0b8793 addi a5,s7,-80 + 80203556: 00878bb3 add s7,a5,s0 + 8020355a: de0bbc23 sd zero,-520(s7) int ret = exec(path, argv); - 8020355a: da840593 addi a1,s0,-600 - 8020355e: ea840513 addi a0,s0,-344 - 80203562: 00001097 auipc ra,0x1 - 80203566: 214080e7 jalr 532(ra) # 80204776 <exec> - 8020356a: 892a mv s2,a0 + 8020355e: da840593 addi a1,s0,-600 + 80203562: ea840513 addi a0,s0,-344 + 80203566: 00001097 auipc ra,0x1 + 8020356a: 214080e7 jalr 532(ra) # 8020477a <exec> + 8020356e: 892a mv s2,a0 for(i = 0; i < NELEM(argv) && argv[i] != 0; i++) - 8020356c: 100a0a13 addi s4,s4,256 - 80203570: 6088 ld a0,0(s1) - 80203572: c911 beqz a0,80203586 <sys_exec+0x116> + 80203570: 100a0a13 addi s4,s4,256 + 80203574: 6088 ld a0,0(s1) + 80203576: c911 beqz a0,8020358a <sys_exec+0x116> kfree(argv[i]); - 80203574: ffffd097 auipc ra,0xffffd - 80203578: ecc080e7 jalr -308(ra) # 80200440 <kfree> + 80203578: ffffd097 auipc ra,0xffffd + 8020357c: ec8080e7 jalr -312(ra) # 80200440 <kfree> for(i = 0; i < NELEM(argv) && argv[i] != 0; i++) - 8020357c: 04a1 addi s1,s1,8 - 8020357e: ff4499e3 bne s1,s4,80203570 <sys_exec+0x100> - 80203582: a011 j 80203586 <sys_exec+0x116> + 80203580: 04a1 addi s1,s1,8 + 80203582: ff4499e3 bne s1,s4,80203574 <sys_exec+0x100> + 80203586: a011 j 8020358a <sys_exec+0x116> return -1; - 80203584: 597d li s2,-1 + 80203588: 597d li s2,-1 } - 80203586: 854a mv a0,s2 - 80203588: 26813083 ld ra,616(sp) - 8020358c: 26013403 ld s0,608(sp) - 80203590: 25813483 ld s1,600(sp) - 80203594: 25013903 ld s2,592(sp) - 80203598: 24813983 ld s3,584(sp) - 8020359c: 24013a03 ld s4,576(sp) - 802035a0: 23813a83 ld s5,568(sp) - 802035a4: 23013b03 ld s6,560(sp) - 802035a8: 22813b83 ld s7,552(sp) - 802035ac: 27010113 addi sp,sp,624 - 802035b0: 8082 ret - -00000000802035b2 <sys_exit>: + 8020358a: 854a mv a0,s2 + 8020358c: 26813083 ld ra,616(sp) + 80203590: 26013403 ld s0,608(sp) + 80203594: 25813483 ld s1,600(sp) + 80203598: 25013903 ld s2,592(sp) + 8020359c: 24813983 ld s3,584(sp) + 802035a0: 24013a03 ld s4,576(sp) + 802035a4: 23813a83 ld s5,568(sp) + 802035a8: 23013b03 ld s6,560(sp) + 802035ac: 22813b83 ld s7,552(sp) + 802035b0: 27010113 addi sp,sp,624 + 802035b4: 8082 ret + +00000000802035b6 <sys_exit>: uint64 sys_exit(void) { - 802035b2: 1101 addi sp,sp,-32 - 802035b4: ec06 sd ra,24(sp) - 802035b6: e822 sd s0,16(sp) - 802035b8: 1000 addi s0,sp,32 + 802035b6: 1101 addi sp,sp,-32 + 802035b8: ec06 sd ra,24(sp) + 802035ba: e822 sd s0,16(sp) + 802035bc: 1000 addi s0,sp,32 int n; if(argint(0, &n) < 0) - 802035ba: fec40593 addi a1,s0,-20 - 802035be: 4501 li a0,0 - 802035c0: 00000097 auipc ra,0x0 - 802035c4: d44080e7 jalr -700(ra) # 80203304 <argint> + 802035be: fec40593 addi a1,s0,-20 + 802035c2: 4501 li a0,0 + 802035c4: 00000097 auipc ra,0x0 + 802035c8: d44080e7 jalr -700(ra) # 80203308 <argint> return -1; - 802035c8: 57fd li a5,-1 + 802035cc: 57fd li a5,-1 if(argint(0, &n) < 0) - 802035ca: 00054963 bltz a0,802035dc <sys_exit+0x2a> + 802035ce: 00054963 bltz a0,802035e0 <sys_exit+0x2a> exit(n); - 802035ce: fec42503 lw a0,-20(s0) - 802035d2: fffff097 auipc ra,0xfffff - 802035d6: d0a080e7 jalr -758(ra) # 802022dc <exit> + 802035d2: fec42503 lw a0,-20(s0) + 802035d6: fffff097 auipc ra,0xfffff + 802035da: d00080e7 jalr -768(ra) # 802022d6 <exit> return 0; // not reached - 802035da: 4781 li a5,0 + 802035de: 4781 li a5,0 } - 802035dc: 853e mv a0,a5 - 802035de: 60e2 ld ra,24(sp) - 802035e0: 6442 ld s0,16(sp) - 802035e2: 6105 addi sp,sp,32 - 802035e4: 8082 ret + 802035e0: 853e mv a0,a5 + 802035e2: 60e2 ld ra,24(sp) + 802035e4: 6442 ld s0,16(sp) + 802035e6: 6105 addi sp,sp,32 + 802035e8: 8082 ret -00000000802035e6 <sys_getpid>: +00000000802035ea <sys_getpid>: uint64 sys_getpid(void) { - 802035e6: 1141 addi sp,sp,-16 - 802035e8: e406 sd ra,8(sp) - 802035ea: e022 sd s0,0(sp) - 802035ec: 0800 addi s0,sp,16 + 802035ea: 1141 addi sp,sp,-16 + 802035ec: e406 sd ra,8(sp) + 802035ee: e022 sd s0,0(sp) + 802035f0: 0800 addi s0,sp,16 return myproc()->pid; - 802035ee: ffffe097 auipc ra,0xffffe - 802035f2: 44e080e7 jalr 1102(ra) # 80201a3c <myproc> + 802035f2: ffffe097 auipc ra,0xffffe + 802035f6: 44a080e7 jalr 1098(ra) # 80201a3c <myproc> } - 802035f6: 5d08 lw a0,56(a0) - 802035f8: 60a2 ld ra,8(sp) - 802035fa: 6402 ld s0,0(sp) - 802035fc: 0141 addi sp,sp,16 - 802035fe: 8082 ret + 802035fa: 5d08 lw a0,56(a0) + 802035fc: 60a2 ld ra,8(sp) + 802035fe: 6402 ld s0,0(sp) + 80203600: 0141 addi sp,sp,16 + 80203602: 8082 ret -0000000080203600 <sys_fork>: +0000000080203604 <sys_fork>: uint64 sys_fork(void) { - 80203600: 1141 addi sp,sp,-16 - 80203602: e406 sd ra,8(sp) - 80203604: e022 sd s0,0(sp) - 80203606: 0800 addi s0,sp,16 + 80203604: 1141 addi sp,sp,-16 + 80203606: e406 sd ra,8(sp) + 80203608: e022 sd s0,0(sp) + 8020360a: 0800 addi s0,sp,16 return fork(); - 80203608: fffff097 auipc ra,0xfffff - 8020360c: 85c080e7 jalr -1956(ra) # 80201e64 <fork> + 8020360c: fffff097 auipc ra,0xfffff + 80203610: 852080e7 jalr -1966(ra) # 80201e5e <fork> } - 80203610: 60a2 ld ra,8(sp) - 80203612: 6402 ld s0,0(sp) - 80203614: 0141 addi sp,sp,16 - 80203616: 8082 ret + 80203614: 60a2 ld ra,8(sp) + 80203616: 6402 ld s0,0(sp) + 80203618: 0141 addi sp,sp,16 + 8020361a: 8082 ret -0000000080203618 <sys_clone>: +000000008020361c <sys_clone>: uint64 sys_clone(void) { - 80203618: 7139 addi sp,sp,-64 - 8020361a: fc06 sd ra,56(sp) - 8020361c: f822 sd s0,48(sp) - 8020361e: 0080 addi s0,sp,64 + 8020361c: 7139 addi sp,sp,-64 + 8020361e: fc06 sd ra,56(sp) + 80203620: f822 sd s0,48(sp) + 80203622: 0080 addi s0,sp,64 int flags; void *stack; int *ptid; uint64 tls; int *ctid; if(argint(0, &flags) < 0 || argaddr(1, (uint64*)&stack) < 0 || argaddr(2, (uint64*)&ptid) < 0 || argaddr(3, &tls) < 0 || argaddr(4, (uint64*)&ctid) < 0){ - 80203620: fec40593 addi a1,s0,-20 - 80203624: 4501 li a0,0 - 80203626: 00000097 auipc ra,0x0 - 8020362a: cde080e7 jalr -802(ra) # 80203304 <argint> + 80203624: fec40593 addi a1,s0,-20 + 80203628: 4501 li a0,0 + 8020362a: 00000097 auipc ra,0x0 + 8020362e: cde080e7 jalr -802(ra) # 80203308 <argint> return -1; - 8020362e: 57fd li a5,-1 + 80203632: 57fd li a5,-1 if(argint(0, &flags) < 0 || argaddr(1, (uint64*)&stack) < 0 || argaddr(2, (uint64*)&ptid) < 0 || argaddr(3, &tls) < 0 || argaddr(4, (uint64*)&ctid) < 0){ - 80203630: 06054963 bltz a0,802036a2 <sys_clone+0x8a> - 80203634: fe040593 addi a1,s0,-32 - 80203638: 4505 li a0,1 - 8020363a: 00000097 auipc ra,0x0 - 8020363e: d2c080e7 jalr -724(ra) # 80203366 <argaddr> + 80203634: 06054963 bltz a0,802036a6 <sys_clone+0x8a> + 80203638: fe040593 addi a1,s0,-32 + 8020363c: 4505 li a0,1 + 8020363e: 00000097 auipc ra,0x0 + 80203642: d2c080e7 jalr -724(ra) # 8020336a <argaddr> return -1; - 80203642: 57fd li a5,-1 + 80203646: 57fd li a5,-1 if(argint(0, &flags) < 0 || argaddr(1, (uint64*)&stack) < 0 || argaddr(2, (uint64*)&ptid) < 0 || argaddr(3, &tls) < 0 || argaddr(4, (uint64*)&ctid) < 0){ - 80203644: 04054f63 bltz a0,802036a2 <sys_clone+0x8a> - 80203648: fd840593 addi a1,s0,-40 - 8020364c: 4509 li a0,2 - 8020364e: 00000097 auipc ra,0x0 - 80203652: d18080e7 jalr -744(ra) # 80203366 <argaddr> + 80203648: 04054f63 bltz a0,802036a6 <sys_clone+0x8a> + 8020364c: fd840593 addi a1,s0,-40 + 80203650: 4509 li a0,2 + 80203652: 00000097 auipc ra,0x0 + 80203656: d18080e7 jalr -744(ra) # 8020336a <argaddr> return -1; - 80203656: 57fd li a5,-1 + 8020365a: 57fd li a5,-1 if(argint(0, &flags) < 0 || argaddr(1, (uint64*)&stack) < 0 || argaddr(2, (uint64*)&ptid) < 0 || argaddr(3, &tls) < 0 || argaddr(4, (uint64*)&ctid) < 0){ - 80203658: 04054563 bltz a0,802036a2 <sys_clone+0x8a> - 8020365c: fd040593 addi a1,s0,-48 - 80203660: 450d li a0,3 - 80203662: 00000097 auipc ra,0x0 - 80203666: d04080e7 jalr -764(ra) # 80203366 <argaddr> + 8020365c: 04054563 bltz a0,802036a6 <sys_clone+0x8a> + 80203660: fd040593 addi a1,s0,-48 + 80203664: 450d li a0,3 + 80203666: 00000097 auipc ra,0x0 + 8020366a: d04080e7 jalr -764(ra) # 8020336a <argaddr> return -1; - 8020366a: 57fd li a5,-1 + 8020366e: 57fd li a5,-1 if(argint(0, &flags) < 0 || argaddr(1, (uint64*)&stack) < 0 || argaddr(2, (uint64*)&ptid) < 0 || argaddr(3, &tls) < 0 || argaddr(4, (uint64*)&ctid) < 0){ - 8020366c: 02054b63 bltz a0,802036a2 <sys_clone+0x8a> - 80203670: fc840593 addi a1,s0,-56 - 80203674: 4511 li a0,4 - 80203676: 00000097 auipc ra,0x0 - 8020367a: cf0080e7 jalr -784(ra) # 80203366 <argaddr> + 80203670: 02054b63 bltz a0,802036a6 <sys_clone+0x8a> + 80203674: fc840593 addi a1,s0,-56 + 80203678: 4511 li a0,4 + 8020367a: 00000097 auipc ra,0x0 + 8020367e: cf0080e7 jalr -784(ra) # 8020336a <argaddr> return -1; - 8020367e: 57fd li a5,-1 + 80203682: 57fd li a5,-1 if(argint(0, &flags) < 0 || argaddr(1, (uint64*)&stack) < 0 || argaddr(2, (uint64*)&ptid) < 0 || argaddr(3, &tls) < 0 || argaddr(4, (uint64*)&ctid) < 0){ - 80203680: 02054163 bltz a0,802036a2 <sys_clone+0x8a> + 80203684: 02054163 bltz a0,802036a6 <sys_clone+0x8a> } return clone(flags, stack, ptid, tls, ctid); - 80203684: fc843703 ld a4,-56(s0) - 80203688: fd043683 ld a3,-48(s0) - 8020368c: fd843603 ld a2,-40(s0) - 80203690: fe043583 ld a1,-32(s0) - 80203694: fec42503 lw a0,-20(s0) - 80203698: fffff097 auipc ra,0xfffff - 8020369c: 94a080e7 jalr -1718(ra) # 80201fe2 <clone> - 802036a0: 87aa mv a5,a0 + 80203688: fc843703 ld a4,-56(s0) + 8020368c: fd043683 ld a3,-48(s0) + 80203690: fd843603 ld a2,-40(s0) + 80203694: fe043583 ld a1,-32(s0) + 80203698: fec42503 lw a0,-20(s0) + 8020369c: fffff097 auipc ra,0xfffff + 802036a0: 940080e7 jalr -1728(ra) # 80201fdc <clone> + 802036a4: 87aa mv a5,a0 } - 802036a2: 853e mv a0,a5 - 802036a4: 70e2 ld ra,56(sp) - 802036a6: 7442 ld s0,48(sp) - 802036a8: 6121 addi sp,sp,64 - 802036aa: 8082 ret + 802036a6: 853e mv a0,a5 + 802036a8: 70e2 ld ra,56(sp) + 802036aa: 7442 ld s0,48(sp) + 802036ac: 6121 addi sp,sp,64 + 802036ae: 8082 ret -00000000802036ac <sys_wait>: +00000000802036b0 <sys_wait>: uint64 sys_wait(void) { - 802036ac: 1101 addi sp,sp,-32 - 802036ae: ec06 sd ra,24(sp) - 802036b0: e822 sd s0,16(sp) - 802036b2: 1000 addi s0,sp,32 + 802036b0: 1101 addi sp,sp,-32 + 802036b2: ec06 sd ra,24(sp) + 802036b4: e822 sd s0,16(sp) + 802036b6: 1000 addi s0,sp,32 uint64 p; if(argaddr(0, &p) < 0) - 802036b4: fe840593 addi a1,s0,-24 - 802036b8: 4501 li a0,0 - 802036ba: 00000097 auipc ra,0x0 - 802036be: cac080e7 jalr -852(ra) # 80203366 <argaddr> - 802036c2: 87aa mv a5,a0 + 802036b8: fe840593 addi a1,s0,-24 + 802036bc: 4501 li a0,0 + 802036be: 00000097 auipc ra,0x0 + 802036c2: cac080e7 jalr -852(ra) # 8020336a <argaddr> + 802036c6: 87aa mv a5,a0 return -1; - 802036c4: 557d li a0,-1 + 802036c8: 557d li a0,-1 if(argaddr(0, &p) < 0) - 802036c6: 0007c863 bltz a5,802036d6 <sys_wait+0x2a> + 802036ca: 0007c863 bltz a5,802036da <sys_wait+0x2a> return wait(p); - 802036ca: fe843503 ld a0,-24(s0) - 802036ce: fffff097 auipc ra,0xfffff - 802036d2: dc8080e7 jalr -568(ra) # 80202496 <wait> + 802036ce: fe843503 ld a0,-24(s0) + 802036d2: fffff097 auipc ra,0xfffff + 802036d6: dbe080e7 jalr -578(ra) # 80202490 <wait> } - 802036d6: 60e2 ld ra,24(sp) - 802036d8: 6442 ld s0,16(sp) - 802036da: 6105 addi sp,sp,32 - 802036dc: 8082 ret + 802036da: 60e2 ld ra,24(sp) + 802036dc: 6442 ld s0,16(sp) + 802036de: 6105 addi sp,sp,32 + 802036e0: 8082 ret -00000000802036de <sys_wait4>: +00000000802036e2 <sys_wait4>: uint64 sys_wait4(void) { - 802036de: 7179 addi sp,sp,-48 - 802036e0: f406 sd ra,40(sp) - 802036e2: f022 sd s0,32(sp) - 802036e4: 1800 addi s0,sp,48 + 802036e2: 7179 addi sp,sp,-48 + 802036e4: f406 sd ra,40(sp) + 802036e6: f022 sd s0,32(sp) + 802036e8: 1800 addi s0,sp,48 int pid; int *status; int options; if(argint(0, &pid) < 0 || argaddr(1, (uint64*)&status) < 0 || argint(2, &options) < 0){ - 802036e6: fec40593 addi a1,s0,-20 - 802036ea: 4501 li a0,0 - 802036ec: 00000097 auipc ra,0x0 - 802036f0: c18080e7 jalr -1000(ra) # 80203304 <argint> + 802036ea: fec40593 addi a1,s0,-20 + 802036ee: 4501 li a0,0 + 802036f0: 00000097 auipc ra,0x0 + 802036f4: c18080e7 jalr -1000(ra) # 80203308 <argint> return -1; - 802036f4: 57fd li a5,-1 + 802036f8: 57fd li a5,-1 if(argint(0, &pid) < 0 || argaddr(1, (uint64*)&status) < 0 || argint(2, &options) < 0){ - 802036f6: 04054163 bltz a0,80203738 <sys_wait4+0x5a> - 802036fa: fe040593 addi a1,s0,-32 - 802036fe: 4505 li a0,1 - 80203700: 00000097 auipc ra,0x0 - 80203704: c66080e7 jalr -922(ra) # 80203366 <argaddr> + 802036fa: 04054163 bltz a0,8020373c <sys_wait4+0x5a> + 802036fe: fe040593 addi a1,s0,-32 + 80203702: 4505 li a0,1 + 80203704: 00000097 auipc ra,0x0 + 80203708: c66080e7 jalr -922(ra) # 8020336a <argaddr> return -1; - 80203708: 57fd li a5,-1 + 8020370c: 57fd li a5,-1 if(argint(0, &pid) < 0 || argaddr(1, (uint64*)&status) < 0 || argint(2, &options) < 0){ - 8020370a: 02054763 bltz a0,80203738 <sys_wait4+0x5a> - 8020370e: fdc40593 addi a1,s0,-36 - 80203712: 4509 li a0,2 - 80203714: 00000097 auipc ra,0x0 - 80203718: bf0080e7 jalr -1040(ra) # 80203304 <argint> + 8020370e: 02054763 bltz a0,8020373c <sys_wait4+0x5a> + 80203712: fdc40593 addi a1,s0,-36 + 80203716: 4509 li a0,2 + 80203718: 00000097 auipc ra,0x0 + 8020371c: bf0080e7 jalr -1040(ra) # 80203308 <argint> return -1; - 8020371c: 57fd li a5,-1 + 80203720: 57fd li a5,-1 if(argint(0, &pid) < 0 || argaddr(1, (uint64*)&status) < 0 || argint(2, &options) < 0){ - 8020371e: 00054d63 bltz a0,80203738 <sys_wait4+0x5a> + 80203722: 00054d63 bltz a0,8020373c <sys_wait4+0x5a> } return wait4(pid, status, options); - 80203722: fdc42603 lw a2,-36(s0) - 80203726: fe043583 ld a1,-32(s0) - 8020372a: fec42503 lw a0,-20(s0) - 8020372e: fffff097 auipc ra,0xfffff - 80203732: e82080e7 jalr -382(ra) # 802025b0 <wait4> - 80203736: 87aa mv a5,a0 + 80203726: fdc42603 lw a2,-36(s0) + 8020372a: fe043583 ld a1,-32(s0) + 8020372e: fec42503 lw a0,-20(s0) + 80203732: fffff097 auipc ra,0xfffff + 80203736: e78080e7 jalr -392(ra) # 802025aa <wait4> + 8020373a: 87aa mv a5,a0 } - 80203738: 853e mv a0,a5 - 8020373a: 70a2 ld ra,40(sp) - 8020373c: 7402 ld s0,32(sp) - 8020373e: 6145 addi sp,sp,48 - 80203740: 8082 ret + 8020373c: 853e mv a0,a5 + 8020373e: 70a2 ld ra,40(sp) + 80203740: 7402 ld s0,32(sp) + 80203742: 6145 addi sp,sp,48 + 80203744: 8082 ret -0000000080203742 <sys_sbrk>: +0000000080203746 <sys_sbrk>: uint64 sys_sbrk(void) { - 80203742: 7179 addi sp,sp,-48 - 80203744: f406 sd ra,40(sp) - 80203746: f022 sd s0,32(sp) - 80203748: ec26 sd s1,24(sp) - 8020374a: 1800 addi s0,sp,48 + 80203746: 7179 addi sp,sp,-48 + 80203748: f406 sd ra,40(sp) + 8020374a: f022 sd s0,32(sp) + 8020374c: ec26 sd s1,24(sp) + 8020374e: 1800 addi s0,sp,48 int addr; int n; if(argint(0, &n) < 0) - 8020374c: fdc40593 addi a1,s0,-36 - 80203750: 4501 li a0,0 - 80203752: 00000097 auipc ra,0x0 - 80203756: bb2080e7 jalr -1102(ra) # 80203304 <argint> - 8020375a: 87aa mv a5,a0 + 80203750: fdc40593 addi a1,s0,-36 + 80203754: 4501 li a0,0 + 80203756: 00000097 auipc ra,0x0 + 8020375a: bb2080e7 jalr -1102(ra) # 80203308 <argint> + 8020375e: 87aa mv a5,a0 return -1; - 8020375c: 557d li a0,-1 + 80203760: 557d li a0,-1 if(argint(0, &n) < 0) - 8020375e: 0207c063 bltz a5,8020377e <sys_sbrk+0x3c> + 80203762: 0207c063 bltz a5,80203782 <sys_sbrk+0x3c> addr = myproc()->sz; - 80203762: ffffe097 auipc ra,0xffffe - 80203766: 2da080e7 jalr 730(ra) # 80201a3c <myproc> - 8020376a: 4524 lw s1,72(a0) + 80203766: ffffe097 auipc ra,0xffffe + 8020376a: 2d6080e7 jalr 726(ra) # 80201a3c <myproc> + 8020376e: 4524 lw s1,72(a0) if(growproc(n) < 0) - 8020376c: fdc42503 lw a0,-36(s0) - 80203770: ffffe097 auipc ra,0xffffe - 80203774: 678080e7 jalr 1656(ra) # 80201de8 <growproc> - 80203778: 00054863 bltz a0,80203788 <sys_sbrk+0x46> + 80203770: fdc42503 lw a0,-36(s0) + 80203774: ffffe097 auipc ra,0xffffe + 80203778: 66e080e7 jalr 1646(ra) # 80201de2 <growproc> + 8020377c: 00054863 bltz a0,8020378c <sys_sbrk+0x46> return -1; return addr; - 8020377c: 8526 mv a0,s1 + 80203780: 8526 mv a0,s1 } - 8020377e: 70a2 ld ra,40(sp) - 80203780: 7402 ld s0,32(sp) - 80203782: 64e2 ld s1,24(sp) - 80203784: 6145 addi sp,sp,48 - 80203786: 8082 ret + 80203782: 70a2 ld ra,40(sp) + 80203784: 7402 ld s0,32(sp) + 80203786: 64e2 ld s1,24(sp) + 80203788: 6145 addi sp,sp,48 + 8020378a: 8082 ret return -1; - 80203788: 557d li a0,-1 - 8020378a: bfd5 j 8020377e <sys_sbrk+0x3c> + 8020378c: 557d li a0,-1 + 8020378e: bfd5 j 80203782 <sys_sbrk+0x3c> -000000008020378c <sys_sleep>: +0000000080203790 <sys_sleep>: uint64 sys_sleep(void) { - 8020378c: 7139 addi sp,sp,-64 - 8020378e: fc06 sd ra,56(sp) - 80203790: f822 sd s0,48(sp) - 80203792: f426 sd s1,40(sp) - 80203794: f04a sd s2,32(sp) - 80203796: ec4e sd s3,24(sp) - 80203798: 0080 addi s0,sp,64 + 80203790: 7139 addi sp,sp,-64 + 80203792: fc06 sd ra,56(sp) + 80203794: f822 sd s0,48(sp) + 80203796: f426 sd s1,40(sp) + 80203798: f04a sd s2,32(sp) + 8020379a: ec4e sd s3,24(sp) + 8020379c: 0080 addi s0,sp,64 int n; uint ticks0; if(argint(0, &n) < 0) - 8020379a: fcc40593 addi a1,s0,-52 - 8020379e: 4501 li a0,0 - 802037a0: 00000097 auipc ra,0x0 - 802037a4: b64080e7 jalr -1180(ra) # 80203304 <argint> + 8020379e: fcc40593 addi a1,s0,-52 + 802037a2: 4501 li a0,0 + 802037a4: 00000097 auipc ra,0x0 + 802037a8: b64080e7 jalr -1180(ra) # 80203308 <argint> return -1; - 802037a8: 57fd li a5,-1 + 802037ac: 57fd li a5,-1 if(argint(0, &n) < 0) - 802037aa: 06054763 bltz a0,80203818 <sys_sleep+0x8c> + 802037ae: 06054763 bltz a0,8020381c <sys_sleep+0x8c> acquire(&tickslock); - 802037ae: 0000a517 auipc a0,0xa - 802037b2: 89a53503 ld a0,-1894(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 802037b6: ffffd097 auipc ra,0xffffd - 802037ba: f10080e7 jalr -240(ra) # 802006c6 <acquire> + 802037b2: 0000a517 auipc a0,0xa + 802037b6: 89653503 ld a0,-1898(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 802037ba: ffffd097 auipc ra,0xffffd + 802037be: f0c080e7 jalr -244(ra) # 802006c6 <acquire> ticks0 = ticks; - 802037be: 0000a797 auipc a5,0xa - 802037c2: 89a7b783 ld a5,-1894(a5) # 8020d058 <_GLOBAL_OFFSET_TABLE_+0x40> - 802037c6: 0007a903 lw s2,0(a5) + 802037c2: 0000a797 auipc a5,0xa + 802037c6: 8967b783 ld a5,-1898(a5) # 8020d058 <_GLOBAL_OFFSET_TABLE_+0x40> + 802037ca: 0007a903 lw s2,0(a5) while(ticks - ticks0 < n){ - 802037ca: fcc42783 lw a5,-52(s0) - 802037ce: cf85 beqz a5,80203806 <sys_sleep+0x7a> + 802037ce: fcc42783 lw a5,-52(s0) + 802037d2: cf85 beqz a5,8020380a <sys_sleep+0x7a> if(myproc()->killed){ release(&tickslock); return -1; } sleep(&ticks, &tickslock); - 802037d0: 0000a997 auipc s3,0xa - 802037d4: 8789b983 ld s3,-1928(s3) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 802037d8: 0000a497 auipc s1,0xa - 802037dc: 8804b483 ld s1,-1920(s1) # 8020d058 <_GLOBAL_OFFSET_TABLE_+0x40> + 802037d4: 0000a997 auipc s3,0xa + 802037d8: 8749b983 ld s3,-1932(s3) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 802037dc: 0000a497 auipc s1,0xa + 802037e0: 87c4b483 ld s1,-1924(s1) # 8020d058 <_GLOBAL_OFFSET_TABLE_+0x40> if(myproc()->killed){ - 802037e0: ffffe097 auipc ra,0xffffe - 802037e4: 25c080e7 jalr 604(ra) # 80201a3c <myproc> - 802037e8: 591c lw a5,48(a0) - 802037ea: ef9d bnez a5,80203828 <sys_sleep+0x9c> + 802037e4: ffffe097 auipc ra,0xffffe + 802037e8: 258080e7 jalr 600(ra) # 80201a3c <myproc> + 802037ec: 591c lw a5,48(a0) + 802037ee: ef9d bnez a5,8020382c <sys_sleep+0x9c> sleep(&ticks, &tickslock); - 802037ec: 85ce mv a1,s3 - 802037ee: 8526 mv a0,s1 - 802037f0: fffff097 auipc ra,0xfffff - 802037f4: c28080e7 jalr -984(ra) # 80202418 <sleep> + 802037f0: 85ce mv a1,s3 + 802037f2: 8526 mv a0,s1 + 802037f4: fffff097 auipc ra,0xfffff + 802037f8: c1e080e7 jalr -994(ra) # 80202412 <sleep> while(ticks - ticks0 < n){ - 802037f8: 409c lw a5,0(s1) - 802037fa: 412787bb subw a5,a5,s2 - 802037fe: fcc42703 lw a4,-52(s0) - 80203802: fce7efe3 bltu a5,a4,802037e0 <sys_sleep+0x54> + 802037fc: 409c lw a5,0(s1) + 802037fe: 412787bb subw a5,a5,s2 + 80203802: fcc42703 lw a4,-52(s0) + 80203806: fce7efe3 bltu a5,a4,802037e4 <sys_sleep+0x54> } release(&tickslock); - 80203806: 0000a517 auipc a0,0xa - 8020380a: 84253503 ld a0,-1982(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 8020380e: ffffd097 auipc ra,0xffffd - 80203812: f0c080e7 jalr -244(ra) # 8020071a <release> + 8020380a: 0000a517 auipc a0,0xa + 8020380e: 83e53503 ld a0,-1986(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 80203812: ffffd097 auipc ra,0xffffd + 80203816: f08080e7 jalr -248(ra) # 8020071a <release> return 0; - 80203816: 4781 li a5,0 + 8020381a: 4781 li a5,0 } - 80203818: 853e mv a0,a5 - 8020381a: 70e2 ld ra,56(sp) - 8020381c: 7442 ld s0,48(sp) - 8020381e: 74a2 ld s1,40(sp) - 80203820: 7902 ld s2,32(sp) - 80203822: 69e2 ld s3,24(sp) - 80203824: 6121 addi sp,sp,64 - 80203826: 8082 ret + 8020381c: 853e mv a0,a5 + 8020381e: 70e2 ld ra,56(sp) + 80203820: 7442 ld s0,48(sp) + 80203822: 74a2 ld s1,40(sp) + 80203824: 7902 ld s2,32(sp) + 80203826: 69e2 ld s3,24(sp) + 80203828: 6121 addi sp,sp,64 + 8020382a: 8082 ret release(&tickslock); - 80203828: 0000a517 auipc a0,0xa - 8020382c: 82053503 ld a0,-2016(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 80203830: ffffd097 auipc ra,0xffffd - 80203834: eea080e7 jalr -278(ra) # 8020071a <release> + 8020382c: 0000a517 auipc a0,0xa + 80203830: 81c53503 ld a0,-2020(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 80203834: ffffd097 auipc ra,0xffffd + 80203838: ee6080e7 jalr -282(ra) # 8020071a <release> return -1; - 80203838: 57fd li a5,-1 - 8020383a: bff9 j 80203818 <sys_sleep+0x8c> + 8020383c: 57fd li a5,-1 + 8020383e: bff9 j 8020381c <sys_sleep+0x8c> -000000008020383c <sys_kill>: +0000000080203840 <sys_kill>: uint64 sys_kill(void) { - 8020383c: 1101 addi sp,sp,-32 - 8020383e: ec06 sd ra,24(sp) - 80203840: e822 sd s0,16(sp) - 80203842: 1000 addi s0,sp,32 + 80203840: 1101 addi sp,sp,-32 + 80203842: ec06 sd ra,24(sp) + 80203844: e822 sd s0,16(sp) + 80203846: 1000 addi s0,sp,32 int pid; if(argint(0, &pid) < 0) - 80203844: fec40593 addi a1,s0,-20 - 80203848: 4501 li a0,0 - 8020384a: 00000097 auipc ra,0x0 - 8020384e: aba080e7 jalr -1350(ra) # 80203304 <argint> - 80203852: 87aa mv a5,a0 + 80203848: fec40593 addi a1,s0,-20 + 8020384c: 4501 li a0,0 + 8020384e: 00000097 auipc ra,0x0 + 80203852: aba080e7 jalr -1350(ra) # 80203308 <argint> + 80203856: 87aa mv a5,a0 return -1; - 80203854: 557d li a0,-1 + 80203858: 557d li a0,-1 if(argint(0, &pid) < 0) - 80203856: 0007c863 bltz a5,80203866 <sys_kill+0x2a> + 8020385a: 0007c863 bltz a5,8020386a <sys_kill+0x2a> return kill(pid); - 8020385a: fec42503 lw a0,-20(s0) - 8020385e: fffff097 auipc ra,0xfffff - 80203862: f0c080e7 jalr -244(ra) # 8020276a <kill> + 8020385e: fec42503 lw a0,-20(s0) + 80203862: fffff097 auipc ra,0xfffff + 80203866: f02080e7 jalr -254(ra) # 80202764 <kill> } - 80203866: 60e2 ld ra,24(sp) - 80203868: 6442 ld s0,16(sp) - 8020386a: 6105 addi sp,sp,32 - 8020386c: 8082 ret + 8020386a: 60e2 ld ra,24(sp) + 8020386c: 6442 ld s0,16(sp) + 8020386e: 6105 addi sp,sp,32 + 80203870: 8082 ret -000000008020386e <sys_uptime>: +0000000080203872 <sys_uptime>: // return how many clock tick interrupts have occurred // since start. uint64 sys_uptime(void) { - 8020386e: 1101 addi sp,sp,-32 - 80203870: ec06 sd ra,24(sp) - 80203872: e822 sd s0,16(sp) - 80203874: e426 sd s1,8(sp) - 80203876: 1000 addi s0,sp,32 + 80203872: 1101 addi sp,sp,-32 + 80203874: ec06 sd ra,24(sp) + 80203876: e822 sd s0,16(sp) + 80203878: e426 sd s1,8(sp) + 8020387a: 1000 addi s0,sp,32 uint xticks; acquire(&tickslock); - 80203878: 00009517 auipc a0,0x9 - 8020387c: 7d053503 ld a0,2000(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 80203880: ffffd097 auipc ra,0xffffd - 80203884: e46080e7 jalr -442(ra) # 802006c6 <acquire> + 8020387c: 00009517 auipc a0,0x9 + 80203880: 7cc53503 ld a0,1996(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 80203884: ffffd097 auipc ra,0xffffd + 80203888: e42080e7 jalr -446(ra) # 802006c6 <acquire> xticks = ticks; - 80203888: 00009797 auipc a5,0x9 - 8020388c: 7d07b783 ld a5,2000(a5) # 8020d058 <_GLOBAL_OFFSET_TABLE_+0x40> - 80203890: 4384 lw s1,0(a5) + 8020388c: 00009797 auipc a5,0x9 + 80203890: 7cc7b783 ld a5,1996(a5) # 8020d058 <_GLOBAL_OFFSET_TABLE_+0x40> + 80203894: 4384 lw s1,0(a5) release(&tickslock); - 80203892: 00009517 auipc a0,0x9 - 80203896: 7b653503 ld a0,1974(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 8020389a: ffffd097 auipc ra,0xffffd - 8020389e: e80080e7 jalr -384(ra) # 8020071a <release> + 80203896: 00009517 auipc a0,0x9 + 8020389a: 7b253503 ld a0,1970(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 8020389e: ffffd097 auipc ra,0xffffd + 802038a2: e7c080e7 jalr -388(ra) # 8020071a <release> return xticks; } - 802038a2: 02049513 slli a0,s1,0x20 - 802038a6: 9101 srli a0,a0,0x20 - 802038a8: 60e2 ld ra,24(sp) - 802038aa: 6442 ld s0,16(sp) - 802038ac: 64a2 ld s1,8(sp) - 802038ae: 6105 addi sp,sp,32 - 802038b0: 8082 ret + 802038a6: 02049513 slli a0,s1,0x20 + 802038aa: 9101 srli a0,a0,0x20 + 802038ac: 60e2 ld ra,24(sp) + 802038ae: 6442 ld s0,16(sp) + 802038b0: 64a2 ld s1,8(sp) + 802038b2: 6105 addi sp,sp,32 + 802038b4: 8082 ret -00000000802038b2 <sys_trace>: +00000000802038b6 <sys_trace>: uint64 sys_trace(void) { - 802038b2: 1101 addi sp,sp,-32 - 802038b4: ec06 sd ra,24(sp) - 802038b6: e822 sd s0,16(sp) - 802038b8: 1000 addi s0,sp,32 + 802038b6: 1101 addi sp,sp,-32 + 802038b8: ec06 sd ra,24(sp) + 802038ba: e822 sd s0,16(sp) + 802038bc: 1000 addi s0,sp,32 int mask; if(argint(0, &mask) < 0) { - 802038ba: fec40593 addi a1,s0,-20 - 802038be: 4501 li a0,0 - 802038c0: 00000097 auipc ra,0x0 - 802038c4: a44080e7 jalr -1468(ra) # 80203304 <argint> + 802038be: fec40593 addi a1,s0,-20 + 802038c2: 4501 li a0,0 + 802038c4: 00000097 auipc ra,0x0 + 802038c8: a44080e7 jalr -1468(ra) # 80203308 <argint> return -1; - 802038c8: 57fd li a5,-1 + 802038cc: 57fd li a5,-1 if(argint(0, &mask) < 0) { - 802038ca: 00054b63 bltz a0,802038e0 <sys_trace+0x2e> + 802038ce: 00054b63 bltz a0,802038e4 <sys_trace+0x2e> } myproc()->tmask = mask; - 802038ce: ffffe097 auipc ra,0xffffe - 802038d2: 16e080e7 jalr 366(ra) # 80201a3c <myproc> - 802038d6: fec42783 lw a5,-20(s0) - 802038da: 40f52c23 sw a5,1048(a0) + 802038d2: ffffe097 auipc ra,0xffffe + 802038d6: 16a080e7 jalr 362(ra) # 80201a3c <myproc> + 802038da: fec42783 lw a5,-20(s0) + 802038de: 40f52c23 sw a5,1048(a0) return 0; - 802038de: 4781 li a5,0 + 802038e2: 4781 li a5,0 } - 802038e0: 853e mv a0,a5 - 802038e2: 60e2 ld ra,24(sp) - 802038e4: 6442 ld s0,16(sp) - 802038e6: 6105 addi sp,sp,32 - 802038e8: 8082 ret + 802038e4: 853e mv a0,a5 + 802038e6: 60e2 ld ra,24(sp) + 802038e8: 6442 ld s0,16(sp) + 802038ea: 6105 addi sp,sp,32 + 802038ec: 8082 ret -00000000802038ea <sys_times>: +00000000802038ee <sys_times>: uint64 sys_times(void) { - 802038ea: 7139 addi sp,sp,-64 - 802038ec: fc06 sd ra,56(sp) - 802038ee: f822 sd s0,48(sp) - 802038f0: 0080 addi s0,sp,64 + 802038ee: 7139 addi sp,sp,-64 + 802038f0: fc06 sd ra,56(sp) + 802038f2: f822 sd s0,48(sp) + 802038f4: 0080 addi s0,sp,64 struct tms t; uint64 addr; if(argaddr(0, &addr) < 0) { - 802038f2: fc840593 addi a1,s0,-56 - 802038f6: 4501 li a0,0 - 802038f8: 00000097 auipc ra,0x0 - 802038fc: a6e080e7 jalr -1426(ra) # 80203366 <argaddr> + 802038f6: fc840593 addi a1,s0,-56 + 802038fa: 4501 li a0,0 + 802038fc: 00000097 auipc ra,0x0 + 80203900: a6e080e7 jalr -1426(ra) # 8020336a <argaddr> return -1; - 80203900: 57fd li a5,-1 + 80203904: 57fd li a5,-1 if(argaddr(0, &addr) < 0) { - 80203902: 06054663 bltz a0,8020396e <sys_times+0x84> + 80203906: 06054663 bltz a0,80203972 <sys_times+0x84> } t.tms_utime = myproc()->utime; - 80203906: ffffe097 auipc ra,0xffffe - 8020390a: 136080e7 jalr 310(ra) # 80201a3c <myproc> - 8020390e: 42053783 ld a5,1056(a0) - 80203912: fcf43823 sd a5,-48(s0) + 8020390a: ffffe097 auipc ra,0xffffe + 8020390e: 132080e7 jalr 306(ra) # 80201a3c <myproc> + 80203912: 42053783 ld a5,1056(a0) + 80203916: fcf43823 sd a5,-48(s0) t.tms_stime = myproc()->stime; - 80203916: ffffe097 auipc ra,0xffffe - 8020391a: 126080e7 jalr 294(ra) # 80201a3c <myproc> - 8020391e: 42853783 ld a5,1064(a0) - 80203922: fcf43c23 sd a5,-40(s0) + 8020391a: ffffe097 auipc ra,0xffffe + 8020391e: 122080e7 jalr 290(ra) # 80201a3c <myproc> + 80203922: 42853783 ld a5,1064(a0) + 80203926: fcf43c23 sd a5,-40(s0) t.tms_cutime = myproc()->cutime; - 80203926: ffffe097 auipc ra,0xffffe - 8020392a: 116080e7 jalr 278(ra) # 80201a3c <myproc> - 8020392e: 43053783 ld a5,1072(a0) - 80203932: fef43023 sd a5,-32(s0) + 8020392a: ffffe097 auipc ra,0xffffe + 8020392e: 112080e7 jalr 274(ra) # 80201a3c <myproc> + 80203932: 43053783 ld a5,1072(a0) + 80203936: fef43023 sd a5,-32(s0) t.tms_cstime = myproc()->cstime; - 80203936: ffffe097 auipc ra,0xffffe - 8020393a: 106080e7 jalr 262(ra) # 80201a3c <myproc> - 8020393e: 43853783 ld a5,1080(a0) - 80203942: fef43423 sd a5,-24(s0) + 8020393a: ffffe097 auipc ra,0xffffe + 8020393e: 102080e7 jalr 258(ra) # 80201a3c <myproc> + 80203942: 43853783 ld a5,1080(a0) + 80203946: fef43423 sd a5,-24(s0) if(copyout2(addr, (char *)&t, sizeof(t)) < 0) { - 80203946: 02000613 li a2,32 - 8020394a: fd040593 addi a1,s0,-48 - 8020394e: fc843503 ld a0,-56(s0) - 80203952: ffffe097 auipc ra,0xffffe - 80203956: a20080e7 jalr -1504(ra) # 80201372 <copyout2> + 8020394a: 02000613 li a2,32 + 8020394e: fd040593 addi a1,s0,-48 + 80203952: fc843503 ld a0,-56(s0) + 80203956: ffffe097 auipc ra,0xffffe + 8020395a: a1c080e7 jalr -1508(ra) # 80201372 <copyout2> return -1; - 8020395a: 57fd li a5,-1 + 8020395e: 57fd li a5,-1 if(copyout2(addr, (char *)&t, sizeof(t)) < 0) { - 8020395c: 00054963 bltz a0,8020396e <sys_times+0x84> + 80203960: 00054963 bltz a0,80203972 <sys_times+0x84> } uint xticks; xticks = sys_uptime(); - 80203960: 00000097 auipc ra,0x0 - 80203964: f0e080e7 jalr -242(ra) # 8020386e <sys_uptime> + 80203964: 00000097 auipc ra,0x0 + 80203968: f0e080e7 jalr -242(ra) # 80203872 <sys_uptime> return xticks; - 80203968: 02051793 slli a5,a0,0x20 - 8020396c: 9381 srli a5,a5,0x20 + 8020396c: 02051793 slli a5,a0,0x20 + 80203970: 9381 srli a5,a5,0x20 } - 8020396e: 853e mv a0,a5 - 80203970: 70e2 ld ra,56(sp) - 80203972: 7442 ld s0,48(sp) - 80203974: 6121 addi sp,sp,64 - 80203976: 8082 ret + 80203972: 853e mv a0,a5 + 80203974: 70e2 ld ra,56(sp) + 80203976: 7442 ld s0,48(sp) + 80203978: 6121 addi sp,sp,64 + 8020397a: 8082 ret -0000000080203978 <sys_getppid>: +000000008020397c <sys_getppid>: uint64 sys_getppid(void) { - 80203978: 1141 addi sp,sp,-16 - 8020397a: e406 sd ra,8(sp) - 8020397c: e022 sd s0,0(sp) - 8020397e: 0800 addi s0,sp,16 + 8020397c: 1141 addi sp,sp,-16 + 8020397e: e406 sd ra,8(sp) + 80203980: e022 sd s0,0(sp) + 80203982: 0800 addi s0,sp,16 return myproc()->parent->pid; - 80203980: ffffe097 auipc ra,0xffffe - 80203984: 0bc080e7 jalr 188(ra) # 80201a3c <myproc> - 80203988: 711c ld a5,32(a0) + 80203984: ffffe097 auipc ra,0xffffe + 80203988: 0b8080e7 jalr 184(ra) # 80201a3c <myproc> + 8020398c: 711c ld a5,32(a0) } - 8020398a: 5f88 lw a0,56(a5) - 8020398c: 60a2 ld ra,8(sp) - 8020398e: 6402 ld s0,0(sp) - 80203990: 0141 addi sp,sp,16 - 80203992: 8082 ret + 8020398e: 5f88 lw a0,56(a5) + 80203990: 60a2 ld ra,8(sp) + 80203992: 6402 ld s0,0(sp) + 80203994: 0141 addi sp,sp,16 + 80203996: 8082 ret -0000000080203994 <sys_gettimeofday>: +0000000080203998 <sys_gettimeofday>: uint64 sys_gettimeofday(void){ - 80203994: 7179 addi sp,sp,-48 - 80203996: f406 sd ra,40(sp) - 80203998: f022 sd s0,32(sp) - 8020399a: 1800 addi s0,sp,48 + 80203998: 7179 addi sp,sp,-48 + 8020399a: f406 sd ra,40(sp) + 8020399c: f022 sd s0,32(sp) + 8020399e: 1800 addi s0,sp,48 struct timespec *ts; if(argaddr(0, (uint64*)&ts) < 0){ - 8020399c: fe840593 addi a1,s0,-24 - 802039a0: 4501 li a0,0 - 802039a2: 00000097 auipc ra,0x0 - 802039a6: 9c4080e7 jalr -1596(ra) # 80203366 <argaddr> - 802039aa: 87aa mv a5,a0 + 802039a0: fe840593 addi a1,s0,-24 + 802039a4: 4501 li a0,0 + 802039a6: 00000097 auipc ra,0x0 + 802039aa: 9c4080e7 jalr -1596(ra) # 8020336a <argaddr> + 802039ae: 87aa mv a5,a0 return -1; - 802039ac: 557d li a0,-1 + 802039b0: 557d li a0,-1 if(argaddr(0, (uint64*)&ts) < 0){ - 802039ae: 0207ca63 bltz a5,802039e2 <sys_gettimeofday+0x4e> + 802039b2: 0207ca63 bltz a5,802039e6 <sys_gettimeofday+0x4e> asm volatile("rdtime %0" : "=r" (x) ); - 802039b2: c01027f3 rdtime a5 + 802039b6: c01027f3 rdtime a5 } struct timespec tp; uint64 i = 12500000; uint64 time = r_time(); tp.tv_sec = time / i; - 802039b6: 00bec737 lui a4,0xbec - 802039ba: c2070713 addi a4,a4,-992 # bebc20 <_entry-0x7f6143e0> - 802039be: 02e7d6b3 divu a3,a5,a4 - 802039c2: fcd43c23 sd a3,-40(s0) + 802039ba: 00bec737 lui a4,0xbec + 802039be: c2070713 addi a4,a4,-992 # bebc20 <_entry-0x7f6143e0> + 802039c2: 02e7d6b3 divu a3,a5,a4 + 802039c6: fcd43c23 sd a3,-40(s0) tp.tv_nsec = time % i; - 802039c6: 02e7f7b3 remu a5,a5,a4 - 802039ca: fef43023 sd a5,-32(s0) + 802039ca: 02e7f7b3 remu a5,a5,a4 + 802039ce: fef43023 sd a5,-32(s0) if(copyout2((uint64)ts, (char *)&tp, sizeof(tp)) < 0){ - 802039ce: 4641 li a2,16 - 802039d0: fd840593 addi a1,s0,-40 - 802039d4: fe843503 ld a0,-24(s0) - 802039d8: ffffe097 auipc ra,0xffffe - 802039dc: 99a080e7 jalr -1638(ra) # 80201372 <copyout2> - 802039e0: 957d srai a0,a0,0x3f + 802039d2: 4641 li a2,16 + 802039d4: fd840593 addi a1,s0,-40 + 802039d8: fe843503 ld a0,-24(s0) + 802039dc: ffffe097 auipc ra,0xffffe + 802039e0: 996080e7 jalr -1642(ra) # 80201372 <copyout2> + 802039e4: 957d srai a0,a0,0x3f return -1; } return 0; } - 802039e2: 70a2 ld ra,40(sp) - 802039e4: 7402 ld s0,32(sp) - 802039e6: 6145 addi sp,sp,48 - 802039e8: 8082 ret + 802039e6: 70a2 ld ra,40(sp) + 802039e8: 7402 ld s0,32(sp) + 802039ea: 6145 addi sp,sp,48 + 802039ec: 8082 ret -00000000802039ea <sys_nanosleep>: +00000000802039ee <sys_nanosleep>: uint64 sys_nanosleep(void){ - 802039ea: 7139 addi sp,sp,-64 - 802039ec: fc06 sd ra,56(sp) - 802039ee: f822 sd s0,48(sp) - 802039f0: f426 sd s1,40(sp) - 802039f2: f04a sd s2,32(sp) - 802039f4: ec4e sd s3,24(sp) - 802039f6: e852 sd s4,16(sp) - 802039f8: 0080 addi s0,sp,64 + 802039ee: 7139 addi sp,sp,-64 + 802039f0: fc06 sd ra,56(sp) + 802039f2: f822 sd s0,48(sp) + 802039f4: f426 sd s1,40(sp) + 802039f6: f04a sd s2,32(sp) + 802039f8: ec4e sd s3,24(sp) + 802039fa: e852 sd s4,16(sp) + 802039fc: 0080 addi s0,sp,64 struct timespec *rqtp, *rmtp; if(argaddr(0, (uint64*)&rqtp) < 0 || argaddr(1, (uint64*)&rmtp) < 0){ - 802039fa: fc840593 addi a1,s0,-56 - 802039fe: 4501 li a0,0 - 80203a00: 00000097 auipc ra,0x0 - 80203a04: 966080e7 jalr -1690(ra) # 80203366 <argaddr> + 802039fe: fc840593 addi a1,s0,-56 + 80203a02: 4501 li a0,0 + 80203a04: 00000097 auipc ra,0x0 + 80203a08: 966080e7 jalr -1690(ra) # 8020336a <argaddr> return -1; - 80203a08: 57fd li a5,-1 + 80203a0c: 57fd li a5,-1 if(argaddr(0, (uint64*)&rqtp) < 0 || argaddr(1, (uint64*)&rmtp) < 0){ - 80203a0a: 08054563 bltz a0,80203a94 <sys_nanosleep+0xaa> - 80203a0e: fc040593 addi a1,s0,-64 - 80203a12: 4505 li a0,1 - 80203a14: 00000097 auipc ra,0x0 - 80203a18: 952080e7 jalr -1710(ra) # 80203366 <argaddr> + 80203a0e: 08054563 bltz a0,80203a98 <sys_nanosleep+0xaa> + 80203a12: fc040593 addi a1,s0,-64 + 80203a16: 4505 li a0,1 + 80203a18: 00000097 auipc ra,0x0 + 80203a1c: 952080e7 jalr -1710(ra) # 8020336a <argaddr> return -1; - 80203a1c: 57fd li a5,-1 + 80203a20: 57fd li a5,-1 if(argaddr(0, (uint64*)&rqtp) < 0 || argaddr(1, (uint64*)&rmtp) < 0){ - 80203a1e: 06054b63 bltz a0,80203a94 <sys_nanosleep+0xaa> + 80203a22: 06054b63 bltz a0,80203a98 <sys_nanosleep+0xaa> } uint64 n = (rqtp->tv_sec) * 12500000 + rqtp->tv_nsec; - 80203a22: fc843703 ld a4,-56(s0) - 80203a26: 6304 ld s1,0(a4) - 80203a28: 00bec7b7 lui a5,0xbec - 80203a2c: c2078793 addi a5,a5,-992 # bebc20 <_entry-0x7f6143e0> - 80203a30: 02f484b3 mul s1,s1,a5 - 80203a34: 671c ld a5,8(a4) - 80203a36: 94be add s1,s1,a5 - 80203a38: c0102973 rdtime s2 + 80203a26: fc843703 ld a4,-56(s0) + 80203a2a: 6304 ld s1,0(a4) + 80203a2c: 00bec7b7 lui a5,0xbec + 80203a30: c2078793 addi a5,a5,-992 # bebc20 <_entry-0x7f6143e0> + 80203a34: 02f484b3 mul s1,s1,a5 + 80203a38: 671c ld a5,8(a4) + 80203a3a: 94be add s1,s1,a5 + 80203a3c: c0102973 rdtime s2 uint64 time0 = r_time(); uint64 time = time0; acquire(&tickslock); - 80203a3c: 00009517 auipc a0,0x9 - 80203a40: 60c53503 ld a0,1548(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 80203a44: ffffd097 auipc ra,0xffffd - 80203a48: c82080e7 jalr -894(ra) # 802006c6 <acquire> + 80203a40: 00009517 auipc a0,0x9 + 80203a44: 60853503 ld a0,1544(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 80203a48: ffffd097 auipc ra,0xffffd + 80203a4c: c7e080e7 jalr -898(ra) # 802006c6 <acquire> while(time - time0 < n){ - 80203a4c: c89d beqz s1,80203a82 <sys_nanosleep+0x98> + 80203a50: c89d beqz s1,80203a86 <sys_nanosleep+0x98> if(myproc()->killed){ release(&tickslock); return -1; } sleep(&ticks, &tickslock); - 80203a4e: 00009a17 auipc s4,0x9 - 80203a52: 5faa3a03 ld s4,1530(s4) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 80203a56: 00009997 auipc s3,0x9 - 80203a5a: 6029b983 ld s3,1538(s3) # 8020d058 <_GLOBAL_OFFSET_TABLE_+0x40> + 80203a52: 00009a17 auipc s4,0x9 + 80203a56: 5f6a3a03 ld s4,1526(s4) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 80203a5a: 00009997 auipc s3,0x9 + 80203a5e: 5fe9b983 ld s3,1534(s3) # 8020d058 <_GLOBAL_OFFSET_TABLE_+0x40> if(myproc()->killed){ - 80203a5e: ffffe097 auipc ra,0xffffe - 80203a62: fde080e7 jalr -34(ra) # 80201a3c <myproc> - 80203a66: 591c lw a5,48(a0) - 80203a68: ef9d bnez a5,80203aa6 <sys_nanosleep+0xbc> + 80203a62: ffffe097 auipc ra,0xffffe + 80203a66: fda080e7 jalr -38(ra) # 80201a3c <myproc> + 80203a6a: 591c lw a5,48(a0) + 80203a6c: ef9d bnez a5,80203aaa <sys_nanosleep+0xbc> sleep(&ticks, &tickslock); - 80203a6a: 85d2 mv a1,s4 - 80203a6c: 854e mv a0,s3 - 80203a6e: fffff097 auipc ra,0xfffff - 80203a72: 9aa080e7 jalr -1622(ra) # 80202418 <sleep> - 80203a76: c01027f3 rdtime a5 + 80203a6e: 85d2 mv a1,s4 + 80203a70: 854e mv a0,s3 + 80203a72: fffff097 auipc ra,0xfffff + 80203a76: 9a0080e7 jalr -1632(ra) # 80202412 <sleep> + 80203a7a: c01027f3 rdtime a5 while(time - time0 < n){ - 80203a7a: 412787b3 sub a5,a5,s2 - 80203a7e: fe97e0e3 bltu a5,s1,80203a5e <sys_nanosleep+0x74> + 80203a7e: 412787b3 sub a5,a5,s2 + 80203a82: fe97e0e3 bltu a5,s1,80203a62 <sys_nanosleep+0x74> time = r_time(); } release(&tickslock); - 80203a82: 00009517 auipc a0,0x9 - 80203a86: 5c653503 ld a0,1478(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 80203a8a: ffffd097 auipc ra,0xffffd - 80203a8e: c90080e7 jalr -880(ra) # 8020071a <release> + 80203a86: 00009517 auipc a0,0x9 + 80203a8a: 5c253503 ld a0,1474(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 80203a8e: ffffd097 auipc ra,0xffffd + 80203a92: c8c080e7 jalr -884(ra) # 8020071a <release> return 0; - 80203a92: 4781 li a5,0 + 80203a96: 4781 li a5,0 } - 80203a94: 853e mv a0,a5 - 80203a96: 70e2 ld ra,56(sp) - 80203a98: 7442 ld s0,48(sp) - 80203a9a: 74a2 ld s1,40(sp) - 80203a9c: 7902 ld s2,32(sp) - 80203a9e: 69e2 ld s3,24(sp) - 80203aa0: 6a42 ld s4,16(sp) - 80203aa2: 6121 addi sp,sp,64 - 80203aa4: 8082 ret + 80203a98: 853e mv a0,a5 + 80203a9a: 70e2 ld ra,56(sp) + 80203a9c: 7442 ld s0,48(sp) + 80203a9e: 74a2 ld s1,40(sp) + 80203aa0: 7902 ld s2,32(sp) + 80203aa2: 69e2 ld s3,24(sp) + 80203aa4: 6a42 ld s4,16(sp) + 80203aa6: 6121 addi sp,sp,64 + 80203aa8: 8082 ret release(&tickslock); - 80203aa6: 00009517 auipc a0,0x9 - 80203aaa: 5a253503 ld a0,1442(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> - 80203aae: ffffd097 auipc ra,0xffffd - 80203ab2: c6c080e7 jalr -916(ra) # 8020071a <release> + 80203aaa: 00009517 auipc a0,0x9 + 80203aae: 59e53503 ld a0,1438(a0) # 8020d048 <_GLOBAL_OFFSET_TABLE_+0x30> + 80203ab2: ffffd097 auipc ra,0xffffd + 80203ab6: c68080e7 jalr -920(ra) # 8020071a <release> return -1; - 80203ab6: 57fd li a5,-1 - 80203ab8: bff1 j 80203a94 <sys_nanosleep+0xaa> + 80203aba: 57fd li a5,-1 + 80203abc: bff1 j 80203a98 <sys_nanosleep+0xaa> -0000000080203aba <sys_sched_yield>: +0000000080203abe <sys_sched_yield>: uint64 sys_sched_yield(void){ - 80203aba: 1141 addi sp,sp,-16 - 80203abc: e406 sd ra,8(sp) - 80203abe: e022 sd s0,0(sp) - 80203ac0: 0800 addi s0,sp,16 + 80203abe: 1141 addi sp,sp,-16 + 80203ac0: e406 sd ra,8(sp) + 80203ac2: e022 sd s0,0(sp) + 80203ac4: 0800 addi s0,sp,16 yield(); - 80203ac2: fffff097 auipc ra,0xfffff - 80203ac6: 91a080e7 jalr -1766(ra) # 802023dc <yield> + 80203ac6: fffff097 auipc ra,0xfffff + 80203aca: 910080e7 jalr -1776(ra) # 802023d6 <yield> return 0; } - 80203aca: 4501 li a0,0 - 80203acc: 60a2 ld ra,8(sp) - 80203ace: 6402 ld s0,0(sp) - 80203ad0: 0141 addi sp,sp,16 - 80203ad2: 8082 ret + 80203ace: 4501 li a0,0 + 80203ad0: 60a2 ld ra,8(sp) + 80203ad2: 6402 ld s0,0(sp) + 80203ad4: 0141 addi sp,sp,16 + 80203ad6: 8082 ret -0000000080203ad4 <sys_brk>: +0000000080203ad8 <sys_brk>: uint64 sys_brk(void) { - 80203ad4: 1101 addi sp,sp,-32 - 80203ad6: ec06 sd ra,24(sp) - 80203ad8: e822 sd s0,16(sp) - 80203ada: 1000 addi s0,sp,32 + 80203ad8: 1101 addi sp,sp,-32 + 80203ada: ec06 sd ra,24(sp) + 80203adc: e822 sd s0,16(sp) + 80203ade: 1000 addi s0,sp,32 int origin_addr; int new_addr; int n; if(argint(0, &new_addr) < 0) - 80203adc: fec40593 addi a1,s0,-20 - 80203ae0: 4501 li a0,0 - 80203ae2: 00000097 auipc ra,0x0 - 80203ae6: 822080e7 jalr -2014(ra) # 80203304 <argint> - 80203aea: 02054c63 bltz a0,80203b22 <sys_brk+0x4e> + 80203ae0: fec40593 addi a1,s0,-20 + 80203ae4: 4501 li a0,0 + 80203ae6: 00000097 auipc ra,0x0 + 80203aea: 822080e7 jalr -2014(ra) # 80203308 <argint> + 80203aee: 02054c63 bltz a0,80203b26 <sys_brk+0x4e> return -1; if(new_addr == 0) - 80203aee: fec42783 lw a5,-20(s0) - 80203af2: c395 beqz a5,80203b16 <sys_brk+0x42> + 80203af2: fec42783 lw a5,-20(s0) + 80203af6: c395 beqz a5,80203b1a <sys_brk+0x42> return myproc()->sz; origin_addr = myproc()->sz; - 80203af4: ffffe097 auipc ra,0xffffe - 80203af8: f48080e7 jalr -184(ra) # 80201a3c <myproc> - 80203afc: 653c ld a5,72(a0) + 80203af8: ffffe097 auipc ra,0xffffe + 80203afc: f44080e7 jalr -188(ra) # 80201a3c <myproc> + 80203b00: 653c ld a5,72(a0) n = new_addr - origin_addr; - 80203afe: fec42503 lw a0,-20(s0) + 80203b02: fec42503 lw a0,-20(s0) if(growproc(n) < 0) - 80203b02: 9d1d subw a0,a0,a5 - 80203b04: ffffe097 auipc ra,0xffffe - 80203b08: 2e4080e7 jalr 740(ra) # 80201de8 <growproc> - 80203b0c: 957d srai a0,a0,0x3f + 80203b06: 9d1d subw a0,a0,a5 + 80203b08: ffffe097 auipc ra,0xffffe + 80203b0c: 2da080e7 jalr 730(ra) # 80201de2 <growproc> + 80203b10: 957d srai a0,a0,0x3f return -1; return 0; - 80203b0e: 60e2 ld ra,24(sp) - 80203b10: 6442 ld s0,16(sp) - 80203b12: 6105 addi sp,sp,32 - 80203b14: 8082 ret + 80203b12: 60e2 ld ra,24(sp) + 80203b14: 6442 ld s0,16(sp) + 80203b16: 6105 addi sp,sp,32 + 80203b18: 8082 ret return myproc()->sz; - 80203b16: ffffe097 auipc ra,0xffffe - 80203b1a: f26080e7 jalr -218(ra) # 80201a3c <myproc> - 80203b1e: 6528 ld a0,72(a0) - 80203b20: b7fd j 80203b0e <sys_brk+0x3a> + 80203b1a: ffffe097 auipc ra,0xffffe + 80203b1e: f22080e7 jalr -222(ra) # 80201a3c <myproc> + 80203b22: 6528 ld a0,72(a0) + 80203b24: b7fd j 80203b12 <sys_brk+0x3a> return -1; - 80203b22: 557d li a0,-1 - 80203b24: b7ed j 80203b0e <sys_brk+0x3a> + 80203b26: 557d li a0,-1 + 80203b28: b7ed j 80203b12 <sys_brk+0x3a> -0000000080203b26 <binit>: +0000000080203b2a <binit>: struct buf head; } bcache; void binit(void) { - 80203b26: 7139 addi sp,sp,-64 - 80203b28: fc06 sd ra,56(sp) - 80203b2a: f822 sd s0,48(sp) - 80203b2c: f426 sd s1,40(sp) - 80203b2e: f04a sd s2,32(sp) - 80203b30: ec4e sd s3,24(sp) - 80203b32: e852 sd s4,16(sp) - 80203b34: e456 sd s5,8(sp) - 80203b36: 0080 addi s0,sp,64 + 80203b2a: 7139 addi sp,sp,-64 + 80203b2c: fc06 sd ra,56(sp) + 80203b2e: f822 sd s0,48(sp) + 80203b30: f426 sd s1,40(sp) + 80203b32: f04a sd s2,32(sp) + 80203b34: ec4e sd s3,24(sp) + 80203b36: e852 sd s4,16(sp) + 80203b38: e456 sd s5,8(sp) + 80203b3a: 0080 addi s0,sp,64 struct buf *b; initlock(&bcache.lock, "bcache"); - 80203b38: 00007597 auipc a1,0x7 - 80203b3c: 12858593 addi a1,a1,296 # 8020ac60 <digits+0x8e0> - 80203b40: 00029517 auipc a0,0x29 - 80203b44: 71050513 addi a0,a0,1808 # 8022d250 <bcache> - 80203b48: ffffd097 auipc ra,0xffffd - 80203b4c: b3a080e7 jalr -1222(ra) # 80200682 <initlock> + 80203b3c: 00007597 auipc a1,0x7 + 80203b40: 12458593 addi a1,a1,292 # 8020ac60 <digits+0x8e0> + 80203b44: 00029517 auipc a0,0x29 + 80203b48: 70c50513 addi a0,a0,1804 # 8022d250 <bcache> + 80203b4c: ffffd097 auipc ra,0xffffd + 80203b50: b36080e7 jalr -1226(ra) # 80200682 <initlock> // Create linked list of buffers bcache.head.prev = &bcache.head; - 80203b50: 0002d797 auipc a5,0x2d - 80203b54: 70078793 addi a5,a5,1792 # 80231250 <bcache+0x4000> - 80203b58: 0002e717 auipc a4,0x2e - 80203b5c: d6070713 addi a4,a4,-672 # 802318b8 <bcache+0x4668> - 80203b60: 6ae7b823 sd a4,1712(a5) + 80203b54: 0002d797 auipc a5,0x2d + 80203b58: 6fc78793 addi a5,a5,1788 # 80231250 <bcache+0x4000> + 80203b5c: 0002e717 auipc a4,0x2e + 80203b60: d5c70713 addi a4,a4,-676 # 802318b8 <bcache+0x4668> + 80203b64: 6ae7b823 sd a4,1712(a5) bcache.head.next = &bcache.head; - 80203b64: 6ae7bc23 sd a4,1720(a5) + 80203b68: 6ae7bc23 sd a4,1720(a5) for(b = bcache.buf; b < bcache.buf+NBUF; b++){ - 80203b68: 00029497 auipc s1,0x29 - 80203b6c: 70048493 addi s1,s1,1792 # 8022d268 <bcache+0x18> + 80203b6c: 00029497 auipc s1,0x29 + 80203b70: 6fc48493 addi s1,s1,1788 # 8022d268 <bcache+0x18> b->refcnt = 0; b->sectorno = ~0; - 80203b70: 5a7d li s4,-1 + 80203b74: 5a7d li s4,-1 b->dev = ~0; b->next = bcache.head.next; - 80203b72: 893e mv s2,a5 + 80203b76: 893e mv s2,a5 b->prev = &bcache.head; - 80203b74: 89ba mv s3,a4 + 80203b78: 89ba mv s3,a4 initsleeplock(&b->lock, "buffer"); - 80203b76: 00007a97 auipc s5,0x7 - 80203b7a: 0f2a8a93 addi s5,s5,242 # 8020ac68 <digits+0x8e8> + 80203b7a: 00007a97 auipc s5,0x7 + 80203b7e: 0eea8a93 addi s5,s5,238 # 8020ac68 <digits+0x8e8> b->refcnt = 0; - 80203b7e: 0404a023 sw zero,64(s1) + 80203b82: 0404a023 sw zero,64(s1) b->sectorno = ~0; - 80203b82: 0144a623 sw s4,12(s1) + 80203b86: 0144a623 sw s4,12(s1) b->dev = ~0; - 80203b86: 0144a423 sw s4,8(s1) + 80203b8a: 0144a423 sw s4,8(s1) b->next = bcache.head.next; - 80203b8a: 6b893783 ld a5,1720(s2) - 80203b8e: e8bc sd a5,80(s1) + 80203b8e: 6b893783 ld a5,1720(s2) + 80203b92: e8bc sd a5,80(s1) b->prev = &bcache.head; - 80203b90: 0534b423 sd s3,72(s1) + 80203b94: 0534b423 sd s3,72(s1) initsleeplock(&b->lock, "buffer"); - 80203b94: 85d6 mv a1,s5 - 80203b96: 01048513 addi a0,s1,16 - 80203b9a: 00000097 auipc ra,0x0 - 80203b9e: 26e080e7 jalr 622(ra) # 80203e08 <initsleeplock> + 80203b98: 85d6 mv a1,s5 + 80203b9a: 01048513 addi a0,s1,16 + 80203b9e: 00000097 auipc ra,0x0 + 80203ba2: 26e080e7 jalr 622(ra) # 80203e0c <initsleeplock> bcache.head.next->prev = b; - 80203ba2: 6b893783 ld a5,1720(s2) - 80203ba6: e7a4 sd s1,72(a5) + 80203ba6: 6b893783 ld a5,1720(s2) + 80203baa: e7a4 sd s1,72(a5) bcache.head.next = b; - 80203ba8: 6a993c23 sd s1,1720(s2) + 80203bac: 6a993c23 sd s1,1720(s2) for(b = bcache.buf; b < bcache.buf+NBUF; b++){ - 80203bac: 25848493 addi s1,s1,600 - 80203bb0: fd3497e3 bne s1,s3,80203b7e <binit+0x58> + 80203bb0: 25848493 addi s1,s1,600 + 80203bb4: fd3497e3 bne s1,s3,80203b82 <binit+0x58> } #ifdef DEBUG printf("binit\n"); #endif } - 80203bb4: 70e2 ld ra,56(sp) - 80203bb6: 7442 ld s0,48(sp) - 80203bb8: 74a2 ld s1,40(sp) - 80203bba: 7902 ld s2,32(sp) - 80203bbc: 69e2 ld s3,24(sp) - 80203bbe: 6a42 ld s4,16(sp) - 80203bc0: 6aa2 ld s5,8(sp) - 80203bc2: 6121 addi sp,sp,64 - 80203bc4: 8082 ret - -0000000080203bc6 <bread>: + 80203bb8: 70e2 ld ra,56(sp) + 80203bba: 7442 ld s0,48(sp) + 80203bbc: 74a2 ld s1,40(sp) + 80203bbe: 7902 ld s2,32(sp) + 80203bc0: 69e2 ld s3,24(sp) + 80203bc2: 6a42 ld s4,16(sp) + 80203bc4: 6aa2 ld s5,8(sp) + 80203bc6: 6121 addi sp,sp,64 + 80203bc8: 8082 ret + +0000000080203bca <bread>: panic("bget: no buffers"); } // Return a locked buf with the contents of the indicated block. struct buf* bread(uint dev, uint sectorno) { - 80203bc6: 7179 addi sp,sp,-48 - 80203bc8: f406 sd ra,40(sp) - 80203bca: f022 sd s0,32(sp) - 80203bcc: ec26 sd s1,24(sp) - 80203bce: e84a sd s2,16(sp) - 80203bd0: e44e sd s3,8(sp) - 80203bd2: 1800 addi s0,sp,48 - 80203bd4: 892a mv s2,a0 - 80203bd6: 89ae mv s3,a1 + 80203bca: 7179 addi sp,sp,-48 + 80203bcc: f406 sd ra,40(sp) + 80203bce: f022 sd s0,32(sp) + 80203bd0: ec26 sd s1,24(sp) + 80203bd2: e84a sd s2,16(sp) + 80203bd4: e44e sd s3,8(sp) + 80203bd6: 1800 addi s0,sp,48 + 80203bd8: 892a mv s2,a0 + 80203bda: 89ae mv s3,a1 acquire(&bcache.lock); - 80203bd8: 00029517 auipc a0,0x29 - 80203bdc: 67850513 addi a0,a0,1656 # 8022d250 <bcache> - 80203be0: ffffd097 auipc ra,0xffffd - 80203be4: ae6080e7 jalr -1306(ra) # 802006c6 <acquire> + 80203bdc: 00029517 auipc a0,0x29 + 80203be0: 67450513 addi a0,a0,1652 # 8022d250 <bcache> + 80203be4: ffffd097 auipc ra,0xffffd + 80203be8: ae2080e7 jalr -1310(ra) # 802006c6 <acquire> for(b = bcache.head.next; b != &bcache.head; b = b->next){ - 80203be8: 0002e497 auipc s1,0x2e - 80203bec: d204b483 ld s1,-736(s1) # 80231908 <bcache+0x46b8> - 80203bf0: 0002e797 auipc a5,0x2e - 80203bf4: cc878793 addi a5,a5,-824 # 802318b8 <bcache+0x4668> - 80203bf8: 02f48f63 beq s1,a5,80203c36 <bread+0x70> - 80203bfc: 873e mv a4,a5 - 80203bfe: a021 j 80203c06 <bread+0x40> - 80203c00: 68a4 ld s1,80(s1) - 80203c02: 02e48a63 beq s1,a4,80203c36 <bread+0x70> + 80203bec: 0002e497 auipc s1,0x2e + 80203bf0: d1c4b483 ld s1,-740(s1) # 80231908 <bcache+0x46b8> + 80203bf4: 0002e797 auipc a5,0x2e + 80203bf8: cc478793 addi a5,a5,-828 # 802318b8 <bcache+0x4668> + 80203bfc: 02f48f63 beq s1,a5,80203c3a <bread+0x70> + 80203c00: 873e mv a4,a5 + 80203c02: a021 j 80203c0a <bread+0x40> + 80203c04: 68a4 ld s1,80(s1) + 80203c06: 02e48a63 beq s1,a4,80203c3a <bread+0x70> if(b->dev == dev && b->sectorno == sectorno){ - 80203c06: 449c lw a5,8(s1) - 80203c08: ff279ce3 bne a5,s2,80203c00 <bread+0x3a> - 80203c0c: 44dc lw a5,12(s1) - 80203c0e: ff3799e3 bne a5,s3,80203c00 <bread+0x3a> + 80203c0a: 449c lw a5,8(s1) + 80203c0c: ff279ce3 bne a5,s2,80203c04 <bread+0x3a> + 80203c10: 44dc lw a5,12(s1) + 80203c12: ff3799e3 bne a5,s3,80203c04 <bread+0x3a> b->refcnt++; - 80203c12: 40bc lw a5,64(s1) - 80203c14: 2785 addiw a5,a5,1 - 80203c16: c0bc sw a5,64(s1) + 80203c16: 40bc lw a5,64(s1) + 80203c18: 2785 addiw a5,a5,1 + 80203c1a: c0bc sw a5,64(s1) release(&bcache.lock); - 80203c18: 00029517 auipc a0,0x29 - 80203c1c: 63850513 addi a0,a0,1592 # 8022d250 <bcache> - 80203c20: ffffd097 auipc ra,0xffffd - 80203c24: afa080e7 jalr -1286(ra) # 8020071a <release> + 80203c1c: 00029517 auipc a0,0x29 + 80203c20: 63450513 addi a0,a0,1588 # 8022d250 <bcache> + 80203c24: ffffd097 auipc ra,0xffffd + 80203c28: af6080e7 jalr -1290(ra) # 8020071a <release> acquiresleep(&b->lock); - 80203c28: 01048513 addi a0,s1,16 - 80203c2c: 00000097 auipc ra,0x0 - 80203c30: 216080e7 jalr 534(ra) # 80203e42 <acquiresleep> + 80203c2c: 01048513 addi a0,s1,16 + 80203c30: 00000097 auipc ra,0x0 + 80203c34: 216080e7 jalr 534(ra) # 80203e46 <acquiresleep> return b; - 80203c34: a8b9 j 80203c92 <bread+0xcc> + 80203c38: a8b9 j 80203c96 <bread+0xcc> for(b = bcache.head.prev; b != &bcache.head; b = b->prev){ - 80203c36: 0002e497 auipc s1,0x2e - 80203c3a: cca4b483 ld s1,-822(s1) # 80231900 <bcache+0x46b0> - 80203c3e: 0002e797 auipc a5,0x2e - 80203c42: c7a78793 addi a5,a5,-902 # 802318b8 <bcache+0x4668> - 80203c46: 00f48863 beq s1,a5,80203c56 <bread+0x90> - 80203c4a: 873e mv a4,a5 + 80203c3a: 0002e497 auipc s1,0x2e + 80203c3e: cc64b483 ld s1,-826(s1) # 80231900 <bcache+0x46b0> + 80203c42: 0002e797 auipc a5,0x2e + 80203c46: c7678793 addi a5,a5,-906 # 802318b8 <bcache+0x4668> + 80203c4a: 00f48863 beq s1,a5,80203c5a <bread+0x90> + 80203c4e: 873e mv a4,a5 if(b->refcnt == 0) { - 80203c4c: 40bc lw a5,64(s1) - 80203c4e: cf81 beqz a5,80203c66 <bread+0xa0> + 80203c50: 40bc lw a5,64(s1) + 80203c52: cf81 beqz a5,80203c6a <bread+0xa0> for(b = bcache.head.prev; b != &bcache.head; b = b->prev){ - 80203c50: 64a4 ld s1,72(s1) - 80203c52: fee49de3 bne s1,a4,80203c4c <bread+0x86> + 80203c54: 64a4 ld s1,72(s1) + 80203c56: fee49de3 bne s1,a4,80203c50 <bread+0x86> panic("bget: no buffers"); - 80203c56: 00007517 auipc a0,0x7 - 80203c5a: 01a50513 addi a0,a0,26 # 8020ac70 <digits+0x8f0> - 80203c5e: ffffc097 auipc ra,0xffffc - 80203c62: 4e6080e7 jalr 1254(ra) # 80200144 <panic> + 80203c5a: 00007517 auipc a0,0x7 + 80203c5e: 01650513 addi a0,a0,22 # 8020ac70 <digits+0x8f0> + 80203c62: ffffc097 auipc ra,0xffffc + 80203c66: 4e2080e7 jalr 1250(ra) # 80200144 <panic> b->dev = dev; - 80203c66: 0124a423 sw s2,8(s1) + 80203c6a: 0124a423 sw s2,8(s1) b->sectorno = sectorno; - 80203c6a: 0134a623 sw s3,12(s1) + 80203c6e: 0134a623 sw s3,12(s1) b->valid = 0; - 80203c6e: 0004a023 sw zero,0(s1) + 80203c72: 0004a023 sw zero,0(s1) b->refcnt = 1; - 80203c72: 4785 li a5,1 - 80203c74: c0bc sw a5,64(s1) + 80203c76: 4785 li a5,1 + 80203c78: c0bc sw a5,64(s1) release(&bcache.lock); - 80203c76: 00029517 auipc a0,0x29 - 80203c7a: 5da50513 addi a0,a0,1498 # 8022d250 <bcache> - 80203c7e: ffffd097 auipc ra,0xffffd - 80203c82: a9c080e7 jalr -1380(ra) # 8020071a <release> + 80203c7a: 00029517 auipc a0,0x29 + 80203c7e: 5d650513 addi a0,a0,1494 # 8022d250 <bcache> + 80203c82: ffffd097 auipc ra,0xffffd + 80203c86: a98080e7 jalr -1384(ra) # 8020071a <release> acquiresleep(&b->lock); - 80203c86: 01048513 addi a0,s1,16 - 80203c8a: 00000097 auipc ra,0x0 - 80203c8e: 1b8080e7 jalr 440(ra) # 80203e42 <acquiresleep> + 80203c8a: 01048513 addi a0,s1,16 + 80203c8e: 00000097 auipc ra,0x0 + 80203c92: 1b8080e7 jalr 440(ra) # 80203e46 <acquiresleep> struct buf *b; b = bget(dev, sectorno); if (!b->valid) { - 80203c92: 409c lw a5,0(s1) - 80203c94: cb89 beqz a5,80203ca6 <bread+0xe0> + 80203c96: 409c lw a5,0(s1) + 80203c98: cb89 beqz a5,80203caa <bread+0xe0> disk_read(b); b->valid = 1; } return b; } - 80203c96: 8526 mv a0,s1 - 80203c98: 70a2 ld ra,40(sp) - 80203c9a: 7402 ld s0,32(sp) - 80203c9c: 64e2 ld s1,24(sp) - 80203c9e: 6942 ld s2,16(sp) - 80203ca0: 69a2 ld s3,8(sp) - 80203ca2: 6145 addi sp,sp,48 - 80203ca4: 8082 ret + 80203c9a: 8526 mv a0,s1 + 80203c9c: 70a2 ld ra,40(sp) + 80203c9e: 7402 ld s0,32(sp) + 80203ca0: 64e2 ld s1,24(sp) + 80203ca2: 6942 ld s2,16(sp) + 80203ca4: 69a2 ld s3,8(sp) + 80203ca6: 6145 addi sp,sp,48 + 80203ca8: 8082 ret disk_read(b); - 80203ca6: 8526 mv a0,s1 - 80203ca8: 00002097 auipc ra,0x2 - 80203cac: 27a080e7 jalr 634(ra) # 80205f22 <disk_read> + 80203caa: 8526 mv a0,s1 + 80203cac: 00002097 auipc ra,0x2 + 80203cb0: 236080e7 jalr 566(ra) # 80205ee2 <disk_read> b->valid = 1; - 80203cb0: 4785 li a5,1 - 80203cb2: c09c sw a5,0(s1) + 80203cb4: 4785 li a5,1 + 80203cb6: c09c sw a5,0(s1) return b; - 80203cb4: b7cd j 80203c96 <bread+0xd0> + 80203cb8: b7cd j 80203c9a <bread+0xd0> -0000000080203cb6 <bwrite>: +0000000080203cba <bwrite>: // Write b's contents to disk. Must be locked. void bwrite(struct buf *b) { - 80203cb6: 1101 addi sp,sp,-32 - 80203cb8: ec06 sd ra,24(sp) - 80203cba: e822 sd s0,16(sp) - 80203cbc: e426 sd s1,8(sp) - 80203cbe: 1000 addi s0,sp,32 - 80203cc0: 84aa mv s1,a0 + 80203cba: 1101 addi sp,sp,-32 + 80203cbc: ec06 sd ra,24(sp) + 80203cbe: e822 sd s0,16(sp) + 80203cc0: e426 sd s1,8(sp) + 80203cc2: 1000 addi s0,sp,32 + 80203cc4: 84aa mv s1,a0 if(!holdingsleep(&b->lock)) - 80203cc2: 0541 addi a0,a0,16 - 80203cc4: 00000097 auipc ra,0x0 - 80203cc8: 218080e7 jalr 536(ra) # 80203edc <holdingsleep> - 80203ccc: c919 beqz a0,80203ce2 <bwrite+0x2c> + 80203cc6: 0541 addi a0,a0,16 + 80203cc8: 00000097 auipc ra,0x0 + 80203ccc: 218080e7 jalr 536(ra) # 80203ee0 <holdingsleep> + 80203cd0: c919 beqz a0,80203ce6 <bwrite+0x2c> panic("bwrite"); disk_write(b); - 80203cce: 8526 mv a0,s1 - 80203cd0: 00002097 auipc ra,0x2 - 80203cd4: 26c080e7 jalr 620(ra) # 80205f3c <disk_write> + 80203cd2: 8526 mv a0,s1 + 80203cd4: 00002097 auipc ra,0x2 + 80203cd8: 228080e7 jalr 552(ra) # 80205efc <disk_write> } - 80203cd8: 60e2 ld ra,24(sp) - 80203cda: 6442 ld s0,16(sp) - 80203cdc: 64a2 ld s1,8(sp) - 80203cde: 6105 addi sp,sp,32 - 80203ce0: 8082 ret + 80203cdc: 60e2 ld ra,24(sp) + 80203cde: 6442 ld s0,16(sp) + 80203ce0: 64a2 ld s1,8(sp) + 80203ce2: 6105 addi sp,sp,32 + 80203ce4: 8082 ret panic("bwrite"); - 80203ce2: 00007517 auipc a0,0x7 - 80203ce6: fa650513 addi a0,a0,-90 # 8020ac88 <digits+0x908> - 80203cea: ffffc097 auipc ra,0xffffc - 80203cee: 45a080e7 jalr 1114(ra) # 80200144 <panic> + 80203ce6: 00007517 auipc a0,0x7 + 80203cea: fa250513 addi a0,a0,-94 # 8020ac88 <digits+0x908> + 80203cee: ffffc097 auipc ra,0xffffc + 80203cf2: 456080e7 jalr 1110(ra) # 80200144 <panic> -0000000080203cf2 <brelse>: +0000000080203cf6 <brelse>: // Release a locked buffer. // Move to the head of the most-recently-used list. void brelse(struct buf *b) { - 80203cf2: 1101 addi sp,sp,-32 - 80203cf4: ec06 sd ra,24(sp) - 80203cf6: e822 sd s0,16(sp) - 80203cf8: e426 sd s1,8(sp) - 80203cfa: e04a sd s2,0(sp) - 80203cfc: 1000 addi s0,sp,32 - 80203cfe: 84aa mv s1,a0 + 80203cf6: 1101 addi sp,sp,-32 + 80203cf8: ec06 sd ra,24(sp) + 80203cfa: e822 sd s0,16(sp) + 80203cfc: e426 sd s1,8(sp) + 80203cfe: e04a sd s2,0(sp) + 80203d00: 1000 addi s0,sp,32 + 80203d02: 84aa mv s1,a0 if(!holdingsleep(&b->lock)) - 80203d00: 01050913 addi s2,a0,16 - 80203d04: 854a mv a0,s2 - 80203d06: 00000097 auipc ra,0x0 - 80203d0a: 1d6080e7 jalr 470(ra) # 80203edc <holdingsleep> - 80203d0e: c92d beqz a0,80203d80 <brelse+0x8e> + 80203d04: 01050913 addi s2,a0,16 + 80203d08: 854a mv a0,s2 + 80203d0a: 00000097 auipc ra,0x0 + 80203d0e: 1d6080e7 jalr 470(ra) # 80203ee0 <holdingsleep> + 80203d12: c92d beqz a0,80203d84 <brelse+0x8e> panic("brelse"); releasesleep(&b->lock); - 80203d10: 854a mv a0,s2 - 80203d12: 00000097 auipc ra,0x0 - 80203d16: 186080e7 jalr 390(ra) # 80203e98 <releasesleep> + 80203d14: 854a mv a0,s2 + 80203d16: 00000097 auipc ra,0x0 + 80203d1a: 186080e7 jalr 390(ra) # 80203e9c <releasesleep> acquire(&bcache.lock); - 80203d1a: 00029517 auipc a0,0x29 - 80203d1e: 53650513 addi a0,a0,1334 # 8022d250 <bcache> - 80203d22: ffffd097 auipc ra,0xffffd - 80203d26: 9a4080e7 jalr -1628(ra) # 802006c6 <acquire> + 80203d1e: 00029517 auipc a0,0x29 + 80203d22: 53250513 addi a0,a0,1330 # 8022d250 <bcache> + 80203d26: ffffd097 auipc ra,0xffffd + 80203d2a: 9a0080e7 jalr -1632(ra) # 802006c6 <acquire> b->refcnt--; - 80203d2a: 40bc lw a5,64(s1) - 80203d2c: 37fd addiw a5,a5,-1 - 80203d2e: 0007871b sext.w a4,a5 - 80203d32: c0bc sw a5,64(s1) + 80203d2e: 40bc lw a5,64(s1) + 80203d30: 37fd addiw a5,a5,-1 + 80203d32: 0007871b sext.w a4,a5 + 80203d36: c0bc sw a5,64(s1) if (b->refcnt == 0) { - 80203d34: eb05 bnez a4,80203d64 <brelse+0x72> + 80203d38: eb05 bnez a4,80203d68 <brelse+0x72> // no one is waiting for it. b->next->prev = b->prev; - 80203d36: 68bc ld a5,80(s1) - 80203d38: 64b8 ld a4,72(s1) - 80203d3a: e7b8 sd a4,72(a5) + 80203d3a: 68bc ld a5,80(s1) + 80203d3c: 64b8 ld a4,72(s1) + 80203d3e: e7b8 sd a4,72(a5) b->prev->next = b->next; - 80203d3c: 64bc ld a5,72(s1) - 80203d3e: 68b8 ld a4,80(s1) - 80203d40: ebb8 sd a4,80(a5) + 80203d40: 64bc ld a5,72(s1) + 80203d42: 68b8 ld a4,80(s1) + 80203d44: ebb8 sd a4,80(a5) b->next = bcache.head.next; - 80203d42: 0002d797 auipc a5,0x2d - 80203d46: 50e78793 addi a5,a5,1294 # 80231250 <bcache+0x4000> - 80203d4a: 6b87b703 ld a4,1720(a5) - 80203d4e: e8b8 sd a4,80(s1) + 80203d46: 0002d797 auipc a5,0x2d + 80203d4a: 50a78793 addi a5,a5,1290 # 80231250 <bcache+0x4000> + 80203d4e: 6b87b703 ld a4,1720(a5) + 80203d52: e8b8 sd a4,80(s1) b->prev = &bcache.head; - 80203d50: 0002e717 auipc a4,0x2e - 80203d54: b6870713 addi a4,a4,-1176 # 802318b8 <bcache+0x4668> - 80203d58: e4b8 sd a4,72(s1) + 80203d54: 0002e717 auipc a4,0x2e + 80203d58: b6470713 addi a4,a4,-1180 # 802318b8 <bcache+0x4668> + 80203d5c: e4b8 sd a4,72(s1) bcache.head.next->prev = b; - 80203d5a: 6b87b703 ld a4,1720(a5) - 80203d5e: e724 sd s1,72(a4) + 80203d5e: 6b87b703 ld a4,1720(a5) + 80203d62: e724 sd s1,72(a4) bcache.head.next = b; - 80203d60: 6a97bc23 sd s1,1720(a5) + 80203d64: 6a97bc23 sd s1,1720(a5) } release(&bcache.lock); - 80203d64: 00029517 auipc a0,0x29 - 80203d68: 4ec50513 addi a0,a0,1260 # 8022d250 <bcache> - 80203d6c: ffffd097 auipc ra,0xffffd - 80203d70: 9ae080e7 jalr -1618(ra) # 8020071a <release> + 80203d68: 00029517 auipc a0,0x29 + 80203d6c: 4e850513 addi a0,a0,1256 # 8022d250 <bcache> + 80203d70: ffffd097 auipc ra,0xffffd + 80203d74: 9aa080e7 jalr -1622(ra) # 8020071a <release> } - 80203d74: 60e2 ld ra,24(sp) - 80203d76: 6442 ld s0,16(sp) - 80203d78: 64a2 ld s1,8(sp) - 80203d7a: 6902 ld s2,0(sp) - 80203d7c: 6105 addi sp,sp,32 - 80203d7e: 8082 ret + 80203d78: 60e2 ld ra,24(sp) + 80203d7a: 6442 ld s0,16(sp) + 80203d7c: 64a2 ld s1,8(sp) + 80203d7e: 6902 ld s2,0(sp) + 80203d80: 6105 addi sp,sp,32 + 80203d82: 8082 ret panic("brelse"); - 80203d80: 00007517 auipc a0,0x7 - 80203d84: f1050513 addi a0,a0,-240 # 8020ac90 <digits+0x910> - 80203d88: ffffc097 auipc ra,0xffffc - 80203d8c: 3bc080e7 jalr 956(ra) # 80200144 <panic> + 80203d84: 00007517 auipc a0,0x7 + 80203d88: f0c50513 addi a0,a0,-244 # 8020ac90 <digits+0x910> + 80203d8c: ffffc097 auipc ra,0xffffc + 80203d90: 3b8080e7 jalr 952(ra) # 80200144 <panic> -0000000080203d90 <bpin>: +0000000080203d94 <bpin>: void bpin(struct buf *b) { - 80203d90: 1101 addi sp,sp,-32 - 80203d92: ec06 sd ra,24(sp) - 80203d94: e822 sd s0,16(sp) - 80203d96: e426 sd s1,8(sp) - 80203d98: 1000 addi s0,sp,32 - 80203d9a: 84aa mv s1,a0 + 80203d94: 1101 addi sp,sp,-32 + 80203d96: ec06 sd ra,24(sp) + 80203d98: e822 sd s0,16(sp) + 80203d9a: e426 sd s1,8(sp) + 80203d9c: 1000 addi s0,sp,32 + 80203d9e: 84aa mv s1,a0 acquire(&bcache.lock); - 80203d9c: 00029517 auipc a0,0x29 - 80203da0: 4b450513 addi a0,a0,1204 # 8022d250 <bcache> - 80203da4: ffffd097 auipc ra,0xffffd - 80203da8: 922080e7 jalr -1758(ra) # 802006c6 <acquire> + 80203da0: 00029517 auipc a0,0x29 + 80203da4: 4b050513 addi a0,a0,1200 # 8022d250 <bcache> + 80203da8: ffffd097 auipc ra,0xffffd + 80203dac: 91e080e7 jalr -1762(ra) # 802006c6 <acquire> b->refcnt++; - 80203dac: 40bc lw a5,64(s1) - 80203dae: 2785 addiw a5,a5,1 - 80203db0: c0bc sw a5,64(s1) + 80203db0: 40bc lw a5,64(s1) + 80203db2: 2785 addiw a5,a5,1 + 80203db4: c0bc sw a5,64(s1) release(&bcache.lock); - 80203db2: 00029517 auipc a0,0x29 - 80203db6: 49e50513 addi a0,a0,1182 # 8022d250 <bcache> - 80203dba: ffffd097 auipc ra,0xffffd - 80203dbe: 960080e7 jalr -1696(ra) # 8020071a <release> + 80203db6: 00029517 auipc a0,0x29 + 80203dba: 49a50513 addi a0,a0,1178 # 8022d250 <bcache> + 80203dbe: ffffd097 auipc ra,0xffffd + 80203dc2: 95c080e7 jalr -1700(ra) # 8020071a <release> } - 80203dc2: 60e2 ld ra,24(sp) - 80203dc4: 6442 ld s0,16(sp) - 80203dc6: 64a2 ld s1,8(sp) - 80203dc8: 6105 addi sp,sp,32 - 80203dca: 8082 ret + 80203dc6: 60e2 ld ra,24(sp) + 80203dc8: 6442 ld s0,16(sp) + 80203dca: 64a2 ld s1,8(sp) + 80203dcc: 6105 addi sp,sp,32 + 80203dce: 8082 ret -0000000080203dcc <bunpin>: +0000000080203dd0 <bunpin>: void bunpin(struct buf *b) { - 80203dcc: 1101 addi sp,sp,-32 - 80203dce: ec06 sd ra,24(sp) - 80203dd0: e822 sd s0,16(sp) - 80203dd2: e426 sd s1,8(sp) - 80203dd4: 1000 addi s0,sp,32 - 80203dd6: 84aa mv s1,a0 + 80203dd0: 1101 addi sp,sp,-32 + 80203dd2: ec06 sd ra,24(sp) + 80203dd4: e822 sd s0,16(sp) + 80203dd6: e426 sd s1,8(sp) + 80203dd8: 1000 addi s0,sp,32 + 80203dda: 84aa mv s1,a0 acquire(&bcache.lock); - 80203dd8: 00029517 auipc a0,0x29 - 80203ddc: 47850513 addi a0,a0,1144 # 8022d250 <bcache> - 80203de0: ffffd097 auipc ra,0xffffd - 80203de4: 8e6080e7 jalr -1818(ra) # 802006c6 <acquire> + 80203ddc: 00029517 auipc a0,0x29 + 80203de0: 47450513 addi a0,a0,1140 # 8022d250 <bcache> + 80203de4: ffffd097 auipc ra,0xffffd + 80203de8: 8e2080e7 jalr -1822(ra) # 802006c6 <acquire> b->refcnt--; - 80203de8: 40bc lw a5,64(s1) - 80203dea: 37fd addiw a5,a5,-1 - 80203dec: c0bc sw a5,64(s1) + 80203dec: 40bc lw a5,64(s1) + 80203dee: 37fd addiw a5,a5,-1 + 80203df0: c0bc sw a5,64(s1) release(&bcache.lock); - 80203dee: 00029517 auipc a0,0x29 - 80203df2: 46250513 addi a0,a0,1122 # 8022d250 <bcache> - 80203df6: ffffd097 auipc ra,0xffffd - 80203dfa: 924080e7 jalr -1756(ra) # 8020071a <release> + 80203df2: 00029517 auipc a0,0x29 + 80203df6: 45e50513 addi a0,a0,1118 # 8022d250 <bcache> + 80203dfa: ffffd097 auipc ra,0xffffd + 80203dfe: 920080e7 jalr -1760(ra) # 8020071a <release> } - 80203dfe: 60e2 ld ra,24(sp) - 80203e00: 6442 ld s0,16(sp) - 80203e02: 64a2 ld s1,8(sp) - 80203e04: 6105 addi sp,sp,32 - 80203e06: 8082 ret + 80203e02: 60e2 ld ra,24(sp) + 80203e04: 6442 ld s0,16(sp) + 80203e06: 64a2 ld s1,8(sp) + 80203e08: 6105 addi sp,sp,32 + 80203e0a: 8082 ret -0000000080203e08 <initsleeplock>: +0000000080203e0c <initsleeplock>: #include "include/proc.h" #include "include/sleeplock.h" void initsleeplock(struct sleeplock *lk, char *name) { - 80203e08: 1101 addi sp,sp,-32 - 80203e0a: ec06 sd ra,24(sp) - 80203e0c: e822 sd s0,16(sp) - 80203e0e: e426 sd s1,8(sp) - 80203e10: e04a sd s2,0(sp) - 80203e12: 1000 addi s0,sp,32 - 80203e14: 84aa mv s1,a0 - 80203e16: 892e mv s2,a1 + 80203e0c: 1101 addi sp,sp,-32 + 80203e0e: ec06 sd ra,24(sp) + 80203e10: e822 sd s0,16(sp) + 80203e12: e426 sd s1,8(sp) + 80203e14: e04a sd s2,0(sp) + 80203e16: 1000 addi s0,sp,32 + 80203e18: 84aa mv s1,a0 + 80203e1a: 892e mv s2,a1 initlock(&lk->lk, "sleep lock"); - 80203e18: 00007597 auipc a1,0x7 - 80203e1c: e8058593 addi a1,a1,-384 # 8020ac98 <digits+0x918> - 80203e20: 0521 addi a0,a0,8 - 80203e22: ffffd097 auipc ra,0xffffd - 80203e26: 860080e7 jalr -1952(ra) # 80200682 <initlock> + 80203e1c: 00007597 auipc a1,0x7 + 80203e20: e7c58593 addi a1,a1,-388 # 8020ac98 <digits+0x918> + 80203e24: 0521 addi a0,a0,8 + 80203e26: ffffd097 auipc ra,0xffffd + 80203e2a: 85c080e7 jalr -1956(ra) # 80200682 <initlock> lk->name = name; - 80203e2a: 0324b023 sd s2,32(s1) + 80203e2e: 0324b023 sd s2,32(s1) lk->locked = 0; - 80203e2e: 0004a023 sw zero,0(s1) + 80203e32: 0004a023 sw zero,0(s1) lk->pid = 0; - 80203e32: 0204a423 sw zero,40(s1) + 80203e36: 0204a423 sw zero,40(s1) } - 80203e36: 60e2 ld ra,24(sp) - 80203e38: 6442 ld s0,16(sp) - 80203e3a: 64a2 ld s1,8(sp) - 80203e3c: 6902 ld s2,0(sp) - 80203e3e: 6105 addi sp,sp,32 - 80203e40: 8082 ret + 80203e3a: 60e2 ld ra,24(sp) + 80203e3c: 6442 ld s0,16(sp) + 80203e3e: 64a2 ld s1,8(sp) + 80203e40: 6902 ld s2,0(sp) + 80203e42: 6105 addi sp,sp,32 + 80203e44: 8082 ret -0000000080203e42 <acquiresleep>: +0000000080203e46 <acquiresleep>: void acquiresleep(struct sleeplock *lk) { - 80203e42: 1101 addi sp,sp,-32 - 80203e44: ec06 sd ra,24(sp) - 80203e46: e822 sd s0,16(sp) - 80203e48: e426 sd s1,8(sp) - 80203e4a: e04a sd s2,0(sp) - 80203e4c: 1000 addi s0,sp,32 - 80203e4e: 84aa mv s1,a0 + 80203e46: 1101 addi sp,sp,-32 + 80203e48: ec06 sd ra,24(sp) + 80203e4a: e822 sd s0,16(sp) + 80203e4c: e426 sd s1,8(sp) + 80203e4e: e04a sd s2,0(sp) + 80203e50: 1000 addi s0,sp,32 + 80203e52: 84aa mv s1,a0 acquire(&lk->lk); - 80203e50: 00850913 addi s2,a0,8 - 80203e54: 854a mv a0,s2 - 80203e56: ffffd097 auipc ra,0xffffd - 80203e5a: 870080e7 jalr -1936(ra) # 802006c6 <acquire> + 80203e54: 00850913 addi s2,a0,8 + 80203e58: 854a mv a0,s2 + 80203e5a: ffffd097 auipc ra,0xffffd + 80203e5e: 86c080e7 jalr -1940(ra) # 802006c6 <acquire> while (lk->locked) { - 80203e5e: 409c lw a5,0(s1) - 80203e60: cb89 beqz a5,80203e72 <acquiresleep+0x30> + 80203e62: 409c lw a5,0(s1) + 80203e64: cb89 beqz a5,80203e76 <acquiresleep+0x30> sleep(lk, &lk->lk); - 80203e62: 85ca mv a1,s2 - 80203e64: 8526 mv a0,s1 - 80203e66: ffffe097 auipc ra,0xffffe - 80203e6a: 5b2080e7 jalr 1458(ra) # 80202418 <sleep> + 80203e66: 85ca mv a1,s2 + 80203e68: 8526 mv a0,s1 + 80203e6a: ffffe097 auipc ra,0xffffe + 80203e6e: 5a8080e7 jalr 1448(ra) # 80202412 <sleep> while (lk->locked) { - 80203e6e: 409c lw a5,0(s1) - 80203e70: fbed bnez a5,80203e62 <acquiresleep+0x20> + 80203e72: 409c lw a5,0(s1) + 80203e74: fbed bnez a5,80203e66 <acquiresleep+0x20> } lk->locked = 1; - 80203e72: 4785 li a5,1 - 80203e74: c09c sw a5,0(s1) + 80203e76: 4785 li a5,1 + 80203e78: c09c sw a5,0(s1) lk->pid = myproc()->pid; - 80203e76: ffffe097 auipc ra,0xffffe - 80203e7a: bc6080e7 jalr -1082(ra) # 80201a3c <myproc> - 80203e7e: 5d1c lw a5,56(a0) - 80203e80: d49c sw a5,40(s1) + 80203e7a: ffffe097 auipc ra,0xffffe + 80203e7e: bc2080e7 jalr -1086(ra) # 80201a3c <myproc> + 80203e82: 5d1c lw a5,56(a0) + 80203e84: d49c sw a5,40(s1) release(&lk->lk); - 80203e82: 854a mv a0,s2 - 80203e84: ffffd097 auipc ra,0xffffd - 80203e88: 896080e7 jalr -1898(ra) # 8020071a <release> + 80203e86: 854a mv a0,s2 + 80203e88: ffffd097 auipc ra,0xffffd + 80203e8c: 892080e7 jalr -1902(ra) # 8020071a <release> } - 80203e8c: 60e2 ld ra,24(sp) - 80203e8e: 6442 ld s0,16(sp) - 80203e90: 64a2 ld s1,8(sp) - 80203e92: 6902 ld s2,0(sp) - 80203e94: 6105 addi sp,sp,32 - 80203e96: 8082 ret + 80203e90: 60e2 ld ra,24(sp) + 80203e92: 6442 ld s0,16(sp) + 80203e94: 64a2 ld s1,8(sp) + 80203e96: 6902 ld s2,0(sp) + 80203e98: 6105 addi sp,sp,32 + 80203e9a: 8082 ret -0000000080203e98 <releasesleep>: +0000000080203e9c <releasesleep>: void releasesleep(struct sleeplock *lk) { - 80203e98: 1101 addi sp,sp,-32 - 80203e9a: ec06 sd ra,24(sp) - 80203e9c: e822 sd s0,16(sp) - 80203e9e: e426 sd s1,8(sp) - 80203ea0: e04a sd s2,0(sp) - 80203ea2: 1000 addi s0,sp,32 - 80203ea4: 84aa mv s1,a0 + 80203e9c: 1101 addi sp,sp,-32 + 80203e9e: ec06 sd ra,24(sp) + 80203ea0: e822 sd s0,16(sp) + 80203ea2: e426 sd s1,8(sp) + 80203ea4: e04a sd s2,0(sp) + 80203ea6: 1000 addi s0,sp,32 + 80203ea8: 84aa mv s1,a0 acquire(&lk->lk); - 80203ea6: 00850913 addi s2,a0,8 - 80203eaa: 854a mv a0,s2 - 80203eac: ffffd097 auipc ra,0xffffd - 80203eb0: 81a080e7 jalr -2022(ra) # 802006c6 <acquire> + 80203eaa: 00850913 addi s2,a0,8 + 80203eae: 854a mv a0,s2 + 80203eb0: ffffd097 auipc ra,0xffffd + 80203eb4: 816080e7 jalr -2026(ra) # 802006c6 <acquire> lk->locked = 0; - 80203eb4: 0004a023 sw zero,0(s1) + 80203eb8: 0004a023 sw zero,0(s1) lk->pid = 0; - 80203eb8: 0204a423 sw zero,40(s1) + 80203ebc: 0204a423 sw zero,40(s1) wakeup(lk); - 80203ebc: 8526 mv a0,s1 - 80203ebe: fffff097 auipc ra,0xfffff - 80203ec2: 842080e7 jalr -1982(ra) # 80202700 <wakeup> + 80203ec0: 8526 mv a0,s1 + 80203ec2: fffff097 auipc ra,0xfffff + 80203ec6: 838080e7 jalr -1992(ra) # 802026fa <wakeup> release(&lk->lk); - 80203ec6: 854a mv a0,s2 - 80203ec8: ffffd097 auipc ra,0xffffd - 80203ecc: 852080e7 jalr -1966(ra) # 8020071a <release> + 80203eca: 854a mv a0,s2 + 80203ecc: ffffd097 auipc ra,0xffffd + 80203ed0: 84e080e7 jalr -1970(ra) # 8020071a <release> } - 80203ed0: 60e2 ld ra,24(sp) - 80203ed2: 6442 ld s0,16(sp) - 80203ed4: 64a2 ld s1,8(sp) - 80203ed6: 6902 ld s2,0(sp) - 80203ed8: 6105 addi sp,sp,32 - 80203eda: 8082 ret + 80203ed4: 60e2 ld ra,24(sp) + 80203ed6: 6442 ld s0,16(sp) + 80203ed8: 64a2 ld s1,8(sp) + 80203eda: 6902 ld s2,0(sp) + 80203edc: 6105 addi sp,sp,32 + 80203ede: 8082 ret -0000000080203edc <holdingsleep>: +0000000080203ee0 <holdingsleep>: int holdingsleep(struct sleeplock *lk) { - 80203edc: 7179 addi sp,sp,-48 - 80203ede: f406 sd ra,40(sp) - 80203ee0: f022 sd s0,32(sp) - 80203ee2: ec26 sd s1,24(sp) - 80203ee4: e84a sd s2,16(sp) - 80203ee6: e44e sd s3,8(sp) - 80203ee8: 1800 addi s0,sp,48 - 80203eea: 84aa mv s1,a0 + 80203ee0: 7179 addi sp,sp,-48 + 80203ee2: f406 sd ra,40(sp) + 80203ee4: f022 sd s0,32(sp) + 80203ee6: ec26 sd s1,24(sp) + 80203ee8: e84a sd s2,16(sp) + 80203eea: e44e sd s3,8(sp) + 80203eec: 1800 addi s0,sp,48 + 80203eee: 84aa mv s1,a0 int r; acquire(&lk->lk); - 80203eec: 00850913 addi s2,a0,8 - 80203ef0: 854a mv a0,s2 - 80203ef2: ffffc097 auipc ra,0xffffc - 80203ef6: 7d4080e7 jalr 2004(ra) # 802006c6 <acquire> + 80203ef0: 00850913 addi s2,a0,8 + 80203ef4: 854a mv a0,s2 + 80203ef6: ffffc097 auipc ra,0xffffc + 80203efa: 7d0080e7 jalr 2000(ra) # 802006c6 <acquire> r = lk->locked && (lk->pid == myproc()->pid); - 80203efa: 409c lw a5,0(s1) - 80203efc: ef99 bnez a5,80203f1a <holdingsleep+0x3e> - 80203efe: 4481 li s1,0 + 80203efe: 409c lw a5,0(s1) + 80203f00: ef99 bnez a5,80203f1e <holdingsleep+0x3e> + 80203f02: 4481 li s1,0 release(&lk->lk); - 80203f00: 854a mv a0,s2 - 80203f02: ffffd097 auipc ra,0xffffd - 80203f06: 818080e7 jalr -2024(ra) # 8020071a <release> + 80203f04: 854a mv a0,s2 + 80203f06: ffffd097 auipc ra,0xffffd + 80203f0a: 814080e7 jalr -2028(ra) # 8020071a <release> return r; } - 80203f0a: 8526 mv a0,s1 - 80203f0c: 70a2 ld ra,40(sp) - 80203f0e: 7402 ld s0,32(sp) - 80203f10: 64e2 ld s1,24(sp) - 80203f12: 6942 ld s2,16(sp) - 80203f14: 69a2 ld s3,8(sp) - 80203f16: 6145 addi sp,sp,48 - 80203f18: 8082 ret + 80203f0e: 8526 mv a0,s1 + 80203f10: 70a2 ld ra,40(sp) + 80203f12: 7402 ld s0,32(sp) + 80203f14: 64e2 ld s1,24(sp) + 80203f16: 6942 ld s2,16(sp) + 80203f18: 69a2 ld s3,8(sp) + 80203f1a: 6145 addi sp,sp,48 + 80203f1c: 8082 ret r = lk->locked && (lk->pid == myproc()->pid); - 80203f1a: 0284a983 lw s3,40(s1) - 80203f1e: ffffe097 auipc ra,0xffffe - 80203f22: b1e080e7 jalr -1250(ra) # 80201a3c <myproc> - 80203f26: 5d04 lw s1,56(a0) - 80203f28: 413484b3 sub s1,s1,s3 - 80203f2c: 0014b493 seqz s1,s1 - 80203f30: bfc1 j 80203f00 <holdingsleep+0x24> - -0000000080203f32 <fileinit>: + 80203f1e: 0284a983 lw s3,40(s1) + 80203f22: ffffe097 auipc ra,0xffffe + 80203f26: b1a080e7 jalr -1254(ra) # 80201a3c <myproc> + 80203f2a: 5d04 lw s1,56(a0) + 80203f2c: 413484b3 sub s1,s1,s3 + 80203f30: 0014b493 seqz s1,s1 + 80203f34: bfc1 j 80203f04 <holdingsleep+0x24> + +0000000080203f36 <fileinit>: struct file file[NFILE]; } ftable; void fileinit(void) { - 80203f32: 1101 addi sp,sp,-32 - 80203f34: ec06 sd ra,24(sp) - 80203f36: e822 sd s0,16(sp) - 80203f38: e426 sd s1,8(sp) - 80203f3a: e04a sd s2,0(sp) - 80203f3c: 1000 addi s0,sp,32 + 80203f36: 1101 addi sp,sp,-32 + 80203f38: ec06 sd ra,24(sp) + 80203f3a: e822 sd s0,16(sp) + 80203f3c: e426 sd s1,8(sp) + 80203f3e: e04a sd s2,0(sp) + 80203f40: 1000 addi s0,sp,32 initlock(&ftable.lock, "ftable"); - 80203f3e: 00007597 auipc a1,0x7 - 80203f42: d6a58593 addi a1,a1,-662 # 8020aca8 <digits+0x928> - 80203f46: 0002e517 auipc a0,0x2e - 80203f4a: c6a50513 addi a0,a0,-918 # 80231bb0 <ftable> - 80203f4e: ffffc097 auipc ra,0xffffc - 80203f52: 734080e7 jalr 1844(ra) # 80200682 <initlock> + 80203f42: 00007597 auipc a1,0x7 + 80203f46: d6658593 addi a1,a1,-666 # 8020aca8 <digits+0x928> + 80203f4a: 0002e517 auipc a0,0x2e + 80203f4e: c6650513 addi a0,a0,-922 # 80231bb0 <ftable> + 80203f52: ffffc097 auipc ra,0xffffc + 80203f56: 730080e7 jalr 1840(ra) # 80200682 <initlock> struct file *f; for(f = ftable.file; f < ftable.file + NFILE; f++){ - 80203f56: 0002e497 auipc s1,0x2e - 80203f5a: c7248493 addi s1,s1,-910 # 80231bc8 <ftable+0x18> - 80203f5e: 0002f917 auipc s2,0x2f - 80203f62: c0a90913 addi s2,s2,-1014 # 80232b68 <tickslock> + 80203f5a: 0002e497 auipc s1,0x2e + 80203f5e: c6e48493 addi s1,s1,-914 # 80231bc8 <ftable+0x18> + 80203f62: 0002f917 auipc s2,0x2f + 80203f66: c0690913 addi s2,s2,-1018 # 80232b68 <tickslock> memset(f, 0, sizeof(struct file)); - 80203f66: 02800613 li a2,40 - 80203f6a: 4581 li a1,0 - 80203f6c: 8526 mv a0,s1 - 80203f6e: ffffc097 auipc ra,0xffffc - 80203f72: 7f4080e7 jalr 2036(ra) # 80200762 <memset> + 80203f6a: 02800613 li a2,40 + 80203f6e: 4581 li a1,0 + 80203f70: 8526 mv a0,s1 + 80203f72: ffffc097 auipc ra,0xffffc + 80203f76: 7f0080e7 jalr 2032(ra) # 80200762 <memset> for(f = ftable.file; f < ftable.file + NFILE; f++){ - 80203f76: 02848493 addi s1,s1,40 - 80203f7a: ff2496e3 bne s1,s2,80203f66 <fileinit+0x34> + 80203f7a: 02848493 addi s1,s1,40 + 80203f7e: ff2496e3 bne s1,s2,80203f6a <fileinit+0x34> } #ifdef DEBUG printf("fileinit\n"); #endif } - 80203f7e: 60e2 ld ra,24(sp) - 80203f80: 6442 ld s0,16(sp) - 80203f82: 64a2 ld s1,8(sp) - 80203f84: 6902 ld s2,0(sp) - 80203f86: 6105 addi sp,sp,32 - 80203f88: 8082 ret + 80203f82: 60e2 ld ra,24(sp) + 80203f84: 6442 ld s0,16(sp) + 80203f86: 64a2 ld s1,8(sp) + 80203f88: 6902 ld s2,0(sp) + 80203f8a: 6105 addi sp,sp,32 + 80203f8c: 8082 ret -0000000080203f8a <filealloc>: +0000000080203f8e <filealloc>: // Allocate a file structure. struct file* filealloc(void) { - 80203f8a: 1101 addi sp,sp,-32 - 80203f8c: ec06 sd ra,24(sp) - 80203f8e: e822 sd s0,16(sp) - 80203f90: e426 sd s1,8(sp) - 80203f92: 1000 addi s0,sp,32 + 80203f8e: 1101 addi sp,sp,-32 + 80203f90: ec06 sd ra,24(sp) + 80203f92: e822 sd s0,16(sp) + 80203f94: e426 sd s1,8(sp) + 80203f96: 1000 addi s0,sp,32 struct file *f; acquire(&ftable.lock); - 80203f94: 0002e517 auipc a0,0x2e - 80203f98: c1c50513 addi a0,a0,-996 # 80231bb0 <ftable> - 80203f9c: ffffc097 auipc ra,0xffffc - 80203fa0: 72a080e7 jalr 1834(ra) # 802006c6 <acquire> + 80203f98: 0002e517 auipc a0,0x2e + 80203f9c: c1850513 addi a0,a0,-1000 # 80231bb0 <ftable> + 80203fa0: ffffc097 auipc ra,0xffffc + 80203fa4: 726080e7 jalr 1830(ra) # 802006c6 <acquire> for(f = ftable.file; f < ftable.file + NFILE; f++){ - 80203fa4: 0002e497 auipc s1,0x2e - 80203fa8: c2448493 addi s1,s1,-988 # 80231bc8 <ftable+0x18> - 80203fac: 0002f717 auipc a4,0x2f - 80203fb0: bbc70713 addi a4,a4,-1092 # 80232b68 <tickslock> + 80203fa8: 0002e497 auipc s1,0x2e + 80203fac: c2048493 addi s1,s1,-992 # 80231bc8 <ftable+0x18> + 80203fb0: 0002f717 auipc a4,0x2f + 80203fb4: bb870713 addi a4,a4,-1096 # 80232b68 <tickslock> if(f->ref == 0){ - 80203fb4: 40dc lw a5,4(s1) - 80203fb6: cf99 beqz a5,80203fd4 <filealloc+0x4a> + 80203fb8: 40dc lw a5,4(s1) + 80203fba: cf99 beqz a5,80203fd8 <filealloc+0x4a> for(f = ftable.file; f < ftable.file + NFILE; f++){ - 80203fb8: 02848493 addi s1,s1,40 - 80203fbc: fee49ce3 bne s1,a4,80203fb4 <filealloc+0x2a> + 80203fbc: 02848493 addi s1,s1,40 + 80203fc0: fee49ce3 bne s1,a4,80203fb8 <filealloc+0x2a> f->ref = 1; release(&ftable.lock); return f; } } release(&ftable.lock); - 80203fc0: 0002e517 auipc a0,0x2e - 80203fc4: bf050513 addi a0,a0,-1040 # 80231bb0 <ftable> - 80203fc8: ffffc097 auipc ra,0xffffc - 80203fcc: 752080e7 jalr 1874(ra) # 8020071a <release> + 80203fc4: 0002e517 auipc a0,0x2e + 80203fc8: bec50513 addi a0,a0,-1044 # 80231bb0 <ftable> + 80203fcc: ffffc097 auipc ra,0xffffc + 80203fd0: 74e080e7 jalr 1870(ra) # 8020071a <release> return NULL; - 80203fd0: 4481 li s1,0 - 80203fd2: a819 j 80203fe8 <filealloc+0x5e> + 80203fd4: 4481 li s1,0 + 80203fd6: a819 j 80203fec <filealloc+0x5e> f->ref = 1; - 80203fd4: 4785 li a5,1 - 80203fd6: c0dc sw a5,4(s1) + 80203fd8: 4785 li a5,1 + 80203fda: c0dc sw a5,4(s1) release(&ftable.lock); - 80203fd8: 0002e517 auipc a0,0x2e - 80203fdc: bd850513 addi a0,a0,-1064 # 80231bb0 <ftable> - 80203fe0: ffffc097 auipc ra,0xffffc - 80203fe4: 73a080e7 jalr 1850(ra) # 8020071a <release> + 80203fdc: 0002e517 auipc a0,0x2e + 80203fe0: bd450513 addi a0,a0,-1068 # 80231bb0 <ftable> + 80203fe4: ffffc097 auipc ra,0xffffc + 80203fe8: 736080e7 jalr 1846(ra) # 8020071a <release> } - 80203fe8: 8526 mv a0,s1 - 80203fea: 60e2 ld ra,24(sp) - 80203fec: 6442 ld s0,16(sp) - 80203fee: 64a2 ld s1,8(sp) - 80203ff0: 6105 addi sp,sp,32 - 80203ff2: 8082 ret + 80203fec: 8526 mv a0,s1 + 80203fee: 60e2 ld ra,24(sp) + 80203ff0: 6442 ld s0,16(sp) + 80203ff2: 64a2 ld s1,8(sp) + 80203ff4: 6105 addi sp,sp,32 + 80203ff6: 8082 ret -0000000080203ff4 <filedup>: +0000000080203ff8 <filedup>: // Increment ref count for file f. struct file* filedup(struct file *f) { - 80203ff4: 1101 addi sp,sp,-32 - 80203ff6: ec06 sd ra,24(sp) - 80203ff8: e822 sd s0,16(sp) - 80203ffa: e426 sd s1,8(sp) - 80203ffc: 1000 addi s0,sp,32 - 80203ffe: 84aa mv s1,a0 + 80203ff8: 1101 addi sp,sp,-32 + 80203ffa: ec06 sd ra,24(sp) + 80203ffc: e822 sd s0,16(sp) + 80203ffe: e426 sd s1,8(sp) + 80204000: 1000 addi s0,sp,32 + 80204002: 84aa mv s1,a0 acquire(&ftable.lock); - 80204000: 0002e517 auipc a0,0x2e - 80204004: bb050513 addi a0,a0,-1104 # 80231bb0 <ftable> - 80204008: ffffc097 auipc ra,0xffffc - 8020400c: 6be080e7 jalr 1726(ra) # 802006c6 <acquire> + 80204004: 0002e517 auipc a0,0x2e + 80204008: bac50513 addi a0,a0,-1108 # 80231bb0 <ftable> + 8020400c: ffffc097 auipc ra,0xffffc + 80204010: 6ba080e7 jalr 1722(ra) # 802006c6 <acquire> if(f->ref < 1) - 80204010: 40dc lw a5,4(s1) - 80204012: 02f05263 blez a5,80204036 <filedup+0x42> + 80204014: 40dc lw a5,4(s1) + 80204016: 02f05263 blez a5,8020403a <filedup+0x42> panic("filedup"); f->ref++; - 80204016: 2785 addiw a5,a5,1 - 80204018: c0dc sw a5,4(s1) + 8020401a: 2785 addiw a5,a5,1 + 8020401c: c0dc sw a5,4(s1) release(&ftable.lock); - 8020401a: 0002e517 auipc a0,0x2e - 8020401e: b9650513 addi a0,a0,-1130 # 80231bb0 <ftable> - 80204022: ffffc097 auipc ra,0xffffc - 80204026: 6f8080e7 jalr 1784(ra) # 8020071a <release> + 8020401e: 0002e517 auipc a0,0x2e + 80204022: b9250513 addi a0,a0,-1134 # 80231bb0 <ftable> + 80204026: ffffc097 auipc ra,0xffffc + 8020402a: 6f4080e7 jalr 1780(ra) # 8020071a <release> return f; } - 8020402a: 8526 mv a0,s1 - 8020402c: 60e2 ld ra,24(sp) - 8020402e: 6442 ld s0,16(sp) - 80204030: 64a2 ld s1,8(sp) - 80204032: 6105 addi sp,sp,32 - 80204034: 8082 ret + 8020402e: 8526 mv a0,s1 + 80204030: 60e2 ld ra,24(sp) + 80204032: 6442 ld s0,16(sp) + 80204034: 64a2 ld s1,8(sp) + 80204036: 6105 addi sp,sp,32 + 80204038: 8082 ret panic("filedup"); - 80204036: 00007517 auipc a0,0x7 - 8020403a: c7a50513 addi a0,a0,-902 # 8020acb0 <digits+0x930> - 8020403e: ffffc097 auipc ra,0xffffc - 80204042: 106080e7 jalr 262(ra) # 80200144 <panic> + 8020403a: 00007517 auipc a0,0x7 + 8020403e: c7650513 addi a0,a0,-906 # 8020acb0 <digits+0x930> + 80204042: ffffc097 auipc ra,0xffffc + 80204046: 102080e7 jalr 258(ra) # 80200144 <panic> -0000000080204046 <fileclose>: +000000008020404a <fileclose>: // Close file f. (Decrement ref count, close when reaches 0.) void fileclose(struct file *f) { - 80204046: 7139 addi sp,sp,-64 - 80204048: fc06 sd ra,56(sp) - 8020404a: f822 sd s0,48(sp) - 8020404c: f426 sd s1,40(sp) - 8020404e: f04a sd s2,32(sp) - 80204050: ec4e sd s3,24(sp) - 80204052: e852 sd s4,16(sp) - 80204054: e456 sd s5,8(sp) - 80204056: 0080 addi s0,sp,64 - 80204058: 84aa mv s1,a0 + 8020404a: 7139 addi sp,sp,-64 + 8020404c: fc06 sd ra,56(sp) + 8020404e: f822 sd s0,48(sp) + 80204050: f426 sd s1,40(sp) + 80204052: f04a sd s2,32(sp) + 80204054: ec4e sd s3,24(sp) + 80204056: e852 sd s4,16(sp) + 80204058: e456 sd s5,8(sp) + 8020405a: 0080 addi s0,sp,64 + 8020405c: 84aa mv s1,a0 struct file ff; acquire(&ftable.lock); - 8020405a: 0002e517 auipc a0,0x2e - 8020405e: b5650513 addi a0,a0,-1194 # 80231bb0 <ftable> - 80204062: ffffc097 auipc ra,0xffffc - 80204066: 664080e7 jalr 1636(ra) # 802006c6 <acquire> + 8020405e: 0002e517 auipc a0,0x2e + 80204062: b5250513 addi a0,a0,-1198 # 80231bb0 <ftable> + 80204066: ffffc097 auipc ra,0xffffc + 8020406a: 660080e7 jalr 1632(ra) # 802006c6 <acquire> if(f->ref < 1) - 8020406a: 40dc lw a5,4(s1) - 8020406c: 04f05863 blez a5,802040bc <fileclose+0x76> + 8020406e: 40dc lw a5,4(s1) + 80204070: 04f05863 blez a5,802040c0 <fileclose+0x76> panic("fileclose"); if(--f->ref > 0){ - 80204070: 37fd addiw a5,a5,-1 - 80204072: 0007871b sext.w a4,a5 - 80204076: c0dc sw a5,4(s1) - 80204078: 04e04a63 bgtz a4,802040cc <fileclose+0x86> + 80204074: 37fd addiw a5,a5,-1 + 80204076: 0007871b sext.w a4,a5 + 8020407a: c0dc sw a5,4(s1) + 8020407c: 04e04a63 bgtz a4,802040d0 <fileclose+0x86> release(&ftable.lock); return; } ff = *f; - 8020407c: 0004a903 lw s2,0(s1) - 80204080: 0094ca03 lbu s4,9(s1) - 80204084: 0104b983 ld s3,16(s1) - 80204088: 0184ba83 ld s5,24(s1) + 80204080: 0004a903 lw s2,0(s1) + 80204084: 0094ca03 lbu s4,9(s1) + 80204088: 0104b983 ld s3,16(s1) + 8020408c: 0184ba83 ld s5,24(s1) f->ref = 0; - 8020408c: 0004a223 sw zero,4(s1) + 80204090: 0004a223 sw zero,4(s1) f->type = FD_NONE; - 80204090: 0004a023 sw zero,0(s1) + 80204094: 0004a023 sw zero,0(s1) release(&ftable.lock); - 80204094: 0002e517 auipc a0,0x2e - 80204098: b1c50513 addi a0,a0,-1252 # 80231bb0 <ftable> - 8020409c: ffffc097 auipc ra,0xffffc - 802040a0: 67e080e7 jalr 1662(ra) # 8020071a <release> + 80204098: 0002e517 auipc a0,0x2e + 8020409c: b1850513 addi a0,a0,-1256 # 80231bb0 <ftable> + 802040a0: ffffc097 auipc ra,0xffffc + 802040a4: 67a080e7 jalr 1658(ra) # 8020071a <release> if(ff.type == FD_PIPE){ - 802040a4: 4785 li a5,1 - 802040a6: 04f90463 beq s2,a5,802040ee <fileclose+0xa8> + 802040a8: 4785 li a5,1 + 802040aa: 04f90463 beq s2,a5,802040f2 <fileclose+0xa8> pipeclose(ff.pipe, ff.writable); } else if(ff.type == FD_ENTRY){ - 802040aa: 4789 li a5,2 - 802040ac: 02f91863 bne s2,a5,802040dc <fileclose+0x96> + 802040ae: 4789 li a5,2 + 802040b0: 02f91863 bne s2,a5,802040e0 <fileclose+0x96> eput(ff.ep); - 802040b0: 8556 mv a0,s5 - 802040b2: 00003097 auipc ra,0x3 - 802040b6: 090080e7 jalr 144(ra) # 80207142 <eput> - 802040ba: a00d j 802040dc <fileclose+0x96> + 802040b4: 8556 mv a0,s5 + 802040b6: 00003097 auipc ra,0x3 + 802040ba: 04c080e7 jalr 76(ra) # 80207102 <eput> + 802040be: a00d j 802040e0 <fileclose+0x96> panic("fileclose"); - 802040bc: 00007517 auipc a0,0x7 - 802040c0: bfc50513 addi a0,a0,-1028 # 8020acb8 <digits+0x938> - 802040c4: ffffc097 auipc ra,0xffffc - 802040c8: 080080e7 jalr 128(ra) # 80200144 <panic> + 802040c0: 00007517 auipc a0,0x7 + 802040c4: bf850513 addi a0,a0,-1032 # 8020acb8 <digits+0x938> + 802040c8: ffffc097 auipc ra,0xffffc + 802040cc: 07c080e7 jalr 124(ra) # 80200144 <panic> release(&ftable.lock); - 802040cc: 0002e517 auipc a0,0x2e - 802040d0: ae450513 addi a0,a0,-1308 # 80231bb0 <ftable> - 802040d4: ffffc097 auipc ra,0xffffc - 802040d8: 646080e7 jalr 1606(ra) # 8020071a <release> + 802040d0: 0002e517 auipc a0,0x2e + 802040d4: ae050513 addi a0,a0,-1312 # 80231bb0 <ftable> + 802040d8: ffffc097 auipc ra,0xffffc + 802040dc: 642080e7 jalr 1602(ra) # 8020071a <release> } else if (ff.type == FD_DEVICE) { } } - 802040dc: 70e2 ld ra,56(sp) - 802040de: 7442 ld s0,48(sp) - 802040e0: 74a2 ld s1,40(sp) - 802040e2: 7902 ld s2,32(sp) - 802040e4: 69e2 ld s3,24(sp) - 802040e6: 6a42 ld s4,16(sp) - 802040e8: 6aa2 ld s5,8(sp) - 802040ea: 6121 addi sp,sp,64 - 802040ec: 8082 ret + 802040e0: 70e2 ld ra,56(sp) + 802040e2: 7442 ld s0,48(sp) + 802040e4: 74a2 ld s1,40(sp) + 802040e6: 7902 ld s2,32(sp) + 802040e8: 69e2 ld s3,24(sp) + 802040ea: 6a42 ld s4,16(sp) + 802040ec: 6aa2 ld s5,8(sp) + 802040ee: 6121 addi sp,sp,64 + 802040f0: 8082 ret pipeclose(ff.pipe, ff.writable); - 802040ee: 85d2 mv a1,s4 - 802040f0: 854e mv a0,s3 - 802040f2: 00000097 auipc ra,0x0 - 802040f6: 42a080e7 jalr 1066(ra) # 8020451c <pipeclose> - 802040fa: b7cd j 802040dc <fileclose+0x96> + 802040f2: 85d2 mv a1,s4 + 802040f4: 854e mv a0,s3 + 802040f6: 00000097 auipc ra,0x0 + 802040fa: 42a080e7 jalr 1066(ra) # 80204520 <pipeclose> + 802040fe: b7cd j 802040e0 <fileclose+0x96> -00000000802040fc <filestat>: +0000000080204100 <filestat>: filestat(struct file *f, uint64 addr) { // struct proc *p = myproc(); struct stat st; if(f->type == FD_ENTRY){ - 802040fc: 4118 lw a4,0(a0) - 802040fe: 4789 li a5,2 - 80204100: 04f71e63 bne a4,a5,8020415c <filestat+0x60> + 80204100: 4118 lw a4,0(a0) + 80204102: 4789 li a5,2 + 80204104: 04f71e63 bne a4,a5,80204160 <filestat+0x60> { - 80204104: 7159 addi sp,sp,-112 - 80204106: f486 sd ra,104(sp) - 80204108: f0a2 sd s0,96(sp) - 8020410a: eca6 sd s1,88(sp) - 8020410c: e8ca sd s2,80(sp) - 8020410e: e4ce sd s3,72(sp) - 80204110: 1880 addi s0,sp,112 - 80204112: 84aa mv s1,a0 - 80204114: 892e mv s2,a1 + 80204108: 7159 addi sp,sp,-112 + 8020410a: f486 sd ra,104(sp) + 8020410c: f0a2 sd s0,96(sp) + 8020410e: eca6 sd s1,88(sp) + 80204110: e8ca sd s2,80(sp) + 80204112: e4ce sd s3,72(sp) + 80204114: 1880 addi s0,sp,112 + 80204116: 84aa mv s1,a0 + 80204118: 892e mv s2,a1 elock(f->ep); - 80204116: 6d08 ld a0,24(a0) - 80204118: 00003097 auipc ra,0x3 - 8020411c: fa6080e7 jalr -90(ra) # 802070be <elock> + 8020411a: 6d08 ld a0,24(a0) + 8020411c: 00003097 auipc ra,0x3 + 80204120: f62080e7 jalr -158(ra) # 8020707e <elock> estat(f->ep, &st); - 80204120: f9840993 addi s3,s0,-104 - 80204124: 85ce mv a1,s3 - 80204126: 6c88 ld a0,24(s1) - 80204128: 00003097 auipc ra,0x3 - 8020412c: 152080e7 jalr 338(ra) # 8020727a <estat> + 80204124: f9840993 addi s3,s0,-104 + 80204128: 85ce mv a1,s3 + 8020412a: 6c88 ld a0,24(s1) + 8020412c: 00003097 auipc ra,0x3 + 80204130: 10e080e7 jalr 270(ra) # 8020723a <estat> eunlock(f->ep); - 80204130: 6c88 ld a0,24(s1) - 80204132: 00003097 auipc ra,0x3 - 80204136: fc2080e7 jalr -62(ra) # 802070f4 <eunlock> + 80204134: 6c88 ld a0,24(s1) + 80204136: 00003097 auipc ra,0x3 + 8020413a: f7e080e7 jalr -130(ra) # 802070b4 <eunlock> // if(copyout(p->pagetable, addr, (char *)&st, sizeof(st)) < 0) if(copyout2(addr, (char *)&st, sizeof(st)) < 0) - 8020413a: 03800613 li a2,56 - 8020413e: 85ce mv a1,s3 - 80204140: 854a mv a0,s2 - 80204142: ffffd097 auipc ra,0xffffd - 80204146: 230080e7 jalr 560(ra) # 80201372 <copyout2> - 8020414a: 41f5551b sraiw a0,a0,0x1f + 8020413e: 03800613 li a2,56 + 80204142: 85ce mv a1,s3 + 80204144: 854a mv a0,s2 + 80204146: ffffd097 auipc ra,0xffffd + 8020414a: 22c080e7 jalr 556(ra) # 80201372 <copyout2> + 8020414e: 41f5551b sraiw a0,a0,0x1f return -1; return 0; } return -1; } - 8020414e: 70a6 ld ra,104(sp) - 80204150: 7406 ld s0,96(sp) - 80204152: 64e6 ld s1,88(sp) - 80204154: 6946 ld s2,80(sp) - 80204156: 69a6 ld s3,72(sp) - 80204158: 6165 addi sp,sp,112 - 8020415a: 8082 ret + 80204152: 70a6 ld ra,104(sp) + 80204154: 7406 ld s0,96(sp) + 80204156: 64e6 ld s1,88(sp) + 80204158: 6946 ld s2,80(sp) + 8020415a: 69a6 ld s3,72(sp) + 8020415c: 6165 addi sp,sp,112 + 8020415e: 8082 ret return -1; - 8020415c: 557d li a0,-1 + 80204160: 557d li a0,-1 } - 8020415e: 8082 ret + 80204162: 8082 ret -0000000080204160 <filekstat>: +0000000080204164 <filekstat>: // Get metadata about file f. // addr is a user virtual address, pointing to a struct kstat. int filekstat(struct file *f, uint64 addr) { - 80204160: 7135 addi sp,sp,-160 - 80204162: ed06 sd ra,152(sp) - 80204164: e922 sd s0,144(sp) - 80204166: e526 sd s1,136(sp) - 80204168: e14a sd s2,128(sp) - 8020416a: 1100 addi s0,sp,160 - 8020416c: 84aa mv s1,a0 - 8020416e: 892e mv s2,a1 + 80204164: 7135 addi sp,sp,-160 + 80204166: ed06 sd ra,152(sp) + 80204168: e922 sd s0,144(sp) + 8020416a: e526 sd s1,136(sp) + 8020416c: e14a sd s2,128(sp) + 8020416e: 1100 addi s0,sp,160 + 80204170: 84aa mv s1,a0 + 80204172: 892e mv s2,a1 // struct proc *p = myproc(); struct kstat kst; memset(&kst, 0, sizeof(kst)); - 80204170: 08000613 li a2,128 - 80204174: 4581 li a1,0 - 80204176: f6040513 addi a0,s0,-160 - 8020417a: ffffc097 auipc ra,0xffffc - 8020417e: 5e8080e7 jalr 1512(ra) # 80200762 <memset> + 80204174: 08000613 li a2,128 + 80204178: 4581 li a1,0 + 8020417a: f6040513 addi a0,s0,-160 + 8020417e: ffffc097 auipc ra,0xffffc + 80204182: 5e4080e7 jalr 1508(ra) # 80200762 <memset> if(f->type == FD_ENTRY){ - 80204182: 4098 lw a4,0(s1) - 80204184: 4789 li a5,2 - 80204186: 06f71063 bne a4,a5,802041e6 <filekstat+0x86> + 80204186: 4098 lw a4,0(s1) + 80204188: 4789 li a5,2 + 8020418a: 06f71063 bne a4,a5,802041ea <filekstat+0x86> elock(f->ep); - 8020418a: 6c88 ld a0,24(s1) - 8020418c: 00003097 auipc ra,0x3 - 80204190: f32080e7 jalr -206(ra) # 802070be <elock> + 8020418e: 6c88 ld a0,24(s1) + 80204190: 00003097 auipc ra,0x3 + 80204194: eee080e7 jalr -274(ra) # 8020707e <elock> struct dirent *ep = f->ep; - 80204194: 6c88 ld a0,24(s1) + 80204198: 6c88 ld a0,24(s1) kst.st_dev = ep->dev; // 设备 ID - 80204196: 11454783 lbu a5,276(a0) - 8020419a: f6f43023 sd a5,-160(s0) + 8020419a: 11454783 lbu a5,276(a0) + 8020419e: f6f43023 sd a5,-160(s0) kst.st_mode = (ep->attribute & ATTR_DIRECTORY) ? T_DIR : T_FILE; ; // 文件类型和æƒé™ - 8020419e: 10054783 lbu a5,256(a0) - 802041a2: 8bc1 andi a5,a5,16 - 802041a4: 0017b793 seqz a5,a5 - 802041a8: 0785 addi a5,a5,1 - 802041aa: f6f42823 sw a5,-144(s0) + 802041a2: 10054783 lbu a5,256(a0) + 802041a6: 8bc1 andi a5,a5,16 + 802041a8: 0017b793 seqz a5,a5 + 802041ac: 0785 addi a5,a5,1 + 802041ae: f6f42823 sw a5,-144(s0) kst.st_size = ep->file_size; - 802041ae: 10856783 lwu a5,264(a0) - 802041b2: f8f43823 sd a5,-112(s0) + 802041b2: 10856783 lwu a5,264(a0) + 802041b6: f8f43823 sd a5,-112(s0) kst.st_nlink = f->ref; - 802041b6: 40dc lw a5,4(s1) - 802041b8: f6f42a23 sw a5,-140(s0) + 802041ba: 40dc lw a5,4(s1) + 802041bc: f6f42a23 sw a5,-140(s0) eunlock(f->ep); - 802041bc: 00003097 auipc ra,0x3 - 802041c0: f38080e7 jalr -200(ra) # 802070f4 <eunlock> + 802041c0: 00003097 auipc ra,0x3 + 802041c4: ef4080e7 jalr -268(ra) # 802070b4 <eunlock> // if(copyout(p->pagetable, addr, (char *)&st, sizeof(st)) < 0) if(copyout2(addr, (char *)&kst, sizeof(kst)) < 0) - 802041c4: 08000613 li a2,128 - 802041c8: f6040593 addi a1,s0,-160 - 802041cc: 854a mv a0,s2 - 802041ce: ffffd097 auipc ra,0xffffd - 802041d2: 1a4080e7 jalr 420(ra) # 80201372 <copyout2> - 802041d6: 41f5551b sraiw a0,a0,0x1f + 802041c8: 08000613 li a2,128 + 802041cc: f6040593 addi a1,s0,-160 + 802041d0: 854a mv a0,s2 + 802041d2: ffffd097 auipc ra,0xffffd + 802041d6: 1a0080e7 jalr 416(ra) # 80201372 <copyout2> + 802041da: 41f5551b sraiw a0,a0,0x1f return -1; return 0; } return -1; } - 802041da: 60ea ld ra,152(sp) - 802041dc: 644a ld s0,144(sp) - 802041de: 64aa ld s1,136(sp) - 802041e0: 690a ld s2,128(sp) - 802041e2: 610d addi sp,sp,160 - 802041e4: 8082 ret + 802041de: 60ea ld ra,152(sp) + 802041e0: 644a ld s0,144(sp) + 802041e2: 64aa ld s1,136(sp) + 802041e4: 690a ld s2,128(sp) + 802041e6: 610d addi sp,sp,160 + 802041e8: 8082 ret return -1; - 802041e6: 557d li a0,-1 - 802041e8: bfcd j 802041da <filekstat+0x7a> + 802041ea: 557d li a0,-1 + 802041ec: bfcd j 802041de <filekstat+0x7a> -00000000802041ea <fileread>: +00000000802041ee <fileread>: // Read from file f. // addr is a user virtual address. int fileread(struct file *f, uint64 addr, int n) { - 802041ea: 7179 addi sp,sp,-48 - 802041ec: f406 sd ra,40(sp) - 802041ee: f022 sd s0,32(sp) - 802041f0: ec26 sd s1,24(sp) - 802041f2: e84a sd s2,16(sp) - 802041f4: e44e sd s3,8(sp) - 802041f6: 1800 addi s0,sp,48 + 802041ee: 7179 addi sp,sp,-48 + 802041f0: f406 sd ra,40(sp) + 802041f2: f022 sd s0,32(sp) + 802041f4: ec26 sd s1,24(sp) + 802041f6: e84a sd s2,16(sp) + 802041f8: e44e sd s3,8(sp) + 802041fa: 1800 addi s0,sp,48 int r = 0; if(f->readable == 0) - 802041f8: 00854783 lbu a5,8(a0) - 802041fc: c3d5 beqz a5,802042a0 <fileread+0xb6> - 802041fe: 84aa mv s1,a0 - 80204200: 89ae mv s3,a1 - 80204202: 8932 mv s2,a2 + 802041fc: 00854783 lbu a5,8(a0) + 80204200: c3d5 beqz a5,802042a4 <fileread+0xb6> + 80204202: 84aa mv s1,a0 + 80204204: 89ae mv s3,a1 + 80204206: 8932 mv s2,a2 return -1; switch (f->type) { - 80204204: 411c lw a5,0(a0) - 80204206: 4709 li a4,2 - 80204208: 06e78263 beq a5,a4,8020426c <fileread+0x82> - 8020420c: 470d li a4,3 - 8020420e: 02e78b63 beq a5,a4,80204244 <fileread+0x5a> - 80204212: 4705 li a4,1 - 80204214: 00e78a63 beq a5,a4,80204228 <fileread+0x3e> + 80204208: 411c lw a5,0(a0) + 8020420a: 4709 li a4,2 + 8020420c: 06e78263 beq a5,a4,80204270 <fileread+0x82> + 80204210: 470d li a4,3 + 80204212: 02e78b63 beq a5,a4,80204248 <fileread+0x5a> + 80204216: 4705 li a4,1 + 80204218: 00e78a63 beq a5,a4,8020422c <fileread+0x3e> if((r = eread(f->ep, 1, addr, f->off, n)) > 0) f->off += r; eunlock(f->ep); break; default: panic("fileread"); - 80204218: 00007517 auipc a0,0x7 - 8020421c: ab050513 addi a0,a0,-1360 # 8020acc8 <digits+0x948> - 80204220: ffffc097 auipc ra,0xffffc - 80204224: f24080e7 jalr -220(ra) # 80200144 <panic> + 8020421c: 00007517 auipc a0,0x7 + 80204220: aac50513 addi a0,a0,-1364 # 8020acc8 <digits+0x948> + 80204224: ffffc097 auipc ra,0xffffc + 80204228: f20080e7 jalr -224(ra) # 80200144 <panic> r = piperead(f->pipe, addr, n); - 80204228: 6908 ld a0,16(a0) - 8020422a: 00000097 auipc ra,0x0 - 8020422e: 466080e7 jalr 1126(ra) # 80204690 <piperead> - 80204232: 892a mv s2,a0 + 8020422c: 6908 ld a0,16(a0) + 8020422e: 00000097 auipc ra,0x0 + 80204232: 466080e7 jalr 1126(ra) # 80204694 <piperead> + 80204236: 892a mv s2,a0 } return r; } - 80204234: 854a mv a0,s2 - 80204236: 70a2 ld ra,40(sp) - 80204238: 7402 ld s0,32(sp) - 8020423a: 64e2 ld s1,24(sp) - 8020423c: 6942 ld s2,16(sp) - 8020423e: 69a2 ld s3,8(sp) - 80204240: 6145 addi sp,sp,48 - 80204242: 8082 ret + 80204238: 854a mv a0,s2 + 8020423a: 70a2 ld ra,40(sp) + 8020423c: 7402 ld s0,32(sp) + 8020423e: 64e2 ld s1,24(sp) + 80204240: 6942 ld s2,16(sp) + 80204242: 69a2 ld s3,8(sp) + 80204244: 6145 addi sp,sp,48 + 80204246: 8082 ret if(f->major < 0 || f->major >= NDEV || !devsw[f->major].read) - 80204244: 02451783 lh a5,36(a0) - 80204248: 03079693 slli a3,a5,0x30 - 8020424c: 92c1 srli a3,a3,0x30 - 8020424e: 4725 li a4,9 - 80204250: 04d76a63 bltu a4,a3,802042a4 <fileread+0xba> - 80204254: 0792 slli a5,a5,0x4 - 80204256: 0002e717 auipc a4,0x2e - 8020425a: 8ba70713 addi a4,a4,-1862 # 80231b10 <devsw> - 8020425e: 97ba add a5,a5,a4 - 80204260: 639c ld a5,0(a5) - 80204262: c3b9 beqz a5,802042a8 <fileread+0xbe> + 80204248: 02451783 lh a5,36(a0) + 8020424c: 03079693 slli a3,a5,0x30 + 80204250: 92c1 srli a3,a3,0x30 + 80204252: 4725 li a4,9 + 80204254: 04d76a63 bltu a4,a3,802042a8 <fileread+0xba> + 80204258: 0792 slli a5,a5,0x4 + 8020425a: 0002e717 auipc a4,0x2e + 8020425e: 8b670713 addi a4,a4,-1866 # 80231b10 <devsw> + 80204262: 97ba add a5,a5,a4 + 80204264: 639c ld a5,0(a5) + 80204266: c3b9 beqz a5,802042ac <fileread+0xbe> r = devsw[f->major].read(1, addr, n); - 80204264: 4505 li a0,1 - 80204266: 9782 jalr a5 - 80204268: 892a mv s2,a0 + 80204268: 4505 li a0,1 + 8020426a: 9782 jalr a5 + 8020426c: 892a mv s2,a0 break; - 8020426a: b7e9 j 80204234 <fileread+0x4a> + 8020426e: b7e9 j 80204238 <fileread+0x4a> elock(f->ep); - 8020426c: 6d08 ld a0,24(a0) - 8020426e: 00003097 auipc ra,0x3 - 80204272: e50080e7 jalr -432(ra) # 802070be <elock> + 80204270: 6d08 ld a0,24(a0) + 80204272: 00003097 auipc ra,0x3 + 80204276: e0c080e7 jalr -500(ra) # 8020707e <elock> if((r = eread(f->ep, 1, addr, f->off, n)) > 0) - 80204276: 874a mv a4,s2 - 80204278: 5094 lw a3,32(s1) - 8020427a: 864e mv a2,s3 - 8020427c: 4585 li a1,1 - 8020427e: 6c88 ld a0,24(s1) - 80204280: 00002097 auipc ra,0x2 - 80204284: 53a080e7 jalr 1338(ra) # 802067ba <eread> - 80204288: 892a mv s2,a0 - 8020428a: 00a05563 blez a0,80204294 <fileread+0xaa> + 8020427a: 874a mv a4,s2 + 8020427c: 5094 lw a3,32(s1) + 8020427e: 864e mv a2,s3 + 80204280: 4585 li a1,1 + 80204282: 6c88 ld a0,24(s1) + 80204284: 00002097 auipc ra,0x2 + 80204288: 4f6080e7 jalr 1270(ra) # 8020677a <eread> + 8020428c: 892a mv s2,a0 + 8020428e: 00a05563 blez a0,80204298 <fileread+0xaa> f->off += r; - 8020428e: 509c lw a5,32(s1) - 80204290: 9fa9 addw a5,a5,a0 - 80204292: d09c sw a5,32(s1) + 80204292: 509c lw a5,32(s1) + 80204294: 9fa9 addw a5,a5,a0 + 80204296: d09c sw a5,32(s1) eunlock(f->ep); - 80204294: 6c88 ld a0,24(s1) - 80204296: 00003097 auipc ra,0x3 - 8020429a: e5e080e7 jalr -418(ra) # 802070f4 <eunlock> + 80204298: 6c88 ld a0,24(s1) + 8020429a: 00003097 auipc ra,0x3 + 8020429e: e1a080e7 jalr -486(ra) # 802070b4 <eunlock> break; - 8020429e: bf59 j 80204234 <fileread+0x4a> + 802042a2: bf59 j 80204238 <fileread+0x4a> return -1; - 802042a0: 597d li s2,-1 - 802042a2: bf49 j 80204234 <fileread+0x4a> - return -1; 802042a4: 597d li s2,-1 - 802042a6: b779 j 80204234 <fileread+0x4a> + 802042a6: bf49 j 80204238 <fileread+0x4a> + return -1; 802042a8: 597d li s2,-1 - 802042aa: b769 j 80204234 <fileread+0x4a> + 802042aa: b779 j 80204238 <fileread+0x4a> + 802042ac: 597d li s2,-1 + 802042ae: b769 j 80204238 <fileread+0x4a> -00000000802042ac <filewrite>: +00000000802042b0 <filewrite>: // Write to file f. // addr is a user virtual address. int filewrite(struct file *f, uint64 addr, int n) { - 802042ac: 7179 addi sp,sp,-48 - 802042ae: f406 sd ra,40(sp) - 802042b0: f022 sd s0,32(sp) - 802042b2: ec26 sd s1,24(sp) - 802042b4: e84a sd s2,16(sp) - 802042b6: e44e sd s3,8(sp) - 802042b8: e052 sd s4,0(sp) - 802042ba: 1800 addi s0,sp,48 + 802042b0: 7179 addi sp,sp,-48 + 802042b2: f406 sd ra,40(sp) + 802042b4: f022 sd s0,32(sp) + 802042b6: ec26 sd s1,24(sp) + 802042b8: e84a sd s2,16(sp) + 802042ba: e44e sd s3,8(sp) + 802042bc: e052 sd s4,0(sp) + 802042be: 1800 addi s0,sp,48 int ret = 0; if(f->writable == 0) - 802042bc: 00954783 lbu a5,9(a0) - 802042c0: cbc5 beqz a5,80204370 <filewrite+0xc4> - 802042c2: 84aa mv s1,a0 - 802042c4: 892e mv s2,a1 - 802042c6: 89b2 mv s3,a2 + 802042c0: 00954783 lbu a5,9(a0) + 802042c4: cbc5 beqz a5,80204374 <filewrite+0xc4> + 802042c6: 84aa mv s1,a0 + 802042c8: 892e mv s2,a1 + 802042ca: 89b2 mv s3,a2 return -1; if(f->type == FD_PIPE){ - 802042c8: 411c lw a5,0(a0) - 802042ca: 4705 li a4,1 - 802042cc: 04e78963 beq a5,a4,8020431e <filewrite+0x72> + 802042cc: 411c lw a5,0(a0) + 802042ce: 4705 li a4,1 + 802042d0: 04e78963 beq a5,a4,80204322 <filewrite+0x72> ret = pipewrite(f->pipe, addr, n); } else if(f->type == FD_DEVICE){ - 802042d0: 470d li a4,3 - 802042d2: 04e78d63 beq a5,a4,8020432c <filewrite+0x80> + 802042d4: 470d li a4,3 + 802042d6: 04e78d63 beq a5,a4,80204330 <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){ - 802042d6: 4709 li a4,2 - 802042d8: 08e79463 bne a5,a4,80204360 <filewrite+0xb4> + 802042da: 4709 li a4,2 + 802042dc: 08e79463 bne a5,a4,80204364 <filewrite+0xb4> elock(f->ep); - 802042dc: 6d08 ld a0,24(a0) - 802042de: 00003097 auipc ra,0x3 - 802042e2: de0080e7 jalr -544(ra) # 802070be <elock> + 802042e0: 6d08 ld a0,24(a0) + 802042e2: 00003097 auipc ra,0x3 + 802042e6: d9c080e7 jalr -612(ra) # 8020707e <elock> if (ewrite(f->ep, 1, addr, f->off, n) == n) { - 802042e6: 00098a1b sext.w s4,s3 - 802042ea: 8752 mv a4,s4 - 802042ec: 5094 lw a3,32(s1) - 802042ee: 864a mv a2,s2 - 802042f0: 4585 li a1,1 - 802042f2: 6c88 ld a0,24(s1) - 802042f4: 00002097 auipc ra,0x2 - 802042f8: 5be080e7 jalr 1470(ra) # 802068b2 <ewrite> + 802042ea: 00098a1b sext.w s4,s3 + 802042ee: 8752 mv a4,s4 + 802042f0: 5094 lw a3,32(s1) + 802042f2: 864a mv a2,s2 + 802042f4: 4585 li a1,1 + 802042f6: 6c88 ld a0,24(s1) + 802042f8: 00002097 auipc ra,0x2 + 802042fc: 57a080e7 jalr 1402(ra) # 80206872 <ewrite> ret = n; f->off += n; } else { ret = -1; - 802042fc: 597d li s2,-1 + 80204300: 597d li s2,-1 if (ewrite(f->ep, 1, addr, f->off, n) == n) { - 802042fe: 05350b63 beq a0,s3,80204354 <filewrite+0xa8> + 80204302: 05350b63 beq a0,s3,80204358 <filewrite+0xa8> } eunlock(f->ep); - 80204302: 6c88 ld a0,24(s1) - 80204304: 00003097 auipc ra,0x3 - 80204308: df0080e7 jalr -528(ra) # 802070f4 <eunlock> + 80204306: 6c88 ld a0,24(s1) + 80204308: 00003097 auipc ra,0x3 + 8020430c: dac080e7 jalr -596(ra) # 802070b4 <eunlock> } else { panic("filewrite"); } return ret; } - 8020430c: 854a mv a0,s2 - 8020430e: 70a2 ld ra,40(sp) - 80204310: 7402 ld s0,32(sp) - 80204312: 64e2 ld s1,24(sp) - 80204314: 6942 ld s2,16(sp) - 80204316: 69a2 ld s3,8(sp) - 80204318: 6a02 ld s4,0(sp) - 8020431a: 6145 addi sp,sp,48 - 8020431c: 8082 ret + 80204310: 854a mv a0,s2 + 80204312: 70a2 ld ra,40(sp) + 80204314: 7402 ld s0,32(sp) + 80204316: 64e2 ld s1,24(sp) + 80204318: 6942 ld s2,16(sp) + 8020431a: 69a2 ld s3,8(sp) + 8020431c: 6a02 ld s4,0(sp) + 8020431e: 6145 addi sp,sp,48 + 80204320: 8082 ret ret = pipewrite(f->pipe, addr, n); - 8020431e: 6908 ld a0,16(a0) - 80204320: 00000097 auipc ra,0x0 - 80204324: 26c080e7 jalr 620(ra) # 8020458c <pipewrite> - 80204328: 892a mv s2,a0 - 8020432a: b7cd j 8020430c <filewrite+0x60> + 80204322: 6908 ld a0,16(a0) + 80204324: 00000097 auipc ra,0x0 + 80204328: 26c080e7 jalr 620(ra) # 80204590 <pipewrite> + 8020432c: 892a mv s2,a0 + 8020432e: b7cd j 80204310 <filewrite+0x60> if(f->major < 0 || f->major >= NDEV || !devsw[f->major].write) - 8020432c: 02451783 lh a5,36(a0) - 80204330: 03079693 slli a3,a5,0x30 - 80204334: 92c1 srli a3,a3,0x30 - 80204336: 4725 li a4,9 - 80204338: 02d76e63 bltu a4,a3,80204374 <filewrite+0xc8> - 8020433c: 0792 slli a5,a5,0x4 - 8020433e: 0002d717 auipc a4,0x2d - 80204342: 7d270713 addi a4,a4,2002 # 80231b10 <devsw> - 80204346: 97ba add a5,a5,a4 - 80204348: 679c ld a5,8(a5) - 8020434a: c79d beqz a5,80204378 <filewrite+0xcc> + 80204330: 02451783 lh a5,36(a0) + 80204334: 03079693 slli a3,a5,0x30 + 80204338: 92c1 srli a3,a3,0x30 + 8020433a: 4725 li a4,9 + 8020433c: 02d76e63 bltu a4,a3,80204378 <filewrite+0xc8> + 80204340: 0792 slli a5,a5,0x4 + 80204342: 0002d717 auipc a4,0x2d + 80204346: 7ce70713 addi a4,a4,1998 # 80231b10 <devsw> + 8020434a: 97ba add a5,a5,a4 + 8020434c: 679c ld a5,8(a5) + 8020434e: c79d beqz a5,8020437c <filewrite+0xcc> ret = devsw[f->major].write(1, addr, n); - 8020434c: 4505 li a0,1 - 8020434e: 9782 jalr a5 - 80204350: 892a mv s2,a0 - 80204352: bf6d j 8020430c <filewrite+0x60> + 80204350: 4505 li a0,1 + 80204352: 9782 jalr a5 + 80204354: 892a mv s2,a0 + 80204356: bf6d j 80204310 <filewrite+0x60> f->off += n; - 80204354: 509c lw a5,32(s1) - 80204356: 014787bb addw a5,a5,s4 - 8020435a: d09c sw a5,32(s1) + 80204358: 509c lw a5,32(s1) + 8020435a: 014787bb addw a5,a5,s4 + 8020435e: d09c sw a5,32(s1) ret = n; - 8020435c: 894e mv s2,s3 - 8020435e: b755 j 80204302 <filewrite+0x56> + 80204360: 894e mv s2,s3 + 80204362: b755 j 80204306 <filewrite+0x56> panic("filewrite"); - 80204360: 00007517 auipc a0,0x7 - 80204364: 97850513 addi a0,a0,-1672 # 8020acd8 <digits+0x958> - 80204368: ffffc097 auipc ra,0xffffc - 8020436c: ddc080e7 jalr -548(ra) # 80200144 <panic> + 80204364: 00007517 auipc a0,0x7 + 80204368: 97450513 addi a0,a0,-1676 # 8020acd8 <digits+0x958> + 8020436c: ffffc097 auipc ra,0xffffc + 80204370: dd8080e7 jalr -552(ra) # 80200144 <panic> return -1; - 80204370: 597d li s2,-1 - 80204372: bf69 j 8020430c <filewrite+0x60> - return -1; 80204374: 597d li s2,-1 - 80204376: bf59 j 8020430c <filewrite+0x60> + 80204376: bf69 j 80204310 <filewrite+0x60> + return -1; 80204378: 597d li s2,-1 - 8020437a: bf49 j 8020430c <filewrite+0x60> + 8020437a: bf59 j 80204310 <filewrite+0x60> + 8020437c: 597d li s2,-1 + 8020437e: bf49 j 80204310 <filewrite+0x60> -000000008020437c <dirnext>: +0000000080204380 <dirnext>: int dirnext(struct file *f, uint64 addr) { // struct proc *p = myproc(); if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY)) - 8020437c: 00854783 lbu a5,8(a0) - 80204380: cfdd beqz a5,8020443e <dirnext+0xc2> + 80204380: 00854783 lbu a5,8(a0) + 80204384: cfdd beqz a5,80204442 <dirnext+0xc2> { - 80204382: 7141 addi sp,sp,-496 - 80204384: f786 sd ra,488(sp) - 80204386: f3a2 sd s0,480(sp) - 80204388: efa6 sd s1,472(sp) - 8020438a: ebca sd s2,464(sp) - 8020438c: e7ce sd s3,456(sp) - 8020438e: e3d2 sd s4,448(sp) - 80204390: ff56 sd s5,440(sp) - 80204392: 1b80 addi s0,sp,496 - 80204394: 84aa mv s1,a0 - 80204396: 8aae mv s5,a1 + 80204386: 7141 addi sp,sp,-496 + 80204388: f786 sd ra,488(sp) + 8020438a: f3a2 sd s0,480(sp) + 8020438c: efa6 sd s1,472(sp) + 8020438e: ebca sd s2,464(sp) + 80204390: e7ce sd s3,456(sp) + 80204392: e3d2 sd s4,448(sp) + 80204394: ff56 sd s5,440(sp) + 80204396: 1b80 addi s0,sp,496 + 80204398: 84aa mv s1,a0 + 8020439a: 8aae mv s5,a1 if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY)) - 80204398: 6d18 ld a4,24(a0) - 8020439a: 10074783 lbu a5,256(a4) - 8020439e: 8bc1 andi a5,a5,16 + 8020439c: 6d18 ld a4,24(a0) + 8020439e: 10074783 lbu a5,256(a4) + 802043a2: 8bc1 andi a5,a5,16 return -1; - 802043a0: 557d li a0,-1 + 802043a4: 557d li a0,-1 if(f->readable == 0 || !(f->ep->attribute & ATTR_DIRECTORY)) - 802043a2: eb91 bnez a5,802043b6 <dirnext+0x3a> + 802043a6: eb91 bnez a5,802043ba <dirnext+0x3a> // if(copyout(p->pagetable, addr, (char *)&st, sizeof(st)) < 0) if(copyout2(addr, (char *)&st, sizeof(st)) < 0) return -1; return 1; - 802043a4: 70be ld ra,488(sp) - 802043a6: 741e ld s0,480(sp) - 802043a8: 64fe ld s1,472(sp) - 802043aa: 695e ld s2,464(sp) - 802043ac: 69be ld s3,456(sp) - 802043ae: 6a1e ld s4,448(sp) - 802043b0: 7afa ld s5,440(sp) - 802043b2: 617d addi sp,sp,496 - 802043b4: 8082 ret + 802043a8: 70be ld ra,488(sp) + 802043aa: 741e ld s0,480(sp) + 802043ac: 64fe ld s1,472(sp) + 802043ae: 695e ld s2,464(sp) + 802043b0: 69be ld s3,456(sp) + 802043b2: 6a1e ld s4,448(sp) + 802043b4: 7afa ld s5,440(sp) + 802043b6: 617d addi sp,sp,496 + 802043b8: 8082 ret int count = 0; - 802043b6: e0042e23 sw zero,-484(s0) + 802043ba: e0042e23 sw zero,-484(s0) elock(f->ep); - 802043ba: 853a mv a0,a4 - 802043bc: 00003097 auipc ra,0x3 - 802043c0: d02080e7 jalr -766(ra) # 802070be <elock> + 802043be: 853a mv a0,a4 + 802043c0: 00003097 auipc ra,0x3 + 802043c4: cbe080e7 jalr -834(ra) # 8020707e <elock> while ((ret = enext(f->ep, &de, f->off, &count)) == 0) { // skip empty entry - 802043c4: e1c40a13 addi s4,s0,-484 - 802043c8: e5840993 addi s3,s0,-424 - 802043cc: a801 j 802043dc <dirnext+0x60> + 802043c8: e1c40a13 addi s4,s0,-484 + 802043cc: e5840993 addi s3,s0,-424 + 802043d0: a801 j 802043e0 <dirnext+0x60> f->off += count * 32; - 802043ce: e1c42783 lw a5,-484(s0) - 802043d2: 0057979b slliw a5,a5,0x5 - 802043d6: 5098 lw a4,32(s1) - 802043d8: 9fb9 addw a5,a5,a4 - 802043da: d09c sw a5,32(s1) + 802043d2: e1c42783 lw a5,-484(s0) + 802043d6: 0057979b slliw a5,a5,0x5 + 802043da: 5098 lw a4,32(s1) + 802043dc: 9fb9 addw a5,a5,a4 + 802043de: d09c sw a5,32(s1) while ((ret = enext(f->ep, &de, f->off, &count)) == 0) { // skip empty entry - 802043dc: 86d2 mv a3,s4 - 802043de: 5090 lw a2,32(s1) - 802043e0: 85ce mv a1,s3 - 802043e2: 6c88 ld a0,24(s1) - 802043e4: 00003097 auipc ra,0x3 - 802043e8: ede080e7 jalr -290(ra) # 802072c2 <enext> - 802043ec: 892a mv s2,a0 - 802043ee: d165 beqz a0,802043ce <dirnext+0x52> + 802043e0: 86d2 mv a3,s4 + 802043e2: 5090 lw a2,32(s1) + 802043e4: 85ce mv a1,s3 + 802043e6: 6c88 ld a0,24(s1) + 802043e8: 00003097 auipc ra,0x3 + 802043ec: e9a080e7 jalr -358(ra) # 80207282 <enext> + 802043f0: 892a mv s2,a0 + 802043f2: d165 beqz a0,802043d2 <dirnext+0x52> eunlock(f->ep); - 802043f0: 6c88 ld a0,24(s1) - 802043f2: 00003097 auipc ra,0x3 - 802043f6: d02080e7 jalr -766(ra) # 802070f4 <eunlock> + 802043f4: 6c88 ld a0,24(s1) + 802043f6: 00003097 auipc ra,0x3 + 802043fa: cbe080e7 jalr -834(ra) # 802070b4 <eunlock> if (ret == -1) - 802043fa: 57fd li a5,-1 + 802043fe: 57fd li a5,-1 return 0; - 802043fc: 4501 li a0,0 + 80204400: 4501 li a0,0 if (ret == -1) - 802043fe: faf903e3 beq s2,a5,802043a4 <dirnext+0x28> + 80204402: faf903e3 beq s2,a5,802043a8 <dirnext+0x28> f->off += count * 32; - 80204402: e1c42783 lw a5,-484(s0) - 80204406: 0057979b slliw a5,a5,0x5 - 8020440a: 5098 lw a4,32(s1) - 8020440c: 9fb9 addw a5,a5,a4 - 8020440e: d09c sw a5,32(s1) + 80204406: e1c42783 lw a5,-484(s0) + 8020440a: 0057979b slliw a5,a5,0x5 + 8020440e: 5098 lw a4,32(s1) + 80204410: 9fb9 addw a5,a5,a4 + 80204412: d09c sw a5,32(s1) estat(&de, &st); - 80204410: e2040493 addi s1,s0,-480 - 80204414: 85a6 mv a1,s1 - 80204416: e5840513 addi a0,s0,-424 - 8020441a: 00003097 auipc ra,0x3 - 8020441e: e60080e7 jalr -416(ra) # 8020727a <estat> + 80204414: e2040493 addi s1,s0,-480 + 80204418: 85a6 mv a1,s1 + 8020441a: e5840513 addi a0,s0,-424 + 8020441e: 00003097 auipc ra,0x3 + 80204422: e1c080e7 jalr -484(ra) # 8020723a <estat> if(copyout2(addr, (char *)&st, sizeof(st)) < 0) - 80204422: 03800613 li a2,56 - 80204426: 85a6 mv a1,s1 - 80204428: 8556 mv a0,s5 - 8020442a: ffffd097 auipc ra,0xffffd - 8020442e: f48080e7 jalr -184(ra) # 80201372 <copyout2> + 80204426: 03800613 li a2,56 + 8020442a: 85a6 mv a1,s1 + 8020442c: 8556 mv a0,s5 + 8020442e: ffffd097 auipc ra,0xffffd + 80204432: f44080e7 jalr -188(ra) # 80201372 <copyout2> return -1; - 80204432: fff54513 not a0,a0 - 80204436: 957d srai a0,a0,0x3f - 80204438: 8909 andi a0,a0,2 - 8020443a: 157d addi a0,a0,-1 - 8020443c: b7a5 j 802043a4 <dirnext+0x28> + 80204436: fff54513 not a0,a0 + 8020443a: 957d srai a0,a0,0x3f + 8020443c: 8909 andi a0,a0,2 + 8020443e: 157d addi a0,a0,-1 + 80204440: b7a5 j 802043a8 <dirnext+0x28> return -1; - 8020443e: 557d li a0,-1 - 80204440: 8082 ret + 80204442: 557d li a0,-1 + 80204444: 8082 ret -0000000080204442 <pipealloc>: +0000000080204446 <pipealloc>: #include "include/kalloc.h" #include "include/vm.h" int pipealloc(struct file **f0, struct file **f1) { - 80204442: 7179 addi sp,sp,-48 - 80204444: f406 sd ra,40(sp) - 80204446: f022 sd s0,32(sp) - 80204448: ec26 sd s1,24(sp) - 8020444a: e84a sd s2,16(sp) - 8020444c: e44e sd s3,8(sp) - 8020444e: e052 sd s4,0(sp) - 80204450: 1800 addi s0,sp,48 - 80204452: 84aa mv s1,a0 - 80204454: 8a2e mv s4,a1 + 80204446: 7179 addi sp,sp,-48 + 80204448: f406 sd ra,40(sp) + 8020444a: f022 sd s0,32(sp) + 8020444c: ec26 sd s1,24(sp) + 8020444e: e84a sd s2,16(sp) + 80204450: e44e sd s3,8(sp) + 80204452: e052 sd s4,0(sp) + 80204454: 1800 addi s0,sp,48 + 80204456: 84aa mv s1,a0 + 80204458: 8a2e mv s4,a1 struct pipe *pi; pi = 0; *f0 = *f1 = 0; - 80204456: 0005b023 sd zero,0(a1) - 8020445a: 00053023 sd zero,0(a0) + 8020445a: 0005b023 sd zero,0(a1) + 8020445e: 00053023 sd zero,0(a0) if((*f0 = filealloc()) == NULL || (*f1 = filealloc()) == NULL) - 8020445e: 00000097 auipc ra,0x0 - 80204462: b2c080e7 jalr -1236(ra) # 80203f8a <filealloc> - 80204466: e088 sd a0,0(s1) - 80204468: c551 beqz a0,802044f4 <pipealloc+0xb2> - 8020446a: 00000097 auipc ra,0x0 - 8020446e: b20080e7 jalr -1248(ra) # 80203f8a <filealloc> - 80204472: 00aa3023 sd a0,0(s4) - 80204476: c92d beqz a0,802044e8 <pipealloc+0xa6> + 80204462: 00000097 auipc ra,0x0 + 80204466: b2c080e7 jalr -1236(ra) # 80203f8e <filealloc> + 8020446a: e088 sd a0,0(s1) + 8020446c: c551 beqz a0,802044f8 <pipealloc+0xb2> + 8020446e: 00000097 auipc ra,0x0 + 80204472: b20080e7 jalr -1248(ra) # 80203f8e <filealloc> + 80204476: 00aa3023 sd a0,0(s4) + 8020447a: c92d beqz a0,802044ec <pipealloc+0xa6> goto bad; if((pi = (struct pipe*)kalloc()) == NULL) - 80204478: ffffc097 auipc ra,0xffffc - 8020447c: 0e2080e7 jalr 226(ra) # 8020055a <kalloc> - 80204480: 892a mv s2,a0 - 80204482: c125 beqz a0,802044e2 <pipealloc+0xa0> + 8020447c: ffffc097 auipc ra,0xffffc + 80204480: 0de080e7 jalr 222(ra) # 8020055a <kalloc> + 80204484: 892a mv s2,a0 + 80204486: c125 beqz a0,802044e6 <pipealloc+0xa0> goto bad; pi->readopen = 1; - 80204484: 4985 li s3,1 - 80204486: 23352023 sw s3,544(a0) + 80204488: 4985 li s3,1 + 8020448a: 23352023 sw s3,544(a0) pi->writeopen = 1; - 8020448a: 23352223 sw s3,548(a0) + 8020448e: 23352223 sw s3,548(a0) pi->nwrite = 0; - 8020448e: 20052e23 sw zero,540(a0) + 80204492: 20052e23 sw zero,540(a0) pi->nread = 0; - 80204492: 20052c23 sw zero,536(a0) + 80204496: 20052c23 sw zero,536(a0) initlock(&pi->lock, "pipe"); - 80204496: 00006597 auipc a1,0x6 - 8020449a: 55a58593 addi a1,a1,1370 # 8020a9f0 <digits+0x670> - 8020449e: ffffc097 auipc ra,0xffffc - 802044a2: 1e4080e7 jalr 484(ra) # 80200682 <initlock> + 8020449a: 00006597 auipc a1,0x6 + 8020449e: 55658593 addi a1,a1,1366 # 8020a9f0 <digits+0x670> + 802044a2: ffffc097 auipc ra,0xffffc + 802044a6: 1e0080e7 jalr 480(ra) # 80200682 <initlock> (*f0)->type = FD_PIPE; - 802044a6: 609c ld a5,0(s1) - 802044a8: 0137a023 sw s3,0(a5) + 802044aa: 609c ld a5,0(s1) + 802044ac: 0137a023 sw s3,0(a5) (*f0)->readable = 1; - 802044ac: 609c ld a5,0(s1) - 802044ae: 01378423 sb s3,8(a5) + 802044b0: 609c ld a5,0(s1) + 802044b2: 01378423 sb s3,8(a5) (*f0)->writable = 0; - 802044b2: 609c ld a5,0(s1) - 802044b4: 000784a3 sb zero,9(a5) + 802044b6: 609c ld a5,0(s1) + 802044b8: 000784a3 sb zero,9(a5) (*f0)->pipe = pi; - 802044b8: 609c ld a5,0(s1) - 802044ba: 0127b823 sd s2,16(a5) + 802044bc: 609c ld a5,0(s1) + 802044be: 0127b823 sd s2,16(a5) (*f1)->type = FD_PIPE; - 802044be: 000a3783 ld a5,0(s4) - 802044c2: 0137a023 sw s3,0(a5) + 802044c2: 000a3783 ld a5,0(s4) + 802044c6: 0137a023 sw s3,0(a5) (*f1)->readable = 0; - 802044c6: 000a3783 ld a5,0(s4) - 802044ca: 00078423 sb zero,8(a5) + 802044ca: 000a3783 ld a5,0(s4) + 802044ce: 00078423 sb zero,8(a5) (*f1)->writable = 1; - 802044ce: 000a3783 ld a5,0(s4) - 802044d2: 013784a3 sb s3,9(a5) + 802044d2: 000a3783 ld a5,0(s4) + 802044d6: 013784a3 sb s3,9(a5) (*f1)->pipe = pi; - 802044d6: 000a3783 ld a5,0(s4) - 802044da: 0127b823 sd s2,16(a5) + 802044da: 000a3783 ld a5,0(s4) + 802044de: 0127b823 sd s2,16(a5) return 0; - 802044de: 4501 li a0,0 - 802044e0: a025 j 80204508 <pipealloc+0xc6> + 802044e2: 4501 li a0,0 + 802044e4: a025 j 8020450c <pipealloc+0xc6> bad: if(pi) kfree((char*)pi); if(*f0) - 802044e2: 6088 ld a0,0(s1) - 802044e4: e501 bnez a0,802044ec <pipealloc+0xaa> - 802044e6: a039 j 802044f4 <pipealloc+0xb2> - 802044e8: 6088 ld a0,0(s1) - 802044ea: c51d beqz a0,80204518 <pipealloc+0xd6> + 802044e6: 6088 ld a0,0(s1) + 802044e8: e501 bnez a0,802044f0 <pipealloc+0xaa> + 802044ea: a039 j 802044f8 <pipealloc+0xb2> + 802044ec: 6088 ld a0,0(s1) + 802044ee: c51d beqz a0,8020451c <pipealloc+0xd6> fileclose(*f0); - 802044ec: 00000097 auipc ra,0x0 - 802044f0: b5a080e7 jalr -1190(ra) # 80204046 <fileclose> + 802044f0: 00000097 auipc ra,0x0 + 802044f4: b5a080e7 jalr -1190(ra) # 8020404a <fileclose> if(*f1) - 802044f4: 000a3783 ld a5,0(s4) + 802044f8: 000a3783 ld a5,0(s4) fileclose(*f1); return -1; - 802044f8: 557d li a0,-1 + 802044fc: 557d li a0,-1 if(*f1) - 802044fa: c799 beqz a5,80204508 <pipealloc+0xc6> + 802044fe: c799 beqz a5,8020450c <pipealloc+0xc6> fileclose(*f1); - 802044fc: 853e mv a0,a5 - 802044fe: 00000097 auipc ra,0x0 - 80204502: b48080e7 jalr -1208(ra) # 80204046 <fileclose> + 80204500: 853e mv a0,a5 + 80204502: 00000097 auipc ra,0x0 + 80204506: b48080e7 jalr -1208(ra) # 8020404a <fileclose> return -1; - 80204506: 557d li a0,-1 + 8020450a: 557d li a0,-1 } - 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: 69a2 ld s3,8(sp) - 80204512: 6a02 ld s4,0(sp) - 80204514: 6145 addi sp,sp,48 - 80204516: 8082 ret + 8020450c: 70a2 ld ra,40(sp) + 8020450e: 7402 ld s0,32(sp) + 80204510: 64e2 ld s1,24(sp) + 80204512: 6942 ld s2,16(sp) + 80204514: 69a2 ld s3,8(sp) + 80204516: 6a02 ld s4,0(sp) + 80204518: 6145 addi sp,sp,48 + 8020451a: 8082 ret return -1; - 80204518: 557d li a0,-1 - 8020451a: b7fd j 80204508 <pipealloc+0xc6> + 8020451c: 557d li a0,-1 + 8020451e: b7fd j 8020450c <pipealloc+0xc6> -000000008020451c <pipeclose>: +0000000080204520 <pipeclose>: void pipeclose(struct pipe *pi, int writable) { - 8020451c: 1101 addi sp,sp,-32 - 8020451e: ec06 sd ra,24(sp) - 80204520: e822 sd s0,16(sp) - 80204522: e426 sd s1,8(sp) - 80204524: e04a sd s2,0(sp) - 80204526: 1000 addi s0,sp,32 - 80204528: 84aa mv s1,a0 - 8020452a: 892e mv s2,a1 + 80204520: 1101 addi sp,sp,-32 + 80204522: ec06 sd ra,24(sp) + 80204524: e822 sd s0,16(sp) + 80204526: e426 sd s1,8(sp) + 80204528: e04a sd s2,0(sp) + 8020452a: 1000 addi s0,sp,32 + 8020452c: 84aa mv s1,a0 + 8020452e: 892e mv s2,a1 acquire(&pi->lock); - 8020452c: ffffc097 auipc ra,0xffffc - 80204530: 19a080e7 jalr 410(ra) # 802006c6 <acquire> + 80204530: ffffc097 auipc ra,0xffffc + 80204534: 196080e7 jalr 406(ra) # 802006c6 <acquire> if(writable){ - 80204534: 02090d63 beqz s2,8020456e <pipeclose+0x52> + 80204538: 02090d63 beqz s2,80204572 <pipeclose+0x52> pi->writeopen = 0; - 80204538: 2204a223 sw zero,548(s1) + 8020453c: 2204a223 sw zero,548(s1) wakeup(&pi->nread); - 8020453c: 21848513 addi a0,s1,536 - 80204540: ffffe097 auipc ra,0xffffe - 80204544: 1c0080e7 jalr 448(ra) # 80202700 <wakeup> + 80204540: 21848513 addi a0,s1,536 + 80204544: ffffe097 auipc ra,0xffffe + 80204548: 1b6080e7 jalr 438(ra) # 802026fa <wakeup> } else { pi->readopen = 0; wakeup(&pi->nwrite); } if(pi->readopen == 0 && pi->writeopen == 0){ - 80204548: 2204b783 ld a5,544(s1) - 8020454c: eb95 bnez a5,80204580 <pipeclose+0x64> + 8020454c: 2204b783 ld a5,544(s1) + 80204550: eb95 bnez a5,80204584 <pipeclose+0x64> release(&pi->lock); - 8020454e: 8526 mv a0,s1 - 80204550: ffffc097 auipc ra,0xffffc - 80204554: 1ca080e7 jalr 458(ra) # 8020071a <release> + 80204552: 8526 mv a0,s1 + 80204554: ffffc097 auipc ra,0xffffc + 80204558: 1c6080e7 jalr 454(ra) # 8020071a <release> kfree((char*)pi); - 80204558: 8526 mv a0,s1 - 8020455a: ffffc097 auipc ra,0xffffc - 8020455e: ee6080e7 jalr -282(ra) # 80200440 <kfree> + 8020455c: 8526 mv a0,s1 + 8020455e: ffffc097 auipc ra,0xffffc + 80204562: ee2080e7 jalr -286(ra) # 80200440 <kfree> } else release(&pi->lock); } - 80204562: 60e2 ld ra,24(sp) - 80204564: 6442 ld s0,16(sp) - 80204566: 64a2 ld s1,8(sp) - 80204568: 6902 ld s2,0(sp) - 8020456a: 6105 addi sp,sp,32 - 8020456c: 8082 ret + 80204566: 60e2 ld ra,24(sp) + 80204568: 6442 ld s0,16(sp) + 8020456a: 64a2 ld s1,8(sp) + 8020456c: 6902 ld s2,0(sp) + 8020456e: 6105 addi sp,sp,32 + 80204570: 8082 ret pi->readopen = 0; - 8020456e: 2204a023 sw zero,544(s1) + 80204572: 2204a023 sw zero,544(s1) wakeup(&pi->nwrite); - 80204572: 21c48513 addi a0,s1,540 - 80204576: ffffe097 auipc ra,0xffffe - 8020457a: 18a080e7 jalr 394(ra) # 80202700 <wakeup> - 8020457e: b7e9 j 80204548 <pipeclose+0x2c> + 80204576: 21c48513 addi a0,s1,540 + 8020457a: ffffe097 auipc ra,0xffffe + 8020457e: 180080e7 jalr 384(ra) # 802026fa <wakeup> + 80204582: b7e9 j 8020454c <pipeclose+0x2c> release(&pi->lock); - 80204580: 8526 mv a0,s1 - 80204582: ffffc097 auipc ra,0xffffc - 80204586: 198080e7 jalr 408(ra) # 8020071a <release> + 80204584: 8526 mv a0,s1 + 80204586: ffffc097 auipc ra,0xffffc + 8020458a: 194080e7 jalr 404(ra) # 8020071a <release> } - 8020458a: bfe1 j 80204562 <pipeclose+0x46> + 8020458e: bfe1 j 80204566 <pipeclose+0x46> -000000008020458c <pipewrite>: +0000000080204590 <pipewrite>: int pipewrite(struct pipe *pi, uint64 addr, int n) { - 8020458c: 7159 addi sp,sp,-112 - 8020458e: f486 sd ra,104(sp) - 80204590: f0a2 sd s0,96(sp) - 80204592: eca6 sd s1,88(sp) - 80204594: e8ca sd s2,80(sp) - 80204596: e4ce sd s3,72(sp) - 80204598: e0d2 sd s4,64(sp) - 8020459a: fc56 sd s5,56(sp) - 8020459c: f85a sd s6,48(sp) - 8020459e: f45e sd s7,40(sp) - 802045a0: f062 sd s8,32(sp) - 802045a2: ec66 sd s9,24(sp) - 802045a4: 1880 addi s0,sp,112 - 802045a6: 84aa mv s1,a0 - 802045a8: 8b2e mv s6,a1 - 802045aa: 8ab2 mv s5,a2 + 80204590: 7159 addi sp,sp,-112 + 80204592: f486 sd ra,104(sp) + 80204594: f0a2 sd s0,96(sp) + 80204596: eca6 sd s1,88(sp) + 80204598: e8ca sd s2,80(sp) + 8020459a: e4ce sd s3,72(sp) + 8020459c: e0d2 sd s4,64(sp) + 8020459e: fc56 sd s5,56(sp) + 802045a0: f85a sd s6,48(sp) + 802045a2: f45e sd s7,40(sp) + 802045a4: f062 sd s8,32(sp) + 802045a6: ec66 sd s9,24(sp) + 802045a8: 1880 addi s0,sp,112 + 802045aa: 84aa mv s1,a0 + 802045ac: 8b2e mv s6,a1 + 802045ae: 8ab2 mv s5,a2 int i; char ch; struct proc *pr = myproc(); - 802045ac: ffffd097 auipc ra,0xffffd - 802045b0: 490080e7 jalr 1168(ra) # 80201a3c <myproc> - 802045b4: 892a mv s2,a0 + 802045b0: ffffd097 auipc ra,0xffffd + 802045b4: 48c080e7 jalr 1164(ra) # 80201a3c <myproc> + 802045b8: 892a mv s2,a0 acquire(&pi->lock); - 802045b6: 8526 mv a0,s1 - 802045b8: ffffc097 auipc ra,0xffffc - 802045bc: 10e080e7 jalr 270(ra) # 802006c6 <acquire> + 802045ba: 8526 mv a0,s1 + 802045bc: ffffc097 auipc ra,0xffffc + 802045c0: 10a080e7 jalr 266(ra) # 802006c6 <acquire> for(i = 0; i < n; i++){ - 802045c0: 09505763 blez s5,8020464e <pipewrite+0xc2> - 802045c4: 4b81 li s7,0 + 802045c4: 09505763 blez s5,80204652 <pipewrite+0xc2> + 802045c8: 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); - 802045c6: 21848a13 addi s4,s1,536 + 802045ca: 21848a13 addi s4,s1,536 sleep(&pi->nwrite, &pi->lock); - 802045ca: 21c48993 addi s3,s1,540 + 802045ce: 21c48993 addi s3,s1,540 } // if(copyin(pr->pagetable, &ch, addr + i, 1) == -1) if(copyin2(&ch, addr + i, 1) == -1) - 802045ce: f9f40c93 addi s9,s0,-97 - 802045d2: 5c7d li s8,-1 + 802045d2: f9f40c93 addi s9,s0,-97 + 802045d6: 5c7d li s8,-1 while(pi->nwrite == pi->nread + PIPESIZE){ //DOC: pipewrite-full - 802045d4: 2184a783 lw a5,536(s1) - 802045d8: 21c4a703 lw a4,540(s1) - 802045dc: 2007879b addiw a5,a5,512 - 802045e0: 02f71b63 bne a4,a5,80204616 <pipewrite+0x8a> + 802045d8: 2184a783 lw a5,536(s1) + 802045dc: 21c4a703 lw a4,540(s1) + 802045e0: 2007879b addiw a5,a5,512 + 802045e4: 02f71b63 bne a4,a5,8020461a <pipewrite+0x8a> if(pi->readopen == 0 || pr->killed){ - 802045e4: 2204a783 lw a5,544(s1) - 802045e8: c3c1 beqz a5,80204668 <pipewrite+0xdc> - 802045ea: 03092783 lw a5,48(s2) - 802045ee: efad bnez a5,80204668 <pipewrite+0xdc> + 802045e8: 2204a783 lw a5,544(s1) + 802045ec: c3c1 beqz a5,8020466c <pipewrite+0xdc> + 802045ee: 03092783 lw a5,48(s2) + 802045f2: efad bnez a5,8020466c <pipewrite+0xdc> wakeup(&pi->nread); - 802045f0: 8552 mv a0,s4 - 802045f2: ffffe097 auipc ra,0xffffe - 802045f6: 10e080e7 jalr 270(ra) # 80202700 <wakeup> + 802045f4: 8552 mv a0,s4 + 802045f6: ffffe097 auipc ra,0xffffe + 802045fa: 104080e7 jalr 260(ra) # 802026fa <wakeup> sleep(&pi->nwrite, &pi->lock); - 802045fa: 85a6 mv a1,s1 - 802045fc: 854e mv a0,s3 - 802045fe: ffffe097 auipc ra,0xffffe - 80204602: e1a080e7 jalr -486(ra) # 80202418 <sleep> + 802045fe: 85a6 mv a1,s1 + 80204600: 854e mv a0,s3 + 80204602: ffffe097 auipc ra,0xffffe + 80204606: e10080e7 jalr -496(ra) # 80202412 <sleep> while(pi->nwrite == pi->nread + PIPESIZE){ //DOC: pipewrite-full - 80204606: 2184a783 lw a5,536(s1) - 8020460a: 21c4a703 lw a4,540(s1) - 8020460e: 2007879b addiw a5,a5,512 - 80204612: fcf709e3 beq a4,a5,802045e4 <pipewrite+0x58> + 8020460a: 2184a783 lw a5,536(s1) + 8020460e: 21c4a703 lw a4,540(s1) + 80204612: 2007879b addiw a5,a5,512 + 80204616: fcf709e3 beq a4,a5,802045e8 <pipewrite+0x58> if(copyin2(&ch, addr + i, 1) == -1) - 80204616: 4605 li a2,1 - 80204618: 85da mv a1,s6 - 8020461a: 8566 mv a0,s9 - 8020461c: ffffd097 auipc ra,0xffffd - 80204620: e36080e7 jalr -458(ra) # 80201452 <copyin2> - 80204624: 03850663 beq a0,s8,80204650 <pipewrite+0xc4> + 8020461a: 4605 li a2,1 + 8020461c: 85da mv a1,s6 + 8020461e: 8566 mv a0,s9 + 80204620: ffffd097 auipc ra,0xffffd + 80204624: e32080e7 jalr -462(ra) # 80201452 <copyin2> + 80204628: 03850663 beq a0,s8,80204654 <pipewrite+0xc4> break; pi->data[pi->nwrite++ % PIPESIZE] = ch; - 80204628: 21c4a783 lw a5,540(s1) - 8020462c: 0017871b addiw a4,a5,1 - 80204630: 20e4ae23 sw a4,540(s1) - 80204634: 1ff7f793 andi a5,a5,511 - 80204638: 97a6 add a5,a5,s1 - 8020463a: f9f44703 lbu a4,-97(s0) - 8020463e: 00e78c23 sb a4,24(a5) + 8020462c: 21c4a783 lw a5,540(s1) + 80204630: 0017871b addiw a4,a5,1 + 80204634: 20e4ae23 sw a4,540(s1) + 80204638: 1ff7f793 andi a5,a5,511 + 8020463c: 97a6 add a5,a5,s1 + 8020463e: f9f44703 lbu a4,-97(s0) + 80204642: 00e78c23 sb a4,24(a5) for(i = 0; i < n; i++){ - 80204642: 2b85 addiw s7,s7,1 - 80204644: 0b05 addi s6,s6,1 - 80204646: f97a97e3 bne s5,s7,802045d4 <pipewrite+0x48> - 8020464a: 8bd6 mv s7,s5 - 8020464c: a011 j 80204650 <pipewrite+0xc4> - 8020464e: 4b81 li s7,0 + 80204646: 2b85 addiw s7,s7,1 + 80204648: 0b05 addi s6,s6,1 + 8020464a: f97a97e3 bne s5,s7,802045d8 <pipewrite+0x48> + 8020464e: 8bd6 mv s7,s5 + 80204650: a011 j 80204654 <pipewrite+0xc4> + 80204652: 4b81 li s7,0 } wakeup(&pi->nread); - 80204650: 21848513 addi a0,s1,536 - 80204654: ffffe097 auipc ra,0xffffe - 80204658: 0ac080e7 jalr 172(ra) # 80202700 <wakeup> + 80204654: 21848513 addi a0,s1,536 + 80204658: ffffe097 auipc ra,0xffffe + 8020465c: 0a2080e7 jalr 162(ra) # 802026fa <wakeup> release(&pi->lock); - 8020465c: 8526 mv a0,s1 - 8020465e: ffffc097 auipc ra,0xffffc - 80204662: 0bc080e7 jalr 188(ra) # 8020071a <release> + 80204660: 8526 mv a0,s1 + 80204662: ffffc097 auipc ra,0xffffc + 80204666: 0b8080e7 jalr 184(ra) # 8020071a <release> return i; - 80204666: a039 j 80204674 <pipewrite+0xe8> + 8020466a: a039 j 80204678 <pipewrite+0xe8> release(&pi->lock); - 80204668: 8526 mv a0,s1 - 8020466a: ffffc097 auipc ra,0xffffc - 8020466e: 0b0080e7 jalr 176(ra) # 8020071a <release> + 8020466c: 8526 mv a0,s1 + 8020466e: ffffc097 auipc ra,0xffffc + 80204672: 0ac080e7 jalr 172(ra) # 8020071a <release> return -1; - 80204672: 5bfd li s7,-1 + 80204676: 5bfd li s7,-1 } - 80204674: 855e mv a0,s7 - 80204676: 70a6 ld ra,104(sp) - 80204678: 7406 ld s0,96(sp) - 8020467a: 64e6 ld s1,88(sp) - 8020467c: 6946 ld s2,80(sp) - 8020467e: 69a6 ld s3,72(sp) - 80204680: 6a06 ld s4,64(sp) - 80204682: 7ae2 ld s5,56(sp) - 80204684: 7b42 ld s6,48(sp) - 80204686: 7ba2 ld s7,40(sp) - 80204688: 7c02 ld s8,32(sp) - 8020468a: 6ce2 ld s9,24(sp) - 8020468c: 6165 addi sp,sp,112 - 8020468e: 8082 ret - -0000000080204690 <piperead>: + 80204678: 855e mv a0,s7 + 8020467a: 70a6 ld ra,104(sp) + 8020467c: 7406 ld s0,96(sp) + 8020467e: 64e6 ld s1,88(sp) + 80204680: 6946 ld s2,80(sp) + 80204682: 69a6 ld s3,72(sp) + 80204684: 6a06 ld s4,64(sp) + 80204686: 7ae2 ld s5,56(sp) + 80204688: 7b42 ld s6,48(sp) + 8020468a: 7ba2 ld s7,40(sp) + 8020468c: 7c02 ld s8,32(sp) + 8020468e: 6ce2 ld s9,24(sp) + 80204690: 6165 addi sp,sp,112 + 80204692: 8082 ret + +0000000080204694 <piperead>: int piperead(struct pipe *pi, uint64 addr, int n) { - 80204690: 715d addi sp,sp,-80 - 80204692: e486 sd ra,72(sp) - 80204694: e0a2 sd s0,64(sp) - 80204696: fc26 sd s1,56(sp) - 80204698: f84a sd s2,48(sp) - 8020469a: f44e sd s3,40(sp) - 8020469c: f052 sd s4,32(sp) - 8020469e: ec56 sd s5,24(sp) - 802046a0: e85a sd s6,16(sp) - 802046a2: 0880 addi s0,sp,80 - 802046a4: 84aa mv s1,a0 - 802046a6: 892e mv s2,a1 - 802046a8: 8a32 mv s4,a2 + 80204694: 715d addi sp,sp,-80 + 80204696: e486 sd ra,72(sp) + 80204698: e0a2 sd s0,64(sp) + 8020469a: fc26 sd s1,56(sp) + 8020469c: f84a sd s2,48(sp) + 8020469e: f44e sd s3,40(sp) + 802046a0: f052 sd s4,32(sp) + 802046a2: ec56 sd s5,24(sp) + 802046a4: e85a sd s6,16(sp) + 802046a6: 0880 addi s0,sp,80 + 802046a8: 84aa mv s1,a0 + 802046aa: 892e mv s2,a1 + 802046ac: 8a32 mv s4,a2 int i; struct proc *pr = myproc(); - 802046aa: ffffd097 auipc ra,0xffffd - 802046ae: 392080e7 jalr 914(ra) # 80201a3c <myproc> - 802046b2: 89aa mv s3,a0 + 802046ae: ffffd097 auipc ra,0xffffd + 802046b2: 38e080e7 jalr 910(ra) # 80201a3c <myproc> + 802046b6: 89aa mv s3,a0 char ch; acquire(&pi->lock); - 802046b4: 8526 mv a0,s1 - 802046b6: ffffc097 auipc ra,0xffffc - 802046ba: 010080e7 jalr 16(ra) # 802006c6 <acquire> + 802046b8: 8526 mv a0,s1 + 802046ba: ffffc097 auipc ra,0xffffc + 802046be: 00c080e7 jalr 12(ra) # 802006c6 <acquire> while(pi->nread == pi->nwrite && pi->writeopen){ //DOC: pipe-empty - 802046be: 2184a703 lw a4,536(s1) - 802046c2: 21c4a783 lw a5,540(s1) + 802046c2: 2184a703 lw a4,536(s1) + 802046c6: 21c4a783 lw a5,540(s1) if(pr->killed){ release(&pi->lock); return -1; } sleep(&pi->nread, &pi->lock); //DOC: piperead-sleep - 802046c6: 21848a93 addi s5,s1,536 + 802046ca: 21848a93 addi s5,s1,536 while(pi->nread == pi->nwrite && pi->writeopen){ //DOC: pipe-empty - 802046ca: 02f71463 bne a4,a5,802046f2 <piperead+0x62> - 802046ce: 2244a783 lw a5,548(s1) - 802046d2: c385 beqz a5,802046f2 <piperead+0x62> + 802046ce: 02f71463 bne a4,a5,802046f6 <piperead+0x62> + 802046d2: 2244a783 lw a5,548(s1) + 802046d6: c385 beqz a5,802046f6 <piperead+0x62> if(pr->killed){ - 802046d4: 0309a783 lw a5,48(s3) - 802046d8: ebc1 bnez a5,80204768 <piperead+0xd8> + 802046d8: 0309a783 lw a5,48(s3) + 802046dc: ebc1 bnez a5,8020476c <piperead+0xd8> sleep(&pi->nread, &pi->lock); //DOC: piperead-sleep - 802046da: 85a6 mv a1,s1 - 802046dc: 8556 mv a0,s5 - 802046de: ffffe097 auipc ra,0xffffe - 802046e2: d3a080e7 jalr -710(ra) # 80202418 <sleep> + 802046de: 85a6 mv a1,s1 + 802046e0: 8556 mv a0,s5 + 802046e2: ffffe097 auipc ra,0xffffe + 802046e6: d30080e7 jalr -720(ra) # 80202412 <sleep> while(pi->nread == pi->nwrite && pi->writeopen){ //DOC: pipe-empty - 802046e6: 2184a703 lw a4,536(s1) - 802046ea: 21c4a783 lw a5,540(s1) - 802046ee: fef700e3 beq a4,a5,802046ce <piperead+0x3e> + 802046ea: 2184a703 lw a4,536(s1) + 802046ee: 21c4a783 lw a5,540(s1) + 802046f2: fef700e3 beq a4,a5,802046d2 <piperead+0x3e> } for(i = 0; i < n; i++){ //DOC: piperead-copy - 802046f2: 4981 li s3,0 + 802046f6: 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) - 802046f4: fbf40b13 addi s6,s0,-65 - 802046f8: 5afd li s5,-1 + 802046f8: fbf40b13 addi s6,s0,-65 + 802046fc: 5afd li s5,-1 for(i = 0; i < n; i++){ //DOC: piperead-copy - 802046fa: 05405163 blez s4,8020473c <piperead+0xac> + 802046fe: 05405163 blez s4,80204740 <piperead+0xac> if(pi->nread == pi->nwrite) - 802046fe: 2184a783 lw a5,536(s1) - 80204702: 21c4a703 lw a4,540(s1) - 80204706: 02f70b63 beq a4,a5,8020473c <piperead+0xac> + 80204702: 2184a783 lw a5,536(s1) + 80204706: 21c4a703 lw a4,540(s1) + 8020470a: 02f70b63 beq a4,a5,80204740 <piperead+0xac> ch = pi->data[pi->nread++ % PIPESIZE]; - 8020470a: 0017871b addiw a4,a5,1 - 8020470e: 20e4ac23 sw a4,536(s1) - 80204712: 1ff7f793 andi a5,a5,511 - 80204716: 97a6 add a5,a5,s1 - 80204718: 0187c783 lbu a5,24(a5) - 8020471c: faf40fa3 sb a5,-65(s0) + 8020470e: 0017871b addiw a4,a5,1 + 80204712: 20e4ac23 sw a4,536(s1) + 80204716: 1ff7f793 andi a5,a5,511 + 8020471a: 97a6 add a5,a5,s1 + 8020471c: 0187c783 lbu a5,24(a5) + 80204720: faf40fa3 sb a5,-65(s0) if(copyout2(addr + i, &ch, 1) == -1) - 80204720: 4605 li a2,1 - 80204722: 85da mv a1,s6 - 80204724: 854a mv a0,s2 - 80204726: ffffd097 auipc ra,0xffffd - 8020472a: c4c080e7 jalr -948(ra) # 80201372 <copyout2> - 8020472e: 01550763 beq a0,s5,8020473c <piperead+0xac> + 80204724: 4605 li a2,1 + 80204726: 85da mv a1,s6 + 80204728: 854a mv a0,s2 + 8020472a: ffffd097 auipc ra,0xffffd + 8020472e: c48080e7 jalr -952(ra) # 80201372 <copyout2> + 80204732: 01550763 beq a0,s5,80204740 <piperead+0xac> for(i = 0; i < n; i++){ //DOC: piperead-copy - 80204732: 2985 addiw s3,s3,1 - 80204734: 0905 addi s2,s2,1 - 80204736: fd3a14e3 bne s4,s3,802046fe <piperead+0x6e> - 8020473a: 89d2 mv s3,s4 + 80204736: 2985 addiw s3,s3,1 + 80204738: 0905 addi s2,s2,1 + 8020473a: fd3a14e3 bne s4,s3,80204702 <piperead+0x6e> + 8020473e: 89d2 mv s3,s4 break; } wakeup(&pi->nwrite); //DOC: piperead-wakeup - 8020473c: 21c48513 addi a0,s1,540 - 80204740: ffffe097 auipc ra,0xffffe - 80204744: fc0080e7 jalr -64(ra) # 80202700 <wakeup> + 80204740: 21c48513 addi a0,s1,540 + 80204744: ffffe097 auipc ra,0xffffe + 80204748: fb6080e7 jalr -74(ra) # 802026fa <wakeup> release(&pi->lock); - 80204748: 8526 mv a0,s1 - 8020474a: ffffc097 auipc ra,0xffffc - 8020474e: fd0080e7 jalr -48(ra) # 8020071a <release> + 8020474c: 8526 mv a0,s1 + 8020474e: ffffc097 auipc ra,0xffffc + 80204752: fcc080e7 jalr -52(ra) # 8020071a <release> return i; } - 80204752: 854e mv a0,s3 - 80204754: 60a6 ld ra,72(sp) - 80204756: 6406 ld s0,64(sp) - 80204758: 74e2 ld s1,56(sp) - 8020475a: 7942 ld s2,48(sp) - 8020475c: 79a2 ld s3,40(sp) - 8020475e: 7a02 ld s4,32(sp) - 80204760: 6ae2 ld s5,24(sp) - 80204762: 6b42 ld s6,16(sp) - 80204764: 6161 addi sp,sp,80 - 80204766: 8082 ret + 80204756: 854e mv a0,s3 + 80204758: 60a6 ld ra,72(sp) + 8020475a: 6406 ld s0,64(sp) + 8020475c: 74e2 ld s1,56(sp) + 8020475e: 7942 ld s2,48(sp) + 80204760: 79a2 ld s3,40(sp) + 80204762: 7a02 ld s4,32(sp) + 80204764: 6ae2 ld s5,24(sp) + 80204766: 6b42 ld s6,16(sp) + 80204768: 6161 addi sp,sp,80 + 8020476a: 8082 ret release(&pi->lock); - 80204768: 8526 mv a0,s1 - 8020476a: ffffc097 auipc ra,0xffffc - 8020476e: fb0080e7 jalr -80(ra) # 8020071a <release> + 8020476c: 8526 mv a0,s1 + 8020476e: ffffc097 auipc ra,0xffffc + 80204772: fac080e7 jalr -84(ra) # 8020071a <release> return -1; - 80204772: 59fd li s3,-1 - 80204774: bff9 j 80204752 <piperead+0xc2> + 80204776: 59fd li s3,-1 + 80204778: bff9 j 80204756 <piperead+0xc2> -0000000080204776 <exec>: +000000008020477a <exec>: return 0; } int exec(char *path, char **argv) { - 80204776: dd010113 addi sp,sp,-560 - 8020477a: 22113423 sd ra,552(sp) - 8020477e: 22813023 sd s0,544(sp) - 80204782: 20913c23 sd s1,536(sp) - 80204786: 21213823 sd s2,528(sp) - 8020478a: 21313423 sd s3,520(sp) - 8020478e: 21413023 sd s4,512(sp) - 80204792: ffd6 sd s5,504(sp) - 80204794: fbda sd s6,496(sp) - 80204796: f7de sd s7,488(sp) - 80204798: f3e2 sd s8,480(sp) - 8020479a: efe6 sd s9,472(sp) - 8020479c: ebea sd s10,464(sp) - 8020479e: e7ee sd s11,456(sp) - 802047a0: 1c00 addi s0,sp,560 - 802047a2: 892a mv s2,a0 - 802047a4: dca43c23 sd a0,-552(s0) - 802047a8: deb43423 sd a1,-536(s0) + 8020477a: dd010113 addi sp,sp,-560 + 8020477e: 22113423 sd ra,552(sp) + 80204782: 22813023 sd s0,544(sp) + 80204786: 20913c23 sd s1,536(sp) + 8020478a: 21213823 sd s2,528(sp) + 8020478e: 21313423 sd s3,520(sp) + 80204792: 21413023 sd s4,512(sp) + 80204796: ffd6 sd s5,504(sp) + 80204798: fbda sd s6,496(sp) + 8020479a: f7de sd s7,488(sp) + 8020479c: f3e2 sd s8,480(sp) + 8020479e: efe6 sd s9,472(sp) + 802047a0: ebea sd s10,464(sp) + 802047a2: e7ee sd s11,456(sp) + 802047a4: 1c00 addi s0,sp,560 + 802047a6: 892a mv s2,a0 + 802047a8: dca43c23 sd a0,-552(s0) + 802047ac: 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(); - 802047ac: ffffd097 auipc ra,0xffffd - 802047b0: 290080e7 jalr 656(ra) # 80201a3c <myproc> - 802047b4: 84aa mv s1,a0 + 802047b0: ffffd097 auipc ra,0xffffd + 802047b4: 28c080e7 jalr 652(ra) # 80201a3c <myproc> + 802047b8: 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) { - 802047b6: ffffc097 auipc ra,0xffffc - 802047ba: da4080e7 jalr -604(ra) # 8020055a <kalloc> - 802047be: 2a050863 beqz a0,80204a6e <exec+0x2f8> - 802047c2: 8b2a mv s6,a0 + 802047ba: ffffc097 auipc ra,0xffffc + 802047be: da0080e7 jalr -608(ra) # 8020055a <kalloc> + 802047c2: 2a050863 beqz a0,80204a72 <exec+0x2f8> + 802047c6: 8b2a mv s6,a0 return -1; } memmove(kpagetable, p->kpagetable, PGSIZE); - 802047c4: 6605 lui a2,0x1 - 802047c6: 6cac ld a1,88(s1) - 802047c8: ffffc097 auipc ra,0xffffc - 802047cc: ff6080e7 jalr -10(ra) # 802007be <memmove> + 802047c8: 6605 lui a2,0x1 + 802047ca: 6cac ld a1,88(s1) + 802047cc: ffffc097 auipc ra,0xffffc + 802047d0: ff2080e7 jalr -14(ra) # 802007be <memmove> for (int i = 0; i < PX(2, MAXUVA); i++) { kpagetable[i] = 0; - 802047d0: 000b3023 sd zero,0(s6) - 802047d4: 000b3423 sd zero,8(s6) + 802047d4: 000b3023 sd zero,0(s6) + 802047d8: 000b3423 sd zero,8(s6) } if((ep = ename(path)) == NULL) { - 802047d8: 854a mv a0,s2 - 802047da: 00003097 auipc ra,0x3 - 802047de: 08c080e7 jalr 140(ra) # 80207866 <ename> - 802047e2: 8a2a mv s4,a0 - 802047e4: 3a050e63 beqz a0,80204ba0 <exec+0x42a> + 802047dc: 854a mv a0,s2 + 802047de: 00003097 auipc ra,0x3 + 802047e2: 048080e7 jalr 72(ra) # 80207826 <ename> + 802047e6: 8a2a mv s4,a0 + 802047e8: 3a050e63 beqz a0,80204ba4 <exec+0x42a> #ifdef DEBUG printf("[exec] %s not found\n", path); #endif goto bad; } elock(ep); - 802047e8: 00003097 auipc ra,0x3 - 802047ec: 8d6080e7 jalr -1834(ra) # 802070be <elock> + 802047ec: 00003097 auipc ra,0x3 + 802047f0: 892080e7 jalr -1902(ra) # 8020707e <elock> // Check ELF header if(eread(ep, 0, (uint64) &elf, 0, sizeof(elf)) != sizeof(elf)) - 802047f0: 04000713 li a4,64 - 802047f4: 4681 li a3,0 - 802047f6: e4840613 addi a2,s0,-440 - 802047fa: 4581 li a1,0 - 802047fc: 8552 mv a0,s4 - 802047fe: 00002097 auipc ra,0x2 - 80204802: fbc080e7 jalr -68(ra) # 802067ba <eread> - 80204806: 04000793 li a5,64 - 8020480a: 00f51a63 bne a0,a5,8020481e <exec+0xa8> + 802047f4: 04000713 li a4,64 + 802047f8: 4681 li a3,0 + 802047fa: e4840613 addi a2,s0,-440 + 802047fe: 4581 li a1,0 + 80204800: 8552 mv a0,s4 + 80204802: 00002097 auipc ra,0x2 + 80204806: f78080e7 jalr -136(ra) # 8020677a <eread> + 8020480a: 04000793 li a5,64 + 8020480e: 00f51a63 bne a0,a5,80204822 <exec+0xa8> goto bad; if(elf.magic != ELF_MAGIC) - 8020480e: e4842703 lw a4,-440(s0) - 80204812: 464c47b7 lui a5,0x464c4 - 80204816: 57f78793 addi a5,a5,1407 # 464c457f <_entry-0x39d3ba81> - 8020481a: 00f70963 beq a4,a5,8020482c <exec+0xb6> + 80204812: e4842703 lw a4,-440(s0) + 80204816: 464c47b7 lui a5,0x464c4 + 8020481a: 57f78793 addi a5,a5,1407 # 464c457f <_entry-0x39d3ba81> + 8020481e: 00f70963 beq a4,a5,80204830 <exec+0xb6> printf("[exec] reach bad\n"); #endif if(pagetable) proc_freepagetable(pagetable, sz); if(kpagetable) kvmfree(kpagetable, 0); - 8020481e: 4581 li a1,0 - 80204820: 855a mv a0,s6 - 80204822: ffffd097 auipc ra,0xffffd - 80204826: e50080e7 jalr -432(ra) # 80201672 <kvmfree> + 80204822: 4581 li a1,0 + 80204824: 855a mv a0,s6 + 80204826: ffffd097 auipc ra,0xffffd + 8020482a: e4c080e7 jalr -436(ra) # 80201672 <kvmfree> if(ep){ - 8020482a: a4bd j 80204a98 <exec+0x322> + 8020482e: a4bd j 80204a9c <exec+0x322> if((pagetable = proc_pagetable(p)) == NULL) - 8020482c: 8526 mv a0,s1 - 8020482e: ffffd097 auipc ra,0xffffd - 80204832: 2f2080e7 jalr 754(ra) # 80201b20 <proc_pagetable> - 80204836: e0a43423 sd a0,-504(s0) - 8020483a: d175 beqz a0,8020481e <exec+0xa8> + 80204830: 8526 mv a0,s1 + 80204832: ffffd097 auipc ra,0xffffd + 80204836: 2ee080e7 jalr 750(ra) # 80201b20 <proc_pagetable> + 8020483a: e0a43423 sd a0,-504(s0) + 8020483e: d175 beqz a0,80204822 <exec+0xa8> for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){ - 8020483c: e6842783 lw a5,-408(s0) - 80204840: e8045703 lhu a4,-384(s0) - 80204844: cb3d beqz a4,802048ba <exec+0x144> + 80204840: e6842783 lw a5,-408(s0) + 80204844: e8045703 lhu a4,-384(s0) + 80204848: cb3d beqz a4,802048be <exec+0x144> uint64 argc, sz = 0, sp, ustack[MAXARG+1], stackbase; - 80204846: 4481 li s1,0 + 8020484a: 4481 li s1,0 for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){ - 80204848: e0043023 sd zero,-512(s0) + 8020484c: e0043023 sd zero,-512(s0) if(eread(ep, 0, (uint64)&ph, off, sizeof(ph)) != sizeof(ph)) - 8020484c: e1040713 addi a4,s0,-496 - 80204850: dee43023 sd a4,-544(s0) + 80204850: e1040713 addi a4,s0,-496 + 80204854: dee43023 sd a4,-544(s0) if(ph.vaddr % PGSIZE != 0) - 80204854: 6a85 lui s5,0x1 - 80204856: fffa8713 addi a4,s5,-1 # fff <_entry-0x801ff001> - 8020485a: dce43823 sd a4,-560(s0) + 80204858: 6a85 lui s5,0x1 + 8020485a: fffa8713 addi a4,s5,-1 # fff <_entry-0x801ff001> + 8020485e: dce43823 sd a4,-560(s0) for(i = 0; i < sz; i += PGSIZE){ - 8020485e: 6d85 lui s11,0x1 - 80204860: 7d7d lui s10,0xfffff - 80204862: a4c9 j 80204b24 <exec+0x3ae> + 80204862: 6d85 lui s11,0x1 + 80204864: 7d7d lui s10,0xfffff + 80204866: a4c9 j 80204b28 <exec+0x3ae> panic("loadseg: address should exist"); - 80204864: 00006517 auipc a0,0x6 - 80204868: 48450513 addi a0,a0,1156 # 8020ace8 <digits+0x968> - 8020486c: ffffc097 auipc ra,0xffffc - 80204870: 8d8080e7 jalr -1832(ra) # 80200144 <panic> + 80204868: 00006517 auipc a0,0x6 + 8020486c: 48050513 addi a0,a0,1152 # 8020ace8 <digits+0x968> + 80204870: ffffc097 auipc ra,0xffffc + 80204874: 8d4080e7 jalr -1836(ra) # 80200144 <panic> if(eread(ep, 0, (uint64)pa, offset+i, n) != n) - 80204874: 874a mv a4,s2 - 80204876: 009c86bb addw a3,s9,s1 - 8020487a: 4581 li a1,0 - 8020487c: 8552 mv a0,s4 - 8020487e: 00002097 auipc ra,0x2 - 80204882: f3c080e7 jalr -196(ra) # 802067ba <eread> - 80204886: 2501 sext.w a0,a0 - 80204888: 1ea91763 bne s2,a0,80204a76 <exec+0x300> + 80204878: 874a mv a4,s2 + 8020487a: 009c86bb addw a3,s9,s1 + 8020487e: 4581 li a1,0 + 80204880: 8552 mv a0,s4 + 80204882: 00002097 auipc ra,0x2 + 80204886: ef8080e7 jalr -264(ra) # 8020677a <eread> + 8020488a: 2501 sext.w a0,a0 + 8020488c: 1ea91763 bne s2,a0,80204a7a <exec+0x300> for(i = 0; i < sz; i += PGSIZE){ - 8020488c: 009d84bb addw s1,s11,s1 - 80204890: 013d09bb addw s3,s10,s3 - 80204894: 2774f863 bgeu s1,s7,80204b04 <exec+0x38e> + 80204890: 009d84bb addw s1,s11,s1 + 80204894: 013d09bb addw s3,s10,s3 + 80204898: 2774f863 bgeu s1,s7,80204b08 <exec+0x38e> pa = walkaddr(pagetable, va + i); - 80204898: 02049593 slli a1,s1,0x20 - 8020489c: 9181 srli a1,a1,0x20 - 8020489e: 95e2 add a1,a1,s8 - 802048a0: e0843503 ld a0,-504(s0) - 802048a4: ffffc097 auipc ra,0xffffc - 802048a8: 30a080e7 jalr 778(ra) # 80200bae <walkaddr> - 802048ac: 862a mv a2,a0 + 8020489c: 02049593 slli a1,s1,0x20 + 802048a0: 9181 srli a1,a1,0x20 + 802048a2: 95e2 add a1,a1,s8 + 802048a4: e0843503 ld a0,-504(s0) + 802048a8: ffffc097 auipc ra,0xffffc + 802048ac: 306080e7 jalr 774(ra) # 80200bae <walkaddr> + 802048b0: 862a mv a2,a0 if(pa == NULL) - 802048ae: d95d beqz a0,80204864 <exec+0xee> + 802048b2: d95d beqz a0,80204868 <exec+0xee> n = PGSIZE; - 802048b0: 8956 mv s2,s5 + 802048b4: 8956 mv s2,s5 if(sz - i < PGSIZE) - 802048b2: fd59f1e3 bgeu s3,s5,80204874 <exec+0xfe> + 802048b6: fd59f1e3 bgeu s3,s5,80204878 <exec+0xfe> n = sz - i; - 802048b6: 894e mv s2,s3 - 802048b8: bf75 j 80204874 <exec+0xfe> + 802048ba: 894e mv s2,s3 + 802048bc: bf75 j 80204878 <exec+0xfe> uint64 argc, sz = 0, sp, ustack[MAXARG+1], stackbase; - 802048ba: 4481 li s1,0 + 802048be: 4481 li s1,0 eunlock(ep); - 802048bc: 8552 mv a0,s4 - 802048be: 00003097 auipc ra,0x3 - 802048c2: 836080e7 jalr -1994(ra) # 802070f4 <eunlock> + 802048c0: 8552 mv a0,s4 + 802048c2: 00002097 auipc ra,0x2 + 802048c6: 7f2080e7 jalr 2034(ra) # 802070b4 <eunlock> eput(ep); - 802048c6: 8552 mv a0,s4 - 802048c8: 00003097 auipc ra,0x3 - 802048cc: 87a080e7 jalr -1926(ra) # 80207142 <eput> + 802048ca: 8552 mv a0,s4 + 802048cc: 00003097 auipc ra,0x3 + 802048d0: 836080e7 jalr -1994(ra) # 80207102 <eput> p = myproc(); - 802048d0: ffffd097 auipc ra,0xffffd - 802048d4: 16c080e7 jalr 364(ra) # 80201a3c <myproc> - 802048d8: 8aaa mv s5,a0 + 802048d4: ffffd097 auipc ra,0xffffd + 802048d8: 168080e7 jalr 360(ra) # 80201a3c <myproc> + 802048dc: 8aaa mv s5,a0 uint64 oldsz = p->sz; - 802048da: 04853d03 ld s10,72(a0) + 802048de: 04853d03 ld s10,72(a0) sz = PGROUNDUP(sz); - 802048de: 6785 lui a5,0x1 - 802048e0: 17fd addi a5,a5,-1 # fff <_entry-0x801ff001> - 802048e2: 97a6 add a5,a5,s1 - 802048e4: 777d lui a4,0xfffff - 802048e6: 8ff9 and a5,a5,a4 - 802048e8: def43823 sd a5,-528(s0) + 802048e2: 6785 lui a5,0x1 + 802048e4: 17fd addi a5,a5,-1 # fff <_entry-0x801ff001> + 802048e6: 97a6 add a5,a5,s1 + 802048e8: 777d lui a4,0xfffff + 802048ea: 8ff9 and a5,a5,a4 + 802048ec: def43823 sd a5,-528(s0) if((sz1 = uvmalloc(pagetable, kpagetable, sz, sz + 2*PGSIZE)) == 0) - 802048ec: 6689 lui a3,0x2 - 802048ee: 96be add a3,a3,a5 - 802048f0: 863e mv a2,a5 - 802048f2: 85da mv a1,s6 - 802048f4: e0843483 ld s1,-504(s0) - 802048f8: 8526 mv a0,s1 - 802048fa: ffffc097 auipc ra,0xffffc - 802048fe: 710080e7 jalr 1808(ra) # 8020100a <uvmalloc> - 80204902: 8caa mv s9,a0 + 802048f0: 6689 lui a3,0x2 + 802048f2: 96be add a3,a3,a5 + 802048f4: 863e mv a2,a5 + 802048f6: 85da mv a1,s6 + 802048f8: e0843483 ld s1,-504(s0) + 802048fc: 8526 mv a0,s1 + 802048fe: ffffc097 auipc ra,0xffffc + 80204902: 70c080e7 jalr 1804(ra) # 8020100a <uvmalloc> + 80204906: 8caa mv s9,a0 ep = 0; - 80204904: 4a01 li s4,0 + 80204908: 4a01 li s4,0 if((sz1 = uvmalloc(pagetable, kpagetable, sz, sz + 2*PGSIZE)) == 0) - 80204906: 16050863 beqz a0,80204a76 <exec+0x300> + 8020490a: 16050863 beqz a0,80204a7a <exec+0x300> uvmclear(pagetable, sz-2*PGSIZE); - 8020490a: 75f9 lui a1,0xffffe - 8020490c: 95aa add a1,a1,a0 - 8020490e: 8526 mv a0,s1 - 80204910: ffffd097 auipc ra,0xffffd - 80204914: 9a4080e7 jalr -1628(ra) # 802012b4 <uvmclear> + 8020490e: 75f9 lui a1,0xffffe + 80204910: 95aa add a1,a1,a0 + 80204912: 8526 mv a0,s1 + 80204914: ffffd097 auipc ra,0xffffd + 80204918: 9a0080e7 jalr -1632(ra) # 802012b4 <uvmclear> stackbase = sp - PGSIZE; - 80204918: 7bfd lui s7,0xfffff - 8020491a: 9be6 add s7,s7,s9 + 8020491c: 7bfd lui s7,0xfffff + 8020491e: 9be6 add s7,s7,s9 for(argc = 0; argv[argc]; argc++) { - 8020491c: de843783 ld a5,-536(s0) - 80204920: 6388 ld a0,0(a5) - 80204922: c92d beqz a0,80204994 <exec+0x21e> - 80204924: e8840993 addi s3,s0,-376 - 80204928: f8840c13 addi s8,s0,-120 + 80204920: de843783 ld a5,-536(s0) + 80204924: 6388 ld a0,0(a5) + 80204926: c92d beqz a0,80204998 <exec+0x21e> + 80204928: e8840993 addi s3,s0,-376 + 8020492c: f8840c13 addi s8,s0,-120 sp = sz; - 8020492c: 8966 mv s2,s9 + 80204930: 8966 mv s2,s9 for(argc = 0; argv[argc]; argc++) { - 8020492e: 4481 li s1,0 + 80204932: 4481 li s1,0 sp -= strlen(argv[argc]) + 1; - 80204930: ffffc097 auipc ra,0xffffc - 80204934: fb6080e7 jalr -74(ra) # 802008e6 <strlen> - 80204938: 0015079b addiw a5,a0,1 - 8020493c: 40f907b3 sub a5,s2,a5 + 80204934: ffffc097 auipc ra,0xffffc + 80204938: fb2080e7 jalr -78(ra) # 802008e6 <strlen> + 8020493c: 0015079b addiw a5,a0,1 + 80204940: 40f907b3 sub a5,s2,a5 sp -= sp % 16; // riscv sp must be 16-byte aligned - 80204940: ff07f913 andi s2,a5,-16 + 80204944: ff07f913 andi s2,a5,-16 if(sp < stackbase) - 80204944: 1b796463 bltu s2,s7,80204aec <exec+0x376> + 80204948: 1b796463 bltu s2,s7,80204af0 <exec+0x376> if(copyout(pagetable, sp, argv[argc], strlen(argv[argc]) + 1) < 0) - 80204948: de843d83 ld s11,-536(s0) - 8020494c: 000dba03 ld s4,0(s11) # 1000 <_entry-0x801ff000> - 80204950: 8552 mv a0,s4 - 80204952: ffffc097 auipc ra,0xffffc - 80204956: f94080e7 jalr -108(ra) # 802008e6 <strlen> - 8020495a: 0015069b addiw a3,a0,1 - 8020495e: 8652 mv a2,s4 - 80204960: 85ca mv a1,s2 - 80204962: e0843503 ld a0,-504(s0) - 80204966: ffffd097 auipc ra,0xffffd - 8020496a: 980080e7 jalr -1664(ra) # 802012e6 <copyout> - 8020496e: 18054363 bltz a0,80204af4 <exec+0x37e> + 8020494c: de843d83 ld s11,-536(s0) + 80204950: 000dba03 ld s4,0(s11) # 1000 <_entry-0x801ff000> + 80204954: 8552 mv a0,s4 + 80204956: ffffc097 auipc ra,0xffffc + 8020495a: f90080e7 jalr -112(ra) # 802008e6 <strlen> + 8020495e: 0015069b addiw a3,a0,1 + 80204962: 8652 mv a2,s4 + 80204964: 85ca mv a1,s2 + 80204966: e0843503 ld a0,-504(s0) + 8020496a: ffffd097 auipc ra,0xffffd + 8020496e: 97c080e7 jalr -1668(ra) # 802012e6 <copyout> + 80204972: 18054363 bltz a0,80204af8 <exec+0x37e> ustack[argc] = sp; - 80204972: 0129b023 sd s2,0(s3) + 80204976: 0129b023 sd s2,0(s3) for(argc = 0; argv[argc]; argc++) { - 80204976: 0485 addi s1,s1,1 - 80204978: 008d8793 addi a5,s11,8 - 8020497c: def43423 sd a5,-536(s0) - 80204980: 008db503 ld a0,8(s11) - 80204984: c911 beqz a0,80204998 <exec+0x222> + 8020497a: 0485 addi s1,s1,1 + 8020497c: 008d8793 addi a5,s11,8 + 80204980: def43423 sd a5,-536(s0) + 80204984: 008db503 ld a0,8(s11) + 80204988: c911 beqz a0,8020499c <exec+0x222> if(argc >= MAXARG) - 80204986: 09a1 addi s3,s3,8 - 80204988: fb3c14e3 bne s8,s3,80204930 <exec+0x1ba> + 8020498a: 09a1 addi s3,s3,8 + 8020498c: fb3c14e3 bne s8,s3,80204934 <exec+0x1ba> sz = sz1; - 8020498c: df943823 sd s9,-528(s0) + 80204990: df943823 sd s9,-528(s0) ep = 0; - 80204990: 4a01 li s4,0 - 80204992: a0d5 j 80204a76 <exec+0x300> + 80204994: 4a01 li s4,0 + 80204996: a0d5 j 80204a7a <exec+0x300> sp = sz; - 80204994: 8966 mv s2,s9 + 80204998: 8966 mv s2,s9 for(argc = 0; argv[argc]; argc++) { - 80204996: 4481 li s1,0 + 8020499a: 4481 li s1,0 ustack[argc] = 0; - 80204998: 00349793 slli a5,s1,0x3 - 8020499c: f9078793 addi a5,a5,-112 - 802049a0: 97a2 add a5,a5,s0 - 802049a2: ee07bc23 sd zero,-264(a5) + 8020499c: 00349793 slli a5,s1,0x3 + 802049a0: f9078793 addi a5,a5,-112 + 802049a4: 97a2 add a5,a5,s0 + 802049a6: ee07bc23 sd zero,-264(a5) sp -= (argc+1) * sizeof(uint64); - 802049a6: 00148693 addi a3,s1,1 - 802049aa: 068e slli a3,a3,0x3 - 802049ac: 40d90933 sub s2,s2,a3 + 802049aa: 00148693 addi a3,s1,1 + 802049ae: 068e slli a3,a3,0x3 + 802049b0: 40d90933 sub s2,s2,a3 sp -= sp % 16; - 802049b0: ff097913 andi s2,s2,-16 + 802049b4: ff097913 andi s2,s2,-16 if(sp < stackbase) - 802049b4: 01797663 bgeu s2,s7,802049c0 <exec+0x24a> + 802049b8: 01797663 bgeu s2,s7,802049c4 <exec+0x24a> sz = sz1; - 802049b8: df943823 sd s9,-528(s0) + 802049bc: df943823 sd s9,-528(s0) ep = 0; - 802049bc: 4a01 li s4,0 - 802049be: a865 j 80204a76 <exec+0x300> + 802049c0: 4a01 li s4,0 + 802049c2: a865 j 80204a7a <exec+0x300> if(copyout(pagetable, sp, (char *)ustack, (argc+1)*sizeof(uint64)) < 0) - 802049c0: e8840613 addi a2,s0,-376 - 802049c4: 85ca mv a1,s2 - 802049c6: e0843503 ld a0,-504(s0) - 802049ca: ffffd097 auipc ra,0xffffd - 802049ce: 91c080e7 jalr -1764(ra) # 802012e6 <copyout> - 802049d2: 12054563 bltz a0,80204afc <exec+0x386> + 802049c4: e8840613 addi a2,s0,-376 + 802049c8: 85ca mv a1,s2 + 802049ca: e0843503 ld a0,-504(s0) + 802049ce: ffffd097 auipc ra,0xffffd + 802049d2: 918080e7 jalr -1768(ra) # 802012e6 <copyout> + 802049d6: 12054563 bltz a0,80204b00 <exec+0x386> p->trapframe->a1 = sp; - 802049d6: 060ab783 ld a5,96(s5) - 802049da: 0727bc23 sd s2,120(a5) + 802049da: 060ab783 ld a5,96(s5) + 802049de: 0727bc23 sd s2,120(a5) for(last=s=path; *s; s++) - 802049de: dd843783 ld a5,-552(s0) - 802049e2: 0007c703 lbu a4,0(a5) - 802049e6: cf11 beqz a4,80204a02 <exec+0x28c> - 802049e8: 0785 addi a5,a5,1 + 802049e2: dd843783 ld a5,-552(s0) + 802049e6: 0007c703 lbu a4,0(a5) + 802049ea: cf11 beqz a4,80204a06 <exec+0x28c> + 802049ec: 0785 addi a5,a5,1 if(*s == '/') - 802049ea: 02f00693 li a3,47 - 802049ee: a039 j 802049fc <exec+0x286> + 802049ee: 02f00693 li a3,47 + 802049f2: a039 j 80204a00 <exec+0x286> last = s+1; - 802049f0: dcf43c23 sd a5,-552(s0) + 802049f4: dcf43c23 sd a5,-552(s0) for(last=s=path; *s; s++) - 802049f4: 0785 addi a5,a5,1 - 802049f6: fff7c703 lbu a4,-1(a5) - 802049fa: c701 beqz a4,80204a02 <exec+0x28c> + 802049f8: 0785 addi a5,a5,1 + 802049fa: fff7c703 lbu a4,-1(a5) + 802049fe: c701 beqz a4,80204a06 <exec+0x28c> if(*s == '/') - 802049fc: fed71ce3 bne a4,a3,802049f4 <exec+0x27e> - 80204a00: bfc5 j 802049f0 <exec+0x27a> + 80204a00: fed71ce3 bne a4,a3,802049f8 <exec+0x27e> + 80204a04: bfc5 j 802049f4 <exec+0x27a> safestrcpy(p->name, last, sizeof(p->name)); - 80204a02: 4641 li a2,16 - 80204a04: dd843583 ld a1,-552(s0) - 80204a08: 408a8513 addi a0,s5,1032 - 80204a0c: ffffc097 auipc ra,0xffffc - 80204a10: ea8080e7 jalr -344(ra) # 802008b4 <safestrcpy> + 80204a06: 4641 li a2,16 + 80204a08: dd843583 ld a1,-552(s0) + 80204a0c: 408a8513 addi a0,s5,1032 + 80204a10: ffffc097 auipc ra,0xffffc + 80204a14: ea4080e7 jalr -348(ra) # 802008b4 <safestrcpy> oldpagetable = p->pagetable; - 80204a14: 050ab503 ld a0,80(s5) + 80204a18: 050ab503 ld a0,80(s5) oldkpagetable = p->kpagetable; - 80204a18: 058ab983 ld s3,88(s5) + 80204a1c: 058ab983 ld s3,88(s5) p->pagetable = pagetable; - 80204a1c: e0843783 ld a5,-504(s0) - 80204a20: 04fab823 sd a5,80(s5) + 80204a20: e0843783 ld a5,-504(s0) + 80204a24: 04fab823 sd a5,80(s5) p->kpagetable = kpagetable; - 80204a24: 056abc23 sd s6,88(s5) + 80204a28: 056abc23 sd s6,88(s5) p->sz = sz; - 80204a28: 059ab423 sd s9,72(s5) + 80204a2c: 059ab423 sd s9,72(s5) p->trapframe->epc = elf.entry; // initial program counter = main - 80204a2c: 060ab783 ld a5,96(s5) - 80204a30: e6043703 ld a4,-416(s0) - 80204a34: ef98 sd a4,24(a5) + 80204a30: 060ab783 ld a5,96(s5) + 80204a34: e6043703 ld a4,-416(s0) + 80204a38: ef98 sd a4,24(a5) p->trapframe->sp = sp; // initial stack pointer - 80204a36: 060ab783 ld a5,96(s5) - 80204a3a: 0327b823 sd s2,48(a5) + 80204a3a: 060ab783 ld a5,96(s5) + 80204a3e: 0327b823 sd s2,48(a5) proc_freepagetable(oldpagetable, oldsz); - 80204a3e: 85ea mv a1,s10 - 80204a40: ffffd097 auipc ra,0xffffd - 80204a44: 17c080e7 jalr 380(ra) # 80201bbc <proc_freepagetable> + 80204a42: 85ea mv a1,s10 + 80204a44: ffffd097 auipc ra,0xffffd + 80204a48: 178080e7 jalr 376(ra) # 80201bbc <proc_freepagetable> w_satp(MAKE_SATP(p->kpagetable)); - 80204a48: 058ab783 ld a5,88(s5) - 80204a4c: 83b1 srli a5,a5,0xc - 80204a4e: 577d li a4,-1 - 80204a50: 177e slli a4,a4,0x3f - 80204a52: 8fd9 or a5,a5,a4 + 80204a4c: 058ab783 ld a5,88(s5) + 80204a50: 83b1 srli a5,a5,0xc + 80204a52: 577d li a4,-1 + 80204a54: 177e slli a4,a4,0x3f + 80204a56: 8fd9 or a5,a5,a4 asm volatile("csrw satp, %0" : : "r" (x)); - 80204a54: 18079073 csrw satp,a5 + 80204a58: 18079073 csrw satp,a5 asm volatile("sfence.vma"); - 80204a58: 12000073 sfence.vma + 80204a5c: 12000073 sfence.vma kvmfree(oldkpagetable, 0); - 80204a5c: 4581 li a1,0 - 80204a5e: 854e mv a0,s3 - 80204a60: ffffd097 auipc ra,0xffffd - 80204a64: c12080e7 jalr -1006(ra) # 80201672 <kvmfree> + 80204a60: 4581 li a1,0 + 80204a62: 854e mv a0,s3 + 80204a64: ffffd097 auipc ra,0xffffd + 80204a68: c0e080e7 jalr -1010(ra) # 80201672 <kvmfree> return argc; // this ends up in a0, the first argument to main(argc, argv) - 80204a68: 0004851b sext.w a0,s1 - 80204a6c: a089 j 80204aae <exec+0x338> + 80204a6c: 0004851b sext.w a0,s1 + 80204a70: a089 j 80204ab2 <exec+0x338> return -1; - 80204a6e: 557d li a0,-1 - 80204a70: a83d j 80204aae <exec+0x338> - 80204a72: de943823 sd s1,-528(s0) + 80204a72: 557d li a0,-1 + 80204a74: a83d j 80204ab2 <exec+0x338> + 80204a76: de943823 sd s1,-528(s0) proc_freepagetable(pagetable, sz); - 80204a76: df043583 ld a1,-528(s0) - 80204a7a: e0843503 ld a0,-504(s0) - 80204a7e: ffffd097 auipc ra,0xffffd - 80204a82: 13e080e7 jalr 318(ra) # 80201bbc <proc_freepagetable> + 80204a7a: df043583 ld a1,-528(s0) + 80204a7e: e0843503 ld a0,-504(s0) + 80204a82: ffffd097 auipc ra,0xffffd + 80204a86: 13a080e7 jalr 314(ra) # 80201bbc <proc_freepagetable> kvmfree(kpagetable, 0); - 80204a86: 4581 li a1,0 - 80204a88: 855a mv a0,s6 - 80204a8a: ffffd097 auipc ra,0xffffd - 80204a8e: be8080e7 jalr -1048(ra) # 80201672 <kvmfree> + 80204a8a: 4581 li a1,0 + 80204a8c: 855a mv a0,s6 + 80204a8e: ffffd097 auipc ra,0xffffd + 80204a92: be4080e7 jalr -1052(ra) # 80201672 <kvmfree> eunlock(ep); eput(ep); } return -1; - 80204a92: 557d li a0,-1 + 80204a96: 557d li a0,-1 if(ep){ - 80204a94: 000a0d63 beqz s4,80204aae <exec+0x338> + 80204a98: 000a0d63 beqz s4,80204ab2 <exec+0x338> eunlock(ep); - 80204a98: 8552 mv a0,s4 - 80204a9a: 00002097 auipc ra,0x2 - 80204a9e: 65a080e7 jalr 1626(ra) # 802070f4 <eunlock> + 80204a9c: 8552 mv a0,s4 + 80204a9e: 00002097 auipc ra,0x2 + 80204aa2: 616080e7 jalr 1558(ra) # 802070b4 <eunlock> eput(ep); - 80204aa2: 8552 mv a0,s4 - 80204aa4: 00002097 auipc ra,0x2 - 80204aa8: 69e080e7 jalr 1694(ra) # 80207142 <eput> + 80204aa6: 8552 mv a0,s4 + 80204aa8: 00002097 auipc ra,0x2 + 80204aac: 65a080e7 jalr 1626(ra) # 80207102 <eput> return -1; - 80204aac: 557d li a0,-1 + 80204ab0: 557d li a0,-1 } - 80204aae: 22813083 ld ra,552(sp) - 80204ab2: 22013403 ld s0,544(sp) - 80204ab6: 21813483 ld s1,536(sp) - 80204aba: 21013903 ld s2,528(sp) - 80204abe: 20813983 ld s3,520(sp) - 80204ac2: 20013a03 ld s4,512(sp) - 80204ac6: 7afe ld s5,504(sp) - 80204ac8: 7b5e ld s6,496(sp) - 80204aca: 7bbe ld s7,488(sp) - 80204acc: 7c1e ld s8,480(sp) - 80204ace: 6cfe ld s9,472(sp) - 80204ad0: 6d5e ld s10,464(sp) - 80204ad2: 6dbe ld s11,456(sp) - 80204ad4: 23010113 addi sp,sp,560 - 80204ad8: 8082 ret - 80204ada: de943823 sd s1,-528(s0) - 80204ade: bf61 j 80204a76 <exec+0x300> - 80204ae0: de943823 sd s1,-528(s0) - 80204ae4: bf49 j 80204a76 <exec+0x300> - 80204ae6: de943823 sd s1,-528(s0) - 80204aea: b771 j 80204a76 <exec+0x300> + 80204ab2: 22813083 ld ra,552(sp) + 80204ab6: 22013403 ld s0,544(sp) + 80204aba: 21813483 ld s1,536(sp) + 80204abe: 21013903 ld s2,528(sp) + 80204ac2: 20813983 ld s3,520(sp) + 80204ac6: 20013a03 ld s4,512(sp) + 80204aca: 7afe ld s5,504(sp) + 80204acc: 7b5e ld s6,496(sp) + 80204ace: 7bbe ld s7,488(sp) + 80204ad0: 7c1e ld s8,480(sp) + 80204ad2: 6cfe ld s9,472(sp) + 80204ad4: 6d5e ld s10,464(sp) + 80204ad6: 6dbe ld s11,456(sp) + 80204ad8: 23010113 addi sp,sp,560 + 80204adc: 8082 ret + 80204ade: de943823 sd s1,-528(s0) + 80204ae2: bf61 j 80204a7a <exec+0x300> + 80204ae4: de943823 sd s1,-528(s0) + 80204ae8: bf49 j 80204a7a <exec+0x300> + 80204aea: de943823 sd s1,-528(s0) + 80204aee: b771 j 80204a7a <exec+0x300> sz = sz1; - 80204aec: df943823 sd s9,-528(s0) + 80204af0: df943823 sd s9,-528(s0) ep = 0; - 80204af0: 4a01 li s4,0 - 80204af2: b751 j 80204a76 <exec+0x300> + 80204af4: 4a01 li s4,0 + 80204af6: b751 j 80204a7a <exec+0x300> sz = sz1; - 80204af4: df943823 sd s9,-528(s0) + 80204af8: df943823 sd s9,-528(s0) ep = 0; - 80204af8: 4a01 li s4,0 - 80204afa: bfb5 j 80204a76 <exec+0x300> + 80204afc: 4a01 li s4,0 + 80204afe: bfb5 j 80204a7a <exec+0x300> sz = sz1; - 80204afc: df943823 sd s9,-528(s0) + 80204b00: df943823 sd s9,-528(s0) ep = 0; - 80204b00: 4a01 li s4,0 - 80204b02: bf95 j 80204a76 <exec+0x300> + 80204b04: 4a01 li s4,0 + 80204b06: bf95 j 80204a7a <exec+0x300> if((sz1 = uvmalloc(pagetable, kpagetable, sz, ph.vaddr + ph.memsz)) == 0) - 80204b04: df043483 ld s1,-528(s0) + 80204b08: df043483 ld s1,-528(s0) for(i=0, off=elf.phoff; i<elf.phnum; i++, off+=sizeof(ph)){ - 80204b08: e0043783 ld a5,-512(s0) - 80204b0c: 0017869b addiw a3,a5,1 - 80204b10: e0d43023 sd a3,-512(s0) - 80204b14: df843783 ld a5,-520(s0) - 80204b18: 0387879b addiw a5,a5,56 - 80204b1c: e8045703 lhu a4,-384(s0) - 80204b20: d8e6dee3 bge a3,a4,802048bc <exec+0x146> + 80204b0c: e0043783 ld a5,-512(s0) + 80204b10: 0017869b addiw a3,a5,1 + 80204b14: e0d43023 sd a3,-512(s0) + 80204b18: df843783 ld a5,-520(s0) + 80204b1c: 0387879b addiw a5,a5,56 + 80204b20: e8045703 lhu a4,-384(s0) + 80204b24: d8e6dee3 bge a3,a4,802048c0 <exec+0x146> if(eread(ep, 0, (uint64)&ph, off, sizeof(ph)) != sizeof(ph)) - 80204b24: 2781 sext.w a5,a5 - 80204b26: def43c23 sd a5,-520(s0) - 80204b2a: 03800713 li a4,56 - 80204b2e: 86be mv a3,a5 - 80204b30: de043603 ld a2,-544(s0) - 80204b34: 4581 li a1,0 - 80204b36: 8552 mv a0,s4 - 80204b38: 00002097 auipc ra,0x2 - 80204b3c: c82080e7 jalr -894(ra) # 802067ba <eread> - 80204b40: 03800793 li a5,56 - 80204b44: f2f517e3 bne a0,a5,80204a72 <exec+0x2fc> + 80204b28: 2781 sext.w a5,a5 + 80204b2a: def43c23 sd a5,-520(s0) + 80204b2e: 03800713 li a4,56 + 80204b32: 86be mv a3,a5 + 80204b34: de043603 ld a2,-544(s0) + 80204b38: 4581 li a1,0 + 80204b3a: 8552 mv a0,s4 + 80204b3c: 00002097 auipc ra,0x2 + 80204b40: c3e080e7 jalr -962(ra) # 8020677a <eread> + 80204b44: 03800793 li a5,56 + 80204b48: f2f517e3 bne a0,a5,80204a76 <exec+0x2fc> if(ph.type != ELF_PROG_LOAD) - 80204b48: e1042783 lw a5,-496(s0) - 80204b4c: 4705 li a4,1 - 80204b4e: fae79de3 bne a5,a4,80204b08 <exec+0x392> + 80204b4c: e1042783 lw a5,-496(s0) + 80204b50: 4705 li a4,1 + 80204b52: fae79de3 bne a5,a4,80204b0c <exec+0x392> if(ph.memsz < ph.filesz) - 80204b52: e3843683 ld a3,-456(s0) - 80204b56: e3043783 ld a5,-464(s0) - 80204b5a: f8f6e0e3 bltu a3,a5,80204ada <exec+0x364> + 80204b56: e3843683 ld a3,-456(s0) + 80204b5a: e3043783 ld a5,-464(s0) + 80204b5e: f8f6e0e3 bltu a3,a5,80204ade <exec+0x364> if(ph.vaddr + ph.memsz < ph.vaddr) - 80204b5e: e2043783 ld a5,-480(s0) - 80204b62: 96be add a3,a3,a5 - 80204b64: f6f6eee3 bltu a3,a5,80204ae0 <exec+0x36a> + 80204b62: e2043783 ld a5,-480(s0) + 80204b66: 96be add a3,a3,a5 + 80204b68: f6f6eee3 bltu a3,a5,80204ae4 <exec+0x36a> if((sz1 = uvmalloc(pagetable, kpagetable, sz, ph.vaddr + ph.memsz)) == 0) - 80204b68: 8626 mv a2,s1 - 80204b6a: 85da mv a1,s6 - 80204b6c: e0843503 ld a0,-504(s0) - 80204b70: ffffc097 auipc ra,0xffffc - 80204b74: 49a080e7 jalr 1178(ra) # 8020100a <uvmalloc> - 80204b78: dea43823 sd a0,-528(s0) - 80204b7c: d52d beqz a0,80204ae6 <exec+0x370> + 80204b6c: 8626 mv a2,s1 + 80204b6e: 85da mv a1,s6 + 80204b70: e0843503 ld a0,-504(s0) + 80204b74: ffffc097 auipc ra,0xffffc + 80204b78: 496080e7 jalr 1174(ra) # 8020100a <uvmalloc> + 80204b7c: dea43823 sd a0,-528(s0) + 80204b80: d52d beqz a0,80204aea <exec+0x370> if(ph.vaddr % PGSIZE != 0) - 80204b7e: e2043c03 ld s8,-480(s0) - 80204b82: dd043783 ld a5,-560(s0) - 80204b86: 00fc77b3 and a5,s8,a5 - 80204b8a: ee0796e3 bnez a5,80204a76 <exec+0x300> + 80204b82: e2043c03 ld s8,-480(s0) + 80204b86: dd043783 ld a5,-560(s0) + 80204b8a: 00fc77b3 and a5,s8,a5 + 80204b8e: ee0796e3 bnez a5,80204a7a <exec+0x300> if(loadseg(pagetable, ph.vaddr, ep, ph.off, ph.filesz) < 0) - 80204b8e: e1842c83 lw s9,-488(s0) - 80204b92: e3042b83 lw s7,-464(s0) + 80204b92: e1842c83 lw s9,-488(s0) + 80204b96: e3042b83 lw s7,-464(s0) for(i = 0; i < sz; i += PGSIZE){ - 80204b96: f60b87e3 beqz s7,80204b04 <exec+0x38e> - 80204b9a: 89de mv s3,s7 - 80204b9c: 4481 li s1,0 - 80204b9e: b9ed j 80204898 <exec+0x122> + 80204b9a: f60b87e3 beqz s7,80204b08 <exec+0x38e> + 80204b9e: 89de mv s3,s7 + 80204ba0: 4481 li s1,0 + 80204ba2: b9ed j 8020489c <exec+0x122> kvmfree(kpagetable, 0); - 80204ba0: 4581 li a1,0 - 80204ba2: 855a mv a0,s6 - 80204ba4: ffffd097 auipc ra,0xffffd - 80204ba8: ace080e7 jalr -1330(ra) # 80201672 <kvmfree> + 80204ba4: 4581 li a1,0 + 80204ba6: 855a mv a0,s6 + 80204ba8: ffffd097 auipc ra,0xffffd + 80204bac: aca080e7 jalr -1334(ra) # 80201672 <kvmfree> return -1; - 80204bac: 557d li a0,-1 - 80204bae: b701 j 80204aae <exec+0x338> + 80204bb0: 557d li a0,-1 + 80204bb2: b701 j 80204ab2 <exec+0x338> -0000000080204bb0 <argfd>: +0000000080204bb4 <argfd>: #define PROT_WRITE 2 // 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) { - 80204bb0: 7179 addi sp,sp,-48 - 80204bb2: f406 sd ra,40(sp) - 80204bb4: f022 sd s0,32(sp) - 80204bb6: ec26 sd s1,24(sp) - 80204bb8: e84a sd s2,16(sp) - 80204bba: 1800 addi s0,sp,48 - 80204bbc: 892e mv s2,a1 - 80204bbe: 84b2 mv s1,a2 + 80204bb4: 7179 addi sp,sp,-48 + 80204bb6: f406 sd ra,40(sp) + 80204bb8: f022 sd s0,32(sp) + 80204bba: ec26 sd s1,24(sp) + 80204bbc: e84a sd s2,16(sp) + 80204bbe: 1800 addi s0,sp,48 + 80204bc0: 892e mv s2,a1 + 80204bc2: 84b2 mv s1,a2 int fd; struct file *f; if(argint(n, &fd) < 0) - 80204bc0: fdc40593 addi a1,s0,-36 - 80204bc4: ffffe097 auipc ra,0xffffe - 80204bc8: 740080e7 jalr 1856(ra) # 80203304 <argint> - 80204bcc: 04054163 bltz a0,80204c0e <argfd+0x5e> + 80204bc4: fdc40593 addi a1,s0,-36 + 80204bc8: ffffe097 auipc ra,0xffffe + 80204bcc: 740080e7 jalr 1856(ra) # 80203308 <argint> + 80204bd0: 04054163 bltz a0,80204c12 <argfd+0x5e> return -1; if(fd < 0 || fd >= NOFILE || (f=myproc()->ofile[fd]) == NULL) - 80204bd0: fdc42703 lw a4,-36(s0) - 80204bd4: 06400793 li a5,100 - 80204bd8: 02e7ed63 bltu a5,a4,80204c12 <argfd+0x62> - 80204bdc: ffffd097 auipc ra,0xffffd - 80204be0: e60080e7 jalr -416(ra) # 80201a3c <myproc> - 80204be4: fdc42703 lw a4,-36(s0) - 80204be8: 01a70793 addi a5,a4,26 # fffffffffffff01a <ebss_clear+0xffffffff7fdc401a> - 80204bec: 078e slli a5,a5,0x3 - 80204bee: 953e add a0,a0,a5 - 80204bf0: 651c ld a5,8(a0) - 80204bf2: c395 beqz a5,80204c16 <argfd+0x66> + 80204bd4: fdc42703 lw a4,-36(s0) + 80204bd8: 06400793 li a5,100 + 80204bdc: 02e7ed63 bltu a5,a4,80204c16 <argfd+0x62> + 80204be0: ffffd097 auipc ra,0xffffd + 80204be4: e5c080e7 jalr -420(ra) # 80201a3c <myproc> + 80204be8: fdc42703 lw a4,-36(s0) + 80204bec: 01a70793 addi a5,a4,26 # fffffffffffff01a <ebss_clear+0xffffffff7fdc401a> + 80204bf0: 078e slli a5,a5,0x3 + 80204bf2: 953e add a0,a0,a5 + 80204bf4: 651c ld a5,8(a0) + 80204bf6: c395 beqz a5,80204c1a <argfd+0x66> return -1; if(pfd) - 80204bf4: 00090463 beqz s2,80204bfc <argfd+0x4c> + 80204bf8: 00090463 beqz s2,80204c00 <argfd+0x4c> *pfd = fd; - 80204bf8: 00e92023 sw a4,0(s2) + 80204bfc: 00e92023 sw a4,0(s2) if(pf) *pf = f; return 0; - 80204bfc: 4501 li a0,0 + 80204c00: 4501 li a0,0 if(pf) - 80204bfe: c091 beqz s1,80204c02 <argfd+0x52> + 80204c02: c091 beqz s1,80204c06 <argfd+0x52> *pf = f; - 80204c00: e09c sd a5,0(s1) + 80204c04: e09c sd a5,0(s1) } - 80204c02: 70a2 ld ra,40(sp) - 80204c04: 7402 ld s0,32(sp) - 80204c06: 64e2 ld s1,24(sp) - 80204c08: 6942 ld s2,16(sp) - 80204c0a: 6145 addi sp,sp,48 - 80204c0c: 8082 ret - return -1; - 80204c0e: 557d li a0,-1 - 80204c10: bfcd j 80204c02 <argfd+0x52> + 80204c06: 70a2 ld ra,40(sp) + 80204c08: 7402 ld s0,32(sp) + 80204c0a: 64e2 ld s1,24(sp) + 80204c0c: 6942 ld s2,16(sp) + 80204c0e: 6145 addi sp,sp,48 + 80204c10: 8082 ret return -1; 80204c12: 557d li a0,-1 - 80204c14: b7fd j 80204c02 <argfd+0x52> + 80204c14: bfcd j 80204c06 <argfd+0x52> + return -1; 80204c16: 557d li a0,-1 - 80204c18: b7ed j 80204c02 <argfd+0x52> + 80204c18: b7fd j 80204c06 <argfd+0x52> + 80204c1a: 557d li a0,-1 + 80204c1c: b7ed j 80204c06 <argfd+0x52> -0000000080204c1a <fdalloc>: +0000000080204c1e <fdalloc>: // Allocate a file descriptor for the given file. // Takes over file reference from caller on success. static int fdalloc(struct file *f) { - 80204c1a: 1101 addi sp,sp,-32 - 80204c1c: ec06 sd ra,24(sp) - 80204c1e: e822 sd s0,16(sp) - 80204c20: e426 sd s1,8(sp) - 80204c22: 1000 addi s0,sp,32 - 80204c24: 84aa mv s1,a0 + 80204c1e: 1101 addi sp,sp,-32 + 80204c20: ec06 sd ra,24(sp) + 80204c22: e822 sd s0,16(sp) + 80204c24: e426 sd s1,8(sp) + 80204c26: 1000 addi s0,sp,32 + 80204c28: 84aa mv s1,a0 int fd; struct proc *p = myproc(); - 80204c26: ffffd097 auipc ra,0xffffd - 80204c2a: e16080e7 jalr -490(ra) # 80201a3c <myproc> - 80204c2e: 862a mv a2,a0 + 80204c2a: ffffd097 auipc ra,0xffffd + 80204c2e: e12080e7 jalr -494(ra) # 80201a3c <myproc> + 80204c32: 862a mv a2,a0 for(fd = 0; fd < NOFILE; fd++){ - 80204c30: 0d850793 addi a5,a0,216 - 80204c34: 4501 li a0,0 - 80204c36: 06500693 li a3,101 + 80204c34: 0d850793 addi a5,a0,216 + 80204c38: 4501 li a0,0 + 80204c3a: 06500693 li a3,101 if(p->ofile[fd] == 0){ - 80204c3a: 6398 ld a4,0(a5) - 80204c3c: c719 beqz a4,80204c4a <fdalloc+0x30> + 80204c3e: 6398 ld a4,0(a5) + 80204c40: c719 beqz a4,80204c4e <fdalloc+0x30> for(fd = 0; fd < NOFILE; fd++){ - 80204c3e: 2505 addiw a0,a0,1 - 80204c40: 07a1 addi a5,a5,8 - 80204c42: fed51ce3 bne a0,a3,80204c3a <fdalloc+0x20> + 80204c42: 2505 addiw a0,a0,1 + 80204c44: 07a1 addi a5,a5,8 + 80204c46: fed51ce3 bne a0,a3,80204c3e <fdalloc+0x20> p->ofile[fd] = f; return fd; } } return -1; - 80204c46: 557d li a0,-1 - 80204c48: a031 j 80204c54 <fdalloc+0x3a> + 80204c4a: 557d li a0,-1 + 80204c4c: a031 j 80204c58 <fdalloc+0x3a> p->ofile[fd] = f; - 80204c4a: 01a50793 addi a5,a0,26 - 80204c4e: 078e slli a5,a5,0x3 - 80204c50: 963e add a2,a2,a5 - 80204c52: e604 sd s1,8(a2) + 80204c4e: 01a50793 addi a5,a0,26 + 80204c52: 078e slli a5,a5,0x3 + 80204c54: 963e add a2,a2,a5 + 80204c56: e604 sd s1,8(a2) } - 80204c54: 60e2 ld ra,24(sp) - 80204c56: 6442 ld s0,16(sp) - 80204c58: 64a2 ld s1,8(sp) - 80204c5a: 6105 addi sp,sp,32 - 80204c5c: 8082 ret + 80204c58: 60e2 ld ra,24(sp) + 80204c5a: 6442 ld s0,16(sp) + 80204c5c: 64a2 ld s1,8(sp) + 80204c5e: 6105 addi sp,sp,32 + 80204c60: 8082 ret -0000000080204c5e <create>: +0000000080204c62 <create>: return filekstat(f, kst); } static struct dirent* create(char *path, short type, int mode) { - 80204c5e: 7169 addi sp,sp,-304 - 80204c60: f606 sd ra,296(sp) - 80204c62: f222 sd s0,288(sp) - 80204c64: ee26 sd s1,280(sp) - 80204c66: ea4a sd s2,272(sp) - 80204c68: e64e sd s3,264(sp) - 80204c6a: 1a00 addi s0,sp,304 - 80204c6c: 892e mv s2,a1 + 80204c62: 7169 addi sp,sp,-304 + 80204c64: f606 sd ra,296(sp) + 80204c66: f222 sd s0,288(sp) + 80204c68: ee26 sd s1,280(sp) + 80204c6a: ea4a sd s2,272(sp) + 80204c6c: e64e sd s3,264(sp) + 80204c6e: 1a00 addi s0,sp,304 + 80204c70: 892e mv s2,a1 struct dirent *ep, *dp; char name[FAT32_MAX_FILENAME + 1]; if((dp = enameparent(path, name)) == NULL) - 80204c6e: ed040593 addi a1,s0,-304 - 80204c72: 00003097 auipc ra,0x3 - 80204c76: c12080e7 jalr -1006(ra) # 80207884 <enameparent> - 80204c7a: 84aa mv s1,a0 - 80204c7c: c945 beqz a0,80204d2c <create+0xce> + 80204c72: ed040593 addi a1,s0,-304 + 80204c76: 00003097 auipc ra,0x3 + 80204c7a: bce080e7 jalr -1074(ra) # 80207844 <enameparent> + 80204c7e: 84aa mv s1,a0 + 80204c80: c945 beqz a0,80204d30 <create+0xce> mode = ATTR_READ_ONLY; } else { mode = 0; } elock(dp); - 80204c7e: 00002097 auipc ra,0x2 - 80204c82: 440080e7 jalr 1088(ra) # 802070be <elock> + 80204c82: 00002097 auipc ra,0x2 + 80204c86: 3fc080e7 jalr 1020(ra) # 8020707e <elock> if (type == T_DIR) { - 80204c86: fff90613 addi a2,s2,-1 - 80204c8a: 00163613 seqz a2,a2 + 80204c8a: fff90613 addi a2,s2,-1 + 80204c8e: 00163613 seqz a2,a2 if ((ep = ealloc(dp, name, mode)) == NULL) { - 80204c8e: 0046161b slliw a2,a2,0x4 - 80204c92: ed040593 addi a1,s0,-304 - 80204c96: 8526 mv a0,s1 - 80204c98: 00003097 auipc ra,0x3 - 80204c9c: 912080e7 jalr -1774(ra) # 802075aa <ealloc> - 80204ca0: 89aa mv s3,a0 - 80204ca2: c529 beqz a0,80204cec <create+0x8e> + 80204c92: 0046161b slliw a2,a2,0x4 + 80204c96: ed040593 addi a1,s0,-304 + 80204c9a: 8526 mv a0,s1 + 80204c9c: 00003097 auipc ra,0x3 + 80204ca0: 8ce080e7 jalr -1842(ra) # 8020756a <ealloc> + 80204ca4: 89aa mv s3,a0 + 80204ca6: c529 beqz a0,80204cf0 <create+0x8e> eunlock(dp); eput(dp); return NULL; } if ((type == T_DIR && !(ep->attribute & ATTR_DIRECTORY)) || - 80204ca4: 0009079b sext.w a5,s2 - 80204ca8: 4705 li a4,1 - 80204caa: 04e78c63 beq a5,a4,80204d02 <create+0xa4> - 80204cae: 2901 sext.w s2,s2 - 80204cb0: 4789 li a5,2 - 80204cb2: 00f91663 bne s2,a5,80204cbe <create+0x60> + 80204ca8: 0009079b sext.w a5,s2 + 80204cac: 4705 li a4,1 + 80204cae: 04e78c63 beq a5,a4,80204d06 <create+0xa4> + 80204cb2: 2901 sext.w s2,s2 + 80204cb4: 4789 li a5,2 + 80204cb6: 00f91663 bne s2,a5,80204cc2 <create+0x60> (type == T_FILE && (ep->attribute & ATTR_DIRECTORY))) { - 80204cb6: 10054783 lbu a5,256(a0) - 80204cba: 8bc1 andi a5,a5,16 - 80204cbc: e7b9 bnez a5,80204d0a <create+0xac> + 80204cba: 10054783 lbu a5,256(a0) + 80204cbe: 8bc1 andi a5,a5,16 + 80204cc0: e7b9 bnez a5,80204d0e <create+0xac> eput(ep); eput(dp); return NULL; } eunlock(dp); - 80204cbe: 8526 mv a0,s1 - 80204cc0: 00002097 auipc ra,0x2 - 80204cc4: 434080e7 jalr 1076(ra) # 802070f4 <eunlock> + 80204cc2: 8526 mv a0,s1 + 80204cc4: 00002097 auipc ra,0x2 + 80204cc8: 3f0080e7 jalr 1008(ra) # 802070b4 <eunlock> eput(dp); - 80204cc8: 8526 mv a0,s1 - 80204cca: 00002097 auipc ra,0x2 - 80204cce: 478080e7 jalr 1144(ra) # 80207142 <eput> + 80204ccc: 8526 mv a0,s1 + 80204cce: 00002097 auipc ra,0x2 + 80204cd2: 434080e7 jalr 1076(ra) # 80207102 <eput> elock(ep); - 80204cd2: 854e mv a0,s3 - 80204cd4: 00002097 auipc ra,0x2 - 80204cd8: 3ea080e7 jalr 1002(ra) # 802070be <elock> + 80204cd6: 854e mv a0,s3 + 80204cd8: 00002097 auipc ra,0x2 + 80204cdc: 3a6080e7 jalr 934(ra) # 8020707e <elock> return ep; } - 80204cdc: 854e mv a0,s3 - 80204cde: 70b2 ld ra,296(sp) - 80204ce0: 7412 ld s0,288(sp) - 80204ce2: 64f2 ld s1,280(sp) - 80204ce4: 6952 ld s2,272(sp) - 80204ce6: 69b2 ld s3,264(sp) - 80204ce8: 6155 addi sp,sp,304 - 80204cea: 8082 ret + 80204ce0: 854e mv a0,s3 + 80204ce2: 70b2 ld ra,296(sp) + 80204ce4: 7412 ld s0,288(sp) + 80204ce6: 64f2 ld s1,280(sp) + 80204ce8: 6952 ld s2,272(sp) + 80204cea: 69b2 ld s3,264(sp) + 80204cec: 6155 addi sp,sp,304 + 80204cee: 8082 ret eunlock(dp); - 80204cec: 8526 mv a0,s1 - 80204cee: 00002097 auipc ra,0x2 - 80204cf2: 406080e7 jalr 1030(ra) # 802070f4 <eunlock> + 80204cf0: 8526 mv a0,s1 + 80204cf2: 00002097 auipc ra,0x2 + 80204cf6: 3c2080e7 jalr 962(ra) # 802070b4 <eunlock> eput(dp); - 80204cf6: 8526 mv a0,s1 - 80204cf8: 00002097 auipc ra,0x2 - 80204cfc: 44a080e7 jalr 1098(ra) # 80207142 <eput> + 80204cfa: 8526 mv a0,s1 + 80204cfc: 00002097 auipc ra,0x2 + 80204d00: 406080e7 jalr 1030(ra) # 80207102 <eput> return NULL; - 80204d00: bff1 j 80204cdc <create+0x7e> + 80204d04: bff1 j 80204ce0 <create+0x7e> if ((type == T_DIR && !(ep->attribute & ATTR_DIRECTORY)) || - 80204d02: 10054783 lbu a5,256(a0) - 80204d06: 8bc1 andi a5,a5,16 - 80204d08: fbdd bnez a5,80204cbe <create+0x60> + 80204d06: 10054783 lbu a5,256(a0) + 80204d0a: 8bc1 andi a5,a5,16 + 80204d0c: fbdd bnez a5,80204cc2 <create+0x60> eunlock(dp); - 80204d0a: 8526 mv a0,s1 - 80204d0c: 00002097 auipc ra,0x2 - 80204d10: 3e8080e7 jalr 1000(ra) # 802070f4 <eunlock> + 80204d0e: 8526 mv a0,s1 + 80204d10: 00002097 auipc ra,0x2 + 80204d14: 3a4080e7 jalr 932(ra) # 802070b4 <eunlock> eput(ep); - 80204d14: 854e mv a0,s3 - 80204d16: 00002097 auipc ra,0x2 - 80204d1a: 42c080e7 jalr 1068(ra) # 80207142 <eput> + 80204d18: 854e mv a0,s3 + 80204d1a: 00002097 auipc ra,0x2 + 80204d1e: 3e8080e7 jalr 1000(ra) # 80207102 <eput> eput(dp); - 80204d1e: 8526 mv a0,s1 - 80204d20: 00002097 auipc ra,0x2 - 80204d24: 422080e7 jalr 1058(ra) # 80207142 <eput> + 80204d22: 8526 mv a0,s1 + 80204d24: 00002097 auipc ra,0x2 + 80204d28: 3de080e7 jalr 990(ra) # 80207102 <eput> return NULL; - 80204d28: 4981 li s3,0 - 80204d2a: bf4d j 80204cdc <create+0x7e> + 80204d2c: 4981 li s3,0 + 80204d2e: bf4d j 80204ce0 <create+0x7e> return NULL; - 80204d2c: 89aa mv s3,a0 - 80204d2e: b77d j 80204cdc <create+0x7e> + 80204d30: 89aa mv s3,a0 + 80204d32: b77d j 80204ce0 <create+0x7e> -0000000080204d30 <sys_dup>: +0000000080204d34 <sys_dup>: { - 80204d30: 7179 addi sp,sp,-48 - 80204d32: f406 sd ra,40(sp) - 80204d34: f022 sd s0,32(sp) - 80204d36: ec26 sd s1,24(sp) - 80204d38: e84a sd s2,16(sp) - 80204d3a: 1800 addi s0,sp,48 + 80204d34: 7179 addi sp,sp,-48 + 80204d36: f406 sd ra,40(sp) + 80204d38: f022 sd s0,32(sp) + 80204d3a: ec26 sd s1,24(sp) + 80204d3c: e84a sd s2,16(sp) + 80204d3e: 1800 addi s0,sp,48 if(argfd(0, 0, &f) < 0) - 80204d3c: fd840613 addi a2,s0,-40 - 80204d40: 4581 li a1,0 - 80204d42: 4501 li a0,0 - 80204d44: 00000097 auipc ra,0x0 - 80204d48: e6c080e7 jalr -404(ra) # 80204bb0 <argfd> + 80204d40: fd840613 addi a2,s0,-40 + 80204d44: 4581 li a1,0 + 80204d46: 4501 li a0,0 + 80204d48: 00000097 auipc ra,0x0 + 80204d4c: e6c080e7 jalr -404(ra) # 80204bb4 <argfd> return -1; - 80204d4c: 57fd li a5,-1 + 80204d50: 57fd li a5,-1 if(argfd(0, 0, &f) < 0) - 80204d4e: 02054363 bltz a0,80204d74 <sys_dup+0x44> + 80204d52: 02054363 bltz a0,80204d78 <sys_dup+0x44> if((fd=fdalloc(f)) < 0) - 80204d52: fd843903 ld s2,-40(s0) - 80204d56: 854a mv a0,s2 - 80204d58: 00000097 auipc ra,0x0 - 80204d5c: ec2080e7 jalr -318(ra) # 80204c1a <fdalloc> - 80204d60: 84aa mv s1,a0 + 80204d56: fd843903 ld s2,-40(s0) + 80204d5a: 854a mv a0,s2 + 80204d5c: 00000097 auipc ra,0x0 + 80204d60: ec2080e7 jalr -318(ra) # 80204c1e <fdalloc> + 80204d64: 84aa mv s1,a0 return -1; - 80204d62: 57fd li a5,-1 + 80204d66: 57fd li a5,-1 if((fd=fdalloc(f)) < 0) - 80204d64: 00054863 bltz a0,80204d74 <sys_dup+0x44> + 80204d68: 00054863 bltz a0,80204d78 <sys_dup+0x44> filedup(f); - 80204d68: 854a mv a0,s2 - 80204d6a: fffff097 auipc ra,0xfffff - 80204d6e: 28a080e7 jalr 650(ra) # 80203ff4 <filedup> + 80204d6c: 854a mv a0,s2 + 80204d6e: fffff097 auipc ra,0xfffff + 80204d72: 28a080e7 jalr 650(ra) # 80203ff8 <filedup> return fd; - 80204d72: 87a6 mv a5,s1 + 80204d76: 87a6 mv a5,s1 } - 80204d74: 853e mv a0,a5 - 80204d76: 70a2 ld ra,40(sp) - 80204d78: 7402 ld s0,32(sp) - 80204d7a: 64e2 ld s1,24(sp) - 80204d7c: 6942 ld s2,16(sp) - 80204d7e: 6145 addi sp,sp,48 - 80204d80: 8082 ret - -0000000080204d82 <sys_dup3>: + 80204d78: 853e mv a0,a5 + 80204d7a: 70a2 ld ra,40(sp) + 80204d7c: 7402 ld s0,32(sp) + 80204d7e: 64e2 ld s1,24(sp) + 80204d80: 6942 ld s2,16(sp) + 80204d82: 6145 addi sp,sp,48 + 80204d84: 8082 ret + +0000000080204d86 <sys_dup3>: { - 80204d82: 7179 addi sp,sp,-48 - 80204d84: f406 sd ra,40(sp) - 80204d86: f022 sd s0,32(sp) - 80204d88: ec26 sd s1,24(sp) - 80204d8a: 1800 addi s0,sp,48 + 80204d86: 7179 addi sp,sp,-48 + 80204d88: f406 sd ra,40(sp) + 80204d8a: f022 sd s0,32(sp) + 80204d8c: ec26 sd s1,24(sp) + 80204d8e: 1800 addi s0,sp,48 if (argfd(0, 0, &f) < 0 || argint(1, &new) < 0) { - 80204d8c: fd840613 addi a2,s0,-40 - 80204d90: 4581 li a1,0 - 80204d92: 4501 li a0,0 - 80204d94: 00000097 auipc ra,0x0 - 80204d98: e1c080e7 jalr -484(ra) # 80204bb0 <argfd> + 80204d90: fd840613 addi a2,s0,-40 + 80204d94: 4581 li a1,0 + 80204d96: 4501 li a0,0 + 80204d98: 00000097 auipc ra,0x0 + 80204d9c: e1c080e7 jalr -484(ra) # 80204bb4 <argfd> return -1; - 80204d9c: 577d li a4,-1 + 80204da0: 577d li a4,-1 if (argfd(0, 0, &f) < 0 || argint(1, &new) < 0) { - 80204d9e: 04054e63 bltz a0,80204dfa <sys_dup3+0x78> - 80204da2: fd440593 addi a1,s0,-44 - 80204da6: 4505 li a0,1 - 80204da8: ffffe097 auipc ra,0xffffe - 80204dac: 55c080e7 jalr 1372(ra) # 80203304 <argint> + 80204da2: 04054e63 bltz a0,80204dfe <sys_dup3+0x78> + 80204da6: fd440593 addi a1,s0,-44 + 80204daa: 4505 li a0,1 + 80204dac: ffffe097 auipc ra,0xffffe + 80204db0: 55c080e7 jalr 1372(ra) # 80203308 <argint> if (new < 0) { - 80204db0: fd442783 lw a5,-44(s0) - 80204db4: 8fc9 or a5,a5,a0 - 80204db6: 2781 sext.w a5,a5 + 80204db4: fd442783 lw a5,-44(s0) + 80204db8: 8fc9 or a5,a5,a0 + 80204dba: 2781 sext.w a5,a5 return -1; - 80204db8: 577d li a4,-1 + 80204dbc: 577d li a4,-1 if (new < 0) { - 80204dba: 0407c063 bltz a5,80204dfa <sys_dup3+0x78> + 80204dbe: 0407c063 bltz a5,80204dfe <sys_dup3+0x78> struct proc *p = myproc(); - 80204dbe: ffffd097 auipc ra,0xffffd - 80204dc2: c7e080e7 jalr -898(ra) # 80201a3c <myproc> - 80204dc6: 84aa mv s1,a0 + 80204dc2: ffffd097 auipc ra,0xffffd + 80204dc6: c7a080e7 jalr -902(ra) # 80201a3c <myproc> + 80204dca: 84aa mv s1,a0 if(p->ofile[new]){ - 80204dc8: fd442783 lw a5,-44(s0) - 80204dcc: 07e9 addi a5,a5,26 - 80204dce: 078e slli a5,a5,0x3 - 80204dd0: 97aa add a5,a5,a0 - 80204dd2: 6788 ld a0,8(a5) - 80204dd4: c509 beqz a0,80204dde <sys_dup3+0x5c> + 80204dcc: fd442783 lw a5,-44(s0) + 80204dd0: 07e9 addi a5,a5,26 + 80204dd2: 078e slli a5,a5,0x3 + 80204dd4: 97aa add a5,a5,a0 + 80204dd6: 6788 ld a0,8(a5) + 80204dd8: c509 beqz a0,80204de2 <sys_dup3+0x5c> fileclose(p->ofile[new]); - 80204dd6: fffff097 auipc ra,0xfffff - 80204dda: 270080e7 jalr 624(ra) # 80204046 <fileclose> + 80204dda: fffff097 auipc ra,0xfffff + 80204dde: 270080e7 jalr 624(ra) # 8020404a <fileclose> p->ofile[new] = f; - 80204dde: fd843503 ld a0,-40(s0) - 80204de2: fd442783 lw a5,-44(s0) - 80204de6: 07e9 addi a5,a5,26 - 80204de8: 078e slli a5,a5,0x3 - 80204dea: 94be add s1,s1,a5 - 80204dec: e488 sd a0,8(s1) + 80204de2: fd843503 ld a0,-40(s0) + 80204de6: fd442783 lw a5,-44(s0) + 80204dea: 07e9 addi a5,a5,26 + 80204dec: 078e slli a5,a5,0x3 + 80204dee: 94be add s1,s1,a5 + 80204df0: e488 sd a0,8(s1) filedup(f); - 80204dee: fffff097 auipc ra,0xfffff - 80204df2: 206080e7 jalr 518(ra) # 80203ff4 <filedup> + 80204df2: fffff097 auipc ra,0xfffff + 80204df6: 206080e7 jalr 518(ra) # 80203ff8 <filedup> return new; - 80204df6: fd442703 lw a4,-44(s0) + 80204dfa: fd442703 lw a4,-44(s0) } - 80204dfa: 853a mv a0,a4 - 80204dfc: 70a2 ld ra,40(sp) - 80204dfe: 7402 ld s0,32(sp) - 80204e00: 64e2 ld s1,24(sp) - 80204e02: 6145 addi sp,sp,48 - 80204e04: 8082 ret - -0000000080204e06 <sys_read>: + 80204dfe: 853a mv a0,a4 + 80204e00: 70a2 ld ra,40(sp) + 80204e02: 7402 ld s0,32(sp) + 80204e04: 64e2 ld s1,24(sp) + 80204e06: 6145 addi sp,sp,48 + 80204e08: 8082 ret + +0000000080204e0a <sys_read>: { - 80204e06: 7179 addi sp,sp,-48 - 80204e08: f406 sd ra,40(sp) - 80204e0a: f022 sd s0,32(sp) - 80204e0c: 1800 addi s0,sp,48 + 80204e0a: 7179 addi sp,sp,-48 + 80204e0c: f406 sd ra,40(sp) + 80204e0e: f022 sd s0,32(sp) + 80204e10: 1800 addi s0,sp,48 if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0) - 80204e0e: fe840613 addi a2,s0,-24 - 80204e12: 4581 li a1,0 - 80204e14: 4501 li a0,0 - 80204e16: 00000097 auipc ra,0x0 - 80204e1a: d9a080e7 jalr -614(ra) # 80204bb0 <argfd> + 80204e12: fe840613 addi a2,s0,-24 + 80204e16: 4581 li a1,0 + 80204e18: 4501 li a0,0 + 80204e1a: 00000097 auipc ra,0x0 + 80204e1e: d9a080e7 jalr -614(ra) # 80204bb4 <argfd> return -1; - 80204e1e: 57fd li a5,-1 + 80204e22: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0) - 80204e20: 04054163 bltz a0,80204e62 <sys_read+0x5c> - 80204e24: fe440593 addi a1,s0,-28 - 80204e28: 4509 li a0,2 - 80204e2a: ffffe097 auipc ra,0xffffe - 80204e2e: 4da080e7 jalr 1242(ra) # 80203304 <argint> + 80204e24: 04054163 bltz a0,80204e66 <sys_read+0x5c> + 80204e28: fe440593 addi a1,s0,-28 + 80204e2c: 4509 li a0,2 + 80204e2e: ffffe097 auipc ra,0xffffe + 80204e32: 4da080e7 jalr 1242(ra) # 80203308 <argint> return -1; - 80204e32: 57fd li a5,-1 + 80204e36: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0) - 80204e34: 02054763 bltz a0,80204e62 <sys_read+0x5c> - 80204e38: fd840593 addi a1,s0,-40 - 80204e3c: 4505 li a0,1 - 80204e3e: ffffe097 auipc ra,0xffffe - 80204e42: 528080e7 jalr 1320(ra) # 80203366 <argaddr> + 80204e38: 02054763 bltz a0,80204e66 <sys_read+0x5c> + 80204e3c: fd840593 addi a1,s0,-40 + 80204e40: 4505 li a0,1 + 80204e42: ffffe097 auipc ra,0xffffe + 80204e46: 528080e7 jalr 1320(ra) # 8020336a <argaddr> return -1; - 80204e46: 57fd li a5,-1 + 80204e4a: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0) - 80204e48: 00054d63 bltz a0,80204e62 <sys_read+0x5c> + 80204e4c: 00054d63 bltz a0,80204e66 <sys_read+0x5c> return fileread(f, p, n); - 80204e4c: fe442603 lw a2,-28(s0) - 80204e50: fd843583 ld a1,-40(s0) - 80204e54: fe843503 ld a0,-24(s0) - 80204e58: fffff097 auipc ra,0xfffff - 80204e5c: 392080e7 jalr 914(ra) # 802041ea <fileread> - 80204e60: 87aa mv a5,a0 + 80204e50: fe442603 lw a2,-28(s0) + 80204e54: fd843583 ld a1,-40(s0) + 80204e58: fe843503 ld a0,-24(s0) + 80204e5c: fffff097 auipc ra,0xfffff + 80204e60: 392080e7 jalr 914(ra) # 802041ee <fileread> + 80204e64: 87aa mv a5,a0 } - 80204e62: 853e mv a0,a5 - 80204e64: 70a2 ld ra,40(sp) - 80204e66: 7402 ld s0,32(sp) - 80204e68: 6145 addi sp,sp,48 - 80204e6a: 8082 ret + 80204e66: 853e mv a0,a5 + 80204e68: 70a2 ld ra,40(sp) + 80204e6a: 7402 ld s0,32(sp) + 80204e6c: 6145 addi sp,sp,48 + 80204e6e: 8082 ret -0000000080204e6c <sys_write>: +0000000080204e70 <sys_write>: { - 80204e6c: 7179 addi sp,sp,-48 - 80204e6e: f406 sd ra,40(sp) - 80204e70: f022 sd s0,32(sp) - 80204e72: 1800 addi s0,sp,48 + 80204e70: 7179 addi sp,sp,-48 + 80204e72: f406 sd ra,40(sp) + 80204e74: f022 sd s0,32(sp) + 80204e76: 1800 addi s0,sp,48 if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0) - 80204e74: fe840613 addi a2,s0,-24 - 80204e78: 4581 li a1,0 - 80204e7a: 4501 li a0,0 - 80204e7c: 00000097 auipc ra,0x0 - 80204e80: d34080e7 jalr -716(ra) # 80204bb0 <argfd> + 80204e78: fe840613 addi a2,s0,-24 + 80204e7c: 4581 li a1,0 + 80204e7e: 4501 li a0,0 + 80204e80: 00000097 auipc ra,0x0 + 80204e84: d34080e7 jalr -716(ra) # 80204bb4 <argfd> return -1; - 80204e84: 57fd li a5,-1 + 80204e88: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0) - 80204e86: 04054163 bltz a0,80204ec8 <sys_write+0x5c> - 80204e8a: fe440593 addi a1,s0,-28 - 80204e8e: 4509 li a0,2 - 80204e90: ffffe097 auipc ra,0xffffe - 80204e94: 474080e7 jalr 1140(ra) # 80203304 <argint> + 80204e8a: 04054163 bltz a0,80204ecc <sys_write+0x5c> + 80204e8e: fe440593 addi a1,s0,-28 + 80204e92: 4509 li a0,2 + 80204e94: ffffe097 auipc ra,0xffffe + 80204e98: 474080e7 jalr 1140(ra) # 80203308 <argint> return -1; - 80204e98: 57fd li a5,-1 + 80204e9c: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0) - 80204e9a: 02054763 bltz a0,80204ec8 <sys_write+0x5c> - 80204e9e: fd840593 addi a1,s0,-40 - 80204ea2: 4505 li a0,1 - 80204ea4: ffffe097 auipc ra,0xffffe - 80204ea8: 4c2080e7 jalr 1218(ra) # 80203366 <argaddr> + 80204e9e: 02054763 bltz a0,80204ecc <sys_write+0x5c> + 80204ea2: fd840593 addi a1,s0,-40 + 80204ea6: 4505 li a0,1 + 80204ea8: ffffe097 auipc ra,0xffffe + 80204eac: 4c2080e7 jalr 1218(ra) # 8020336a <argaddr> return -1; - 80204eac: 57fd li a5,-1 + 80204eb0: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argaddr(1, &p) < 0) - 80204eae: 00054d63 bltz a0,80204ec8 <sys_write+0x5c> + 80204eb2: 00054d63 bltz a0,80204ecc <sys_write+0x5c> return filewrite(f, p, n); - 80204eb2: fe442603 lw a2,-28(s0) - 80204eb6: fd843583 ld a1,-40(s0) - 80204eba: fe843503 ld a0,-24(s0) - 80204ebe: fffff097 auipc ra,0xfffff - 80204ec2: 3ee080e7 jalr 1006(ra) # 802042ac <filewrite> - 80204ec6: 87aa mv a5,a0 + 80204eb6: fe442603 lw a2,-28(s0) + 80204eba: fd843583 ld a1,-40(s0) + 80204ebe: fe843503 ld a0,-24(s0) + 80204ec2: fffff097 auipc ra,0xfffff + 80204ec6: 3ee080e7 jalr 1006(ra) # 802042b0 <filewrite> + 80204eca: 87aa mv a5,a0 } - 80204ec8: 853e mv a0,a5 - 80204eca: 70a2 ld ra,40(sp) - 80204ecc: 7402 ld s0,32(sp) - 80204ece: 6145 addi sp,sp,48 - 80204ed0: 8082 ret + 80204ecc: 853e mv a0,a5 + 80204ece: 70a2 ld ra,40(sp) + 80204ed0: 7402 ld s0,32(sp) + 80204ed2: 6145 addi sp,sp,48 + 80204ed4: 8082 ret -0000000080204ed2 <sys_close>: +0000000080204ed6 <sys_close>: { - 80204ed2: 1101 addi sp,sp,-32 - 80204ed4: ec06 sd ra,24(sp) - 80204ed6: e822 sd s0,16(sp) - 80204ed8: 1000 addi s0,sp,32 + 80204ed6: 1101 addi sp,sp,-32 + 80204ed8: ec06 sd ra,24(sp) + 80204eda: e822 sd s0,16(sp) + 80204edc: 1000 addi s0,sp,32 if(argfd(0, &fd, &f) < 0) - 80204eda: fe040613 addi a2,s0,-32 - 80204ede: fec40593 addi a1,s0,-20 - 80204ee2: 4501 li a0,0 - 80204ee4: 00000097 auipc ra,0x0 - 80204ee8: ccc080e7 jalr -820(ra) # 80204bb0 <argfd> + 80204ede: fe040613 addi a2,s0,-32 + 80204ee2: fec40593 addi a1,s0,-20 + 80204ee6: 4501 li a0,0 + 80204ee8: 00000097 auipc ra,0x0 + 80204eec: ccc080e7 jalr -820(ra) # 80204bb4 <argfd> return -1; - 80204eec: 57fd li a5,-1 + 80204ef0: 57fd li a5,-1 if(argfd(0, &fd, &f) < 0) - 80204eee: 02054463 bltz a0,80204f16 <sys_close+0x44> + 80204ef2: 02054463 bltz a0,80204f1a <sys_close+0x44> myproc()->ofile[fd] = 0; - 80204ef2: ffffd097 auipc ra,0xffffd - 80204ef6: b4a080e7 jalr -1206(ra) # 80201a3c <myproc> - 80204efa: fec42783 lw a5,-20(s0) - 80204efe: 07e9 addi a5,a5,26 - 80204f00: 078e slli a5,a5,0x3 - 80204f02: 953e add a0,a0,a5 - 80204f04: 00053423 sd zero,8(a0) + 80204ef6: ffffd097 auipc ra,0xffffd + 80204efa: b46080e7 jalr -1210(ra) # 80201a3c <myproc> + 80204efe: fec42783 lw a5,-20(s0) + 80204f02: 07e9 addi a5,a5,26 + 80204f04: 078e slli a5,a5,0x3 + 80204f06: 953e add a0,a0,a5 + 80204f08: 00053423 sd zero,8(a0) fileclose(f); - 80204f08: fe043503 ld a0,-32(s0) - 80204f0c: fffff097 auipc ra,0xfffff - 80204f10: 13a080e7 jalr 314(ra) # 80204046 <fileclose> + 80204f0c: fe043503 ld a0,-32(s0) + 80204f10: fffff097 auipc ra,0xfffff + 80204f14: 13a080e7 jalr 314(ra) # 8020404a <fileclose> return 0; - 80204f14: 4781 li a5,0 + 80204f18: 4781 li a5,0 } - 80204f16: 853e mv a0,a5 - 80204f18: 60e2 ld ra,24(sp) - 80204f1a: 6442 ld s0,16(sp) - 80204f1c: 6105 addi sp,sp,32 - 80204f1e: 8082 ret + 80204f1a: 853e mv a0,a5 + 80204f1c: 60e2 ld ra,24(sp) + 80204f1e: 6442 ld s0,16(sp) + 80204f20: 6105 addi sp,sp,32 + 80204f22: 8082 ret -0000000080204f20 <sys_fstat>: +0000000080204f24 <sys_fstat>: { - 80204f20: 1101 addi sp,sp,-32 - 80204f22: ec06 sd ra,24(sp) - 80204f24: e822 sd s0,16(sp) - 80204f26: 1000 addi s0,sp,32 + 80204f24: 1101 addi sp,sp,-32 + 80204f26: ec06 sd ra,24(sp) + 80204f28: e822 sd s0,16(sp) + 80204f2a: 1000 addi s0,sp,32 if(argfd(0, 0, &f) < 0 || argaddr(1, &kst) < 0) - 80204f28: fe840613 addi a2,s0,-24 - 80204f2c: 4581 li a1,0 - 80204f2e: 4501 li a0,0 - 80204f30: 00000097 auipc ra,0x0 - 80204f34: c80080e7 jalr -896(ra) # 80204bb0 <argfd> + 80204f2c: fe840613 addi a2,s0,-24 + 80204f30: 4581 li a1,0 + 80204f32: 4501 li a0,0 + 80204f34: 00000097 auipc ra,0x0 + 80204f38: c80080e7 jalr -896(ra) # 80204bb4 <argfd> return -1; - 80204f38: 57fd li a5,-1 + 80204f3c: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argaddr(1, &kst) < 0) - 80204f3a: 02054563 bltz a0,80204f64 <sys_fstat+0x44> - 80204f3e: fe040593 addi a1,s0,-32 - 80204f42: 4505 li a0,1 - 80204f44: ffffe097 auipc ra,0xffffe - 80204f48: 422080e7 jalr 1058(ra) # 80203366 <argaddr> + 80204f3e: 02054563 bltz a0,80204f68 <sys_fstat+0x44> + 80204f42: fe040593 addi a1,s0,-32 + 80204f46: 4505 li a0,1 + 80204f48: ffffe097 auipc ra,0xffffe + 80204f4c: 422080e7 jalr 1058(ra) # 8020336a <argaddr> return -1; - 80204f4c: 57fd li a5,-1 + 80204f50: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argaddr(1, &kst) < 0) - 80204f4e: 00054b63 bltz a0,80204f64 <sys_fstat+0x44> + 80204f52: 00054b63 bltz a0,80204f68 <sys_fstat+0x44> return filekstat(f, kst); - 80204f52: fe043583 ld a1,-32(s0) - 80204f56: fe843503 ld a0,-24(s0) - 80204f5a: fffff097 auipc ra,0xfffff - 80204f5e: 206080e7 jalr 518(ra) # 80204160 <filekstat> - 80204f62: 87aa mv a5,a0 + 80204f56: fe043583 ld a1,-32(s0) + 80204f5a: fe843503 ld a0,-24(s0) + 80204f5e: fffff097 auipc ra,0xfffff + 80204f62: 206080e7 jalr 518(ra) # 80204164 <filekstat> + 80204f66: 87aa mv a5,a0 } - 80204f64: 853e mv a0,a5 - 80204f66: 60e2 ld ra,24(sp) - 80204f68: 6442 ld s0,16(sp) - 80204f6a: 6105 addi sp,sp,32 - 80204f6c: 8082 ret + 80204f68: 853e mv a0,a5 + 80204f6a: 60e2 ld ra,24(sp) + 80204f6c: 6442 ld s0,16(sp) + 80204f6e: 6105 addi sp,sp,32 + 80204f70: 8082 ret -0000000080204f6e <sys_open>: +0000000080204f72 <sys_open>: uint64 sys_open(void) { - 80204f6e: 7129 addi sp,sp,-320 - 80204f70: fe06 sd ra,312(sp) - 80204f72: fa22 sd s0,304(sp) - 80204f74: f626 sd s1,296(sp) - 80204f76: f24a sd s2,288(sp) - 80204f78: ee4e sd s3,280(sp) - 80204f7a: 0280 addi s0,sp,320 + 80204f72: 7129 addi sp,sp,-320 + 80204f74: fe06 sd ra,312(sp) + 80204f76: fa22 sd s0,304(sp) + 80204f78: f626 sd s1,296(sp) + 80204f7a: f24a sd s2,288(sp) + 80204f7c: ee4e sd s3,280(sp) + 80204f7e: 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) - 80204f7c: 10400613 li a2,260 - 80204f80: ec840593 addi a1,s0,-312 - 80204f84: 4501 li a0,0 - 80204f86: ffffe097 auipc ra,0xffffe - 80204f8a: 402080e7 jalr 1026(ra) # 80203388 <argstr> - 80204f8e: 87aa mv a5,a0 + 80204f80: 10400613 li a2,260 + 80204f84: ec840593 addi a1,s0,-312 + 80204f88: 4501 li a0,0 + 80204f8a: ffffe097 auipc ra,0xffffe + 80204f8e: 402080e7 jalr 1026(ra) # 8020338c <argstr> + 80204f92: 87aa mv a5,a0 return -1; - 80204f90: 557d li a0,-1 + 80204f94: 557d li a0,-1 if(argstr(0, path, FAT32_MAX_PATH) < 0 || argint(1, &omode) < 0) - 80204f92: 0807ce63 bltz a5,8020502e <sys_open+0xc0> - 80204f96: ec440593 addi a1,s0,-316 - 80204f9a: 4505 li a0,1 - 80204f9c: ffffe097 auipc ra,0xffffe - 80204fa0: 368080e7 jalr 872(ra) # 80203304 <argint> - 80204fa4: 0e054163 bltz a0,80205086 <sys_open+0x118> + 80204f96: 0807ce63 bltz a5,80205032 <sys_open+0xc0> + 80204f9a: ec440593 addi a1,s0,-316 + 80204f9e: 4505 li a0,1 + 80204fa0: ffffe097 auipc ra,0xffffe + 80204fa4: 368080e7 jalr 872(ra) # 80203308 <argint> + 80204fa8: 0e054163 bltz a0,8020508a <sys_open+0x118> if(omode & O_CREATE){ - 80204fa8: ec442603 lw a2,-316(s0) - 80204fac: 20067793 andi a5,a2,512 - 80204fb0: c7d1 beqz a5,8020503c <sys_open+0xce> + 80204fac: ec442603 lw a2,-316(s0) + 80204fb0: 20067793 andi a5,a2,512 + 80204fb4: c7d1 beqz a5,80205040 <sys_open+0xce> ep = create(path, T_FILE, omode); - 80204fb2: 4589 li a1,2 - 80204fb4: ec840513 addi a0,s0,-312 - 80204fb8: 00000097 auipc ra,0x0 - 80204fbc: ca6080e7 jalr -858(ra) # 80204c5e <create> - 80204fc0: 892a mv s2,a0 + 80204fb6: 4589 li a1,2 + 80204fb8: ec840513 addi a0,s0,-312 + 80204fbc: 00000097 auipc ra,0x0 + 80204fc0: ca6080e7 jalr -858(ra) # 80204c62 <create> + 80204fc4: 892a mv s2,a0 if(ep == NULL){ - 80204fc2: c561 beqz a0,8020508a <sys_open+0x11c> + 80204fc6: c561 beqz a0,8020508e <sys_open+0x11c> eput(ep); return -1; } } if((f = filealloc()) == NULL || (fd = fdalloc(f)) < 0){ - 80204fc4: fffff097 auipc ra,0xfffff - 80204fc8: fc6080e7 jalr -58(ra) # 80203f8a <filealloc> - 80204fcc: 89aa mv s3,a0 - 80204fce: c579 beqz a0,8020509c <sys_open+0x12e> - 80204fd0: 00000097 auipc ra,0x0 - 80204fd4: c4a080e7 jalr -950(ra) # 80204c1a <fdalloc> - 80204fd8: 84aa mv s1,a0 - 80204fda: 0a054c63 bltz a0,80205092 <sys_open+0x124> + 80204fc8: fffff097 auipc ra,0xfffff + 80204fcc: fc6080e7 jalr -58(ra) # 80203f8e <filealloc> + 80204fd0: 89aa mv s3,a0 + 80204fd2: c579 beqz a0,802050a0 <sys_open+0x12e> + 80204fd4: 00000097 auipc ra,0x0 + 80204fd8: c4a080e7 jalr -950(ra) # 80204c1e <fdalloc> + 80204fdc: 84aa mv s1,a0 + 80204fde: 0a054c63 bltz a0,80205096 <sys_open+0x124> eunlock(ep); eput(ep); return -1; } if(!(ep->attribute & ATTR_DIRECTORY) && (omode & O_TRUNC)){ - 80204fde: 10094783 lbu a5,256(s2) - 80204fe2: 8bc1 andi a5,a5,16 - 80204fe4: e791 bnez a5,80204ff0 <sys_open+0x82> - 80204fe6: ec442783 lw a5,-316(s0) - 80204fea: 4007f793 andi a5,a5,1024 - 80204fee: e7d1 bnez a5,8020507a <sys_open+0x10c> + 80204fe2: 10094783 lbu a5,256(s2) + 80204fe6: 8bc1 andi a5,a5,16 + 80204fe8: e791 bnez a5,80204ff4 <sys_open+0x82> + 80204fea: ec442783 lw a5,-316(s0) + 80204fee: 4007f793 andi a5,a5,1024 + 80204ff2: e7d1 bnez a5,8020507e <sys_open+0x10c> etrunc(ep); } f->type = FD_ENTRY; - 80204ff0: 4789 li a5,2 - 80204ff2: 00f9a023 sw a5,0(s3) + 80204ff4: 4789 li a5,2 + 80204ff6: 00f9a023 sw a5,0(s3) f->off = (omode & O_APPEND) ? ep->file_size : 0; - 80204ff6: ec442783 lw a5,-316(s0) - 80204ffa: 0047f693 andi a3,a5,4 - 80204ffe: 4701 li a4,0 - 80205000: c299 beqz a3,80205006 <sys_open+0x98> - 80205002: 10892703 lw a4,264(s2) - 80205006: 02e9a023 sw a4,32(s3) + 80204ffa: ec442783 lw a5,-316(s0) + 80204ffe: 0047f693 andi a3,a5,4 + 80205002: 4701 li a4,0 + 80205004: c299 beqz a3,8020500a <sys_open+0x98> + 80205006: 10892703 lw a4,264(s2) + 8020500a: 02e9a023 sw a4,32(s3) f->ep = ep; - 8020500a: 0129bc23 sd s2,24(s3) + 8020500e: 0129bc23 sd s2,24(s3) f->readable = !(omode & O_WRONLY); - 8020500e: 0017c713 xori a4,a5,1 - 80205012: 8b05 andi a4,a4,1 - 80205014: 00e98423 sb a4,8(s3) + 80205012: 0017c713 xori a4,a5,1 + 80205016: 8b05 andi a4,a4,1 + 80205018: 00e98423 sb a4,8(s3) f->writable = (omode & O_WRONLY) || (omode & O_RDWR); - 80205018: 8b8d andi a5,a5,3 - 8020501a: 00f037b3 snez a5,a5 - 8020501e: 00f984a3 sb a5,9(s3) + 8020501c: 8b8d andi a5,a5,3 + 8020501e: 00f037b3 snez a5,a5 + 80205022: 00f984a3 sb a5,9(s3) eunlock(ep); - 80205022: 854a mv a0,s2 - 80205024: 00002097 auipc ra,0x2 - 80205028: 0d0080e7 jalr 208(ra) # 802070f4 <eunlock> + 80205026: 854a mv a0,s2 + 80205028: 00002097 auipc ra,0x2 + 8020502c: 08c080e7 jalr 140(ra) # 802070b4 <eunlock> return fd; - 8020502c: 8526 mv a0,s1 + 80205030: 8526 mv a0,s1 } - 8020502e: 70f2 ld ra,312(sp) - 80205030: 7452 ld s0,304(sp) - 80205032: 74b2 ld s1,296(sp) - 80205034: 7912 ld s2,288(sp) - 80205036: 69f2 ld s3,280(sp) - 80205038: 6131 addi sp,sp,320 - 8020503a: 8082 ret + 80205032: 70f2 ld ra,312(sp) + 80205034: 7452 ld s0,304(sp) + 80205036: 74b2 ld s1,296(sp) + 80205038: 7912 ld s2,288(sp) + 8020503a: 69f2 ld s3,280(sp) + 8020503c: 6131 addi sp,sp,320 + 8020503e: 8082 ret if((ep = ename(path)) == NULL){ - 8020503c: ec840513 addi a0,s0,-312 - 80205040: 00003097 auipc ra,0x3 - 80205044: 826080e7 jalr -2010(ra) # 80207866 <ename> - 80205048: 892a mv s2,a0 - 8020504a: c131 beqz a0,8020508e <sys_open+0x120> + 80205040: ec840513 addi a0,s0,-312 + 80205044: 00002097 auipc ra,0x2 + 80205048: 7e2080e7 jalr 2018(ra) # 80207826 <ename> + 8020504c: 892a mv s2,a0 + 8020504e: c131 beqz a0,80205092 <sys_open+0x120> elock(ep); - 8020504c: 00002097 auipc ra,0x2 - 80205050: 072080e7 jalr 114(ra) # 802070be <elock> + 80205050: 00002097 auipc ra,0x2 + 80205054: 02e080e7 jalr 46(ra) # 8020707e <elock> if((ep->attribute & ATTR_DIRECTORY) && omode != O_RDONLY){ - 80205054: 10094783 lbu a5,256(s2) - 80205058: 8bc1 andi a5,a5,16 - 8020505a: d7ad beqz a5,80204fc4 <sys_open+0x56> - 8020505c: ec442783 lw a5,-316(s0) - 80205060: d3b5 beqz a5,80204fc4 <sys_open+0x56> + 80205058: 10094783 lbu a5,256(s2) + 8020505c: 8bc1 andi a5,a5,16 + 8020505e: d7ad beqz a5,80204fc8 <sys_open+0x56> + 80205060: ec442783 lw a5,-316(s0) + 80205064: d3b5 beqz a5,80204fc8 <sys_open+0x56> eunlock(ep); - 80205062: 854a mv a0,s2 - 80205064: 00002097 auipc ra,0x2 - 80205068: 090080e7 jalr 144(ra) # 802070f4 <eunlock> + 80205066: 854a mv a0,s2 + 80205068: 00002097 auipc ra,0x2 + 8020506c: 04c080e7 jalr 76(ra) # 802070b4 <eunlock> eput(ep); - 8020506c: 854a mv a0,s2 - 8020506e: 00002097 auipc ra,0x2 - 80205072: 0d4080e7 jalr 212(ra) # 80207142 <eput> + 80205070: 854a mv a0,s2 + 80205072: 00002097 auipc ra,0x2 + 80205076: 090080e7 jalr 144(ra) # 80207102 <eput> return -1; - 80205076: 557d li a0,-1 - 80205078: bf5d j 8020502e <sys_open+0xc0> + 8020507a: 557d li a0,-1 + 8020507c: bf5d j 80205032 <sys_open+0xc0> etrunc(ep); - 8020507a: 854a mv a0,s2 - 8020507c: 00002097 auipc ra,0x2 - 80205080: fd8080e7 jalr -40(ra) # 80207054 <etrunc> - 80205084: b7b5 j 80204ff0 <sys_open+0x82> + 8020507e: 854a mv a0,s2 + 80205080: 00002097 auipc ra,0x2 + 80205084: f94080e7 jalr -108(ra) # 80207014 <etrunc> + 80205088: b7b5 j 80204ff4 <sys_open+0x82> return -1; - 80205086: 557d li a0,-1 - 80205088: b75d j 8020502e <sys_open+0xc0> - return -1; 8020508a: 557d li a0,-1 - 8020508c: b74d j 8020502e <sys_open+0xc0> + 8020508c: b75d j 80205032 <sys_open+0xc0> return -1; 8020508e: 557d li a0,-1 - 80205090: bf79 j 8020502e <sys_open+0xc0> + 80205090: b74d j 80205032 <sys_open+0xc0> + return -1; + 80205092: 557d li a0,-1 + 80205094: bf79 j 80205032 <sys_open+0xc0> fileclose(f); - 80205092: 854e mv a0,s3 - 80205094: fffff097 auipc ra,0xfffff - 80205098: fb2080e7 jalr -78(ra) # 80204046 <fileclose> + 80205096: 854e mv a0,s3 + 80205098: fffff097 auipc ra,0xfffff + 8020509c: fb2080e7 jalr -78(ra) # 8020404a <fileclose> eunlock(ep); - 8020509c: 854a mv a0,s2 - 8020509e: 00002097 auipc ra,0x2 - 802050a2: 056080e7 jalr 86(ra) # 802070f4 <eunlock> + 802050a0: 854a mv a0,s2 + 802050a2: 00002097 auipc ra,0x2 + 802050a6: 012080e7 jalr 18(ra) # 802070b4 <eunlock> eput(ep); - 802050a6: 854a mv a0,s2 - 802050a8: 00002097 auipc ra,0x2 - 802050ac: 09a080e7 jalr 154(ra) # 80207142 <eput> + 802050aa: 854a mv a0,s2 + 802050ac: 00002097 auipc ra,0x2 + 802050b0: 056080e7 jalr 86(ra) # 80207102 <eput> return -1; - 802050b0: 557d li a0,-1 - 802050b2: bfb5 j 8020502e <sys_open+0xc0> + 802050b4: 557d li a0,-1 + 802050b6: bfb5 j 80205032 <sys_open+0xc0> -00000000802050b4 <sys_mkdir>: +00000000802050b8 <sys_mkdir>: uint64 sys_mkdir(void) { - 802050b4: 7169 addi sp,sp,-304 - 802050b6: f606 sd ra,296(sp) - 802050b8: f222 sd s0,288(sp) - 802050ba: ee26 sd s1,280(sp) - 802050bc: 1a00 addi s0,sp,304 + 802050b8: 7169 addi sp,sp,-304 + 802050ba: f606 sd ra,296(sp) + 802050bc: f222 sd s0,288(sp) + 802050be: ee26 sd s1,280(sp) + 802050c0: 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){ - 802050be: 10400613 li a2,260 - 802050c2: ed840593 addi a1,s0,-296 - 802050c6: 4501 li a0,0 - 802050c8: ffffe097 auipc ra,0xffffe - 802050cc: 2c0080e7 jalr 704(ra) # 80203388 <argstr> + 802050c2: 10400613 li a2,260 + 802050c6: ed840593 addi a1,s0,-296 + 802050ca: 4501 li a0,0 + 802050cc: ffffe097 auipc ra,0xffffe + 802050d0: 2c0080e7 jalr 704(ra) # 8020338c <argstr> return -1; - 802050d0: 57fd li a5,-1 + 802050d4: 57fd li a5,-1 if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = create(path, T_DIR, 0)) == 0){ - 802050d2: 02054663 bltz a0,802050fe <sys_mkdir+0x4a> - 802050d6: 4601 li a2,0 - 802050d8: 4585 li a1,1 - 802050da: ed840513 addi a0,s0,-296 - 802050de: 00000097 auipc ra,0x0 - 802050e2: b80080e7 jalr -1152(ra) # 80204c5e <create> - 802050e6: 84aa mv s1,a0 - 802050e8: c10d beqz a0,8020510a <sys_mkdir+0x56> + 802050d6: 02054663 bltz a0,80205102 <sys_mkdir+0x4a> + 802050da: 4601 li a2,0 + 802050dc: 4585 li a1,1 + 802050de: ed840513 addi a0,s0,-296 + 802050e2: 00000097 auipc ra,0x0 + 802050e6: b80080e7 jalr -1152(ra) # 80204c62 <create> + 802050ea: 84aa mv s1,a0 + 802050ec: c10d beqz a0,8020510e <sys_mkdir+0x56> } eunlock(ep); - 802050ea: 00002097 auipc ra,0x2 - 802050ee: 00a080e7 jalr 10(ra) # 802070f4 <eunlock> + 802050ee: 00002097 auipc ra,0x2 + 802050f2: fc6080e7 jalr -58(ra) # 802070b4 <eunlock> eput(ep); - 802050f2: 8526 mv a0,s1 - 802050f4: 00002097 auipc ra,0x2 - 802050f8: 04e080e7 jalr 78(ra) # 80207142 <eput> + 802050f6: 8526 mv a0,s1 + 802050f8: 00002097 auipc ra,0x2 + 802050fc: 00a080e7 jalr 10(ra) # 80207102 <eput> return 0; - 802050fc: 4781 li a5,0 + 80205100: 4781 li a5,0 } - 802050fe: 853e mv a0,a5 - 80205100: 70b2 ld ra,296(sp) - 80205102: 7412 ld s0,288(sp) - 80205104: 64f2 ld s1,280(sp) - 80205106: 6155 addi sp,sp,304 - 80205108: 8082 ret + 80205102: 853e mv a0,a5 + 80205104: 70b2 ld ra,296(sp) + 80205106: 7412 ld s0,288(sp) + 80205108: 64f2 ld s1,280(sp) + 8020510a: 6155 addi sp,sp,304 + 8020510c: 8082 ret return -1; - 8020510a: 57fd li a5,-1 - 8020510c: bfcd j 802050fe <sys_mkdir+0x4a> + 8020510e: 57fd li a5,-1 + 80205110: bfcd j 80205102 <sys_mkdir+0x4a> -000000008020510e <sys_chdir>: +0000000080205112 <sys_chdir>: uint64 sys_chdir(void) { - 8020510e: 7169 addi sp,sp,-304 - 80205110: f606 sd ra,296(sp) - 80205112: f222 sd s0,288(sp) - 80205114: ee26 sd s1,280(sp) - 80205116: ea4a sd s2,272(sp) - 80205118: 1a00 addi s0,sp,304 + 80205112: 7169 addi sp,sp,-304 + 80205114: f606 sd ra,296(sp) + 80205116: f222 sd s0,288(sp) + 80205118: ee26 sd s1,280(sp) + 8020511a: ea4a sd s2,272(sp) + 8020511c: 1a00 addi s0,sp,304 char path[FAT32_MAX_PATH]; struct dirent *ep; struct proc *p = myproc(); - 8020511a: ffffd097 auipc ra,0xffffd - 8020511e: 922080e7 jalr -1758(ra) # 80201a3c <myproc> - 80205122: 892a mv s2,a0 + 8020511e: ffffd097 auipc ra,0xffffd + 80205122: 91e080e7 jalr -1762(ra) # 80201a3c <myproc> + 80205126: 892a mv s2,a0 if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = ename(path)) == NULL){ - 80205124: 10400613 li a2,260 - 80205128: ed840593 addi a1,s0,-296 - 8020512c: 4501 li a0,0 - 8020512e: ffffe097 auipc ra,0xffffe - 80205132: 25a080e7 jalr 602(ra) # 80203388 <argstr> + 80205128: 10400613 li a2,260 + 8020512c: ed840593 addi a1,s0,-296 + 80205130: 4501 li a0,0 + 80205132: ffffe097 auipc ra,0xffffe + 80205136: 25a080e7 jalr 602(ra) # 8020338c <argstr> return -1; - 80205136: 57fd li a5,-1 + 8020513a: 57fd li a5,-1 if(argstr(0, path, FAT32_MAX_PATH) < 0 || (ep = ename(path)) == NULL){ - 80205138: 04054063 bltz a0,80205178 <sys_chdir+0x6a> - 8020513c: ed840513 addi a0,s0,-296 - 80205140: 00002097 auipc ra,0x2 - 80205144: 726080e7 jalr 1830(ra) # 80207866 <ename> - 80205148: 84aa mv s1,a0 - 8020514a: c931 beqz a0,8020519e <sys_chdir+0x90> + 8020513c: 04054063 bltz a0,8020517c <sys_chdir+0x6a> + 80205140: ed840513 addi a0,s0,-296 + 80205144: 00002097 auipc ra,0x2 + 80205148: 6e2080e7 jalr 1762(ra) # 80207826 <ename> + 8020514c: 84aa mv s1,a0 + 8020514e: c931 beqz a0,802051a2 <sys_chdir+0x90> } elock(ep); - 8020514c: 00002097 auipc ra,0x2 - 80205150: f72080e7 jalr -142(ra) # 802070be <elock> + 80205150: 00002097 auipc ra,0x2 + 80205154: f2e080e7 jalr -210(ra) # 8020707e <elock> if(!(ep->attribute & ATTR_DIRECTORY)){ - 80205154: 1004c783 lbu a5,256(s1) - 80205158: 8bc1 andi a5,a5,16 - 8020515a: c795 beqz a5,80205186 <sys_chdir+0x78> + 80205158: 1004c783 lbu a5,256(s1) + 8020515c: 8bc1 andi a5,a5,16 + 8020515e: c795 beqz a5,8020518a <sys_chdir+0x78> eunlock(ep); eput(ep); return -1; } eunlock(ep); - 8020515c: 8526 mv a0,s1 - 8020515e: 00002097 auipc ra,0x2 - 80205162: f96080e7 jalr -106(ra) # 802070f4 <eunlock> + 80205160: 8526 mv a0,s1 + 80205162: 00002097 auipc ra,0x2 + 80205166: f52080e7 jalr -174(ra) # 802070b4 <eunlock> eput(p->cwd); - 80205166: 40093503 ld a0,1024(s2) - 8020516a: 00002097 auipc ra,0x2 - 8020516e: fd8080e7 jalr -40(ra) # 80207142 <eput> + 8020516a: 40093503 ld a0,1024(s2) + 8020516e: 00002097 auipc ra,0x2 + 80205172: f94080e7 jalr -108(ra) # 80207102 <eput> p->cwd = ep; - 80205172: 40993023 sd s1,1024(s2) + 80205176: 40993023 sd s1,1024(s2) return 0; - 80205176: 4781 li a5,0 + 8020517a: 4781 li a5,0 } - 80205178: 853e mv a0,a5 - 8020517a: 70b2 ld ra,296(sp) - 8020517c: 7412 ld s0,288(sp) - 8020517e: 64f2 ld s1,280(sp) - 80205180: 6952 ld s2,272(sp) - 80205182: 6155 addi sp,sp,304 - 80205184: 8082 ret + 8020517c: 853e mv a0,a5 + 8020517e: 70b2 ld ra,296(sp) + 80205180: 7412 ld s0,288(sp) + 80205182: 64f2 ld s1,280(sp) + 80205184: 6952 ld s2,272(sp) + 80205186: 6155 addi sp,sp,304 + 80205188: 8082 ret eunlock(ep); - 80205186: 8526 mv a0,s1 - 80205188: 00002097 auipc ra,0x2 - 8020518c: f6c080e7 jalr -148(ra) # 802070f4 <eunlock> + 8020518a: 8526 mv a0,s1 + 8020518c: 00002097 auipc ra,0x2 + 80205190: f28080e7 jalr -216(ra) # 802070b4 <eunlock> eput(ep); - 80205190: 8526 mv a0,s1 - 80205192: 00002097 auipc ra,0x2 - 80205196: fb0080e7 jalr -80(ra) # 80207142 <eput> - return -1; - 8020519a: 57fd li a5,-1 - 8020519c: bff1 j 80205178 <sys_chdir+0x6a> + 80205194: 8526 mv a0,s1 + 80205196: 00002097 auipc ra,0x2 + 8020519a: f6c080e7 jalr -148(ra) # 80207102 <eput> return -1; 8020519e: 57fd li a5,-1 - 802051a0: bfe1 j 80205178 <sys_chdir+0x6a> + 802051a0: bff1 j 8020517c <sys_chdir+0x6a> + return -1; + 802051a2: 57fd li a5,-1 + 802051a4: bfe1 j 8020517c <sys_chdir+0x6a> -00000000802051a2 <sys_pipe>: +00000000802051a6 <sys_pipe>: uint64 sys_pipe(void) { - 802051a2: 7139 addi sp,sp,-64 - 802051a4: fc06 sd ra,56(sp) - 802051a6: f822 sd s0,48(sp) - 802051a8: f426 sd s1,40(sp) - 802051aa: 0080 addi s0,sp,64 + 802051a6: 7139 addi sp,sp,-64 + 802051a8: fc06 sd ra,56(sp) + 802051aa: f822 sd s0,48(sp) + 802051ac: f426 sd s1,40(sp) + 802051ae: 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(); - 802051ac: ffffd097 auipc ra,0xffffd - 802051b0: 890080e7 jalr -1904(ra) # 80201a3c <myproc> - 802051b4: 84aa mv s1,a0 + 802051b0: ffffd097 auipc ra,0xffffd + 802051b4: 88c080e7 jalr -1908(ra) # 80201a3c <myproc> + 802051b8: 84aa mv s1,a0 if(argaddr(0, &fdarray) < 0) - 802051b6: fd840593 addi a1,s0,-40 - 802051ba: 4501 li a0,0 - 802051bc: ffffe097 auipc ra,0xffffe - 802051c0: 1aa080e7 jalr 426(ra) # 80203366 <argaddr> + 802051ba: fd840593 addi a1,s0,-40 + 802051be: 4501 li a0,0 + 802051c0: ffffe097 auipc ra,0xffffe + 802051c4: 1aa080e7 jalr 426(ra) # 8020336a <argaddr> return -1; - 802051c4: 57fd li a5,-1 + 802051c8: 57fd li a5,-1 if(argaddr(0, &fdarray) < 0) - 802051c6: 0c054e63 bltz a0,802052a2 <sys_pipe+0x100> + 802051ca: 0c054e63 bltz a0,802052a6 <sys_pipe+0x100> if(pipealloc(&rf, &wf) < 0) - 802051ca: fc840593 addi a1,s0,-56 - 802051ce: fd040513 addi a0,s0,-48 - 802051d2: fffff097 auipc ra,0xfffff - 802051d6: 270080e7 jalr 624(ra) # 80204442 <pipealloc> + 802051ce: fc840593 addi a1,s0,-56 + 802051d2: fd040513 addi a0,s0,-48 + 802051d6: fffff097 auipc ra,0xfffff + 802051da: 270080e7 jalr 624(ra) # 80204446 <pipealloc> return -1; - 802051da: 57fd li a5,-1 + 802051de: 57fd li a5,-1 if(pipealloc(&rf, &wf) < 0) - 802051dc: 0c054363 bltz a0,802052a2 <sys_pipe+0x100> + 802051e0: 0c054363 bltz a0,802052a6 <sys_pipe+0x100> fd0 = -1; - 802051e0: fcf42223 sw a5,-60(s0) + 802051e4: fcf42223 sw a5,-60(s0) if((fd0 = fdalloc(rf)) < 0 || (fd1 = fdalloc(wf)) < 0){ - 802051e4: fd043503 ld a0,-48(s0) - 802051e8: 00000097 auipc ra,0x0 - 802051ec: a32080e7 jalr -1486(ra) # 80204c1a <fdalloc> - 802051f0: fca42223 sw a0,-60(s0) - 802051f4: 08054a63 bltz a0,80205288 <sys_pipe+0xe6> - 802051f8: fc843503 ld a0,-56(s0) - 802051fc: 00000097 auipc ra,0x0 - 80205200: a1e080e7 jalr -1506(ra) # 80204c1a <fdalloc> - 80205204: fca42023 sw a0,-64(s0) - 80205208: 06054763 bltz a0,80205276 <sys_pipe+0xd4> + 802051e8: fd043503 ld a0,-48(s0) + 802051ec: 00000097 auipc ra,0x0 + 802051f0: a32080e7 jalr -1486(ra) # 80204c1e <fdalloc> + 802051f4: fca42223 sw a0,-60(s0) + 802051f8: 08054a63 bltz a0,8020528c <sys_pipe+0xe6> + 802051fc: fc843503 ld a0,-56(s0) + 80205200: 00000097 auipc ra,0x0 + 80205204: a1e080e7 jalr -1506(ra) # 80204c1e <fdalloc> + 80205208: fca42023 sw a0,-64(s0) + 8020520c: 06054763 bltz a0,8020527a <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 || - 8020520c: 4611 li a2,4 - 8020520e: fc440593 addi a1,s0,-60 - 80205212: fd843503 ld a0,-40(s0) - 80205216: ffffc097 auipc ra,0xffffc - 8020521a: 15c080e7 jalr 348(ra) # 80201372 <copyout2> - 8020521e: 00054f63 bltz a0,8020523c <sys_pipe+0x9a> + 80205210: 4611 li a2,4 + 80205212: fc440593 addi a1,s0,-60 + 80205216: fd843503 ld a0,-40(s0) + 8020521a: ffffc097 auipc ra,0xffffc + 8020521e: 158080e7 jalr 344(ra) # 80201372 <copyout2> + 80205222: 00054f63 bltz a0,80205240 <sys_pipe+0x9a> copyout2(fdarray+sizeof(fd0), (char *)&fd1, sizeof(fd1)) < 0){ - 80205222: 4611 li a2,4 - 80205224: fc040593 addi a1,s0,-64 - 80205228: fd843503 ld a0,-40(s0) - 8020522c: 0511 addi a0,a0,4 - 8020522e: ffffc097 auipc ra,0xffffc - 80205232: 144080e7 jalr 324(ra) # 80201372 <copyout2> + 80205226: 4611 li a2,4 + 80205228: fc040593 addi a1,s0,-64 + 8020522c: fd843503 ld a0,-40(s0) + 80205230: 0511 addi a0,a0,4 + 80205232: ffffc097 auipc ra,0xffffc + 80205236: 140080e7 jalr 320(ra) # 80201372 <copyout2> p->ofile[fd1] = 0; fileclose(rf); fileclose(wf); return -1; } return 0; - 80205236: 4781 li a5,0 + 8020523a: 4781 li a5,0 if(copyout2(fdarray, (char*)&fd0, sizeof(fd0)) < 0 || - 80205238: 06055563 bgez a0,802052a2 <sys_pipe+0x100> + 8020523c: 06055563 bgez a0,802052a6 <sys_pipe+0x100> p->ofile[fd0] = 0; - 8020523c: fc442783 lw a5,-60(s0) - 80205240: 07e9 addi a5,a5,26 - 80205242: 078e slli a5,a5,0x3 - 80205244: 97a6 add a5,a5,s1 - 80205246: 0007b423 sd zero,8(a5) + 80205240: fc442783 lw a5,-60(s0) + 80205244: 07e9 addi a5,a5,26 + 80205246: 078e slli a5,a5,0x3 + 80205248: 97a6 add a5,a5,s1 + 8020524a: 0007b423 sd zero,8(a5) p->ofile[fd1] = 0; - 8020524a: fc042783 lw a5,-64(s0) - 8020524e: 07e9 addi a5,a5,26 - 80205250: 078e slli a5,a5,0x3 - 80205252: 00f48533 add a0,s1,a5 - 80205256: 00053423 sd zero,8(a0) + 8020524e: fc042783 lw a5,-64(s0) + 80205252: 07e9 addi a5,a5,26 + 80205254: 078e slli a5,a5,0x3 + 80205256: 00f48533 add a0,s1,a5 + 8020525a: 00053423 sd zero,8(a0) fileclose(rf); - 8020525a: fd043503 ld a0,-48(s0) - 8020525e: fffff097 auipc ra,0xfffff - 80205262: de8080e7 jalr -536(ra) # 80204046 <fileclose> + 8020525e: fd043503 ld a0,-48(s0) + 80205262: fffff097 auipc ra,0xfffff + 80205266: de8080e7 jalr -536(ra) # 8020404a <fileclose> fileclose(wf); - 80205266: fc843503 ld a0,-56(s0) - 8020526a: fffff097 auipc ra,0xfffff - 8020526e: ddc080e7 jalr -548(ra) # 80204046 <fileclose> + 8020526a: fc843503 ld a0,-56(s0) + 8020526e: fffff097 auipc ra,0xfffff + 80205272: ddc080e7 jalr -548(ra) # 8020404a <fileclose> return -1; - 80205272: 57fd li a5,-1 - 80205274: a03d j 802052a2 <sys_pipe+0x100> + 80205276: 57fd li a5,-1 + 80205278: a03d j 802052a6 <sys_pipe+0x100> if(fd0 >= 0) - 80205276: fc442783 lw a5,-60(s0) - 8020527a: 0007c763 bltz a5,80205288 <sys_pipe+0xe6> + 8020527a: fc442783 lw a5,-60(s0) + 8020527e: 0007c763 bltz a5,8020528c <sys_pipe+0xe6> p->ofile[fd0] = 0; - 8020527e: 07e9 addi a5,a5,26 - 80205280: 078e slli a5,a5,0x3 - 80205282: 97a6 add a5,a5,s1 - 80205284: 0007b423 sd zero,8(a5) + 80205282: 07e9 addi a5,a5,26 + 80205284: 078e slli a5,a5,0x3 + 80205286: 97a6 add a5,a5,s1 + 80205288: 0007b423 sd zero,8(a5) fileclose(rf); - 80205288: fd043503 ld a0,-48(s0) - 8020528c: fffff097 auipc ra,0xfffff - 80205290: dba080e7 jalr -582(ra) # 80204046 <fileclose> + 8020528c: fd043503 ld a0,-48(s0) + 80205290: fffff097 auipc ra,0xfffff + 80205294: dba080e7 jalr -582(ra) # 8020404a <fileclose> fileclose(wf); - 80205294: fc843503 ld a0,-56(s0) - 80205298: fffff097 auipc ra,0xfffff - 8020529c: dae080e7 jalr -594(ra) # 80204046 <fileclose> + 80205298: fc843503 ld a0,-56(s0) + 8020529c: fffff097 auipc ra,0xfffff + 802052a0: dae080e7 jalr -594(ra) # 8020404a <fileclose> return -1; - 802052a0: 57fd li a5,-1 + 802052a4: 57fd li a5,-1 } - 802052a2: 853e mv a0,a5 - 802052a4: 70e2 ld ra,56(sp) - 802052a6: 7442 ld s0,48(sp) - 802052a8: 74a2 ld s1,40(sp) - 802052aa: 6121 addi sp,sp,64 - 802052ac: 8082 ret + 802052a6: 853e mv a0,a5 + 802052a8: 70e2 ld ra,56(sp) + 802052aa: 7442 ld s0,48(sp) + 802052ac: 74a2 ld s1,40(sp) + 802052ae: 6121 addi sp,sp,64 + 802052b0: 8082 ret -00000000802052ae <sys_dev>: +00000000802052b2 <sys_dev>: // To open console device. uint64 sys_dev(void) { - 802052ae: 7179 addi sp,sp,-48 - 802052b0: f406 sd ra,40(sp) - 802052b2: f022 sd s0,32(sp) - 802052b4: ec26 sd s1,24(sp) - 802052b6: 1800 addi s0,sp,48 + 802052b2: 7179 addi sp,sp,-48 + 802052b4: f406 sd ra,40(sp) + 802052b6: f022 sd s0,32(sp) + 802052b8: ec26 sd s1,24(sp) + 802052ba: 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){ - 802052b8: fdc40593 addi a1,s0,-36 - 802052bc: 4501 li a0,0 - 802052be: ffffe097 auipc ra,0xffffe - 802052c2: 046080e7 jalr 70(ra) # 80203304 <argint> - 802052c6: 08054a63 bltz a0,8020535a <sys_dev+0xac> - 802052ca: fd840593 addi a1,s0,-40 - 802052ce: 4505 li a0,1 - 802052d0: ffffe097 auipc ra,0xffffe - 802052d4: 034080e7 jalr 52(ra) # 80203304 <argint> - 802052d8: 08054763 bltz a0,80205366 <sys_dev+0xb8> - 802052dc: fd440593 addi a1,s0,-44 - 802052e0: 4509 li a0,2 - 802052e2: ffffe097 auipc ra,0xffffe - 802052e6: 022080e7 jalr 34(ra) # 80203304 <argint> - 802052ea: 08054063 bltz a0,8020536a <sys_dev+0xbc> + 802052bc: fdc40593 addi a1,s0,-36 + 802052c0: 4501 li a0,0 + 802052c2: ffffe097 auipc ra,0xffffe + 802052c6: 046080e7 jalr 70(ra) # 80203308 <argint> + 802052ca: 08054a63 bltz a0,8020535e <sys_dev+0xac> + 802052ce: fd840593 addi a1,s0,-40 + 802052d2: 4505 li a0,1 + 802052d4: ffffe097 auipc ra,0xffffe + 802052d8: 034080e7 jalr 52(ra) # 80203308 <argint> + 802052dc: 08054763 bltz a0,8020536a <sys_dev+0xb8> + 802052e0: fd440593 addi a1,s0,-44 + 802052e4: 4509 li a0,2 + 802052e6: ffffe097 auipc ra,0xffffe + 802052ea: 022080e7 jalr 34(ra) # 80203308 <argint> + 802052ee: 08054063 bltz a0,8020536e <sys_dev+0xbc> return -1; } if(omode & O_CREATE){ - 802052ee: fdc42783 lw a5,-36(s0) - 802052f2: 2007f793 andi a5,a5,512 - 802052f6: ebb1 bnez a5,8020534a <sys_dev+0x9c> + 802052f2: fdc42783 lw a5,-36(s0) + 802052f6: 2007f793 andi a5,a5,512 + 802052fa: ebb1 bnez a5,8020534e <sys_dev+0x9c> panic("dev file on FAT"); } if(major < 0 || major >= NDEV) - 802052f8: fd842703 lw a4,-40(s0) - 802052fc: 47a5 li a5,9 + 802052fc: fd842703 lw a4,-40(s0) + 80205300: 47a5 li a5,9 return -1; - 802052fe: 557d li a0,-1 + 80205302: 557d li a0,-1 if(major < 0 || major >= NDEV) - 80205300: 04e7ee63 bltu a5,a4,8020535c <sys_dev+0xae> + 80205304: 04e7ee63 bltu a5,a4,80205360 <sys_dev+0xae> if((f = filealloc()) == NULL || (fd = fdalloc(f)) < 0){ - 80205304: fffff097 auipc ra,0xfffff - 80205308: c86080e7 jalr -890(ra) # 80203f8a <filealloc> - 8020530c: 84aa mv s1,a0 - 8020530e: c125 beqz a0,8020536e <sys_dev+0xc0> - 80205310: 00000097 auipc ra,0x0 - 80205314: 90a080e7 jalr -1782(ra) # 80204c1a <fdalloc> - 80205318: 04054d63 bltz a0,80205372 <sys_dev+0xc4> + 80205308: fffff097 auipc ra,0xfffff + 8020530c: c86080e7 jalr -890(ra) # 80203f8e <filealloc> + 80205310: 84aa mv s1,a0 + 80205312: c125 beqz a0,80205372 <sys_dev+0xc0> + 80205314: 00000097 auipc ra,0x0 + 80205318: 90a080e7 jalr -1782(ra) # 80204c1e <fdalloc> + 8020531c: 04054d63 bltz a0,80205376 <sys_dev+0xc4> if(f) fileclose(f); return -1; } f->type = FD_DEVICE; - 8020531c: 478d li a5,3 - 8020531e: c09c sw a5,0(s1) + 80205320: 478d li a5,3 + 80205322: c09c sw a5,0(s1) f->off = 0; - 80205320: 0204a023 sw zero,32(s1) + 80205324: 0204a023 sw zero,32(s1) f->ep = 0; - 80205324: 0004bc23 sd zero,24(s1) + 80205328: 0004bc23 sd zero,24(s1) f->major = major; - 80205328: fd842783 lw a5,-40(s0) - 8020532c: 02f49223 sh a5,36(s1) + 8020532c: fd842783 lw a5,-40(s0) + 80205330: 02f49223 sh a5,36(s1) f->readable = !(omode & O_WRONLY); - 80205330: fdc42783 lw a5,-36(s0) - 80205334: 0017c713 xori a4,a5,1 - 80205338: 8b05 andi a4,a4,1 - 8020533a: 00e48423 sb a4,8(s1) + 80205334: fdc42783 lw a5,-36(s0) + 80205338: 0017c713 xori a4,a5,1 + 8020533c: 8b05 andi a4,a4,1 + 8020533e: 00e48423 sb a4,8(s1) f->writable = (omode & O_WRONLY) || (omode & O_RDWR); - 8020533e: 8b8d andi a5,a5,3 - 80205340: 00f037b3 snez a5,a5 - 80205344: 00f484a3 sb a5,9(s1) + 80205342: 8b8d andi a5,a5,3 + 80205344: 00f037b3 snez a5,a5 + 80205348: 00f484a3 sb a5,9(s1) return fd; - 80205348: a811 j 8020535c <sys_dev+0xae> + 8020534c: a811 j 80205360 <sys_dev+0xae> panic("dev file on FAT"); - 8020534a: 00006517 auipc a0,0x6 - 8020534e: 9be50513 addi a0,a0,-1602 # 8020ad08 <digits+0x988> - 80205352: ffffb097 auipc ra,0xffffb - 80205356: df2080e7 jalr -526(ra) # 80200144 <panic> + 8020534e: 00006517 auipc a0,0x6 + 80205352: 9ba50513 addi a0,a0,-1606 # 8020ad08 <digits+0x988> + 80205356: ffffb097 auipc ra,0xffffb + 8020535a: dee080e7 jalr -530(ra) # 80200144 <panic> return -1; - 8020535a: 557d li a0,-1 + 8020535e: 557d li a0,-1 } - 8020535c: 70a2 ld ra,40(sp) - 8020535e: 7402 ld s0,32(sp) - 80205360: 64e2 ld s1,24(sp) - 80205362: 6145 addi sp,sp,48 - 80205364: 8082 ret + 80205360: 70a2 ld ra,40(sp) + 80205362: 7402 ld s0,32(sp) + 80205364: 64e2 ld s1,24(sp) + 80205366: 6145 addi sp,sp,48 + 80205368: 8082 ret return -1; - 80205366: 557d li a0,-1 - 80205368: bfd5 j 8020535c <sys_dev+0xae> 8020536a: 557d li a0,-1 - 8020536c: bfc5 j 8020535c <sys_dev+0xae> - return -1; + 8020536c: bfd5 j 80205360 <sys_dev+0xae> 8020536e: 557d li a0,-1 - 80205370: b7f5 j 8020535c <sys_dev+0xae> + 80205370: bfc5 j 80205360 <sys_dev+0xae> + return -1; + 80205372: 557d li a0,-1 + 80205374: b7f5 j 80205360 <sys_dev+0xae> fileclose(f); - 80205372: 8526 mv a0,s1 - 80205374: fffff097 auipc ra,0xfffff - 80205378: cd2080e7 jalr -814(ra) # 80204046 <fileclose> + 80205376: 8526 mv a0,s1 + 80205378: fffff097 auipc ra,0xfffff + 8020537c: cd2080e7 jalr -814(ra) # 8020404a <fileclose> return -1; - 8020537c: 557d li a0,-1 - 8020537e: bff9 j 8020535c <sys_dev+0xae> + 80205380: 557d li a0,-1 + 80205382: bff9 j 80205360 <sys_dev+0xae> -0000000080205380 <sys_readdir>: +0000000080205384 <sys_readdir>: // To support ls command uint64 sys_readdir(void) { - 80205380: 1101 addi sp,sp,-32 - 80205382: ec06 sd ra,24(sp) - 80205384: e822 sd s0,16(sp) - 80205386: 1000 addi s0,sp,32 + 80205384: 1101 addi sp,sp,-32 + 80205386: ec06 sd ra,24(sp) + 80205388: e822 sd s0,16(sp) + 8020538a: 1000 addi s0,sp,32 struct file *f; uint64 p; if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0) - 80205388: fe840613 addi a2,s0,-24 - 8020538c: 4581 li a1,0 - 8020538e: 4501 li a0,0 - 80205390: 00000097 auipc ra,0x0 - 80205394: 820080e7 jalr -2016(ra) # 80204bb0 <argfd> + 8020538c: fe840613 addi a2,s0,-24 + 80205390: 4581 li a1,0 + 80205392: 4501 li a0,0 + 80205394: 00000097 auipc ra,0x0 + 80205398: 820080e7 jalr -2016(ra) # 80204bb4 <argfd> return -1; - 80205398: 57fd li a5,-1 + 8020539c: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0) - 8020539a: 02054563 bltz a0,802053c4 <sys_readdir+0x44> - 8020539e: fe040593 addi a1,s0,-32 - 802053a2: 4505 li a0,1 - 802053a4: ffffe097 auipc ra,0xffffe - 802053a8: fc2080e7 jalr -62(ra) # 80203366 <argaddr> + 8020539e: 02054563 bltz a0,802053c8 <sys_readdir+0x44> + 802053a2: fe040593 addi a1,s0,-32 + 802053a6: 4505 li a0,1 + 802053a8: ffffe097 auipc ra,0xffffe + 802053ac: fc2080e7 jalr -62(ra) # 8020336a <argaddr> return -1; - 802053ac: 57fd li a5,-1 + 802053b0: 57fd li a5,-1 if(argfd(0, 0, &f) < 0 || argaddr(1, &p) < 0) - 802053ae: 00054b63 bltz a0,802053c4 <sys_readdir+0x44> + 802053b2: 00054b63 bltz a0,802053c8 <sys_readdir+0x44> return dirnext(f, p); - 802053b2: fe043583 ld a1,-32(s0) - 802053b6: fe843503 ld a0,-24(s0) - 802053ba: fffff097 auipc ra,0xfffff - 802053be: fc2080e7 jalr -62(ra) # 8020437c <dirnext> - 802053c2: 87aa mv a5,a0 + 802053b6: fe043583 ld a1,-32(s0) + 802053ba: fe843503 ld a0,-24(s0) + 802053be: fffff097 auipc ra,0xfffff + 802053c2: fc2080e7 jalr -62(ra) # 80204380 <dirnext> + 802053c6: 87aa mv a5,a0 } - 802053c4: 853e mv a0,a5 - 802053c6: 60e2 ld ra,24(sp) - 802053c8: 6442 ld s0,16(sp) - 802053ca: 6105 addi sp,sp,32 - 802053cc: 8082 ret + 802053c8: 853e mv a0,a5 + 802053ca: 60e2 ld ra,24(sp) + 802053cc: 6442 ld s0,16(sp) + 802053ce: 6105 addi sp,sp,32 + 802053d0: 8082 ret -00000000802053ce <sys_getcwd>: +00000000802053d2 <sys_getcwd>: // get absolute cwd string uint64 sys_getcwd(void) { - 802053ce: 714d addi sp,sp,-336 - 802053d0: e686 sd ra,328(sp) - 802053d2: e2a2 sd s0,320(sp) - 802053d4: fe26 sd s1,312(sp) - 802053d6: fa4a sd s2,304(sp) - 802053d8: f64e sd s3,296(sp) - 802053da: f252 sd s4,288(sp) - 802053dc: ee56 sd s5,280(sp) - 802053de: 0a80 addi s0,sp,336 + 802053d2: 714d addi sp,sp,-336 + 802053d4: e686 sd ra,328(sp) + 802053d6: e2a2 sd s0,320(sp) + 802053d8: fe26 sd s1,312(sp) + 802053da: fa4a sd s2,304(sp) + 802053dc: f64e sd s3,296(sp) + 802053de: f252 sd s4,288(sp) + 802053e0: ee56 sd s5,280(sp) + 802053e2: 0a80 addi s0,sp,336 uint64 addr; int size; if (argaddr(0, &addr) < 0 || argint(1, &size) < 0) - 802053e0: fb840593 addi a1,s0,-72 - 802053e4: 4501 li a0,0 - 802053e6: ffffe097 auipc ra,0xffffe - 802053ea: f80080e7 jalr -128(ra) # 80203366 <argaddr> + 802053e4: fb840593 addi a1,s0,-72 + 802053e8: 4501 li a0,0 + 802053ea: ffffe097 auipc ra,0xffffe + 802053ee: f80080e7 jalr -128(ra) # 8020336a <argaddr> return NULL; - 802053ee: 4781 li a5,0 + 802053f2: 4781 li a5,0 if (argaddr(0, &addr) < 0 || argint(1, &size) < 0) - 802053f0: 0a054b63 bltz a0,802054a6 <sys_getcwd+0xd8> - 802053f4: fb440593 addi a1,s0,-76 - 802053f8: 4505 li a0,1 - 802053fa: ffffe097 auipc ra,0xffffe - 802053fe: f0a080e7 jalr -246(ra) # 80203304 <argint> + 802053f4: 0a054b63 bltz a0,802054aa <sys_getcwd+0xd8> + 802053f8: fb440593 addi a1,s0,-76 + 802053fc: 4505 li a0,1 + 802053fe: ffffe097 auipc ra,0xffffe + 80205402: f0a080e7 jalr -246(ra) # 80203308 <argint> return NULL; - 80205402: 4781 li a5,0 + 80205406: 4781 li a5,0 if (argaddr(0, &addr) < 0 || argint(1, &size) < 0) - 80205404: 0a054163 bltz a0,802054a6 <sys_getcwd+0xd8> + 80205408: 0a054163 bltz a0,802054aa <sys_getcwd+0xd8> struct dirent *de = myproc()->cwd; - 80205408: ffffc097 auipc ra,0xffffc - 8020540c: 634080e7 jalr 1588(ra) # 80201a3c <myproc> - 80205410: 40053483 ld s1,1024(a0) + 8020540c: ffffc097 auipc ra,0xffffc + 80205410: 630080e7 jalr 1584(ra) # 80201a3c <myproc> + 80205414: 40053483 ld s1,1024(a0) char path[FAT32_MAX_PATH]; char *s; int len; if (de->parent == NULL) { - 80205414: 1204b783 ld a5,288(s1) - 80205418: c3c9 beqz a5,8020549a <sys_getcwd+0xcc> + 80205418: 1204b783 ld a5,288(s1) + 8020541c: c3c9 beqz a5,8020549e <sys_getcwd+0xcc> s = "/"; } else { s = path + FAT32_MAX_PATH - 1; *s = '\0'; - 8020541a: fa0409a3 sb zero,-77(s0) + 8020541e: fa0409a3 sb zero,-77(s0) s = path + FAT32_MAX_PATH - 1; - 8020541e: fb340993 addi s3,s0,-77 + 80205422: fb340993 addi s3,s0,-77 while (de->parent) { len = strlen(de->filename); s -= len; if (s <= path) // can't reach root "/" - 80205422: eb040a13 addi s4,s0,-336 + 80205426: eb040a13 addi s4,s0,-336 return NULL; strncpy(s, de->filename, len); *--s = '/'; - 80205426: 02f00a93 li s5,47 + 8020542a: 02f00a93 li s5,47 len = strlen(de->filename); - 8020542a: 8526 mv a0,s1 - 8020542c: ffffb097 auipc ra,0xffffb - 80205430: 4ba080e7 jalr 1210(ra) # 802008e6 <strlen> - 80205434: 862a mv a2,a0 + 8020542e: 8526 mv a0,s1 + 80205430: ffffb097 auipc ra,0xffffb + 80205434: 4b6080e7 jalr 1206(ra) # 802008e6 <strlen> + 80205438: 862a mv a2,a0 s -= len; - 80205436: 40a98933 sub s2,s3,a0 + 8020543a: 40a98933 sub s2,s3,a0 if (s <= path) // can't reach root "/" - 8020543a: 072a7563 bgeu s4,s2,802054a4 <sys_getcwd+0xd6> + 8020543e: 072a7563 bgeu s4,s2,802054a8 <sys_getcwd+0xd6> strncpy(s, de->filename, len); - 8020543e: 85a6 mv a1,s1 - 80205440: 854a mv a0,s2 - 80205442: ffffb097 auipc ra,0xffffb - 80205446: 434080e7 jalr 1076(ra) # 80200876 <strncpy> + 80205442: 85a6 mv a1,s1 + 80205444: 854a mv a0,s2 + 80205446: ffffb097 auipc ra,0xffffb + 8020544a: 430080e7 jalr 1072(ra) # 80200876 <strncpy> *--s = '/'; - 8020544a: fff90993 addi s3,s2,-1 - 8020544e: ff590fa3 sb s5,-1(s2) + 8020544e: fff90993 addi s3,s2,-1 + 80205452: ff590fa3 sb s5,-1(s2) de = de->parent; - 80205452: 1204b483 ld s1,288(s1) + 80205456: 1204b483 ld s1,288(s1) while (de->parent) { - 80205456: 1204b783 ld a5,288(s1) - 8020545a: fbe1 bnez a5,8020542a <sys_getcwd+0x5c> + 8020545a: 1204b783 ld a5,288(s1) + 8020545e: fbe1 bnez a5,8020542e <sys_getcwd+0x5c> } } int length; if ((strlen(s) + 1)<size){ - 8020545c: 854e mv a0,s3 - 8020545e: ffffb097 auipc ra,0xffffb - 80205462: 488080e7 jalr 1160(ra) # 802008e6 <strlen> - 80205466: 2505 addiw a0,a0,1 - 80205468: fb442703 lw a4,-76(s0) + 80205460: 854e mv a0,s3 + 80205462: ffffb097 auipc ra,0xffffb + 80205466: 484080e7 jalr 1156(ra) # 802008e6 <strlen> + 8020546a: 2505 addiw a0,a0,1 + 8020546c: fb442703 lw a4,-76(s0) length = strlen(s) + 1; } else{ return NULL; - 8020546c: 4781 li a5,0 + 80205470: 4781 li a5,0 if ((strlen(s) + 1)<size){ - 8020546e: 02e55c63 bge a0,a4,802054a6 <sys_getcwd+0xd8> + 80205472: 02e55c63 bge a0,a4,802054aa <sys_getcwd+0xd8> length = strlen(s) + 1; - 80205472: 854e mv a0,s3 - 80205474: ffffb097 auipc ra,0xffffb - 80205478: 472080e7 jalr 1138(ra) # 802008e6 <strlen> + 80205476: 854e mv a0,s3 + 80205478: ffffb097 auipc ra,0xffffb + 8020547c: 46e080e7 jalr 1134(ra) # 802008e6 <strlen> } // if (copyout(myproc()->pagetable, addr, s, strlen(s) + 1) < 0) if (copyout2(addr, s, length) < 0) - 8020547c: 0015061b addiw a2,a0,1 - 80205480: 85ce mv a1,s3 - 80205482: fb843503 ld a0,-72(s0) - 80205486: ffffc097 auipc ra,0xffffc - 8020548a: eec080e7 jalr -276(ra) # 80201372 <copyout2> + 80205480: 0015061b addiw a2,a0,1 + 80205484: 85ce mv a1,s3 + 80205486: fb843503 ld a0,-72(s0) + 8020548a: ffffc097 auipc ra,0xffffc + 8020548e: ee8080e7 jalr -280(ra) # 80201372 <copyout2> return NULL; - 8020548e: 4781 li a5,0 + 80205492: 4781 li a5,0 if (copyout2(addr, s, length) < 0) - 80205490: 00054b63 bltz a0,802054a6 <sys_getcwd+0xd8> + 80205494: 00054b63 bltz a0,802054aa <sys_getcwd+0xd8> return addr; - 80205494: fb843783 ld a5,-72(s0) - 80205498: a039 j 802054a6 <sys_getcwd+0xd8> + 80205498: fb843783 ld a5,-72(s0) + 8020549c: a039 j 802054aa <sys_getcwd+0xd8> s = "/"; - 8020549a: 00005997 auipc s3,0x5 - 8020549e: 19698993 addi s3,s3,406 # 8020a630 <digits+0x2b0> - 802054a2: bf6d j 8020545c <sys_getcwd+0x8e> + 8020549e: 00005997 auipc s3,0x5 + 802054a2: 19298993 addi s3,s3,402 # 8020a630 <digits+0x2b0> + 802054a6: bf6d j 80205460 <sys_getcwd+0x8e> return NULL; - 802054a4: 4781 li a5,0 + 802054a8: 4781 li a5,0 } - 802054a6: 853e mv a0,a5 - 802054a8: 60b6 ld ra,328(sp) - 802054aa: 6416 ld s0,320(sp) - 802054ac: 74f2 ld s1,312(sp) - 802054ae: 7952 ld s2,304(sp) - 802054b0: 79b2 ld s3,296(sp) - 802054b2: 7a12 ld s4,288(sp) - 802054b4: 6af2 ld s5,280(sp) - 802054b6: 6171 addi sp,sp,336 - 802054b8: 8082 ret - -00000000802054ba <sys_remove>: + 802054aa: 853e mv a0,a5 + 802054ac: 60b6 ld ra,328(sp) + 802054ae: 6416 ld s0,320(sp) + 802054b0: 74f2 ld s1,312(sp) + 802054b2: 7952 ld s2,304(sp) + 802054b4: 79b2 ld s3,296(sp) + 802054b6: 7a12 ld s4,288(sp) + 802054b8: 6af2 ld s5,280(sp) + 802054ba: 6171 addi sp,sp,336 + 802054bc: 8082 ret + +00000000802054be <sys_remove>: return ret == -1; } uint64 sys_remove(void) { - 802054ba: d6010113 addi sp,sp,-672 - 802054be: 28113c23 sd ra,664(sp) - 802054c2: 28813823 sd s0,656(sp) - 802054c6: 28913423 sd s1,648(sp) - 802054ca: 1500 addi s0,sp,672 + 802054be: d6010113 addi sp,sp,-672 + 802054c2: 28113c23 sd ra,664(sp) + 802054c6: 28813823 sd s0,656(sp) + 802054ca: 28913423 sd s1,648(sp) + 802054ce: 1500 addi s0,sp,672 char path[FAT32_MAX_PATH]; struct dirent *ep; int len; if((len = argstr(0, path, FAT32_MAX_PATH)) <= 0) - 802054cc: 10400613 li a2,260 - 802054d0: ed840593 addi a1,s0,-296 - 802054d4: 4501 li a0,0 - 802054d6: ffffe097 auipc ra,0xffffe - 802054da: eb2080e7 jalr -334(ra) # 80203388 <argstr> - 802054de: 0ea05a63 blez a0,802055d2 <sys_remove+0x118> + 802054d0: 10400613 li a2,260 + 802054d4: ed840593 addi a1,s0,-296 + 802054d8: 4501 li a0,0 + 802054da: ffffe097 auipc ra,0xffffe + 802054de: eb2080e7 jalr -334(ra) # 8020338c <argstr> + 802054e2: 0ea05a63 blez a0,802055d6 <sys_remove+0x118> return -1; char *s = path + len - 1; - 802054e2: 157d addi a0,a0,-1 - 802054e4: ed840713 addi a4,s0,-296 - 802054e8: 00a707b3 add a5,a4,a0 + 802054e6: 157d addi a0,a0,-1 + 802054e8: ed840713 addi a4,s0,-296 + 802054ec: 00a707b3 add a5,a4,a0 while (s >= path && *s == '/') { - 802054ec: 02f00693 li a3,47 - 802054f0: 863a mv a2,a4 - 802054f2: 00e7e963 bltu a5,a4,80205504 <sys_remove+0x4a> - 802054f6: 0007c703 lbu a4,0(a5) - 802054fa: 08d71a63 bne a4,a3,8020558e <sys_remove+0xd4> + 802054f0: 02f00693 li a3,47 + 802054f4: 863a mv a2,a4 + 802054f6: 00e7e963 bltu a5,a4,80205508 <sys_remove+0x4a> + 802054fa: 0007c703 lbu a4,0(a5) + 802054fe: 08d71a63 bne a4,a3,80205592 <sys_remove+0xd4> s--; - 802054fe: 17fd addi a5,a5,-1 + 80205502: 17fd addi a5,a5,-1 while (s >= path && *s == '/') { - 80205500: fec7fbe3 bgeu a5,a2,802054f6 <sys_remove+0x3c> + 80205504: fec7fbe3 bgeu a5,a2,802054fa <sys_remove+0x3c> } if (s >= path && *s == '.' && (s == path || *--s == '/')) { return -1; } if((ep = ename(path)) == NULL){ - 80205504: ed840513 addi a0,s0,-296 - 80205508: 00002097 auipc ra,0x2 - 8020550c: 35e080e7 jalr 862(ra) # 80207866 <ename> - 80205510: 84aa mv s1,a0 - 80205512: c561 beqz a0,802055da <sys_remove+0x120> + 80205508: ed840513 addi a0,s0,-296 + 8020550c: 00002097 auipc ra,0x2 + 80205510: 31a080e7 jalr 794(ra) # 80207826 <ename> + 80205514: 84aa mv s1,a0 + 80205516: c561 beqz a0,802055de <sys_remove+0x120> return -1; } elock(ep); - 80205514: 00002097 auipc ra,0x2 - 80205518: baa080e7 jalr -1110(ra) # 802070be <elock> + 80205518: 00002097 auipc ra,0x2 + 8020551c: b66080e7 jalr -1178(ra) # 8020707e <elock> if((ep->attribute & ATTR_DIRECTORY) && !isdirempty(ep)){ - 8020551c: 1004c783 lbu a5,256(s1) - 80205520: 8bc1 andi a5,a5,16 - 80205522: c38d beqz a5,80205544 <sys_remove+0x8a> + 80205520: 1004c783 lbu a5,256(s1) + 80205524: 8bc1 andi a5,a5,16 + 80205526: c38d beqz a5,80205548 <sys_remove+0x8a> ep.valid = 0; - 80205524: e8041323 sh zero,-378(s0) + 80205528: e8041323 sh zero,-378(s0) ret = enext(dp, &ep, 2 * 32, &count); // skip the "." and ".." - 80205528: d6c40693 addi a3,s0,-660 - 8020552c: 04000613 li a2,64 - 80205530: d7040593 addi a1,s0,-656 - 80205534: 8526 mv a0,s1 - 80205536: 00002097 auipc ra,0x2 - 8020553a: d8c080e7 jalr -628(ra) # 802072c2 <enext> + 8020552c: d6c40693 addi a3,s0,-660 + 80205530: 04000613 li a2,64 + 80205534: d7040593 addi a1,s0,-656 + 80205538: 8526 mv a0,s1 + 8020553a: 00002097 auipc ra,0x2 + 8020553e: d48080e7 jalr -696(ra) # 80207282 <enext> if((ep->attribute & ATTR_DIRECTORY) && !isdirempty(ep)){ - 8020553e: 57fd li a5,-1 - 80205540: 06f51d63 bne a0,a5,802055ba <sys_remove+0x100> + 80205542: 57fd li a5,-1 + 80205544: 06f51d63 bne a0,a5,802055be <sys_remove+0x100> eunlock(ep); eput(ep); return -1; } elock(ep->parent); // Will this lead to deadlock? - 80205544: 1204b503 ld a0,288(s1) - 80205548: 00002097 auipc ra,0x2 - 8020554c: b76080e7 jalr -1162(ra) # 802070be <elock> + 80205548: 1204b503 ld a0,288(s1) + 8020554c: 00002097 auipc ra,0x2 + 80205550: b32080e7 jalr -1230(ra) # 8020707e <elock> eremove(ep); - 80205550: 8526 mv a0,s1 - 80205552: 00002097 auipc ra,0x2 - 80205556: a38080e7 jalr -1480(ra) # 80206f8a <eremove> + 80205554: 8526 mv a0,s1 + 80205556: 00002097 auipc ra,0x2 + 8020555a: 9f4080e7 jalr -1548(ra) # 80206f4a <eremove> eunlock(ep->parent); - 8020555a: 1204b503 ld a0,288(s1) - 8020555e: 00002097 auipc ra,0x2 - 80205562: b96080e7 jalr -1130(ra) # 802070f4 <eunlock> + 8020555e: 1204b503 ld a0,288(s1) + 80205562: 00002097 auipc ra,0x2 + 80205566: b52080e7 jalr -1198(ra) # 802070b4 <eunlock> eunlock(ep); - 80205566: 8526 mv a0,s1 - 80205568: 00002097 auipc ra,0x2 - 8020556c: b8c080e7 jalr -1140(ra) # 802070f4 <eunlock> + 8020556a: 8526 mv a0,s1 + 8020556c: 00002097 auipc ra,0x2 + 80205570: b48080e7 jalr -1208(ra) # 802070b4 <eunlock> eput(ep); - 80205570: 8526 mv a0,s1 - 80205572: 00002097 auipc ra,0x2 - 80205576: bd0080e7 jalr -1072(ra) # 80207142 <eput> + 80205574: 8526 mv a0,s1 + 80205576: 00002097 auipc ra,0x2 + 8020557a: b8c080e7 jalr -1140(ra) # 80207102 <eput> return 0; - 8020557a: 4501 li a0,0 + 8020557e: 4501 li a0,0 } - 8020557c: 29813083 ld ra,664(sp) - 80205580: 29013403 ld s0,656(sp) - 80205584: 28813483 ld s1,648(sp) - 80205588: 2a010113 addi sp,sp,672 - 8020558c: 8082 ret + 80205580: 29813083 ld ra,664(sp) + 80205584: 29013403 ld s0,656(sp) + 80205588: 28813483 ld s1,648(sp) + 8020558c: 2a010113 addi sp,sp,672 + 80205590: 8082 ret if (s >= path && *s == '.' && (s == path || *--s == '/')) { - 8020558e: ed840713 addi a4,s0,-296 - 80205592: f6e7e9e3 bltu a5,a4,80205504 <sys_remove+0x4a> - 80205596: 0007c683 lbu a3,0(a5) - 8020559a: 02e00713 li a4,46 - 8020559e: f6e693e3 bne a3,a4,80205504 <sys_remove+0x4a> - 802055a2: ed840713 addi a4,s0,-296 - 802055a6: 02e78863 beq a5,a4,802055d6 <sys_remove+0x11c> - 802055aa: fff7c703 lbu a4,-1(a5) - 802055ae: 02f00793 li a5,47 - 802055b2: f4f719e3 bne a4,a5,80205504 <sys_remove+0x4a> + 80205592: ed840713 addi a4,s0,-296 + 80205596: f6e7e9e3 bltu a5,a4,80205508 <sys_remove+0x4a> + 8020559a: 0007c683 lbu a3,0(a5) + 8020559e: 02e00713 li a4,46 + 802055a2: f6e693e3 bne a3,a4,80205508 <sys_remove+0x4a> + 802055a6: ed840713 addi a4,s0,-296 + 802055aa: 02e78863 beq a5,a4,802055da <sys_remove+0x11c> + 802055ae: fff7c703 lbu a4,-1(a5) + 802055b2: 02f00793 li a5,47 + 802055b6: f4f719e3 bne a4,a5,80205508 <sys_remove+0x4a> return -1; - 802055b6: 557d li a0,-1 - 802055b8: b7d1 j 8020557c <sys_remove+0xc2> + 802055ba: 557d li a0,-1 + 802055bc: b7d1 j 80205580 <sys_remove+0xc2> eunlock(ep); - 802055ba: 8526 mv a0,s1 - 802055bc: 00002097 auipc ra,0x2 - 802055c0: b38080e7 jalr -1224(ra) # 802070f4 <eunlock> + 802055be: 8526 mv a0,s1 + 802055c0: 00002097 auipc ra,0x2 + 802055c4: af4080e7 jalr -1292(ra) # 802070b4 <eunlock> eput(ep); - 802055c4: 8526 mv a0,s1 - 802055c6: 00002097 auipc ra,0x2 - 802055ca: b7c080e7 jalr -1156(ra) # 80207142 <eput> + 802055c8: 8526 mv a0,s1 + 802055ca: 00002097 auipc ra,0x2 + 802055ce: b38080e7 jalr -1224(ra) # 80207102 <eput> return -1; - 802055ce: 557d li a0,-1 - 802055d0: b775 j 8020557c <sys_remove+0xc2> - return -1; 802055d2: 557d li a0,-1 - 802055d4: b765 j 8020557c <sys_remove+0xc2> + 802055d4: b775 j 80205580 <sys_remove+0xc2> return -1; 802055d6: 557d li a0,-1 - 802055d8: b755 j 8020557c <sys_remove+0xc2> + 802055d8: b765 j 80205580 <sys_remove+0xc2> return -1; 802055da: 557d li a0,-1 - 802055dc: b745 j 8020557c <sys_remove+0xc2> + 802055dc: b755 j 80205580 <sys_remove+0xc2> + return -1; + 802055de: 557d li a0,-1 + 802055e0: b745 j 80205580 <sys_remove+0xc2> -00000000802055de <sys_rename>: +00000000802055e2 <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) { - 802055de: c4010113 addi sp,sp,-960 - 802055e2: 3a113c23 sd ra,952(sp) - 802055e6: 3a813823 sd s0,944(sp) - 802055ea: 3a913423 sd s1,936(sp) - 802055ee: 3b213023 sd s2,928(sp) - 802055f2: 39313c23 sd s3,920(sp) - 802055f6: 39413823 sd s4,912(sp) - 802055fa: 0780 addi s0,sp,960 + 802055e2: c4010113 addi sp,sp,-960 + 802055e6: 3a113c23 sd ra,952(sp) + 802055ea: 3a813823 sd s0,944(sp) + 802055ee: 3a913423 sd s1,936(sp) + 802055f2: 3b213023 sd s2,928(sp) + 802055f6: 39313c23 sd s3,920(sp) + 802055fa: 39413823 sd s4,912(sp) + 802055fe: 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) { - 802055fc: 10400613 li a2,260 - 80205600: ec840593 addi a1,s0,-312 - 80205604: 4501 li a0,0 - 80205606: ffffe097 auipc ra,0xffffe - 8020560a: d82080e7 jalr -638(ra) # 80203388 <argstr> + 80205600: 10400613 li a2,260 + 80205604: ec840593 addi a1,s0,-312 + 80205608: 4501 li a0,0 + 8020560a: ffffe097 auipc ra,0xffffe + 8020560e: d82080e7 jalr -638(ra) # 8020338c <argstr> return -1; - 8020560e: 57fd li a5,-1 + 80205612: 57fd li a5,-1 if (argstr(0, old, FAT32_MAX_PATH) < 0 || argstr(1, new, FAT32_MAX_PATH) < 0) { - 80205610: 0c054d63 bltz a0,802056ea <sys_rename+0x10c> - 80205614: 10400613 li a2,260 - 80205618: dc040593 addi a1,s0,-576 - 8020561c: 4505 li a0,1 - 8020561e: ffffe097 auipc ra,0xffffe - 80205622: d6a080e7 jalr -662(ra) # 80203388 <argstr> + 80205614: 0c054d63 bltz a0,802056ee <sys_rename+0x10c> + 80205618: 10400613 li a2,260 + 8020561c: dc040593 addi a1,s0,-576 + 80205620: 4505 li a0,1 + 80205622: ffffe097 auipc ra,0xffffe + 80205626: d6a080e7 jalr -662(ra) # 8020338c <argstr> return -1; - 80205626: 57fd li a5,-1 + 8020562a: 57fd li a5,-1 if (argstr(0, old, FAT32_MAX_PATH) < 0 || argstr(1, new, FAT32_MAX_PATH) < 0) { - 80205628: 0c054163 bltz a0,802056ea <sys_rename+0x10c> + 8020562c: 0c054163 bltz a0,802056ee <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 - 8020562c: ec840513 addi a0,s0,-312 - 80205630: 00002097 auipc ra,0x2 - 80205634: 236080e7 jalr 566(ra) # 80207866 <ename> - 80205638: 84aa mv s1,a0 - 8020563a: 1c050963 beqz a0,8020580c <sys_rename+0x22e> - 8020563e: ec840593 addi a1,s0,-312 - 80205642: dc040513 addi a0,s0,-576 - 80205646: 00002097 auipc ra,0x2 - 8020564a: 23e080e7 jalr 574(ra) # 80207884 <enameparent> - 8020564e: 892a mv s2,a0 - 80205650: cd35 beqz a0,802056cc <sys_rename+0xee> + 80205630: ec840513 addi a0,s0,-312 + 80205634: 00002097 auipc ra,0x2 + 80205638: 1f2080e7 jalr 498(ra) # 80207826 <ename> + 8020563c: 84aa mv s1,a0 + 8020563e: 1c050963 beqz a0,80205810 <sys_rename+0x22e> + 80205642: ec840593 addi a1,s0,-312 + 80205646: dc040513 addi a0,s0,-576 + 8020564a: 00002097 auipc ra,0x2 + 8020564e: 1fa080e7 jalr 506(ra) # 80207844 <enameparent> + 80205652: 892a mv s2,a0 + 80205654: cd35 beqz a0,802056d0 <sys_rename+0xee> || (name = formatname(old)) == NULL) { - 80205652: ec840513 addi a0,s0,-312 - 80205656: 00001097 auipc ra,0x1 - 8020565a: 388080e7 jalr 904(ra) # 802069de <formatname> - 8020565e: 89aa mv s3,a0 - 80205660: c535 beqz a0,802056cc <sys_rename+0xee> + 80205656: ec840513 addi a0,s0,-312 + 8020565a: 00001097 auipc ra,0x1 + 8020565e: 344080e7 jalr 836(ra) # 8020699e <formatname> + 80205662: 89aa mv s3,a0 + 80205664: c535 beqz a0,802056d0 <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? - 80205662: 07248563 beq s1,s2,802056cc <sys_rename+0xee> + 80205666: 07248563 beq s1,s2,802056d0 <sys_rename+0xee> for (struct dirent *ep = pdst; ep != NULL; ep = ep->parent) { - 80205666: 87ca mv a5,s2 - 80205668: 1207b783 ld a5,288(a5) - 8020566c: c781 beqz a5,80205674 <sys_rename+0x96> + 8020566a: 87ca mv a5,s2 + 8020566c: 1207b783 ld a5,288(a5) + 80205670: c781 beqz a5,80205678 <sys_rename+0x96> if (ep == src) { // In what universe can we move a directory into its child? - 8020566e: fef49de3 bne s1,a5,80205668 <sys_rename+0x8a> - 80205672: a8a9 j 802056cc <sys_rename+0xee> + 80205672: fef49de3 bne s1,a5,8020566c <sys_rename+0x8a> + 80205676: a8a9 j 802056d0 <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 - 80205674: 8526 mv a0,s1 - 80205676: 00002097 auipc ra,0x2 - 8020567a: a48080e7 jalr -1464(ra) # 802070be <elock> + 80205678: 8526 mv a0,s1 + 8020567a: 00002097 auipc ra,0x2 + 8020567e: a04080e7 jalr -1532(ra) # 8020707e <elock> srclock = 1; elock(pdst); - 8020567e: 854a mv a0,s2 - 80205680: 00002097 auipc ra,0x2 - 80205684: a3e080e7 jalr -1474(ra) # 802070be <elock> + 80205682: 854a mv a0,s2 + 80205684: 00002097 auipc ra,0x2 + 80205688: 9fa080e7 jalr -1542(ra) # 8020707e <elock> dst = dirlookup(pdst, name, &off); - 80205688: dbc40613 addi a2,s0,-580 - 8020568c: 85ce mv a1,s3 - 8020568e: 854a mv a0,s2 - 80205690: 00002097 auipc ra,0x2 - 80205694: dbc080e7 jalr -580(ra) # 8020744c <dirlookup> - 80205698: 8a2a mv s4,a0 + 8020568c: dbc40613 addi a2,s0,-580 + 80205690: 85ce mv a1,s3 + 80205692: 854a mv a0,s2 + 80205694: 00002097 auipc ra,0x2 + 80205698: d78080e7 jalr -648(ra) # 8020740c <dirlookup> + 8020569c: 8a2a mv s4,a0 if (dst != NULL) { - 8020569a: cd45 beqz a0,80205752 <sys_rename+0x174> + 8020569e: cd45 beqz a0,80205756 <sys_rename+0x174> eunlock(pdst); - 8020569c: 854a mv a0,s2 - 8020569e: 00002097 auipc ra,0x2 - 802056a2: a56080e7 jalr -1450(ra) # 802070f4 <eunlock> + 802056a0: 854a mv a0,s2 + 802056a2: 00002097 auipc ra,0x2 + 802056a6: a12080e7 jalr -1518(ra) # 802070b4 <eunlock> if (src == dst) { - 802056a6: 01448963 beq s1,s4,802056b8 <sys_rename+0xda> + 802056aa: 01448963 beq s1,s4,802056bc <sys_rename+0xda> goto fail; } else if (src->attribute & dst->attribute & ATTR_DIRECTORY) { - 802056aa: 1004c783 lbu a5,256(s1) - 802056ae: 100a4703 lbu a4,256(s4) - 802056b2: 8ff9 and a5,a5,a4 - 802056b4: 8bc1 andi a5,a5,16 - 802056b6: ebb1 bnez a5,8020570a <sys_rename+0x12c> + 802056ae: 1004c783 lbu a5,256(s1) + 802056b2: 100a4703 lbu a4,256(s4) + 802056b6: 8ff9 and a5,a5,a4 + 802056b8: 8bc1 andi a5,a5,16 + 802056ba: ebb1 bnez a5,8020570e <sys_rename+0x12c> return 0; fail: if (srclock) eunlock(src); - 802056b8: 8526 mv a0,s1 - 802056ba: 00002097 auipc ra,0x2 - 802056be: a3a080e7 jalr -1478(ra) # 802070f4 <eunlock> + 802056bc: 8526 mv a0,s1 + 802056be: 00002097 auipc ra,0x2 + 802056c2: 9f6080e7 jalr -1546(ra) # 802070b4 <eunlock> if (dst) eput(dst); - 802056c2: 8552 mv a0,s4 - 802056c4: 00002097 auipc ra,0x2 - 802056c8: a7e080e7 jalr -1410(ra) # 80207142 <eput> + 802056c6: 8552 mv a0,s4 + 802056c8: 00002097 auipc ra,0x2 + 802056cc: a3a080e7 jalr -1478(ra) # 80207102 <eput> if (pdst) - 802056cc: 00090763 beqz s2,802056da <sys_rename+0xfc> + 802056d0: 00090763 beqz s2,802056de <sys_rename+0xfc> eput(pdst); - 802056d0: 854a mv a0,s2 - 802056d2: 00002097 auipc ra,0x2 - 802056d6: a70080e7 jalr -1424(ra) # 80207142 <eput> + 802056d4: 854a mv a0,s2 + 802056d6: 00002097 auipc ra,0x2 + 802056da: a2c080e7 jalr -1492(ra) # 80207102 <eput> if (src) eput(src); return -1; - 802056da: 57fd li a5,-1 + 802056de: 57fd li a5,-1 if (src) - 802056dc: c499 beqz s1,802056ea <sys_rename+0x10c> + 802056e0: c499 beqz s1,802056ee <sys_rename+0x10c> eput(src); - 802056de: 8526 mv a0,s1 - 802056e0: 00002097 auipc ra,0x2 - 802056e4: a62080e7 jalr -1438(ra) # 80207142 <eput> + 802056e2: 8526 mv a0,s1 + 802056e4: 00002097 auipc ra,0x2 + 802056e8: a1e080e7 jalr -1506(ra) # 80207102 <eput> return -1; - 802056e8: 57fd li a5,-1 + 802056ec: 57fd li a5,-1 } - 802056ea: 853e mv a0,a5 - 802056ec: 3b813083 ld ra,952(sp) - 802056f0: 3b013403 ld s0,944(sp) - 802056f4: 3a813483 ld s1,936(sp) - 802056f8: 3a013903 ld s2,928(sp) - 802056fc: 39813983 ld s3,920(sp) - 80205700: 39013a03 ld s4,912(sp) - 80205704: 3c010113 addi sp,sp,960 - 80205708: 8082 ret + 802056ee: 853e mv a0,a5 + 802056f0: 3b813083 ld ra,952(sp) + 802056f4: 3b013403 ld s0,944(sp) + 802056f8: 3a813483 ld s1,936(sp) + 802056fc: 3a013903 ld s2,928(sp) + 80205700: 39813983 ld s3,920(sp) + 80205704: 39013a03 ld s4,912(sp) + 80205708: 3c010113 addi sp,sp,960 + 8020570c: 8082 ret elock(dst); - 8020570a: 8552 mv a0,s4 - 8020570c: 00002097 auipc ra,0x2 - 80205710: 9b2080e7 jalr -1614(ra) # 802070be <elock> + 8020570e: 8552 mv a0,s4 + 80205710: 00002097 auipc ra,0x2 + 80205714: 96e080e7 jalr -1682(ra) # 8020707e <elock> ep.valid = 0; - 80205714: d6041323 sh zero,-666(s0) + 80205718: d6041323 sh zero,-666(s0) ret = enext(dp, &ep, 2 * 32, &count); // skip the "." and ".." - 80205718: c4c40693 addi a3,s0,-948 - 8020571c: 04000613 li a2,64 - 80205720: c5040593 addi a1,s0,-944 - 80205724: 8552 mv a0,s4 - 80205726: 00002097 auipc ra,0x2 - 8020572a: b9c080e7 jalr -1124(ra) # 802072c2 <enext> + 8020571c: c4c40693 addi a3,s0,-948 + 80205720: 04000613 li a2,64 + 80205724: c5040593 addi a1,s0,-944 + 80205728: 8552 mv a0,s4 + 8020572a: 00002097 auipc ra,0x2 + 8020572e: b58080e7 jalr -1192(ra) # 80207282 <enext> if (!isdirempty(dst)) { // it's ok to overwrite an empty dir - 8020572e: 57fd li a5,-1 - 80205730: 0cf51863 bne a0,a5,80205800 <sys_rename+0x222> + 80205732: 57fd li a5,-1 + 80205734: 0cf51863 bne a0,a5,80205804 <sys_rename+0x222> elock(pdst); - 80205734: 854a mv a0,s2 - 80205736: 00002097 auipc ra,0x2 - 8020573a: 988080e7 jalr -1656(ra) # 802070be <elock> + 80205738: 854a mv a0,s2 + 8020573a: 00002097 auipc ra,0x2 + 8020573e: 944080e7 jalr -1724(ra) # 8020707e <elock> eremove(dst); - 8020573e: 8552 mv a0,s4 - 80205740: 00002097 auipc ra,0x2 - 80205744: 84a080e7 jalr -1974(ra) # 80206f8a <eremove> + 80205742: 8552 mv a0,s4 + 80205744: 00002097 auipc ra,0x2 + 80205748: 806080e7 jalr -2042(ra) # 80206f4a <eremove> eunlock(dst); - 80205748: 8552 mv a0,s4 - 8020574a: 00002097 auipc ra,0x2 - 8020574e: 9aa080e7 jalr -1622(ra) # 802070f4 <eunlock> + 8020574c: 8552 mv a0,s4 + 8020574e: 00002097 auipc ra,0x2 + 80205752: 966080e7 jalr -1690(ra) # 802070b4 <eunlock> memmove(src->filename, name, FAT32_MAX_FILENAME); - 80205752: 0ff00613 li a2,255 - 80205756: 85ce mv a1,s3 - 80205758: 8526 mv a0,s1 - 8020575a: ffffb097 auipc ra,0xffffb - 8020575e: 064080e7 jalr 100(ra) # 802007be <memmove> + 80205756: 0ff00613 li a2,255 + 8020575a: 85ce mv a1,s3 + 8020575c: 8526 mv a0,s1 + 8020575e: ffffb097 auipc ra,0xffffb + 80205762: 060080e7 jalr 96(ra) # 802007be <memmove> emake(pdst, src, off); - 80205762: dbc42603 lw a2,-580(s0) - 80205766: 85a6 mv a1,s1 - 80205768: 854a mv a0,s2 - 8020576a: 00001097 auipc ra,0x1 - 8020576e: 32c080e7 jalr 812(ra) # 80206a96 <emake> + 80205766: dbc42603 lw a2,-580(s0) + 8020576a: 85a6 mv a1,s1 + 8020576c: 854a mv a0,s2 + 8020576e: 00001097 auipc ra,0x1 + 80205772: 2e8080e7 jalr 744(ra) # 80206a56 <emake> if (src->parent != pdst) { - 80205772: 1204b783 ld a5,288(s1) - 80205776: 01278d63 beq a5,s2,80205790 <sys_rename+0x1b2> + 80205776: 1204b783 ld a5,288(s1) + 8020577a: 01278d63 beq a5,s2,80205794 <sys_rename+0x1b2> eunlock(pdst); - 8020577a: 854a mv a0,s2 - 8020577c: 00002097 auipc ra,0x2 - 80205780: 978080e7 jalr -1672(ra) # 802070f4 <eunlock> + 8020577e: 854a mv a0,s2 + 80205780: 00002097 auipc ra,0x2 + 80205784: 934080e7 jalr -1740(ra) # 802070b4 <eunlock> elock(src->parent); - 80205784: 1204b503 ld a0,288(s1) - 80205788: 00002097 auipc ra,0x2 - 8020578c: 936080e7 jalr -1738(ra) # 802070be <elock> + 80205788: 1204b503 ld a0,288(s1) + 8020578c: 00002097 auipc ra,0x2 + 80205790: 8f2080e7 jalr -1806(ra) # 8020707e <elock> eremove(src); - 80205790: 8526 mv a0,s1 - 80205792: 00001097 auipc ra,0x1 - 80205796: 7f8080e7 jalr 2040(ra) # 80206f8a <eremove> + 80205794: 8526 mv a0,s1 + 80205796: 00001097 auipc ra,0x1 + 8020579a: 7b4080e7 jalr 1972(ra) # 80206f4a <eremove> eunlock(src->parent); - 8020579a: 1204b503 ld a0,288(s1) - 8020579e: 00002097 auipc ra,0x2 - 802057a2: 956080e7 jalr -1706(ra) # 802070f4 <eunlock> + 8020579e: 1204b503 ld a0,288(s1) + 802057a2: 00002097 auipc ra,0x2 + 802057a6: 912080e7 jalr -1774(ra) # 802070b4 <eunlock> struct dirent *psrc = src->parent; // src must not be root, or it won't pass the for-loop test - 802057a6: 1204b983 ld s3,288(s1) + 802057aa: 1204b983 ld s3,288(s1) src->parent = edup(pdst); - 802057aa: 854a mv a0,s2 - 802057ac: 00001097 auipc ra,0x1 - 802057b0: 6b4080e7 jalr 1716(ra) # 80206e60 <edup> - 802057b4: 12a4b023 sd a0,288(s1) + 802057ae: 854a mv a0,s2 + 802057b0: 00001097 auipc ra,0x1 + 802057b4: 670080e7 jalr 1648(ra) # 80206e20 <edup> + 802057b8: 12a4b023 sd a0,288(s1) src->off = off; - 802057b8: dbc42783 lw a5,-580(s0) - 802057bc: 10f4ae23 sw a5,284(s1) + 802057bc: dbc42783 lw a5,-580(s0) + 802057c0: 10f4ae23 sw a5,284(s1) src->valid = 1; - 802057c0: 4785 li a5,1 - 802057c2: 10f49b23 sh a5,278(s1) + 802057c4: 4785 li a5,1 + 802057c6: 10f49b23 sh a5,278(s1) eunlock(src); - 802057c6: 8526 mv a0,s1 - 802057c8: 00002097 auipc ra,0x2 - 802057cc: 92c080e7 jalr -1748(ra) # 802070f4 <eunlock> + 802057ca: 8526 mv a0,s1 + 802057cc: 00002097 auipc ra,0x2 + 802057d0: 8e8080e7 jalr -1816(ra) # 802070b4 <eunlock> eput(psrc); - 802057d0: 854e mv a0,s3 - 802057d2: 00002097 auipc ra,0x2 - 802057d6: 970080e7 jalr -1680(ra) # 80207142 <eput> + 802057d4: 854e mv a0,s3 + 802057d6: 00002097 auipc ra,0x2 + 802057da: 92c080e7 jalr -1748(ra) # 80207102 <eput> if (dst) { - 802057da: 000a0763 beqz s4,802057e8 <sys_rename+0x20a> + 802057de: 000a0763 beqz s4,802057ec <sys_rename+0x20a> eput(dst); - 802057de: 8552 mv a0,s4 - 802057e0: 00002097 auipc ra,0x2 - 802057e4: 962080e7 jalr -1694(ra) # 80207142 <eput> + 802057e2: 8552 mv a0,s4 + 802057e4: 00002097 auipc ra,0x2 + 802057e8: 91e080e7 jalr -1762(ra) # 80207102 <eput> eput(pdst); - 802057e8: 854a mv a0,s2 - 802057ea: 00002097 auipc ra,0x2 - 802057ee: 958080e7 jalr -1704(ra) # 80207142 <eput> + 802057ec: 854a mv a0,s2 + 802057ee: 00002097 auipc ra,0x2 + 802057f2: 914080e7 jalr -1772(ra) # 80207102 <eput> eput(src); - 802057f2: 8526 mv a0,s1 - 802057f4: 00002097 auipc ra,0x2 - 802057f8: 94e080e7 jalr -1714(ra) # 80207142 <eput> + 802057f6: 8526 mv a0,s1 + 802057f8: 00002097 auipc ra,0x2 + 802057fc: 90a080e7 jalr -1782(ra) # 80207102 <eput> return 0; - 802057fc: 4781 li a5,0 - 802057fe: b5f5 j 802056ea <sys_rename+0x10c> + 80205800: 4781 li a5,0 + 80205802: b5f5 j 802056ee <sys_rename+0x10c> eunlock(dst); - 80205800: 8552 mv a0,s4 - 80205802: 00002097 auipc ra,0x2 - 80205806: 8f2080e7 jalr -1806(ra) # 802070f4 <eunlock> + 80205804: 8552 mv a0,s4 + 80205806: 00002097 auipc ra,0x2 + 8020580a: 8ae080e7 jalr -1874(ra) # 802070b4 <eunlock> goto fail; - 8020580a: b57d j 802056b8 <sys_rename+0xda> + 8020580e: b57d j 802056bc <sys_rename+0xda> struct dirent *src = NULL, *dst = NULL, *pdst = NULL; - 8020580c: 892a mv s2,a0 + 80205810: 892a mv s2,a0 if (dst) - 8020580e: bd7d j 802056cc <sys_rename+0xee> + 80205812: bd7d j 802056d0 <sys_rename+0xee> -0000000080205810 <sys_openat>: +0000000080205814 <sys_openat>: uint64 sys_openat(void) { - 80205810: db010113 addi sp,sp,-592 - 80205814: 24113423 sd ra,584(sp) - 80205818: 24813023 sd s0,576(sp) - 8020581c: 22913c23 sd s1,568(sp) - 80205820: 23213823 sd s2,560(sp) - 80205824: 23313423 sd s3,552(sp) - 80205828: 0c80 addi s0,sp,592 + 80205814: db010113 addi sp,sp,-592 + 80205818: 24113423 sd ra,584(sp) + 8020581c: 24813023 sd s0,576(sp) + 80205820: 22913c23 sd s1,568(sp) + 80205824: 23213823 sd s2,560(sp) + 80205828: 23313423 sd s3,552(sp) + 8020582c: 0c80 addi s0,sp,592 int fd, flags, mode; struct file *f; struct dirent *ep; int ret_fd; if(argint(0, &fd)<0 || - 8020582a: dbc40593 addi a1,s0,-580 - 8020582e: 4501 li a0,0 - 80205830: ffffe097 auipc ra,0xffffe - 80205834: ad4080e7 jalr -1324(ra) # 80203304 <argint> + 8020582e: dbc40593 addi a1,s0,-580 + 80205832: 4501 li a0,0 + 80205834: ffffe097 auipc ra,0xffffe + 80205838: ad4080e7 jalr -1324(ra) # 80203308 <argint> argstr(1, path, FAT32_MAX_PATH) < 0 || argint(2, &flags) < 0|| argint(3, &mode) < 0) return -1; - 80205838: 57fd li a5,-1 + 8020583c: 57fd li a5,-1 if(argint(0, &fd)<0 || - 8020583a: 1a054863 bltz a0,802059ea <sys_openat+0x1da> + 8020583e: 1a054863 bltz a0,802059ee <sys_openat+0x1da> argstr(1, path, FAT32_MAX_PATH) < 0 || - 8020583e: 10400613 li a2,260 - 80205842: ec840593 addi a1,s0,-312 - 80205846: 4505 li a0,1 - 80205848: ffffe097 auipc ra,0xffffe - 8020584c: b40080e7 jalr -1216(ra) # 80203388 <argstr> + 80205842: 10400613 li a2,260 + 80205846: ec840593 addi a1,s0,-312 + 8020584a: 4505 li a0,1 + 8020584c: ffffe097 auipc ra,0xffffe + 80205850: b40080e7 jalr -1216(ra) # 8020338c <argstr> return -1; - 80205850: 57fd li a5,-1 + 80205854: 57fd li a5,-1 if(argint(0, &fd)<0 || - 80205852: 18054c63 bltz a0,802059ea <sys_openat+0x1da> + 80205856: 18054c63 bltz a0,802059ee <sys_openat+0x1da> argint(2, &flags) < 0|| - 80205856: db840593 addi a1,s0,-584 - 8020585a: 4509 li a0,2 - 8020585c: ffffe097 auipc ra,0xffffe - 80205860: aa8080e7 jalr -1368(ra) # 80203304 <argint> + 8020585a: db840593 addi a1,s0,-584 + 8020585e: 4509 li a0,2 + 80205860: ffffe097 auipc ra,0xffffe + 80205864: aa8080e7 jalr -1368(ra) # 80203308 <argint> return -1; - 80205864: 57fd li a5,-1 + 80205868: 57fd li a5,-1 argstr(1, path, FAT32_MAX_PATH) < 0 || - 80205866: 18054263 bltz a0,802059ea <sys_openat+0x1da> + 8020586a: 18054263 bltz a0,802059ee <sys_openat+0x1da> argint(3, &mode) < 0) - 8020586a: db440593 addi a1,s0,-588 - 8020586e: 450d li a0,3 - 80205870: ffffe097 auipc ra,0xffffe - 80205874: a94080e7 jalr -1388(ra) # 80203304 <argint> + 8020586e: db440593 addi a1,s0,-588 + 80205872: 450d li a0,3 + 80205874: ffffe097 auipc ra,0xffffe + 80205878: a94080e7 jalr -1388(ra) # 80203308 <argint> argint(2, &flags) < 0|| - 80205878: 1e054563 bltz a0,80205a62 <sys_openat+0x252> + 8020587c: 1e054563 bltz a0,80205a66 <sys_openat+0x252> // handle the case when the path isn't absolute if(*path != '/'){ - 8020587c: ec844703 lbu a4,-312(s0) - 80205880: 02f00793 li a5,47 - 80205884: 0cf70063 beq a4,a5,80205944 <sys_openat+0x134> + 80205880: ec844703 lbu a4,-312(s0) + 80205884: 02f00793 li a5,47 + 80205888: 0cf70063 beq a4,a5,80205948 <sys_openat+0x134> // handle the case when fd is AT_FDCWD if(fd <0){ - 80205888: dbc42783 lw a5,-580(s0) - 8020588c: 0a07c563 bltz a5,80205936 <sys_openat+0x126> + 8020588c: dbc42783 lw a5,-580(s0) + 80205890: 0a07c563 bltz a5,8020593a <sys_openat+0x126> dir = myproc()->cwd->filename; } // handle the case when fd is a file descriptor else{ struct file *temp = myproc()->ofile[fd]; - 80205890: ffffc097 auipc ra,0xffffc - 80205894: 1ac080e7 jalr 428(ra) # 80201a3c <myproc> - 80205898: dbc42783 lw a5,-580(s0) - 8020589c: 07e9 addi a5,a5,26 - 8020589e: 078e slli a5,a5,0x3 - 802058a0: 953e add a0,a0,a5 - 802058a2: 6518 ld a4,8(a0) + 80205894: ffffc097 auipc ra,0xffffc + 80205898: 1a8080e7 jalr 424(ra) # 80201a3c <myproc> + 8020589c: dbc42783 lw a5,-580(s0) + 802058a0: 07e9 addi a5,a5,26 + 802058a2: 078e slli a5,a5,0x3 + 802058a4: 953e add a0,a0,a5 + 802058a6: 6518 ld a4,8(a0) if(temp == NULL || temp->type != FD_ENTRY || - 802058a4: 1c070163 beqz a4,80205a66 <sys_openat+0x256> - 802058a8: 4310 lw a2,0(a4) - 802058aa: 4689 li a3,2 + 802058a8: 1c070163 beqz a4,80205a6a <sys_openat+0x256> + 802058ac: 4310 lw a2,0(a4) + 802058ae: 4689 li a3,2 !(temp->ep->attribute & ATTR_DIRECTORY)){ return -1; - 802058ac: 57fd li a5,-1 + 802058b0: 57fd li a5,-1 if(temp == NULL || temp->type != FD_ENTRY || - 802058ae: 12d61e63 bne a2,a3,802059ea <sys_openat+0x1da> + 802058b2: 12d61e63 bne a2,a3,802059ee <sys_openat+0x1da> !(temp->ep->attribute & ATTR_DIRECTORY)){ - 802058b2: 6f04 ld s1,24(a4) + 802058b6: 6f04 ld s1,24(a4) if(temp == NULL || temp->type != FD_ENTRY || - 802058b4: 1004c703 lbu a4,256(s1) - 802058b8: 8b41 andi a4,a4,16 - 802058ba: 12070863 beqz a4,802059ea <sys_openat+0x1da> + 802058b8: 1004c703 lbu a4,256(s1) + 802058bc: 8b41 andi a4,a4,16 + 802058be: 12070863 beqz a4,802059ee <sys_openat+0x1da> } } // get the absolute path if(dir != NULL){ memmove(full_path, dir, strlen(dir)); - 802058be: 8526 mv a0,s1 - 802058c0: ffffb097 auipc ra,0xffffb - 802058c4: 026080e7 jalr 38(ra) # 802008e6 <strlen> - 802058c8: 0005061b sext.w a2,a0 - 802058cc: 85a6 mv a1,s1 - 802058ce: dc040513 addi a0,s0,-576 - 802058d2: ffffb097 auipc ra,0xffffb - 802058d6: eec080e7 jalr -276(ra) # 802007be <memmove> + 802058c2: 8526 mv a0,s1 + 802058c4: ffffb097 auipc ra,0xffffb + 802058c8: 022080e7 jalr 34(ra) # 802008e6 <strlen> + 802058cc: 0005061b sext.w a2,a0 + 802058d0: 85a6 mv a1,s1 + 802058d2: dc040513 addi a0,s0,-576 + 802058d6: ffffb097 auipc ra,0xffffb + 802058da: ee8080e7 jalr -280(ra) # 802007be <memmove> full_path[strlen(dir)] = '/'; - 802058da: 8526 mv a0,s1 - 802058dc: ffffb097 auipc ra,0xffffb - 802058e0: 00a080e7 jalr 10(ra) # 802008e6 <strlen> - 802058e4: fd050793 addi a5,a0,-48 - 802058e8: 00878533 add a0,a5,s0 - 802058ec: 02f00793 li a5,47 - 802058f0: def50823 sb a5,-528(a0) + 802058de: 8526 mv a0,s1 + 802058e0: ffffb097 auipc ra,0xffffb + 802058e4: 006080e7 jalr 6(ra) # 802008e6 <strlen> + 802058e8: fd050793 addi a5,a0,-48 + 802058ec: 00878533 add a0,a5,s0 + 802058f0: 02f00793 li a5,47 + 802058f4: def50823 sb a5,-528(a0) if(*path == '.'){ - 802058f4: ec844703 lbu a4,-312(s0) - 802058f8: 02e00793 li a5,46 - 802058fc: 10f70563 beq a4,a5,80205a06 <sys_openat+0x1f6> + 802058f8: ec844703 lbu a4,-312(s0) + 802058fc: 02e00793 li a5,46 + 80205900: 10f70563 beq a4,a5,80205a0a <sys_openat+0x1f6> memmove(full_path + strlen(dir) + 1, path+2, strlen(path) - 1); } else memmove(full_path + strlen(dir) + 1, path, strlen(path) + 1); - 80205900: 8526 mv a0,s1 - 80205902: ffffb097 auipc ra,0xffffb - 80205906: fe4080e7 jalr -28(ra) # 802008e6 <strlen> - 8020590a: 84aa mv s1,a0 - 8020590c: ec840913 addi s2,s0,-312 - 80205910: 854a mv a0,s2 - 80205912: ffffb097 auipc ra,0xffffb - 80205916: fd4080e7 jalr -44(ra) # 802008e6 <strlen> - 8020591a: fd048793 addi a5,s1,-48 - 8020591e: 008784b3 add s1,a5,s0 - 80205922: 0015061b addiw a2,a0,1 - 80205926: 85ca mv a1,s2 - 80205928: df148513 addi a0,s1,-527 - 8020592c: ffffb097 auipc ra,0xffffb - 80205930: e92080e7 jalr -366(ra) # 802007be <memmove> - 80205934: a805 j 80205964 <sys_openat+0x154> + 80205904: 8526 mv a0,s1 + 80205906: ffffb097 auipc ra,0xffffb + 8020590a: fe0080e7 jalr -32(ra) # 802008e6 <strlen> + 8020590e: 84aa mv s1,a0 + 80205910: ec840913 addi s2,s0,-312 + 80205914: 854a mv a0,s2 + 80205916: ffffb097 auipc ra,0xffffb + 8020591a: fd0080e7 jalr -48(ra) # 802008e6 <strlen> + 8020591e: fd048793 addi a5,s1,-48 + 80205922: 008784b3 add s1,a5,s0 + 80205926: 0015061b addiw a2,a0,1 + 8020592a: 85ca mv a1,s2 + 8020592c: df148513 addi a0,s1,-527 + 80205930: ffffb097 auipc ra,0xffffb + 80205934: e8e080e7 jalr -370(ra) # 802007be <memmove> + 80205938: a805 j 80205968 <sys_openat+0x154> dir = myproc()->cwd->filename; - 80205936: ffffc097 auipc ra,0xffffc - 8020593a: 106080e7 jalr 262(ra) # 80201a3c <myproc> - 8020593e: 40053483 ld s1,1024(a0) + 8020593a: ffffc097 auipc ra,0xffffc + 8020593e: 102080e7 jalr 258(ra) # 80201a3c <myproc> + 80205942: 40053483 ld s1,1024(a0) if(dir != NULL){ - 80205942: fcb5 bnez s1,802058be <sys_openat+0xae> + 80205946: fcb5 bnez s1,802058c2 <sys_openat+0xae> } else{ memmove(full_path, path, strlen(path) + 1); - 80205944: ec840493 addi s1,s0,-312 - 80205948: 8526 mv a0,s1 - 8020594a: ffffb097 auipc ra,0xffffb - 8020594e: f9c080e7 jalr -100(ra) # 802008e6 <strlen> - 80205952: 0015061b addiw a2,a0,1 - 80205956: 85a6 mv a1,s1 - 80205958: dc040513 addi a0,s0,-576 - 8020595c: ffffb097 auipc ra,0xffffb - 80205960: e62080e7 jalr -414(ra) # 802007be <memmove> + 80205948: ec840493 addi s1,s0,-312 + 8020594c: 8526 mv a0,s1 + 8020594e: ffffb097 auipc ra,0xffffb + 80205952: f98080e7 jalr -104(ra) # 802008e6 <strlen> + 80205956: 0015061b addiw a2,a0,1 + 8020595a: 85a6 mv a1,s1 + 8020595c: dc040513 addi a0,s0,-576 + 80205960: ffffb097 auipc ra,0xffffb + 80205964: e5e080e7 jalr -418(ra) # 802007be <memmove> } if(flags & 0x40){ - 80205964: db842603 lw a2,-584(s0) - 80205968: 04067793 andi a5,a2,64 - 8020596c: cbe1 beqz a5,80205a3c <sys_openat+0x22c> + 80205968: db842603 lw a2,-584(s0) + 8020596c: 04067793 andi a5,a2,64 + 80205970: cbe1 beqz a5,80205a40 <sys_openat+0x22c> ep = create(full_path, T_FILE, flags); - 8020596e: 4589 li a1,2 - 80205970: dc040513 addi a0,s0,-576 - 80205974: fffff097 auipc ra,0xfffff - 80205978: 2ea080e7 jalr 746(ra) # 80204c5e <create> - 8020597c: 89aa mv s3,a0 + 80205972: 4589 li a1,2 + 80205974: dc040513 addi a0,s0,-576 + 80205978: fffff097 auipc ra,0xfffff + 8020597c: 2ea080e7 jalr 746(ra) # 80204c62 <create> + 80205980: 89aa mv s3,a0 if(ep == NULL){ - 8020597e: c575 beqz a0,80205a6a <sys_openat+0x25a> + 80205982: c575 beqz a0,80205a6e <sys_openat+0x25a> return -1; } */ } if((f = filealloc()) == NULL || (ret_fd = fdalloc(f)) < 0){ - 80205980: ffffe097 auipc ra,0xffffe - 80205984: 60a080e7 jalr 1546(ra) # 80203f8a <filealloc> - 80205988: 892a mv s2,a0 - 8020598a: c96d beqz a0,80205a7c <sys_openat+0x26c> - 8020598c: fffff097 auipc ra,0xfffff - 80205990: 28e080e7 jalr 654(ra) # 80204c1a <fdalloc> - 80205994: 84aa mv s1,a0 - 80205996: 0c054e63 bltz a0,80205a72 <sys_openat+0x262> + 80205984: ffffe097 auipc ra,0xffffe + 80205988: 60a080e7 jalr 1546(ra) # 80203f8e <filealloc> + 8020598c: 892a mv s2,a0 + 8020598e: c96d beqz a0,80205a80 <sys_openat+0x26c> + 80205990: fffff097 auipc ra,0xfffff + 80205994: 28e080e7 jalr 654(ra) # 80204c1e <fdalloc> + 80205998: 84aa mv s1,a0 + 8020599a: 0c054e63 bltz a0,80205a76 <sys_openat+0x262> eunlock(ep); eput(ep); return -1; } if(!(ep->attribute & ATTR_DIRECTORY) && (flags & O_TRUNC)){ - 8020599a: 1009c783 lbu a5,256(s3) - 8020599e: 8bc1 andi a5,a5,16 - 802059a0: e791 bnez a5,802059ac <sys_openat+0x19c> - 802059a2: db842783 lw a5,-584(s0) - 802059a6: 4007f793 andi a5,a5,1024 - 802059aa: e7d5 bnez a5,80205a56 <sys_openat+0x246> + 8020599e: 1009c783 lbu a5,256(s3) + 802059a2: 8bc1 andi a5,a5,16 + 802059a4: e791 bnez a5,802059b0 <sys_openat+0x19c> + 802059a6: db842783 lw a5,-584(s0) + 802059aa: 4007f793 andi a5,a5,1024 + 802059ae: e7d5 bnez a5,80205a5a <sys_openat+0x246> etrunc(ep); } f->type = FD_ENTRY; - 802059ac: 4789 li a5,2 - 802059ae: 00f92023 sw a5,0(s2) + 802059b0: 4789 li a5,2 + 802059b2: 00f92023 sw a5,0(s2) f->off = (flags & O_APPEND) ? ep->file_size : 0; - 802059b2: db842783 lw a5,-584(s0) - 802059b6: 0047f693 andi a3,a5,4 - 802059ba: 4701 li a4,0 - 802059bc: c299 beqz a3,802059c2 <sys_openat+0x1b2> - 802059be: 1089a703 lw a4,264(s3) - 802059c2: 02e92023 sw a4,32(s2) + 802059b6: db842783 lw a5,-584(s0) + 802059ba: 0047f693 andi a3,a5,4 + 802059be: 4701 li a4,0 + 802059c0: c299 beqz a3,802059c6 <sys_openat+0x1b2> + 802059c2: 1089a703 lw a4,264(s3) + 802059c6: 02e92023 sw a4,32(s2) f->ep = ep; - 802059c6: 01393c23 sd s3,24(s2) + 802059ca: 01393c23 sd s3,24(s2) f->readable = !(flags & O_WRONLY); - 802059ca: 0017c713 xori a4,a5,1 - 802059ce: 8b05 andi a4,a4,1 - 802059d0: 00e90423 sb a4,8(s2) + 802059ce: 0017c713 xori a4,a5,1 + 802059d2: 8b05 andi a4,a4,1 + 802059d4: 00e90423 sb a4,8(s2) f->writable = (flags & O_WRONLY) || (flags & O_RDWR); - 802059d4: 8b8d andi a5,a5,3 - 802059d6: 00f037b3 snez a5,a5 - 802059da: 00f904a3 sb a5,9(s2) + 802059d8: 8b8d andi a5,a5,3 + 802059da: 00f037b3 snez a5,a5 + 802059de: 00f904a3 sb a5,9(s2) eunlock(ep); - 802059de: 854e mv a0,s3 - 802059e0: 00001097 auipc ra,0x1 - 802059e4: 714080e7 jalr 1812(ra) # 802070f4 <eunlock> + 802059e2: 854e mv a0,s3 + 802059e4: 00001097 auipc ra,0x1 + 802059e8: 6d0080e7 jalr 1744(ra) # 802070b4 <eunlock> return ret_fd; - 802059e8: 87a6 mv a5,s1 + 802059ec: 87a6 mv a5,s1 } - 802059ea: 853e mv a0,a5 - 802059ec: 24813083 ld ra,584(sp) - 802059f0: 24013403 ld s0,576(sp) - 802059f4: 23813483 ld s1,568(sp) - 802059f8: 23013903 ld s2,560(sp) - 802059fc: 22813983 ld s3,552(sp) - 80205a00: 25010113 addi sp,sp,592 - 80205a04: 8082 ret + 802059ee: 853e mv a0,a5 + 802059f0: 24813083 ld ra,584(sp) + 802059f4: 24013403 ld s0,576(sp) + 802059f8: 23813483 ld s1,568(sp) + 802059fc: 23013903 ld s2,560(sp) + 80205a00: 22813983 ld s3,552(sp) + 80205a04: 25010113 addi sp,sp,592 + 80205a08: 8082 ret memmove(full_path + strlen(dir) + 1, path+2, strlen(path) - 1); - 80205a06: 8526 mv a0,s1 - 80205a08: ffffb097 auipc ra,0xffffb - 80205a0c: ede080e7 jalr -290(ra) # 802008e6 <strlen> - 80205a10: 84aa mv s1,a0 - 80205a12: ec840513 addi a0,s0,-312 - 80205a16: ffffb097 auipc ra,0xffffb - 80205a1a: ed0080e7 jalr -304(ra) # 802008e6 <strlen> - 80205a1e: fd048793 addi a5,s1,-48 - 80205a22: 008784b3 add s1,a5,s0 - 80205a26: fff5061b addiw a2,a0,-1 - 80205a2a: eca40593 addi a1,s0,-310 - 80205a2e: df148513 addi a0,s1,-527 - 80205a32: ffffb097 auipc ra,0xffffb - 80205a36: d8c080e7 jalr -628(ra) # 802007be <memmove> - 80205a3a: b72d j 80205964 <sys_openat+0x154> + 80205a0a: 8526 mv a0,s1 + 80205a0c: ffffb097 auipc ra,0xffffb + 80205a10: eda080e7 jalr -294(ra) # 802008e6 <strlen> + 80205a14: 84aa mv s1,a0 + 80205a16: ec840513 addi a0,s0,-312 + 80205a1a: ffffb097 auipc ra,0xffffb + 80205a1e: ecc080e7 jalr -308(ra) # 802008e6 <strlen> + 80205a22: fd048793 addi a5,s1,-48 + 80205a26: 008784b3 add s1,a5,s0 + 80205a2a: fff5061b addiw a2,a0,-1 + 80205a2e: eca40593 addi a1,s0,-310 + 80205a32: df148513 addi a0,s1,-527 + 80205a36: ffffb097 auipc ra,0xffffb + 80205a3a: d88080e7 jalr -632(ra) # 802007be <memmove> + 80205a3e: b72d j 80205968 <sys_openat+0x154> if((ep = ename(full_path)) == NULL){ - 80205a3c: dc040513 addi a0,s0,-576 - 80205a40: 00002097 auipc ra,0x2 - 80205a44: e26080e7 jalr -474(ra) # 80207866 <ename> - 80205a48: 89aa mv s3,a0 - 80205a4a: c115 beqz a0,80205a6e <sys_openat+0x25e> + 80205a40: dc040513 addi a0,s0,-576 + 80205a44: 00002097 auipc ra,0x2 + 80205a48: de2080e7 jalr -542(ra) # 80207826 <ename> + 80205a4c: 89aa mv s3,a0 + 80205a4e: c115 beqz a0,80205a72 <sys_openat+0x25e> elock(ep); - 80205a4c: 00001097 auipc ra,0x1 - 80205a50: 672080e7 jalr 1650(ra) # 802070be <elock> - 80205a54: b735 j 80205980 <sys_openat+0x170> + 80205a50: 00001097 auipc ra,0x1 + 80205a54: 62e080e7 jalr 1582(ra) # 8020707e <elock> + 80205a58: b735 j 80205984 <sys_openat+0x170> etrunc(ep); - 80205a56: 854e mv a0,s3 - 80205a58: 00001097 auipc ra,0x1 - 80205a5c: 5fc080e7 jalr 1532(ra) # 80207054 <etrunc> - 80205a60: b7b1 j 802059ac <sys_openat+0x19c> + 80205a5a: 854e mv a0,s3 + 80205a5c: 00001097 auipc ra,0x1 + 80205a60: 5b8080e7 jalr 1464(ra) # 80207014 <etrunc> + 80205a64: b7b1 j 802059b0 <sys_openat+0x19c> return -1; - 80205a62: 57fd li a5,-1 - 80205a64: b759 j 802059ea <sys_openat+0x1da> - return -1; 80205a66: 57fd li a5,-1 - 80205a68: b749 j 802059ea <sys_openat+0x1da> - return -1; + 80205a68: b759 j 802059ee <sys_openat+0x1da> + return -1; 80205a6a: 57fd li a5,-1 - 80205a6c: bfbd j 802059ea <sys_openat+0x1da> + 80205a6c: b749 j 802059ee <sys_openat+0x1da> return -1; 80205a6e: 57fd li a5,-1 - 80205a70: bfad j 802059ea <sys_openat+0x1da> + 80205a70: bfbd j 802059ee <sys_openat+0x1da> + return -1; + 80205a72: 57fd li a5,-1 + 80205a74: bfad j 802059ee <sys_openat+0x1da> fileclose(f); - 80205a72: 854a mv a0,s2 - 80205a74: ffffe097 auipc ra,0xffffe - 80205a78: 5d2080e7 jalr 1490(ra) # 80204046 <fileclose> + 80205a76: 854a mv a0,s2 + 80205a78: ffffe097 auipc ra,0xffffe + 80205a7c: 5d2080e7 jalr 1490(ra) # 8020404a <fileclose> eunlock(ep); - 80205a7c: 854e mv a0,s3 - 80205a7e: 00001097 auipc ra,0x1 - 80205a82: 676080e7 jalr 1654(ra) # 802070f4 <eunlock> + 80205a80: 854e mv a0,s3 + 80205a82: 00001097 auipc ra,0x1 + 80205a86: 632080e7 jalr 1586(ra) # 802070b4 <eunlock> eput(ep); - 80205a86: 854e mv a0,s3 - 80205a88: 00001097 auipc ra,0x1 - 80205a8c: 6ba080e7 jalr 1722(ra) # 80207142 <eput> + 80205a8a: 854e mv a0,s3 + 80205a8c: 00001097 auipc ra,0x1 + 80205a90: 676080e7 jalr 1654(ra) # 80207102 <eput> return -1; - 80205a90: 57fd li a5,-1 - 80205a92: bfa1 j 802059ea <sys_openat+0x1da> + 80205a94: 57fd li a5,-1 + 80205a96: bfa1 j 802059ee <sys_openat+0x1da> -0000000080205a94 <sys_mmap>: +0000000080205a98 <sys_mmap>: uint64 sys_mmap(void) { - 80205a94: 711d addi sp,sp,-96 - 80205a96: ec86 sd ra,88(sp) - 80205a98: e8a2 sd s0,80(sp) - 80205a9a: e4a6 sd s1,72(sp) - 80205a9c: e0ca sd s2,64(sp) - 80205a9e: fc4e sd s3,56(sp) - 80205aa0: f852 sd s4,48(sp) - 80205aa2: 1080 addi s0,sp,96 + 80205a98: 711d addi sp,sp,-96 + 80205a9a: ec86 sd ra,88(sp) + 80205a9c: e8a2 sd s0,80(sp) + 80205a9e: e4a6 sd s1,72(sp) + 80205aa0: e0ca sd s2,64(sp) + 80205aa2: fc4e sd s3,56(sp) + 80205aa4: f852 sd s4,48(sp) + 80205aa6: 1080 addi s0,sp,96 uint64 start, len; int prot, flags, fd; long off; struct file *f = NULL; - 80205aa4: fa043023 sd zero,-96(s0) + 80205aa8: fa043023 sd zero,-96(s0) struct proc* p = myproc(); - 80205aa8: ffffc097 auipc ra,0xffffc - 80205aac: f94080e7 jalr -108(ra) # 80201a3c <myproc> - 80205ab0: 892a mv s2,a0 + 80205aac: ffffc097 auipc ra,0xffffc + 80205ab0: f90080e7 jalr -112(ra) # 80201a3c <myproc> + 80205ab4: 892a mv s2,a0 if(argaddr(0, &start)<0||argaddr(1, &len)<0||argint(2, &prot)<0||argint(3, &flags)<0||argfd(4, &fd, &f)||argaddr(5, (uint64*)&off)<0) - 80205ab2: fc840593 addi a1,s0,-56 - 80205ab6: 4501 li a0,0 - 80205ab8: ffffe097 auipc ra,0xffffe - 80205abc: 8ae080e7 jalr -1874(ra) # 80203366 <argaddr> + 80205ab6: fc840593 addi a1,s0,-56 + 80205aba: 4501 li a0,0 + 80205abc: ffffe097 auipc ra,0xffffe + 80205ac0: 8ae080e7 jalr -1874(ra) # 8020336a <argaddr> return -1; - 80205ac0: 57fd li a5,-1 + 80205ac4: 57fd li a5,-1 if(argaddr(0, &start)<0||argaddr(1, &len)<0||argint(2, &prot)<0||argint(3, &flags)<0||argfd(4, &fd, &f)||argaddr(5, (uint64*)&off)<0) - 80205ac2: 0c054263 bltz a0,80205b86 <sys_mmap+0xf2> - 80205ac6: fc040593 addi a1,s0,-64 - 80205aca: 4505 li a0,1 - 80205acc: ffffe097 auipc ra,0xffffe - 80205ad0: 89a080e7 jalr -1894(ra) # 80203366 <argaddr> + 80205ac6: 0c054363 bltz a0,80205b8c <sys_mmap+0xf4> + 80205aca: fc040593 addi a1,s0,-64 + 80205ace: 4505 li a0,1 + 80205ad0: ffffe097 auipc ra,0xffffe + 80205ad4: 89a080e7 jalr -1894(ra) # 8020336a <argaddr> return -1; - 80205ad4: 57fd li a5,-1 + 80205ad8: 57fd li a5,-1 if(argaddr(0, &start)<0||argaddr(1, &len)<0||argint(2, &prot)<0||argint(3, &flags)<0||argfd(4, &fd, &f)||argaddr(5, (uint64*)&off)<0) - 80205ad6: 0a054863 bltz a0,80205b86 <sys_mmap+0xf2> - 80205ada: fbc40593 addi a1,s0,-68 - 80205ade: 4509 li a0,2 - 80205ae0: ffffe097 auipc ra,0xffffe - 80205ae4: 824080e7 jalr -2012(ra) # 80203304 <argint> + 80205ada: 0a054963 bltz a0,80205b8c <sys_mmap+0xf4> + 80205ade: fbc40593 addi a1,s0,-68 + 80205ae2: 4509 li a0,2 + 80205ae4: ffffe097 auipc ra,0xffffe + 80205ae8: 824080e7 jalr -2012(ra) # 80203308 <argint> return -1; - 80205ae8: 57fd li a5,-1 + 80205aec: 57fd li a5,-1 if(argaddr(0, &start)<0||argaddr(1, &len)<0||argint(2, &prot)<0||argint(3, &flags)<0||argfd(4, &fd, &f)||argaddr(5, (uint64*)&off)<0) - 80205aea: 08054e63 bltz a0,80205b86 <sys_mmap+0xf2> - 80205aee: fb840593 addi a1,s0,-72 - 80205af2: 450d li a0,3 - 80205af4: ffffe097 auipc ra,0xffffe - 80205af8: 810080e7 jalr -2032(ra) # 80203304 <argint> + 80205aee: 08054f63 bltz a0,80205b8c <sys_mmap+0xf4> + 80205af2: fb840593 addi a1,s0,-72 + 80205af6: 450d li a0,3 + 80205af8: ffffe097 auipc ra,0xffffe + 80205afc: 810080e7 jalr -2032(ra) # 80203308 <argint> return -1; - 80205afc: 57fd li a5,-1 + 80205b00: 57fd li a5,-1 if(argaddr(0, &start)<0||argaddr(1, &len)<0||argint(2, &prot)<0||argint(3, &flags)<0||argfd(4, &fd, &f)||argaddr(5, (uint64*)&off)<0) - 80205afe: 08054463 bltz a0,80205b86 <sys_mmap+0xf2> - 80205b02: fa040613 addi a2,s0,-96 - 80205b06: fb440593 addi a1,s0,-76 - 80205b0a: 4511 li a0,4 - 80205b0c: fffff097 auipc ra,0xfffff - 80205b10: 0a4080e7 jalr 164(ra) # 80204bb0 <argfd> - 80205b14: 84aa mv s1,a0 + 80205b02: 08054563 bltz a0,80205b8c <sys_mmap+0xf4> + 80205b06: fa040613 addi a2,s0,-96 + 80205b0a: fb440593 addi a1,s0,-76 + 80205b0e: 4511 li a0,4 + 80205b10: fffff097 auipc ra,0xfffff + 80205b14: 0a4080e7 jalr 164(ra) # 80204bb4 <argfd> + 80205b18: 84aa mv s1,a0 return -1; - 80205b16: 57fd li a5,-1 + 80205b1a: 57fd li a5,-1 if(argaddr(0, &start)<0||argaddr(1, &len)<0||argint(2, &prot)<0||argint(3, &flags)<0||argfd(4, &fd, &f)||argaddr(5, (uint64*)&off)<0) - 80205b18: e53d bnez a0,80205b86 <sys_mmap+0xf2> - 80205b1a: fa840593 addi a1,s0,-88 - 80205b1e: 4515 li a0,5 - 80205b20: ffffe097 auipc ra,0xffffe - 80205b24: 846080e7 jalr -1978(ra) # 80203366 <argaddr> - 80205b28: 0c054763 bltz a0,80205bf6 <sys_mmap+0x162> + 80205b1c: e925 bnez a0,80205b8c <sys_mmap+0xf4> + 80205b1e: fa840593 addi a1,s0,-88 + 80205b22: 4515 li a0,5 + 80205b24: ffffe097 auipc ra,0xffffe + 80205b28: 846080e7 jalr -1978(ra) # 8020336a <argaddr> + 80205b2c: 0c054363 bltz a0,80205bf2 <sys_mmap+0x15a> len=PGROUNDUP(len); - 80205b2c: fc043683 ld a3,-64(s0) - 80205b30: 6785 lui a5,0x1 - 80205b32: 17fd addi a5,a5,-1 # fff <_entry-0x801ff001> - 80205b34: 96be add a3,a3,a5 - 80205b36: 77fd lui a5,0xfffff - 80205b38: 8efd and a3,a3,a5 - 80205b3a: fcd43023 sd a3,-64(s0) + 80205b30: fc043683 ld a3,-64(s0) + 80205b34: 6785 lui a5,0x1 + 80205b36: 17fd addi a5,a5,-1 # fff <_entry-0x801ff001> + 80205b38: 96be add a3,a3,a5 + 80205b3a: 77fd lui a5,0xfffff + 80205b3c: 8efd and a3,a3,a5 + 80205b3e: fcd43023 sd a3,-64(s0) if (!f->writable && (prot & PROT_WRITE) && (flags == MAP_SHARED)) - 80205b3e: fa043503 ld a0,-96(s0) - 80205b42: 00954783 lbu a5,9(a0) - 80205b46: eb91 bnez a5,80205b5a <sys_mmap+0xc6> - 80205b48: fbc42783 lw a5,-68(s0) - 80205b4c: 8b89 andi a5,a5,2 - 80205b4e: c791 beqz a5,80205b5a <sys_mmap+0xc6> - 80205b50: fb842703 lw a4,-72(s0) - 80205b54: 4785 li a5,1 - 80205b56: 0af70263 beq a4,a5,80205bfa <sys_mmap+0x166> + 80205b42: fa043503 ld a0,-96(s0) + 80205b46: 00954783 lbu a5,9(a0) + 80205b4a: eb91 bnez a5,80205b5e <sys_mmap+0xc6> + 80205b4c: fbc42783 lw a5,-68(s0) + 80205b50: 8b89 andi a5,a5,2 + 80205b52: c791 beqz a5,80205b5e <sys_mmap+0xc6> + 80205b54: fb842703 lw a4,-72(s0) + 80205b58: 4785 li a5,1 + 80205b5a: 08f70e63 beq a4,a5,80205bf6 <sys_mmap+0x15e> return -1; if (p->sz + len > MAXVA) - 80205b5a: 04893603 ld a2,72(s2) - 80205b5e: 9636 add a2,a2,a3 - 80205b60: 4705 li a4,1 - 80205b62: 171a slli a4,a4,0x26 + 80205b5e: 04893583 ld a1,72(s2) + 80205b62: 00b68633 add a2,a3,a1 + 80205b66: 4705 li a4,1 + 80205b68: 171a slli a4,a4,0x26 return -1; - 80205b64: 57fd li a5,-1 + 80205b6a: 57fd li a5,-1 if (p->sz + len > MAXVA) - 80205b66: 02c76063 bltu a4,a2,80205b86 <sys_mmap+0xf2> + 80205b6c: 02c76063 bltu a4,a2,80205b8c <sys_mmap+0xf4> if (!f->readable && (prot & PROT_READ)) - 80205b6a: 00854783 lbu a5,8(a0) - 80205b6e: c78d beqz a5,80205b98 <sys_mmap+0x104> + 80205b70: 00854783 lbu a5,8(a0) + 80205b74: c78d beqz a5,80205b9e <sys_mmap+0x106> return -1; for (int i = 0; i < VMA_MAX; i++) { - 80205b70: 44090793 addi a5,s2,1088 - 80205b74: 4641 li a2,16 + 80205b76: 44090793 addi a5,s2,1088 + 80205b7a: 4641 li a2,16 struct VMA * vma = &p->vma[i]; if (vma->valid == 0) { - 80205b76: 4398 lw a4,0(a5) - 80205b78: c715 beqz a4,80205ba4 <sys_mmap+0x110> + 80205b7c: 4398 lw a4,0(a5) + 80205b7e: c715 beqz a4,80205baa <sys_mmap+0x112> for (int i = 0; i < VMA_MAX; i++) { - 80205b7a: 2485 addiw s1,s1,1 - 80205b7c: 03078793 addi a5,a5,48 # fffffffffffff030 <ebss_clear+0xffffffff7fdc4030> - 80205b80: fec49be3 bne s1,a2,80205b76 <sys_mmap+0xe2> + 80205b80: 2485 addiw s1,s1,1 + 80205b82: 03078793 addi a5,a5,48 # fffffffffffff030 <ebss_clear+0xffffffff7fdc4030> + 80205b86: fec49be3 bne s1,a2,80205b7c <sys_mmap+0xe4> filedup(f); vma->off = off; return vma->addr; } } return -1; - 80205b84: 57fd li a5,-1 + 80205b8a: 57fd li a5,-1 } - 80205b86: 853e mv a0,a5 - 80205b88: 60e6 ld ra,88(sp) - 80205b8a: 6446 ld s0,80(sp) - 80205b8c: 64a6 ld s1,72(sp) - 80205b8e: 6906 ld s2,64(sp) - 80205b90: 79e2 ld s3,56(sp) - 80205b92: 7a42 ld s4,48(sp) - 80205b94: 6125 addi sp,sp,96 - 80205b96: 8082 ret + 80205b8c: 853e mv a0,a5 + 80205b8e: 60e6 ld ra,88(sp) + 80205b90: 6446 ld s0,80(sp) + 80205b92: 64a6 ld s1,72(sp) + 80205b94: 6906 ld s2,64(sp) + 80205b96: 79e2 ld s3,56(sp) + 80205b98: 7a42 ld s4,48(sp) + 80205b9a: 6125 addi sp,sp,96 + 80205b9c: 8082 ret if (!f->readable && (prot & PROT_READ)) - 80205b98: fbc42703 lw a4,-68(s0) - 80205b9c: 8b05 andi a4,a4,1 + 80205b9e: fbc42703 lw a4,-68(s0) + 80205ba2: 8b05 andi a4,a4,1 return -1; - 80205b9e: 57fd li a5,-1 + 80205ba4: 57fd li a5,-1 if (!f->readable && (prot & PROT_READ)) - 80205ba0: db61 beqz a4,80205b70 <sys_mmap+0xdc> - 80205ba2: b7d5 j 80205b86 <sys_mmap+0xf2> + 80205ba6: db61 beqz a4,80205b76 <sys_mmap+0xde> + 80205ba8: b7d5 j 80205b8c <sys_mmap+0xf4> vma->valid = 1; - 80205ba4: 00149a13 slli s4,s1,0x1 - 80205ba8: 009a09b3 add s3,s4,s1 - 80205bac: 0992 slli s3,s3,0x4 - 80205bae: 99ca add s3,s3,s2 - 80205bb0: 4785 li a5,1 - 80205bb2: 44f9a023 sw a5,1088(s3) + 80205baa: 00149a13 slli s4,s1,0x1 + 80205bae: 009a09b3 add s3,s4,s1 + 80205bb2: 0992 slli s3,s3,0x4 + 80205bb4: 99ca add s3,s3,s2 + 80205bb6: 4785 li a5,1 + 80205bb8: 44f9a023 sw a5,1088(s3) vma->alloc = 0; - 80205bb6: 4609a623 sw zero,1132(s3) - vma->addr = p->max_addr; - 80205bba: 74093783 ld a5,1856(s2) - 80205bbe: 44f9b423 sd a5,1096(s3) - p->max_addr += len; - 80205bc2: 97b6 add a5,a5,a3 - 80205bc4: 74f93023 sd a5,1856(s2) + 80205bbc: 4609a623 sw zero,1132(s3) + vma->addr = p->sz; + 80205bc0: 44b9b423 sd a1,1096(s3) vma->len = len; - 80205bc8: 44d9a823 sw a3,1104(s3) + 80205bc4: 44d9a823 sw a3,1104(s3) vma->prot = prot; - 80205bcc: fbc42783 lw a5,-68(s0) - 80205bd0: 44f9aa23 sw a5,1108(s3) + 80205bc8: fbc42783 lw a5,-68(s0) + 80205bcc: 44f9aa23 sw a5,1108(s3) vma->flags = flags; - 80205bd4: fb842783 lw a5,-72(s0) - 80205bd8: 44f9ac23 sw a5,1112(s3) + 80205bd0: fb842783 lw a5,-72(s0) + 80205bd4: 44f9ac23 sw a5,1112(s3) vma->f = f; - 80205bdc: 46a9b023 sd a0,1120(s3) + 80205bd8: 46a9b023 sd a0,1120(s3) filedup(f); - 80205be0: ffffe097 auipc ra,0xffffe - 80205be4: 414080e7 jalr 1044(ra) # 80203ff4 <filedup> + 80205bdc: ffffe097 auipc ra,0xffffe + 80205be0: 41c080e7 jalr 1052(ra) # 80203ff8 <filedup> vma->off = off; - 80205be8: fa843783 ld a5,-88(s0) - 80205bec: 44f9ae23 sw a5,1116(s3) + 80205be4: fa843783 ld a5,-88(s0) + 80205be8: 44f9ae23 sw a5,1116(s3) return vma->addr; - 80205bf0: 4489b783 ld a5,1096(s3) - 80205bf4: bf49 j 80205b86 <sys_mmap+0xf2> + 80205bec: 4489b783 ld a5,1096(s3) + 80205bf0: bf71 j 80205b8c <sys_mmap+0xf4> return -1; - 80205bf6: 57fd li a5,-1 - 80205bf8: b779 j 80205b86 <sys_mmap+0xf2> + 80205bf2: 57fd li a5,-1 + 80205bf4: bf61 j 80205b8c <sys_mmap+0xf4> return -1; - 80205bfa: 57fd li a5,-1 - 80205bfc: b769 j 80205b86 <sys_mmap+0xf2> + 80205bf6: 57fd li a5,-1 + 80205bf8: bf51 j 80205b8c <sys_mmap+0xf4> -0000000080205bfe <sys_munmap>: +0000000080205bfa <sys_munmap>: uint64 sys_munmap(void) { - 80205bfe: 7139 addi sp,sp,-64 - 80205c00: fc06 sd ra,56(sp) - 80205c02: f822 sd s0,48(sp) - 80205c04: f426 sd s1,40(sp) - 80205c06: f04a sd s2,32(sp) - 80205c08: ec4e sd s3,24(sp) - 80205c0a: e852 sd s4,16(sp) - 80205c0c: 0080 addi s0,sp,64 + 80205bfa: 7139 addi sp,sp,-64 + 80205bfc: fc06 sd ra,56(sp) + 80205bfe: f822 sd s0,48(sp) + 80205c00: f426 sd s1,40(sp) + 80205c02: f04a sd s2,32(sp) + 80205c04: ec4e sd s3,24(sp) + 80205c06: e852 sd s4,16(sp) + 80205c08: 0080 addi s0,sp,64 uint64 addr; int len; if (argaddr(0, &addr) < 0 || argint(1, &len) < 0) - 80205c0e: fc840593 addi a1,s0,-56 - 80205c12: 4501 li a0,0 - 80205c14: ffffd097 auipc ra,0xffffd - 80205c18: 752080e7 jalr 1874(ra) # 80203366 <argaddr> + 80205c0a: fc840593 addi a1,s0,-56 + 80205c0e: 4501 li a0,0 + 80205c10: ffffd097 auipc ra,0xffffd + 80205c14: 75a080e7 jalr 1882(ra) # 8020336a <argaddr> return -1; - 80205c1c: 57fd li a5,-1 + 80205c18: 57fd li a5,-1 if (argaddr(0, &addr) < 0 || argint(1, &len) < 0) - 80205c1e: 0a054563 bltz a0,80205cc8 <sys_munmap+0xca> - 80205c22: fc440593 addi a1,s0,-60 - 80205c26: 4505 li a0,1 - 80205c28: ffffd097 auipc ra,0xffffd - 80205c2c: 6dc080e7 jalr 1756(ra) # 80203304 <argint> + 80205c1a: 0a054563 bltz a0,80205cc4 <sys_munmap+0xca> + 80205c1e: fc440593 addi a1,s0,-60 + 80205c22: 4505 li a0,1 + 80205c24: ffffd097 auipc ra,0xffffd + 80205c28: 6e4080e7 jalr 1764(ra) # 80203308 <argint> return -1; - 80205c30: 57fd li a5,-1 + 80205c2c: 57fd li a5,-1 if (argaddr(0, &addr) < 0 || argint(1, &len) < 0) - 80205c32: 08054b63 bltz a0,80205cc8 <sys_munmap+0xca> + 80205c2e: 08054b63 bltz a0,80205cc4 <sys_munmap+0xca> struct proc *p = myproc(); - 80205c36: ffffc097 auipc ra,0xffffc - 80205c3a: e06080e7 jalr -506(ra) # 80201a3c <myproc> - 80205c3e: 892a mv s2,a0 + 80205c32: ffffc097 auipc ra,0xffffc + 80205c36: e0a080e7 jalr -502(ra) # 80201a3c <myproc> + 80205c3a: 892a mv s2,a0 struct VMA* vma = NULL; for (int i = 0; i < VMA_MAX; i++) { if (p->vma[i].valid && addr >= p->vma[i].addr && addr <= p->vma[i].addr + p->vma[i].len) { - 80205c40: fc843583 ld a1,-56(s0) - 80205c44: 44050793 addi a5,a0,1088 + 80205c3c: fc843583 ld a1,-56(s0) + 80205c40: 44050793 addi a5,a0,1088 for (int i = 0; i < VMA_MAX; i++) { - 80205c48: 4481 li s1,0 - 80205c4a: 4641 li a2,16 - 80205c4c: a031 j 80205c58 <sys_munmap+0x5a> - 80205c4e: 2485 addiw s1,s1,1 - 80205c50: 03078793 addi a5,a5,48 - 80205c54: 06c48963 beq s1,a2,80205cc6 <sys_munmap+0xc8> + 80205c44: 4481 li s1,0 + 80205c46: 4641 li a2,16 + 80205c48: a031 j 80205c54 <sys_munmap+0x5a> + 80205c4a: 2485 addiw s1,s1,1 + 80205c4c: 03078793 addi a5,a5,48 + 80205c50: 06c48963 beq s1,a2,80205cc2 <sys_munmap+0xc8> if (p->vma[i].valid && addr >= p->vma[i].addr && addr <= p->vma[i].addr + p->vma[i].len) { - 80205c58: 4398 lw a4,0(a5) - 80205c5a: db75 beqz a4,80205c4e <sys_munmap+0x50> - 80205c5c: 6798 ld a4,8(a5) - 80205c5e: fee5e8e3 bltu a1,a4,80205c4e <sys_munmap+0x50> - 80205c62: 4b94 lw a3,16(a5) - 80205c64: 9736 add a4,a4,a3 - 80205c66: feb764e3 bltu a4,a1,80205c4e <sys_munmap+0x50> + 80205c54: 4398 lw a4,0(a5) + 80205c56: db75 beqz a4,80205c4a <sys_munmap+0x50> + 80205c58: 6798 ld a4,8(a5) + 80205c5a: fee5e8e3 bltu a1,a4,80205c4a <sys_munmap+0x50> + 80205c5e: 4b94 lw a3,16(a5) + 80205c60: 9736 add a4,a4,a3 + 80205c62: feb764e3 bltu a4,a1,80205c4a <sys_munmap+0x50> } } if (vma == NULL) return -1; addr = PGROUNDDOWN(addr); - 80205c6a: 77fd lui a5,0xfffff - 80205c6c: 8dfd and a1,a1,a5 - 80205c6e: fcb43423 sd a1,-56(s0) - - if(vma->alloc){ - 80205c72: 00149793 slli a5,s1,0x1 - 80205c76: 97a6 add a5,a5,s1 - 80205c78: 0792 slli a5,a5,0x4 - 80205c7a: 97ca add a5,a5,s2 - 80205c7c: 46c7a783 lw a5,1132(a5) # fffffffffffff46c <ebss_clear+0xffffffff7fdc446c> - 80205c80: efa9 bnez a5,80205cda <sys_munmap+0xdc> + 80205c66: 77fd lui a5,0xfffff + 80205c68: 8dfd and a1,a1,a5 + 80205c6a: fcb43423 sd a1,-56(s0) + + if(vma->alloc !=0){ + 80205c6e: 00149793 slli a5,s1,0x1 + 80205c72: 97a6 add a5,a5,s1 + 80205c74: 0792 slli a5,a5,0x4 + 80205c76: 97ca add a5,a5,s2 + 80205c78: 46c7a783 lw a5,1132(a5) # fffffffffffff46c <ebss_clear+0xffffffff7fdc446c> + 80205c7c: efa9 bnez a5,80205cd6 <sys_munmap+0xdc> vma->alloc = 0; } } if (addr == vma->addr && len == vma->len) { - 80205c82: 00149793 slli a5,s1,0x1 - 80205c86: 97a6 add a5,a5,s1 - 80205c88: 0792 slli a5,a5,0x4 - 80205c8a: 97ca add a5,a5,s2 - 80205c8c: 4487b703 ld a4,1096(a5) - 80205c90: fc843683 ld a3,-56(s0) - 80205c94: 0cd70c63 beq a4,a3,80205d6c <sys_munmap+0x16e> + 80205c7e: 00149793 slli a5,s1,0x1 + 80205c82: 97a6 add a5,a5,s1 + 80205c84: 0792 slli a5,a5,0x4 + 80205c86: 97ca add a5,a5,s2 + 80205c88: 4487b703 ld a4,1096(a5) + 80205c8c: fc843683 ld a3,-56(s0) + 80205c90: 0ad70063 beq a4,a3,80205d30 <sys_munmap+0x136> vma->alloc = 0; } else if (addr == vma->addr) { vma->addr += len; vma->len -= len; vma->off += len; } else if ((addr + len) == (vma->addr + vma->len)) { - 80205c98: fc442583 lw a1,-60(s0) - 80205c9c: 00149793 slli a5,s1,0x1 - 80205ca0: 97a6 add a5,a5,s1 - 80205ca2: 0792 slli a5,a5,0x4 - 80205ca4: 97ca add a5,a5,s2 - 80205ca6: 4507a603 lw a2,1104(a5) - 80205caa: 96ae add a3,a3,a1 - 80205cac: 9732 add a4,a4,a2 - 80205cae: 10e69c63 bne a3,a4,80205dc6 <sys_munmap+0x1c8> + 80205c94: fc442583 lw a1,-60(s0) + 80205c98: 00149793 slli a5,s1,0x1 + 80205c9c: 97a6 add a5,a5,s1 + 80205c9e: 0792 slli a5,a5,0x4 + 80205ca0: 97ca add a5,a5,s2 + 80205ca2: 4507a603 lw a2,1104(a5) + 80205ca6: 96ae add a3,a3,a1 + 80205ca8: 9732 add a4,a4,a2 + 80205caa: 0ee69063 bne a3,a4,80205d8a <sys_munmap+0x190> vma->len -= len; - 80205cb2: 00149793 slli a5,s1,0x1 - 80205cb6: 97a6 add a5,a5,s1 - 80205cb8: 0792 slli a5,a5,0x4 - 80205cba: 993e add s2,s2,a5 - 80205cbc: 9e0d subw a2,a2,a1 - 80205cbe: 44c92823 sw a2,1104(s2) + 80205cae: 00149793 slli a5,s1,0x1 + 80205cb2: 97a6 add a5,a5,s1 + 80205cb4: 0792 slli a5,a5,0x4 + 80205cb6: 993e add s2,s2,a5 + 80205cb8: 9e0d subw a2,a2,a1 + 80205cba: 44c92823 sw a2,1104(s2) } else { printf("munmap neither cover beginning or end of mapped region\n"); return -1; } return 0; - 80205cc2: 4781 li a5,0 - 80205cc4: a011 j 80205cc8 <sys_munmap+0xca> + 80205cbe: 4781 li a5,0 + 80205cc0: a011 j 80205cc4 <sys_munmap+0xca> return -1; - 80205cc6: 57fd li a5,-1 - 80205cc8: 853e mv a0,a5 - 80205cca: 70e2 ld ra,56(sp) - 80205ccc: 7442 ld s0,48(sp) - 80205cce: 74a2 ld s1,40(sp) - 80205cd0: 7902 ld s2,32(sp) - 80205cd2: 69e2 ld s3,24(sp) - 80205cd4: 6a42 ld s4,16(sp) - 80205cd6: 6121 addi sp,sp,64 - 80205cd8: 8082 ret - printf("here\n"); - 80205cda: 00005517 auipc a0,0x5 - 80205cde: 03e50513 addi a0,a0,62 # 8020ad18 <digits+0x998> - 80205ce2: ffffa097 auipc ra,0xffffa - 80205ce6: 4ac080e7 jalr 1196(ra) # 8020018e <printf> + 80205cc2: 57fd li a5,-1 + 80205cc4: 853e mv a0,a5 + 80205cc6: 70e2 ld ra,56(sp) + 80205cc8: 7442 ld s0,48(sp) + 80205cca: 74a2 ld s1,40(sp) + 80205ccc: 7902 ld s2,32(sp) + 80205cce: 69e2 ld s3,24(sp) + 80205cd0: 6a42 ld s4,16(sp) + 80205cd2: 6121 addi sp,sp,64 + 80205cd4: 8082 ret if( walkaddr( p->pagetable , addr ) != 0) - 80205cea: fc843583 ld a1,-56(s0) - 80205cee: 05093503 ld a0,80(s2) - 80205cf2: ffffb097 auipc ra,0xffffb - 80205cf6: ebc080e7 jalr -324(ra) # 80200bae <walkaddr> - 80205cfa: d541 beqz a0,80205c82 <sys_munmap+0x84> + 80205cd6: 05093503 ld a0,80(s2) + 80205cda: ffffb097 auipc ra,0xffffb + 80205cde: ed4080e7 jalr -300(ra) # 80200bae <walkaddr> + 80205ce2: dd51 beqz a0,80205c7e <sys_munmap+0x84> if (vma->flags & MAP_SHARED) { - 80205cfc: 00149793 slli a5,s1,0x1 - 80205d00: 97a6 add a5,a5,s1 - 80205d02: 0792 slli a5,a5,0x4 - 80205d04: 97ca add a5,a5,s2 - 80205d06: 4587a783 lw a5,1112(a5) - 80205d0a: 8b85 andi a5,a5,1 - 80205d0c: eb9d bnez a5,80205d42 <sys_munmap+0x144> - vmunmap(p->pagetable, addr, len/PGSIZE, 1); - 80205d0e: fc442783 lw a5,-60(s0) - 80205d12: 41f7d61b sraiw a2,a5,0x1f - 80205d16: 0146561b srliw a2,a2,0x14 - 80205d1a: 9e3d addw a2,a2,a5 - 80205d1c: 4685 li a3,1 - 80205d1e: 40c6561b sraiw a2,a2,0xc - 80205d22: fc843583 ld a1,-56(s0) - 80205d26: 05093503 ld a0,80(s2) - 80205d2a: ffffb097 auipc ra,0xffffb - 80205d2e: 0f8080e7 jalr 248(ra) # 80200e22 <vmunmap> + 80205ce4: 00149793 slli a5,s1,0x1 + 80205ce8: 97a6 add a5,a5,s1 + 80205cea: 0792 slli a5,a5,0x4 + 80205cec: 97ca add a5,a5,s2 + 80205cee: 4587a783 lw a5,1112(a5) + 80205cf2: 8b85 andi a5,a5,1 + 80205cf4: eb89 bnez a5,80205d06 <sys_munmap+0x10c> vma->alloc = 0; - 80205d32: 00149793 slli a5,s1,0x1 - 80205d36: 97a6 add a5,a5,s1 - 80205d38: 0792 slli a5,a5,0x4 - 80205d3a: 97ca add a5,a5,s2 - 80205d3c: 4607a623 sw zero,1132(a5) - 80205d40: b789 j 80205c82 <sys_munmap+0x84> + 80205cf6: 00149793 slli a5,s1,0x1 + 80205cfa: 97a6 add a5,a5,s1 + 80205cfc: 0792 slli a5,a5,0x4 + 80205cfe: 97ca add a5,a5,s2 + 80205d00: 4607a623 sw zero,1132(a5) + 80205d04: bfad j 80205c7e <sys_munmap+0x84> vma->f->off = vma->off; - 80205d42: 00149793 slli a5,s1,0x1 - 80205d46: 97a6 add a5,a5,s1 - 80205d48: 0792 slli a5,a5,0x4 - 80205d4a: 97ca add a5,a5,s2 - 80205d4c: 4607b703 ld a4,1120(a5) - 80205d50: 45c7a683 lw a3,1116(a5) - 80205d54: d314 sw a3,32(a4) + 80205d06: 00149793 slli a5,s1,0x1 + 80205d0a: 97a6 add a5,a5,s1 + 80205d0c: 0792 slli a5,a5,0x4 + 80205d0e: 97ca add a5,a5,s2 + 80205d10: 4607b703 ld a4,1120(a5) + 80205d14: 45c7a683 lw a3,1116(a5) + 80205d18: d314 sw a3,32(a4) filewrite(vma->f, addr, len); - 80205d56: fc442603 lw a2,-60(s0) - 80205d5a: fc843583 ld a1,-56(s0) - 80205d5e: 4607b503 ld a0,1120(a5) - 80205d62: ffffe097 auipc ra,0xffffe - 80205d66: 54a080e7 jalr 1354(ra) # 802042ac <filewrite> - 80205d6a: b755 j 80205d0e <sys_munmap+0x110> + 80205d1a: fc442603 lw a2,-60(s0) + 80205d1e: fc843583 ld a1,-56(s0) + 80205d22: 4607b503 ld a0,1120(a5) + 80205d26: ffffe097 auipc ra,0xffffe + 80205d2a: 58a080e7 jalr 1418(ra) # 802042b0 <filewrite> + 80205d2e: b7e1 j 80205cf6 <sys_munmap+0xfc> if (addr == vma->addr && len == vma->len) { - 80205d6c: 00149793 slli a5,s1,0x1 - 80205d70: 97a6 add a5,a5,s1 - 80205d72: 0792 slli a5,a5,0x4 - 80205d74: 97ca add a5,a5,s2 - 80205d76: 4507a583 lw a1,1104(a5) - 80205d7a: fc442603 lw a2,-60(s0) - 80205d7e: 02c58563 beq a1,a2,80205da8 <sys_munmap+0x1aa> + 80205d30: 00149793 slli a5,s1,0x1 + 80205d34: 97a6 add a5,a5,s1 + 80205d36: 0792 slli a5,a5,0x4 + 80205d38: 97ca add a5,a5,s2 + 80205d3a: 4507a583 lw a1,1104(a5) + 80205d3e: fc442603 lw a2,-60(s0) + 80205d42: 02c58563 beq a1,a2,80205d6c <sys_munmap+0x172> vma->addr += len; - 80205d82: 00149793 slli a5,s1,0x1 - 80205d86: 009786b3 add a3,a5,s1 - 80205d8a: 0692 slli a3,a3,0x4 - 80205d8c: 96ca add a3,a3,s2 - 80205d8e: 9732 add a4,a4,a2 - 80205d90: 44e6b423 sd a4,1096(a3) # 2448 <_entry-0x801fdbb8> + 80205d46: 00149793 slli a5,s1,0x1 + 80205d4a: 009786b3 add a3,a5,s1 + 80205d4e: 0692 slli a3,a3,0x4 + 80205d50: 96ca add a3,a3,s2 + 80205d52: 9732 add a4,a4,a2 + 80205d54: 44e6b423 sd a4,1096(a3) # 2448 <_entry-0x801fdbb8> vma->len -= len; - 80205d94: 9d91 subw a1,a1,a2 - 80205d96: 44b6a823 sw a1,1104(a3) + 80205d58: 9d91 subw a1,a1,a2 + 80205d5a: 44b6a823 sw a1,1104(a3) vma->off += len; - 80205d9a: 45c6a783 lw a5,1116(a3) - 80205d9e: 9fb1 addw a5,a5,a2 - 80205da0: 44f6ae23 sw a5,1116(a3) + 80205d5e: 45c6a783 lw a5,1116(a3) + 80205d62: 9fb1 addw a5,a5,a2 + 80205d64: 44f6ae23 sw a5,1116(a3) return 0; - 80205da4: 4781 li a5,0 - 80205da6: b70d j 80205cc8 <sys_munmap+0xca> + 80205d68: 4781 li a5,0 + 80205d6a: bfa9 j 80205cc4 <sys_munmap+0xca> fileclose(vma->f); - 80205da8: 8a3e mv s4,a5 - 80205daa: 4607b503 ld a0,1120(a5) - 80205dae: ffffe097 auipc ra,0xffffe - 80205db2: 298080e7 jalr 664(ra) # 80204046 <fileclose> + 80205d6c: 8a3e mv s4,a5 + 80205d6e: 4607b503 ld a0,1120(a5) + 80205d72: ffffe097 auipc ra,0xffffe + 80205d76: 2d8080e7 jalr 728(ra) # 8020404a <fileclose> vma->valid = 0; - 80205db6: 440a2023 sw zero,1088(s4) + 80205d7a: 440a2023 sw zero,1088(s4) vma->addr = 0; - 80205dba: 440a3423 sd zero,1096(s4) + 80205d7e: 440a3423 sd zero,1096(s4) vma->alloc = 0; - 80205dbe: 460a2623 sw zero,1132(s4) + 80205d82: 460a2623 sw zero,1132(s4) return 0; - 80205dc2: 4781 li a5,0 + 80205d86: 4781 li a5,0 vma->alloc = 0; - 80205dc4: b711 j 80205cc8 <sys_munmap+0xca> + 80205d88: bf35 j 80205cc4 <sys_munmap+0xca> printf("munmap neither cover beginning or end of mapped region\n"); - 80205dc6: 00005517 auipc a0,0x5 - 80205dca: f5a50513 addi a0,a0,-166 # 8020ad20 <digits+0x9a0> - 80205dce: ffffa097 auipc ra,0xffffa - 80205dd2: 3c0080e7 jalr 960(ra) # 8020018e <printf> + 80205d8a: 00005517 auipc a0,0x5 + 80205d8e: f8e50513 addi a0,a0,-114 # 8020ad18 <digits+0x998> + 80205d92: ffffa097 auipc ra,0xffffa + 80205d96: 3fc080e7 jalr 1020(ra) # 8020018e <printf> return -1; - 80205dd6: 57fd li a5,-1 - 80205dd8: bdc5 j 80205cc8 <sys_munmap+0xca> - 80205dda: 0000 unimp - 80205ddc: 0000 unimp + 80205d9a: 57fd li a5,-1 + 80205d9c: b725 j 80205cc4 <sys_munmap+0xca> ... -0000000080205de0 <kernelvec>: - 80205de0: 7111 addi sp,sp,-256 - 80205de2: e006 sd ra,0(sp) - 80205de4: e40a sd sp,8(sp) - 80205de6: e80e sd gp,16(sp) - 80205de8: ec12 sd tp,24(sp) - 80205dea: f016 sd t0,32(sp) - 80205dec: f41a sd t1,40(sp) - 80205dee: f81e sd t2,48(sp) - 80205df0: fc22 sd s0,56(sp) - 80205df2: e0a6 sd s1,64(sp) - 80205df4: e4aa sd a0,72(sp) - 80205df6: e8ae sd a1,80(sp) - 80205df8: ecb2 sd a2,88(sp) - 80205dfa: f0b6 sd a3,96(sp) - 80205dfc: f4ba sd a4,104(sp) - 80205dfe: f8be sd a5,112(sp) - 80205e00: fcc2 sd a6,120(sp) - 80205e02: e146 sd a7,128(sp) - 80205e04: e54a sd s2,136(sp) - 80205e06: e94e sd s3,144(sp) - 80205e08: ed52 sd s4,152(sp) - 80205e0a: f156 sd s5,160(sp) - 80205e0c: f55a sd s6,168(sp) - 80205e0e: f95e sd s7,176(sp) - 80205e10: fd62 sd s8,184(sp) - 80205e12: e1e6 sd s9,192(sp) - 80205e14: e5ea sd s10,200(sp) - 80205e16: e9ee sd s11,208(sp) - 80205e18: edf2 sd t3,216(sp) - 80205e1a: f1f6 sd t4,224(sp) - 80205e1c: f5fa sd t5,232(sp) - 80205e1e: f9fe sd t6,240(sp) - 80205e20: f73fc0ef jal ra,80202d92 <kerneltrap> - 80205e24: 6082 ld ra,0(sp) - 80205e26: 6122 ld sp,8(sp) - 80205e28: 61c2 ld gp,16(sp) - 80205e2a: 7282 ld t0,32(sp) - 80205e2c: 7322 ld t1,40(sp) - 80205e2e: 73c2 ld t2,48(sp) - 80205e30: 7462 ld s0,56(sp) - 80205e32: 6486 ld s1,64(sp) - 80205e34: 6526 ld a0,72(sp) - 80205e36: 65c6 ld a1,80(sp) - 80205e38: 6666 ld a2,88(sp) - 80205e3a: 7686 ld a3,96(sp) - 80205e3c: 7726 ld a4,104(sp) - 80205e3e: 77c6 ld a5,112(sp) - 80205e40: 7866 ld a6,120(sp) - 80205e42: 688a ld a7,128(sp) - 80205e44: 692a ld s2,136(sp) - 80205e46: 69ca ld s3,144(sp) - 80205e48: 6a6a ld s4,152(sp) - 80205e4a: 7a8a ld s5,160(sp) - 80205e4c: 7b2a ld s6,168(sp) - 80205e4e: 7bca ld s7,176(sp) - 80205e50: 7c6a ld s8,184(sp) - 80205e52: 6c8e ld s9,192(sp) - 80205e54: 6d2e ld s10,200(sp) - 80205e56: 6dce ld s11,208(sp) - 80205e58: 6e6e ld t3,216(sp) - 80205e5a: 7e8e ld t4,224(sp) - 80205e5c: 7f2e ld t5,232(sp) - 80205e5e: 7fce ld t6,240(sp) - 80205e60: 6111 addi sp,sp,256 - 80205e62: 10200073 sret +0000000080205da0 <kernelvec>: + 80205da0: 7111 addi sp,sp,-256 + 80205da2: e006 sd ra,0(sp) + 80205da4: e40a sd sp,8(sp) + 80205da6: e80e sd gp,16(sp) + 80205da8: ec12 sd tp,24(sp) + 80205daa: f016 sd t0,32(sp) + 80205dac: f41a sd t1,40(sp) + 80205dae: f81e sd t2,48(sp) + 80205db0: fc22 sd s0,56(sp) + 80205db2: e0a6 sd s1,64(sp) + 80205db4: e4aa sd a0,72(sp) + 80205db6: e8ae sd a1,80(sp) + 80205db8: ecb2 sd a2,88(sp) + 80205dba: f0b6 sd a3,96(sp) + 80205dbc: f4ba sd a4,104(sp) + 80205dbe: f8be sd a5,112(sp) + 80205dc0: fcc2 sd a6,120(sp) + 80205dc2: e146 sd a7,128(sp) + 80205dc4: e54a sd s2,136(sp) + 80205dc6: e94e sd s3,144(sp) + 80205dc8: ed52 sd s4,152(sp) + 80205dca: f156 sd s5,160(sp) + 80205dcc: f55a sd s6,168(sp) + 80205dce: f95e sd s7,176(sp) + 80205dd0: fd62 sd s8,184(sp) + 80205dd2: e1e6 sd s9,192(sp) + 80205dd4: e5ea sd s10,200(sp) + 80205dd6: e9ee sd s11,208(sp) + 80205dd8: edf2 sd t3,216(sp) + 80205dda: f1f6 sd t4,224(sp) + 80205ddc: f5fa sd t5,232(sp) + 80205dde: f9fe sd t6,240(sp) + 80205de0: fb7fc0ef jal ra,80202d96 <kerneltrap> + 80205de4: 6082 ld ra,0(sp) + 80205de6: 6122 ld sp,8(sp) + 80205de8: 61c2 ld gp,16(sp) + 80205dea: 7282 ld t0,32(sp) + 80205dec: 7322 ld t1,40(sp) + 80205dee: 73c2 ld t2,48(sp) + 80205df0: 7462 ld s0,56(sp) + 80205df2: 6486 ld s1,64(sp) + 80205df4: 6526 ld a0,72(sp) + 80205df6: 65c6 ld a1,80(sp) + 80205df8: 6666 ld a2,88(sp) + 80205dfa: 7686 ld a3,96(sp) + 80205dfc: 7726 ld a4,104(sp) + 80205dfe: 77c6 ld a5,112(sp) + 80205e00: 7866 ld a6,120(sp) + 80205e02: 688a ld a7,128(sp) + 80205e04: 692a ld s2,136(sp) + 80205e06: 69ca ld s3,144(sp) + 80205e08: 6a6a ld s4,152(sp) + 80205e0a: 7a8a ld s5,160(sp) + 80205e0c: 7b2a ld s6,168(sp) + 80205e0e: 7bca ld s7,176(sp) + 80205e10: 7c6a ld s8,184(sp) + 80205e12: 6c8e ld s9,192(sp) + 80205e14: 6d2e ld s10,200(sp) + 80205e16: 6dce ld s11,208(sp) + 80205e18: 6e6e ld t3,216(sp) + 80205e1a: 7e8e ld t4,224(sp) + 80205e1c: 7f2e ld t5,232(sp) + 80205e1e: 7fce ld t6,240(sp) + 80205e20: 6111 addi sp,sp,256 + 80205e22: 10200073 sret ... -0000000080205e6e <timerinit>: +0000000080205e2e <timerinit>: #include "include/proc.h" struct spinlock tickslock; uint ticks; void timerinit() { - 80205e6e: 1141 addi sp,sp,-16 - 80205e70: e406 sd ra,8(sp) - 80205e72: e022 sd s0,0(sp) - 80205e74: 0800 addi s0,sp,16 + 80205e2e: 1141 addi sp,sp,-16 + 80205e30: e406 sd ra,8(sp) + 80205e32: e022 sd s0,0(sp) + 80205e34: 0800 addi s0,sp,16 initlock(&tickslock, "time"); - 80205e76: 00005597 auipc a1,0x5 - 80205e7a: ee258593 addi a1,a1,-286 # 8020ad58 <digits+0x9d8> - 80205e7e: 0002d517 auipc a0,0x2d - 80205e82: cea50513 addi a0,a0,-790 # 80232b68 <tickslock> - 80205e86: ffffa097 auipc ra,0xffffa - 80205e8a: 7fc080e7 jalr 2044(ra) # 80200682 <initlock> + 80205e36: 00005597 auipc a1,0x5 + 80205e3a: f1a58593 addi a1,a1,-230 # 8020ad50 <digits+0x9d0> + 80205e3e: 0002d517 auipc a0,0x2d + 80205e42: d2a50513 addi a0,a0,-726 # 80232b68 <tickslock> + 80205e46: ffffb097 auipc ra,0xffffb + 80205e4a: 83c080e7 jalr -1988(ra) # 80200682 <initlock> #ifdef DEBUG printf("timerinit\n"); #endif } - 80205e8e: 60a2 ld ra,8(sp) - 80205e90: 6402 ld s0,0(sp) - 80205e92: 0141 addi sp,sp,16 - 80205e94: 8082 ret + 80205e4e: 60a2 ld ra,8(sp) + 80205e50: 6402 ld s0,0(sp) + 80205e52: 0141 addi sp,sp,16 + 80205e54: 8082 ret -0000000080205e96 <set_next_timeout>: +0000000080205e56 <set_next_timeout>: void set_next_timeout() { - 80205e96: 1141 addi sp,sp,-16 - 80205e98: e422 sd s0,8(sp) - 80205e9a: 0800 addi s0,sp,16 + 80205e56: 1141 addi sp,sp,-16 + 80205e58: e422 sd s0,8(sp) + 80205e5a: 0800 addi s0,sp,16 asm volatile("rdtime %0" : "=r" (x) ); - 80205e9c: c0102573 rdtime a0 + 80205e5c: 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); - 80205ea0: 001dc7b7 lui a5,0x1dc - 80205ea4: 13078793 addi a5,a5,304 # 1dc130 <_entry-0x80023ed0> - 80205ea8: 953e add a0,a0,a5 + 80205e60: 001dc7b7 lui a5,0x1dc + 80205e64: 13078793 addi a5,a5,304 # 1dc130 <_entry-0x80023ed0> + 80205e68: 953e add a0,a0,a5 SBI_CALL_1(SBI_SET_TIMER, stime_value); - 80205eaa: 4581 li a1,0 - 80205eac: 4601 li a2,0 - 80205eae: 4681 li a3,0 - 80205eb0: 4881 li a7,0 - 80205eb2: 00000073 ecall + 80205e6a: 4581 li a1,0 + 80205e6c: 4601 li a2,0 + 80205e6e: 4681 li a3,0 + 80205e70: 4881 li a7,0 + 80205e72: 00000073 ecall } - 80205eb6: 6422 ld s0,8(sp) - 80205eb8: 0141 addi sp,sp,16 - 80205eba: 8082 ret + 80205e76: 6422 ld s0,8(sp) + 80205e78: 0141 addi sp,sp,16 + 80205e7a: 8082 ret -0000000080205ebc <timer_tick>: +0000000080205e7c <timer_tick>: void timer_tick() { - 80205ebc: 1101 addi sp,sp,-32 - 80205ebe: ec06 sd ra,24(sp) - 80205ec0: e822 sd s0,16(sp) - 80205ec2: e426 sd s1,8(sp) - 80205ec4: 1000 addi s0,sp,32 + 80205e7c: 1101 addi sp,sp,-32 + 80205e7e: ec06 sd ra,24(sp) + 80205e80: e822 sd s0,16(sp) + 80205e82: e426 sd s1,8(sp) + 80205e84: 1000 addi s0,sp,32 acquire(&tickslock); - 80205ec6: 0002d497 auipc s1,0x2d - 80205eca: ca248493 addi s1,s1,-862 # 80232b68 <tickslock> - 80205ece: 8526 mv a0,s1 - 80205ed0: ffffa097 auipc ra,0xffffa - 80205ed4: 7f6080e7 jalr 2038(ra) # 802006c6 <acquire> + 80205e86: 0002d497 auipc s1,0x2d + 80205e8a: ce248493 addi s1,s1,-798 # 80232b68 <tickslock> + 80205e8e: 8526 mv a0,s1 + 80205e90: ffffb097 auipc ra,0xffffb + 80205e94: 836080e7 jalr -1994(ra) # 802006c6 <acquire> ticks++; - 80205ed8: 4c9c lw a5,24(s1) - 80205eda: 2785 addiw a5,a5,1 - 80205edc: cc9c sw a5,24(s1) + 80205e98: 4c9c lw a5,24(s1) + 80205e9a: 2785 addiw a5,a5,1 + 80205e9c: cc9c sw a5,24(s1) wakeup(&ticks); - 80205ede: 0002d517 auipc a0,0x2d - 80205ee2: ca250513 addi a0,a0,-862 # 80232b80 <ticks> - 80205ee6: ffffd097 auipc ra,0xffffd - 80205eea: 81a080e7 jalr -2022(ra) # 80202700 <wakeup> + 80205e9e: 0002d517 auipc a0,0x2d + 80205ea2: ce250513 addi a0,a0,-798 # 80232b80 <ticks> + 80205ea6: ffffd097 auipc ra,0xffffd + 80205eaa: 854080e7 jalr -1964(ra) # 802026fa <wakeup> release(&tickslock); - 80205eee: 8526 mv a0,s1 - 80205ef0: ffffb097 auipc ra,0xffffb - 80205ef4: 82a080e7 jalr -2006(ra) # 8020071a <release> + 80205eae: 8526 mv a0,s1 + 80205eb0: ffffb097 auipc ra,0xffffb + 80205eb4: 86a080e7 jalr -1942(ra) # 8020071a <release> set_next_timeout(); - 80205ef8: 00000097 auipc ra,0x0 - 80205efc: f9e080e7 jalr -98(ra) # 80205e96 <set_next_timeout> + 80205eb8: 00000097 auipc ra,0x0 + 80205ebc: f9e080e7 jalr -98(ra) # 80205e56 <set_next_timeout> } - 80205f00: 60e2 ld ra,24(sp) - 80205f02: 6442 ld s0,16(sp) - 80205f04: 64a2 ld s1,8(sp) - 80205f06: 6105 addi sp,sp,32 - 80205f08: 8082 ret + 80205ec0: 60e2 ld ra,24(sp) + 80205ec2: 6442 ld s0,16(sp) + 80205ec4: 64a2 ld s1,8(sp) + 80205ec6: 6105 addi sp,sp,32 + 80205ec8: 8082 ret -0000000080205f0a <disk_init>: +0000000080205eca <disk_init>: #else #include "include/virtio.h" #endif void disk_init(void) { - 80205f0a: 1141 addi sp,sp,-16 - 80205f0c: e406 sd ra,8(sp) - 80205f0e: e022 sd s0,0(sp) - 80205f10: 0800 addi s0,sp,16 + 80205eca: 1141 addi sp,sp,-16 + 80205ecc: e406 sd ra,8(sp) + 80205ece: e022 sd s0,0(sp) + 80205ed0: 0800 addi s0,sp,16 #ifdef QEMU virtio_disk_init(); - 80205f12: 00002097 auipc ra,0x2 - 80205f16: eaa080e7 jalr -342(ra) # 80207dbc <virtio_disk_init> + 80205ed2: 00002097 auipc ra,0x2 + 80205ed6: eaa080e7 jalr -342(ra) # 80207d7c <virtio_disk_init> #else sdcard_init(); #endif } - 80205f1a: 60a2 ld ra,8(sp) - 80205f1c: 6402 ld s0,0(sp) - 80205f1e: 0141 addi sp,sp,16 - 80205f20: 8082 ret + 80205eda: 60a2 ld ra,8(sp) + 80205edc: 6402 ld s0,0(sp) + 80205ede: 0141 addi sp,sp,16 + 80205ee0: 8082 ret -0000000080205f22 <disk_read>: +0000000080205ee2 <disk_read>: void disk_read(struct buf *b) { - 80205f22: 1141 addi sp,sp,-16 - 80205f24: e406 sd ra,8(sp) - 80205f26: e022 sd s0,0(sp) - 80205f28: 0800 addi s0,sp,16 + 80205ee2: 1141 addi sp,sp,-16 + 80205ee4: e406 sd ra,8(sp) + 80205ee6: e022 sd s0,0(sp) + 80205ee8: 0800 addi s0,sp,16 #ifdef QEMU virtio_disk_rw(b, 0); - 80205f2a: 4581 li a1,0 - 80205f2c: 00002097 auipc ra,0x2 - 80205f30: 016080e7 jalr 22(ra) # 80207f42 <virtio_disk_rw> + 80205eea: 4581 li a1,0 + 80205eec: 00002097 auipc ra,0x2 + 80205ef0: 016080e7 jalr 22(ra) # 80207f02 <virtio_disk_rw> #else sdcard_read_sector(b->data, b->sectorno); #endif } - 80205f34: 60a2 ld ra,8(sp) - 80205f36: 6402 ld s0,0(sp) - 80205f38: 0141 addi sp,sp,16 - 80205f3a: 8082 ret + 80205ef4: 60a2 ld ra,8(sp) + 80205ef6: 6402 ld s0,0(sp) + 80205ef8: 0141 addi sp,sp,16 + 80205efa: 8082 ret -0000000080205f3c <disk_write>: +0000000080205efc <disk_write>: void disk_write(struct buf *b) { - 80205f3c: 1141 addi sp,sp,-16 - 80205f3e: e406 sd ra,8(sp) - 80205f40: e022 sd s0,0(sp) - 80205f42: 0800 addi s0,sp,16 + 80205efc: 1141 addi sp,sp,-16 + 80205efe: e406 sd ra,8(sp) + 80205f00: e022 sd s0,0(sp) + 80205f02: 0800 addi s0,sp,16 #ifdef QEMU virtio_disk_rw(b, 1); - 80205f44: 4585 li a1,1 - 80205f46: 00002097 auipc ra,0x2 - 80205f4a: ffc080e7 jalr -4(ra) # 80207f42 <virtio_disk_rw> + 80205f04: 4585 li a1,1 + 80205f06: 00002097 auipc ra,0x2 + 80205f0a: ffc080e7 jalr -4(ra) # 80207f02 <virtio_disk_rw> #else sdcard_write_sector(b->data, b->sectorno); #endif } - 80205f4e: 60a2 ld ra,8(sp) - 80205f50: 6402 ld s0,0(sp) - 80205f52: 0141 addi sp,sp,16 - 80205f54: 8082 ret + 80205f0e: 60a2 ld ra,8(sp) + 80205f10: 6402 ld s0,0(sp) + 80205f12: 0141 addi sp,sp,16 + 80205f14: 8082 ret -0000000080205f56 <disk_intr>: +0000000080205f16 <disk_intr>: void disk_intr(void) { - 80205f56: 1141 addi sp,sp,-16 - 80205f58: e406 sd ra,8(sp) - 80205f5a: e022 sd s0,0(sp) - 80205f5c: 0800 addi s0,sp,16 + 80205f16: 1141 addi sp,sp,-16 + 80205f18: e406 sd ra,8(sp) + 80205f1a: e022 sd s0,0(sp) + 80205f1c: 0800 addi s0,sp,16 #ifdef QEMU virtio_disk_intr(); - 80205f5e: 00002097 auipc ra,0x2 - 80205f62: 270080e7 jalr 624(ra) # 802081ce <virtio_disk_intr> + 80205f1e: 00002097 auipc ra,0x2 + 80205f22: 270080e7 jalr 624(ra) # 8020818e <virtio_disk_intr> #else dmac_intr(DMAC_CHANNEL0); #endif } - 80205f66: 60a2 ld ra,8(sp) - 80205f68: 6402 ld s0,0(sp) - 80205f6a: 0141 addi sp,sp,16 - 80205f6c: 8082 ret + 80205f26: 60a2 ld ra,8(sp) + 80205f28: 6402 ld s0,0(sp) + 80205f2a: 0141 addi sp,sp,16 + 80205f2c: 8082 ret -0000000080205f6e <read_fat>: +0000000080205f2e <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) { - 80205f6e: 1101 addi sp,sp,-32 - 80205f70: ec06 sd ra,24(sp) - 80205f72: e822 sd s0,16(sp) - 80205f74: e426 sd s1,8(sp) - 80205f76: e04a sd s2,0(sp) - 80205f78: 1000 addi s0,sp,32 + 80205f2e: 1101 addi sp,sp,-32 + 80205f30: ec06 sd ra,24(sp) + 80205f32: e822 sd s0,16(sp) + 80205f34: e426 sd s1,8(sp) + 80205f36: e04a sd s2,0(sp) + 80205f38: 1000 addi s0,sp,32 if (cluster >= FAT32_EOC) { - 80205f7a: 100007b7 lui a5,0x10000 - 80205f7e: 17dd addi a5,a5,-9 # ffffff7 <_entry-0x70200009> + 80205f3a: 100007b7 lui a5,0x10000 + 80205f3e: 17dd addi a5,a5,-9 # ffffff7 <_entry-0x70200009> return cluster; - 80205f80: 84aa mv s1,a0 + 80205f40: 84aa mv s1,a0 if (cluster >= FAT32_EOC) { - 80205f82: 00a7ea63 bltu a5,a0,80205f96 <read_fat+0x28> + 80205f42: 00a7ea63 bltu a5,a0,80205f56 <read_fat+0x28> } if (cluster > fat.data_clus_cnt + 1) { // because cluster number starts at 2, not 0 - 80205f86: 0002d797 auipc a5,0x2d - 80205f8a: c0a7a783 lw a5,-1014(a5) # 80232b90 <fat+0x8> - 80205f8e: 2785 addiw a5,a5,1 + 80205f46: 0002d797 auipc a5,0x2d + 80205f4a: c4a7a783 lw a5,-950(a5) # 80232b90 <fat+0x8> + 80205f4e: 2785 addiw a5,a5,1 return 0; - 80205f90: 4481 li s1,0 + 80205f50: 4481 li s1,0 if (cluster > fat.data_clus_cnt + 1) { // because cluster number starts at 2, not 0 - 80205f92: 00a7f963 bgeu a5,a0,80205fa4 <read_fat+0x36> + 80205f52: 00a7f963 bgeu a5,a0,80205f64 <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; } - 80205f96: 8526 mv a0,s1 - 80205f98: 60e2 ld ra,24(sp) - 80205f9a: 6442 ld s0,16(sp) - 80205f9c: 64a2 ld s1,8(sp) - 80205f9e: 6902 ld s2,0(sp) - 80205fa0: 6105 addi sp,sp,32 - 80205fa2: 8082 ret + 80205f56: 8526 mv a0,s1 + 80205f58: 60e2 ld ra,24(sp) + 80205f5a: 6442 ld s0,16(sp) + 80205f5c: 64a2 ld s1,8(sp) + 80205f5e: 6902 ld s2,0(sp) + 80205f60: 6105 addi sp,sp,32 + 80205f62: 8082 ret return fat.bpb.rsvd_sec_cnt + (cluster << 2) / fat.bpb.byts_per_sec + fat.bpb.fat_sz * (fat_num - 1); - 80205fa4: 0025149b slliw s1,a0,0x2 - 80205fa8: 0002d917 auipc s2,0x2d - 80205fac: be090913 addi s2,s2,-1056 # 80232b88 <fat> - 80205fb0: 01095783 lhu a5,16(s2) - 80205fb4: 02f4d7bb divuw a5,s1,a5 - 80205fb8: 01495583 lhu a1,20(s2) + 80205f64: 0025149b slliw s1,a0,0x2 + 80205f68: 0002d917 auipc s2,0x2d + 80205f6c: c2090913 addi s2,s2,-992 # 80232b88 <fat> + 80205f70: 01095783 lhu a5,16(s2) + 80205f74: 02f4d7bb divuw a5,s1,a5 + 80205f78: 01495583 lhu a1,20(s2) struct buf *b = bread(0, fat_sec); - 80205fbc: 9dbd addw a1,a1,a5 - 80205fbe: 4501 li a0,0 - 80205fc0: ffffe097 auipc ra,0xffffe - 80205fc4: c06080e7 jalr -1018(ra) # 80203bc6 <bread> + 80205f7c: 9dbd addw a1,a1,a5 + 80205f7e: 4501 li a0,0 + 80205f80: ffffe097 auipc ra,0xffffe + 80205f84: c4a080e7 jalr -950(ra) # 80203bca <bread> return (cluster << 2) % fat.bpb.byts_per_sec; - 80205fc8: 01095783 lhu a5,16(s2) - 80205fcc: 02f4f4bb remuw s1,s1,a5 + 80205f88: 01095783 lhu a5,16(s2) + 80205f8c: 02f4f4bb remuw s1,s1,a5 uint32 next_clus = *(uint32 *)(b->data + fat_offset_of_clus(cluster)); - 80205fd0: 1482 slli s1,s1,0x20 - 80205fd2: 9081 srli s1,s1,0x20 - 80205fd4: 009507b3 add a5,a0,s1 - 80205fd8: 4fa4 lw s1,88(a5) + 80205f90: 1482 slli s1,s1,0x20 + 80205f92: 9081 srli s1,s1,0x20 + 80205f94: 009507b3 add a5,a0,s1 + 80205f98: 4fa4 lw s1,88(a5) brelse(b); - 80205fda: ffffe097 auipc ra,0xffffe - 80205fde: d18080e7 jalr -744(ra) # 80203cf2 <brelse> + 80205f9a: ffffe097 auipc ra,0xffffe + 80205f9e: d5c080e7 jalr -676(ra) # 80203cf6 <brelse> return next_clus; - 80205fe2: bf55 j 80205f96 <read_fat+0x28> + 80205fa2: bf55 j 80205f56 <read_fat+0x28> -0000000080205fe4 <alloc_clus>: +0000000080205fa4 <alloc_clus>: brelse(b); } } static uint32 alloc_clus(uint8 dev) { - 80205fe4: 711d addi sp,sp,-96 - 80205fe6: ec86 sd ra,88(sp) - 80205fe8: e8a2 sd s0,80(sp) - 80205fea: e4a6 sd s1,72(sp) - 80205fec: e0ca sd s2,64(sp) - 80205fee: fc4e sd s3,56(sp) - 80205ff0: f852 sd s4,48(sp) - 80205ff2: f456 sd s5,40(sp) - 80205ff4: f05a sd s6,32(sp) - 80205ff6: ec5e sd s7,24(sp) - 80205ff8: e862 sd s8,16(sp) - 80205ffa: e466 sd s9,8(sp) - 80205ffc: 1080 addi s0,sp,96 + 80205fa4: 711d addi sp,sp,-96 + 80205fa6: ec86 sd ra,88(sp) + 80205fa8: e8a2 sd s0,80(sp) + 80205faa: e4a6 sd s1,72(sp) + 80205fac: e0ca sd s2,64(sp) + 80205fae: fc4e sd s3,56(sp) + 80205fb0: f852 sd s4,48(sp) + 80205fb2: f456 sd s5,40(sp) + 80205fb4: f05a sd s6,32(sp) + 80205fb6: ec5e sd s7,24(sp) + 80205fb8: e862 sd s8,16(sp) + 80205fba: e466 sd s9,8(sp) + 80205fbc: 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; - 80205ffe: 0002d797 auipc a5,0x2d - 80206002: b8a78793 addi a5,a5,-1142 # 80232b88 <fat> - 80206006: 0147db83 lhu s7,20(a5) + 80205fbe: 0002d797 auipc a5,0x2d + 80205fc2: bca78793 addi a5,a5,-1078 # 80232b88 <fat> + 80205fc6: 0147db83 lhu s7,20(a5) uint32 const ent_per_sec = fat.bpb.byts_per_sec / sizeof(uint32); - 8020600a: 0107d903 lhu s2,16(a5) + 80205fca: 0107d903 lhu s2,16(a5) for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) { - 8020600e: 539c lw a5,32(a5) - 80206010: 10078363 beqz a5,80206116 <alloc_clus+0x132> - 80206014: 0029591b srliw s2,s2,0x2 - 80206018: 0009099b sext.w s3,s2 - 8020601c: 4b01 li s6,0 + 80205fce: 539c lw a5,32(a5) + 80205fd0: 10078363 beqz a5,802060d6 <alloc_clus+0x132> + 80205fd4: 0029591b srliw s2,s2,0x2 + 80205fd8: 0009099b sext.w s3,s2 + 80205fdc: 4b01 li s6,0 b = bread(dev, sec); - 8020601e: 00050a9b sext.w s5,a0 + 80205fde: 00050a9b sext.w s5,a0 for (uint32 j = 0; j < ent_per_sec; j++) { - 80206022: 4c01 li s8,0 + 80205fe2: 4c01 li s8,0 for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) { - 80206024: 0002dc97 auipc s9,0x2d - 80206028: b64c8c93 addi s9,s9,-1180 # 80232b88 <fat> - 8020602c: a0c9 j 802060ee <alloc_clus+0x10a> + 80205fe4: 0002dc97 auipc s9,0x2d + 80205fe8: ba4c8c93 addi s9,s9,-1116 # 80232b88 <fat> + 80205fec: a0c9 j 802060ae <alloc_clus+0x10a> if (((uint32 *)(b->data))[j] == 0) { ((uint32 *)(b->data))[j] = FAT32_EOC + 7; - 8020602e: 100007b7 lui a5,0x10000 - 80206032: 17fd addi a5,a5,-1 # fffffff <_entry-0x70200001> - 80206034: c29c sw a5,0(a3) + 80205fee: 100007b7 lui a5,0x10000 + 80205ff2: 17fd addi a5,a5,-1 # fffffff <_entry-0x70200001> + 80205ff4: c29c sw a5,0(a3) bwrite(b); - 80206036: 8552 mv a0,s4 - 80206038: ffffe097 auipc ra,0xffffe - 8020603c: c7e080e7 jalr -898(ra) # 80203cb6 <bwrite> + 80205ff6: 8552 mv a0,s4 + 80205ff8: ffffe097 auipc ra,0xffffe + 80205ffc: cc2080e7 jalr -830(ra) # 80203cba <bwrite> brelse(b); - 80206040: 8552 mv a0,s4 - 80206042: ffffe097 auipc ra,0xffffe - 80206046: cb0080e7 jalr -848(ra) # 80203cf2 <brelse> + 80206000: 8552 mv a0,s4 + 80206002: ffffe097 auipc ra,0xffffe + 80206006: cf4080e7 jalr -780(ra) # 80203cf6 <brelse> uint32 clus = i * ent_per_sec + j; - 8020604a: 0369093b mulw s2,s2,s6 - 8020604e: 0099093b addw s2,s2,s1 - 80206052: 00090a9b sext.w s5,s2 + 8020600a: 0369093b mulw s2,s2,s6 + 8020600e: 0099093b addw s2,s2,s1 + 80206012: 00090a9b sext.w s5,s2 return ((cluster - 2) * fat.bpb.sec_per_clus) + fat.first_data_sec; - 80206056: 0002d717 auipc a4,0x2d - 8020605a: b3270713 addi a4,a4,-1230 # 80232b88 <fat> - 8020605e: 01274783 lbu a5,18(a4) - 80206062: ffe9099b addiw s3,s2,-2 - 80206066: 02f989bb mulw s3,s3,a5 - 8020606a: 4318 lw a4,0(a4) - 8020606c: 00e989bb addw s3,s3,a4 + 80206016: 0002d717 auipc a4,0x2d + 8020601a: b7270713 addi a4,a4,-1166 # 80232b88 <fat> + 8020601e: 01274783 lbu a5,18(a4) + 80206022: ffe9099b addiw s3,s2,-2 + 80206026: 02f989bb mulw s3,s3,a5 + 8020602a: 4318 lw a4,0(a4) + 8020602c: 00e989bb addw s3,s3,a4 for (int i = 0; i < fat.bpb.sec_per_clus; i++) { - 80206070: c7b1 beqz a5,802060bc <alloc_clus+0xd8> - 80206072: 4901 li s2,0 - 80206074: 0002da17 auipc s4,0x2d - 80206078: b14a0a13 addi s4,s4,-1260 # 80232b88 <fat> + 80206030: c7b1 beqz a5,8020607c <alloc_clus+0xd8> + 80206032: 4901 li s2,0 + 80206034: 0002da17 auipc s4,0x2d + 80206038: b54a0a13 addi s4,s4,-1196 # 80232b88 <fat> b = bread(0, sec++); - 8020607c: 013905bb addw a1,s2,s3 - 80206080: 4501 li a0,0 - 80206082: ffffe097 auipc ra,0xffffe - 80206086: b44080e7 jalr -1212(ra) # 80203bc6 <bread> - 8020608a: 84aa mv s1,a0 + 8020603c: 013905bb addw a1,s2,s3 + 80206040: 4501 li a0,0 + 80206042: ffffe097 auipc ra,0xffffe + 80206046: b88080e7 jalr -1144(ra) # 80203bca <bread> + 8020604a: 84aa mv s1,a0 memset(b->data, 0, BSIZE); - 8020608c: 20000613 li a2,512 - 80206090: 4581 li a1,0 - 80206092: 05850513 addi a0,a0,88 - 80206096: ffffa097 auipc ra,0xffffa - 8020609a: 6cc080e7 jalr 1740(ra) # 80200762 <memset> + 8020604c: 20000613 li a2,512 + 80206050: 4581 li a1,0 + 80206052: 05850513 addi a0,a0,88 + 80206056: ffffa097 auipc ra,0xffffa + 8020605a: 70c080e7 jalr 1804(ra) # 80200762 <memset> bwrite(b); - 8020609e: 8526 mv a0,s1 - 802060a0: ffffe097 auipc ra,0xffffe - 802060a4: c16080e7 jalr -1002(ra) # 80203cb6 <bwrite> + 8020605e: 8526 mv a0,s1 + 80206060: ffffe097 auipc ra,0xffffe + 80206064: c5a080e7 jalr -934(ra) # 80203cba <bwrite> brelse(b); - 802060a8: 8526 mv a0,s1 - 802060aa: ffffe097 auipc ra,0xffffe - 802060ae: c48080e7 jalr -952(ra) # 80203cf2 <brelse> + 80206068: 8526 mv a0,s1 + 8020606a: ffffe097 auipc ra,0xffffe + 8020606e: c8c080e7 jalr -884(ra) # 80203cf6 <brelse> for (int i = 0; i < fat.bpb.sec_per_clus; i++) { - 802060b2: 2905 addiw s2,s2,1 - 802060b4: 012a4783 lbu a5,18(s4) - 802060b8: fcf942e3 blt s2,a5,8020607c <alloc_clus+0x98> + 80206072: 2905 addiw s2,s2,1 + 80206074: 012a4783 lbu a5,18(s4) + 80206078: fcf942e3 blt s2,a5,8020603c <alloc_clus+0x98> } } brelse(b); } panic("no clusters"); } - 802060bc: 8556 mv a0,s5 - 802060be: 60e6 ld ra,88(sp) - 802060c0: 6446 ld s0,80(sp) - 802060c2: 64a6 ld s1,72(sp) - 802060c4: 6906 ld s2,64(sp) - 802060c6: 79e2 ld s3,56(sp) - 802060c8: 7a42 ld s4,48(sp) - 802060ca: 7aa2 ld s5,40(sp) - 802060cc: 7b02 ld s6,32(sp) - 802060ce: 6be2 ld s7,24(sp) - 802060d0: 6c42 ld s8,16(sp) - 802060d2: 6ca2 ld s9,8(sp) - 802060d4: 6125 addi sp,sp,96 - 802060d6: 8082 ret + 8020607c: 8556 mv a0,s5 + 8020607e: 60e6 ld ra,88(sp) + 80206080: 6446 ld s0,80(sp) + 80206082: 64a6 ld s1,72(sp) + 80206084: 6906 ld s2,64(sp) + 80206086: 79e2 ld s3,56(sp) + 80206088: 7a42 ld s4,48(sp) + 8020608a: 7aa2 ld s5,40(sp) + 8020608c: 7b02 ld s6,32(sp) + 8020608e: 6be2 ld s7,24(sp) + 80206090: 6c42 ld s8,16(sp) + 80206092: 6ca2 ld s9,8(sp) + 80206094: 6125 addi sp,sp,96 + 80206096: 8082 ret brelse(b); - 802060d8: 8552 mv a0,s4 - 802060da: ffffe097 auipc ra,0xffffe - 802060de: c18080e7 jalr -1000(ra) # 80203cf2 <brelse> + 80206098: 8552 mv a0,s4 + 8020609a: ffffe097 auipc ra,0xffffe + 8020609e: c5c080e7 jalr -932(ra) # 80203cf6 <brelse> for (uint32 i = 0; i < fat.bpb.fat_sz; i++, sec++) { - 802060e2: 2b05 addiw s6,s6,1 - 802060e4: 2b85 addiw s7,s7,1 # fffffffffffff001 <ebss_clear+0xffffffff7fdc4001> - 802060e6: 020ca783 lw a5,32(s9) - 802060ea: 02fb7663 bgeu s6,a5,80206116 <alloc_clus+0x132> + 802060a2: 2b05 addiw s6,s6,1 + 802060a4: 2b85 addiw s7,s7,1 # fffffffffffff001 <ebss_clear+0xffffffff7fdc4001> + 802060a6: 020ca783 lw a5,32(s9) + 802060aa: 02fb7663 bgeu s6,a5,802060d6 <alloc_clus+0x132> b = bread(dev, sec); - 802060ee: 85de mv a1,s7 - 802060f0: 8556 mv a0,s5 - 802060f2: ffffe097 auipc ra,0xffffe - 802060f6: ad4080e7 jalr -1324(ra) # 80203bc6 <bread> - 802060fa: 8a2a mv s4,a0 + 802060ae: 85de mv a1,s7 + 802060b0: 8556 mv a0,s5 + 802060b2: ffffe097 auipc ra,0xffffe + 802060b6: b18080e7 jalr -1256(ra) # 80203bca <bread> + 802060ba: 8a2a mv s4,a0 for (uint32 j = 0; j < ent_per_sec; j++) { - 802060fc: fc098ee3 beqz s3,802060d8 <alloc_clus+0xf4> - 80206100: 05850793 addi a5,a0,88 - 80206104: 84e2 mv s1,s8 + 802060bc: fc098ee3 beqz s3,80206098 <alloc_clus+0xf4> + 802060c0: 05850793 addi a5,a0,88 + 802060c4: 84e2 mv s1,s8 if (((uint32 *)(b->data))[j] == 0) { - 80206106: 86be mv a3,a5 - 80206108: 4398 lw a4,0(a5) - 8020610a: d315 beqz a4,8020602e <alloc_clus+0x4a> + 802060c6: 86be mv a3,a5 + 802060c8: 4398 lw a4,0(a5) + 802060ca: d315 beqz a4,80205fee <alloc_clus+0x4a> for (uint32 j = 0; j < ent_per_sec; j++) { - 8020610c: 2485 addiw s1,s1,1 - 8020610e: 0791 addi a5,a5,4 - 80206110: fe999be3 bne s3,s1,80206106 <alloc_clus+0x122> - 80206114: b7d1 j 802060d8 <alloc_clus+0xf4> + 802060cc: 2485 addiw s1,s1,1 + 802060ce: 0791 addi a5,a5,4 + 802060d0: fe999be3 bne s3,s1,802060c6 <alloc_clus+0x122> + 802060d4: b7d1 j 80206098 <alloc_clus+0xf4> panic("no clusters"); - 80206116: 00005517 auipc a0,0x5 - 8020611a: c4a50513 addi a0,a0,-950 # 8020ad60 <digits+0x9e0> - 8020611e: ffffa097 auipc ra,0xffffa - 80206122: 026080e7 jalr 38(ra) # 80200144 <panic> + 802060d6: 00005517 auipc a0,0x5 + 802060da: c8250513 addi a0,a0,-894 # 8020ad58 <digits+0x9d8> + 802060de: ffffa097 auipc ra,0xffffa + 802060e2: 066080e7 jalr 102(ra) # 80200144 <panic> -0000000080206126 <write_fat>: +00000000802060e6 <write_fat>: if (cluster > fat.data_clus_cnt + 1) { - 80206126: 0002d797 auipc a5,0x2d - 8020612a: a6a7a783 lw a5,-1430(a5) # 80232b90 <fat+0x8> - 8020612e: 2785 addiw a5,a5,1 - 80206130: 06a7e963 bltu a5,a0,802061a2 <write_fat+0x7c> + 802060e6: 0002d797 auipc a5,0x2d + 802060ea: aaa7a783 lw a5,-1366(a5) # 80232b90 <fat+0x8> + 802060ee: 2785 addiw a5,a5,1 + 802060f0: 06a7e963 bltu a5,a0,80206162 <write_fat+0x7c> { - 80206134: 7179 addi sp,sp,-48 - 80206136: f406 sd ra,40(sp) - 80206138: f022 sd s0,32(sp) - 8020613a: ec26 sd s1,24(sp) - 8020613c: e84a sd s2,16(sp) - 8020613e: e44e sd s3,8(sp) - 80206140: e052 sd s4,0(sp) - 80206142: 1800 addi s0,sp,48 - 80206144: 89ae mv s3,a1 + 802060f4: 7179 addi sp,sp,-48 + 802060f6: f406 sd ra,40(sp) + 802060f8: f022 sd s0,32(sp) + 802060fa: ec26 sd s1,24(sp) + 802060fc: e84a sd s2,16(sp) + 802060fe: e44e sd s3,8(sp) + 80206100: e052 sd s4,0(sp) + 80206102: 1800 addi s0,sp,48 + 80206104: 89ae mv s3,a1 return fat.bpb.rsvd_sec_cnt + (cluster << 2) / fat.bpb.byts_per_sec + fat.bpb.fat_sz * (fat_num - 1); - 80206146: 0025149b slliw s1,a0,0x2 - 8020614a: 0002da17 auipc s4,0x2d - 8020614e: a3ea0a13 addi s4,s4,-1474 # 80232b88 <fat> - 80206152: 010a5783 lhu a5,16(s4) - 80206156: 02f4d7bb divuw a5,s1,a5 - 8020615a: 014a5583 lhu a1,20(s4) + 80206106: 0025149b slliw s1,a0,0x2 + 8020610a: 0002da17 auipc s4,0x2d + 8020610e: a7ea0a13 addi s4,s4,-1410 # 80232b88 <fat> + 80206112: 010a5783 lhu a5,16(s4) + 80206116: 02f4d7bb divuw a5,s1,a5 + 8020611a: 014a5583 lhu a1,20(s4) struct buf *b = bread(0, fat_sec); - 8020615e: 9dbd addw a1,a1,a5 - 80206160: 4501 li a0,0 - 80206162: ffffe097 auipc ra,0xffffe - 80206166: a64080e7 jalr -1436(ra) # 80203bc6 <bread> - 8020616a: 892a mv s2,a0 + 8020611e: 9dbd addw a1,a1,a5 + 80206120: 4501 li a0,0 + 80206122: ffffe097 auipc ra,0xffffe + 80206126: aa8080e7 jalr -1368(ra) # 80203bca <bread> + 8020612a: 892a mv s2,a0 return (cluster << 2) % fat.bpb.byts_per_sec; - 8020616c: 010a5783 lhu a5,16(s4) - 80206170: 02f4f4bb remuw s1,s1,a5 + 8020612c: 010a5783 lhu a5,16(s4) + 80206130: 02f4f4bb remuw s1,s1,a5 *(uint32 *)(b->data + off) = content; - 80206174: 1482 slli s1,s1,0x20 - 80206176: 9081 srli s1,s1,0x20 - 80206178: 94aa add s1,s1,a0 - 8020617a: 0534ac23 sw s3,88(s1) + 80206134: 1482 slli s1,s1,0x20 + 80206136: 9081 srli s1,s1,0x20 + 80206138: 94aa add s1,s1,a0 + 8020613a: 0534ac23 sw s3,88(s1) bwrite(b); - 8020617e: ffffe097 auipc ra,0xffffe - 80206182: b38080e7 jalr -1224(ra) # 80203cb6 <bwrite> + 8020613e: ffffe097 auipc ra,0xffffe + 80206142: b7c080e7 jalr -1156(ra) # 80203cba <bwrite> brelse(b); - 80206186: 854a mv a0,s2 - 80206188: ffffe097 auipc ra,0xffffe - 8020618c: b6a080e7 jalr -1174(ra) # 80203cf2 <brelse> + 80206146: 854a mv a0,s2 + 80206148: ffffe097 auipc ra,0xffffe + 8020614c: bae080e7 jalr -1106(ra) # 80203cf6 <brelse> return 0; - 80206190: 4501 li a0,0 + 80206150: 4501 li a0,0 } - 80206192: 70a2 ld ra,40(sp) - 80206194: 7402 ld s0,32(sp) - 80206196: 64e2 ld s1,24(sp) - 80206198: 6942 ld s2,16(sp) - 8020619a: 69a2 ld s3,8(sp) - 8020619c: 6a02 ld s4,0(sp) - 8020619e: 6145 addi sp,sp,48 - 802061a0: 8082 ret + 80206152: 70a2 ld ra,40(sp) + 80206154: 7402 ld s0,32(sp) + 80206156: 64e2 ld s1,24(sp) + 80206158: 6942 ld s2,16(sp) + 8020615a: 69a2 ld s3,8(sp) + 8020615c: 6a02 ld s4,0(sp) + 8020615e: 6145 addi sp,sp,48 + 80206160: 8082 ret return -1; - 802061a2: 557d li a0,-1 + 80206162: 557d li a0,-1 } - 802061a4: 8082 ret + 80206164: 8082 ret -00000000802061a6 <reloc_clus>: +0000000080206166 <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) { - 802061a6: 715d addi sp,sp,-80 - 802061a8: e486 sd ra,72(sp) - 802061aa: e0a2 sd s0,64(sp) - 802061ac: fc26 sd s1,56(sp) - 802061ae: f84a sd s2,48(sp) - 802061b0: f44e sd s3,40(sp) - 802061b2: f052 sd s4,32(sp) - 802061b4: ec56 sd s5,24(sp) - 802061b6: e85a sd s6,16(sp) - 802061b8: e45e sd s7,8(sp) - 802061ba: 0880 addi s0,sp,80 - 802061bc: 84aa mv s1,a0 - 802061be: 8a2e mv s4,a1 + 80206166: 715d addi sp,sp,-80 + 80206168: e486 sd ra,72(sp) + 8020616a: e0a2 sd s0,64(sp) + 8020616c: fc26 sd s1,56(sp) + 8020616e: f84a sd s2,48(sp) + 80206170: f44e sd s3,40(sp) + 80206172: f052 sd s4,32(sp) + 80206174: ec56 sd s5,24(sp) + 80206176: e85a sd s6,16(sp) + 80206178: e45e sd s7,8(sp) + 8020617a: 0880 addi s0,sp,80 + 8020617c: 84aa mv s1,a0 + 8020617e: 8a2e mv s4,a1 int clus_num = off / fat.byts_per_clus; - 802061c0: 0002db97 auipc s7,0x2d - 802061c4: 9d4bab83 lw s7,-1580(s7) # 80232b94 <fat+0xc> - 802061c8: 0375d9bb divuw s3,a1,s7 + 80206180: 0002db97 auipc s7,0x2d + 80206184: a14bab83 lw s7,-1516(s7) # 80232b94 <fat+0xc> + 80206188: 0375d9bb divuw s3,a1,s7 while (clus_num > entry->clus_cnt) { - 802061cc: 11052703 lw a4,272(a0) - 802061d0: 07377563 bgeu a4,s3,8020623a <reloc_clus+0x94> - 802061d4: 8b32 mv s6,a2 + 8020618c: 11052703 lw a4,272(a0) + 80206190: 07377563 bgeu a4,s3,802061fa <reloc_clus+0x94> + 80206194: 8b32 mv s6,a2 int clus = read_fat(entry->cur_clus); if (clus >= FAT32_EOC) { - 802061d6: 10000ab7 lui s5,0x10000 - 802061da: 1add addi s5,s5,-9 # ffffff7 <_entry-0x70200009> - 802061dc: a81d j 80206212 <reloc_clus+0x6c> + 80206196: 10000ab7 lui s5,0x10000 + 8020619a: 1add addi s5,s5,-9 # ffffff7 <_entry-0x70200009> + 8020619c: a81d j 802061d2 <reloc_clus+0x6c> if (alloc) { clus = alloc_clus(entry->dev); - 802061de: 1144c503 lbu a0,276(s1) - 802061e2: 00000097 auipc ra,0x0 - 802061e6: e02080e7 jalr -510(ra) # 80205fe4 <alloc_clus> - 802061ea: 0005091b sext.w s2,a0 + 8020619e: 1144c503 lbu a0,276(s1) + 802061a2: 00000097 auipc ra,0x0 + 802061a6: e02080e7 jalr -510(ra) # 80205fa4 <alloc_clus> + 802061aa: 0005091b sext.w s2,a0 write_fat(entry->cur_clus, clus); - 802061ee: 85ca mv a1,s2 - 802061f0: 10c4a503 lw a0,268(s1) - 802061f4: 00000097 auipc ra,0x0 - 802061f8: f32080e7 jalr -206(ra) # 80206126 <write_fat> + 802061ae: 85ca mv a1,s2 + 802061b0: 10c4a503 lw a0,268(s1) + 802061b4: 00000097 auipc ra,0x0 + 802061b8: f32080e7 jalr -206(ra) # 802060e6 <write_fat> entry->cur_clus = entry->first_clus; entry->clus_cnt = 0; return -1; } } entry->cur_clus = clus; - 802061fc: 1124a623 sw s2,268(s1) + 802061bc: 1124a623 sw s2,268(s1) entry->clus_cnt++; - 80206200: 1104a783 lw a5,272(s1) - 80206204: 2785 addiw a5,a5,1 - 80206206: 0007871b sext.w a4,a5 - 8020620a: 10f4a823 sw a5,272(s1) + 802061c0: 1104a783 lw a5,272(s1) + 802061c4: 2785 addiw a5,a5,1 + 802061c6: 0007871b sext.w a4,a5 + 802061ca: 10f4a823 sw a5,272(s1) while (clus_num > entry->clus_cnt) { - 8020620e: 03377663 bgeu a4,s3,8020623a <reloc_clus+0x94> + 802061ce: 03377663 bgeu a4,s3,802061fa <reloc_clus+0x94> int clus = read_fat(entry->cur_clus); - 80206212: 10c4a503 lw a0,268(s1) - 80206216: 00000097 auipc ra,0x0 - 8020621a: d58080e7 jalr -680(ra) # 80205f6e <read_fat> - 8020621e: 0005091b sext.w s2,a0 + 802061d2: 10c4a503 lw a0,268(s1) + 802061d6: 00000097 auipc ra,0x0 + 802061da: d58080e7 jalr -680(ra) # 80205f2e <read_fat> + 802061de: 0005091b sext.w s2,a0 if (clus >= FAT32_EOC) { - 80206222: fd2adde3 bge s5,s2,802061fc <reloc_clus+0x56> + 802061e2: fd2adde3 bge s5,s2,802061bc <reloc_clus+0x56> if (alloc) { - 80206226: fa0b1ce3 bnez s6,802061de <reloc_clus+0x38> + 802061e6: fa0b1ce3 bnez s6,8020619e <reloc_clus+0x38> entry->cur_clus = entry->first_clus; - 8020622a: 1044a783 lw a5,260(s1) - 8020622e: 10f4a623 sw a5,268(s1) + 802061ea: 1044a783 lw a5,260(s1) + 802061ee: 10f4a623 sw a5,268(s1) entry->clus_cnt = 0; - 80206232: 1004a823 sw zero,272(s1) + 802061f2: 1004a823 sw zero,272(s1) return -1; - 80206236: 557d li a0,-1 - 80206238: a881 j 80206288 <reloc_clus+0xe2> + 802061f6: 557d li a0,-1 + 802061f8: a881 j 80206248 <reloc_clus+0xe2> } if (clus_num < entry->clus_cnt) { - 8020623a: 04e9f163 bgeu s3,a4,8020627c <reloc_clus+0xd6> + 802061fa: 04e9f163 bgeu s3,a4,8020623c <reloc_clus+0xd6> entry->cur_clus = entry->first_clus; - 8020623e: 1044a783 lw a5,260(s1) - 80206242: 10f4a623 sw a5,268(s1) + 802061fe: 1044a783 lw a5,260(s1) + 80206202: 10f4a623 sw a5,268(s1) entry->clus_cnt = 0; - 80206246: 1004a823 sw zero,272(s1) + 80206206: 1004a823 sw zero,272(s1) while (entry->clus_cnt < clus_num) { - 8020624a: 037a6963 bltu s4,s7,8020627c <reloc_clus+0xd6> + 8020620a: 037a6963 bltu s4,s7,8020623c <reloc_clus+0xd6> entry->cur_clus = read_fat(entry->cur_clus); if (entry->cur_clus >= FAT32_EOC) { - 8020624e: 10000937 lui s2,0x10000 - 80206252: 195d addi s2,s2,-9 # ffffff7 <_entry-0x70200009> + 8020620e: 10000937 lui s2,0x10000 + 80206212: 195d addi s2,s2,-9 # ffffff7 <_entry-0x70200009> entry->cur_clus = read_fat(entry->cur_clus); - 80206254: 10c4a503 lw a0,268(s1) - 80206258: 00000097 auipc ra,0x0 - 8020625c: d16080e7 jalr -746(ra) # 80205f6e <read_fat> - 80206260: 2501 sext.w a0,a0 - 80206262: 10a4a623 sw a0,268(s1) + 80206214: 10c4a503 lw a0,268(s1) + 80206218: 00000097 auipc ra,0x0 + 8020621c: d16080e7 jalr -746(ra) # 80205f2e <read_fat> + 80206220: 2501 sext.w a0,a0 + 80206222: 10a4a623 sw a0,268(s1) if (entry->cur_clus >= FAT32_EOC) { - 80206266: 02a96c63 bltu s2,a0,8020629e <reloc_clus+0xf8> + 80206226: 02a96c63 bltu s2,a0,8020625e <reloc_clus+0xf8> panic("reloc_clus"); } entry->clus_cnt++; - 8020626a: 1104a783 lw a5,272(s1) - 8020626e: 2785 addiw a5,a5,1 - 80206270: 0007871b sext.w a4,a5 - 80206274: 10f4a823 sw a5,272(s1) + 8020622a: 1104a783 lw a5,272(s1) + 8020622e: 2785 addiw a5,a5,1 + 80206230: 0007871b sext.w a4,a5 + 80206234: 10f4a823 sw a5,272(s1) while (entry->clus_cnt < clus_num) { - 80206278: fd376ee3 bltu a4,s3,80206254 <reloc_clus+0xae> + 80206238: fd376ee3 bltu a4,s3,80206214 <reloc_clus+0xae> } } return off % fat.byts_per_clus; - 8020627c: 0002d797 auipc a5,0x2d - 80206280: 9187a783 lw a5,-1768(a5) # 80232b94 <fat+0xc> - 80206284: 02fa753b remuw a0,s4,a5 + 8020623c: 0002d797 auipc a5,0x2d + 80206240: 9587a783 lw a5,-1704(a5) # 80232b94 <fat+0xc> + 80206244: 02fa753b remuw a0,s4,a5 } - 80206288: 60a6 ld ra,72(sp) - 8020628a: 6406 ld s0,64(sp) - 8020628c: 74e2 ld s1,56(sp) - 8020628e: 7942 ld s2,48(sp) - 80206290: 79a2 ld s3,40(sp) - 80206292: 7a02 ld s4,32(sp) - 80206294: 6ae2 ld s5,24(sp) - 80206296: 6b42 ld s6,16(sp) - 80206298: 6ba2 ld s7,8(sp) - 8020629a: 6161 addi sp,sp,80 - 8020629c: 8082 ret + 80206248: 60a6 ld ra,72(sp) + 8020624a: 6406 ld s0,64(sp) + 8020624c: 74e2 ld s1,56(sp) + 8020624e: 7942 ld s2,48(sp) + 80206250: 79a2 ld s3,40(sp) + 80206252: 7a02 ld s4,32(sp) + 80206254: 6ae2 ld s5,24(sp) + 80206256: 6b42 ld s6,16(sp) + 80206258: 6ba2 ld s7,8(sp) + 8020625a: 6161 addi sp,sp,80 + 8020625c: 8082 ret panic("reloc_clus"); - 8020629e: 00005517 auipc a0,0x5 - 802062a2: ad250513 addi a0,a0,-1326 # 8020ad70 <digits+0x9f0> - 802062a6: ffffa097 auipc ra,0xffffa - 802062aa: e9e080e7 jalr -354(ra) # 80200144 <panic> + 8020625e: 00005517 auipc a0,0x5 + 80206262: b0a50513 addi a0,a0,-1270 # 8020ad68 <digits+0x9e8> + 80206266: ffffa097 auipc ra,0xffffa + 8020626a: ede080e7 jalr -290(ra) # 80200144 <panic> -00000000802062ae <rw_clus>: +000000008020626e <rw_clus>: { - 802062ae: 7119 addi sp,sp,-128 - 802062b0: fc86 sd ra,120(sp) - 802062b2: f8a2 sd s0,112(sp) - 802062b4: f4a6 sd s1,104(sp) - 802062b6: f0ca sd s2,96(sp) - 802062b8: ecce sd s3,88(sp) - 802062ba: e8d2 sd s4,80(sp) - 802062bc: e4d6 sd s5,72(sp) - 802062be: e0da sd s6,64(sp) - 802062c0: fc5e sd s7,56(sp) - 802062c2: f862 sd s8,48(sp) - 802062c4: f466 sd s9,40(sp) - 802062c6: f06a sd s10,32(sp) - 802062c8: ec6e sd s11,24(sp) - 802062ca: 0100 addi s0,sp,128 - 802062cc: f8c43423 sd a2,-120(s0) - 802062d0: 8b36 mv s6,a3 - 802062d2: 8c3e mv s8,a5 + 8020626e: 7119 addi sp,sp,-128 + 80206270: fc86 sd ra,120(sp) + 80206272: f8a2 sd s0,112(sp) + 80206274: f4a6 sd s1,104(sp) + 80206276: f0ca sd s2,96(sp) + 80206278: ecce sd s3,88(sp) + 8020627a: e8d2 sd s4,80(sp) + 8020627c: e4d6 sd s5,72(sp) + 8020627e: e0da sd s6,64(sp) + 80206280: fc5e sd s7,56(sp) + 80206282: f862 sd s8,48(sp) + 80206284: f466 sd s9,40(sp) + 80206286: f06a sd s10,32(sp) + 80206288: ec6e sd s11,24(sp) + 8020628a: 0100 addi s0,sp,128 + 8020628c: f8c43423 sd a2,-120(s0) + 80206290: 8b36 mv s6,a3 + 80206292: 8c3e mv s8,a5 if (off + n > fat.byts_per_clus) - 802062d4: 00f706bb addw a3,a4,a5 - 802062d8: 0002d797 auipc a5,0x2d - 802062dc: 8bc7a783 lw a5,-1860(a5) # 80232b94 <fat+0xc> - 802062e0: 02d7ef63 bltu a5,a3,8020631e <rw_clus+0x70> - 802062e4: 8cae mv s9,a1 + 80206294: 00f706bb addw a3,a4,a5 + 80206298: 0002d797 auipc a5,0x2d + 8020629c: 8fc7a783 lw a5,-1796(a5) # 80232b94 <fat+0xc> + 802062a0: 02d7ef63 bltu a5,a3,802062de <rw_clus+0x70> + 802062a4: 8cae mv s9,a1 uint sec = first_sec_of_clus(cluster) + off / fat.bpb.byts_per_sec; - 802062e6: 0002d797 auipc a5,0x2d - 802062ea: 8a278793 addi a5,a5,-1886 # 80232b88 <fat> - 802062ee: 0107d683 lhu a3,16(a5) + 802062a6: 0002d797 auipc a5,0x2d + 802062aa: 8e278793 addi a5,a5,-1822 # 80232b88 <fat> + 802062ae: 0107d683 lhu a3,16(a5) return ((cluster - 2) * fat.bpb.sec_per_clus) + fat.first_data_sec; - 802062f2: ffe5099b addiw s3,a0,-2 - 802062f6: 0127c603 lbu a2,18(a5) - 802062fa: 02c989bb mulw s3,s3,a2 - 802062fe: 439c lw a5,0(a5) - 80206300: 00f989bb addw s3,s3,a5 + 802062b2: ffe5099b addiw s3,a0,-2 + 802062b6: 0127c603 lbu a2,18(a5) + 802062ba: 02c989bb mulw s3,s3,a2 + 802062be: 439c lw a5,0(a5) + 802062c0: 00f989bb addw s3,s3,a5 uint sec = first_sec_of_clus(cluster) + off / fat.bpb.byts_per_sec; - 80206304: 02d757bb divuw a5,a4,a3 - 80206308: 00f989bb addw s3,s3,a5 + 802062c4: 02d757bb divuw a5,a4,a3 + 802062c8: 00f989bb addw s3,s3,a5 off = off % fat.bpb.byts_per_sec; - 8020630c: 02d77abb remuw s5,a4,a3 + 802062cc: 02d77abb remuw s5,a4,a3 for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) { - 80206310: 0e0c0363 beqz s8,802063f6 <rw_clus+0x148> - 80206314: 4a01 li s4,0 + 802062d0: 0e0c0363 beqz s8,802063b6 <rw_clus+0x148> + 802062d4: 4a01 li s4,0 m = BSIZE - off % BSIZE; - 80206316: 20000d93 li s11,512 + 802062d6: 20000d93 li s11,512 if (bad == -1) { - 8020631a: 5d7d li s10,-1 - 8020631c: a095 j 80206380 <rw_clus+0xd2> + 802062da: 5d7d li s10,-1 + 802062dc: a095 j 80206340 <rw_clus+0xd2> panic("offset out of range"); - 8020631e: 00005517 auipc a0,0x5 - 80206322: a6250513 addi a0,a0,-1438 # 8020ad80 <digits+0xa00> - 80206326: ffffa097 auipc ra,0xffffa - 8020632a: e1e080e7 jalr -482(ra) # 80200144 <panic> + 802062de: 00005517 auipc a0,0x5 + 802062e2: a9a50513 addi a0,a0,-1382 # 8020ad78 <digits+0x9f8> + 802062e6: ffffa097 auipc ra,0xffffa + 802062ea: e5e080e7 jalr -418(ra) # 80200144 <panic> bwrite(bp); - 8020632e: 854a mv a0,s2 - 80206330: ffffe097 auipc ra,0xffffe - 80206334: 986080e7 jalr -1658(ra) # 80203cb6 <bwrite> + 802062ee: 854a mv a0,s2 + 802062f0: ffffe097 auipc ra,0xffffe + 802062f4: 9ca080e7 jalr -1590(ra) # 80203cba <bwrite> brelse(bp); - 80206338: 854a mv a0,s2 - 8020633a: ffffe097 auipc ra,0xffffe - 8020633e: 9b8080e7 jalr -1608(ra) # 80203cf2 <brelse> + 802062f8: 854a mv a0,s2 + 802062fa: ffffe097 auipc ra,0xffffe + 802062fe: 9fc080e7 jalr -1540(ra) # 80203cf6 <brelse> if (bad == -1) { - 80206342: a02d j 8020636c <rw_clus+0xbe> + 80206302: a02d j 8020632c <rw_clus+0xbe> bad = either_copyout(user, data, bp->data + (off % BSIZE), m); - 80206344: 05890613 addi a2,s2,88 - 80206348: 1682 slli a3,a3,0x20 - 8020634a: 9281 srli a3,a3,0x20 - 8020634c: 963a add a2,a2,a4 - 8020634e: 85da mv a1,s6 - 80206350: f8843503 ld a0,-120(s0) - 80206354: ffffc097 auipc ra,0xffffc - 80206358: 486080e7 jalr 1158(ra) # 802027da <either_copyout> - 8020635c: 8baa mv s7,a0 + 80206304: 05890613 addi a2,s2,88 + 80206308: 1682 slli a3,a3,0x20 + 8020630a: 9281 srli a3,a3,0x20 + 8020630c: 963a add a2,a2,a4 + 8020630e: 85da mv a1,s6 + 80206310: f8843503 ld a0,-120(s0) + 80206314: ffffc097 auipc ra,0xffffc + 80206318: 4c0080e7 jalr 1216(ra) # 802027d4 <either_copyout> + 8020631c: 8baa mv s7,a0 brelse(bp); - 8020635e: 854a mv a0,s2 - 80206360: ffffe097 auipc ra,0xffffe - 80206364: 992080e7 jalr -1646(ra) # 80203cf2 <brelse> + 8020631e: 854a mv a0,s2 + 80206320: ffffe097 auipc ra,0xffffe + 80206324: 9d6080e7 jalr -1578(ra) # 80203cf6 <brelse> if (bad == -1) { - 80206368: 07ab8763 beq s7,s10,802063d6 <rw_clus+0x128> + 80206328: 07ab8763 beq s7,s10,80206396 <rw_clus+0x128> for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) { - 8020636c: 01448a3b addw s4,s1,s4 - 80206370: 01548abb addw s5,s1,s5 - 80206374: 1482 slli s1,s1,0x20 - 80206376: 9081 srli s1,s1,0x20 - 80206378: 9b26 add s6,s6,s1 - 8020637a: 2985 addiw s3,s3,1 - 8020637c: 058a7d63 bgeu s4,s8,802063d6 <rw_clus+0x128> + 8020632c: 01448a3b addw s4,s1,s4 + 80206330: 01548abb addw s5,s1,s5 + 80206334: 1482 slli s1,s1,0x20 + 80206336: 9081 srli s1,s1,0x20 + 80206338: 9b26 add s6,s6,s1 + 8020633a: 2985 addiw s3,s3,1 + 8020633c: 058a7d63 bgeu s4,s8,80206396 <rw_clus+0x128> bp = bread(0, sec); - 80206380: 85ce mv a1,s3 - 80206382: 4501 li a0,0 - 80206384: ffffe097 auipc ra,0xffffe - 80206388: 842080e7 jalr -1982(ra) # 80203bc6 <bread> - 8020638c: 892a mv s2,a0 + 80206340: 85ce mv a1,s3 + 80206342: 4501 li a0,0 + 80206344: ffffe097 auipc ra,0xffffe + 80206348: 886080e7 jalr -1914(ra) # 80203bca <bread> + 8020634c: 892a mv s2,a0 m = BSIZE - off % BSIZE; - 8020638e: 1ffaf713 andi a4,s5,511 + 8020634e: 1ffaf713 andi a4,s5,511 if (n - tot < m) { - 80206392: 414c07bb subw a5,s8,s4 + 80206352: 414c07bb subw a5,s8,s4 m = BSIZE - off % BSIZE; - 80206396: 40ed863b subw a2,s11,a4 - 8020639a: 86be mv a3,a5 - 8020639c: 2781 sext.w a5,a5 - 8020639e: 0006059b sext.w a1,a2 - 802063a2: 00f5f363 bgeu a1,a5,802063a8 <rw_clus+0xfa> - 802063a6: 86b2 mv a3,a2 - 802063a8: 0006849b sext.w s1,a3 + 80206356: 40ed863b subw a2,s11,a4 + 8020635a: 86be mv a3,a5 + 8020635c: 2781 sext.w a5,a5 + 8020635e: 0006059b sext.w a1,a2 + 80206362: 00f5f363 bgeu a1,a5,80206368 <rw_clus+0xfa> + 80206366: 86b2 mv a3,a2 + 80206368: 0006849b sext.w s1,a3 if (write) { - 802063ac: f80c8ce3 beqz s9,80206344 <rw_clus+0x96> + 8020636c: f80c8ce3 beqz s9,80206304 <rw_clus+0x96> if ((bad = either_copyin(bp->data + (off % BSIZE), user, data, m)) != -1) { - 802063b0: 05890513 addi a0,s2,88 - 802063b4: 1682 slli a3,a3,0x20 - 802063b6: 9281 srli a3,a3,0x20 - 802063b8: 865a mv a2,s6 - 802063ba: f8843583 ld a1,-120(s0) - 802063be: 953a add a0,a0,a4 - 802063c0: ffffc097 auipc ra,0xffffc - 802063c4: 450080e7 jalr 1104(ra) # 80202810 <either_copyin> - 802063c8: f7a513e3 bne a0,s10,8020632e <rw_clus+0x80> + 80206370: 05890513 addi a0,s2,88 + 80206374: 1682 slli a3,a3,0x20 + 80206376: 9281 srli a3,a3,0x20 + 80206378: 865a mv a2,s6 + 8020637a: f8843583 ld a1,-120(s0) + 8020637e: 953a add a0,a0,a4 + 80206380: ffffc097 auipc ra,0xffffc + 80206384: 48a080e7 jalr 1162(ra) # 8020280a <either_copyin> + 80206388: f7a513e3 bne a0,s10,802062ee <rw_clus+0x80> brelse(bp); - 802063cc: 854a mv a0,s2 - 802063ce: ffffe097 auipc ra,0xffffe - 802063d2: 924080e7 jalr -1756(ra) # 80203cf2 <brelse> + 8020638c: 854a mv a0,s2 + 8020638e: ffffe097 auipc ra,0xffffe + 80206392: 968080e7 jalr -1688(ra) # 80203cf6 <brelse> } - 802063d6: 8552 mv a0,s4 - 802063d8: 70e6 ld ra,120(sp) - 802063da: 7446 ld s0,112(sp) - 802063dc: 74a6 ld s1,104(sp) - 802063de: 7906 ld s2,96(sp) - 802063e0: 69e6 ld s3,88(sp) - 802063e2: 6a46 ld s4,80(sp) - 802063e4: 6aa6 ld s5,72(sp) - 802063e6: 6b06 ld s6,64(sp) - 802063e8: 7be2 ld s7,56(sp) - 802063ea: 7c42 ld s8,48(sp) - 802063ec: 7ca2 ld s9,40(sp) - 802063ee: 7d02 ld s10,32(sp) - 802063f0: 6de2 ld s11,24(sp) - 802063f2: 6109 addi sp,sp,128 - 802063f4: 8082 ret + 80206396: 8552 mv a0,s4 + 80206398: 70e6 ld ra,120(sp) + 8020639a: 7446 ld s0,112(sp) + 8020639c: 74a6 ld s1,104(sp) + 8020639e: 7906 ld s2,96(sp) + 802063a0: 69e6 ld s3,88(sp) + 802063a2: 6a46 ld s4,80(sp) + 802063a4: 6aa6 ld s5,72(sp) + 802063a6: 6b06 ld s6,64(sp) + 802063a8: 7be2 ld s7,56(sp) + 802063aa: 7c42 ld s8,48(sp) + 802063ac: 7ca2 ld s9,40(sp) + 802063ae: 7d02 ld s10,32(sp) + 802063b0: 6de2 ld s11,24(sp) + 802063b2: 6109 addi sp,sp,128 + 802063b4: 8082 ret for (tot = 0; tot < n; tot += m, off += m, data += m, sec++) { - 802063f6: 8a62 mv s4,s8 - 802063f8: bff9 j 802063d6 <rw_clus+0x128> + 802063b6: 8a62 mv s4,s8 + 802063b8: bff9 j 80206396 <rw_clus+0x128> -00000000802063fa <eget>: +00000000802063ba <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) { - 802063fa: 7139 addi sp,sp,-64 - 802063fc: fc06 sd ra,56(sp) - 802063fe: f822 sd s0,48(sp) - 80206400: f426 sd s1,40(sp) - 80206402: f04a sd s2,32(sp) - 80206404: ec4e sd s3,24(sp) - 80206406: e852 sd s4,16(sp) - 80206408: e456 sd s5,8(sp) - 8020640a: 0080 addi s0,sp,64 - 8020640c: 8a2a mv s4,a0 - 8020640e: 8aae mv s5,a1 + 802063ba: 7139 addi sp,sp,-64 + 802063bc: fc06 sd ra,56(sp) + 802063be: f822 sd s0,48(sp) + 802063c0: f426 sd s1,40(sp) + 802063c2: f04a sd s2,32(sp) + 802063c4: ec4e sd s3,24(sp) + 802063c6: e852 sd s4,16(sp) + 802063c8: e456 sd s5,8(sp) + 802063ca: 0080 addi s0,sp,64 + 802063cc: 8a2a mv s4,a0 + 802063ce: 8aae mv s5,a1 struct dirent *ep; acquire(&ecache.lock); - 80206410: 0002d517 auipc a0,0x2d - 80206414: 90850513 addi a0,a0,-1784 # 80232d18 <ecache> - 80206418: ffffa097 auipc ra,0xffffa - 8020641c: 2ae080e7 jalr 686(ra) # 802006c6 <acquire> + 802063d0: 0002d517 auipc a0,0x2d + 802063d4: 94850513 addi a0,a0,-1720 # 80232d18 <ecache> + 802063d8: ffffa097 auipc ra,0xffffa + 802063dc: 2ee080e7 jalr 750(ra) # 802006c6 <acquire> if (name) { - 80206420: 060a8b63 beqz s5,80206496 <eget+0x9c> + 802063e0: 060a8b63 beqz s5,80206456 <eget+0x9c> for (ep = root.next; ep != &root; ep = ep->next) { // LRU algo - 80206424: 0002d497 auipc s1,0x2d - 80206428: 8b44b483 ld s1,-1868(s1) # 80232cd8 <root+0x128> - 8020642c: 0002c797 auipc a5,0x2c - 80206430: 78478793 addi a5,a5,1924 # 80232bb0 <root> - 80206434: 06f48163 beq s1,a5,80206496 <eget+0x9c> + 802063e4: 0002d497 auipc s1,0x2d + 802063e8: 8f44b483 ld s1,-1804(s1) # 80232cd8 <root+0x128> + 802063ec: 0002c797 auipc a5,0x2c + 802063f0: 7c478793 addi a5,a5,1988 # 80232bb0 <root> + 802063f4: 06f48163 beq s1,a5,80206456 <eget+0x9c> if (ep->valid == 1 && ep->parent == parent - 80206438: 4905 li s2,1 + 802063f8: 4905 li s2,1 for (ep = root.next; ep != &root; ep = ep->next) { // LRU algo - 8020643a: 89be mv s3,a5 - 8020643c: a029 j 80206446 <eget+0x4c> - 8020643e: 1284b483 ld s1,296(s1) - 80206442: 05348a63 beq s1,s3,80206496 <eget+0x9c> + 802063fa: 89be mv s3,a5 + 802063fc: a029 j 80206406 <eget+0x4c> + 802063fe: 1284b483 ld s1,296(s1) + 80206402: 05348a63 beq s1,s3,80206456 <eget+0x9c> if (ep->valid == 1 && ep->parent == parent - 80206446: 11649783 lh a5,278(s1) - 8020644a: ff279ae3 bne a5,s2,8020643e <eget+0x44> - 8020644e: 1204b783 ld a5,288(s1) - 80206452: ff4796e3 bne a5,s4,8020643e <eget+0x44> + 80206406: 11649783 lh a5,278(s1) + 8020640a: ff279ae3 bne a5,s2,802063fe <eget+0x44> + 8020640e: 1204b783 ld a5,288(s1) + 80206412: ff4796e3 bne a5,s4,802063fe <eget+0x44> && strncmp(ep->filename, name, FAT32_MAX_FILENAME) == 0) { - 80206456: 0ff00613 li a2,255 - 8020645a: 85d6 mv a1,s5 - 8020645c: 8526 mv a0,s1 - 8020645e: ffffa097 auipc ra,0xffffa - 80206462: 3dc080e7 jalr 988(ra) # 8020083a <strncmp> - 80206466: fd61 bnez a0,8020643e <eget+0x44> + 80206416: 0ff00613 li a2,255 + 8020641a: 85d6 mv a1,s5 + 8020641c: 8526 mv a0,s1 + 8020641e: ffffa097 auipc ra,0xffffa + 80206422: 41c080e7 jalr 1052(ra) # 8020083a <strncmp> + 80206426: fd61 bnez a0,802063fe <eget+0x44> if (ep->ref++ == 0) { - 80206468: 1184a783 lw a5,280(s1) - 8020646c: 0017871b addiw a4,a5,1 - 80206470: 10e4ac23 sw a4,280(s1) - 80206474: eb81 bnez a5,80206484 <eget+0x8a> + 80206428: 1184a783 lw a5,280(s1) + 8020642c: 0017871b addiw a4,a5,1 + 80206430: 10e4ac23 sw a4,280(s1) + 80206434: eb81 bnez a5,80206444 <eget+0x8a> ep->parent->ref++; - 80206476: 1204b703 ld a4,288(s1) - 8020647a: 11872783 lw a5,280(a4) - 8020647e: 2785 addiw a5,a5,1 - 80206480: 10f72c23 sw a5,280(a4) + 80206436: 1204b703 ld a4,288(s1) + 8020643a: 11872783 lw a5,280(a4) + 8020643e: 2785 addiw a5,a5,1 + 80206440: 10f72c23 sw a5,280(a4) } release(&ecache.lock); - 80206484: 0002d517 auipc a0,0x2d - 80206488: 89450513 addi a0,a0,-1900 # 80232d18 <ecache> - 8020648c: ffffa097 auipc ra,0xffffa - 80206490: 28e080e7 jalr 654(ra) # 8020071a <release> + 80206444: 0002d517 auipc a0,0x2d + 80206448: 8d450513 addi a0,a0,-1836 # 80232d18 <ecache> + 8020644c: ffffa097 auipc ra,0xffffa + 80206450: 2ce080e7 jalr 718(ra) # 8020071a <release> // edup(ep->parent); return ep; - 80206494: a085 j 802064f4 <eget+0xfa> + 80206454: a085 j 802064b4 <eget+0xfa> } } } for (ep = root.prev; ep != &root; ep = ep->prev) { // LRU algo - 80206496: 0002d497 auipc s1,0x2d - 8020649a: 84a4b483 ld s1,-1974(s1) # 80232ce0 <root+0x130> - 8020649e: 0002c797 auipc a5,0x2c - 802064a2: 71278793 addi a5,a5,1810 # 80232bb0 <root> - 802064a6: 00f48a63 beq s1,a5,802064ba <eget+0xc0> - 802064aa: 873e mv a4,a5 + 80206456: 0002d497 auipc s1,0x2d + 8020645a: 88a4b483 ld s1,-1910(s1) # 80232ce0 <root+0x130> + 8020645e: 0002c797 auipc a5,0x2c + 80206462: 75278793 addi a5,a5,1874 # 80232bb0 <root> + 80206466: 00f48a63 beq s1,a5,8020647a <eget+0xc0> + 8020646a: 873e mv a4,a5 if (ep->ref == 0) { - 802064ac: 1184a783 lw a5,280(s1) - 802064b0: cf89 beqz a5,802064ca <eget+0xd0> + 8020646c: 1184a783 lw a5,280(s1) + 80206470: cf89 beqz a5,8020648a <eget+0xd0> for (ep = root.prev; ep != &root; ep = ep->prev) { // LRU algo - 802064b2: 1304b483 ld s1,304(s1) - 802064b6: fee49be3 bne s1,a4,802064ac <eget+0xb2> + 80206472: 1304b483 ld s1,304(s1) + 80206476: fee49be3 bne s1,a4,8020646c <eget+0xb2> ep->dirty = 0; release(&ecache.lock); return ep; } } panic("eget: insufficient ecache"); - 802064ba: 00005517 auipc a0,0x5 - 802064be: 8de50513 addi a0,a0,-1826 # 8020ad98 <digits+0xa18> - 802064c2: ffffa097 auipc ra,0xffffa - 802064c6: c82080e7 jalr -894(ra) # 80200144 <panic> + 8020647a: 00005517 auipc a0,0x5 + 8020647e: 91650513 addi a0,a0,-1770 # 8020ad90 <digits+0xa10> + 80206482: ffffa097 auipc ra,0xffffa + 80206486: cc2080e7 jalr -830(ra) # 80200144 <panic> ep->ref = 1; - 802064ca: 4785 li a5,1 - 802064cc: 10f4ac23 sw a5,280(s1) + 8020648a: 4785 li a5,1 + 8020648c: 10f4ac23 sw a5,280(s1) ep->dev = parent->dev; - 802064d0: 114a4783 lbu a5,276(s4) - 802064d4: 10f48a23 sb a5,276(s1) + 80206490: 114a4783 lbu a5,276(s4) + 80206494: 10f48a23 sb a5,276(s1) ep->off = 0; - 802064d8: 1004ae23 sw zero,284(s1) + 80206498: 1004ae23 sw zero,284(s1) ep->valid = 0; - 802064dc: 10049b23 sh zero,278(s1) + 8020649c: 10049b23 sh zero,278(s1) ep->dirty = 0; - 802064e0: 10048aa3 sb zero,277(s1) + 802064a0: 10048aa3 sb zero,277(s1) release(&ecache.lock); - 802064e4: 0002d517 auipc a0,0x2d - 802064e8: 83450513 addi a0,a0,-1996 # 80232d18 <ecache> - 802064ec: ffffa097 auipc ra,0xffffa - 802064f0: 22e080e7 jalr 558(ra) # 8020071a <release> + 802064a4: 0002d517 auipc a0,0x2d + 802064a8: 87450513 addi a0,a0,-1932 # 80232d18 <ecache> + 802064ac: ffffa097 auipc ra,0xffffa + 802064b0: 26e080e7 jalr 622(ra) # 8020071a <release> return 0; } - 802064f4: 8526 mv a0,s1 - 802064f6: 70e2 ld ra,56(sp) - 802064f8: 7442 ld s0,48(sp) - 802064fa: 74a2 ld s1,40(sp) - 802064fc: 7902 ld s2,32(sp) - 802064fe: 69e2 ld s3,24(sp) - 80206500: 6a42 ld s4,16(sp) - 80206502: 6aa2 ld s5,8(sp) - 80206504: 6121 addi sp,sp,64 - 80206506: 8082 ret - -0000000080206508 <read_entry_name>: + 802064b4: 8526 mv a0,s1 + 802064b6: 70e2 ld ra,56(sp) + 802064b8: 7442 ld s0,48(sp) + 802064ba: 74a2 ld s1,40(sp) + 802064bc: 7902 ld s2,32(sp) + 802064be: 69e2 ld s3,24(sp) + 802064c0: 6a42 ld s4,16(sp) + 802064c2: 6aa2 ld s5,8(sp) + 802064c4: 6121 addi sp,sp,64 + 802064c6: 8082 ret + +00000000802064c8 <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) { - 80206508: 7139 addi sp,sp,-64 - 8020650a: fc06 sd ra,56(sp) - 8020650c: f822 sd s0,48(sp) - 8020650e: f426 sd s1,40(sp) - 80206510: f04a sd s2,32(sp) - 80206512: ec4e sd s3,24(sp) - 80206514: 0080 addi s0,sp,64 - 80206516: 84aa mv s1,a0 - 80206518: 892e mv s2,a1 + 802064c8: 7139 addi sp,sp,-64 + 802064ca: fc06 sd ra,56(sp) + 802064cc: f822 sd s0,48(sp) + 802064ce: f426 sd s1,40(sp) + 802064d0: f04a sd s2,32(sp) + 802064d2: ec4e sd s3,24(sp) + 802064d4: 0080 addi s0,sp,64 + 802064d6: 84aa mv s1,a0 + 802064d8: 892e mv s2,a1 if (d->lne.attr == ATTR_LONG_NAME) { // long entry branch - 8020651a: 00b5c703 lbu a4,11(a1) - 8020651e: 47bd li a5,15 - 80206520: 08f70563 beq a4,a5,802065aa <read_entry_name+0xa2> + 802064da: 00b5c703 lbu a4,11(a1) + 802064de: 47bd li a5,15 + 802064e0: 08f70563 beq a4,a5,8020656a <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' - 80206524: 4635 li a2,13 - 80206526: 4581 li a1,0 - 80206528: ffffa097 auipc ra,0xffffa - 8020652c: 23a080e7 jalr 570(ra) # 80200762 <memset> + 802064e4: 4635 li a2,13 + 802064e6: 4581 li a1,0 + 802064e8: ffffa097 auipc ra,0xffffa + 802064ec: 27a080e7 jalr 634(ra) # 80200762 <memset> int i; for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) { - 80206530: 00094703 lbu a4,0(s2) - 80206534: 02000793 li a5,32 - 80206538: 0af70c63 beq a4,a5,802065f0 <read_entry_name+0xe8> - 8020653c: 4785 li a5,1 - 8020653e: 02000613 li a2,32 - 80206542: 45a5 li a1,9 + 802064f0: 00094703 lbu a4,0(s2) + 802064f4: 02000793 li a5,32 + 802064f8: 0af70c63 beq a4,a5,802065b0 <read_entry_name+0xe8> + 802064fc: 4785 li a5,1 + 802064fe: 02000613 li a2,32 + 80206502: 45a5 li a1,9 buffer[i] = d->sne.name[i]; - 80206544: 00f486b3 add a3,s1,a5 - 80206548: fee68fa3 sb a4,-1(a3) + 80206504: 00f486b3 add a3,s1,a5 + 80206508: fee68fa3 sb a4,-1(a3) for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) { - 8020654c: 0007869b sext.w a3,a5 - 80206550: 00f90733 add a4,s2,a5 - 80206554: 00074703 lbu a4,0(a4) - 80206558: 00c70563 beq a4,a2,80206562 <read_entry_name+0x5a> - 8020655c: 0785 addi a5,a5,1 - 8020655e: feb793e3 bne a5,a1,80206544 <read_entry_name+0x3c> + 8020650c: 0007869b sext.w a3,a5 + 80206510: 00f90733 add a4,s2,a5 + 80206514: 00074703 lbu a4,0(a4) + 80206518: 00c70563 beq a4,a2,80206522 <read_entry_name+0x5a> + 8020651c: 0785 addi a5,a5,1 + 8020651e: feb793e3 bne a5,a1,80206504 <read_entry_name+0x3c> } if (d->sne.name[8] != ' ') { - 80206562: 00894703 lbu a4,8(s2) - 80206566: 02000793 li a5,32 - 8020656a: 00f70963 beq a4,a5,8020657c <read_entry_name+0x74> + 80206522: 00894703 lbu a4,8(s2) + 80206526: 02000793 li a5,32 + 8020652a: 00f70963 beq a4,a5,8020653c <read_entry_name+0x74> buffer[i++] = '.'; - 8020656e: 00d487b3 add a5,s1,a3 - 80206572: 02e00713 li a4,46 - 80206576: 00e78023 sb a4,0(a5) - 8020657a: 2685 addiw a3,a3,1 + 8020652e: 00d487b3 add a5,s1,a3 + 80206532: 02e00713 li a4,46 + 80206536: 00e78023 sb a4,0(a5) + 8020653a: 2685 addiw a3,a3,1 } for (int j = 8; j < CHAR_SHORT_NAME; j++, i++) { - 8020657c: 00890793 addi a5,s2,8 - 80206580: 94b6 add s1,s1,a3 - 80206582: 092d addi s2,s2,11 + 8020653c: 00890793 addi a5,s2,8 + 80206540: 94b6 add s1,s1,a3 + 80206542: 092d addi s2,s2,11 if (d->sne.name[j] == ' ') { break; } - 80206584: 02000693 li a3,32 - 80206588: 0007c703 lbu a4,0(a5) - 8020658c: 00d70863 beq a4,a3,8020659c <read_entry_name+0x94> + 80206544: 02000693 li a3,32 + 80206548: 0007c703 lbu a4,0(a5) + 8020654c: 00d70863 beq a4,a3,8020655c <read_entry_name+0x94> buffer[i] = d->sne.name[j]; - 80206590: 00e48023 sb a4,0(s1) + 80206550: 00e48023 sb a4,0(s1) for (int j = 8; j < CHAR_SHORT_NAME; j++, i++) { - 80206594: 0785 addi a5,a5,1 - 80206596: 0485 addi s1,s1,1 - 80206598: ff2798e3 bne a5,s2,80206588 <read_entry_name+0x80> + 80206554: 0785 addi a5,a5,1 + 80206556: 0485 addi s1,s1,1 + 80206558: ff2798e3 bne a5,s2,80206548 <read_entry_name+0x80> } } } - 8020659c: 70e2 ld ra,56(sp) - 8020659e: 7442 ld s0,48(sp) - 802065a0: 74a2 ld s1,40(sp) - 802065a2: 7902 ld s2,32(sp) - 802065a4: 69e2 ld s3,24(sp) - 802065a6: 6121 addi sp,sp,64 - 802065a8: 8082 ret + 8020655c: 70e2 ld ra,56(sp) + 8020655e: 7442 ld s0,48(sp) + 80206560: 74a2 ld s1,40(sp) + 80206562: 7902 ld s2,32(sp) + 80206564: 69e2 ld s3,24(sp) + 80206566: 6121 addi sp,sp,64 + 80206568: 8082 ret memmove(temp, d->lne.name1, sizeof(temp)); - 802065aa: 4629 li a2,10 - 802065ac: 0585 addi a1,a1,1 - 802065ae: fc040993 addi s3,s0,-64 - 802065b2: 854e mv a0,s3 - 802065b4: ffffa097 auipc ra,0xffffa - 802065b8: 20a080e7 jalr 522(ra) # 802007be <memmove> + 8020656a: 4629 li a2,10 + 8020656c: 0585 addi a1,a1,1 + 8020656e: fc040993 addi s3,s0,-64 + 80206572: 854e mv a0,s3 + 80206574: ffffa097 auipc ra,0xffffa + 80206578: 24a080e7 jalr 586(ra) # 802007be <memmove> snstr(buffer, temp, NELEM(d->lne.name1)); - 802065bc: 4615 li a2,5 - 802065be: 85ce mv a1,s3 - 802065c0: 8526 mv a0,s1 - 802065c2: ffffa097 auipc ra,0xffffa - 802065c6: 380080e7 jalr 896(ra) # 80200942 <snstr> + 8020657c: 4615 li a2,5 + 8020657e: 85ce mv a1,s3 + 80206580: 8526 mv a0,s1 + 80206582: ffffa097 auipc ra,0xffffa + 80206586: 3c0080e7 jalr 960(ra) # 80200942 <snstr> snstr(buffer, d->lne.name2, NELEM(d->lne.name2)); - 802065ca: 4619 li a2,6 - 802065cc: 00e90593 addi a1,s2,14 - 802065d0: 00548513 addi a0,s1,5 - 802065d4: ffffa097 auipc ra,0xffffa - 802065d8: 36e080e7 jalr 878(ra) # 80200942 <snstr> + 8020658a: 4619 li a2,6 + 8020658c: 00e90593 addi a1,s2,14 + 80206590: 00548513 addi a0,s1,5 + 80206594: ffffa097 auipc ra,0xffffa + 80206598: 3ae080e7 jalr 942(ra) # 80200942 <snstr> snstr(buffer, d->lne.name3, NELEM(d->lne.name3)); - 802065dc: 4609 li a2,2 - 802065de: 01c90593 addi a1,s2,28 - 802065e2: 00b48513 addi a0,s1,11 - 802065e6: ffffa097 auipc ra,0xffffa - 802065ea: 35c080e7 jalr 860(ra) # 80200942 <snstr> - 802065ee: b77d j 8020659c <read_entry_name+0x94> + 8020659c: 4609 li a2,2 + 8020659e: 01c90593 addi a1,s2,28 + 802065a2: 00b48513 addi a0,s1,11 + 802065a6: ffffa097 auipc ra,0xffffa + 802065aa: 39c080e7 jalr 924(ra) # 80200942 <snstr> + 802065ae: b77d j 8020655c <read_entry_name+0x94> for (i = 0; d->sne.name[i] != ' ' && i < 8; i++) { - 802065f0: 4681 li a3,0 - 802065f2: bf85 j 80206562 <read_entry_name+0x5a> + 802065b0: 4681 li a3,0 + 802065b2: bf85 j 80206522 <read_entry_name+0x5a> -00000000802065f4 <fat32_init>: +00000000802065b4 <fat32_init>: { - 802065f4: 7139 addi sp,sp,-64 - 802065f6: fc06 sd ra,56(sp) - 802065f8: f822 sd s0,48(sp) - 802065fa: f426 sd s1,40(sp) - 802065fc: f04a sd s2,32(sp) - 802065fe: ec4e sd s3,24(sp) - 80206600: e852 sd s4,16(sp) - 80206602: e456 sd s5,8(sp) - 80206604: 0080 addi s0,sp,64 + 802065b4: 7139 addi sp,sp,-64 + 802065b6: fc06 sd ra,56(sp) + 802065b8: f822 sd s0,48(sp) + 802065ba: f426 sd s1,40(sp) + 802065bc: f04a sd s2,32(sp) + 802065be: ec4e sd s3,24(sp) + 802065c0: e852 sd s4,16(sp) + 802065c2: e456 sd s5,8(sp) + 802065c4: 0080 addi s0,sp,64 struct buf *b = bread(0, 0); - 80206606: 4581 li a1,0 - 80206608: 4501 li a0,0 - 8020660a: ffffd097 auipc ra,0xffffd - 8020660e: 5bc080e7 jalr 1468(ra) # 80203bc6 <bread> - 80206612: 892a mv s2,a0 + 802065c6: 4581 li a1,0 + 802065c8: 4501 li a0,0 + 802065ca: ffffd097 auipc ra,0xffffd + 802065ce: 600080e7 jalr 1536(ra) # 80203bca <bread> + 802065d2: 892a mv s2,a0 if (strncmp((char const*)(b->data + 82), "FAT32", 5)) - 80206614: 4615 li a2,5 - 80206616: 00004597 auipc a1,0x4 - 8020661a: 7a258593 addi a1,a1,1954 # 8020adb8 <digits+0xa38> - 8020661e: 0aa50513 addi a0,a0,170 - 80206622: ffffa097 auipc ra,0xffffa - 80206626: 218080e7 jalr 536(ra) # 8020083a <strncmp> - 8020662a: 16051863 bnez a0,8020679a <fat32_init+0x1a6> + 802065d4: 4615 li a2,5 + 802065d6: 00004597 auipc a1,0x4 + 802065da: 7da58593 addi a1,a1,2010 # 8020adb0 <digits+0xa30> + 802065de: 0aa50513 addi a0,a0,170 + 802065e2: ffffa097 auipc ra,0xffffa + 802065e6: 258080e7 jalr 600(ra) # 8020083a <strncmp> + 802065ea: 16051863 bnez a0,8020675a <fat32_init+0x1a6> memmove(&fat.bpb.byts_per_sec, b->data + 11, 2); // avoid misaligned load on k210 - 8020662e: 0002c497 auipc s1,0x2c - 80206632: 55a48493 addi s1,s1,1370 # 80232b88 <fat> - 80206636: 4609 li a2,2 - 80206638: 06390593 addi a1,s2,99 - 8020663c: 0002c517 auipc a0,0x2c - 80206640: 55c50513 addi a0,a0,1372 # 80232b98 <fat+0x10> - 80206644: ffffa097 auipc ra,0xffffa - 80206648: 17a080e7 jalr 378(ra) # 802007be <memmove> + 802065ee: 0002c497 auipc s1,0x2c + 802065f2: 59a48493 addi s1,s1,1434 # 80232b88 <fat> + 802065f6: 4609 li a2,2 + 802065f8: 06390593 addi a1,s2,99 + 802065fc: 0002c517 auipc a0,0x2c + 80206600: 59c50513 addi a0,a0,1436 # 80232b98 <fat+0x10> + 80206604: ffffa097 auipc ra,0xffffa + 80206608: 1ba080e7 jalr 442(ra) # 802007be <memmove> fat.bpb.sec_per_clus = *(b->data + 13); - 8020664c: 06594683 lbu a3,101(s2) - 80206650: 00d48923 sb a3,18(s1) + 8020660c: 06594683 lbu a3,101(s2) + 80206610: 00d48923 sb a3,18(s1) fat.bpb.rsvd_sec_cnt = *(uint16 *)(b->data + 14); - 80206654: 06695603 lhu a2,102(s2) - 80206658: 00c49a23 sh a2,20(s1) + 80206614: 06695603 lhu a2,102(s2) + 80206618: 00c49a23 sh a2,20(s1) fat.bpb.fat_cnt = *(b->data + 16); - 8020665c: 06894703 lbu a4,104(s2) - 80206660: 00e48b23 sb a4,22(s1) + 8020661c: 06894703 lbu a4,104(s2) + 80206620: 00e48b23 sb a4,22(s1) fat.bpb.hidd_sec = *(uint32 *)(b->data + 28); - 80206664: 07492783 lw a5,116(s2) - 80206668: cc9c sw a5,24(s1) + 80206624: 07492783 lw a5,116(s2) + 80206628: cc9c sw a5,24(s1) fat.bpb.tot_sec = *(uint32 *)(b->data + 32); - 8020666a: 07892783 lw a5,120(s2) - 8020666e: ccdc sw a5,28(s1) + 8020662a: 07892783 lw a5,120(s2) + 8020662e: ccdc sw a5,28(s1) fat.bpb.fat_sz = *(uint32 *)(b->data + 36); - 80206670: 07c92583 lw a1,124(s2) - 80206674: d08c sw a1,32(s1) + 80206630: 07c92583 lw a1,124(s2) + 80206634: d08c sw a1,32(s1) fat.bpb.root_clus = *(uint32 *)(b->data + 44); - 80206676: 08492503 lw a0,132(s2) - 8020667a: d0c8 sw a0,36(s1) + 80206636: 08492503 lw a0,132(s2) + 8020663a: d0c8 sw a0,36(s1) fat.first_data_sec = fat.bpb.rsvd_sec_cnt + fat.bpb.fat_cnt * fat.bpb.fat_sz; - 8020667c: 02b7073b mulw a4,a4,a1 - 80206680: 9f31 addw a4,a4,a2 - 80206682: c098 sw a4,0(s1) + 8020663c: 02b7073b mulw a4,a4,a1 + 80206640: 9f31 addw a4,a4,a2 + 80206642: c098 sw a4,0(s1) fat.data_sec_cnt = fat.bpb.tot_sec - fat.first_data_sec; - 80206684: 9f99 subw a5,a5,a4 - 80206686: c0dc sw a5,4(s1) + 80206644: 9f99 subw a5,a5,a4 + 80206646: c0dc sw a5,4(s1) fat.data_clus_cnt = fat.data_sec_cnt / fat.bpb.sec_per_clus; - 80206688: 02d7d7bb divuw a5,a5,a3 - 8020668c: c49c sw a5,8(s1) + 80206648: 02d7d7bb divuw a5,a5,a3 + 8020664c: c49c sw a5,8(s1) fat.byts_per_clus = fat.bpb.sec_per_clus * fat.bpb.byts_per_sec; - 8020668e: 0104d783 lhu a5,16(s1) - 80206692: 02d787bb mulw a5,a5,a3 - 80206696: c4dc sw a5,12(s1) + 8020664e: 0104d783 lhu a5,16(s1) + 80206652: 02d787bb mulw a5,a5,a3 + 80206656: c4dc sw a5,12(s1) brelse(b); - 80206698: 854a mv a0,s2 - 8020669a: ffffd097 auipc ra,0xffffd - 8020669e: 658080e7 jalr 1624(ra) # 80203cf2 <brelse> + 80206658: 854a mv a0,s2 + 8020665a: ffffd097 auipc ra,0xffffd + 8020665e: 69c080e7 jalr 1692(ra) # 80203cf6 <brelse> if (BSIZE != fat.bpb.byts_per_sec) - 802066a2: 0104d703 lhu a4,16(s1) - 802066a6: 20000793 li a5,512 - 802066aa: 10f71063 bne a4,a5,802067aa <fat32_init+0x1b6> + 80206662: 0104d703 lhu a4,16(s1) + 80206666: 20000793 li a5,512 + 8020666a: 10f71063 bne a4,a5,8020676a <fat32_init+0x1b6> initlock(&ecache.lock, "ecache"); - 802066ae: 00004597 auipc a1,0x4 - 802066b2: 74258593 addi a1,a1,1858 # 8020adf0 <digits+0xa70> - 802066b6: 0002c517 auipc a0,0x2c - 802066ba: 66250513 addi a0,a0,1634 # 80232d18 <ecache> - 802066be: ffffa097 auipc ra,0xffffa - 802066c2: fc4080e7 jalr -60(ra) # 80200682 <initlock> + 8020666e: 00004597 auipc a1,0x4 + 80206672: 77a58593 addi a1,a1,1914 # 8020ade8 <digits+0xa68> + 80206676: 0002c517 auipc a0,0x2c + 8020667a: 6a250513 addi a0,a0,1698 # 80232d18 <ecache> + 8020667e: ffffa097 auipc ra,0xffffa + 80206682: 004080e7 jalr 4(ra) # 80200682 <initlock> memset(&root, 0, sizeof(root)); - 802066c6: 0002c497 auipc s1,0x2c - 802066ca: 4c248493 addi s1,s1,1218 # 80232b88 <fat> - 802066ce: 0002c917 auipc s2,0x2c - 802066d2: 4e290913 addi s2,s2,1250 # 80232bb0 <root> - 802066d6: 16800613 li a2,360 - 802066da: 4581 li a1,0 - 802066dc: 854a mv a0,s2 - 802066de: ffffa097 auipc ra,0xffffa - 802066e2: 084080e7 jalr 132(ra) # 80200762 <memset> + 80206686: 0002c497 auipc s1,0x2c + 8020668a: 50248493 addi s1,s1,1282 # 80232b88 <fat> + 8020668e: 0002c917 auipc s2,0x2c + 80206692: 52290913 addi s2,s2,1314 # 80232bb0 <root> + 80206696: 16800613 li a2,360 + 8020669a: 4581 li a1,0 + 8020669c: 854a mv a0,s2 + 8020669e: ffffa097 auipc ra,0xffffa + 802066a2: 0c4080e7 jalr 196(ra) # 80200762 <memset> initsleeplock(&root.lock, "entry"); - 802066e6: 00004597 auipc a1,0x4 - 802066ea: 71258593 addi a1,a1,1810 # 8020adf8 <digits+0xa78> - 802066ee: 0002c517 auipc a0,0x2c - 802066f2: 5fa50513 addi a0,a0,1530 # 80232ce8 <root+0x138> - 802066f6: ffffd097 auipc ra,0xffffd - 802066fa: 712080e7 jalr 1810(ra) # 80203e08 <initsleeplock> + 802066a6: 00004597 auipc a1,0x4 + 802066aa: 74a58593 addi a1,a1,1866 # 8020adf0 <digits+0xa70> + 802066ae: 0002c517 auipc a0,0x2c + 802066b2: 63a50513 addi a0,a0,1594 # 80232ce8 <root+0x138> + 802066b6: ffffd097 auipc ra,0xffffd + 802066ba: 756080e7 jalr 1878(ra) # 80203e0c <initsleeplock> root.attribute = (ATTR_DIRECTORY | ATTR_SYSTEM); - 802066fe: 47d1 li a5,20 - 80206700: 12f48423 sb a5,296(s1) + 802066be: 47d1 li a5,20 + 802066c0: 12f48423 sb a5,296(s1) root.first_clus = root.cur_clus = fat.bpb.root_clus; - 80206704: 50dc lw a5,36(s1) - 80206706: 12f4aa23 sw a5,308(s1) - 8020670a: 12f4a623 sw a5,300(s1) + 802066c4: 50dc lw a5,36(s1) + 802066c6: 12f4aa23 sw a5,308(s1) + 802066ca: 12f4a623 sw a5,300(s1) root.valid = 1; - 8020670e: 4785 li a5,1 - 80206710: 12f49f23 sh a5,318(s1) + 802066ce: 4785 li a5,1 + 802066d0: 12f49f23 sh a5,318(s1) root.prev = &root; - 80206714: 1524bc23 sd s2,344(s1) + 802066d4: 1524bc23 sd s2,344(s1) root.next = &root; - 80206718: 1524b823 sd s2,336(s1) + 802066d8: 1524b823 sd s2,336(s1) for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) { - 8020671c: 0002c497 auipc s1,0x2c - 80206720: 61448493 addi s1,s1,1556 # 80232d30 <ecache+0x18> + 802066dc: 0002c497 auipc s1,0x2c + 802066e0: 65448493 addi s1,s1,1620 # 80232d30 <ecache+0x18> de->next = root.next; - 80206724: 0002c917 auipc s2,0x2c - 80206728: 46490913 addi s2,s2,1124 # 80232b88 <fat> + 802066e4: 0002c917 auipc s2,0x2c + 802066e8: 4a490913 addi s2,s2,1188 # 80232b88 <fat> de->prev = &root; - 8020672c: 0002ca97 auipc s5,0x2c - 80206730: 484a8a93 addi s5,s5,1156 # 80232bb0 <root> + 802066ec: 0002ca97 auipc s5,0x2c + 802066f0: 4c4a8a93 addi s5,s5,1220 # 80232bb0 <root> initsleeplock(&de->lock, "entry"); - 80206734: 00004a17 auipc s4,0x4 - 80206738: 6c4a0a13 addi s4,s4,1732 # 8020adf8 <digits+0xa78> + 802066f4: 00004a17 auipc s4,0x4 + 802066f8: 6fca0a13 addi s4,s4,1788 # 8020adf0 <digits+0xa70> for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) { - 8020673c: 00031997 auipc s3,0x31 - 80206740: c4498993 addi s3,s3,-956 # 80237380 <cons> + 802066fc: 00031997 auipc s3,0x31 + 80206700: c8498993 addi s3,s3,-892 # 80237380 <cons> de->dev = 0; - 80206744: 10048a23 sb zero,276(s1) + 80206704: 10048a23 sb zero,276(s1) de->valid = 0; - 80206748: 10049b23 sh zero,278(s1) + 80206708: 10049b23 sh zero,278(s1) de->ref = 0; - 8020674c: 1004ac23 sw zero,280(s1) + 8020670c: 1004ac23 sw zero,280(s1) de->dirty = 0; - 80206750: 10048aa3 sb zero,277(s1) + 80206710: 10048aa3 sb zero,277(s1) de->parent = 0; - 80206754: 1204b023 sd zero,288(s1) + 80206714: 1204b023 sd zero,288(s1) de->next = root.next; - 80206758: 15093783 ld a5,336(s2) - 8020675c: 12f4b423 sd a5,296(s1) + 80206718: 15093783 ld a5,336(s2) + 8020671c: 12f4b423 sd a5,296(s1) de->prev = &root; - 80206760: 1354b823 sd s5,304(s1) + 80206720: 1354b823 sd s5,304(s1) initsleeplock(&de->lock, "entry"); - 80206764: 85d2 mv a1,s4 - 80206766: 13848513 addi a0,s1,312 - 8020676a: ffffd097 auipc ra,0xffffd - 8020676e: 69e080e7 jalr 1694(ra) # 80203e08 <initsleeplock> + 80206724: 85d2 mv a1,s4 + 80206726: 13848513 addi a0,s1,312 + 8020672a: ffffd097 auipc ra,0xffffd + 8020672e: 6e2080e7 jalr 1762(ra) # 80203e0c <initsleeplock> root.next->prev = de; - 80206772: 15093783 ld a5,336(s2) - 80206776: 1297b823 sd s1,304(a5) + 80206732: 15093783 ld a5,336(s2) + 80206736: 1297b823 sd s1,304(a5) root.next = de; - 8020677a: 14993823 sd s1,336(s2) + 8020673a: 14993823 sd s1,336(s2) for(struct dirent *de = ecache.entries; de < ecache.entries + ENTRY_CACHE_NUM; de++) { - 8020677e: 16848493 addi s1,s1,360 - 80206782: fd3491e3 bne s1,s3,80206744 <fat32_init+0x150> + 8020673e: 16848493 addi s1,s1,360 + 80206742: fd3491e3 bne s1,s3,80206704 <fat32_init+0x150> } - 80206786: 4501 li a0,0 - 80206788: 70e2 ld ra,56(sp) - 8020678a: 7442 ld s0,48(sp) - 8020678c: 74a2 ld s1,40(sp) - 8020678e: 7902 ld s2,32(sp) - 80206790: 69e2 ld s3,24(sp) - 80206792: 6a42 ld s4,16(sp) - 80206794: 6aa2 ld s5,8(sp) - 80206796: 6121 addi sp,sp,64 - 80206798: 8082 ret + 80206746: 4501 li a0,0 + 80206748: 70e2 ld ra,56(sp) + 8020674a: 7442 ld s0,48(sp) + 8020674c: 74a2 ld s1,40(sp) + 8020674e: 7902 ld s2,32(sp) + 80206750: 69e2 ld s3,24(sp) + 80206752: 6a42 ld s4,16(sp) + 80206754: 6aa2 ld s5,8(sp) + 80206756: 6121 addi sp,sp,64 + 80206758: 8082 ret panic("not FAT32 volume"); - 8020679a: 00004517 auipc a0,0x4 - 8020679e: 62650513 addi a0,a0,1574 # 8020adc0 <digits+0xa40> - 802067a2: ffffa097 auipc ra,0xffffa - 802067a6: 9a2080e7 jalr -1630(ra) # 80200144 <panic> + 8020675a: 00004517 auipc a0,0x4 + 8020675e: 65e50513 addi a0,a0,1630 # 8020adb8 <digits+0xa38> + 80206762: ffffa097 auipc ra,0xffffa + 80206766: 9e2080e7 jalr -1566(ra) # 80200144 <panic> panic("byts_per_sec != BSIZE"); - 802067aa: 00004517 auipc a0,0x4 - 802067ae: 62e50513 addi a0,a0,1582 # 8020add8 <digits+0xa58> - 802067b2: ffffa097 auipc ra,0xffffa - 802067b6: 992080e7 jalr -1646(ra) # 80200144 <panic> + 8020676a: 00004517 auipc a0,0x4 + 8020676e: 66650513 addi a0,a0,1638 # 8020add0 <digits+0xa50> + 80206772: ffffa097 auipc ra,0xffffa + 80206776: 9d2080e7 jalr -1582(ra) # 80200144 <panic> -00000000802067ba <eread>: +000000008020677a <eread>: if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) { - 802067ba: 10852783 lw a5,264(a0) - 802067be: 0ed7e863 bltu a5,a3,802068ae <eread+0xf4> + 8020677a: 10852783 lw a5,264(a0) + 8020677e: 0ed7e863 bltu a5,a3,8020686e <eread+0xf4> { - 802067c2: 711d addi sp,sp,-96 - 802067c4: ec86 sd ra,88(sp) - 802067c6: e8a2 sd s0,80(sp) - 802067c8: e4a6 sd s1,72(sp) - 802067ca: e0ca sd s2,64(sp) - 802067cc: fc4e sd s3,56(sp) - 802067ce: f852 sd s4,48(sp) - 802067d0: f456 sd s5,40(sp) - 802067d2: f05a sd s6,32(sp) - 802067d4: ec5e sd s7,24(sp) - 802067d6: e862 sd s8,16(sp) - 802067d8: e466 sd s9,8(sp) - 802067da: e06a sd s10,0(sp) - 802067dc: 1080 addi s0,sp,96 - 802067de: 8a2a mv s4,a0 - 802067e0: 8bae mv s7,a1 - 802067e2: 8ab2 mv s5,a2 - 802067e4: 8936 mv s2,a3 - 802067e6: 8b3a mv s6,a4 + 80206782: 711d addi sp,sp,-96 + 80206784: ec86 sd ra,88(sp) + 80206786: e8a2 sd s0,80(sp) + 80206788: e4a6 sd s1,72(sp) + 8020678a: e0ca sd s2,64(sp) + 8020678c: fc4e sd s3,56(sp) + 8020678e: f852 sd s4,48(sp) + 80206790: f456 sd s5,40(sp) + 80206792: f05a sd s6,32(sp) + 80206794: ec5e sd s7,24(sp) + 80206796: e862 sd s8,16(sp) + 80206798: e466 sd s9,8(sp) + 8020679a: e06a sd s10,0(sp) + 8020679c: 1080 addi s0,sp,96 + 8020679e: 8a2a mv s4,a0 + 802067a0: 8bae mv s7,a1 + 802067a2: 8ab2 mv s5,a2 + 802067a4: 8936 mv s2,a3 + 802067a6: 8b3a mv s6,a4 if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) { - 802067e8: 9eb9 addw a3,a3,a4 + 802067a8: 9eb9 addw a3,a3,a4 return 0; - 802067ea: 4501 li a0,0 + 802067aa: 4501 li a0,0 if (off > entry->file_size || off + n < off || (entry->attribute & ATTR_DIRECTORY)) { - 802067ec: 0b26e163 bltu a3,s2,8020688e <eread+0xd4> - 802067f0: 100a4703 lbu a4,256(s4) - 802067f4: 8b41 andi a4,a4,16 - 802067f6: ef41 bnez a4,8020688e <eread+0xd4> + 802067ac: 0b26e163 bltu a3,s2,8020684e <eread+0xd4> + 802067b0: 100a4703 lbu a4,256(s4) + 802067b4: 8b41 andi a4,a4,16 + 802067b6: ef41 bnez a4,8020684e <eread+0xd4> if (off + n > entry->file_size) { - 802067f8: 00d7f463 bgeu a5,a3,80206800 <eread+0x46> + 802067b8: 00d7f463 bgeu a5,a3,802067c0 <eread+0x46> n = entry->file_size - off; - 802067fc: 41278b3b subw s6,a5,s2 + 802067bc: 41278b3b subw s6,a5,s2 for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) { - 80206800: 10ca2703 lw a4,268(s4) - 80206804: 100007b7 lui a5,0x10000 - 80206808: 17dd addi a5,a5,-9 # ffffff7 <_entry-0x70200009> - 8020680a: 06e7ef63 bltu a5,a4,80206888 <eread+0xce> - 8020680e: 080b0e63 beqz s6,802068aa <eread+0xf0> - 80206812: 4981 li s3,0 + 802067c0: 10ca2703 lw a4,268(s4) + 802067c4: 100007b7 lui a5,0x10000 + 802067c8: 17dd addi a5,a5,-9 # ffffff7 <_entry-0x70200009> + 802067ca: 06e7ef63 bltu a5,a4,80206848 <eread+0xce> + 802067ce: 080b0e63 beqz s6,8020686a <eread+0xf0> + 802067d2: 4981 li s3,0 m = fat.byts_per_clus - off % fat.byts_per_clus; - 80206814: 0002cc97 auipc s9,0x2c - 80206818: 374c8c93 addi s9,s9,884 # 80232b88 <fat> + 802067d4: 0002cc97 auipc s9,0x2c + 802067d8: 3b4c8c93 addi s9,s9,948 # 80232b88 <fat> for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) { - 8020681c: 8c3e mv s8,a5 - 8020681e: a82d j 80206858 <eread+0x9e> - 80206820: 00048d1b sext.w s10,s1 + 802067dc: 8c3e mv s8,a5 + 802067de: a82d j 80206818 <eread+0x9e> + 802067e0: 00048d1b sext.w s10,s1 if (rw_clus(entry->cur_clus, 0, user_dst, dst, off % fat.byts_per_clus, m) != m) { - 80206824: 87ea mv a5,s10 - 80206826: 86d6 mv a3,s5 - 80206828: 865e mv a2,s7 - 8020682a: 4581 li a1,0 - 8020682c: 10ca2503 lw a0,268(s4) - 80206830: 00000097 auipc ra,0x0 - 80206834: a7e080e7 jalr -1410(ra) # 802062ae <rw_clus> - 80206838: 2501 sext.w a0,a0 - 8020683a: 04ad1863 bne s10,a0,8020688a <eread+0xd0> + 802067e4: 87ea mv a5,s10 + 802067e6: 86d6 mv a3,s5 + 802067e8: 865e mv a2,s7 + 802067ea: 4581 li a1,0 + 802067ec: 10ca2503 lw a0,268(s4) + 802067f0: 00000097 auipc ra,0x0 + 802067f4: a7e080e7 jalr -1410(ra) # 8020626e <rw_clus> + 802067f8: 2501 sext.w a0,a0 + 802067fa: 04ad1863 bne s10,a0,8020684a <eread+0xd0> for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) { - 8020683e: 013489bb addw s3,s1,s3 - 80206842: 0124893b addw s2,s1,s2 - 80206846: 1482 slli s1,s1,0x20 - 80206848: 9081 srli s1,s1,0x20 - 8020684a: 9aa6 add s5,s5,s1 - 8020684c: 10ca2783 lw a5,268(s4) - 80206850: 02fc6d63 bltu s8,a5,8020688a <eread+0xd0> - 80206854: 0369fb63 bgeu s3,s6,8020688a <eread+0xd0> + 802067fe: 013489bb addw s3,s1,s3 + 80206802: 0124893b addw s2,s1,s2 + 80206806: 1482 slli s1,s1,0x20 + 80206808: 9081 srli s1,s1,0x20 + 8020680a: 9aa6 add s5,s5,s1 + 8020680c: 10ca2783 lw a5,268(s4) + 80206810: 02fc6d63 bltu s8,a5,8020684a <eread+0xd0> + 80206814: 0369fb63 bgeu s3,s6,8020684a <eread+0xd0> reloc_clus(entry, off, 0); - 80206858: 4601 li a2,0 - 8020685a: 85ca mv a1,s2 - 8020685c: 8552 mv a0,s4 - 8020685e: 00000097 auipc ra,0x0 - 80206862: 948080e7 jalr -1720(ra) # 802061a6 <reloc_clus> + 80206818: 4601 li a2,0 + 8020681a: 85ca mv a1,s2 + 8020681c: 8552 mv a0,s4 + 8020681e: 00000097 auipc ra,0x0 + 80206822: 948080e7 jalr -1720(ra) # 80206166 <reloc_clus> m = fat.byts_per_clus - off % fat.byts_per_clus; - 80206866: 00cca683 lw a3,12(s9) - 8020686a: 02d9763b remuw a2,s2,a3 - 8020686e: 0006071b sext.w a4,a2 + 80206826: 00cca683 lw a3,12(s9) + 8020682a: 02d9763b remuw a2,s2,a3 + 8020682e: 0006071b sext.w a4,a2 if (n - tot < m) { - 80206872: 413b07bb subw a5,s6,s3 + 80206832: 413b07bb subw a5,s6,s3 m = fat.byts_per_clus - off % fat.byts_per_clus; - 80206876: 9e91 subw a3,a3,a2 - 80206878: 84be mv s1,a5 - 8020687a: 2781 sext.w a5,a5 - 8020687c: 0006861b sext.w a2,a3 - 80206880: faf670e3 bgeu a2,a5,80206820 <eread+0x66> - 80206884: 84b6 mv s1,a3 - 80206886: bf69 j 80206820 <eread+0x66> + 80206836: 9e91 subw a3,a3,a2 + 80206838: 84be mv s1,a5 + 8020683a: 2781 sext.w a5,a5 + 8020683c: 0006861b sext.w a2,a3 + 80206840: faf670e3 bgeu a2,a5,802067e0 <eread+0x66> + 80206844: 84b6 mv s1,a3 + 80206846: bf69 j 802067e0 <eread+0x66> for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) { - 80206888: 4981 li s3,0 + 80206848: 4981 li s3,0 return tot; - 8020688a: 0009851b sext.w a0,s3 + 8020684a: 0009851b sext.w a0,s3 } - 8020688e: 60e6 ld ra,88(sp) - 80206890: 6446 ld s0,80(sp) - 80206892: 64a6 ld s1,72(sp) - 80206894: 6906 ld s2,64(sp) - 80206896: 79e2 ld s3,56(sp) - 80206898: 7a42 ld s4,48(sp) - 8020689a: 7aa2 ld s5,40(sp) - 8020689c: 7b02 ld s6,32(sp) - 8020689e: 6be2 ld s7,24(sp) - 802068a0: 6c42 ld s8,16(sp) - 802068a2: 6ca2 ld s9,8(sp) - 802068a4: 6d02 ld s10,0(sp) - 802068a6: 6125 addi sp,sp,96 - 802068a8: 8082 ret + 8020684e: 60e6 ld ra,88(sp) + 80206850: 6446 ld s0,80(sp) + 80206852: 64a6 ld s1,72(sp) + 80206854: 6906 ld s2,64(sp) + 80206856: 79e2 ld s3,56(sp) + 80206858: 7a42 ld s4,48(sp) + 8020685a: 7aa2 ld s5,40(sp) + 8020685c: 7b02 ld s6,32(sp) + 8020685e: 6be2 ld s7,24(sp) + 80206860: 6c42 ld s8,16(sp) + 80206862: 6ca2 ld s9,8(sp) + 80206864: 6d02 ld s10,0(sp) + 80206866: 6125 addi sp,sp,96 + 80206868: 8082 ret for (tot = 0; entry->cur_clus < FAT32_EOC && tot < n; tot += m, off += m, dst += m) { - 802068aa: 89da mv s3,s6 - 802068ac: bff9 j 8020688a <eread+0xd0> + 8020686a: 89da mv s3,s6 + 8020686c: bff9 j 8020684a <eread+0xd0> return 0; - 802068ae: 4501 li a0,0 + 8020686e: 4501 li a0,0 } - 802068b0: 8082 ret + 80206870: 8082 ret -00000000802068b2 <ewrite>: +0000000080206872 <ewrite>: if (off > entry->file_size || off + n < off || (uint64)off + n > 0xffffffff - 802068b2: 10852783 lw a5,264(a0) - 802068b6: 0ed7e463 bltu a5,a3,8020699e <ewrite+0xec> + 80206872: 10852783 lw a5,264(a0) + 80206876: 0ed7e463 bltu a5,a3,8020695e <ewrite+0xec> { - 802068ba: 711d addi sp,sp,-96 - 802068bc: ec86 sd ra,88(sp) - 802068be: e8a2 sd s0,80(sp) - 802068c0: e4a6 sd s1,72(sp) - 802068c2: e0ca sd s2,64(sp) - 802068c4: fc4e sd s3,56(sp) - 802068c6: f852 sd s4,48(sp) - 802068c8: f456 sd s5,40(sp) - 802068ca: f05a sd s6,32(sp) - 802068cc: ec5e sd s7,24(sp) - 802068ce: e862 sd s8,16(sp) - 802068d0: e466 sd s9,8(sp) - 802068d2: 1080 addi s0,sp,96 - 802068d4: 8aaa mv s5,a0 - 802068d6: 8bae mv s7,a1 - 802068d8: 8a32 mv s4,a2 - 802068da: 8936 mv s2,a3 - 802068dc: 8b3a mv s6,a4 + 8020687a: 711d addi sp,sp,-96 + 8020687c: ec86 sd ra,88(sp) + 8020687e: e8a2 sd s0,80(sp) + 80206880: e4a6 sd s1,72(sp) + 80206882: e0ca sd s2,64(sp) + 80206884: fc4e sd s3,56(sp) + 80206886: f852 sd s4,48(sp) + 80206888: f456 sd s5,40(sp) + 8020688a: f05a sd s6,32(sp) + 8020688c: ec5e sd s7,24(sp) + 8020688e: e862 sd s8,16(sp) + 80206890: e466 sd s9,8(sp) + 80206892: 1080 addi s0,sp,96 + 80206894: 8aaa mv s5,a0 + 80206896: 8bae mv s7,a1 + 80206898: 8a32 mv s4,a2 + 8020689a: 8936 mv s2,a3 + 8020689c: 8b3a mv s6,a4 if (off > entry->file_size || off + n < off || (uint64)off + n > 0xffffffff - 802068de: 00e687bb addw a5,a3,a4 - 802068e2: 0cd7e063 bltu a5,a3,802069a2 <ewrite+0xf0> - 802068e6: 02069793 slli a5,a3,0x20 - 802068ea: 9381 srli a5,a5,0x20 - 802068ec: 1702 slli a4,a4,0x20 - 802068ee: 9301 srli a4,a4,0x20 - 802068f0: 97ba add a5,a5,a4 - 802068f2: 577d li a4,-1 - 802068f4: 9301 srli a4,a4,0x20 - 802068f6: 0af76863 bltu a4,a5,802069a6 <ewrite+0xf4> + 8020689e: 00e687bb addw a5,a3,a4 + 802068a2: 0cd7e063 bltu a5,a3,80206962 <ewrite+0xf0> + 802068a6: 02069793 slli a5,a3,0x20 + 802068aa: 9381 srli a5,a5,0x20 + 802068ac: 1702 slli a4,a4,0x20 + 802068ae: 9301 srli a4,a4,0x20 + 802068b0: 97ba add a5,a5,a4 + 802068b2: 577d li a4,-1 + 802068b4: 9301 srli a4,a4,0x20 + 802068b6: 0af76863 bltu a4,a5,80206966 <ewrite+0xf4> || (entry->attribute & ATTR_READ_ONLY)) { - 802068fa: 10054783 lbu a5,256(a0) - 802068fe: 8b85 andi a5,a5,1 - 80206900: e7cd bnez a5,802069aa <ewrite+0xf8> + 802068ba: 10054783 lbu a5,256(a0) + 802068be: 8b85 andi a5,a5,1 + 802068c0: e7cd bnez a5,8020696a <ewrite+0xf8> if (entry->first_clus == 0) { // so file_size if 0 too, which requests off == 0 - 80206902: 10452783 lw a5,260(a0) - 80206906: cb89 beqz a5,80206918 <ewrite+0x66> + 802068c2: 10452783 lw a5,260(a0) + 802068c6: cb89 beqz a5,802068d8 <ewrite+0x66> for (tot = 0; tot < n; tot += m, off += m, src += m) { - 80206908: 080b0963 beqz s6,8020699a <ewrite+0xe8> - 8020690c: 4981 li s3,0 + 802068c8: 080b0963 beqz s6,8020695a <ewrite+0xe8> + 802068cc: 4981 li s3,0 m = fat.byts_per_clus - off % fat.byts_per_clus; - 8020690e: 0002cc17 auipc s8,0x2c - 80206912: 27ac0c13 addi s8,s8,634 # 80232b88 <fat> - 80206916: a891 j 8020696a <ewrite+0xb8> + 802068ce: 0002cc17 auipc s8,0x2c + 802068d2: 2bac0c13 addi s8,s8,698 # 80232b88 <fat> + 802068d6: a891 j 8020692a <ewrite+0xb8> entry->cur_clus = entry->first_clus = alloc_clus(entry->dev); - 80206918: 11454503 lbu a0,276(a0) - 8020691c: fffff097 auipc ra,0xfffff - 80206920: 6c8080e7 jalr 1736(ra) # 80205fe4 <alloc_clus> - 80206924: 2501 sext.w a0,a0 - 80206926: 10aaa223 sw a0,260(s5) - 8020692a: 10aaa623 sw a0,268(s5) + 802068d8: 11454503 lbu a0,276(a0) + 802068dc: fffff097 auipc ra,0xfffff + 802068e0: 6c8080e7 jalr 1736(ra) # 80205fa4 <alloc_clus> + 802068e4: 2501 sext.w a0,a0 + 802068e6: 10aaa223 sw a0,260(s5) + 802068ea: 10aaa623 sw a0,268(s5) entry->clus_cnt = 0; - 8020692e: 100aa823 sw zero,272(s5) + 802068ee: 100aa823 sw zero,272(s5) entry->dirty = 1; - 80206932: 4785 li a5,1 - 80206934: 10fa8aa3 sb a5,277(s5) - 80206938: bfc1 j 80206908 <ewrite+0x56> - 8020693a: 00048c9b sext.w s9,s1 + 802068f2: 4785 li a5,1 + 802068f4: 10fa8aa3 sb a5,277(s5) + 802068f8: bfc1 j 802068c8 <ewrite+0x56> + 802068fa: 00048c9b sext.w s9,s1 if (rw_clus(entry->cur_clus, 1, user_src, src, off % fat.byts_per_clus, m) != m) { - 8020693e: 87e6 mv a5,s9 - 80206940: 86d2 mv a3,s4 - 80206942: 865e mv a2,s7 - 80206944: 4585 li a1,1 - 80206946: 10caa503 lw a0,268(s5) - 8020694a: 00000097 auipc ra,0x0 - 8020694e: 964080e7 jalr -1692(ra) # 802062ae <rw_clus> - 80206952: 2501 sext.w a0,a0 - 80206954: 04ac9d63 bne s9,a0,802069ae <ewrite+0xfc> + 802068fe: 87e6 mv a5,s9 + 80206900: 86d2 mv a3,s4 + 80206902: 865e mv a2,s7 + 80206904: 4585 li a1,1 + 80206906: 10caa503 lw a0,268(s5) + 8020690a: 00000097 auipc ra,0x0 + 8020690e: 964080e7 jalr -1692(ra) # 8020626e <rw_clus> + 80206912: 2501 sext.w a0,a0 + 80206914: 04ac9d63 bne s9,a0,8020696e <ewrite+0xfc> for (tot = 0; tot < n; tot += m, off += m, src += m) { - 80206958: 013489bb addw s3,s1,s3 - 8020695c: 0124893b addw s2,s1,s2 - 80206960: 1482 slli s1,s1,0x20 - 80206962: 9081 srli s1,s1,0x20 - 80206964: 9a26 add s4,s4,s1 - 80206966: 0569f463 bgeu s3,s6,802069ae <ewrite+0xfc> + 80206918: 013489bb addw s3,s1,s3 + 8020691c: 0124893b addw s2,s1,s2 + 80206920: 1482 slli s1,s1,0x20 + 80206922: 9081 srli s1,s1,0x20 + 80206924: 9a26 add s4,s4,s1 + 80206926: 0569f463 bgeu s3,s6,8020696e <ewrite+0xfc> reloc_clus(entry, off, 1); - 8020696a: 4605 li a2,1 - 8020696c: 85ca mv a1,s2 - 8020696e: 8556 mv a0,s5 - 80206970: 00000097 auipc ra,0x0 - 80206974: 836080e7 jalr -1994(ra) # 802061a6 <reloc_clus> + 8020692a: 4605 li a2,1 + 8020692c: 85ca mv a1,s2 + 8020692e: 8556 mv a0,s5 + 80206930: 00000097 auipc ra,0x0 + 80206934: 836080e7 jalr -1994(ra) # 80206166 <reloc_clus> m = fat.byts_per_clus - off % fat.byts_per_clus; - 80206978: 00cc2683 lw a3,12(s8) - 8020697c: 02d9763b remuw a2,s2,a3 - 80206980: 0006071b sext.w a4,a2 + 80206938: 00cc2683 lw a3,12(s8) + 8020693c: 02d9763b remuw a2,s2,a3 + 80206940: 0006071b sext.w a4,a2 if (n - tot < m) { - 80206984: 413b07bb subw a5,s6,s3 + 80206944: 413b07bb subw a5,s6,s3 m = fat.byts_per_clus - off % fat.byts_per_clus; - 80206988: 9e91 subw a3,a3,a2 - 8020698a: 84be mv s1,a5 - 8020698c: 2781 sext.w a5,a5 - 8020698e: 0006861b sext.w a2,a3 - 80206992: faf674e3 bgeu a2,a5,8020693a <ewrite+0x88> - 80206996: 84b6 mv s1,a3 - 80206998: b74d j 8020693a <ewrite+0x88> + 80206948: 9e91 subw a3,a3,a2 + 8020694a: 84be mv s1,a5 + 8020694c: 2781 sext.w a5,a5 + 8020694e: 0006861b sext.w a2,a3 + 80206952: faf674e3 bgeu a2,a5,802068fa <ewrite+0x88> + 80206956: 84b6 mv s1,a3 + 80206958: b74d j 802068fa <ewrite+0x88> for (tot = 0; tot < n; tot += m, off += m, src += m) { - 8020699a: 89da mv s3,s6 - 8020699c: a015 j 802069c0 <ewrite+0x10e> + 8020695a: 89da mv s3,s6 + 8020695c: a015 j 80206980 <ewrite+0x10e> return -1; - 8020699e: 557d li a0,-1 + 8020695e: 557d li a0,-1 } - 802069a0: 8082 ret + 80206960: 8082 ret return -1; - 802069a2: 557d li a0,-1 - 802069a4: a005 j 802069c4 <ewrite+0x112> - 802069a6: 557d li a0,-1 - 802069a8: a831 j 802069c4 <ewrite+0x112> - 802069aa: 557d li a0,-1 - 802069ac: a821 j 802069c4 <ewrite+0x112> + 80206962: 557d li a0,-1 + 80206964: a005 j 80206984 <ewrite+0x112> + 80206966: 557d li a0,-1 + 80206968: a831 j 80206984 <ewrite+0x112> + 8020696a: 557d li a0,-1 + 8020696c: a821 j 80206984 <ewrite+0x112> if(off > entry->file_size) { - 802069ae: 108aa783 lw a5,264(s5) - 802069b2: 0127f763 bgeu a5,s2,802069c0 <ewrite+0x10e> + 8020696e: 108aa783 lw a5,264(s5) + 80206972: 0127f763 bgeu a5,s2,80206980 <ewrite+0x10e> entry->file_size = off; - 802069b6: 112aa423 sw s2,264(s5) + 80206976: 112aa423 sw s2,264(s5) entry->dirty = 1; - 802069ba: 4785 li a5,1 - 802069bc: 10fa8aa3 sb a5,277(s5) + 8020697a: 4785 li a5,1 + 8020697c: 10fa8aa3 sb a5,277(s5) return tot; - 802069c0: 0009851b sext.w a0,s3 + 80206980: 0009851b sext.w a0,s3 } - 802069c4: 60e6 ld ra,88(sp) - 802069c6: 6446 ld s0,80(sp) - 802069c8: 64a6 ld s1,72(sp) - 802069ca: 6906 ld s2,64(sp) - 802069cc: 79e2 ld s3,56(sp) - 802069ce: 7a42 ld s4,48(sp) - 802069d0: 7aa2 ld s5,40(sp) - 802069d2: 7b02 ld s6,32(sp) - 802069d4: 6be2 ld s7,24(sp) - 802069d6: 6c42 ld s8,16(sp) - 802069d8: 6ca2 ld s9,8(sp) - 802069da: 6125 addi sp,sp,96 - 802069dc: 8082 ret - -00000000802069de <formatname>: + 80206984: 60e6 ld ra,88(sp) + 80206986: 6446 ld s0,80(sp) + 80206988: 64a6 ld s1,72(sp) + 8020698a: 6906 ld s2,64(sp) + 8020698c: 79e2 ld s3,56(sp) + 8020698e: 7a42 ld s4,48(sp) + 80206990: 7aa2 ld s5,40(sp) + 80206992: 7b02 ld s6,32(sp) + 80206994: 6be2 ld s7,24(sp) + 80206996: 6c42 ld s8,16(sp) + 80206998: 6ca2 ld s9,8(sp) + 8020699a: 6125 addi sp,sp,96 + 8020699c: 8082 ret + +000000008020699e <formatname>: { - 802069de: 7179 addi sp,sp,-48 - 802069e0: f406 sd ra,40(sp) - 802069e2: f022 sd s0,32(sp) - 802069e4: ec26 sd s1,24(sp) - 802069e6: e84a sd s2,16(sp) - 802069e8: e44e sd s3,8(sp) - 802069ea: e052 sd s4,0(sp) - 802069ec: 1800 addi s0,sp,48 - 802069ee: 84aa mv s1,a0 + 8020699e: 7179 addi sp,sp,-48 + 802069a0: f406 sd ra,40(sp) + 802069a2: f022 sd s0,32(sp) + 802069a4: ec26 sd s1,24(sp) + 802069a6: e84a sd s2,16(sp) + 802069a8: e44e sd s3,8(sp) + 802069aa: e052 sd s4,0(sp) + 802069ac: 1800 addi s0,sp,48 + 802069ae: 84aa mv s1,a0 while (*name == ' ' || *name == '.') { name++; } - 802069f0: 02000793 li a5,32 - 802069f4: 02e00713 li a4,46 - 802069f8: a011 j 802069fc <formatname+0x1e> - 802069fa: 0485 addi s1,s1,1 - 802069fc: 0004c583 lbu a1,0(s1) - 80206a00: fef58de3 beq a1,a5,802069fa <formatname+0x1c> - 80206a04: fee58be3 beq a1,a4,802069fa <formatname+0x1c> + 802069b0: 02000793 li a5,32 + 802069b4: 02e00713 li a4,46 + 802069b8: a011 j 802069bc <formatname+0x1e> + 802069ba: 0485 addi s1,s1,1 + 802069bc: 0004c583 lbu a1,0(s1) + 802069c0: fef58de3 beq a1,a5,802069ba <formatname+0x1c> + 802069c4: fee58be3 beq a1,a4,802069ba <formatname+0x1c> for (p = name; *p; p++) { - 80206a08: c1b9 beqz a1,80206a4e <formatname+0x70> - 80206a0a: 8926 mv s2,s1 + 802069c8: c1b9 beqz a1,80206a0e <formatname+0x70> + 802069ca: 8926 mv s2,s1 if (c < 0x20 || strchr(illegal, c)) { - 80206a0c: 49fd li s3,31 - 80206a0e: 00006a17 auipc s4,0x6 - 80206a12: 5f2a0a13 addi s4,s4,1522 # 8020d000 <illegal.1> - 80206a16: 02b9fe63 bgeu s3,a1,80206a52 <formatname+0x74> - 80206a1a: 8552 mv a0,s4 - 80206a1c: ffffa097 auipc ra,0xffffa - 80206a20: fa4080e7 jalr -92(ra) # 802009c0 <strchr> - 80206a24: e121 bnez a0,80206a64 <formatname+0x86> + 802069cc: 49fd li s3,31 + 802069ce: 00006a17 auipc s4,0x6 + 802069d2: 632a0a13 addi s4,s4,1586 # 8020d000 <illegal.1> + 802069d6: 02b9fe63 bgeu s3,a1,80206a12 <formatname+0x74> + 802069da: 8552 mv a0,s4 + 802069dc: ffffa097 auipc ra,0xffffa + 802069e0: fe4080e7 jalr -28(ra) # 802009c0 <strchr> + 802069e4: e121 bnez a0,80206a24 <formatname+0x86> for (p = name; *p; p++) { - 80206a26: 0905 addi s2,s2,1 - 80206a28: 00094583 lbu a1,0(s2) - 80206a2c: f5ed bnez a1,80206a16 <formatname+0x38> + 802069e6: 0905 addi s2,s2,1 + 802069e8: 00094583 lbu a1,0(s2) + 802069ec: f5ed bnez a1,802069d6 <formatname+0x38> if (*p != ' ') { - 80206a2e: 02000693 li a3,32 - 80206a32: 874a mv a4,s2 + 802069ee: 02000693 li a3,32 + 802069f2: 874a mv a4,s2 while (p-- > name) { - 80206a34: 0124fb63 bgeu s1,s2,80206a4a <formatname+0x6c> + 802069f4: 0124fb63 bgeu s1,s2,80206a0a <formatname+0x6c> if (*p != ' ') { - 80206a38: 197d addi s2,s2,-1 - 80206a3a: 00094783 lbu a5,0(s2) - 80206a3e: fed78ae3 beq a5,a3,80206a32 <formatname+0x54> + 802069f8: 197d addi s2,s2,-1 + 802069fa: 00094783 lbu a5,0(s2) + 802069fe: fed78ae3 beq a5,a3,802069f2 <formatname+0x54> p[1] = '\0'; - 80206a42: 00070023 sb zero,0(a4) + 80206a02: 00070023 sb zero,0(a4) break; - 80206a46: 8526 mv a0,s1 - 80206a48: a031 j 80206a54 <formatname+0x76> - 80206a4a: 8526 mv a0,s1 - 80206a4c: a021 j 80206a54 <formatname+0x76> + 80206a06: 8526 mv a0,s1 + 80206a08: a031 j 80206a14 <formatname+0x76> + 80206a0a: 8526 mv a0,s1 + 80206a0c: a021 j 80206a14 <formatname+0x76> for (p = name; *p; p++) { - 80206a4e: 8526 mv a0,s1 - 80206a50: a011 j 80206a54 <formatname+0x76> + 80206a0e: 8526 mv a0,s1 + 80206a10: a011 j 80206a14 <formatname+0x76> return 0; - 80206a52: 4501 li a0,0 + 80206a12: 4501 li a0,0 } - 80206a54: 70a2 ld ra,40(sp) - 80206a56: 7402 ld s0,32(sp) - 80206a58: 64e2 ld s1,24(sp) - 80206a5a: 6942 ld s2,16(sp) - 80206a5c: 69a2 ld s3,8(sp) - 80206a5e: 6a02 ld s4,0(sp) - 80206a60: 6145 addi sp,sp,48 - 80206a62: 8082 ret + 80206a14: 70a2 ld ra,40(sp) + 80206a16: 7402 ld s0,32(sp) + 80206a18: 64e2 ld s1,24(sp) + 80206a1a: 6942 ld s2,16(sp) + 80206a1c: 69a2 ld s3,8(sp) + 80206a1e: 6a02 ld s4,0(sp) + 80206a20: 6145 addi sp,sp,48 + 80206a22: 8082 ret return 0; - 80206a64: 4501 li a0,0 - 80206a66: b7fd j 80206a54 <formatname+0x76> + 80206a24: 4501 li a0,0 + 80206a26: b7fd j 80206a14 <formatname+0x76> -0000000080206a68 <cal_checksum>: +0000000080206a28 <cal_checksum>: { - 80206a68: 1141 addi sp,sp,-16 - 80206a6a: e422 sd s0,8(sp) - 80206a6c: 0800 addi s0,sp,16 - 80206a6e: 87aa mv a5,a0 + 80206a28: 1141 addi sp,sp,-16 + 80206a2a: e422 sd s0,8(sp) + 80206a2c: 0800 addi s0,sp,16 + 80206a2e: 87aa mv a5,a0 for (int i = CHAR_SHORT_NAME; i != 0; i--) { - 80206a70: 00b50613 addi a2,a0,11 + 80206a30: 00b50613 addi a2,a0,11 uint8 sum = 0; - 80206a74: 4501 li a0,0 + 80206a34: 4501 li a0,0 sum = ((sum & 1) ? 0x80 : 0) + (sum >> 1) + *shortname++; - 80206a76: 0075171b slliw a4,a0,0x7 - 80206a7a: 0785 addi a5,a5,1 - 80206a7c: 0015551b srliw a0,a0,0x1 - 80206a80: fff7c683 lbu a3,-1(a5) - 80206a84: 9d35 addw a0,a0,a3 - 80206a86: 953a add a0,a0,a4 - 80206a88: 0ff57513 zext.b a0,a0 + 80206a36: 0075171b slliw a4,a0,0x7 + 80206a3a: 0785 addi a5,a5,1 + 80206a3c: 0015551b srliw a0,a0,0x1 + 80206a40: fff7c683 lbu a3,-1(a5) + 80206a44: 9d35 addw a0,a0,a3 + 80206a46: 953a add a0,a0,a4 + 80206a48: 0ff57513 zext.b a0,a0 for (int i = CHAR_SHORT_NAME; i != 0; i--) { - 80206a8c: fef615e3 bne a2,a5,80206a76 <cal_checksum+0xe> + 80206a4c: fef615e3 bne a2,a5,80206a36 <cal_checksum+0xe> } - 80206a90: 6422 ld s0,8(sp) - 80206a92: 0141 addi sp,sp,16 - 80206a94: 8082 ret + 80206a50: 6422 ld s0,8(sp) + 80206a52: 0141 addi sp,sp,16 + 80206a54: 8082 ret -0000000080206a96 <emake>: +0000000080206a56 <emake>: { - 80206a96: 7131 addi sp,sp,-192 - 80206a98: fd06 sd ra,184(sp) - 80206a9a: f922 sd s0,176(sp) - 80206a9c: f526 sd s1,168(sp) - 80206a9e: f14a sd s2,160(sp) - 80206aa0: ed4e sd s3,152(sp) - 80206aa2: e952 sd s4,144(sp) - 80206aa4: e556 sd s5,136(sp) - 80206aa6: e15a sd s6,128(sp) - 80206aa8: fcde sd s7,120(sp) - 80206aaa: f8e2 sd s8,112(sp) - 80206aac: f4e6 sd s9,104(sp) - 80206aae: f0ea sd s10,96(sp) - 80206ab0: ecee sd s11,88(sp) - 80206ab2: 0180 addi s0,sp,192 + 80206a56: 7131 addi sp,sp,-192 + 80206a58: fd06 sd ra,184(sp) + 80206a5a: f922 sd s0,176(sp) + 80206a5c: f526 sd s1,168(sp) + 80206a5e: f14a sd s2,160(sp) + 80206a60: ed4e sd s3,152(sp) + 80206a62: e952 sd s4,144(sp) + 80206a64: e556 sd s5,136(sp) + 80206a66: e15a sd s6,128(sp) + 80206a68: fcde sd s7,120(sp) + 80206a6a: f8e2 sd s8,112(sp) + 80206a6c: f4e6 sd s9,104(sp) + 80206a6e: f0ea sd s10,96(sp) + 80206a70: ecee sd s11,88(sp) + 80206a72: 0180 addi s0,sp,192 if (!(dp->attribute & ATTR_DIRECTORY)) - 80206ab4: 10054783 lbu a5,256(a0) - 80206ab8: 8bc1 andi a5,a5,16 - 80206aba: c3d5 beqz a5,80206b5e <emake+0xc8> - 80206abc: 8b2a mv s6,a0 - 80206abe: 8d2e mv s10,a1 - 80206ac0: 8cb2 mv s9,a2 + 80206a74: 10054783 lbu a5,256(a0) + 80206a78: 8bc1 andi a5,a5,16 + 80206a7a: c3d5 beqz a5,80206b1e <emake+0xc8> + 80206a7c: 8b2a mv s6,a0 + 80206a7e: 8d2e mv s10,a1 + 80206a80: 8cb2 mv s9,a2 if (off % sizeof(union dentry)) - 80206ac2: 01f67793 andi a5,a2,31 - 80206ac6: e7c5 bnez a5,80206b6e <emake+0xd8> + 80206a82: 01f67793 andi a5,a2,31 + 80206a86: e7c5 bnez a5,80206b2e <emake+0xd8> memset(&de, 0, sizeof(de)); - 80206ac8: 02000613 li a2,32 - 80206acc: 4581 li a1,0 - 80206ace: f7040513 addi a0,s0,-144 - 80206ad2: ffffa097 auipc ra,0xffffa - 80206ad6: c90080e7 jalr -880(ra) # 80200762 <memset> + 80206a88: 02000613 li a2,32 + 80206a8c: 4581 li a1,0 + 80206a8e: f7040513 addi a0,s0,-144 + 80206a92: ffffa097 auipc ra,0xffffa + 80206a96: cd0080e7 jalr -816(ra) # 80200762 <memset> if (off <= 32) { - 80206ada: 02000793 li a5,32 - 80206ade: 0b97ec63 bltu a5,s9,80206b96 <emake+0x100> + 80206a9a: 02000793 li a5,32 + 80206a9e: 0b97ec63 bltu a5,s9,80206b56 <emake+0x100> if (off == 0) { - 80206ae2: 080c9e63 bnez s9,80206b7e <emake+0xe8> + 80206aa2: 080c9e63 bnez s9,80206b3e <emake+0xe8> strncpy(de.sne.name, ". ", sizeof(de.sne.name)); - 80206ae6: 462d li a2,11 - 80206ae8: 00004597 auipc a1,0x4 - 80206aec: 34058593 addi a1,a1,832 # 8020ae28 <digits+0xaa8> - 80206af0: f7040513 addi a0,s0,-144 - 80206af4: ffffa097 auipc ra,0xffffa - 80206af8: d82080e7 jalr -638(ra) # 80200876 <strncpy> + 80206aa6: 462d li a2,11 + 80206aa8: 00004597 auipc a1,0x4 + 80206aac: 37858593 addi a1,a1,888 # 8020ae20 <digits+0xaa0> + 80206ab0: f7040513 addi a0,s0,-144 + 80206ab4: ffffa097 auipc ra,0xffffa + 80206ab8: dc2080e7 jalr -574(ra) # 80200876 <strncpy> de.sne.attr = ATTR_DIRECTORY; - 80206afc: 47c1 li a5,16 - 80206afe: f6f40da3 sb a5,-133(s0) + 80206abc: 47c1 li a5,16 + 80206abe: f6f40da3 sb a5,-133(s0) de.sne.fst_clus_hi = (uint16)(ep->first_clus >> 16); // first clus high 16 bits - 80206b02: 104d2783 lw a5,260(s10) # fffffffffffff104 <ebss_clear+0xffffffff7fdc4104> - 80206b06: 0107d71b srliw a4,a5,0x10 - 80206b0a: f8e41223 sh a4,-124(s0) + 80206ac2: 104d2783 lw a5,260(s10) # fffffffffffff104 <ebss_clear+0xffffffff7fdc4104> + 80206ac6: 0107d71b srliw a4,a5,0x10 + 80206aca: f8e41223 sh a4,-124(s0) de.sne.fst_clus_lo = (uint16)(ep->first_clus & 0xffff); // low 16 bits - 80206b0e: f8f41523 sh a5,-118(s0) + 80206ace: f8f41523 sh a5,-118(s0) de.sne.file_size = 0; // filesize is updated in eupdate() - 80206b12: f8042623 sw zero,-116(s0) + 80206ad2: f8042623 sw zero,-116(s0) off = reloc_clus(dp, off, 1); - 80206b16: 4605 li a2,1 - 80206b18: 85e6 mv a1,s9 - 80206b1a: 855a mv a0,s6 - 80206b1c: fffff097 auipc ra,0xfffff - 80206b20: 68a080e7 jalr 1674(ra) # 802061a6 <reloc_clus> + 80206ad6: 4605 li a2,1 + 80206ad8: 85e6 mv a1,s9 + 80206ada: 855a mv a0,s6 + 80206adc: fffff097 auipc ra,0xfffff + 80206ae0: 68a080e7 jalr 1674(ra) # 80206166 <reloc_clus> rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off, sizeof(de)); - 80206b24: 02000793 li a5,32 - 80206b28: 0005071b sext.w a4,a0 - 80206b2c: f7040693 addi a3,s0,-144 - 80206b30: 4601 li a2,0 - 80206b32: 4585 li a1,1 - 80206b34: 10cb2503 lw a0,268(s6) - 80206b38: fffff097 auipc ra,0xfffff - 80206b3c: 776080e7 jalr 1910(ra) # 802062ae <rw_clus> + 80206ae4: 02000793 li a5,32 + 80206ae8: 0005071b sext.w a4,a0 + 80206aec: f7040693 addi a3,s0,-144 + 80206af0: 4601 li a2,0 + 80206af2: 4585 li a1,1 + 80206af4: 10cb2503 lw a0,268(s6) + 80206af8: fffff097 auipc ra,0xfffff + 80206afc: 776080e7 jalr 1910(ra) # 8020626e <rw_clus> } - 80206b40: 70ea ld ra,184(sp) - 80206b42: 744a ld s0,176(sp) - 80206b44: 74aa ld s1,168(sp) - 80206b46: 790a ld s2,160(sp) - 80206b48: 69ea ld s3,152(sp) - 80206b4a: 6a4a ld s4,144(sp) - 80206b4c: 6aaa ld s5,136(sp) - 80206b4e: 6b0a ld s6,128(sp) - 80206b50: 7be6 ld s7,120(sp) - 80206b52: 7c46 ld s8,112(sp) - 80206b54: 7ca6 ld s9,104(sp) - 80206b56: 7d06 ld s10,96(sp) - 80206b58: 6de6 ld s11,88(sp) - 80206b5a: 6129 addi sp,sp,192 - 80206b5c: 8082 ret + 80206b00: 70ea ld ra,184(sp) + 80206b02: 744a ld s0,176(sp) + 80206b04: 74aa ld s1,168(sp) + 80206b06: 790a ld s2,160(sp) + 80206b08: 69ea ld s3,152(sp) + 80206b0a: 6a4a ld s4,144(sp) + 80206b0c: 6aaa ld s5,136(sp) + 80206b0e: 6b0a ld s6,128(sp) + 80206b10: 7be6 ld s7,120(sp) + 80206b12: 7c46 ld s8,112(sp) + 80206b14: 7ca6 ld s9,104(sp) + 80206b16: 7d06 ld s10,96(sp) + 80206b18: 6de6 ld s11,88(sp) + 80206b1a: 6129 addi sp,sp,192 + 80206b1c: 8082 ret panic("emake: not dir"); - 80206b5e: 00004517 auipc a0,0x4 - 80206b62: 2a250513 addi a0,a0,674 # 8020ae00 <digits+0xa80> - 80206b66: ffff9097 auipc ra,0xffff9 - 80206b6a: 5de080e7 jalr 1502(ra) # 80200144 <panic> + 80206b1e: 00004517 auipc a0,0x4 + 80206b22: 2da50513 addi a0,a0,730 # 8020adf8 <digits+0xa78> + 80206b26: ffff9097 auipc ra,0xffff9 + 80206b2a: 61e080e7 jalr 1566(ra) # 80200144 <panic> panic("emake: not aligned"); - 80206b6e: 00004517 auipc a0,0x4 - 80206b72: 2a250513 addi a0,a0,674 # 8020ae10 <digits+0xa90> - 80206b76: ffff9097 auipc ra,0xffff9 - 80206b7a: 5ce080e7 jalr 1486(ra) # 80200144 <panic> + 80206b2e: 00004517 auipc a0,0x4 + 80206b32: 2da50513 addi a0,a0,730 # 8020ae08 <digits+0xa88> + 80206b36: ffff9097 auipc ra,0xffff9 + 80206b3a: 60e080e7 jalr 1550(ra) # 80200144 <panic> strncpy(de.sne.name, ".. ", sizeof(de.sne.name)); - 80206b7e: 462d li a2,11 - 80206b80: 00004597 auipc a1,0x4 - 80206b84: 2b858593 addi a1,a1,696 # 8020ae38 <digits+0xab8> - 80206b88: f7040513 addi a0,s0,-144 - 80206b8c: ffffa097 auipc ra,0xffffa - 80206b90: cea080e7 jalr -790(ra) # 80200876 <strncpy> - 80206b94: b7a5 j 80206afc <emake+0x66> + 80206b3e: 462d li a2,11 + 80206b40: 00004597 auipc a1,0x4 + 80206b44: 2f058593 addi a1,a1,752 # 8020ae30 <digits+0xab0> + 80206b48: f7040513 addi a0,s0,-144 + 80206b4c: ffffa097 auipc ra,0xffffa + 80206b50: d2a080e7 jalr -726(ra) # 80200876 <strncpy> + 80206b54: b7a5 j 80206abc <emake+0x66> int entcnt = (strlen(ep->filename) + CHAR_LONG_NAME - 1) / CHAR_LONG_NAME; // count of l-n-entries, rounds up - 80206b96: 896a mv s2,s10 - 80206b98: 856a mv a0,s10 - 80206b9a: ffffa097 auipc ra,0xffffa - 80206b9e: d4c080e7 jalr -692(ra) # 802008e6 <strlen> - 80206ba2: f4a43423 sd a0,-184(s0) - 80206ba6: 00c5071b addiw a4,a0,12 - 80206baa: 47b5 li a5,13 - 80206bac: 02f747bb divw a5,a4,a5 - 80206bb0: f4f42c23 sw a5,-168(s0) - 80206bb4: 00078d9b sext.w s11,a5 + 80206b56: 896a mv s2,s10 + 80206b58: 856a mv a0,s10 + 80206b5a: ffffa097 auipc ra,0xffffa + 80206b5e: d8c080e7 jalr -628(ra) # 802008e6 <strlen> + 80206b62: f4a43423 sd a0,-184(s0) + 80206b66: 00c5071b addiw a4,a0,12 + 80206b6a: 47b5 li a5,13 + 80206b6c: 02f747bb divw a5,a4,a5 + 80206b70: f4f42c23 sw a5,-168(s0) + 80206b74: 00078d9b sext.w s11,a5 memset(shortname, 0, sizeof(shortname)); - 80206bb8: 4631 li a2,12 - 80206bba: 4581 li a1,0 - 80206bbc: f6040513 addi a0,s0,-160 - 80206bc0: ffffa097 auipc ra,0xffffa - 80206bc4: ba2080e7 jalr -1118(ra) # 80200762 <memset> + 80206b78: 4631 li a2,12 + 80206b7a: 4581 li a1,0 + 80206b7c: f6040513 addi a0,s0,-160 + 80206b80: ffffa097 auipc ra,0xffffa + 80206b84: be2080e7 jalr -1054(ra) # 80200762 <memset> for (int j = strlen(name) - 1; j >= 0; j--) { - 80206bc8: 856a mv a0,s10 - 80206bca: ffffa097 auipc ra,0xffffa - 80206bce: d1c080e7 jalr -740(ra) # 802008e6 <strlen> - 80206bd2: fff5079b addiw a5,a0,-1 - 80206bd6: 0207cf63 bltz a5,80206c14 <emake+0x17e> - 80206bda: 97ea add a5,a5,s10 - 80206bdc: ffed0693 addi a3,s10,-2 - 80206be0: 96aa add a3,a3,a0 - 80206be2: fff5071b addiw a4,a0,-1 - 80206be6: 1702 slli a4,a4,0x20 - 80206be8: 9301 srli a4,a4,0x20 - 80206bea: 8e99 sub a3,a3,a4 + 80206b88: 856a mv a0,s10 + 80206b8a: ffffa097 auipc ra,0xffffa + 80206b8e: d5c080e7 jalr -676(ra) # 802008e6 <strlen> + 80206b92: fff5079b addiw a5,a0,-1 + 80206b96: 0207cf63 bltz a5,80206bd4 <emake+0x17e> + 80206b9a: 97ea add a5,a5,s10 + 80206b9c: ffed0693 addi a3,s10,-2 + 80206ba0: 96aa add a3,a3,a0 + 80206ba2: fff5071b addiw a4,a0,-1 + 80206ba6: 1702 slli a4,a4,0x20 + 80206ba8: 9301 srli a4,a4,0x20 + 80206baa: 8e99 sub a3,a3,a4 if (name[j] == '.') { - 80206bec: 02e00613 li a2,46 - 80206bf0: 89be mv s3,a5 - 80206bf2: 0007c703 lbu a4,0(a5) - 80206bf6: 00c70663 beq a4,a2,80206c02 <emake+0x16c> + 80206bac: 02e00613 li a2,46 + 80206bb0: 89be mv s3,a5 + 80206bb2: 0007c703 lbu a4,0(a5) + 80206bb6: 00c70663 beq a4,a2,80206bc2 <emake+0x16c> for (int j = strlen(name) - 1; j >= 0; j--) { - 80206bfa: 17fd addi a5,a5,-1 - 80206bfc: fed79ae3 bne a5,a3,80206bf0 <emake+0x15a> + 80206bba: 17fd addi a5,a5,-1 + 80206bbc: fed79ae3 bne a5,a3,80206bb0 <emake+0x15a> char c, *p = name; - 80206c00: 89ea mv s3,s10 + 80206bc0: 89ea mv s3,s10 shortname[i++] = c; - 80206c02: 4481 li s1,0 + 80206bc2: 4481 li s1,0 if (i == 8 && p) { - 80206c04: 4aa1 li s5,8 + 80206bc4: 4aa1 li s5,8 while (i < CHAR_SHORT_NAME && (c = *name++)) { - 80206c06: 4ba9 li s7,10 + 80206bc6: 4ba9 li s7,10 if (c >= 'a' && c <= 'z') { - 80206c08: 4c65 li s8,25 + 80206bc8: 4c65 li s8,25 memset(shortname + i, ' ', 8 - i); - 80206c0a: f6040793 addi a5,s0,-160 - 80206c0e: f4f43823 sd a5,-176(s0) - 80206c12: a8d9 j 80206ce8 <emake+0x252> + 80206bca: f6040793 addi a5,s0,-160 + 80206bce: f4f43823 sd a5,-176(s0) + 80206bd2: a8d9 j 80206ca8 <emake+0x252> char c, *p = name; - 80206c14: 89ea mv s3,s10 - 80206c16: b7f5 j 80206c02 <emake+0x16c> + 80206bd4: 89ea mv s3,s10 + 80206bd6: b7f5 j 80206bc2 <emake+0x16c> if (i == 8 && p) { - 80206c18: 22098b63 beqz s3,80206e4e <emake+0x3b8> + 80206bd8: 22098b63 beqz s3,80206e0e <emake+0x3b8> if (p + 1 < name) { break; } // no '.' - 80206c1c: 0985 addi s3,s3,1 - 80206c1e: 0949fc63 bgeu s3,s4,80206cb6 <emake+0x220> - 80206c22: f6040793 addi a5,s0,-160 - 80206c26: 97a6 add a5,a5,s1 + 80206bdc: 0985 addi s3,s3,1 + 80206bde: 0949fc63 bgeu s3,s4,80206c76 <emake+0x220> + 80206be2: f6040793 addi a5,s0,-160 + 80206be6: 97a6 add a5,a5,s1 shortname[i++] = ' '; - 80206c28: 02000693 li a3,32 + 80206be8: 02000693 li a3,32 while (i < CHAR_SHORT_NAME) { - 80206c2c: 4729 li a4,10 + 80206bec: 4729 li a4,10 shortname[i++] = ' '; - 80206c2e: 2485 addiw s1,s1,1 - 80206c30: 00d78023 sb a3,0(a5) + 80206bee: 2485 addiw s1,s1,1 + 80206bf0: 00d78023 sb a3,0(a5) while (i < CHAR_SHORT_NAME) { - 80206c34: 0785 addi a5,a5,1 - 80206c36: fe975ce3 bge a4,s1,80206c2e <emake+0x198> + 80206bf4: 0785 addi a5,a5,1 + 80206bf6: fe975ce3 bge a4,s1,80206bee <emake+0x198> de.lne.checksum = cal_checksum((uchar *)shortname); - 80206c3a: f6040513 addi a0,s0,-160 - 80206c3e: 00000097 auipc ra,0x0 - 80206c42: e2a080e7 jalr -470(ra) # 80206a68 <cal_checksum> - 80206c46: f6a40ea3 sb a0,-131(s0) + 80206bfa: f6040513 addi a0,s0,-160 + 80206bfe: 00000097 auipc ra,0x0 + 80206c02: e2a080e7 jalr -470(ra) # 80206a28 <cal_checksum> + 80206c06: f6a40ea3 sb a0,-131(s0) de.lne.attr = ATTR_LONG_NAME; - 80206c4a: 47bd li a5,15 - 80206c4c: f6f40da3 sb a5,-133(s0) + 80206c0a: 47bd li a5,15 + 80206c0c: f6f40da3 sb a5,-133(s0) for (int i = entcnt; i > 0; i--) { - 80206c50: f4843783 ld a5,-184(s0) - 80206c54: 14f05c63 blez a5,80206dac <emake+0x316> - 80206c58: f5842783 lw a5,-168(s0) - 80206c5c: 37fd addiw a5,a5,-1 - 80206c5e: f4f42223 sw a5,-188(s0) - 80206c62: 00179b9b slliw s7,a5,0x1 - 80206c66: 00fb8bbb addw s7,s7,a5 - 80206c6a: 002b9b9b slliw s7,s7,0x2 - 80206c6e: 00fb8bbb addw s7,s7,a5 - 80206c72: 9bea add s7,s7,s10 - 80206c74: 8aee mv s5,s11 - 80206c76: 8c66 mv s8,s9 + 80206c10: f4843783 ld a5,-184(s0) + 80206c14: 14f05c63 blez a5,80206d6c <emake+0x316> + 80206c18: f5842783 lw a5,-168(s0) + 80206c1c: 37fd addiw a5,a5,-1 + 80206c1e: f4f42223 sw a5,-188(s0) + 80206c22: 00179b9b slliw s7,a5,0x1 + 80206c26: 00fb8bbb addw s7,s7,a5 + 80206c2a: 002b9b9b slliw s7,s7,0x2 + 80206c2e: 00fb8bbb addw s7,s7,a5 + 80206c32: 9bea add s7,s7,s10 + 80206c34: 8aee mv s5,s11 + 80206c36: 8c66 mv s8,s9 int end = 0; - 80206c78: 4981 li s3,0 + 80206c38: 4981 li s3,0 uint8 *w = (uint8 *)de.lne.name1; - 80206c7a: f7140793 addi a5,s0,-143 - 80206c7e: f4f43823 sd a5,-176(s0) - 80206c82: 0ff00913 li s2,255 + 80206c3a: f7140793 addi a5,s0,-143 + 80206c3e: f4f43823 sd a5,-176(s0) + 80206c42: 0ff00913 li s2,255 case 5: w = (uint8 *)de.lne.name2; break; - 80206c86: f7e40793 addi a5,s0,-130 - 80206c8a: f4f43c23 sd a5,-168(s0) + 80206c46: f7e40793 addi a5,s0,-130 + 80206c4a: f4f43c23 sd a5,-168(s0) switch (j) { - 80206c8e: 44ad li s1,11 - 80206c90: f8c40a13 addi s4,s0,-116 - 80206c94: a0c5 j 80206d74 <emake+0x2de> + 80206c4e: 44ad li s1,11 + 80206c50: f8c40a13 addi s4,s0,-116 + 80206c54: a0c5 j 80206d34 <emake+0x2de> if (name > p) { // last '.' - 80206c96: 0549f663 bgeu s3,s4,80206ce2 <emake+0x24c> + 80206c56: 0549f663 bgeu s3,s4,80206ca2 <emake+0x24c> memset(shortname + i, ' ', 8 - i); - 80206c9a: 47a1 li a5,8 - 80206c9c: 4097863b subw a2,a5,s1 - 80206ca0: 02000593 li a1,32 - 80206ca4: f5043783 ld a5,-176(s0) - 80206ca8: 00978533 add a0,a5,s1 - 80206cac: ffffa097 auipc ra,0xffffa - 80206cb0: ab6080e7 jalr -1354(ra) # 80200762 <memset> + 80206c5a: 47a1 li a5,8 + 80206c5c: 4097863b subw a2,a5,s1 + 80206c60: 02000593 li a1,32 + 80206c64: f5043783 ld a5,-176(s0) + 80206c68: 00978533 add a0,a5,s1 + 80206c6c: ffffa097 auipc ra,0xffffa + 80206c70: af6080e7 jalr -1290(ra) # 80200762 <memset> while (i < CHAR_SHORT_NAME && (c = *name++)) { - 80206cb4: 89d2 mv s3,s4 + 80206c74: 89d2 mv s3,s4 shortname[i++] = c; - 80206cb6: 8a4e mv s4,s3 - 80206cb8: 84d6 mv s1,s5 - 80206cba: 4981 li s3,0 - 80206cbc: a02d j 80206ce6 <emake+0x250> + 80206c76: 8a4e mv s4,s3 + 80206c78: 84d6 mv s1,s5 + 80206c7a: 4981 li s3,0 + 80206c7c: a02d j 80206ca6 <emake+0x250> if (strchr(illegal, c) != NULL) { - 80206cbe: 85ca mv a1,s2 - 80206cc0: 00006517 auipc a0,0x6 - 80206cc4: 35050513 addi a0,a0,848 # 8020d010 <illegal.0> - 80206cc8: ffffa097 auipc ra,0xffffa - 80206ccc: cf8080e7 jalr -776(ra) # 802009c0 <strchr> - 80206cd0: c119 beqz a0,80206cd6 <emake+0x240> + 80206c7e: 85ca mv a1,s2 + 80206c80: 00006517 auipc a0,0x6 + 80206c84: 39050513 addi a0,a0,912 # 8020d010 <illegal.0> + 80206c88: ffffa097 auipc ra,0xffffa + 80206c8c: d38080e7 jalr -712(ra) # 802009c0 <strchr> + 80206c90: c119 beqz a0,80206c96 <emake+0x240> c = '_'; - 80206cd2: 05f00913 li s2,95 + 80206c92: 05f00913 li s2,95 shortname[i++] = c; - 80206cd6: f9048793 addi a5,s1,-112 - 80206cda: 97a2 add a5,a5,s0 - 80206cdc: fd278823 sb s2,-48(a5) - 80206ce0: 2485 addiw s1,s1,1 + 80206c96: f9048793 addi a5,s1,-112 + 80206c9a: 97a2 add a5,a5,s0 + 80206c9c: fd278823 sb s2,-48(a5) + 80206ca0: 2485 addiw s1,s1,1 while (i < CHAR_SHORT_NAME && (c = *name++)) { - 80206ce2: f49bcce3 blt s7,s1,80206c3a <emake+0x1a4> + 80206ca2: f49bcce3 blt s7,s1,80206bfa <emake+0x1a4> shortname[i++] = c; - 80206ce6: 8952 mv s2,s4 + 80206ca6: 8952 mv s2,s4 while (i < CHAR_SHORT_NAME && (c = *name++)) { - 80206ce8: 00190a13 addi s4,s2,1 - 80206cec: 00094903 lbu s2,0(s2) - 80206cf0: 02090663 beqz s2,80206d1c <emake+0x286> + 80206ca8: 00190a13 addi s4,s2,1 + 80206cac: 00094903 lbu s2,0(s2) + 80206cb0: 02090663 beqz s2,80206cdc <emake+0x286> if (i == 8 && p) { - 80206cf4: f35482e3 beq s1,s5,80206c18 <emake+0x182> + 80206cb4: f35482e3 beq s1,s5,80206bd8 <emake+0x182> if (c == ' ') { continue; } - 80206cf8: 02000793 li a5,32 - 80206cfc: fef903e3 beq s2,a5,80206ce2 <emake+0x24c> + 80206cb8: 02000793 li a5,32 + 80206cbc: fef903e3 beq s2,a5,80206ca2 <emake+0x24c> if (c == '.') { - 80206d00: 02e00793 li a5,46 - 80206d04: f8f909e3 beq s2,a5,80206c96 <emake+0x200> + 80206cc0: 02e00793 li a5,46 + 80206cc4: f8f909e3 beq s2,a5,80206c56 <emake+0x200> if (c >= 'a' && c <= 'z') { - 80206d08: f9f9079b addiw a5,s2,-97 - 80206d0c: 0ff7f793 zext.b a5,a5 - 80206d10: fafc67e3 bltu s8,a5,80206cbe <emake+0x228> + 80206cc8: f9f9079b addiw a5,s2,-97 + 80206ccc: 0ff7f793 zext.b a5,a5 + 80206cd0: fafc67e3 bltu s8,a5,80206c7e <emake+0x228> c += 'A' - 'a'; - 80206d14: 3901 addiw s2,s2,-32 - 80206d16: 0ff97913 zext.b s2,s2 - 80206d1a: bf75 j 80206cd6 <emake+0x240> + 80206cd4: 3901 addiw s2,s2,-32 + 80206cd6: 0ff97913 zext.b s2,s2 + 80206cda: bf75 j 80206c96 <emake+0x240> while (i < CHAR_SHORT_NAME) { - 80206d1c: 47a9 li a5,10 - 80206d1e: f097d2e3 bge a5,s1,80206c22 <emake+0x18c> - 80206d22: bf21 j 80206c3a <emake+0x1a4> + 80206cdc: 47a9 li a5,10 + 80206cde: f097d2e3 bge a5,s1,80206be2 <emake+0x18c> + 80206ce2: bf21 j 80206bfa <emake+0x1a4> de.lne.order |= LAST_LONG_ENTRY; - 80206d24: 0407e793 ori a5,a5,64 - 80206d28: f6f40823 sb a5,-144(s0) - 80206d2c: a891 j 80206d80 <emake+0x2ea> + 80206ce4: 0407e793 ori a5,a5,64 + 80206ce8: f6f40823 sb a5,-144(s0) + 80206cec: a891 j 80206d40 <emake+0x2ea> if ((*w++ = *p++) == 0) { - 80206d2e: 00084603 lbu a2,0(a6) + 80206cee: 00084603 lbu a2,0(a6) end = 1; - 80206d32: 00163513 seqz a0,a2 + 80206cf2: 00163513 seqz a0,a2 *w++ = 0; - 80206d36: 00278893 addi a7,a5,2 + 80206cf6: 00278893 addi a7,a5,2 if ((*w++ = *p++) == 0) { - 80206d3a: 0805 addi a6,a6,1 + 80206cfa: 0805 addi a6,a6,1 *w++ = 0; - 80206d3c: 85ce mv a1,s3 - 80206d3e: a8d5 j 80206e32 <emake+0x39c> + 80206cfc: 85ce mv a1,s3 + 80206cfe: a8d5 j 80206df2 <emake+0x39c> uint off2 = reloc_clus(dp, off, 1); - 80206d40: 4605 li a2,1 - 80206d42: 85e2 mv a1,s8 - 80206d44: 855a mv a0,s6 - 80206d46: fffff097 auipc ra,0xfffff - 80206d4a: 460080e7 jalr 1120(ra) # 802061a6 <reloc_clus> + 80206d00: 4605 li a2,1 + 80206d02: 85e2 mv a1,s8 + 80206d04: 855a mv a0,s6 + 80206d06: fffff097 auipc ra,0xfffff + 80206d0a: 460080e7 jalr 1120(ra) # 80206166 <reloc_clus> rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off2, sizeof(de)); - 80206d4e: 02000793 li a5,32 - 80206d52: 0005071b sext.w a4,a0 - 80206d56: f7040693 addi a3,s0,-144 - 80206d5a: 864e mv a2,s3 - 80206d5c: 4585 li a1,1 - 80206d5e: 10cb2503 lw a0,268(s6) - 80206d62: fffff097 auipc ra,0xfffff - 80206d66: 54c080e7 jalr 1356(ra) # 802062ae <rw_clus> + 80206d0e: 02000793 li a5,32 + 80206d12: 0005071b sext.w a4,a0 + 80206d16: f7040693 addi a3,s0,-144 + 80206d1a: 864e mv a2,s3 + 80206d1c: 4585 li a1,1 + 80206d1e: 10cb2503 lw a0,268(s6) + 80206d22: fffff097 auipc ra,0xfffff + 80206d26: 54c080e7 jalr 1356(ra) # 8020626e <rw_clus> off += sizeof(de); - 80206d6a: 020c0c1b addiw s8,s8,32 + 80206d2a: 020c0c1b addiw s8,s8,32 for (int i = entcnt; i > 0; i--) { - 80206d6e: 1bcd addi s7,s7,-13 - 80206d70: 03505163 blez s5,80206d92 <emake+0x2fc> + 80206d2e: 1bcd addi s7,s7,-13 + 80206d30: 03505163 blez s5,80206d52 <emake+0x2fc> if ((de.lne.order = i) == entcnt) { - 80206d74: 0ffaf793 zext.b a5,s5 - 80206d78: fafd86e3 beq s11,a5,80206d24 <emake+0x28e> - 80206d7c: f6f40823 sb a5,-144(s0) + 80206d34: 0ffaf793 zext.b a5,s5 + 80206d38: fafd86e3 beq s11,a5,80206ce4 <emake+0x28e> + 80206d3c: f6f40823 sb a5,-144(s0) char *p = ep->filename + (i - 1) * CHAR_LONG_NAME; - 80206d80: 3afd addiw s5,s5,-1 - 80206d82: 885e mv a6,s7 - 80206d84: 4709 li a4,2 + 80206d40: 3afd addiw s5,s5,-1 + 80206d42: 885e mv a6,s7 + 80206d44: 4709 li a4,2 int end = 0; - 80206d86: 854e mv a0,s3 + 80206d46: 854e mv a0,s3 uint8 *w = (uint8 *)de.lne.name1; - 80206d88: f5043783 ld a5,-176(s0) + 80206d48: f5043783 ld a5,-176(s0) switch (j) { - 80206d8c: 4315 li t1,5 + 80206d4c: 4315 li t1,5 for (int j = 1; j <= CHAR_LONG_NAME; j++) { - 80206d8e: 4e35 li t3,13 - 80206d90: a851 j 80206e24 <emake+0x38e> - 80206d92: 020c8c9b addiw s9,s9,32 + 80206d4e: 4e35 li t3,13 + 80206d50: a851 j 80206de4 <emake+0x38e> + 80206d52: 020c8c9b addiw s9,s9,32 off += sizeof(de); - 80206d96: 4781 li a5,0 - 80206d98: f4843703 ld a4,-184(s0) - 80206d9c: 00e05663 blez a4,80206da8 <emake+0x312> - 80206da0: f4442783 lw a5,-188(s0) - 80206da4: 0057979b slliw a5,a5,0x5 - 80206da8: 01978cbb addw s9,a5,s9 + 80206d56: 4781 li a5,0 + 80206d58: f4843703 ld a4,-184(s0) + 80206d5c: 00e05663 blez a4,80206d68 <emake+0x312> + 80206d60: f4442783 lw a5,-188(s0) + 80206d64: 0057979b slliw a5,a5,0x5 + 80206d68: 01978cbb addw s9,a5,s9 memset(&de, 0, sizeof(de)); - 80206dac: 02000613 li a2,32 - 80206db0: 4581 li a1,0 - 80206db2: f7040493 addi s1,s0,-144 - 80206db6: 8526 mv a0,s1 - 80206db8: ffffa097 auipc ra,0xffffa - 80206dbc: 9aa080e7 jalr -1622(ra) # 80200762 <memset> + 80206d6c: 02000613 li a2,32 + 80206d70: 4581 li a1,0 + 80206d72: f7040493 addi s1,s0,-144 + 80206d76: 8526 mv a0,s1 + 80206d78: ffffa097 auipc ra,0xffffa + 80206d7c: 9ea080e7 jalr -1558(ra) # 80200762 <memset> strncpy(de.sne.name, shortname, sizeof(de.sne.name)); - 80206dc0: 462d li a2,11 - 80206dc2: f6040593 addi a1,s0,-160 - 80206dc6: 8526 mv a0,s1 - 80206dc8: ffffa097 auipc ra,0xffffa - 80206dcc: aae080e7 jalr -1362(ra) # 80200876 <strncpy> + 80206d80: 462d li a2,11 + 80206d82: f6040593 addi a1,s0,-160 + 80206d86: 8526 mv a0,s1 + 80206d88: ffffa097 auipc ra,0xffffa + 80206d8c: aee080e7 jalr -1298(ra) # 80200876 <strncpy> de.sne.attr = ep->attribute; - 80206dd0: 100d4783 lbu a5,256(s10) - 80206dd4: f6f40da3 sb a5,-133(s0) + 80206d90: 100d4783 lbu a5,256(s10) + 80206d94: f6f40da3 sb a5,-133(s0) de.sne.fst_clus_hi = (uint16)(ep->first_clus >> 16); // first clus high 16 bits - 80206dd8: 104d2783 lw a5,260(s10) - 80206ddc: 0107d71b srliw a4,a5,0x10 - 80206de0: f8e41223 sh a4,-124(s0) + 80206d98: 104d2783 lw a5,260(s10) + 80206d9c: 0107d71b srliw a4,a5,0x10 + 80206da0: f8e41223 sh a4,-124(s0) de.sne.fst_clus_lo = (uint16)(ep->first_clus & 0xffff); // low 16 bits - 80206de4: f8f41523 sh a5,-118(s0) + 80206da4: f8f41523 sh a5,-118(s0) de.sne.file_size = ep->file_size; // filesize is updated in eupdate() - 80206de8: 108d2783 lw a5,264(s10) - 80206dec: f8f42623 sw a5,-116(s0) + 80206da8: 108d2783 lw a5,264(s10) + 80206dac: f8f42623 sw a5,-116(s0) off = reloc_clus(dp, off, 1); - 80206df0: 4605 li a2,1 - 80206df2: 85e6 mv a1,s9 - 80206df4: 855a mv a0,s6 - 80206df6: fffff097 auipc ra,0xfffff - 80206dfa: 3b0080e7 jalr 944(ra) # 802061a6 <reloc_clus> + 80206db0: 4605 li a2,1 + 80206db2: 85e6 mv a1,s9 + 80206db4: 855a mv a0,s6 + 80206db6: fffff097 auipc ra,0xfffff + 80206dba: 3b0080e7 jalr 944(ra) # 80206166 <reloc_clus> rw_clus(dp->cur_clus, 1, 0, (uint64)&de, off, sizeof(de)); - 80206dfe: 02000793 li a5,32 - 80206e02: 0005071b sext.w a4,a0 - 80206e06: 86a6 mv a3,s1 - 80206e08: 4601 li a2,0 - 80206e0a: 4585 li a1,1 - 80206e0c: 10cb2503 lw a0,268(s6) - 80206e10: fffff097 auipc ra,0xfffff - 80206e14: 49e080e7 jalr 1182(ra) # 802062ae <rw_clus> + 80206dbe: 02000793 li a5,32 + 80206dc2: 0005071b sext.w a4,a0 + 80206dc6: 86a6 mv a3,s1 + 80206dc8: 4601 li a2,0 + 80206dca: 4585 li a1,1 + 80206dcc: 10cb2503 lw a0,268(s6) + 80206dd0: fffff097 auipc ra,0xfffff + 80206dd4: 49e080e7 jalr 1182(ra) # 8020626e <rw_clus> } - 80206e18: b325 j 80206b40 <emake+0xaa> + 80206dd8: b325 j 80206b00 <emake+0xaa> case 5: w = (uint8 *)de.lne.name2; break; - 80206e1a: f5843783 ld a5,-168(s0) - 80206e1e: a011 j 80206e22 <emake+0x38c> + 80206dda: f5843783 ld a5,-168(s0) + 80206dde: a011 j 80206de2 <emake+0x38c> switch (j) { - 80206e20: 87d2 mv a5,s4 + 80206de0: 87d2 mv a5,s4 for (int j = 1; j <= CHAR_LONG_NAME; j++) { - 80206e22: 2705 addiw a4,a4,1 - 80206e24: fff7069b addiw a3,a4,-1 + 80206de2: 2705 addiw a4,a4,1 + 80206de4: fff7069b addiw a3,a4,-1 if (end) { - 80206e28: d119 beqz a0,80206d2e <emake+0x298> + 80206de8: d119 beqz a0,80206cee <emake+0x298> *w++ = 0xff; - 80206e2a: 00278893 addi a7,a5,2 - 80206e2e: 864a mv a2,s2 - 80206e30: 85ca mv a1,s2 + 80206dea: 00278893 addi a7,a5,2 + 80206dee: 864a mv a2,s2 + 80206df0: 85ca mv a1,s2 *w++ = 0xff; // on k210, unaligned reading is illegal - 80206e32: 00c78023 sb a2,0(a5) + 80206df2: 00c78023 sb a2,0(a5) *w++ = 0xff; - 80206e36: 00b780a3 sb a1,1(a5) + 80206df6: 00b780a3 sb a1,1(a5) switch (j) { - 80206e3a: fe6680e3 beq a3,t1,80206e1a <emake+0x384> - 80206e3e: fe9681e3 beq a3,s1,80206e20 <emake+0x38a> + 80206dfa: fe6680e3 beq a3,t1,80206dda <emake+0x384> + 80206dfe: fe9681e3 beq a3,s1,80206de0 <emake+0x38a> for (int j = 1; j <= CHAR_LONG_NAME; j++) { - 80206e42: 0007079b sext.w a5,a4 - 80206e46: eefe4de3 blt t3,a5,80206d40 <emake+0x2aa> - 80206e4a: 87c6 mv a5,a7 - 80206e4c: bfd9 j 80206e22 <emake+0x38c> + 80206e02: 0007079b sext.w a5,a4 + 80206e06: eefe4de3 blt t3,a5,80206d00 <emake+0x2aa> + 80206e0a: 87c6 mv a5,a7 + 80206e0c: bfd9 j 80206de2 <emake+0x38c> if (c == ' ') { continue; } - 80206e4e: 02000793 li a5,32 - 80206e52: e8f90ae3 beq s2,a5,80206ce6 <emake+0x250> + 80206e0e: 02000793 li a5,32 + 80206e12: e8f90ae3 beq s2,a5,80206ca6 <emake+0x250> if (c == '.') { - 80206e56: 02e00793 li a5,46 - 80206e5a: eaf917e3 bne s2,a5,80206d08 <emake+0x272> - 80206e5e: bd35 j 80206c9a <emake+0x204> + 80206e16: 02e00793 li a5,46 + 80206e1a: eaf917e3 bne s2,a5,80206cc8 <emake+0x272> + 80206e1e: bd35 j 80206c5a <emake+0x204> -0000000080206e60 <edup>: +0000000080206e20 <edup>: { - 80206e60: 1101 addi sp,sp,-32 - 80206e62: ec06 sd ra,24(sp) - 80206e64: e822 sd s0,16(sp) - 80206e66: e426 sd s1,8(sp) - 80206e68: 1000 addi s0,sp,32 - 80206e6a: 84aa mv s1,a0 + 80206e20: 1101 addi sp,sp,-32 + 80206e22: ec06 sd ra,24(sp) + 80206e24: e822 sd s0,16(sp) + 80206e26: e426 sd s1,8(sp) + 80206e28: 1000 addi s0,sp,32 + 80206e2a: 84aa mv s1,a0 if (entry != 0) { - 80206e6c: c515 beqz a0,80206e98 <edup+0x38> + 80206e2c: c515 beqz a0,80206e58 <edup+0x38> acquire(&ecache.lock); - 80206e6e: 0002c517 auipc a0,0x2c - 80206e72: eaa50513 addi a0,a0,-342 # 80232d18 <ecache> - 80206e76: ffffa097 auipc ra,0xffffa - 80206e7a: 850080e7 jalr -1968(ra) # 802006c6 <acquire> + 80206e2e: 0002c517 auipc a0,0x2c + 80206e32: eea50513 addi a0,a0,-278 # 80232d18 <ecache> + 80206e36: ffffa097 auipc ra,0xffffa + 80206e3a: 890080e7 jalr -1904(ra) # 802006c6 <acquire> entry->ref++; - 80206e7e: 1184a783 lw a5,280(s1) - 80206e82: 2785 addiw a5,a5,1 - 80206e84: 10f4ac23 sw a5,280(s1) + 80206e3e: 1184a783 lw a5,280(s1) + 80206e42: 2785 addiw a5,a5,1 + 80206e44: 10f4ac23 sw a5,280(s1) release(&ecache.lock); - 80206e88: 0002c517 auipc a0,0x2c - 80206e8c: e9050513 addi a0,a0,-368 # 80232d18 <ecache> - 80206e90: ffffa097 auipc ra,0xffffa - 80206e94: 88a080e7 jalr -1910(ra) # 8020071a <release> + 80206e48: 0002c517 auipc a0,0x2c + 80206e4c: ed050513 addi a0,a0,-304 # 80232d18 <ecache> + 80206e50: ffffa097 auipc ra,0xffffa + 80206e54: 8ca080e7 jalr -1846(ra) # 8020071a <release> } - 80206e98: 8526 mv a0,s1 - 80206e9a: 60e2 ld ra,24(sp) - 80206e9c: 6442 ld s0,16(sp) - 80206e9e: 64a2 ld s1,8(sp) - 80206ea0: 6105 addi sp,sp,32 - 80206ea2: 8082 ret - -0000000080206ea4 <eupdate>: + 80206e58: 8526 mv a0,s1 + 80206e5a: 60e2 ld ra,24(sp) + 80206e5c: 6442 ld s0,16(sp) + 80206e5e: 64a2 ld s1,8(sp) + 80206e60: 6105 addi sp,sp,32 + 80206e62: 8082 ret + +0000000080206e64 <eupdate>: if (!entry->dirty || entry->valid != 1) { return; } - 80206ea4: 11554783 lbu a5,277(a0) - 80206ea8: c3e5 beqz a5,80206f88 <eupdate+0xe4> + 80206e64: 11554783 lbu a5,277(a0) + 80206e68: c3e5 beqz a5,80206f48 <eupdate+0xe4> { - 80206eaa: 711d addi sp,sp,-96 - 80206eac: ec86 sd ra,88(sp) - 80206eae: e8a2 sd s0,80(sp) - 80206eb0: e4a6 sd s1,72(sp) - 80206eb2: e0ca sd s2,64(sp) - 80206eb4: fc4e sd s3,56(sp) - 80206eb6: 1080 addi s0,sp,96 - 80206eb8: 84aa mv s1,a0 + 80206e6a: 711d addi sp,sp,-96 + 80206e6c: ec86 sd ra,88(sp) + 80206e6e: e8a2 sd s0,80(sp) + 80206e70: e4a6 sd s1,72(sp) + 80206e72: e0ca sd s2,64(sp) + 80206e74: fc4e sd s3,56(sp) + 80206e76: 1080 addi s0,sp,96 + 80206e78: 84aa mv s1,a0 if (!entry->dirty || entry->valid != 1) { return; } - 80206eba: 11651703 lh a4,278(a0) - 80206ebe: 4785 li a5,1 - 80206ec0: 00f70963 beq a4,a5,80206ed2 <eupdate+0x2e> + 80206e7a: 11651703 lh a4,278(a0) + 80206e7e: 4785 li a5,1 + 80206e80: 00f70963 beq a4,a5,80206e92 <eupdate+0x2e> } - 80206ec4: 60e6 ld ra,88(sp) - 80206ec6: 6446 ld s0,80(sp) - 80206ec8: 64a6 ld s1,72(sp) - 80206eca: 6906 ld s2,64(sp) - 80206ecc: 79e2 ld s3,56(sp) - 80206ece: 6125 addi sp,sp,96 - 80206ed0: 8082 ret + 80206e84: 60e6 ld ra,88(sp) + 80206e86: 6446 ld s0,80(sp) + 80206e88: 64a6 ld s1,72(sp) + 80206e8a: 6906 ld s2,64(sp) + 80206e8c: 79e2 ld s3,56(sp) + 80206e8e: 6125 addi sp,sp,96 + 80206e90: 8082 ret uint entcnt = 0; - 80206ed2: fc042623 sw zero,-52(s0) + 80206e92: fc042623 sw zero,-52(s0) uint32 off = reloc_clus(entry->parent, entry->off, 0); - 80206ed6: 4601 li a2,0 - 80206ed8: 11c52583 lw a1,284(a0) - 80206edc: 12053503 ld a0,288(a0) - 80206ee0: fffff097 auipc ra,0xfffff - 80206ee4: 2c6080e7 jalr 710(ra) # 802061a6 <reloc_clus> + 80206e96: 4601 li a2,0 + 80206e98: 11c52583 lw a1,284(a0) + 80206e9c: 12053503 ld a0,288(a0) + 80206ea0: fffff097 auipc ra,0xfffff + 80206ea4: 2c6080e7 jalr 710(ra) # 80206166 <reloc_clus> rw_clus(entry->parent->cur_clus, 0, 0, (uint64) &entcnt, off, 1); - 80206ee8: 1204b803 ld a6,288(s1) - 80206eec: 4785 li a5,1 - 80206eee: 0005071b sext.w a4,a0 - 80206ef2: fcc40693 addi a3,s0,-52 - 80206ef6: 4601 li a2,0 - 80206ef8: 4581 li a1,0 - 80206efa: 10c82503 lw a0,268(a6) - 80206efe: fffff097 auipc ra,0xfffff - 80206f02: 3b0080e7 jalr 944(ra) # 802062ae <rw_clus> + 80206ea8: 1204b803 ld a6,288(s1) + 80206eac: 4785 li a5,1 + 80206eae: 0005071b sext.w a4,a0 + 80206eb2: fcc40693 addi a3,s0,-52 + 80206eb6: 4601 li a2,0 + 80206eb8: 4581 li a1,0 + 80206eba: 10c82503 lw a0,268(a6) + 80206ebe: fffff097 auipc ra,0xfffff + 80206ec2: 3b0080e7 jalr 944(ra) # 8020626e <rw_clus> entcnt &= ~LAST_LONG_ENTRY; - 80206f06: fcc42583 lw a1,-52(s0) - 80206f0a: fbf5f593 andi a1,a1,-65 - 80206f0e: fcb42623 sw a1,-52(s0) + 80206ec6: fcc42583 lw a1,-52(s0) + 80206eca: fbf5f593 andi a1,a1,-65 + 80206ece: fcb42623 sw a1,-52(s0) off = reloc_clus(entry->parent, entry->off + (entcnt << 5), 0); - 80206f12: 0055959b slliw a1,a1,0x5 - 80206f16: 11c4a783 lw a5,284(s1) - 80206f1a: 4601 li a2,0 - 80206f1c: 9dbd addw a1,a1,a5 - 80206f1e: 1204b503 ld a0,288(s1) - 80206f22: fffff097 auipc ra,0xfffff - 80206f26: 284080e7 jalr 644(ra) # 802061a6 <reloc_clus> - 80206f2a: 0005099b sext.w s3,a0 + 80206ed2: 0055959b slliw a1,a1,0x5 + 80206ed6: 11c4a783 lw a5,284(s1) + 80206eda: 4601 li a2,0 + 80206edc: 9dbd addw a1,a1,a5 + 80206ede: 1204b503 ld a0,288(s1) + 80206ee2: fffff097 auipc ra,0xfffff + 80206ee6: 284080e7 jalr 644(ra) # 80206166 <reloc_clus> + 80206eea: 0005099b sext.w s3,a0 rw_clus(entry->parent->cur_clus, 0, 0, (uint64)&de, off, sizeof(de)); - 80206f2e: 1204b503 ld a0,288(s1) - 80206f32: 02000793 li a5,32 - 80206f36: 874e mv a4,s3 - 80206f38: fa840913 addi s2,s0,-88 - 80206f3c: 86ca mv a3,s2 - 80206f3e: 4601 li a2,0 - 80206f40: 4581 li a1,0 - 80206f42: 10c52503 lw a0,268(a0) - 80206f46: fffff097 auipc ra,0xfffff - 80206f4a: 368080e7 jalr 872(ra) # 802062ae <rw_clus> + 80206eee: 1204b503 ld a0,288(s1) + 80206ef2: 02000793 li a5,32 + 80206ef6: 874e mv a4,s3 + 80206ef8: fa840913 addi s2,s0,-88 + 80206efc: 86ca mv a3,s2 + 80206efe: 4601 li a2,0 + 80206f00: 4581 li a1,0 + 80206f02: 10c52503 lw a0,268(a0) + 80206f06: fffff097 auipc ra,0xfffff + 80206f0a: 368080e7 jalr 872(ra) # 8020626e <rw_clus> de.sne.fst_clus_hi = (uint16)(entry->first_clus >> 16); - 80206f4e: 1044a783 lw a5,260(s1) - 80206f52: 0107d71b srliw a4,a5,0x10 - 80206f56: fae41e23 sh a4,-68(s0) + 80206f0e: 1044a783 lw a5,260(s1) + 80206f12: 0107d71b srliw a4,a5,0x10 + 80206f16: fae41e23 sh a4,-68(s0) de.sne.fst_clus_lo = (uint16)(entry->first_clus & 0xffff); - 80206f5a: fcf41123 sh a5,-62(s0) + 80206f1a: fcf41123 sh a5,-62(s0) de.sne.file_size = entry->file_size; - 80206f5e: 1084a783 lw a5,264(s1) - 80206f62: fcf42223 sw a5,-60(s0) + 80206f1e: 1084a783 lw a5,264(s1) + 80206f22: fcf42223 sw a5,-60(s0) rw_clus(entry->parent->cur_clus, 1, 0, (uint64)&de, off, sizeof(de)); - 80206f66: 1204b503 ld a0,288(s1) - 80206f6a: 02000793 li a5,32 - 80206f6e: 874e mv a4,s3 - 80206f70: 86ca mv a3,s2 - 80206f72: 4601 li a2,0 - 80206f74: 4585 li a1,1 - 80206f76: 10c52503 lw a0,268(a0) - 80206f7a: fffff097 auipc ra,0xfffff - 80206f7e: 334080e7 jalr 820(ra) # 802062ae <rw_clus> + 80206f26: 1204b503 ld a0,288(s1) + 80206f2a: 02000793 li a5,32 + 80206f2e: 874e mv a4,s3 + 80206f30: 86ca mv a3,s2 + 80206f32: 4601 li a2,0 + 80206f34: 4585 li a1,1 + 80206f36: 10c52503 lw a0,268(a0) + 80206f3a: fffff097 auipc ra,0xfffff + 80206f3e: 334080e7 jalr 820(ra) # 8020626e <rw_clus> entry->dirty = 0; - 80206f82: 10048aa3 sb zero,277(s1) - 80206f86: bf3d j 80206ec4 <eupdate+0x20> - 80206f88: 8082 ret + 80206f42: 10048aa3 sb zero,277(s1) + 80206f46: bf3d j 80206e84 <eupdate+0x20> + 80206f48: 8082 ret -0000000080206f8a <eremove>: +0000000080206f4a <eremove>: if (entry->valid != 1) { return; } - 80206f8a: 11651703 lh a4,278(a0) - 80206f8e: 4785 li a5,1 - 80206f90: 00f70363 beq a4,a5,80206f96 <eremove+0xc> - 80206f94: 8082 ret + 80206f4a: 11651703 lh a4,278(a0) + 80206f4e: 4785 li a5,1 + 80206f50: 00f70363 beq a4,a5,80206f56 <eremove+0xc> + 80206f54: 8082 ret { - 80206f96: 715d addi sp,sp,-80 - 80206f98: e486 sd ra,72(sp) - 80206f9a: e0a2 sd s0,64(sp) - 80206f9c: fc26 sd s1,56(sp) - 80206f9e: f84a sd s2,48(sp) - 80206fa0: f44e sd s3,40(sp) - 80206fa2: f052 sd s4,32(sp) - 80206fa4: ec56 sd s5,24(sp) - 80206fa6: 0880 addi s0,sp,80 - 80206fa8: 89aa mv s3,a0 + 80206f56: 715d addi sp,sp,-80 + 80206f58: e486 sd ra,72(sp) + 80206f5a: e0a2 sd s0,64(sp) + 80206f5c: fc26 sd s1,56(sp) + 80206f5e: f84a sd s2,48(sp) + 80206f60: f44e sd s3,40(sp) + 80206f62: f052 sd s4,32(sp) + 80206f64: ec56 sd s5,24(sp) + 80206f66: 0880 addi s0,sp,80 + 80206f68: 89aa mv s3,a0 uint entcnt = 0; - 80206faa: fa042e23 sw zero,-68(s0) + 80206f6a: fa042e23 sw zero,-68(s0) uint32 off = entry->off; - 80206fae: 11c52a03 lw s4,284(a0) + 80206f6e: 11c52a03 lw s4,284(a0) uint32 off2 = reloc_clus(entry->parent, off, 0); - 80206fb2: 4601 li a2,0 - 80206fb4: 85d2 mv a1,s4 - 80206fb6: 12053503 ld a0,288(a0) - 80206fba: fffff097 auipc ra,0xfffff - 80206fbe: 1ec080e7 jalr 492(ra) # 802061a6 <reloc_clus> - 80206fc2: 0005049b sext.w s1,a0 + 80206f72: 4601 li a2,0 + 80206f74: 85d2 mv a1,s4 + 80206f76: 12053503 ld a0,288(a0) + 80206f7a: fffff097 auipc ra,0xfffff + 80206f7e: 1ec080e7 jalr 492(ra) # 80206166 <reloc_clus> + 80206f82: 0005049b sext.w s1,a0 rw_clus(entry->parent->cur_clus, 0, 0, (uint64) &entcnt, off2, 1); - 80206fc6: 1209b503 ld a0,288(s3) - 80206fca: 4785 li a5,1 - 80206fcc: 8726 mv a4,s1 - 80206fce: fbc40693 addi a3,s0,-68 - 80206fd2: 4601 li a2,0 - 80206fd4: 4581 li a1,0 - 80206fd6: 10c52503 lw a0,268(a0) - 80206fda: fffff097 auipc ra,0xfffff - 80206fde: 2d4080e7 jalr 724(ra) # 802062ae <rw_clus> + 80206f86: 1209b503 ld a0,288(s3) + 80206f8a: 4785 li a5,1 + 80206f8c: 8726 mv a4,s1 + 80206f8e: fbc40693 addi a3,s0,-68 + 80206f92: 4601 li a2,0 + 80206f94: 4581 li a1,0 + 80206f96: 10c52503 lw a0,268(a0) + 80206f9a: fffff097 auipc ra,0xfffff + 80206f9e: 2d4080e7 jalr 724(ra) # 8020626e <rw_clus> entcnt &= ~LAST_LONG_ENTRY; - 80206fe2: fbc42783 lw a5,-68(s0) - 80206fe6: fbf7f793 andi a5,a5,-65 - 80206fea: faf42e23 sw a5,-68(s0) + 80206fa2: fbc42783 lw a5,-68(s0) + 80206fa6: fbf7f793 andi a5,a5,-65 + 80206faa: faf42e23 sw a5,-68(s0) uint8 flag = EMPTY_ENTRY; - 80206fee: 5795 li a5,-27 - 80206ff0: faf40da3 sb a5,-69(s0) + 80206fae: 5795 li a5,-27 + 80206fb0: faf40da3 sb a5,-69(s0) for (int i = 0; i <= entcnt; i++) { - 80206ff4: 4901 li s2,0 + 80206fb4: 4901 li s2,0 rw_clus(entry->parent->cur_clus, 1, 0, (uint64) &flag, off2, 1); - 80206ff6: fbb40a93 addi s5,s0,-69 - 80206ffa: 1209b503 ld a0,288(s3) - 80206ffe: 4785 li a5,1 - 80207000: 8726 mv a4,s1 - 80207002: 86d6 mv a3,s5 - 80207004: 4601 li a2,0 - 80207006: 4585 li a1,1 - 80207008: 10c52503 lw a0,268(a0) - 8020700c: fffff097 auipc ra,0xfffff - 80207010: 2a2080e7 jalr 674(ra) # 802062ae <rw_clus> + 80206fb6: fbb40a93 addi s5,s0,-69 + 80206fba: 1209b503 ld a0,288(s3) + 80206fbe: 4785 li a5,1 + 80206fc0: 8726 mv a4,s1 + 80206fc2: 86d6 mv a3,s5 + 80206fc4: 4601 li a2,0 + 80206fc6: 4585 li a1,1 + 80206fc8: 10c52503 lw a0,268(a0) + 80206fcc: fffff097 auipc ra,0xfffff + 80206fd0: 2a2080e7 jalr 674(ra) # 8020626e <rw_clus> off += 32; - 80207014: 020a0a1b addiw s4,s4,32 + 80206fd4: 020a0a1b addiw s4,s4,32 off2 = reloc_clus(entry->parent, off, 0); - 80207018: 4601 li a2,0 - 8020701a: 85d2 mv a1,s4 - 8020701c: 1209b503 ld a0,288(s3) - 80207020: fffff097 auipc ra,0xfffff - 80207024: 186080e7 jalr 390(ra) # 802061a6 <reloc_clus> - 80207028: 0005049b sext.w s1,a0 + 80206fd8: 4601 li a2,0 + 80206fda: 85d2 mv a1,s4 + 80206fdc: 1209b503 ld a0,288(s3) + 80206fe0: fffff097 auipc ra,0xfffff + 80206fe4: 186080e7 jalr 390(ra) # 80206166 <reloc_clus> + 80206fe8: 0005049b sext.w s1,a0 for (int i = 0; i <= entcnt; i++) { - 8020702c: 0019079b addiw a5,s2,1 - 80207030: 0007891b sext.w s2,a5 - 80207034: fbc42703 lw a4,-68(s0) - 80207038: fd2771e3 bgeu a4,s2,80206ffa <eremove+0x70> + 80206fec: 0019079b addiw a5,s2,1 + 80206ff0: 0007891b sext.w s2,a5 + 80206ff4: fbc42703 lw a4,-68(s0) + 80206ff8: fd2771e3 bgeu a4,s2,80206fba <eremove+0x70> entry->valid = -1; - 8020703c: 57fd li a5,-1 - 8020703e: 10f99b23 sh a5,278(s3) + 80206ffc: 57fd li a5,-1 + 80206ffe: 10f99b23 sh a5,278(s3) } - 80207042: 60a6 ld ra,72(sp) - 80207044: 6406 ld s0,64(sp) - 80207046: 74e2 ld s1,56(sp) - 80207048: 7942 ld s2,48(sp) - 8020704a: 79a2 ld s3,40(sp) - 8020704c: 7a02 ld s4,32(sp) - 8020704e: 6ae2 ld s5,24(sp) - 80207050: 6161 addi sp,sp,80 - 80207052: 8082 ret - -0000000080207054 <etrunc>: + 80207002: 60a6 ld ra,72(sp) + 80207004: 6406 ld s0,64(sp) + 80207006: 74e2 ld s1,56(sp) + 80207008: 7942 ld s2,48(sp) + 8020700a: 79a2 ld s3,40(sp) + 8020700c: 7a02 ld s4,32(sp) + 8020700e: 6ae2 ld s5,24(sp) + 80207010: 6161 addi sp,sp,80 + 80207012: 8082 ret + +0000000080207014 <etrunc>: { - 80207054: 7179 addi sp,sp,-48 - 80207056: f406 sd ra,40(sp) - 80207058: f022 sd s0,32(sp) - 8020705a: ec26 sd s1,24(sp) - 8020705c: e84a sd s2,16(sp) - 8020705e: e44e sd s3,8(sp) - 80207060: e052 sd s4,0(sp) - 80207062: 1800 addi s0,sp,48 - 80207064: 8a2a mv s4,a0 + 80207014: 7179 addi sp,sp,-48 + 80207016: f406 sd ra,40(sp) + 80207018: f022 sd s0,32(sp) + 8020701a: ec26 sd s1,24(sp) + 8020701c: e84a sd s2,16(sp) + 8020701e: e44e sd s3,8(sp) + 80207020: e052 sd s4,0(sp) + 80207022: 1800 addi s0,sp,48 + 80207024: 8a2a mv s4,a0 for (uint32 clus = entry->first_clus; clus >= 2 && clus < FAT32_EOC; ) { - 80207066: 10452483 lw s1,260(a0) - 8020706a: ffe4871b addiw a4,s1,-2 - 8020706e: 100007b7 lui a5,0x10000 - 80207072: 17d5 addi a5,a5,-11 # ffffff5 <_entry-0x7020000b> - 80207074: 02e7e663 bltu a5,a4,802070a0 <etrunc+0x4c> - 80207078: 89be mv s3,a5 + 80207026: 10452483 lw s1,260(a0) + 8020702a: ffe4871b addiw a4,s1,-2 + 8020702e: 100007b7 lui a5,0x10000 + 80207032: 17d5 addi a5,a5,-11 # ffffff5 <_entry-0x7020000b> + 80207034: 02e7e663 bltu a5,a4,80207060 <etrunc+0x4c> + 80207038: 89be mv s3,a5 uint32 next = read_fat(clus); - 8020707a: 0004891b sext.w s2,s1 - 8020707e: 8526 mv a0,s1 - 80207080: fffff097 auipc ra,0xfffff - 80207084: eee080e7 jalr -274(ra) # 80205f6e <read_fat> - 80207088: 0005049b sext.w s1,a0 + 8020703a: 0004891b sext.w s2,s1 + 8020703e: 8526 mv a0,s1 + 80207040: fffff097 auipc ra,0xfffff + 80207044: eee080e7 jalr -274(ra) # 80205f2e <read_fat> + 80207048: 0005049b sext.w s1,a0 write_fat(cluster, 0); - 8020708c: 4581 li a1,0 - 8020708e: 854a mv a0,s2 - 80207090: fffff097 auipc ra,0xfffff - 80207094: 096080e7 jalr 150(ra) # 80206126 <write_fat> + 8020704c: 4581 li a1,0 + 8020704e: 854a mv a0,s2 + 80207050: fffff097 auipc ra,0xfffff + 80207054: 096080e7 jalr 150(ra) # 802060e6 <write_fat> for (uint32 clus = entry->first_clus; clus >= 2 && clus < FAT32_EOC; ) { - 80207098: ffe4879b addiw a5,s1,-2 - 8020709c: fcf9ffe3 bgeu s3,a5,8020707a <etrunc+0x26> + 80207058: ffe4879b addiw a5,s1,-2 + 8020705c: fcf9ffe3 bgeu s3,a5,8020703a <etrunc+0x26> entry->file_size = 0; - 802070a0: 100a2423 sw zero,264(s4) + 80207060: 100a2423 sw zero,264(s4) entry->first_clus = 0; - 802070a4: 100a2223 sw zero,260(s4) + 80207064: 100a2223 sw zero,260(s4) entry->dirty = 1; - 802070a8: 4785 li a5,1 - 802070aa: 10fa0aa3 sb a5,277(s4) + 80207068: 4785 li a5,1 + 8020706a: 10fa0aa3 sb a5,277(s4) } - 802070ae: 70a2 ld ra,40(sp) - 802070b0: 7402 ld s0,32(sp) - 802070b2: 64e2 ld s1,24(sp) - 802070b4: 6942 ld s2,16(sp) - 802070b6: 69a2 ld s3,8(sp) - 802070b8: 6a02 ld s4,0(sp) - 802070ba: 6145 addi sp,sp,48 - 802070bc: 8082 ret - -00000000802070be <elock>: + 8020706e: 70a2 ld ra,40(sp) + 80207070: 7402 ld s0,32(sp) + 80207072: 64e2 ld s1,24(sp) + 80207074: 6942 ld s2,16(sp) + 80207076: 69a2 ld s3,8(sp) + 80207078: 6a02 ld s4,0(sp) + 8020707a: 6145 addi sp,sp,48 + 8020707c: 8082 ret + +000000008020707e <elock>: { - 802070be: 1141 addi sp,sp,-16 - 802070c0: e406 sd ra,8(sp) - 802070c2: e022 sd s0,0(sp) - 802070c4: 0800 addi s0,sp,16 + 8020707e: 1141 addi sp,sp,-16 + 80207080: e406 sd ra,8(sp) + 80207082: e022 sd s0,0(sp) + 80207084: 0800 addi s0,sp,16 if (entry == 0 || entry->ref < 1) - 802070c6: cd19 beqz a0,802070e4 <elock+0x26> - 802070c8: 11852783 lw a5,280(a0) - 802070cc: 00f05c63 blez a5,802070e4 <elock+0x26> + 80207086: cd19 beqz a0,802070a4 <elock+0x26> + 80207088: 11852783 lw a5,280(a0) + 8020708c: 00f05c63 blez a5,802070a4 <elock+0x26> acquiresleep(&entry->lock); - 802070d0: 13850513 addi a0,a0,312 - 802070d4: ffffd097 auipc ra,0xffffd - 802070d8: d6e080e7 jalr -658(ra) # 80203e42 <acquiresleep> + 80207090: 13850513 addi a0,a0,312 + 80207094: ffffd097 auipc ra,0xffffd + 80207098: db2080e7 jalr -590(ra) # 80203e46 <acquiresleep> } - 802070dc: 60a2 ld ra,8(sp) - 802070de: 6402 ld s0,0(sp) - 802070e0: 0141 addi sp,sp,16 - 802070e2: 8082 ret + 8020709c: 60a2 ld ra,8(sp) + 8020709e: 6402 ld s0,0(sp) + 802070a0: 0141 addi sp,sp,16 + 802070a2: 8082 ret panic("elock"); - 802070e4: 00004517 auipc a0,0x4 - 802070e8: d6450513 addi a0,a0,-668 # 8020ae48 <digits+0xac8> - 802070ec: ffff9097 auipc ra,0xffff9 - 802070f0: 058080e7 jalr 88(ra) # 80200144 <panic> + 802070a4: 00004517 auipc a0,0x4 + 802070a8: d9c50513 addi a0,a0,-612 # 8020ae40 <digits+0xac0> + 802070ac: ffff9097 auipc ra,0xffff9 + 802070b0: 098080e7 jalr 152(ra) # 80200144 <panic> -00000000802070f4 <eunlock>: +00000000802070b4 <eunlock>: { - 802070f4: 1101 addi sp,sp,-32 - 802070f6: ec06 sd ra,24(sp) - 802070f8: e822 sd s0,16(sp) - 802070fa: e426 sd s1,8(sp) - 802070fc: e04a sd s2,0(sp) - 802070fe: 1000 addi s0,sp,32 + 802070b4: 1101 addi sp,sp,-32 + 802070b6: ec06 sd ra,24(sp) + 802070b8: e822 sd s0,16(sp) + 802070ba: e426 sd s1,8(sp) + 802070bc: e04a sd s2,0(sp) + 802070be: 1000 addi s0,sp,32 if (entry == 0 || !holdingsleep(&entry->lock) || entry->ref < 1) - 80207100: c90d beqz a0,80207132 <eunlock+0x3e> - 80207102: 84aa mv s1,a0 - 80207104: 13850913 addi s2,a0,312 - 80207108: 854a mv a0,s2 - 8020710a: ffffd097 auipc ra,0xffffd - 8020710e: dd2080e7 jalr -558(ra) # 80203edc <holdingsleep> - 80207112: c105 beqz a0,80207132 <eunlock+0x3e> - 80207114: 1184a783 lw a5,280(s1) - 80207118: 00f05d63 blez a5,80207132 <eunlock+0x3e> + 802070c0: c90d beqz a0,802070f2 <eunlock+0x3e> + 802070c2: 84aa mv s1,a0 + 802070c4: 13850913 addi s2,a0,312 + 802070c8: 854a mv a0,s2 + 802070ca: ffffd097 auipc ra,0xffffd + 802070ce: e16080e7 jalr -490(ra) # 80203ee0 <holdingsleep> + 802070d2: c105 beqz a0,802070f2 <eunlock+0x3e> + 802070d4: 1184a783 lw a5,280(s1) + 802070d8: 00f05d63 blez a5,802070f2 <eunlock+0x3e> releasesleep(&entry->lock); - 8020711c: 854a mv a0,s2 - 8020711e: ffffd097 auipc ra,0xffffd - 80207122: d7a080e7 jalr -646(ra) # 80203e98 <releasesleep> + 802070dc: 854a mv a0,s2 + 802070de: ffffd097 auipc ra,0xffffd + 802070e2: dbe080e7 jalr -578(ra) # 80203e9c <releasesleep> } - 80207126: 60e2 ld ra,24(sp) - 80207128: 6442 ld s0,16(sp) - 8020712a: 64a2 ld s1,8(sp) - 8020712c: 6902 ld s2,0(sp) - 8020712e: 6105 addi sp,sp,32 - 80207130: 8082 ret + 802070e6: 60e2 ld ra,24(sp) + 802070e8: 6442 ld s0,16(sp) + 802070ea: 64a2 ld s1,8(sp) + 802070ec: 6902 ld s2,0(sp) + 802070ee: 6105 addi sp,sp,32 + 802070f0: 8082 ret panic("eunlock"); - 80207132: 00004517 auipc a0,0x4 - 80207136: d1e50513 addi a0,a0,-738 # 8020ae50 <digits+0xad0> - 8020713a: ffff9097 auipc ra,0xffff9 - 8020713e: 00a080e7 jalr 10(ra) # 80200144 <panic> + 802070f2: 00004517 auipc a0,0x4 + 802070f6: d5650513 addi a0,a0,-682 # 8020ae48 <digits+0xac8> + 802070fa: ffff9097 auipc ra,0xffff9 + 802070fe: 04a080e7 jalr 74(ra) # 80200144 <panic> -0000000080207142 <eput>: +0000000080207102 <eput>: { - 80207142: 1101 addi sp,sp,-32 - 80207144: ec06 sd ra,24(sp) - 80207146: e822 sd s0,16(sp) - 80207148: e426 sd s1,8(sp) - 8020714a: e04a sd s2,0(sp) - 8020714c: 1000 addi s0,sp,32 - 8020714e: 84aa mv s1,a0 + 80207102: 1101 addi sp,sp,-32 + 80207104: ec06 sd ra,24(sp) + 80207106: e822 sd s0,16(sp) + 80207108: e426 sd s1,8(sp) + 8020710a: e04a sd s2,0(sp) + 8020710c: 1000 addi s0,sp,32 + 8020710e: 84aa mv s1,a0 acquire(&ecache.lock); - 80207150: 0002c517 auipc a0,0x2c - 80207154: bc850513 addi a0,a0,-1080 # 80232d18 <ecache> - 80207158: ffff9097 auipc ra,0xffff9 - 8020715c: 56e080e7 jalr 1390(ra) # 802006c6 <acquire> + 80207110: 0002c517 auipc a0,0x2c + 80207114: c0850513 addi a0,a0,-1016 # 80232d18 <ecache> + 80207118: ffff9097 auipc ra,0xffff9 + 8020711c: 5ae080e7 jalr 1454(ra) # 802006c6 <acquire> if (entry != &root && entry->valid != 0 && entry->ref == 1) { - 80207160: 0002c797 auipc a5,0x2c - 80207164: a5078793 addi a5,a5,-1456 # 80232bb0 <root> - 80207168: 00f48a63 beq s1,a5,8020717c <eput+0x3a> - 8020716c: 11649783 lh a5,278(s1) - 80207170: c791 beqz a5,8020717c <eput+0x3a> - 80207172: 1184a703 lw a4,280(s1) - 80207176: 4785 li a5,1 - 80207178: 02f70563 beq a4,a5,802071a2 <eput+0x60> + 80207120: 0002c797 auipc a5,0x2c + 80207124: a9078793 addi a5,a5,-1392 # 80232bb0 <root> + 80207128: 00f48a63 beq s1,a5,8020713c <eput+0x3a> + 8020712c: 11649783 lh a5,278(s1) + 80207130: c791 beqz a5,8020713c <eput+0x3a> + 80207132: 1184a703 lw a4,280(s1) + 80207136: 4785 li a5,1 + 80207138: 02f70563 beq a4,a5,80207162 <eput+0x60> entry->ref--; - 8020717c: 1184a783 lw a5,280(s1) - 80207180: 37fd addiw a5,a5,-1 - 80207182: 10f4ac23 sw a5,280(s1) + 8020713c: 1184a783 lw a5,280(s1) + 80207140: 37fd addiw a5,a5,-1 + 80207142: 10f4ac23 sw a5,280(s1) release(&ecache.lock); - 80207186: 0002c517 auipc a0,0x2c - 8020718a: b9250513 addi a0,a0,-1134 # 80232d18 <ecache> - 8020718e: ffff9097 auipc ra,0xffff9 - 80207192: 58c080e7 jalr 1420(ra) # 8020071a <release> + 80207146: 0002c517 auipc a0,0x2c + 8020714a: bd250513 addi a0,a0,-1070 # 80232d18 <ecache> + 8020714e: ffff9097 auipc ra,0xffff9 + 80207152: 5cc080e7 jalr 1484(ra) # 8020071a <release> } - 80207196: 60e2 ld ra,24(sp) - 80207198: 6442 ld s0,16(sp) - 8020719a: 64a2 ld s1,8(sp) - 8020719c: 6902 ld s2,0(sp) - 8020719e: 6105 addi sp,sp,32 - 802071a0: 8082 ret + 80207156: 60e2 ld ra,24(sp) + 80207158: 6442 ld s0,16(sp) + 8020715a: 64a2 ld s1,8(sp) + 8020715c: 6902 ld s2,0(sp) + 8020715e: 6105 addi sp,sp,32 + 80207160: 8082 ret acquiresleep(&entry->lock); - 802071a2: 13848913 addi s2,s1,312 - 802071a6: 854a mv a0,s2 - 802071a8: ffffd097 auipc ra,0xffffd - 802071ac: c9a080e7 jalr -870(ra) # 80203e42 <acquiresleep> + 80207162: 13848913 addi s2,s1,312 + 80207166: 854a mv a0,s2 + 80207168: ffffd097 auipc ra,0xffffd + 8020716c: cde080e7 jalr -802(ra) # 80203e46 <acquiresleep> entry->next->prev = entry->prev; - 802071b0: 1284b703 ld a4,296(s1) - 802071b4: 1304b783 ld a5,304(s1) - 802071b8: 12f73823 sd a5,304(a4) + 80207170: 1284b703 ld a4,296(s1) + 80207174: 1304b783 ld a5,304(s1) + 80207178: 12f73823 sd a5,304(a4) entry->prev->next = entry->next; - 802071bc: 1284b703 ld a4,296(s1) - 802071c0: 12e7b423 sd a4,296(a5) + 8020717c: 1284b703 ld a4,296(s1) + 80207180: 12e7b423 sd a4,296(a5) entry->next = root.next; - 802071c4: 0002c797 auipc a5,0x2c - 802071c8: 9c478793 addi a5,a5,-1596 # 80232b88 <fat> - 802071cc: 1507b703 ld a4,336(a5) - 802071d0: 12e4b423 sd a4,296(s1) + 80207184: 0002c797 auipc a5,0x2c + 80207188: a0478793 addi a5,a5,-1532 # 80232b88 <fat> + 8020718c: 1507b703 ld a4,336(a5) + 80207190: 12e4b423 sd a4,296(s1) entry->prev = &root; - 802071d4: 0002c697 auipc a3,0x2c - 802071d8: 9dc68693 addi a3,a3,-1572 # 80232bb0 <root> - 802071dc: 12d4b823 sd a3,304(s1) + 80207194: 0002c697 auipc a3,0x2c + 80207198: a1c68693 addi a3,a3,-1508 # 80232bb0 <root> + 8020719c: 12d4b823 sd a3,304(s1) root.next->prev = entry; - 802071e0: 12973823 sd s1,304(a4) + 802071a0: 12973823 sd s1,304(a4) root.next = entry; - 802071e4: 1497b823 sd s1,336(a5) + 802071a4: 1497b823 sd s1,336(a5) release(&ecache.lock); - 802071e8: 0002c517 auipc a0,0x2c - 802071ec: b3050513 addi a0,a0,-1232 # 80232d18 <ecache> - 802071f0: ffff9097 auipc ra,0xffff9 - 802071f4: 52a080e7 jalr 1322(ra) # 8020071a <release> + 802071a8: 0002c517 auipc a0,0x2c + 802071ac: b7050513 addi a0,a0,-1168 # 80232d18 <ecache> + 802071b0: ffff9097 auipc ra,0xffff9 + 802071b4: 56a080e7 jalr 1386(ra) # 8020071a <release> if (entry->valid == -1) { // this means some one has called eremove() - 802071f8: 11649703 lh a4,278(s1) - 802071fc: 57fd li a5,-1 - 802071fe: 06f70863 beq a4,a5,8020726e <eput+0x12c> + 802071b8: 11649703 lh a4,278(s1) + 802071bc: 57fd li a5,-1 + 802071be: 06f70863 beq a4,a5,8020722e <eput+0x12c> elock(entry->parent); - 80207202: 1204b503 ld a0,288(s1) - 80207206: 00000097 auipc ra,0x0 - 8020720a: eb8080e7 jalr -328(ra) # 802070be <elock> + 802071c2: 1204b503 ld a0,288(s1) + 802071c6: 00000097 auipc ra,0x0 + 802071ca: eb8080e7 jalr -328(ra) # 8020707e <elock> eupdate(entry); - 8020720e: 8526 mv a0,s1 - 80207210: 00000097 auipc ra,0x0 - 80207214: c94080e7 jalr -876(ra) # 80206ea4 <eupdate> + 802071ce: 8526 mv a0,s1 + 802071d0: 00000097 auipc ra,0x0 + 802071d4: c94080e7 jalr -876(ra) # 80206e64 <eupdate> eunlock(entry->parent); - 80207218: 1204b503 ld a0,288(s1) - 8020721c: 00000097 auipc ra,0x0 - 80207220: ed8080e7 jalr -296(ra) # 802070f4 <eunlock> + 802071d8: 1204b503 ld a0,288(s1) + 802071dc: 00000097 auipc ra,0x0 + 802071e0: ed8080e7 jalr -296(ra) # 802070b4 <eunlock> releasesleep(&entry->lock); - 80207224: 854a mv a0,s2 - 80207226: ffffd097 auipc ra,0xffffd - 8020722a: c72080e7 jalr -910(ra) # 80203e98 <releasesleep> + 802071e4: 854a mv a0,s2 + 802071e6: ffffd097 auipc ra,0xffffd + 802071ea: cb6080e7 jalr -842(ra) # 80203e9c <releasesleep> struct dirent *eparent = entry->parent; - 8020722e: 1204b903 ld s2,288(s1) + 802071ee: 1204b903 ld s2,288(s1) acquire(&ecache.lock); - 80207232: 0002c517 auipc a0,0x2c - 80207236: ae650513 addi a0,a0,-1306 # 80232d18 <ecache> - 8020723a: ffff9097 auipc ra,0xffff9 - 8020723e: 48c080e7 jalr 1164(ra) # 802006c6 <acquire> + 802071f2: 0002c517 auipc a0,0x2c + 802071f6: b2650513 addi a0,a0,-1242 # 80232d18 <ecache> + 802071fa: ffff9097 auipc ra,0xffff9 + 802071fe: 4cc080e7 jalr 1228(ra) # 802006c6 <acquire> entry->ref--; - 80207242: 1184a783 lw a5,280(s1) - 80207246: 37fd addiw a5,a5,-1 - 80207248: 10f4ac23 sw a5,280(s1) + 80207202: 1184a783 lw a5,280(s1) + 80207206: 37fd addiw a5,a5,-1 + 80207208: 10f4ac23 sw a5,280(s1) release(&ecache.lock); - 8020724c: 0002c517 auipc a0,0x2c - 80207250: acc50513 addi a0,a0,-1332 # 80232d18 <ecache> - 80207254: ffff9097 auipc ra,0xffff9 - 80207258: 4c6080e7 jalr 1222(ra) # 8020071a <release> + 8020720c: 0002c517 auipc a0,0x2c + 80207210: b0c50513 addi a0,a0,-1268 # 80232d18 <ecache> + 80207214: ffff9097 auipc ra,0xffff9 + 80207218: 506080e7 jalr 1286(ra) # 8020071a <release> if (entry->ref == 0) { - 8020725c: 1184a783 lw a5,280(s1) - 80207260: fb9d bnez a5,80207196 <eput+0x54> + 8020721c: 1184a783 lw a5,280(s1) + 80207220: fb9d bnez a5,80207156 <eput+0x54> eput(eparent); - 80207262: 854a mv a0,s2 - 80207264: 00000097 auipc ra,0x0 - 80207268: ede080e7 jalr -290(ra) # 80207142 <eput> - 8020726c: b72d j 80207196 <eput+0x54> + 80207222: 854a mv a0,s2 + 80207224: 00000097 auipc ra,0x0 + 80207228: ede080e7 jalr -290(ra) # 80207102 <eput> + 8020722c: b72d j 80207156 <eput+0x54> etrunc(entry); - 8020726e: 8526 mv a0,s1 - 80207270: 00000097 auipc ra,0x0 - 80207274: de4080e7 jalr -540(ra) # 80207054 <etrunc> - 80207278: b775 j 80207224 <eput+0xe2> + 8020722e: 8526 mv a0,s1 + 80207230: 00000097 auipc ra,0x0 + 80207234: de4080e7 jalr -540(ra) # 80207014 <etrunc> + 80207238: b775 j 802071e4 <eput+0xe2> -000000008020727a <estat>: +000000008020723a <estat>: { - 8020727a: 1101 addi sp,sp,-32 - 8020727c: ec06 sd ra,24(sp) - 8020727e: e822 sd s0,16(sp) - 80207280: e426 sd s1,8(sp) - 80207282: e04a sd s2,0(sp) - 80207284: 1000 addi s0,sp,32 - 80207286: 892a mv s2,a0 - 80207288: 84ae mv s1,a1 + 8020723a: 1101 addi sp,sp,-32 + 8020723c: ec06 sd ra,24(sp) + 8020723e: e822 sd s0,16(sp) + 80207240: e426 sd s1,8(sp) + 80207242: e04a sd s2,0(sp) + 80207244: 1000 addi s0,sp,32 + 80207246: 892a mv s2,a0 + 80207248: 84ae mv s1,a1 strncpy(st->name, de->filename, STAT_MAX_NAME); - 8020728a: 02000613 li a2,32 - 8020728e: 85aa mv a1,a0 - 80207290: 8526 mv a0,s1 - 80207292: ffff9097 auipc ra,0xffff9 - 80207296: 5e4080e7 jalr 1508(ra) # 80200876 <strncpy> + 8020724a: 02000613 li a2,32 + 8020724e: 85aa mv a1,a0 + 80207250: 8526 mv a0,s1 + 80207252: ffff9097 auipc ra,0xffff9 + 80207256: 624080e7 jalr 1572(ra) # 80200876 <strncpy> st->type = (de->attribute & ATTR_DIRECTORY) ? T_DIR : T_FILE; - 8020729a: 10094783 lbu a5,256(s2) - 8020729e: 8bc1 andi a5,a5,16 - 802072a0: 0017b793 seqz a5,a5 - 802072a4: 0785 addi a5,a5,1 - 802072a6: 02f49423 sh a5,40(s1) + 8020725a: 10094783 lbu a5,256(s2) + 8020725e: 8bc1 andi a5,a5,16 + 80207260: 0017b793 seqz a5,a5 + 80207264: 0785 addi a5,a5,1 + 80207266: 02f49423 sh a5,40(s1) st->dev = de->dev; - 802072aa: 11494783 lbu a5,276(s2) - 802072ae: d0dc sw a5,36(s1) + 8020726a: 11494783 lbu a5,276(s2) + 8020726e: d0dc sw a5,36(s1) st->size = de->file_size; - 802072b0: 10896783 lwu a5,264(s2) - 802072b4: f89c sd a5,48(s1) + 80207270: 10896783 lwu a5,264(s2) + 80207274: f89c sd a5,48(s1) } - 802072b6: 60e2 ld ra,24(sp) - 802072b8: 6442 ld s0,16(sp) - 802072ba: 64a2 ld s1,8(sp) - 802072bc: 6902 ld s2,0(sp) - 802072be: 6105 addi sp,sp,32 - 802072c0: 8082 ret - -00000000802072c2 <enext>: + 80207276: 60e2 ld ra,24(sp) + 80207278: 6442 ld s0,16(sp) + 8020727a: 64a2 ld s1,8(sp) + 8020727c: 6902 ld s2,0(sp) + 8020727e: 6105 addi sp,sp,32 + 80207280: 8082 ret + +0000000080207282 <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) { - 802072c2: 7119 addi sp,sp,-128 - 802072c4: fc86 sd ra,120(sp) - 802072c6: f8a2 sd s0,112(sp) - 802072c8: f4a6 sd s1,104(sp) - 802072ca: f0ca sd s2,96(sp) - 802072cc: ecce sd s3,88(sp) - 802072ce: e8d2 sd s4,80(sp) - 802072d0: e4d6 sd s5,72(sp) - 802072d2: e0da sd s6,64(sp) - 802072d4: fc5e sd s7,56(sp) - 802072d6: f862 sd s8,48(sp) - 802072d8: f466 sd s9,40(sp) - 802072da: 0100 addi s0,sp,128 + 80207282: 7119 addi sp,sp,-128 + 80207284: fc86 sd ra,120(sp) + 80207286: f8a2 sd s0,112(sp) + 80207288: f4a6 sd s1,104(sp) + 8020728a: f0ca sd s2,96(sp) + 8020728c: ecce sd s3,88(sp) + 8020728e: e8d2 sd s4,80(sp) + 80207290: e4d6 sd s5,72(sp) + 80207292: e0da sd s6,64(sp) + 80207294: fc5e sd s7,56(sp) + 80207296: f862 sd s8,48(sp) + 80207298: f466 sd s9,40(sp) + 8020729a: 0100 addi s0,sp,128 if (!(dp->attribute & ATTR_DIRECTORY)) - 802072dc: 10054783 lbu a5,256(a0) - 802072e0: 8bc1 andi a5,a5,16 - 802072e2: cf95 beqz a5,8020731e <enext+0x5c> - 802072e4: 892a mv s2,a0 - 802072e6: 89ae mv s3,a1 - 802072e8: 84b2 mv s1,a2 - 802072ea: 8ab6 mv s5,a3 + 8020729c: 10054783 lbu a5,256(a0) + 802072a0: 8bc1 andi a5,a5,16 + 802072a2: cf95 beqz a5,802072de <enext+0x5c> + 802072a4: 892a mv s2,a0 + 802072a6: 89ae mv s3,a1 + 802072a8: 84b2 mv s1,a2 + 802072aa: 8ab6 mv s5,a3 panic("enext not dir"); if (ep->valid) - 802072ec: 11659783 lh a5,278(a1) - 802072f0: ef9d bnez a5,8020732e <enext+0x6c> + 802072ac: 11659783 lh a5,278(a1) + 802072b0: ef9d bnez a5,802072ee <enext+0x6c> panic("enext ep valid"); if (off % 32) - 802072f2: 01f67793 andi a5,a2,31 - 802072f6: e7a1 bnez a5,8020733e <enext+0x7c> + 802072b2: 01f67793 andi a5,a2,31 + 802072b6: e7a1 bnez a5,802072fe <enext+0x7c> panic("enext not align"); if (dp->valid != 1) { return -1; } - 802072f8: 11651703 lh a4,278(a0) - 802072fc: 4785 li a5,1 - 802072fe: 557d li a0,-1 - 80207300: 04f70763 beq a4,a5,8020734e <enext+0x8c> + 802072b8: 11651703 lh a4,278(a0) + 802072bc: 4785 li a5,1 + 802072be: 557d li a0,-1 + 802072c0: 04f70763 beq a4,a5,8020730e <enext+0x8c> read_entry_info(ep, &de); return 1; } } return -1; } - 80207304: 70e6 ld ra,120(sp) - 80207306: 7446 ld s0,112(sp) - 80207308: 74a6 ld s1,104(sp) - 8020730a: 7906 ld s2,96(sp) - 8020730c: 69e6 ld s3,88(sp) - 8020730e: 6a46 ld s4,80(sp) - 80207310: 6aa6 ld s5,72(sp) - 80207312: 6b06 ld s6,64(sp) - 80207314: 7be2 ld s7,56(sp) - 80207316: 7c42 ld s8,48(sp) - 80207318: 7ca2 ld s9,40(sp) - 8020731a: 6109 addi sp,sp,128 - 8020731c: 8082 ret + 802072c4: 70e6 ld ra,120(sp) + 802072c6: 7446 ld s0,112(sp) + 802072c8: 74a6 ld s1,104(sp) + 802072ca: 7906 ld s2,96(sp) + 802072cc: 69e6 ld s3,88(sp) + 802072ce: 6a46 ld s4,80(sp) + 802072d0: 6aa6 ld s5,72(sp) + 802072d2: 6b06 ld s6,64(sp) + 802072d4: 7be2 ld s7,56(sp) + 802072d6: 7c42 ld s8,48(sp) + 802072d8: 7ca2 ld s9,40(sp) + 802072da: 6109 addi sp,sp,128 + 802072dc: 8082 ret panic("enext not dir"); - 8020731e: 00004517 auipc a0,0x4 - 80207322: b3a50513 addi a0,a0,-1222 # 8020ae58 <digits+0xad8> - 80207326: ffff9097 auipc ra,0xffff9 - 8020732a: e1e080e7 jalr -482(ra) # 80200144 <panic> + 802072de: 00004517 auipc a0,0x4 + 802072e2: b7250513 addi a0,a0,-1166 # 8020ae50 <digits+0xad0> + 802072e6: ffff9097 auipc ra,0xffff9 + 802072ea: e5e080e7 jalr -418(ra) # 80200144 <panic> panic("enext ep valid"); - 8020732e: 00004517 auipc a0,0x4 - 80207332: b3a50513 addi a0,a0,-1222 # 8020ae68 <digits+0xae8> - 80207336: ffff9097 auipc ra,0xffff9 - 8020733a: e0e080e7 jalr -498(ra) # 80200144 <panic> + 802072ee: 00004517 auipc a0,0x4 + 802072f2: b7250513 addi a0,a0,-1166 # 8020ae60 <digits+0xae0> + 802072f6: ffff9097 auipc ra,0xffff9 + 802072fa: e4e080e7 jalr -434(ra) # 80200144 <panic> panic("enext not align"); - 8020733e: 00004517 auipc a0,0x4 - 80207342: b3a50513 addi a0,a0,-1222 # 8020ae78 <digits+0xaf8> - 80207346: ffff9097 auipc ra,0xffff9 - 8020734a: dfe080e7 jalr -514(ra) # 80200144 <panic> + 802072fe: 00004517 auipc a0,0x4 + 80207302: b7250513 addi a0,a0,-1166 # 8020ae70 <digits+0xaf0> + 80207306: ffff9097 auipc ra,0xffff9 + 8020730a: e3e080e7 jalr -450(ra) # 80200144 <panic> memset(ep->filename, 0, FAT32_MAX_FILENAME + 1); - 8020734e: 10000613 li a2,256 - 80207352: 4581 li a1,0 - 80207354: 854e mv a0,s3 - 80207356: ffff9097 auipc ra,0xffff9 - 8020735a: 40c080e7 jalr 1036(ra) # 80200762 <memset> + 8020730e: 10000613 li a2,256 + 80207312: 4581 li a1,0 + 80207314: 854e mv a0,s3 + 80207316: ffff9097 auipc ra,0xffff9 + 8020731a: 44c080e7 jalr 1100(ra) # 80200762 <memset> int cnt = 0; - 8020735e: 4b01 li s6,0 + 8020731e: 4b01 li s6,0 for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) { - 80207360: 5bfd li s7,-1 + 80207320: 5bfd li s7,-1 if (rw_clus(dp->cur_clus, 0, 0, (uint64)&de, off2, 32) != 32 || de.lne.order == END_OF_ENTRY) { - 80207362: f8040a13 addi s4,s0,-128 + 80207322: f8040a13 addi s4,s0,-128 if (de.lne.order == EMPTY_ENTRY) { - 80207366: 0e500c13 li s8,229 + 80207326: 0e500c13 li s8,229 if (de.lne.attr == ATTR_LONG_NAME) { - 8020736a: 4cbd li s9,15 + 8020732a: 4cbd li s9,15 for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) { - 8020736c: a03d j 8020739a <enext+0xd8> + 8020732c: a03d j 8020735a <enext+0xd8> cnt++; - 8020736e: 2b05 addiw s6,s6,1 + 8020732e: 2b05 addiw s6,s6,1 continue; - 80207370: a01d j 80207396 <enext+0xd4> + 80207330: a01d j 80207356 <enext+0xd4> *count = cnt; - 80207372: 016aa023 sw s6,0(s5) + 80207332: 016aa023 sw s6,0(s5) return 0; - 80207376: 4501 li a0,0 - 80207378: b771 j 80207304 <enext+0x42> + 80207336: 4501 li a0,0 + 80207338: b771 j 802072c4 <enext+0x42> read_entry_name(ep->filename + (lcnt - 1) * CHAR_LONG_NAME, &de); - 8020737a: fff7079b addiw a5,a4,-1 - 8020737e: 0017951b slliw a0,a5,0x1 - 80207382: 9d3d addw a0,a0,a5 - 80207384: 0025151b slliw a0,a0,0x2 - 80207388: 9d3d addw a0,a0,a5 - 8020738a: 85d2 mv a1,s4 - 8020738c: 954e add a0,a0,s3 - 8020738e: fffff097 auipc ra,0xfffff - 80207392: 17a080e7 jalr 378(ra) # 80206508 <read_entry_name> + 8020733a: fff7079b addiw a5,a4,-1 + 8020733e: 0017951b slliw a0,a5,0x1 + 80207342: 9d3d addw a0,a0,a5 + 80207344: 0025151b slliw a0,a0,0x2 + 80207348: 9d3d addw a0,a0,a5 + 8020734a: 85d2 mv a1,s4 + 8020734c: 954e add a0,a0,s3 + 8020734e: fffff097 auipc ra,0xfffff + 80207352: 17a080e7 jalr 378(ra) # 802064c8 <read_entry_name> for (int off2; (off2 = reloc_clus(dp, off, 0)) != -1; off += 32) { - 80207396: 0204849b addiw s1,s1,32 - 8020739a: 4601 li a2,0 - 8020739c: 85a6 mv a1,s1 - 8020739e: 854a mv a0,s2 - 802073a0: fffff097 auipc ra,0xfffff - 802073a4: e06080e7 jalr -506(ra) # 802061a6 <reloc_clus> - 802073a8: f5750ee3 beq a0,s7,80207304 <enext+0x42> + 80207356: 0204849b addiw s1,s1,32 + 8020735a: 4601 li a2,0 + 8020735c: 85a6 mv a1,s1 + 8020735e: 854a mv a0,s2 + 80207360: fffff097 auipc ra,0xfffff + 80207364: e06080e7 jalr -506(ra) # 80206166 <reloc_clus> + 80207368: f5750ee3 beq a0,s7,802072c4 <enext+0x42> if (rw_clus(dp->cur_clus, 0, 0, (uint64)&de, off2, 32) != 32 || de.lne.order == END_OF_ENTRY) { - 802073ac: 02000793 li a5,32 - 802073b0: 0005071b sext.w a4,a0 - 802073b4: 86d2 mv a3,s4 - 802073b6: 4601 li a2,0 - 802073b8: 4581 li a1,0 - 802073ba: 10c92503 lw a0,268(s2) - 802073be: fffff097 auipc ra,0xfffff - 802073c2: ef0080e7 jalr -272(ra) # 802062ae <rw_clus> - 802073c6: 2501 sext.w a0,a0 - 802073c8: 02000793 li a5,32 - 802073cc: 06f51c63 bne a0,a5,80207444 <enext+0x182> - 802073d0: f8044783 lbu a5,-128(s0) - 802073d4: cbb5 beqz a5,80207448 <enext+0x186> + 8020736c: 02000793 li a5,32 + 80207370: 0005071b sext.w a4,a0 + 80207374: 86d2 mv a3,s4 + 80207376: 4601 li a2,0 + 80207378: 4581 li a1,0 + 8020737a: 10c92503 lw a0,268(s2) + 8020737e: fffff097 auipc ra,0xfffff + 80207382: ef0080e7 jalr -272(ra) # 8020626e <rw_clus> + 80207386: 2501 sext.w a0,a0 + 80207388: 02000793 li a5,32 + 8020738c: 06f51c63 bne a0,a5,80207404 <enext+0x182> + 80207390: f8044783 lbu a5,-128(s0) + 80207394: cbb5 beqz a5,80207408 <enext+0x186> if (de.lne.order == EMPTY_ENTRY) { - 802073d6: f9878ce3 beq a5,s8,8020736e <enext+0xac> + 80207396: f9878ce3 beq a5,s8,8020732e <enext+0xac> } else if (cnt) { - 802073da: f80b1ce3 bnez s6,80207372 <enext+0xb0> + 8020739a: f80b1ce3 bnez s6,80207332 <enext+0xb0> if (de.lne.attr == ATTR_LONG_NAME) { - 802073de: f8b44703 lbu a4,-117(s0) - 802073e2: 01971d63 bne a4,s9,802073fc <enext+0x13a> + 8020739e: f8b44703 lbu a4,-117(s0) + 802073a2: 01971d63 bne a4,s9,802073bc <enext+0x13a> int lcnt = de.lne.order & ~LAST_LONG_ENTRY; - 802073e6: 0bf7f713 andi a4,a5,191 + 802073a6: 0bf7f713 andi a4,a5,191 if (de.lne.order & LAST_LONG_ENTRY) { - 802073ea: 0407f793 andi a5,a5,64 - 802073ee: d7d1 beqz a5,8020737a <enext+0xb8> + 802073aa: 0407f793 andi a5,a5,64 + 802073ae: d7d1 beqz a5,8020733a <enext+0xb8> *count = lcnt + 1; // plus the s-n-e; - 802073f0: 0017079b addiw a5,a4,1 - 802073f4: 00faa023 sw a5,0(s5) + 802073b0: 0017079b addiw a5,a4,1 + 802073b4: 00faa023 sw a5,0(s5) count = 0; - 802073f8: 4a81 li s5,0 - 802073fa: b741 j 8020737a <enext+0xb8> + 802073b8: 4a81 li s5,0 + 802073ba: b741 j 8020733a <enext+0xb8> if (count) { - 802073fc: 000a8c63 beqz s5,80207414 <enext+0x152> + 802073bc: 000a8c63 beqz s5,802073d4 <enext+0x152> *count = 1; - 80207400: 4785 li a5,1 - 80207402: 00faa023 sw a5,0(s5) + 802073c0: 4785 li a5,1 + 802073c2: 00faa023 sw a5,0(s5) read_entry_name(ep->filename, &de); - 80207406: f8040593 addi a1,s0,-128 - 8020740a: 854e mv a0,s3 - 8020740c: fffff097 auipc ra,0xfffff - 80207410: 0fc080e7 jalr 252(ra) # 80206508 <read_entry_name> + 802073c6: f8040593 addi a1,s0,-128 + 802073ca: 854e mv a0,s3 + 802073cc: fffff097 auipc ra,0xfffff + 802073d0: 0fc080e7 jalr 252(ra) # 802064c8 <read_entry_name> entry->attribute = d->sne.attr; - 80207414: f8b44783 lbu a5,-117(s0) - 80207418: 10f98023 sb a5,256(s3) + 802073d4: f8b44783 lbu a5,-117(s0) + 802073d8: 10f98023 sb a5,256(s3) entry->first_clus = ((uint32)d->sne.fst_clus_hi << 16) | d->sne.fst_clus_lo; - 8020741c: f9445783 lhu a5,-108(s0) - 80207420: 0107979b slliw a5,a5,0x10 - 80207424: f9a45703 lhu a4,-102(s0) - 80207428: 8fd9 or a5,a5,a4 - 8020742a: 2781 sext.w a5,a5 - 8020742c: 10f9a223 sw a5,260(s3) + 802073dc: f9445783 lhu a5,-108(s0) + 802073e0: 0107979b slliw a5,a5,0x10 + 802073e4: f9a45703 lhu a4,-102(s0) + 802073e8: 8fd9 or a5,a5,a4 + 802073ea: 2781 sext.w a5,a5 + 802073ec: 10f9a223 sw a5,260(s3) entry->file_size = d->sne.file_size; - 80207430: f9c42703 lw a4,-100(s0) - 80207434: 10e9a423 sw a4,264(s3) + 802073f0: f9c42703 lw a4,-100(s0) + 802073f4: 10e9a423 sw a4,264(s3) entry->cur_clus = entry->first_clus; - 80207438: 10f9a623 sw a5,268(s3) + 802073f8: 10f9a623 sw a5,268(s3) entry->clus_cnt = 0; - 8020743c: 1009a823 sw zero,272(s3) + 802073fc: 1009a823 sw zero,272(s3) return 1; - 80207440: 4505 li a0,1 + 80207400: 4505 li a0,1 } - 80207442: b5c9 j 80207304 <enext+0x42> + 80207402: b5c9 j 802072c4 <enext+0x42> return -1; - 80207444: 557d li a0,-1 - 80207446: bd7d j 80207304 <enext+0x42> - 80207448: 557d li a0,-1 - 8020744a: bd6d j 80207304 <enext+0x42> + 80207404: 557d li a0,-1 + 80207406: bd7d j 802072c4 <enext+0x42> + 80207408: 557d li a0,-1 + 8020740a: bd6d j 802072c4 <enext+0x42> -000000008020744c <dirlookup>: +000000008020740c <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) { - 8020744c: 711d addi sp,sp,-96 - 8020744e: ec86 sd ra,88(sp) - 80207450: e8a2 sd s0,80(sp) - 80207452: e4a6 sd s1,72(sp) - 80207454: e0ca sd s2,64(sp) - 80207456: fc4e sd s3,56(sp) - 80207458: f852 sd s4,48(sp) - 8020745a: f456 sd s5,40(sp) - 8020745c: f05a sd s6,32(sp) - 8020745e: ec5e sd s7,24(sp) - 80207460: 1080 addi s0,sp,96 + 8020740c: 711d addi sp,sp,-96 + 8020740e: ec86 sd ra,88(sp) + 80207410: e8a2 sd s0,80(sp) + 80207412: e4a6 sd s1,72(sp) + 80207414: e0ca sd s2,64(sp) + 80207416: fc4e sd s3,56(sp) + 80207418: f852 sd s4,48(sp) + 8020741a: f456 sd s5,40(sp) + 8020741c: f05a sd s6,32(sp) + 8020741e: ec5e sd s7,24(sp) + 80207420: 1080 addi s0,sp,96 if (!(dp->attribute & ATTR_DIRECTORY)) - 80207462: 10054783 lbu a5,256(a0) - 80207466: 8bc1 andi a5,a5,16 - 80207468: cbb1 beqz a5,802074bc <dirlookup+0x70> - 8020746a: 84aa mv s1,a0 - 8020746c: 89ae mv s3,a1 - 8020746e: 8ab2 mv s5,a2 + 80207422: 10054783 lbu a5,256(a0) + 80207426: 8bc1 andi a5,a5,16 + 80207428: cbb1 beqz a5,8020747c <dirlookup+0x70> + 8020742a: 84aa mv s1,a0 + 8020742c: 89ae mv s3,a1 + 8020742e: 8ab2 mv s5,a2 panic("dirlookup not DIR"); if (strncmp(filename, ".", FAT32_MAX_FILENAME) == 0) { - 80207470: 0ff00613 li a2,255 - 80207474: 00004597 auipc a1,0x4 - 80207478: a2c58593 addi a1,a1,-1492 # 8020aea0 <digits+0xb20> - 8020747c: 854e mv a0,s3 - 8020747e: ffff9097 auipc ra,0xffff9 - 80207482: 3bc080e7 jalr 956(ra) # 8020083a <strncmp> - 80207486: c139 beqz a0,802074cc <dirlookup+0x80> + 80207430: 0ff00613 li a2,255 + 80207434: 00004597 auipc a1,0x4 + 80207438: a6458593 addi a1,a1,-1436 # 8020ae98 <digits+0xb18> + 8020743c: 854e mv a0,s3 + 8020743e: ffff9097 auipc ra,0xffff9 + 80207442: 3fc080e7 jalr 1020(ra) # 8020083a <strncmp> + 80207446: c139 beqz a0,8020748c <dirlookup+0x80> return edup(dp); } else if (strncmp(filename, "..", FAT32_MAX_FILENAME) == 0) { - 80207488: 0ff00613 li a2,255 - 8020748c: 00004597 auipc a1,0x4 - 80207490: a1c58593 addi a1,a1,-1508 # 8020aea8 <digits+0xb28> - 80207494: 854e mv a0,s3 - 80207496: ffff9097 auipc ra,0xffff9 - 8020749a: 3a4080e7 jalr 932(ra) # 8020083a <strncmp> - 8020749e: e125 bnez a0,802074fe <dirlookup+0xb2> + 80207448: 0ff00613 li a2,255 + 8020744c: 00004597 auipc a1,0x4 + 80207450: a5458593 addi a1,a1,-1452 # 8020aea0 <digits+0xb20> + 80207454: 854e mv a0,s3 + 80207456: ffff9097 auipc ra,0xffff9 + 8020745a: 3e4080e7 jalr 996(ra) # 8020083a <strncmp> + 8020745e: e125 bnez a0,802074be <dirlookup+0xb2> if (dp == &root) { - 802074a0: 0002b797 auipc a5,0x2b - 802074a4: 71078793 addi a5,a5,1808 # 80232bb0 <root> - 802074a8: 04f48463 beq s1,a5,802074f0 <dirlookup+0xa4> + 80207460: 0002b797 auipc a5,0x2b + 80207464: 75078793 addi a5,a5,1872 # 80232bb0 <root> + 80207468: 04f48463 beq s1,a5,802074b0 <dirlookup+0xa4> return edup(&root); } return edup(dp->parent); - 802074ac: 1204b503 ld a0,288(s1) - 802074b0: 00000097 auipc ra,0x0 - 802074b4: 9b0080e7 jalr -1616(ra) # 80206e60 <edup> - 802074b8: 892a mv s2,a0 - 802074ba: a839 j 802074d8 <dirlookup+0x8c> + 8020746c: 1204b503 ld a0,288(s1) + 80207470: 00000097 auipc ra,0x0 + 80207474: 9b0080e7 jalr -1616(ra) # 80206e20 <edup> + 80207478: 892a mv s2,a0 + 8020747a: a839 j 80207498 <dirlookup+0x8c> panic("dirlookup not DIR"); - 802074bc: 00004517 auipc a0,0x4 - 802074c0: 9cc50513 addi a0,a0,-1588 # 8020ae88 <digits+0xb08> - 802074c4: ffff9097 auipc ra,0xffff9 - 802074c8: c80080e7 jalr -896(ra) # 80200144 <panic> + 8020747c: 00004517 auipc a0,0x4 + 80207480: a0450513 addi a0,a0,-1532 # 8020ae80 <digits+0xb00> + 80207484: ffff9097 auipc ra,0xffff9 + 80207488: cc0080e7 jalr -832(ra) # 80200144 <panic> return edup(dp); - 802074cc: 8526 mv a0,s1 - 802074ce: 00000097 auipc ra,0x0 - 802074d2: 992080e7 jalr -1646(ra) # 80206e60 <edup> - 802074d6: 892a mv s2,a0 + 8020748c: 8526 mv a0,s1 + 8020748e: 00000097 auipc ra,0x0 + 80207492: 992080e7 jalr -1646(ra) # 80206e20 <edup> + 80207496: 892a mv s2,a0 if (poff) { *poff = off; } eput(ep); return NULL; } - 802074d8: 854a mv a0,s2 - 802074da: 60e6 ld ra,88(sp) - 802074dc: 6446 ld s0,80(sp) - 802074de: 64a6 ld s1,72(sp) - 802074e0: 6906 ld s2,64(sp) - 802074e2: 79e2 ld s3,56(sp) - 802074e4: 7a42 ld s4,48(sp) - 802074e6: 7aa2 ld s5,40(sp) - 802074e8: 7b02 ld s6,32(sp) - 802074ea: 6be2 ld s7,24(sp) - 802074ec: 6125 addi sp,sp,96 - 802074ee: 8082 ret + 80207498: 854a mv a0,s2 + 8020749a: 60e6 ld ra,88(sp) + 8020749c: 6446 ld s0,80(sp) + 8020749e: 64a6 ld s1,72(sp) + 802074a0: 6906 ld s2,64(sp) + 802074a2: 79e2 ld s3,56(sp) + 802074a4: 7a42 ld s4,48(sp) + 802074a6: 7aa2 ld s5,40(sp) + 802074a8: 7b02 ld s6,32(sp) + 802074aa: 6be2 ld s7,24(sp) + 802074ac: 6125 addi sp,sp,96 + 802074ae: 8082 ret return edup(&root); - 802074f0: 853e mv a0,a5 - 802074f2: 00000097 auipc ra,0x0 - 802074f6: 96e080e7 jalr -1682(ra) # 80206e60 <edup> - 802074fa: 892a mv s2,a0 - 802074fc: bff1 j 802074d8 <dirlookup+0x8c> + 802074b0: 853e mv a0,a5 + 802074b2: 00000097 auipc ra,0x0 + 802074b6: 96e080e7 jalr -1682(ra) # 80206e20 <edup> + 802074ba: 892a mv s2,a0 + 802074bc: bff1 j 80207498 <dirlookup+0x8c> if (dp->valid != 1) { - 802074fe: 11649703 lh a4,278(s1) - 80207502: 4785 li a5,1 + 802074be: 11649703 lh a4,278(s1) + 802074c2: 4785 li a5,1 return NULL; - 80207504: 4901 li s2,0 + 802074c4: 4901 li s2,0 if (dp->valid != 1) { - 80207506: fcf719e3 bne a4,a5,802074d8 <dirlookup+0x8c> + 802074c6: fcf719e3 bne a4,a5,80207498 <dirlookup+0x8c> struct dirent *ep = eget(dp, filename); - 8020750a: 85ce mv a1,s3 - 8020750c: 8526 mv a0,s1 - 8020750e: fffff097 auipc ra,0xfffff - 80207512: eec080e7 jalr -276(ra) # 802063fa <eget> - 80207516: 892a mv s2,a0 + 802074ca: 85ce mv a1,s3 + 802074cc: 8526 mv a0,s1 + 802074ce: fffff097 auipc ra,0xfffff + 802074d2: eec080e7 jalr -276(ra) # 802063ba <eget> + 802074d6: 892a mv s2,a0 if (ep->valid == 1) { return ep; } // ecache hits - 80207518: 11651703 lh a4,278(a0) - 8020751c: 4785 li a5,1 - 8020751e: faf70de3 beq a4,a5,802074d8 <dirlookup+0x8c> + 802074d8: 11651703 lh a4,278(a0) + 802074dc: 4785 li a5,1 + 802074de: faf70de3 beq a4,a5,80207498 <dirlookup+0x8c> int len = strlen(filename); - 80207522: 854e mv a0,s3 - 80207524: ffff9097 auipc ra,0xffff9 - 80207528: 3c2080e7 jalr 962(ra) # 802008e6 <strlen> + 802074e2: 854e mv a0,s3 + 802074e4: ffff9097 auipc ra,0xffff9 + 802074e8: 402080e7 jalr 1026(ra) # 802008e6 <strlen> int count = 0; - 8020752c: fa042623 sw zero,-84(s0) + 802074ec: fa042623 sw zero,-84(s0) reloc_clus(dp, 0, 0); - 80207530: 4601 li a2,0 - 80207532: 4581 li a1,0 - 80207534: 8526 mv a0,s1 - 80207536: fffff097 auipc ra,0xfffff - 8020753a: c70080e7 jalr -912(ra) # 802061a6 <reloc_clus> + 802074f0: 4601 li a2,0 + 802074f2: 4581 li a1,0 + 802074f4: 8526 mv a0,s1 + 802074f6: fffff097 auipc ra,0xfffff + 802074fa: c70080e7 jalr -912(ra) # 80206166 <reloc_clus> uint off = 0; - 8020753e: 4a01 li s4,0 + 802074fe: 4a01 li s4,0 while ((type = enext(dp, ep, off, &count) != -1)) { - 80207540: fac40b93 addi s7,s0,-84 - 80207544: 5b7d li s6,-1 - 80207546: 86de mv a3,s7 - 80207548: 8652 mv a2,s4 - 8020754a: 85ca mv a1,s2 - 8020754c: 8526 mv a0,s1 - 8020754e: 00000097 auipc ra,0x0 - 80207552: d74080e7 jalr -652(ra) # 802072c2 <enext> - 80207556: 03650f63 beq a0,s6,80207594 <dirlookup+0x148> + 80207500: fac40b93 addi s7,s0,-84 + 80207504: 5b7d li s6,-1 + 80207506: 86de mv a3,s7 + 80207508: 8652 mv a2,s4 + 8020750a: 85ca mv a1,s2 + 8020750c: 8526 mv a0,s1 + 8020750e: 00000097 auipc ra,0x0 + 80207512: d74080e7 jalr -652(ra) # 80207282 <enext> + 80207516: 03650f63 beq a0,s6,80207554 <dirlookup+0x148> } else if (strncmp(filename, ep->filename, FAT32_MAX_FILENAME) == 0) { - 8020755a: 0ff00613 li a2,255 - 8020755e: 85ca mv a1,s2 - 80207560: 854e mv a0,s3 - 80207562: ffff9097 auipc ra,0xffff9 - 80207566: 2d8080e7 jalr 728(ra) # 8020083a <strncmp> - 8020756a: c901 beqz a0,8020757a <dirlookup+0x12e> + 8020751a: 0ff00613 li a2,255 + 8020751e: 85ca mv a1,s2 + 80207520: 854e mv a0,s3 + 80207522: ffff9097 auipc ra,0xffff9 + 80207526: 318080e7 jalr 792(ra) # 8020083a <strncmp> + 8020752a: c901 beqz a0,8020753a <dirlookup+0x12e> off += count << 5; - 8020756c: fac42783 lw a5,-84(s0) - 80207570: 0057979b slliw a5,a5,0x5 - 80207574: 01478a3b addw s4,a5,s4 - 80207578: b7f9 j 80207546 <dirlookup+0xfa> + 8020752c: fac42783 lw a5,-84(s0) + 80207530: 0057979b slliw a5,a5,0x5 + 80207534: 01478a3b addw s4,a5,s4 + 80207538: b7f9 j 80207506 <dirlookup+0xfa> ep->parent = edup(dp); - 8020757a: 8526 mv a0,s1 - 8020757c: 00000097 auipc ra,0x0 - 80207580: 8e4080e7 jalr -1820(ra) # 80206e60 <edup> - 80207584: 12a93023 sd a0,288(s2) + 8020753a: 8526 mv a0,s1 + 8020753c: 00000097 auipc ra,0x0 + 80207540: 8e4080e7 jalr -1820(ra) # 80206e20 <edup> + 80207544: 12a93023 sd a0,288(s2) ep->off = off; - 80207588: 11492e23 sw s4,284(s2) + 80207548: 11492e23 sw s4,284(s2) ep->valid = 1; - 8020758c: 4785 li a5,1 - 8020758e: 10f91b23 sh a5,278(s2) + 8020754c: 4785 li a5,1 + 8020754e: 10f91b23 sh a5,278(s2) return ep; - 80207592: b799 j 802074d8 <dirlookup+0x8c> + 80207552: b799 j 80207498 <dirlookup+0x8c> if (poff) { - 80207594: 000a8463 beqz s5,8020759c <dirlookup+0x150> + 80207554: 000a8463 beqz s5,8020755c <dirlookup+0x150> *poff = off; - 80207598: 014aa023 sw s4,0(s5) + 80207558: 014aa023 sw s4,0(s5) eput(ep); - 8020759c: 854a mv a0,s2 - 8020759e: 00000097 auipc ra,0x0 - 802075a2: ba4080e7 jalr -1116(ra) # 80207142 <eput> + 8020755c: 854a mv a0,s2 + 8020755e: 00000097 auipc ra,0x0 + 80207562: ba4080e7 jalr -1116(ra) # 80207102 <eput> return NULL; - 802075a6: 4901 li s2,0 - 802075a8: bf05 j 802074d8 <dirlookup+0x8c> + 80207566: 4901 li s2,0 + 80207568: bf05 j 80207498 <dirlookup+0x8c> -00000000802075aa <ealloc>: +000000008020756a <ealloc>: { - 802075aa: 715d addi sp,sp,-80 - 802075ac: e486 sd ra,72(sp) - 802075ae: e0a2 sd s0,64(sp) - 802075b0: fc26 sd s1,56(sp) - 802075b2: f84a sd s2,48(sp) - 802075b4: f44e sd s3,40(sp) - 802075b6: f052 sd s4,32(sp) - 802075b8: ec56 sd s5,24(sp) - 802075ba: 0880 addi s0,sp,80 - 802075bc: 892a mv s2,a0 + 8020756a: 715d addi sp,sp,-80 + 8020756c: e486 sd ra,72(sp) + 8020756e: e0a2 sd s0,64(sp) + 80207570: fc26 sd s1,56(sp) + 80207572: f84a sd s2,48(sp) + 80207574: f44e sd s3,40(sp) + 80207576: f052 sd s4,32(sp) + 80207578: ec56 sd s5,24(sp) + 8020757a: 0880 addi s0,sp,80 + 8020757c: 892a mv s2,a0 if (!(dp->attribute & ATTR_DIRECTORY)) { - 802075be: 10054783 lbu a5,256(a0) - 802075c2: 8bc1 andi a5,a5,16 - 802075c4: c7b1 beqz a5,80207610 <ealloc+0x66> - 802075c6: 852e mv a0,a1 - 802075c8: 8a32 mv s4,a2 + 8020757e: 10054783 lbu a5,256(a0) + 80207582: 8bc1 andi a5,a5,16 + 80207584: c7b1 beqz a5,802075d0 <ealloc+0x66> + 80207586: 852e mv a0,a1 + 80207588: 8a32 mv s4,a2 if (dp->valid != 1 || !(name = formatname(name))) { // detect illegal character - 802075ca: 11691703 lh a4,278(s2) - 802075ce: 4785 li a5,1 + 8020758a: 11691703 lh a4,278(s2) + 8020758e: 4785 li a5,1 return NULL; - 802075d0: 4481 li s1,0 + 80207590: 4481 li s1,0 if (dp->valid != 1 || !(name = formatname(name))) { // detect illegal character - 802075d2: 02f71563 bne a4,a5,802075fc <ealloc+0x52> - 802075d6: fffff097 auipc ra,0xfffff - 802075da: 408080e7 jalr 1032(ra) # 802069de <formatname> - 802075de: 89aa mv s3,a0 - 802075e0: 10050663 beqz a0,802076ec <ealloc+0x142> + 80207592: 02f71563 bne a4,a5,802075bc <ealloc+0x52> + 80207596: fffff097 auipc ra,0xfffff + 8020759a: 408080e7 jalr 1032(ra) # 8020699e <formatname> + 8020759e: 89aa mv s3,a0 + 802075a0: 10050663 beqz a0,802076ac <ealloc+0x142> uint off = 0; - 802075e4: fa042e23 sw zero,-68(s0) + 802075a4: fa042e23 sw zero,-68(s0) if ((ep = dirlookup(dp, name, &off)) != 0) { // entry exists - 802075e8: fbc40613 addi a2,s0,-68 - 802075ec: 85aa mv a1,a0 - 802075ee: 854a mv a0,s2 - 802075f0: 00000097 auipc ra,0x0 - 802075f4: e5c080e7 jalr -420(ra) # 8020744c <dirlookup> - 802075f8: 84aa mv s1,a0 - 802075fa: c11d beqz a0,80207620 <ealloc+0x76> + 802075a8: fbc40613 addi a2,s0,-68 + 802075ac: 85aa mv a1,a0 + 802075ae: 854a mv a0,s2 + 802075b0: 00000097 auipc ra,0x0 + 802075b4: e5c080e7 jalr -420(ra) # 8020740c <dirlookup> + 802075b8: 84aa mv s1,a0 + 802075ba: c11d beqz a0,802075e0 <ealloc+0x76> } - 802075fc: 8526 mv a0,s1 - 802075fe: 60a6 ld ra,72(sp) - 80207600: 6406 ld s0,64(sp) - 80207602: 74e2 ld s1,56(sp) - 80207604: 7942 ld s2,48(sp) - 80207606: 79a2 ld s3,40(sp) - 80207608: 7a02 ld s4,32(sp) - 8020760a: 6ae2 ld s5,24(sp) - 8020760c: 6161 addi sp,sp,80 - 8020760e: 8082 ret + 802075bc: 8526 mv a0,s1 + 802075be: 60a6 ld ra,72(sp) + 802075c0: 6406 ld s0,64(sp) + 802075c2: 74e2 ld s1,56(sp) + 802075c4: 7942 ld s2,48(sp) + 802075c6: 79a2 ld s3,40(sp) + 802075c8: 7a02 ld s4,32(sp) + 802075ca: 6ae2 ld s5,24(sp) + 802075cc: 6161 addi sp,sp,80 + 802075ce: 8082 ret panic("ealloc not dir"); - 80207610: 00004517 auipc a0,0x4 - 80207614: 8a050513 addi a0,a0,-1888 # 8020aeb0 <digits+0xb30> - 80207618: ffff9097 auipc ra,0xffff9 - 8020761c: b2c080e7 jalr -1236(ra) # 80200144 <panic> + 802075d0: 00004517 auipc a0,0x4 + 802075d4: 8d850513 addi a0,a0,-1832 # 8020aea8 <digits+0xb28> + 802075d8: ffff9097 auipc ra,0xffff9 + 802075dc: b6c080e7 jalr -1172(ra) # 80200144 <panic> ep = eget(dp, name); - 80207620: 85ce mv a1,s3 - 80207622: 854a mv a0,s2 - 80207624: fffff097 auipc ra,0xfffff - 80207628: dd6080e7 jalr -554(ra) # 802063fa <eget> - 8020762c: 84aa mv s1,a0 + 802075e0: 85ce mv a1,s3 + 802075e2: 854a mv a0,s2 + 802075e4: fffff097 auipc ra,0xfffff + 802075e8: dd6080e7 jalr -554(ra) # 802063ba <eget> + 802075ec: 84aa mv s1,a0 elock(ep); - 8020762e: 00000097 auipc ra,0x0 - 80207632: a90080e7 jalr -1392(ra) # 802070be <elock> + 802075ee: 00000097 auipc ra,0x0 + 802075f2: a90080e7 jalr -1392(ra) # 8020707e <elock> ep->attribute = attr; - 80207636: 11448023 sb s4,256(s1) + 802075f6: 11448023 sb s4,256(s1) ep->file_size = 0; - 8020763a: 1004a423 sw zero,264(s1) + 802075fa: 1004a423 sw zero,264(s1) ep->first_clus = 0; - 8020763e: 1004a223 sw zero,260(s1) + 802075fe: 1004a223 sw zero,260(s1) ep->parent = edup(dp); - 80207642: 854a mv a0,s2 - 80207644: 00000097 auipc ra,0x0 - 80207648: 81c080e7 jalr -2020(ra) # 80206e60 <edup> - 8020764c: 12a4b023 sd a0,288(s1) + 80207602: 854a mv a0,s2 + 80207604: 00000097 auipc ra,0x0 + 80207608: 81c080e7 jalr -2020(ra) # 80206e20 <edup> + 8020760c: 12a4b023 sd a0,288(s1) ep->off = off; - 80207650: fbc42a83 lw s5,-68(s0) - 80207654: 1154ae23 sw s5,284(s1) + 80207610: fbc42a83 lw s5,-68(s0) + 80207614: 1154ae23 sw s5,284(s1) ep->clus_cnt = 0; - 80207658: 1004a823 sw zero,272(s1) + 80207618: 1004a823 sw zero,272(s1) ep->cur_clus = 0; - 8020765c: 1004a623 sw zero,268(s1) + 8020761c: 1004a623 sw zero,268(s1) ep->dirty = 0; - 80207660: 10048aa3 sb zero,277(s1) + 80207620: 10048aa3 sb zero,277(s1) strncpy(ep->filename, name, FAT32_MAX_FILENAME); - 80207664: 0ff00613 li a2,255 - 80207668: 85ce mv a1,s3 - 8020766a: 8526 mv a0,s1 - 8020766c: ffff9097 auipc ra,0xffff9 - 80207670: 20a080e7 jalr 522(ra) # 80200876 <strncpy> + 80207624: 0ff00613 li a2,255 + 80207628: 85ce mv a1,s3 + 8020762a: 8526 mv a0,s1 + 8020762c: ffff9097 auipc ra,0xffff9 + 80207630: 24a080e7 jalr 586(ra) # 80200876 <strncpy> ep->filename[FAT32_MAX_FILENAME] = '\0'; - 80207674: 0e048fa3 sb zero,255(s1) + 80207634: 0e048fa3 sb zero,255(s1) if (attr == ATTR_DIRECTORY) { // generate "." and ".." for ep - 80207678: 47c1 li a5,16 - 8020767a: 02fa0863 beq s4,a5,802076aa <ealloc+0x100> + 80207638: 47c1 li a5,16 + 8020763a: 02fa0863 beq s4,a5,8020766a <ealloc+0x100> ep->attribute |= ATTR_ARCHIVE; - 8020767e: 1004c783 lbu a5,256(s1) - 80207682: 0207e793 ori a5,a5,32 - 80207686: 10f48023 sb a5,256(s1) + 8020763e: 1004c783 lbu a5,256(s1) + 80207642: 0207e793 ori a5,a5,32 + 80207646: 10f48023 sb a5,256(s1) emake(dp, ep, off); - 8020768a: 8656 mv a2,s5 - 8020768c: 85a6 mv a1,s1 - 8020768e: 854a mv a0,s2 - 80207690: fffff097 auipc ra,0xfffff - 80207694: 406080e7 jalr 1030(ra) # 80206a96 <emake> + 8020764a: 8656 mv a2,s5 + 8020764c: 85a6 mv a1,s1 + 8020764e: 854a mv a0,s2 + 80207650: fffff097 auipc ra,0xfffff + 80207654: 406080e7 jalr 1030(ra) # 80206a56 <emake> ep->valid = 1; - 80207698: 4785 li a5,1 - 8020769a: 10f49b23 sh a5,278(s1) + 80207658: 4785 li a5,1 + 8020765a: 10f49b23 sh a5,278(s1) eunlock(ep); - 8020769e: 8526 mv a0,s1 - 802076a0: 00000097 auipc ra,0x0 - 802076a4: a54080e7 jalr -1452(ra) # 802070f4 <eunlock> + 8020765e: 8526 mv a0,s1 + 80207660: 00000097 auipc ra,0x0 + 80207664: a54080e7 jalr -1452(ra) # 802070b4 <eunlock> return ep; - 802076a8: bf91 j 802075fc <ealloc+0x52> + 80207668: bf91 j 802075bc <ealloc+0x52> ep->attribute |= ATTR_DIRECTORY; - 802076aa: 1004c783 lbu a5,256(s1) - 802076ae: 0107e793 ori a5,a5,16 - 802076b2: 10f48023 sb a5,256(s1) + 8020766a: 1004c783 lbu a5,256(s1) + 8020766e: 0107e793 ori a5,a5,16 + 80207672: 10f48023 sb a5,256(s1) ep->cur_clus = ep->first_clus = alloc_clus(dp->dev); - 802076b6: 11494503 lbu a0,276(s2) - 802076ba: fffff097 auipc ra,0xfffff - 802076be: 92a080e7 jalr -1750(ra) # 80205fe4 <alloc_clus> - 802076c2: 2501 sext.w a0,a0 - 802076c4: 10a4a223 sw a0,260(s1) - 802076c8: 10a4a623 sw a0,268(s1) + 80207676: 11494503 lbu a0,276(s2) + 8020767a: fffff097 auipc ra,0xfffff + 8020767e: 92a080e7 jalr -1750(ra) # 80205fa4 <alloc_clus> + 80207682: 2501 sext.w a0,a0 + 80207684: 10a4a223 sw a0,260(s1) + 80207688: 10a4a623 sw a0,268(s1) emake(ep, ep, 0); - 802076cc: 4601 li a2,0 - 802076ce: 85a6 mv a1,s1 - 802076d0: 8526 mv a0,s1 - 802076d2: fffff097 auipc ra,0xfffff - 802076d6: 3c4080e7 jalr 964(ra) # 80206a96 <emake> + 8020768c: 4601 li a2,0 + 8020768e: 85a6 mv a1,s1 + 80207690: 8526 mv a0,s1 + 80207692: fffff097 auipc ra,0xfffff + 80207696: 3c4080e7 jalr 964(ra) # 80206a56 <emake> emake(ep, dp, 32); - 802076da: 02000613 li a2,32 - 802076de: 85ca mv a1,s2 - 802076e0: 8526 mv a0,s1 - 802076e2: fffff097 auipc ra,0xfffff - 802076e6: 3b4080e7 jalr 948(ra) # 80206a96 <emake> - 802076ea: b745 j 8020768a <ealloc+0xe0> + 8020769a: 02000613 li a2,32 + 8020769e: 85ca mv a1,s2 + 802076a0: 8526 mv a0,s1 + 802076a2: fffff097 auipc ra,0xfffff + 802076a6: 3b4080e7 jalr 948(ra) # 80206a56 <emake> + 802076aa: b745 j 8020764a <ealloc+0xe0> return NULL; - 802076ec: 84aa mv s1,a0 - 802076ee: b739 j 802075fc <ealloc+0x52> + 802076ac: 84aa mv s1,a0 + 802076ae: b739 j 802075bc <ealloc+0x52> -00000000802076f0 <lookup_path>: +00000000802076b0 <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) { - 802076f0: 715d addi sp,sp,-80 - 802076f2: e486 sd ra,72(sp) - 802076f4: e0a2 sd s0,64(sp) - 802076f6: fc26 sd s1,56(sp) - 802076f8: f84a sd s2,48(sp) - 802076fa: f44e sd s3,40(sp) - 802076fc: f052 sd s4,32(sp) - 802076fe: ec56 sd s5,24(sp) - 80207700: e85a sd s6,16(sp) - 80207702: e45e sd s7,8(sp) - 80207704: e062 sd s8,0(sp) - 80207706: 0880 addi s0,sp,80 - 80207708: 892a mv s2,a0 - 8020770a: 8b2e mv s6,a1 - 8020770c: 8ab2 mv s5,a2 + 802076b0: 715d addi sp,sp,-80 + 802076b2: e486 sd ra,72(sp) + 802076b4: e0a2 sd s0,64(sp) + 802076b6: fc26 sd s1,56(sp) + 802076b8: f84a sd s2,48(sp) + 802076ba: f44e sd s3,40(sp) + 802076bc: f052 sd s4,32(sp) + 802076be: ec56 sd s5,24(sp) + 802076c0: e85a sd s6,16(sp) + 802076c2: e45e sd s7,8(sp) + 802076c4: e062 sd s8,0(sp) + 802076c6: 0880 addi s0,sp,80 + 802076c8: 892a mv s2,a0 + 802076ca: 8b2e mv s6,a1 + 802076cc: 8ab2 mv s5,a2 struct dirent *entry, *next; if (*path == '/') { - 8020770e: 00054783 lbu a5,0(a0) - 80207712: 02f00713 li a4,47 - 80207716: 02e78663 beq a5,a4,80207742 <lookup_path+0x52> + 802076ce: 00054783 lbu a5,0(a0) + 802076d2: 02f00713 li a4,47 + 802076d6: 02e78663 beq a5,a4,80207702 <lookup_path+0x52> entry = edup(&root); } else if (*path != '\0') { entry = edup(myproc()->cwd); } else { return NULL; - 8020771a: 4a01 li s4,0 + 802076da: 4a01 li s4,0 } else if (*path != '\0') { - 8020771c: cba1 beqz a5,8020776c <lookup_path+0x7c> + 802076dc: cba1 beqz a5,8020772c <lookup_path+0x7c> entry = edup(myproc()->cwd); - 8020771e: ffffa097 auipc ra,0xffffa - 80207722: 31e080e7 jalr 798(ra) # 80201a3c <myproc> - 80207726: 40053503 ld a0,1024(a0) - 8020772a: fffff097 auipc ra,0xfffff - 8020772e: 736080e7 jalr 1846(ra) # 80206e60 <edup> - 80207732: 8a2a mv s4,a0 + 802076de: ffffa097 auipc ra,0xffffa + 802076e2: 35e080e7 jalr 862(ra) # 80201a3c <myproc> + 802076e6: 40053503 ld a0,1024(a0) + 802076ea: fffff097 auipc ra,0xfffff + 802076ee: 736080e7 jalr 1846(ra) # 80206e20 <edup> + 802076f2: 8a2a mv s4,a0 while (*path == '/') { - 80207734: 02f00993 li s3,47 - 80207738: 0ff00b93 li s7,255 - 8020773c: 0ff00c13 li s8,255 - 80207740: a0e5 j 80207828 <lookup_path+0x138> + 802076f4: 02f00993 li s3,47 + 802076f8: 0ff00b93 li s7,255 + 802076fc: 0ff00c13 li s8,255 + 80207700: a0e5 j 802077e8 <lookup_path+0x138> entry = edup(&root); - 80207742: 0002b517 auipc a0,0x2b - 80207746: 46e50513 addi a0,a0,1134 # 80232bb0 <root> - 8020774a: fffff097 auipc ra,0xfffff - 8020774e: 716080e7 jalr 1814(ra) # 80206e60 <edup> - 80207752: 8a2a mv s4,a0 - 80207754: b7c5 j 80207734 <lookup_path+0x44> + 80207702: 0002b517 auipc a0,0x2b + 80207706: 4ae50513 addi a0,a0,1198 # 80232bb0 <root> + 8020770a: fffff097 auipc ra,0xfffff + 8020770e: 716080e7 jalr 1814(ra) # 80206e20 <edup> + 80207712: 8a2a mv s4,a0 + 80207714: b7c5 j 802076f4 <lookup_path+0x44> } while ((path = skipelem(path, name)) != 0) { elock(entry); if (!(entry->attribute & ATTR_DIRECTORY)) { eunlock(entry); - 80207756: 8552 mv a0,s4 - 80207758: 00000097 auipc ra,0x0 - 8020775c: 99c080e7 jalr -1636(ra) # 802070f4 <eunlock> + 80207716: 8552 mv a0,s4 + 80207718: 00000097 auipc ra,0x0 + 8020771c: 99c080e7 jalr -1636(ra) # 802070b4 <eunlock> eput(entry); - 80207760: 8552 mv a0,s4 - 80207762: 00000097 auipc ra,0x0 - 80207766: 9e0080e7 jalr -1568(ra) # 80207142 <eput> + 80207720: 8552 mv a0,s4 + 80207722: 00000097 auipc ra,0x0 + 80207726: 9e0080e7 jalr -1568(ra) # 80207102 <eput> return NULL; - 8020776a: 4a01 li s4,0 + 8020772a: 4a01 li s4,0 if (parent) { eput(entry); return NULL; } return entry; } - 8020776c: 8552 mv a0,s4 - 8020776e: 60a6 ld ra,72(sp) - 80207770: 6406 ld s0,64(sp) - 80207772: 74e2 ld s1,56(sp) - 80207774: 7942 ld s2,48(sp) - 80207776: 79a2 ld s3,40(sp) - 80207778: 7a02 ld s4,32(sp) - 8020777a: 6ae2 ld s5,24(sp) - 8020777c: 6b42 ld s6,16(sp) - 8020777e: 6ba2 ld s7,8(sp) - 80207780: 6c02 ld s8,0(sp) - 80207782: 6161 addi sp,sp,80 - 80207784: 8082 ret + 8020772c: 8552 mv a0,s4 + 8020772e: 60a6 ld ra,72(sp) + 80207730: 6406 ld s0,64(sp) + 80207732: 74e2 ld s1,56(sp) + 80207734: 7942 ld s2,48(sp) + 80207736: 79a2 ld s3,40(sp) + 80207738: 7a02 ld s4,32(sp) + 8020773a: 6ae2 ld s5,24(sp) + 8020773c: 6b42 ld s6,16(sp) + 8020773e: 6ba2 ld s7,8(sp) + 80207740: 6c02 ld s8,0(sp) + 80207742: 6161 addi sp,sp,80 + 80207744: 8082 ret eunlock(entry); - 80207786: 8552 mv a0,s4 - 80207788: 00000097 auipc ra,0x0 - 8020778c: 96c080e7 jalr -1684(ra) # 802070f4 <eunlock> + 80207746: 8552 mv a0,s4 + 80207748: 00000097 auipc ra,0x0 + 8020774c: 96c080e7 jalr -1684(ra) # 802070b4 <eunlock> return entry; - 80207790: bff1 j 8020776c <lookup_path+0x7c> + 80207750: bff1 j 8020772c <lookup_path+0x7c> eunlock(entry); - 80207792: 8552 mv a0,s4 - 80207794: 00000097 auipc ra,0x0 - 80207798: 960080e7 jalr -1696(ra) # 802070f4 <eunlock> + 80207752: 8552 mv a0,s4 + 80207754: 00000097 auipc ra,0x0 + 80207758: 960080e7 jalr -1696(ra) # 802070b4 <eunlock> eput(entry); - 8020779c: 8552 mv a0,s4 - 8020779e: 00000097 auipc ra,0x0 - 802077a2: 9a4080e7 jalr -1628(ra) # 80207142 <eput> + 8020775c: 8552 mv a0,s4 + 8020775e: 00000097 auipc ra,0x0 + 80207762: 9a4080e7 jalr -1628(ra) # 80207102 <eput> return NULL; - 802077a6: 8a4a mv s4,s2 - 802077a8: b7d1 j 8020776c <lookup_path+0x7c> + 80207766: 8a4a mv s4,s2 + 80207768: b7d1 j 8020772c <lookup_path+0x7c> int len = path - s; - 802077aa: 412487b3 sub a5,s1,s2 - 802077ae: 863e mv a2,a5 - 802077b0: 2781 sext.w a5,a5 - 802077b2: 00fbd363 bge s7,a5,802077b8 <lookup_path+0xc8> - 802077b6: 8662 mv a2,s8 - 802077b8: 0006079b sext.w a5,a2 + 8020776a: 412487b3 sub a5,s1,s2 + 8020776e: 863e mv a2,a5 + 80207770: 2781 sext.w a5,a5 + 80207772: 00fbd363 bge s7,a5,80207778 <lookup_path+0xc8> + 80207776: 8662 mv a2,s8 + 80207778: 0006079b sext.w a5,a2 name[len] = 0; - 802077bc: 97d6 add a5,a5,s5 - 802077be: 00078023 sb zero,0(a5) + 8020777c: 97d6 add a5,a5,s5 + 8020777e: 00078023 sb zero,0(a5) memmove(name, s, len); - 802077c2: 2601 sext.w a2,a2 - 802077c4: 85ca mv a1,s2 - 802077c6: 8556 mv a0,s5 - 802077c8: ffff9097 auipc ra,0xffff9 - 802077cc: ff6080e7 jalr -10(ra) # 802007be <memmove> + 80207782: 2601 sext.w a2,a2 + 80207784: 85ca mv a1,s2 + 80207786: 8556 mv a0,s5 + 80207788: ffff9097 auipc ra,0xffff9 + 8020778c: 036080e7 jalr 54(ra) # 802007be <memmove> while (*path == '/') { - 802077d0: 0004c783 lbu a5,0(s1) - 802077d4: 01379763 bne a5,s3,802077e2 <lookup_path+0xf2> + 80207790: 0004c783 lbu a5,0(s1) + 80207794: 01379763 bne a5,s3,802077a2 <lookup_path+0xf2> path++; - 802077d8: 0485 addi s1,s1,1 + 80207798: 0485 addi s1,s1,1 while (*path == '/') { - 802077da: 0004c783 lbu a5,0(s1) - 802077de: ff378de3 beq a5,s3,802077d8 <lookup_path+0xe8> + 8020779a: 0004c783 lbu a5,0(s1) + 8020779e: ff378de3 beq a5,s3,80207798 <lookup_path+0xe8> elock(entry); - 802077e2: 8552 mv a0,s4 - 802077e4: 00000097 auipc ra,0x0 - 802077e8: 8da080e7 jalr -1830(ra) # 802070be <elock> + 802077a2: 8552 mv a0,s4 + 802077a4: 00000097 auipc ra,0x0 + 802077a8: 8da080e7 jalr -1830(ra) # 8020707e <elock> if (!(entry->attribute & ATTR_DIRECTORY)) { - 802077ec: 100a4783 lbu a5,256(s4) - 802077f0: 8bc1 andi a5,a5,16 - 802077f2: d3b5 beqz a5,80207756 <lookup_path+0x66> + 802077ac: 100a4783 lbu a5,256(s4) + 802077b0: 8bc1 andi a5,a5,16 + 802077b2: d3b5 beqz a5,80207716 <lookup_path+0x66> if (parent && *path == '\0') { - 802077f4: 000b0563 beqz s6,802077fe <lookup_path+0x10e> - 802077f8: 0004c783 lbu a5,0(s1) - 802077fc: d7c9 beqz a5,80207786 <lookup_path+0x96> + 802077b4: 000b0563 beqz s6,802077be <lookup_path+0x10e> + 802077b8: 0004c783 lbu a5,0(s1) + 802077bc: d7c9 beqz a5,80207746 <lookup_path+0x96> if ((next = dirlookup(entry, name, 0)) == 0) { - 802077fe: 4601 li a2,0 - 80207800: 85d6 mv a1,s5 - 80207802: 8552 mv a0,s4 - 80207804: 00000097 auipc ra,0x0 - 80207808: c48080e7 jalr -952(ra) # 8020744c <dirlookup> - 8020780c: 892a mv s2,a0 - 8020780e: d151 beqz a0,80207792 <lookup_path+0xa2> + 802077be: 4601 li a2,0 + 802077c0: 85d6 mv a1,s5 + 802077c2: 8552 mv a0,s4 + 802077c4: 00000097 auipc ra,0x0 + 802077c8: c48080e7 jalr -952(ra) # 8020740c <dirlookup> + 802077cc: 892a mv s2,a0 + 802077ce: d151 beqz a0,80207752 <lookup_path+0xa2> eunlock(entry); - 80207810: 8552 mv a0,s4 - 80207812: 00000097 auipc ra,0x0 - 80207816: 8e2080e7 jalr -1822(ra) # 802070f4 <eunlock> + 802077d0: 8552 mv a0,s4 + 802077d2: 00000097 auipc ra,0x0 + 802077d6: 8e2080e7 jalr -1822(ra) # 802070b4 <eunlock> eput(entry); - 8020781a: 8552 mv a0,s4 - 8020781c: 00000097 auipc ra,0x0 - 80207820: 926080e7 jalr -1754(ra) # 80207142 <eput> + 802077da: 8552 mv a0,s4 + 802077dc: 00000097 auipc ra,0x0 + 802077e0: 926080e7 jalr -1754(ra) # 80207102 <eput> entry = next; - 80207824: 8a4a mv s4,s2 + 802077e4: 8a4a mv s4,s2 eput(entry); - 80207826: 8926 mv s2,s1 + 802077e6: 8926 mv s2,s1 while (*path == '/') { - 80207828: 00094783 lbu a5,0(s2) - 8020782c: 03379363 bne a5,s3,80207852 <lookup_path+0x162> + 802077e8: 00094783 lbu a5,0(s2) + 802077ec: 03379363 bne a5,s3,80207812 <lookup_path+0x162> path++; - 80207830: 0905 addi s2,s2,1 + 802077f0: 0905 addi s2,s2,1 while (*path == '/') { - 80207832: 00094783 lbu a5,0(s2) - 80207836: ff378de3 beq a5,s3,80207830 <lookup_path+0x140> + 802077f2: 00094783 lbu a5,0(s2) + 802077f6: ff378de3 beq a5,s3,802077f0 <lookup_path+0x140> if (*path == 0) { return NULL; } - 8020783a: cf89 beqz a5,80207854 <lookup_path+0x164> + 802077fa: cf89 beqz a5,80207814 <lookup_path+0x164> path++; - 8020783c: 84ca mv s1,s2 + 802077fc: 84ca mv s1,s2 while (*path != '/' && *path != 0) { - 8020783e: f73786e3 beq a5,s3,802077aa <lookup_path+0xba> + 802077fe: f73786e3 beq a5,s3,8020776a <lookup_path+0xba> eput(entry); - 80207842: 84ca mv s1,s2 + 80207802: 84ca mv s1,s2 while (*path != '/' && *path != 0) { - 80207844: d3bd beqz a5,802077aa <lookup_path+0xba> + 80207804: d3bd beqz a5,8020776a <lookup_path+0xba> path++; - 80207846: 0485 addi s1,s1,1 + 80207806: 0485 addi s1,s1,1 while (*path != '/' && *path != 0) { - 80207848: 0004c783 lbu a5,0(s1) - 8020784c: ff379ce3 bne a5,s3,80207844 <lookup_path+0x154> - 80207850: bfa9 j 802077aa <lookup_path+0xba> + 80207808: 0004c783 lbu a5,0(s1) + 8020780c: ff379ce3 bne a5,s3,80207804 <lookup_path+0x154> + 80207810: bfa9 j 8020776a <lookup_path+0xba> if (*path == 0) { return NULL; } - 80207852: fbe5 bnez a5,80207842 <lookup_path+0x152> + 80207812: fbe5 bnez a5,80207802 <lookup_path+0x152> if (parent) { - 80207854: f00b0ce3 beqz s6,8020776c <lookup_path+0x7c> + 80207814: f00b0ce3 beqz s6,8020772c <lookup_path+0x7c> eput(entry); - 80207858: 8552 mv a0,s4 - 8020785a: 00000097 auipc ra,0x0 - 8020785e: 8e8080e7 jalr -1816(ra) # 80207142 <eput> + 80207818: 8552 mv a0,s4 + 8020781a: 00000097 auipc ra,0x0 + 8020781e: 8e8080e7 jalr -1816(ra) # 80207102 <eput> return NULL; - 80207862: 4a01 li s4,0 - 80207864: b721 j 8020776c <lookup_path+0x7c> + 80207822: 4a01 li s4,0 + 80207824: b721 j 8020772c <lookup_path+0x7c> -0000000080207866 <ename>: +0000000080207826 <ename>: struct dirent *ename(char *path) { - 80207866: 716d addi sp,sp,-272 - 80207868: e606 sd ra,264(sp) - 8020786a: e222 sd s0,256(sp) - 8020786c: 0a00 addi s0,sp,272 + 80207826: 716d addi sp,sp,-272 + 80207828: e606 sd ra,264(sp) + 8020782a: e222 sd s0,256(sp) + 8020782c: 0a00 addi s0,sp,272 char name[FAT32_MAX_FILENAME + 1]; return lookup_path(path, 0, name); - 8020786e: ef040613 addi a2,s0,-272 - 80207872: 4581 li a1,0 - 80207874: 00000097 auipc ra,0x0 - 80207878: e7c080e7 jalr -388(ra) # 802076f0 <lookup_path> + 8020782e: ef040613 addi a2,s0,-272 + 80207832: 4581 li a1,0 + 80207834: 00000097 auipc ra,0x0 + 80207838: e7c080e7 jalr -388(ra) # 802076b0 <lookup_path> } - 8020787c: 60b2 ld ra,264(sp) - 8020787e: 6412 ld s0,256(sp) - 80207880: 6151 addi sp,sp,272 - 80207882: 8082 ret + 8020783c: 60b2 ld ra,264(sp) + 8020783e: 6412 ld s0,256(sp) + 80207840: 6151 addi sp,sp,272 + 80207842: 8082 ret -0000000080207884 <enameparent>: +0000000080207844 <enameparent>: struct dirent *enameparent(char *path, char *name) { - 80207884: 1141 addi sp,sp,-16 - 80207886: e406 sd ra,8(sp) - 80207888: e022 sd s0,0(sp) - 8020788a: 0800 addi s0,sp,16 - 8020788c: 862e mv a2,a1 + 80207844: 1141 addi sp,sp,-16 + 80207846: e406 sd ra,8(sp) + 80207848: e022 sd s0,0(sp) + 8020784a: 0800 addi s0,sp,16 + 8020784c: 862e mv a2,a1 return lookup_path(path, 1, name); - 8020788e: 4585 li a1,1 - 80207890: 00000097 auipc ra,0x0 - 80207894: e60080e7 jalr -416(ra) # 802076f0 <lookup_path> + 8020784e: 4585 li a1,1 + 80207850: 00000097 auipc ra,0x0 + 80207854: e60080e7 jalr -416(ra) # 802076b0 <lookup_path> } - 80207898: 60a2 ld ra,8(sp) - 8020789a: 6402 ld s0,0(sp) - 8020789c: 0141 addi sp,sp,16 - 8020789e: 8082 ret + 80207858: 60a2 ld ra,8(sp) + 8020785a: 6402 ld s0,0(sp) + 8020785c: 0141 addi sp,sp,16 + 8020785e: 8082 ret -00000000802078a0 <plicinit>: +0000000080207860 <plicinit>: // // the riscv Platform Level Interrupt Controller (PLIC). // void plicinit(void) { - 802078a0: 1141 addi sp,sp,-16 - 802078a2: e422 sd s0,8(sp) - 802078a4: 0800 addi s0,sp,16 + 80207860: 1141 addi sp,sp,-16 + 80207862: e422 sd s0,8(sp) + 80207864: 0800 addi s0,sp,16 writed(1, PLIC_V + DISK_IRQ * sizeof(uint32)); - 802078a6: 00fc37b7 lui a5,0xfc3 - 802078aa: 07ba slli a5,a5,0xe - 802078ac: 4705 li a4,1 - 802078ae: c3d8 sw a4,4(a5) + 80207866: 00fc37b7 lui a5,0xfc3 + 8020786a: 07ba slli a5,a5,0xe + 8020786c: 4705 li a4,1 + 8020786e: c3d8 sw a4,4(a5) writed(1, PLIC_V + UART_IRQ * sizeof(uint32)); - 802078b0: d798 sw a4,40(a5) + 80207870: d798 sw a4,40(a5) #ifdef DEBUG printf("plicinit\n"); #endif } - 802078b2: 6422 ld s0,8(sp) - 802078b4: 0141 addi sp,sp,16 - 802078b6: 8082 ret + 80207872: 6422 ld s0,8(sp) + 80207874: 0141 addi sp,sp,16 + 80207876: 8082 ret -00000000802078b8 <plicinithart>: +0000000080207878 <plicinithart>: void plicinithart(void) { - 802078b8: 1141 addi sp,sp,-16 - 802078ba: e406 sd ra,8(sp) - 802078bc: e022 sd s0,0(sp) - 802078be: 0800 addi s0,sp,16 + 80207878: 1141 addi sp,sp,-16 + 8020787a: e406 sd ra,8(sp) + 8020787c: e022 sd s0,0(sp) + 8020787e: 0800 addi s0,sp,16 int hart = cpuid(); - 802078c0: ffffa097 auipc ra,0xffffa - 802078c4: 150080e7 jalr 336(ra) # 80201a10 <cpuid> + 80207880: ffffa097 auipc ra,0xffffa + 80207884: 190080e7 jalr 400(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); - 802078c8: 0085171b slliw a4,a0,0x8 - 802078cc: 01f867b7 lui a5,0x1f86 - 802078d0: 0785 addi a5,a5,1 # 1f86001 <_entry-0x7e279fff> - 802078d2: 07b6 slli a5,a5,0xd - 802078d4: 97ba add a5,a5,a4 - 802078d6: 40200713 li a4,1026 - 802078da: 08e7a023 sw a4,128(a5) + 80207888: 0085171b slliw a4,a0,0x8 + 8020788c: 01f867b7 lui a5,0x1f86 + 80207890: 0785 addi a5,a5,1 # 1f86001 <_entry-0x7e279fff> + 80207892: 07b6 slli a5,a5,0xd + 80207894: 97ba add a5,a5,a4 + 80207896: 40200713 li a4,1026 + 8020789a: 08e7a023 sw a4,128(a5) // set this hart's S-mode priority threshold to 0. *(uint32*)PLIC_SPRIORITY(hart) = 0; - 802078de: 00d5151b slliw a0,a0,0xd - 802078e2: 03f0c7b7 lui a5,0x3f0c - 802078e6: 20178793 addi a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff> - 802078ea: 07b2 slli a5,a5,0xc - 802078ec: 97aa add a5,a5,a0 - 802078ee: 0007a023 sw zero,0(a5) + 8020789e: 00d5151b slliw a0,a0,0xd + 802078a2: 03f0c7b7 lui a5,0x3f0c + 802078a6: 20178793 addi a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff> + 802078aa: 07b2 slli a5,a5,0xc + 802078ac: 97aa add a5,a5,a0 + 802078ae: 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 } - 802078f2: 60a2 ld ra,8(sp) - 802078f4: 6402 ld s0,0(sp) - 802078f6: 0141 addi sp,sp,16 - 802078f8: 8082 ret + 802078b2: 60a2 ld ra,8(sp) + 802078b4: 6402 ld s0,0(sp) + 802078b6: 0141 addi sp,sp,16 + 802078b8: 8082 ret -00000000802078fa <plic_claim>: +00000000802078ba <plic_claim>: // ask the PLIC what interrupt we should serve. int plic_claim(void) { - 802078fa: 1141 addi sp,sp,-16 - 802078fc: e406 sd ra,8(sp) - 802078fe: e022 sd s0,0(sp) - 80207900: 0800 addi s0,sp,16 + 802078ba: 1141 addi sp,sp,-16 + 802078bc: e406 sd ra,8(sp) + 802078be: e022 sd s0,0(sp) + 802078c0: 0800 addi s0,sp,16 int hart = cpuid(); - 80207902: ffffa097 auipc ra,0xffffa - 80207906: 10e080e7 jalr 270(ra) # 80201a10 <cpuid> + 802078c2: ffffa097 auipc ra,0xffffa + 802078c6: 14e080e7 jalr 334(ra) # 80201a10 <cpuid> int irq; #ifndef QEMU irq = *(uint32*)PLIC_MCLAIM(hart); #else irq = *(uint32*)PLIC_SCLAIM(hart); - 8020790a: 00d5151b slliw a0,a0,0xd - 8020790e: 03f0c7b7 lui a5,0x3f0c - 80207912: 20178793 addi a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff> - 80207916: 07b2 slli a5,a5,0xc - 80207918: 97aa add a5,a5,a0 + 802078ca: 00d5151b slliw a0,a0,0xd + 802078ce: 03f0c7b7 lui a5,0x3f0c + 802078d2: 20178793 addi a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff> + 802078d6: 07b2 slli a5,a5,0xc + 802078d8: 97aa add a5,a5,a0 #endif return irq; } - 8020791a: 43c8 lw a0,4(a5) - 8020791c: 60a2 ld ra,8(sp) - 8020791e: 6402 ld s0,0(sp) - 80207920: 0141 addi sp,sp,16 - 80207922: 8082 ret + 802078da: 43c8 lw a0,4(a5) + 802078dc: 60a2 ld ra,8(sp) + 802078de: 6402 ld s0,0(sp) + 802078e0: 0141 addi sp,sp,16 + 802078e2: 8082 ret -0000000080207924 <plic_complete>: +00000000802078e4 <plic_complete>: // tell the PLIC we've served this IRQ. void plic_complete(int irq) { - 80207924: 1101 addi sp,sp,-32 - 80207926: ec06 sd ra,24(sp) - 80207928: e822 sd s0,16(sp) - 8020792a: e426 sd s1,8(sp) - 8020792c: 1000 addi s0,sp,32 - 8020792e: 84aa mv s1,a0 + 802078e4: 1101 addi sp,sp,-32 + 802078e6: ec06 sd ra,24(sp) + 802078e8: e822 sd s0,16(sp) + 802078ea: e426 sd s1,8(sp) + 802078ec: 1000 addi s0,sp,32 + 802078ee: 84aa mv s1,a0 int hart = cpuid(); - 80207930: ffffa097 auipc ra,0xffffa - 80207934: 0e0080e7 jalr 224(ra) # 80201a10 <cpuid> + 802078f0: ffffa097 auipc ra,0xffffa + 802078f4: 120080e7 jalr 288(ra) # 80201a10 <cpuid> #ifndef QEMU *(uint32*)PLIC_MCLAIM(hart) = irq; #else *(uint32*)PLIC_SCLAIM(hart) = irq; - 80207938: 00d5151b slliw a0,a0,0xd - 8020793c: 03f0c7b7 lui a5,0x3f0c - 80207940: 20178793 addi a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff> - 80207944: 07b2 slli a5,a5,0xc - 80207946: 97aa add a5,a5,a0 - 80207948: c3c4 sw s1,4(a5) + 802078f8: 00d5151b slliw a0,a0,0xd + 802078fc: 03f0c7b7 lui a5,0x3f0c + 80207900: 20178793 addi a5,a5,513 # 3f0c201 <_entry-0x7c2f3dff> + 80207904: 07b2 slli a5,a5,0xc + 80207906: 97aa add a5,a5,a0 + 80207908: c3c4 sw s1,4(a5) #endif } - 8020794a: 60e2 ld ra,24(sp) - 8020794c: 6442 ld s0,16(sp) - 8020794e: 64a2 ld s1,8(sp) - 80207950: 6105 addi sp,sp,32 - 80207952: 8082 ret + 8020790a: 60e2 ld ra,24(sp) + 8020790c: 6442 ld s0,16(sp) + 8020790e: 64a2 ld s1,8(sp) + 80207910: 6105 addi sp,sp,32 + 80207912: 8082 ret -0000000080207954 <consolewrite>: +0000000080207914 <consolewrite>: // // user write()s to the console go here. // int consolewrite(int user_src, uint64 src, int n) { - 80207954: 715d addi sp,sp,-80 - 80207956: e486 sd ra,72(sp) - 80207958: e0a2 sd s0,64(sp) - 8020795a: fc26 sd s1,56(sp) - 8020795c: f84a sd s2,48(sp) - 8020795e: f44e sd s3,40(sp) - 80207960: f052 sd s4,32(sp) - 80207962: ec56 sd s5,24(sp) - 80207964: e85a sd s6,16(sp) - 80207966: 0880 addi s0,sp,80 - 80207968: 8a2a mv s4,a0 - 8020796a: 84ae mv s1,a1 - 8020796c: 89b2 mv s3,a2 + 80207914: 715d addi sp,sp,-80 + 80207916: e486 sd ra,72(sp) + 80207918: e0a2 sd s0,64(sp) + 8020791a: fc26 sd s1,56(sp) + 8020791c: f84a sd s2,48(sp) + 8020791e: f44e sd s3,40(sp) + 80207920: f052 sd s4,32(sp) + 80207922: ec56 sd s5,24(sp) + 80207924: e85a sd s6,16(sp) + 80207926: 0880 addi s0,sp,80 + 80207928: 8a2a mv s4,a0 + 8020792a: 84ae mv s1,a1 + 8020792c: 89b2 mv s3,a2 int i; acquire(&cons.lock); - 8020796e: 00030517 auipc a0,0x30 - 80207972: a1250513 addi a0,a0,-1518 # 80237380 <cons> - 80207976: ffff9097 auipc ra,0xffff9 - 8020797a: d50080e7 jalr -688(ra) # 802006c6 <acquire> + 8020792e: 00030517 auipc a0,0x30 + 80207932: a5250513 addi a0,a0,-1454 # 80237380 <cons> + 80207936: ffff9097 auipc ra,0xffff9 + 8020793a: d90080e7 jalr -624(ra) # 802006c6 <acquire> for(i = 0; i < n; i++){ - 8020797e: 07305063 blez s3,802079de <consolewrite+0x8a> - 80207982: 4901 li s2,0 + 8020793e: 07305063 blez s3,8020799e <consolewrite+0x8a> + 80207942: 4901 li s2,0 char c; if(either_copyin(&c, user_src, src+i, 1) == -1) - 80207984: fbf40b13 addi s6,s0,-65 - 80207988: 5afd li s5,-1 - 8020798a: 4685 li a3,1 - 8020798c: 8626 mv a2,s1 - 8020798e: 85d2 mv a1,s4 - 80207990: 855a mv a0,s6 - 80207992: ffffb097 auipc ra,0xffffb - 80207996: e7e080e7 jalr -386(ra) # 80202810 <either_copyin> - 8020799a: 01550f63 beq a0,s5,802079b8 <consolewrite+0x64> + 80207944: fbf40b13 addi s6,s0,-65 + 80207948: 5afd li s5,-1 + 8020794a: 4685 li a3,1 + 8020794c: 8626 mv a2,s1 + 8020794e: 85d2 mv a1,s4 + 80207950: 855a mv a0,s6 + 80207952: ffffb097 auipc ra,0xffffb + 80207956: eb8080e7 jalr -328(ra) # 8020280a <either_copyin> + 8020795a: 01550f63 beq a0,s5,80207978 <consolewrite+0x64> SBI_CALL_1(SBI_CONSOLE_PUTCHAR, ch); - 8020799e: fbf44503 lbu a0,-65(s0) - 802079a2: 4581 li a1,0 - 802079a4: 4601 li a2,0 - 802079a6: 4681 li a3,0 - 802079a8: 4885 li a7,1 - 802079aa: 00000073 ecall + 8020795e: fbf44503 lbu a0,-65(s0) + 80207962: 4581 li a1,0 + 80207964: 4601 li a2,0 + 80207966: 4681 li a3,0 + 80207968: 4885 li a7,1 + 8020796a: 00000073 ecall for(i = 0; i < n; i++){ - 802079ae: 2905 addiw s2,s2,1 - 802079b0: 0485 addi s1,s1,1 - 802079b2: fd299ce3 bne s3,s2,8020798a <consolewrite+0x36> - 802079b6: 894e mv s2,s3 + 8020796e: 2905 addiw s2,s2,1 + 80207970: 0485 addi s1,s1,1 + 80207972: fd299ce3 bne s3,s2,8020794a <consolewrite+0x36> + 80207976: 894e mv s2,s3 break; sbi_console_putchar(c); } release(&cons.lock); - 802079b8: 00030517 auipc a0,0x30 - 802079bc: 9c850513 addi a0,a0,-1592 # 80237380 <cons> - 802079c0: ffff9097 auipc ra,0xffff9 - 802079c4: d5a080e7 jalr -678(ra) # 8020071a <release> + 80207978: 00030517 auipc a0,0x30 + 8020797c: a0850513 addi a0,a0,-1528 # 80237380 <cons> + 80207980: ffff9097 auipc ra,0xffff9 + 80207984: d9a080e7 jalr -614(ra) # 8020071a <release> return i; } - 802079c8: 854a mv a0,s2 - 802079ca: 60a6 ld ra,72(sp) - 802079cc: 6406 ld s0,64(sp) - 802079ce: 74e2 ld s1,56(sp) - 802079d0: 7942 ld s2,48(sp) - 802079d2: 79a2 ld s3,40(sp) - 802079d4: 7a02 ld s4,32(sp) - 802079d6: 6ae2 ld s5,24(sp) - 802079d8: 6b42 ld s6,16(sp) - 802079da: 6161 addi sp,sp,80 - 802079dc: 8082 ret + 80207988: 854a mv a0,s2 + 8020798a: 60a6 ld ra,72(sp) + 8020798c: 6406 ld s0,64(sp) + 8020798e: 74e2 ld s1,56(sp) + 80207990: 7942 ld s2,48(sp) + 80207992: 79a2 ld s3,40(sp) + 80207994: 7a02 ld s4,32(sp) + 80207996: 6ae2 ld s5,24(sp) + 80207998: 6b42 ld s6,16(sp) + 8020799a: 6161 addi sp,sp,80 + 8020799c: 8082 ret for(i = 0; i < n; i++){ - 802079de: 4901 li s2,0 - 802079e0: bfe1 j 802079b8 <consolewrite+0x64> + 8020799e: 4901 li s2,0 + 802079a0: bfe1 j 80207978 <consolewrite+0x64> -00000000802079e2 <consoleread>: +00000000802079a2 <consoleread>: // user_dist indicates whether dst is a user // or kernel address. // int consoleread(int user_dst, uint64 dst, int n) { - 802079e2: 7119 addi sp,sp,-128 - 802079e4: fc86 sd ra,120(sp) - 802079e6: f8a2 sd s0,112(sp) - 802079e8: f4a6 sd s1,104(sp) - 802079ea: f0ca sd s2,96(sp) - 802079ec: ecce sd s3,88(sp) - 802079ee: e8d2 sd s4,80(sp) - 802079f0: e4d6 sd s5,72(sp) - 802079f2: e0da sd s6,64(sp) - 802079f4: fc5e sd s7,56(sp) - 802079f6: f862 sd s8,48(sp) - 802079f8: f466 sd s9,40(sp) - 802079fa: f06a sd s10,32(sp) - 802079fc: ec6e sd s11,24(sp) - 802079fe: 0100 addi s0,sp,128 - 80207a00: 8aaa mv s5,a0 - 80207a02: 8a2e mv s4,a1 - 80207a04: 89b2 mv s3,a2 + 802079a2: 7119 addi sp,sp,-128 + 802079a4: fc86 sd ra,120(sp) + 802079a6: f8a2 sd s0,112(sp) + 802079a8: f4a6 sd s1,104(sp) + 802079aa: f0ca sd s2,96(sp) + 802079ac: ecce sd s3,88(sp) + 802079ae: e8d2 sd s4,80(sp) + 802079b0: e4d6 sd s5,72(sp) + 802079b2: e0da sd s6,64(sp) + 802079b4: fc5e sd s7,56(sp) + 802079b6: f862 sd s8,48(sp) + 802079b8: f466 sd s9,40(sp) + 802079ba: f06a sd s10,32(sp) + 802079bc: ec6e sd s11,24(sp) + 802079be: 0100 addi s0,sp,128 + 802079c0: 8aaa mv s5,a0 + 802079c2: 8a2e mv s4,a1 + 802079c4: 89b2 mv s3,a2 uint target; int c; char cbuf; target = n; - 80207a06: 00060b1b sext.w s6,a2 + 802079c6: 00060b1b sext.w s6,a2 acquire(&cons.lock); - 80207a0a: 00030517 auipc a0,0x30 - 80207a0e: 97650513 addi a0,a0,-1674 # 80237380 <cons> - 80207a12: ffff9097 auipc ra,0xffff9 - 80207a16: cb4080e7 jalr -844(ra) # 802006c6 <acquire> + 802079ca: 00030517 auipc a0,0x30 + 802079ce: 9b650513 addi a0,a0,-1610 # 80237380 <cons> + 802079d2: ffff9097 auipc ra,0xffff9 + 802079d6: cf4080e7 jalr -780(ra) # 802006c6 <acquire> while(n > 0){ // wait until interrupt handler has put some // input into cons.buffer. while(cons.r == cons.w){ - 80207a1a: 00030497 auipc s1,0x30 - 80207a1e: 96648493 addi s1,s1,-1690 # 80237380 <cons> + 802079da: 00030497 auipc s1,0x30 + 802079de: 9a648493 addi s1,s1,-1626 # 80237380 <cons> if(myproc()->killed){ release(&cons.lock); return -1; } sleep(&cons.r, &cons.lock); - 80207a22: 00030917 auipc s2,0x30 - 80207a26: 9f690913 addi s2,s2,-1546 # 80237418 <cons+0x98> + 802079e2: 00030917 auipc s2,0x30 + 802079e6: a3690913 addi s2,s2,-1482 # 80237418 <cons+0x98> } c = cons.buf[cons.r++ % INPUT_BUF]; if(c == C('D')){ // end-of-file - 80207a2a: 4c11 li s8,4 + 802079ea: 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) - 80207a2c: f8f40d13 addi s10,s0,-113 - 80207a30: 5cfd li s9,-1 + 802079ec: f8f40d13 addi s10,s0,-113 + 802079f0: 5cfd li s9,-1 break; dst++; --n; if(c == '\n'){ - 80207a32: 4da9 li s11,10 + 802079f2: 4da9 li s11,10 while(n > 0){ - 80207a34: 07305763 blez s3,80207aa2 <consoleread+0xc0> + 802079f4: 07305763 blez s3,80207a62 <consoleread+0xc0> while(cons.r == cons.w){ - 80207a38: 0984a783 lw a5,152(s1) - 80207a3c: 09c4a703 lw a4,156(s1) - 80207a40: 02f71463 bne a4,a5,80207a68 <consoleread+0x86> + 802079f8: 0984a783 lw a5,152(s1) + 802079fc: 09c4a703 lw a4,156(s1) + 80207a00: 02f71463 bne a4,a5,80207a28 <consoleread+0x86> if(myproc()->killed){ - 80207a44: ffffa097 auipc ra,0xffffa - 80207a48: ff8080e7 jalr -8(ra) # 80201a3c <myproc> - 80207a4c: 591c lw a5,48(a0) - 80207a4e: e7ad bnez a5,80207ab8 <consoleread+0xd6> + 80207a04: ffffa097 auipc ra,0xffffa + 80207a08: 038080e7 jalr 56(ra) # 80201a3c <myproc> + 80207a0c: 591c lw a5,48(a0) + 80207a0e: e7ad bnez a5,80207a78 <consoleread+0xd6> sleep(&cons.r, &cons.lock); - 80207a50: 85a6 mv a1,s1 - 80207a52: 854a mv a0,s2 - 80207a54: ffffb097 auipc ra,0xffffb - 80207a58: 9c4080e7 jalr -1596(ra) # 80202418 <sleep> + 80207a10: 85a6 mv a1,s1 + 80207a12: 854a mv a0,s2 + 80207a14: ffffb097 auipc ra,0xffffb + 80207a18: 9fe080e7 jalr -1538(ra) # 80202412 <sleep> while(cons.r == cons.w){ - 80207a5c: 0984a783 lw a5,152(s1) - 80207a60: 09c4a703 lw a4,156(s1) - 80207a64: fef700e3 beq a4,a5,80207a44 <consoleread+0x62> + 80207a1c: 0984a783 lw a5,152(s1) + 80207a20: 09c4a703 lw a4,156(s1) + 80207a24: fef700e3 beq a4,a5,80207a04 <consoleread+0x62> c = cons.buf[cons.r++ % INPUT_BUF]; - 80207a68: 0017871b addiw a4,a5,1 - 80207a6c: 08e4ac23 sw a4,152(s1) - 80207a70: 07f7f713 andi a4,a5,127 - 80207a74: 9726 add a4,a4,s1 - 80207a76: 01874703 lbu a4,24(a4) - 80207a7a: 00070b9b sext.w s7,a4 + 80207a28: 0017871b addiw a4,a5,1 + 80207a2c: 08e4ac23 sw a4,152(s1) + 80207a30: 07f7f713 andi a4,a5,127 + 80207a34: 9726 add a4,a4,s1 + 80207a36: 01874703 lbu a4,24(a4) + 80207a3a: 00070b9b sext.w s7,a4 if(c == C('D')){ // end-of-file - 80207a7e: 078b8563 beq s7,s8,80207ae8 <consoleread+0x106> + 80207a3e: 078b8563 beq s7,s8,80207aa8 <consoleread+0x106> cbuf = c; - 80207a82: f8e407a3 sb a4,-113(s0) + 80207a42: f8e407a3 sb a4,-113(s0) if(either_copyout(user_dst, dst, &cbuf, 1) == -1) - 80207a86: 4685 li a3,1 - 80207a88: 866a mv a2,s10 - 80207a8a: 85d2 mv a1,s4 - 80207a8c: 8556 mv a0,s5 - 80207a8e: ffffb097 auipc ra,0xffffb - 80207a92: d4c080e7 jalr -692(ra) # 802027da <either_copyout> - 80207a96: 01950663 beq a0,s9,80207aa2 <consoleread+0xc0> + 80207a46: 4685 li a3,1 + 80207a48: 866a mv a2,s10 + 80207a4a: 85d2 mv a1,s4 + 80207a4c: 8556 mv a0,s5 + 80207a4e: ffffb097 auipc ra,0xffffb + 80207a52: d86080e7 jalr -634(ra) # 802027d4 <either_copyout> + 80207a56: 01950663 beq a0,s9,80207a62 <consoleread+0xc0> dst++; - 80207a9a: 0a05 addi s4,s4,1 + 80207a5a: 0a05 addi s4,s4,1 --n; - 80207a9c: 39fd addiw s3,s3,-1 + 80207a5c: 39fd addiw s3,s3,-1 if(c == '\n'){ - 80207a9e: f9bb9be3 bne s7,s11,80207a34 <consoleread+0x52> + 80207a5e: f9bb9be3 bne s7,s11,802079f4 <consoleread+0x52> // a whole line has arrived, return to // the user-level read(). break; } } release(&cons.lock); - 80207aa2: 00030517 auipc a0,0x30 - 80207aa6: 8de50513 addi a0,a0,-1826 # 80237380 <cons> - 80207aaa: ffff9097 auipc ra,0xffff9 - 80207aae: c70080e7 jalr -912(ra) # 8020071a <release> + 80207a62: 00030517 auipc a0,0x30 + 80207a66: 91e50513 addi a0,a0,-1762 # 80237380 <cons> + 80207a6a: ffff9097 auipc ra,0xffff9 + 80207a6e: cb0080e7 jalr -848(ra) # 8020071a <release> return target - n; - 80207ab2: 413b053b subw a0,s6,s3 - 80207ab6: a811 j 80207aca <consoleread+0xe8> + 80207a72: 413b053b subw a0,s6,s3 + 80207a76: a811 j 80207a8a <consoleread+0xe8> release(&cons.lock); - 80207ab8: 00030517 auipc a0,0x30 - 80207abc: 8c850513 addi a0,a0,-1848 # 80237380 <cons> - 80207ac0: ffff9097 auipc ra,0xffff9 - 80207ac4: c5a080e7 jalr -934(ra) # 8020071a <release> + 80207a78: 00030517 auipc a0,0x30 + 80207a7c: 90850513 addi a0,a0,-1784 # 80237380 <cons> + 80207a80: ffff9097 auipc ra,0xffff9 + 80207a84: c9a080e7 jalr -870(ra) # 8020071a <release> return -1; - 80207ac8: 557d li a0,-1 + 80207a88: 557d li a0,-1 } - 80207aca: 70e6 ld ra,120(sp) - 80207acc: 7446 ld s0,112(sp) - 80207ace: 74a6 ld s1,104(sp) - 80207ad0: 7906 ld s2,96(sp) - 80207ad2: 69e6 ld s3,88(sp) - 80207ad4: 6a46 ld s4,80(sp) - 80207ad6: 6aa6 ld s5,72(sp) - 80207ad8: 6b06 ld s6,64(sp) - 80207ada: 7be2 ld s7,56(sp) - 80207adc: 7c42 ld s8,48(sp) - 80207ade: 7ca2 ld s9,40(sp) - 80207ae0: 7d02 ld s10,32(sp) - 80207ae2: 6de2 ld s11,24(sp) - 80207ae4: 6109 addi sp,sp,128 - 80207ae6: 8082 ret + 80207a8a: 70e6 ld ra,120(sp) + 80207a8c: 7446 ld s0,112(sp) + 80207a8e: 74a6 ld s1,104(sp) + 80207a90: 7906 ld s2,96(sp) + 80207a92: 69e6 ld s3,88(sp) + 80207a94: 6a46 ld s4,80(sp) + 80207a96: 6aa6 ld s5,72(sp) + 80207a98: 6b06 ld s6,64(sp) + 80207a9a: 7be2 ld s7,56(sp) + 80207a9c: 7c42 ld s8,48(sp) + 80207a9e: 7ca2 ld s9,40(sp) + 80207aa0: 7d02 ld s10,32(sp) + 80207aa2: 6de2 ld s11,24(sp) + 80207aa4: 6109 addi sp,sp,128 + 80207aa6: 8082 ret if(n < target){ - 80207ae8: 0009871b sext.w a4,s3 - 80207aec: fb677be3 bgeu a4,s6,80207aa2 <consoleread+0xc0> + 80207aa8: 0009871b sext.w a4,s3 + 80207aac: fb677be3 bgeu a4,s6,80207a62 <consoleread+0xc0> cons.r--; - 80207af0: 00030717 auipc a4,0x30 - 80207af4: 92f72423 sw a5,-1752(a4) # 80237418 <cons+0x98> - 80207af8: b76d j 80207aa2 <consoleread+0xc0> + 80207ab0: 00030717 auipc a4,0x30 + 80207ab4: 96f72423 sw a5,-1688(a4) # 80237418 <cons+0x98> + 80207ab8: b76d j 80207a62 <consoleread+0xc0> -0000000080207afa <consputc>: +0000000080207aba <consputc>: void consputc(int c) { - 80207afa: 1141 addi sp,sp,-16 - 80207afc: e422 sd s0,8(sp) - 80207afe: 0800 addi s0,sp,16 + 80207aba: 1141 addi sp,sp,-16 + 80207abc: e422 sd s0,8(sp) + 80207abe: 0800 addi s0,sp,16 if(c == BACKSPACE){ - 80207b00: 10000793 li a5,256 - 80207b04: 00f50b63 beq a0,a5,80207b1a <consputc+0x20> - 80207b08: 4581 li a1,0 - 80207b0a: 4601 li a2,0 - 80207b0c: 4681 li a3,0 - 80207b0e: 4885 li a7,1 - 80207b10: 00000073 ecall + 80207ac0: 10000793 li a5,256 + 80207ac4: 00f50b63 beq a0,a5,80207ada <consputc+0x20> + 80207ac8: 4581 li a1,0 + 80207aca: 4601 li a2,0 + 80207acc: 4681 li a3,0 + 80207ace: 4885 li a7,1 + 80207ad0: 00000073 ecall } - 80207b14: 6422 ld s0,8(sp) - 80207b16: 0141 addi sp,sp,16 - 80207b18: 8082 ret - 80207b1a: 4521 li a0,8 - 80207b1c: 4581 li a1,0 - 80207b1e: 4601 li a2,0 - 80207b20: 4681 li a3,0 - 80207b22: 4885 li a7,1 - 80207b24: 00000073 ecall - 80207b28: 02000513 li a0,32 - 80207b2c: 00000073 ecall - 80207b30: 4521 li a0,8 - 80207b32: 00000073 ecall + 80207ad4: 6422 ld s0,8(sp) + 80207ad6: 0141 addi sp,sp,16 + 80207ad8: 8082 ret + 80207ada: 4521 li a0,8 + 80207adc: 4581 li a1,0 + 80207ade: 4601 li a2,0 + 80207ae0: 4681 li a3,0 + 80207ae2: 4885 li a7,1 + 80207ae4: 00000073 ecall + 80207ae8: 02000513 li a0,32 + 80207aec: 00000073 ecall + 80207af0: 4521 li a0,8 + 80207af2: 00000073 ecall } - 80207b36: bff9 j 80207b14 <consputc+0x1a> + 80207af6: bff9 j 80207ad4 <consputc+0x1a> -0000000080207b38 <consoleintr>: +0000000080207af8 <consoleintr>: // do erase/kill processing, append to cons.buf, // wake up consoleread() if a whole line has arrived. // void consoleintr(int c) { - 80207b38: 1101 addi sp,sp,-32 - 80207b3a: ec06 sd ra,24(sp) - 80207b3c: e822 sd s0,16(sp) - 80207b3e: e426 sd s1,8(sp) - 80207b40: e04a sd s2,0(sp) - 80207b42: 1000 addi s0,sp,32 - 80207b44: 84aa mv s1,a0 + 80207af8: 1101 addi sp,sp,-32 + 80207afa: ec06 sd ra,24(sp) + 80207afc: e822 sd s0,16(sp) + 80207afe: e426 sd s1,8(sp) + 80207b00: e04a sd s2,0(sp) + 80207b02: 1000 addi s0,sp,32 + 80207b04: 84aa mv s1,a0 acquire(&cons.lock); - 80207b46: 00030517 auipc a0,0x30 - 80207b4a: 83a50513 addi a0,a0,-1990 # 80237380 <cons> - 80207b4e: ffff9097 auipc ra,0xffff9 - 80207b52: b78080e7 jalr -1160(ra) # 802006c6 <acquire> + 80207b06: 00030517 auipc a0,0x30 + 80207b0a: 87a50513 addi a0,a0,-1926 # 80237380 <cons> + 80207b0e: ffff9097 auipc ra,0xffff9 + 80207b12: bb8080e7 jalr -1096(ra) # 802006c6 <acquire> switch(c){ - 80207b56: 47d5 li a5,21 - 80207b58: 0af48663 beq s1,a5,80207c04 <consoleintr+0xcc> - 80207b5c: 0297ca63 blt a5,s1,80207b90 <consoleintr+0x58> - 80207b60: 47a1 li a5,8 - 80207b62: 0ef48763 beq s1,a5,80207c50 <consoleintr+0x118> - 80207b66: 47c1 li a5,16 - 80207b68: 10f49a63 bne s1,a5,80207c7c <consoleintr+0x144> + 80207b16: 47d5 li a5,21 + 80207b18: 0af48663 beq s1,a5,80207bc4 <consoleintr+0xcc> + 80207b1c: 0297ca63 blt a5,s1,80207b50 <consoleintr+0x58> + 80207b20: 47a1 li a5,8 + 80207b22: 0ef48763 beq s1,a5,80207c10 <consoleintr+0x118> + 80207b26: 47c1 li a5,16 + 80207b28: 10f49a63 bne s1,a5,80207c3c <consoleintr+0x144> case C('P'): // Print process list. procdump(); - 80207b6c: ffffb097 auipc ra,0xffffb - 80207b70: cd8080e7 jalr -808(ra) # 80202844 <procdump> + 80207b2c: ffffb097 auipc ra,0xffffb + 80207b30: d12080e7 jalr -750(ra) # 8020283e <procdump> } } break; } release(&cons.lock); - 80207b74: 00030517 auipc a0,0x30 - 80207b78: 80c50513 addi a0,a0,-2036 # 80237380 <cons> - 80207b7c: ffff9097 auipc ra,0xffff9 - 80207b80: b9e080e7 jalr -1122(ra) # 8020071a <release> + 80207b34: 00030517 auipc a0,0x30 + 80207b38: 84c50513 addi a0,a0,-1972 # 80237380 <cons> + 80207b3c: ffff9097 auipc ra,0xffff9 + 80207b40: bde080e7 jalr -1058(ra) # 8020071a <release> } - 80207b84: 60e2 ld ra,24(sp) - 80207b86: 6442 ld s0,16(sp) - 80207b88: 64a2 ld s1,8(sp) - 80207b8a: 6902 ld s2,0(sp) - 80207b8c: 6105 addi sp,sp,32 - 80207b8e: 8082 ret + 80207b44: 60e2 ld ra,24(sp) + 80207b46: 6442 ld s0,16(sp) + 80207b48: 64a2 ld s1,8(sp) + 80207b4a: 6902 ld s2,0(sp) + 80207b4c: 6105 addi sp,sp,32 + 80207b4e: 8082 ret switch(c){ - 80207b90: 07f00793 li a5,127 - 80207b94: 0af48e63 beq s1,a5,80207c50 <consoleintr+0x118> + 80207b50: 07f00793 li a5,127 + 80207b54: 0af48e63 beq s1,a5,80207c10 <consoleintr+0x118> if(c != 0 && cons.e-cons.r < INPUT_BUF){ - 80207b98: 0002f717 auipc a4,0x2f - 80207b9c: 7e870713 addi a4,a4,2024 # 80237380 <cons> - 80207ba0: 0a072783 lw a5,160(a4) - 80207ba4: 09872703 lw a4,152(a4) - 80207ba8: 9f99 subw a5,a5,a4 - 80207baa: 07f00713 li a4,127 - 80207bae: fcf763e3 bltu a4,a5,80207b74 <consoleintr+0x3c> + 80207b58: 00030717 auipc a4,0x30 + 80207b5c: 82870713 addi a4,a4,-2008 # 80237380 <cons> + 80207b60: 0a072783 lw a5,160(a4) + 80207b64: 09872703 lw a4,152(a4) + 80207b68: 9f99 subw a5,a5,a4 + 80207b6a: 07f00713 li a4,127 + 80207b6e: fcf763e3 bltu a4,a5,80207b34 <consoleintr+0x3c> c = (c == '\r') ? '\n' : c; - 80207bb2: 47b5 li a5,13 - 80207bb4: 0cf48763 beq s1,a5,80207c82 <consoleintr+0x14a> + 80207b72: 47b5 li a5,13 + 80207b74: 0cf48763 beq s1,a5,80207c42 <consoleintr+0x14a> consputc(c); - 80207bb8: 8526 mv a0,s1 - 80207bba: 00000097 auipc ra,0x0 - 80207bbe: f40080e7 jalr -192(ra) # 80207afa <consputc> + 80207b78: 8526 mv a0,s1 + 80207b7a: 00000097 auipc ra,0x0 + 80207b7e: f40080e7 jalr -192(ra) # 80207aba <consputc> cons.buf[cons.e++ % INPUT_BUF] = c; - 80207bc2: 0002f797 auipc a5,0x2f - 80207bc6: 7be78793 addi a5,a5,1982 # 80237380 <cons> - 80207bca: 0a07a703 lw a4,160(a5) - 80207bce: 0017069b addiw a3,a4,1 - 80207bd2: 0006861b sext.w a2,a3 - 80207bd6: 0ad7a023 sw a3,160(a5) - 80207bda: 07f77713 andi a4,a4,127 - 80207bde: 97ba add a5,a5,a4 - 80207be0: 00978c23 sb s1,24(a5) + 80207b82: 0002f797 auipc a5,0x2f + 80207b86: 7fe78793 addi a5,a5,2046 # 80237380 <cons> + 80207b8a: 0a07a703 lw a4,160(a5) + 80207b8e: 0017069b addiw a3,a4,1 + 80207b92: 0006861b sext.w a2,a3 + 80207b96: 0ad7a023 sw a3,160(a5) + 80207b9a: 07f77713 andi a4,a4,127 + 80207b9e: 97ba add a5,a5,a4 + 80207ba0: 00978c23 sb s1,24(a5) if(c == '\n' || c == C('D') || cons.e == cons.r+INPUT_BUF){ - 80207be4: 47a9 li a5,10 - 80207be6: 0cf48563 beq s1,a5,80207cb0 <consoleintr+0x178> - 80207bea: 4791 li a5,4 - 80207bec: 0cf48263 beq s1,a5,80207cb0 <consoleintr+0x178> - 80207bf0: 00030797 auipc a5,0x30 - 80207bf4: 8287a783 lw a5,-2008(a5) # 80237418 <cons+0x98> - 80207bf8: 0807879b addiw a5,a5,128 - 80207bfc: f6f61ce3 bne a2,a5,80207b74 <consoleintr+0x3c> + 80207ba4: 47a9 li a5,10 + 80207ba6: 0cf48563 beq s1,a5,80207c70 <consoleintr+0x178> + 80207baa: 4791 li a5,4 + 80207bac: 0cf48263 beq s1,a5,80207c70 <consoleintr+0x178> + 80207bb0: 00030797 auipc a5,0x30 + 80207bb4: 8687a783 lw a5,-1944(a5) # 80237418 <cons+0x98> + 80207bb8: 0807879b addiw a5,a5,128 + 80207bbc: f6f61ce3 bne a2,a5,80207b34 <consoleintr+0x3c> cons.buf[cons.e++ % INPUT_BUF] = c; - 80207c00: 863e mv a2,a5 - 80207c02: a07d j 80207cb0 <consoleintr+0x178> + 80207bc0: 863e mv a2,a5 + 80207bc2: a07d j 80207c70 <consoleintr+0x178> while(cons.e != cons.w && - 80207c04: 0002f717 auipc a4,0x2f - 80207c08: 77c70713 addi a4,a4,1916 # 80237380 <cons> - 80207c0c: 0a072783 lw a5,160(a4) - 80207c10: 09c72703 lw a4,156(a4) + 80207bc4: 0002f717 auipc a4,0x2f + 80207bc8: 7bc70713 addi a4,a4,1980 # 80237380 <cons> + 80207bcc: 0a072783 lw a5,160(a4) + 80207bd0: 09c72703 lw a4,156(a4) cons.buf[(cons.e-1) % INPUT_BUF] != '\n'){ - 80207c14: 0002f497 auipc s1,0x2f - 80207c18: 76c48493 addi s1,s1,1900 # 80237380 <cons> + 80207bd4: 0002f497 auipc s1,0x2f + 80207bd8: 7ac48493 addi s1,s1,1964 # 80237380 <cons> while(cons.e != cons.w && - 80207c1c: 4929 li s2,10 - 80207c1e: f4f70be3 beq a4,a5,80207b74 <consoleintr+0x3c> + 80207bdc: 4929 li s2,10 + 80207bde: f4f70be3 beq a4,a5,80207b34 <consoleintr+0x3c> cons.buf[(cons.e-1) % INPUT_BUF] != '\n'){ - 80207c22: 37fd addiw a5,a5,-1 - 80207c24: 07f7f713 andi a4,a5,127 - 80207c28: 9726 add a4,a4,s1 + 80207be2: 37fd addiw a5,a5,-1 + 80207be4: 07f7f713 andi a4,a5,127 + 80207be8: 9726 add a4,a4,s1 while(cons.e != cons.w && - 80207c2a: 01874703 lbu a4,24(a4) - 80207c2e: f52703e3 beq a4,s2,80207b74 <consoleintr+0x3c> + 80207bea: 01874703 lbu a4,24(a4) + 80207bee: f52703e3 beq a4,s2,80207b34 <consoleintr+0x3c> cons.e--; - 80207c32: 0af4a023 sw a5,160(s1) + 80207bf2: 0af4a023 sw a5,160(s1) consputc(BACKSPACE); - 80207c36: 10000513 li a0,256 - 80207c3a: 00000097 auipc ra,0x0 - 80207c3e: ec0080e7 jalr -320(ra) # 80207afa <consputc> + 80207bf6: 10000513 li a0,256 + 80207bfa: 00000097 auipc ra,0x0 + 80207bfe: ec0080e7 jalr -320(ra) # 80207aba <consputc> while(cons.e != cons.w && - 80207c42: 0a04a783 lw a5,160(s1) - 80207c46: 09c4a703 lw a4,156(s1) - 80207c4a: fcf71ce3 bne a4,a5,80207c22 <consoleintr+0xea> - 80207c4e: b71d j 80207b74 <consoleintr+0x3c> + 80207c02: 0a04a783 lw a5,160(s1) + 80207c06: 09c4a703 lw a4,156(s1) + 80207c0a: fcf71ce3 bne a4,a5,80207be2 <consoleintr+0xea> + 80207c0e: b71d j 80207b34 <consoleintr+0x3c> if(cons.e != cons.w){ - 80207c50: 0002f717 auipc a4,0x2f - 80207c54: 73070713 addi a4,a4,1840 # 80237380 <cons> - 80207c58: 0a072783 lw a5,160(a4) - 80207c5c: 09c72703 lw a4,156(a4) - 80207c60: f0f70ae3 beq a4,a5,80207b74 <consoleintr+0x3c> + 80207c10: 0002f717 auipc a4,0x2f + 80207c14: 77070713 addi a4,a4,1904 # 80237380 <cons> + 80207c18: 0a072783 lw a5,160(a4) + 80207c1c: 09c72703 lw a4,156(a4) + 80207c20: f0f70ae3 beq a4,a5,80207b34 <consoleintr+0x3c> cons.e--; - 80207c64: 37fd addiw a5,a5,-1 - 80207c66: 0002f717 auipc a4,0x2f - 80207c6a: 7af72d23 sw a5,1978(a4) # 80237420 <cons+0xa0> + 80207c24: 37fd addiw a5,a5,-1 + 80207c26: 0002f717 auipc a4,0x2f + 80207c2a: 7ef72d23 sw a5,2042(a4) # 80237420 <cons+0xa0> consputc(BACKSPACE); - 80207c6e: 10000513 li a0,256 - 80207c72: 00000097 auipc ra,0x0 - 80207c76: e88080e7 jalr -376(ra) # 80207afa <consputc> - 80207c7a: bded j 80207b74 <consoleintr+0x3c> + 80207c2e: 10000513 li a0,256 + 80207c32: 00000097 auipc ra,0x0 + 80207c36: e88080e7 jalr -376(ra) # 80207aba <consputc> + 80207c3a: bded j 80207b34 <consoleintr+0x3c> if(c != 0 && cons.e-cons.r < INPUT_BUF){ - 80207c7c: ee048ce3 beqz s1,80207b74 <consoleintr+0x3c> - 80207c80: bf21 j 80207b98 <consoleintr+0x60> + 80207c3c: ee048ce3 beqz s1,80207b34 <consoleintr+0x3c> + 80207c40: bf21 j 80207b58 <consoleintr+0x60> consputc(c); - 80207c82: 4529 li a0,10 - 80207c84: 00000097 auipc ra,0x0 - 80207c88: e76080e7 jalr -394(ra) # 80207afa <consputc> + 80207c42: 4529 li a0,10 + 80207c44: 00000097 auipc ra,0x0 + 80207c48: e76080e7 jalr -394(ra) # 80207aba <consputc> cons.buf[cons.e++ % INPUT_BUF] = c; - 80207c8c: 0002f797 auipc a5,0x2f - 80207c90: 6f478793 addi a5,a5,1780 # 80237380 <cons> - 80207c94: 0a07a703 lw a4,160(a5) - 80207c98: 0017069b addiw a3,a4,1 - 80207c9c: 0006861b sext.w a2,a3 - 80207ca0: 0ad7a023 sw a3,160(a5) - 80207ca4: 07f77713 andi a4,a4,127 - 80207ca8: 97ba add a5,a5,a4 - 80207caa: 4729 li a4,10 - 80207cac: 00e78c23 sb a4,24(a5) + 80207c4c: 0002f797 auipc a5,0x2f + 80207c50: 73478793 addi a5,a5,1844 # 80237380 <cons> + 80207c54: 0a07a703 lw a4,160(a5) + 80207c58: 0017069b addiw a3,a4,1 + 80207c5c: 0006861b sext.w a2,a3 + 80207c60: 0ad7a023 sw a3,160(a5) + 80207c64: 07f77713 andi a4,a4,127 + 80207c68: 97ba add a5,a5,a4 + 80207c6a: 4729 li a4,10 + 80207c6c: 00e78c23 sb a4,24(a5) cons.w = cons.e; - 80207cb0: 0002f797 auipc a5,0x2f - 80207cb4: 76c7a623 sw a2,1900(a5) # 8023741c <cons+0x9c> + 80207c70: 0002f797 auipc a5,0x2f + 80207c74: 7ac7a623 sw a2,1964(a5) # 8023741c <cons+0x9c> wakeup(&cons.r); - 80207cb8: 0002f517 auipc a0,0x2f - 80207cbc: 76050513 addi a0,a0,1888 # 80237418 <cons+0x98> - 80207cc0: ffffb097 auipc ra,0xffffb - 80207cc4: a40080e7 jalr -1472(ra) # 80202700 <wakeup> - 80207cc8: b575 j 80207b74 <consoleintr+0x3c> + 80207c78: 0002f517 auipc a0,0x2f + 80207c7c: 7a050513 addi a0,a0,1952 # 80237418 <cons+0x98> + 80207c80: ffffb097 auipc ra,0xffffb + 80207c84: a7a080e7 jalr -1414(ra) # 802026fa <wakeup> + 80207c88: b575 j 80207b34 <consoleintr+0x3c> -0000000080207cca <consoleinit>: +0000000080207c8a <consoleinit>: void consoleinit(void) { - 80207cca: 1101 addi sp,sp,-32 - 80207ccc: ec06 sd ra,24(sp) - 80207cce: e822 sd s0,16(sp) - 80207cd0: e426 sd s1,8(sp) - 80207cd2: 1000 addi s0,sp,32 + 80207c8a: 1101 addi sp,sp,-32 + 80207c8c: ec06 sd ra,24(sp) + 80207c8e: e822 sd s0,16(sp) + 80207c90: e426 sd s1,8(sp) + 80207c92: 1000 addi s0,sp,32 initlock(&cons.lock, "cons"); - 80207cd4: 0002f497 auipc s1,0x2f - 80207cd8: 6ac48493 addi s1,s1,1708 # 80237380 <cons> - 80207cdc: 00003597 auipc a1,0x3 - 80207ce0: 1e458593 addi a1,a1,484 # 8020aec0 <digits+0xb40> - 80207ce4: 8526 mv a0,s1 - 80207ce6: ffff9097 auipc ra,0xffff9 - 80207cea: 99c080e7 jalr -1636(ra) # 80200682 <initlock> + 80207c94: 0002f497 auipc s1,0x2f + 80207c98: 6ec48493 addi s1,s1,1772 # 80237380 <cons> + 80207c9c: 00003597 auipc a1,0x3 + 80207ca0: 21c58593 addi a1,a1,540 # 8020aeb8 <digits+0xb38> + 80207ca4: 8526 mv a0,s1 + 80207ca6: ffff9097 auipc ra,0xffff9 + 80207caa: 9dc080e7 jalr -1572(ra) # 80200682 <initlock> cons.e = cons.w = cons.r = 0; - 80207cee: 0804ac23 sw zero,152(s1) - 80207cf2: 0804ae23 sw zero,156(s1) - 80207cf6: 0a04a023 sw zero,160(s1) + 80207cae: 0804ac23 sw zero,152(s1) + 80207cb2: 0804ae23 sw zero,156(s1) + 80207cb6: 0a04a023 sw zero,160(s1) // connect read and write system calls // to consoleread and consolewrite. devsw[CONSOLE].read = consoleread; - 80207cfa: 00005797 auipc a5,0x5 - 80207cfe: 3767b783 ld a5,886(a5) # 8020d070 <_GLOBAL_OFFSET_TABLE_+0x58> - 80207d02: 00000717 auipc a4,0x0 - 80207d06: ce070713 addi a4,a4,-800 # 802079e2 <consoleread> - 80207d0a: eb98 sd a4,16(a5) + 80207cba: 00005797 auipc a5,0x5 + 80207cbe: 3b67b783 ld a5,950(a5) # 8020d070 <_GLOBAL_OFFSET_TABLE_+0x58> + 80207cc2: 00000717 auipc a4,0x0 + 80207cc6: ce070713 addi a4,a4,-800 # 802079a2 <consoleread> + 80207cca: eb98 sd a4,16(a5) devsw[CONSOLE].write = consolewrite; - 80207d0c: 00000717 auipc a4,0x0 - 80207d10: c4870713 addi a4,a4,-952 # 80207954 <consolewrite> - 80207d14: ef98 sd a4,24(a5) + 80207ccc: 00000717 auipc a4,0x0 + 80207cd0: c4870713 addi a4,a4,-952 # 80207914 <consolewrite> + 80207cd4: ef98 sd a4,24(a5) } - 80207d16: 60e2 ld ra,24(sp) - 80207d18: 6442 ld s0,16(sp) - 80207d1a: 64a2 ld s1,8(sp) - 80207d1c: 6105 addi sp,sp,32 - 80207d1e: 8082 ret + 80207cd6: 60e2 ld ra,24(sp) + 80207cd8: 6442 ld s0,16(sp) + 80207cda: 64a2 ld s1,8(sp) + 80207cdc: 6105 addi sp,sp,32 + 80207cde: 8082 ret -0000000080207d20 <sys_shutdown>: +0000000080207ce0 <sys_shutdown>: #include "include/types.h" #include "include/sbi.h" uint64 sys_shutdown() { - 80207d20: 1141 addi sp,sp,-16 - 80207d22: e422 sd s0,8(sp) - 80207d24: 0800 addi s0,sp,16 + 80207ce0: 1141 addi sp,sp,-16 + 80207ce2: e422 sd s0,8(sp) + 80207ce4: 0800 addi s0,sp,16 SBI_CALL_0(SBI_SHUTDOWN); - 80207d26: 4501 li a0,0 - 80207d28: 4581 li a1,0 - 80207d2a: 4601 li a2,0 - 80207d2c: 4681 li a3,0 - 80207d2e: 48a1 li a7,8 - 80207d30: 00000073 ecall + 80207ce6: 4501 li a0,0 + 80207ce8: 4581 li a1,0 + 80207cea: 4601 li a2,0 + 80207cec: 4681 li a3,0 + 80207cee: 48a1 li a7,8 + 80207cf0: 00000073 ecall sbi_shutdown(); return 0; - 80207d34: 4501 li a0,0 - 80207d36: 6422 ld s0,8(sp) - 80207d38: 0141 addi sp,sp,16 - 80207d3a: 8082 ret + 80207cf4: 4501 li a0,0 + 80207cf6: 6422 ld s0,8(sp) + 80207cf8: 0141 addi sp,sp,16 + 80207cfa: 8082 ret -0000000080207d3c <free_desc>: +0000000080207cfc <free_desc>: } // mark a descriptor as free. static void free_desc(int i) { - 80207d3c: 1141 addi sp,sp,-16 - 80207d3e: e406 sd ra,8(sp) - 80207d40: e022 sd s0,0(sp) - 80207d42: 0800 addi s0,sp,16 + 80207cfc: 1141 addi sp,sp,-16 + 80207cfe: e406 sd ra,8(sp) + 80207d00: e022 sd s0,0(sp) + 80207d02: 0800 addi s0,sp,16 if(i >= NUM) - 80207d44: 479d li a5,7 - 80207d46: 04a7cb63 blt a5,a0,80207d9c <free_desc+0x60> + 80207d04: 479d li a5,7 + 80207d06: 04a7cb63 blt a5,a0,80207d5c <free_desc+0x60> panic("virtio_disk_intr 1"); if(disk.free[i]) - 80207d4a: 00030717 auipc a4,0x30 - 80207d4e: 2b670713 addi a4,a4,694 # 80238000 <disk> - 80207d52: 972a add a4,a4,a0 - 80207d54: 6789 lui a5,0x2 - 80207d56: 97ba add a5,a5,a4 - 80207d58: 0187c783 lbu a5,24(a5) # 2018 <_entry-0x801fdfe8> - 80207d5c: eba1 bnez a5,80207dac <free_desc+0x70> + 80207d0a: 00030717 auipc a4,0x30 + 80207d0e: 2f670713 addi a4,a4,758 # 80238000 <disk> + 80207d12: 972a add a4,a4,a0 + 80207d14: 6789 lui a5,0x2 + 80207d16: 97ba add a5,a5,a4 + 80207d18: 0187c783 lbu a5,24(a5) # 2018 <_entry-0x801fdfe8> + 80207d1c: eba1 bnez a5,80207d6c <free_desc+0x70> panic("virtio_disk_intr 2"); disk.desc[i].addr = 0; - 80207d5e: 00451713 slli a4,a0,0x4 - 80207d62: 00032797 auipc a5,0x32 - 80207d66: 29e7b783 ld a5,670(a5) # 8023a000 <disk+0x2000> - 80207d6a: 97ba add a5,a5,a4 - 80207d6c: 0007b023 sd zero,0(a5) + 80207d1e: 00451713 slli a4,a0,0x4 + 80207d22: 00032797 auipc a5,0x32 + 80207d26: 2de7b783 ld a5,734(a5) # 8023a000 <disk+0x2000> + 80207d2a: 97ba add a5,a5,a4 + 80207d2c: 0007b023 sd zero,0(a5) disk.free[i] = 1; - 80207d70: 00030717 auipc a4,0x30 - 80207d74: 29070713 addi a4,a4,656 # 80238000 <disk> - 80207d78: 972a add a4,a4,a0 - 80207d7a: 6789 lui a5,0x2 - 80207d7c: 97ba add a5,a5,a4 - 80207d7e: 4705 li a4,1 - 80207d80: 00e78c23 sb a4,24(a5) # 2018 <_entry-0x801fdfe8> + 80207d30: 00030717 auipc a4,0x30 + 80207d34: 2d070713 addi a4,a4,720 # 80238000 <disk> + 80207d38: 972a add a4,a4,a0 + 80207d3a: 6789 lui a5,0x2 + 80207d3c: 97ba add a5,a5,a4 + 80207d3e: 4705 li a4,1 + 80207d40: 00e78c23 sb a4,24(a5) # 2018 <_entry-0x801fdfe8> wakeup(&disk.free[0]); - 80207d84: 00032517 auipc a0,0x32 - 80207d88: 29450513 addi a0,a0,660 # 8023a018 <disk+0x2018> - 80207d8c: ffffb097 auipc ra,0xffffb - 80207d90: 974080e7 jalr -1676(ra) # 80202700 <wakeup> + 80207d44: 00032517 auipc a0,0x32 + 80207d48: 2d450513 addi a0,a0,724 # 8023a018 <disk+0x2018> + 80207d4c: ffffb097 auipc ra,0xffffb + 80207d50: 9ae080e7 jalr -1618(ra) # 802026fa <wakeup> } - 80207d94: 60a2 ld ra,8(sp) - 80207d96: 6402 ld s0,0(sp) - 80207d98: 0141 addi sp,sp,16 - 80207d9a: 8082 ret + 80207d54: 60a2 ld ra,8(sp) + 80207d56: 6402 ld s0,0(sp) + 80207d58: 0141 addi sp,sp,16 + 80207d5a: 8082 ret panic("virtio_disk_intr 1"); - 80207d9c: 00003517 auipc a0,0x3 - 80207da0: 12c50513 addi a0,a0,300 # 8020aec8 <digits+0xb48> - 80207da4: ffff8097 auipc ra,0xffff8 - 80207da8: 3a0080e7 jalr 928(ra) # 80200144 <panic> + 80207d5c: 00003517 auipc a0,0x3 + 80207d60: 16450513 addi a0,a0,356 # 8020aec0 <digits+0xb40> + 80207d64: ffff8097 auipc ra,0xffff8 + 80207d68: 3e0080e7 jalr 992(ra) # 80200144 <panic> panic("virtio_disk_intr 2"); - 80207dac: 00003517 auipc a0,0x3 - 80207db0: 13450513 addi a0,a0,308 # 8020aee0 <digits+0xb60> - 80207db4: ffff8097 auipc ra,0xffff8 - 80207db8: 390080e7 jalr 912(ra) # 80200144 <panic> + 80207d6c: 00003517 auipc a0,0x3 + 80207d70: 16c50513 addi a0,a0,364 # 8020aed8 <digits+0xb58> + 80207d74: ffff8097 auipc ra,0xffff8 + 80207d78: 3d0080e7 jalr 976(ra) # 80200144 <panic> -0000000080207dbc <virtio_disk_init>: +0000000080207d7c <virtio_disk_init>: { - 80207dbc: 1141 addi sp,sp,-16 - 80207dbe: e406 sd ra,8(sp) - 80207dc0: e022 sd s0,0(sp) - 80207dc2: 0800 addi s0,sp,16 + 80207d7c: 1141 addi sp,sp,-16 + 80207d7e: e406 sd ra,8(sp) + 80207d80: e022 sd s0,0(sp) + 80207d82: 0800 addi s0,sp,16 initlock(&disk.vdisk_lock, "virtio_disk"); - 80207dc4: 00003597 auipc a1,0x3 - 80207dc8: 13458593 addi a1,a1,308 # 8020aef8 <digits+0xb78> - 80207dcc: 00032517 auipc a0,0x32 - 80207dd0: 2dc50513 addi a0,a0,732 # 8023a0a8 <disk+0x20a8> - 80207dd4: ffff9097 auipc ra,0xffff9 - 80207dd8: 8ae080e7 jalr -1874(ra) # 80200682 <initlock> + 80207d84: 00003597 auipc a1,0x3 + 80207d88: 16c58593 addi a1,a1,364 # 8020aef0 <digits+0xb70> + 80207d8c: 00032517 auipc a0,0x32 + 80207d90: 31c50513 addi a0,a0,796 # 8023a0a8 <disk+0x20a8> + 80207d94: ffff9097 auipc ra,0xffff9 + 80207d98: 8ee080e7 jalr -1810(ra) # 80200682 <initlock> if(*R(VIRTIO_MMIO_MAGIC_VALUE) != 0x74726976 || - 80207ddc: 03f107b7 lui a5,0x3f10 - 80207de0: 0785 addi a5,a5,1 # 3f10001 <_entry-0x7c2effff> - 80207de2: 07b2 slli a5,a5,0xc - 80207de4: 4398 lw a4,0(a5) - 80207de6: 2701 sext.w a4,a4 - 80207de8: 747277b7 lui a5,0x74727 - 80207dec: 97678793 addi a5,a5,-1674 # 74726976 <_entry-0xbad968a> - 80207df0: 12f71163 bne a4,a5,80207f12 <virtio_disk_init+0x156> + 80207d9c: 03f107b7 lui a5,0x3f10 + 80207da0: 0785 addi a5,a5,1 # 3f10001 <_entry-0x7c2effff> + 80207da2: 07b2 slli a5,a5,0xc + 80207da4: 4398 lw a4,0(a5) + 80207da6: 2701 sext.w a4,a4 + 80207da8: 747277b7 lui a5,0x74727 + 80207dac: 97678793 addi a5,a5,-1674 # 74726976 <_entry-0xbad968a> + 80207db0: 12f71163 bne a4,a5,80207ed2 <virtio_disk_init+0x156> *R(VIRTIO_MMIO_VERSION) != 1 || - 80207df4: 00003797 auipc a5,0x3 - 80207df8: 18c7b783 ld a5,396(a5) # 8020af80 <digits+0xc00> - 80207dfc: 439c lw a5,0(a5) - 80207dfe: 2781 sext.w a5,a5 + 80207db4: 00003797 auipc a5,0x3 + 80207db8: 1c47b783 ld a5,452(a5) # 8020af78 <digits+0xbf8> + 80207dbc: 439c lw a5,0(a5) + 80207dbe: 2781 sext.w a5,a5 if(*R(VIRTIO_MMIO_MAGIC_VALUE) != 0x74726976 || - 80207e00: 4705 li a4,1 - 80207e02: 10e79863 bne a5,a4,80207f12 <virtio_disk_init+0x156> + 80207dc0: 4705 li a4,1 + 80207dc2: 10e79863 bne a5,a4,80207ed2 <virtio_disk_init+0x156> *R(VIRTIO_MMIO_DEVICE_ID) != 2 || - 80207e06: 00003797 auipc a5,0x3 - 80207e0a: 1827b783 ld a5,386(a5) # 8020af88 <digits+0xc08> - 80207e0e: 439c lw a5,0(a5) - 80207e10: 2781 sext.w a5,a5 + 80207dc6: 00003797 auipc a5,0x3 + 80207dca: 1ba7b783 ld a5,442(a5) # 8020af80 <digits+0xc00> + 80207dce: 439c lw a5,0(a5) + 80207dd0: 2781 sext.w a5,a5 *R(VIRTIO_MMIO_VERSION) != 1 || - 80207e12: 4709 li a4,2 - 80207e14: 0ee79f63 bne a5,a4,80207f12 <virtio_disk_init+0x156> + 80207dd2: 4709 li a4,2 + 80207dd4: 0ee79f63 bne a5,a4,80207ed2 <virtio_disk_init+0x156> *R(VIRTIO_MMIO_VENDOR_ID) != 0x554d4551){ - 80207e18: 00003797 auipc a5,0x3 - 80207e1c: 1787b783 ld a5,376(a5) # 8020af90 <digits+0xc10> - 80207e20: 4398 lw a4,0(a5) - 80207e22: 2701 sext.w a4,a4 + 80207dd8: 00003797 auipc a5,0x3 + 80207ddc: 1b07b783 ld a5,432(a5) # 8020af88 <digits+0xc08> + 80207de0: 4398 lw a4,0(a5) + 80207de2: 2701 sext.w a4,a4 *R(VIRTIO_MMIO_DEVICE_ID) != 2 || - 80207e24: 554d47b7 lui a5,0x554d4 - 80207e28: 55178793 addi a5,a5,1361 # 554d4551 <_entry-0x2ad2baaf> - 80207e2c: 0ef71363 bne a4,a5,80207f12 <virtio_disk_init+0x156> + 80207de4: 554d47b7 lui a5,0x554d4 + 80207de8: 55178793 addi a5,a5,1361 # 554d4551 <_entry-0x2ad2baaf> + 80207dec: 0ef71363 bne a4,a5,80207ed2 <virtio_disk_init+0x156> *R(VIRTIO_MMIO_STATUS) = status; - 80207e30: 00003797 auipc a5,0x3 - 80207e34: 1687b783 ld a5,360(a5) # 8020af98 <digits+0xc18> - 80207e38: 4705 li a4,1 - 80207e3a: c398 sw a4,0(a5) + 80207df0: 00003797 auipc a5,0x3 + 80207df4: 1a07b783 ld a5,416(a5) # 8020af90 <digits+0xc10> + 80207df8: 4705 li a4,1 + 80207dfa: c398 sw a4,0(a5) *R(VIRTIO_MMIO_STATUS) = status; - 80207e3c: 470d li a4,3 - 80207e3e: c398 sw a4,0(a5) + 80207dfc: 470d li a4,3 + 80207dfe: c398 sw a4,0(a5) uint64 features = *R(VIRTIO_MMIO_DEVICE_FEATURES); - 80207e40: 00003717 auipc a4,0x3 - 80207e44: 16073703 ld a4,352(a4) # 8020afa0 <digits+0xc20> - 80207e48: 4318 lw a4,0(a4) + 80207e00: 00003717 auipc a4,0x3 + 80207e04: 19873703 ld a4,408(a4) # 8020af98 <digits+0xc18> + 80207e08: 4318 lw a4,0(a4) *R(VIRTIO_MMIO_DRIVER_FEATURES) = features; - 80207e4a: c7ffe6b7 lui a3,0xc7ffe - 80207e4e: 75f68693 addi a3,a3,1887 # ffffffffc7ffe75f <ebss_clear+0xffffffff47dc375f> - 80207e52: 8f75 and a4,a4,a3 - 80207e54: 00003697 auipc a3,0x3 - 80207e58: 1546b683 ld a3,340(a3) # 8020afa8 <digits+0xc28> - 80207e5c: c298 sw a4,0(a3) + 80207e0a: c7ffe6b7 lui a3,0xc7ffe + 80207e0e: 75f68693 addi a3,a3,1887 # ffffffffc7ffe75f <ebss_clear+0xffffffff47dc375f> + 80207e12: 8f75 and a4,a4,a3 + 80207e14: 00003697 auipc a3,0x3 + 80207e18: 18c6b683 ld a3,396(a3) # 8020afa0 <digits+0xc20> + 80207e1c: c298 sw a4,0(a3) *R(VIRTIO_MMIO_STATUS) = status; - 80207e5e: 472d li a4,11 - 80207e60: c398 sw a4,0(a5) + 80207e1e: 472d li a4,11 + 80207e20: c398 sw a4,0(a5) *R(VIRTIO_MMIO_STATUS) = status; - 80207e62: 473d li a4,15 - 80207e64: c398 sw a4,0(a5) + 80207e22: 473d li a4,15 + 80207e24: c398 sw a4,0(a5) *R(VIRTIO_MMIO_GUEST_PAGE_SIZE) = PGSIZE; - 80207e66: 00003797 auipc a5,0x3 - 80207e6a: 14a7b783 ld a5,330(a5) # 8020afb0 <digits+0xc30> - 80207e6e: 6705 lui a4,0x1 - 80207e70: c398 sw a4,0(a5) + 80207e26: 00003797 auipc a5,0x3 + 80207e2a: 1827b783 ld a5,386(a5) # 8020afa8 <digits+0xc28> + 80207e2e: 6705 lui a4,0x1 + 80207e30: c398 sw a4,0(a5) *R(VIRTIO_MMIO_QUEUE_SEL) = 0; - 80207e72: 00003797 auipc a5,0x3 - 80207e76: 1467b783 ld a5,326(a5) # 8020afb8 <digits+0xc38> - 80207e7a: 0007a023 sw zero,0(a5) + 80207e32: 00003797 auipc a5,0x3 + 80207e36: 17e7b783 ld a5,382(a5) # 8020afb0 <digits+0xc30> + 80207e3a: 0007a023 sw zero,0(a5) uint32 max = *R(VIRTIO_MMIO_QUEUE_NUM_MAX); - 80207e7e: 00003797 auipc a5,0x3 - 80207e82: 1427b783 ld a5,322(a5) # 8020afc0 <digits+0xc40> - 80207e86: 439c lw a5,0(a5) - 80207e88: 2781 sext.w a5,a5 + 80207e3e: 00003797 auipc a5,0x3 + 80207e42: 17a7b783 ld a5,378(a5) # 8020afb8 <digits+0xc38> + 80207e46: 439c lw a5,0(a5) + 80207e48: 2781 sext.w a5,a5 if(max == 0) - 80207e8a: cfc1 beqz a5,80207f22 <virtio_disk_init+0x166> + 80207e4a: cfc1 beqz a5,80207ee2 <virtio_disk_init+0x166> if(max < NUM) - 80207e8c: 471d li a4,7 - 80207e8e: 0af77263 bgeu a4,a5,80207f32 <virtio_disk_init+0x176> + 80207e4c: 471d li a4,7 + 80207e4e: 0af77263 bgeu a4,a5,80207ef2 <virtio_disk_init+0x176> *R(VIRTIO_MMIO_QUEUE_NUM) = NUM; - 80207e92: 00003797 auipc a5,0x3 - 80207e96: 1367b783 ld a5,310(a5) # 8020afc8 <digits+0xc48> - 80207e9a: 4721 li a4,8 - 80207e9c: c398 sw a4,0(a5) + 80207e52: 00003797 auipc a5,0x3 + 80207e56: 16e7b783 ld a5,366(a5) # 8020afc0 <digits+0xc40> + 80207e5a: 4721 li a4,8 + 80207e5c: c398 sw a4,0(a5) memset(disk.pages, 0, sizeof(disk.pages)); - 80207e9e: 6609 lui a2,0x2 - 80207ea0: 4581 li a1,0 - 80207ea2: 00030517 auipc a0,0x30 - 80207ea6: 15e50513 addi a0,a0,350 # 80238000 <disk> - 80207eaa: ffff9097 auipc ra,0xffff9 - 80207eae: 8b8080e7 jalr -1864(ra) # 80200762 <memset> + 80207e5e: 6609 lui a2,0x2 + 80207e60: 4581 li a1,0 + 80207e62: 00030517 auipc a0,0x30 + 80207e66: 19e50513 addi a0,a0,414 # 80238000 <disk> + 80207e6a: ffff9097 auipc ra,0xffff9 + 80207e6e: 8f8080e7 jalr -1800(ra) # 80200762 <memset> *R(VIRTIO_MMIO_QUEUE_PFN) = ((uint64)disk.pages) >> PGSHIFT; - 80207eb2: 00030717 auipc a4,0x30 - 80207eb6: 14e70713 addi a4,a4,334 # 80238000 <disk> - 80207eba: 00c75793 srli a5,a4,0xc - 80207ebe: 2781 sext.w a5,a5 - 80207ec0: 00003697 auipc a3,0x3 - 80207ec4: 1106b683 ld a3,272(a3) # 8020afd0 <digits+0xc50> - 80207ec8: c29c sw a5,0(a3) + 80207e72: 00030717 auipc a4,0x30 + 80207e76: 18e70713 addi a4,a4,398 # 80238000 <disk> + 80207e7a: 00c75793 srli a5,a4,0xc + 80207e7e: 2781 sext.w a5,a5 + 80207e80: 00003697 auipc a3,0x3 + 80207e84: 1486b683 ld a3,328(a3) # 8020afc8 <digits+0xc48> + 80207e88: c29c sw a5,0(a3) disk.desc = (struct VRingDesc *) disk.pages; - 80207eca: 00032797 auipc a5,0x32 - 80207ece: 13678793 addi a5,a5,310 # 8023a000 <disk+0x2000> - 80207ed2: e398 sd a4,0(a5) + 80207e8a: 00032797 auipc a5,0x32 + 80207e8e: 17678793 addi a5,a5,374 # 8023a000 <disk+0x2000> + 80207e92: e398 sd a4,0(a5) disk.avail = (uint16*)(((char*)disk.desc) + NUM*sizeof(struct VRingDesc)); - 80207ed4: 00030717 auipc a4,0x30 - 80207ed8: 1ac70713 addi a4,a4,428 # 80238080 <disk+0x80> - 80207edc: e798 sd a4,8(a5) + 80207e94: 00030717 auipc a4,0x30 + 80207e98: 1ec70713 addi a4,a4,492 # 80238080 <disk+0x80> + 80207e9c: e798 sd a4,8(a5) disk.used = (struct UsedArea *) (disk.pages + PGSIZE); - 80207ede: 00031717 auipc a4,0x31 - 80207ee2: 12270713 addi a4,a4,290 # 80239000 <disk+0x1000> - 80207ee6: eb98 sd a4,16(a5) + 80207e9e: 00031717 auipc a4,0x31 + 80207ea2: 16270713 addi a4,a4,354 # 80239000 <disk+0x1000> + 80207ea6: eb98 sd a4,16(a5) disk.free[i] = 1; - 80207ee8: 4705 li a4,1 - 80207eea: 00e78c23 sb a4,24(a5) - 80207eee: 00e78ca3 sb a4,25(a5) - 80207ef2: 00e78d23 sb a4,26(a5) - 80207ef6: 00e78da3 sb a4,27(a5) - 80207efa: 00e78e23 sb a4,28(a5) - 80207efe: 00e78ea3 sb a4,29(a5) - 80207f02: 00e78f23 sb a4,30(a5) - 80207f06: 00e78fa3 sb a4,31(a5) + 80207ea8: 4705 li a4,1 + 80207eaa: 00e78c23 sb a4,24(a5) + 80207eae: 00e78ca3 sb a4,25(a5) + 80207eb2: 00e78d23 sb a4,26(a5) + 80207eb6: 00e78da3 sb a4,27(a5) + 80207eba: 00e78e23 sb a4,28(a5) + 80207ebe: 00e78ea3 sb a4,29(a5) + 80207ec2: 00e78f23 sb a4,30(a5) + 80207ec6: 00e78fa3 sb a4,31(a5) } - 80207f0a: 60a2 ld ra,8(sp) - 80207f0c: 6402 ld s0,0(sp) - 80207f0e: 0141 addi sp,sp,16 - 80207f10: 8082 ret + 80207eca: 60a2 ld ra,8(sp) + 80207ecc: 6402 ld s0,0(sp) + 80207ece: 0141 addi sp,sp,16 + 80207ed0: 8082 ret panic("could not find virtio disk"); - 80207f12: 00003517 auipc a0,0x3 - 80207f16: ff650513 addi a0,a0,-10 # 8020af08 <digits+0xb88> - 80207f1a: ffff8097 auipc ra,0xffff8 - 80207f1e: 22a080e7 jalr 554(ra) # 80200144 <panic> + 80207ed2: 00003517 auipc a0,0x3 + 80207ed6: 02e50513 addi a0,a0,46 # 8020af00 <digits+0xb80> + 80207eda: ffff8097 auipc ra,0xffff8 + 80207ede: 26a080e7 jalr 618(ra) # 80200144 <panic> panic("virtio disk has no queue 0"); - 80207f22: 00003517 auipc a0,0x3 - 80207f26: 00650513 addi a0,a0,6 # 8020af28 <digits+0xba8> - 80207f2a: ffff8097 auipc ra,0xffff8 - 80207f2e: 21a080e7 jalr 538(ra) # 80200144 <panic> + 80207ee2: 00003517 auipc a0,0x3 + 80207ee6: 03e50513 addi a0,a0,62 # 8020af20 <digits+0xba0> + 80207eea: ffff8097 auipc ra,0xffff8 + 80207eee: 25a080e7 jalr 602(ra) # 80200144 <panic> panic("virtio disk max queue too short"); - 80207f32: 00003517 auipc a0,0x3 - 80207f36: 01650513 addi a0,a0,22 # 8020af48 <digits+0xbc8> - 80207f3a: ffff8097 auipc ra,0xffff8 - 80207f3e: 20a080e7 jalr 522(ra) # 80200144 <panic> + 80207ef2: 00003517 auipc a0,0x3 + 80207ef6: 04e50513 addi a0,a0,78 # 8020af40 <digits+0xbc0> + 80207efa: ffff8097 auipc ra,0xffff8 + 80207efe: 24a080e7 jalr 586(ra) # 80200144 <panic> -0000000080207f42 <virtio_disk_rw>: +0000000080207f02 <virtio_disk_rw>: return 0; } void virtio_disk_rw(struct buf *b, int write) { - 80207f42: 7175 addi sp,sp,-144 - 80207f44: e506 sd ra,136(sp) - 80207f46: e122 sd s0,128(sp) - 80207f48: fca6 sd s1,120(sp) - 80207f4a: f8ca sd s2,112(sp) - 80207f4c: f4ce sd s3,104(sp) - 80207f4e: f0d2 sd s4,96(sp) - 80207f50: ecd6 sd s5,88(sp) - 80207f52: e8da sd s6,80(sp) - 80207f54: e4de sd s7,72(sp) - 80207f56: e0e2 sd s8,64(sp) - 80207f58: fc66 sd s9,56(sp) - 80207f5a: f86a sd s10,48(sp) - 80207f5c: f46e sd s11,40(sp) - 80207f5e: 0900 addi s0,sp,144 - 80207f60: 8aaa mv s5,a0 - 80207f62: 8cae mv s9,a1 + 80207f02: 7175 addi sp,sp,-144 + 80207f04: e506 sd ra,136(sp) + 80207f06: e122 sd s0,128(sp) + 80207f08: fca6 sd s1,120(sp) + 80207f0a: f8ca sd s2,112(sp) + 80207f0c: f4ce sd s3,104(sp) + 80207f0e: f0d2 sd s4,96(sp) + 80207f10: ecd6 sd s5,88(sp) + 80207f12: e8da sd s6,80(sp) + 80207f14: e4de sd s7,72(sp) + 80207f16: e0e2 sd s8,64(sp) + 80207f18: fc66 sd s9,56(sp) + 80207f1a: f86a sd s10,48(sp) + 80207f1c: f46e sd s11,40(sp) + 80207f1e: 0900 addi s0,sp,144 + 80207f20: 8aaa mv s5,a0 + 80207f22: 8cae mv s9,a1 uint64 sector = b->sectorno; - 80207f64: 00c56d03 lwu s10,12(a0) + 80207f24: 00c56d03 lwu s10,12(a0) acquire(&disk.vdisk_lock); - 80207f68: 00032517 auipc a0,0x32 - 80207f6c: 14050513 addi a0,a0,320 # 8023a0a8 <disk+0x20a8> - 80207f70: ffff8097 auipc ra,0xffff8 - 80207f74: 756080e7 jalr 1878(ra) # 802006c6 <acquire> + 80207f28: 00032517 auipc a0,0x32 + 80207f2c: 18050513 addi a0,a0,384 # 8023a0a8 <disk+0x20a8> + 80207f30: ffff8097 auipc ra,0xffff8 + 80207f34: 796080e7 jalr 1942(ra) # 802006c6 <acquire> for(int i = 0; i < 3; i++){ - 80207f78: 4981 li s3,0 + 80207f38: 4981 li s3,0 for(int i = 0; i < NUM; i++){ - 80207f7a: 44a1 li s1,8 + 80207f3a: 44a1 li s1,8 disk.free[i] = 0; - 80207f7c: 00030c17 auipc s8,0x30 - 80207f80: 084c0c13 addi s8,s8,132 # 80238000 <disk> - 80207f84: 6b89 lui s7,0x2 + 80207f3c: 00030c17 auipc s8,0x30 + 80207f40: 0c4c0c13 addi s8,s8,196 # 80238000 <disk> + 80207f44: 6b89 lui s7,0x2 for(int i = 0; i < 3; i++){ - 80207f86: 4b0d li s6,3 - 80207f88: a0ad j 80207ff2 <virtio_disk_rw+0xb0> + 80207f46: 4b0d li s6,3 + 80207f48: a0ad j 80207fb2 <virtio_disk_rw+0xb0> disk.free[i] = 0; - 80207f8a: 00fc0733 add a4,s8,a5 - 80207f8e: 975e add a4,a4,s7 - 80207f90: 00070c23 sb zero,24(a4) + 80207f4a: 00fc0733 add a4,s8,a5 + 80207f4e: 975e add a4,a4,s7 + 80207f50: 00070c23 sb zero,24(a4) idx[i] = alloc_desc(); - 80207f94: c19c sw a5,0(a1) + 80207f54: c19c sw a5,0(a1) if(idx[i] < 0){ - 80207f96: 0207c563 bltz a5,80207fc0 <virtio_disk_rw+0x7e> + 80207f56: 0207c563 bltz a5,80207f80 <virtio_disk_rw+0x7e> for(int i = 0; i < 3; i++){ - 80207f9a: 2905 addiw s2,s2,1 - 80207f9c: 0611 addi a2,a2,4 # 2004 <_entry-0x801fdffc> - 80207f9e: 19690e63 beq s2,s6,8020813a <virtio_disk_rw+0x1f8> + 80207f5a: 2905 addiw s2,s2,1 + 80207f5c: 0611 addi a2,a2,4 # 2004 <_entry-0x801fdffc> + 80207f5e: 19690e63 beq s2,s6,802080fa <virtio_disk_rw+0x1f8> idx[i] = alloc_desc(); - 80207fa2: 85b2 mv a1,a2 + 80207f62: 85b2 mv a1,a2 for(int i = 0; i < NUM; i++){ - 80207fa4: 00032717 auipc a4,0x32 - 80207fa8: 07470713 addi a4,a4,116 # 8023a018 <disk+0x2018> - 80207fac: 87ce mv a5,s3 + 80207f64: 00032717 auipc a4,0x32 + 80207f68: 0b470713 addi a4,a4,180 # 8023a018 <disk+0x2018> + 80207f6c: 87ce mv a5,s3 if(disk.free[i]){ - 80207fae: 00074683 lbu a3,0(a4) - 80207fb2: fee1 bnez a3,80207f8a <virtio_disk_rw+0x48> + 80207f6e: 00074683 lbu a3,0(a4) + 80207f72: fee1 bnez a3,80207f4a <virtio_disk_rw+0x48> for(int i = 0; i < NUM; i++){ - 80207fb4: 2785 addiw a5,a5,1 - 80207fb6: 0705 addi a4,a4,1 - 80207fb8: fe979be3 bne a5,s1,80207fae <virtio_disk_rw+0x6c> + 80207f74: 2785 addiw a5,a5,1 + 80207f76: 0705 addi a4,a4,1 + 80207f78: fe979be3 bne a5,s1,80207f6e <virtio_disk_rw+0x6c> idx[i] = alloc_desc(); - 80207fbc: 57fd li a5,-1 - 80207fbe: c19c sw a5,0(a1) + 80207f7c: 57fd li a5,-1 + 80207f7e: c19c sw a5,0(a1) for(int j = 0; j < i; j++) - 80207fc0: 01205d63 blez s2,80207fda <virtio_disk_rw+0x98> - 80207fc4: 8dce mv s11,s3 + 80207f80: 01205d63 blez s2,80207f9a <virtio_disk_rw+0x98> + 80207f84: 8dce mv s11,s3 free_desc(idx[j]); - 80207fc6: 000a2503 lw a0,0(s4) - 80207fca: 00000097 auipc ra,0x0 - 80207fce: d72080e7 jalr -654(ra) # 80207d3c <free_desc> + 80207f86: 000a2503 lw a0,0(s4) + 80207f8a: 00000097 auipc ra,0x0 + 80207f8e: d72080e7 jalr -654(ra) # 80207cfc <free_desc> for(int j = 0; j < i; j++) - 80207fd2: 2d85 addiw s11,s11,1 - 80207fd4: 0a11 addi s4,s4,4 - 80207fd6: ff2d98e3 bne s11,s2,80207fc6 <virtio_disk_rw+0x84> + 80207f92: 2d85 addiw s11,s11,1 + 80207f94: 0a11 addi s4,s4,4 + 80207f96: ff2d98e3 bne s11,s2,80207f86 <virtio_disk_rw+0x84> int idx[3]; while(1){ if(alloc3_desc(idx) == 0) { break; } sleep(&disk.free[0], &disk.vdisk_lock); - 80207fda: 00032597 auipc a1,0x32 - 80207fde: 0ce58593 addi a1,a1,206 # 8023a0a8 <disk+0x20a8> - 80207fe2: 00032517 auipc a0,0x32 - 80207fe6: 03650513 addi a0,a0,54 # 8023a018 <disk+0x2018> - 80207fea: ffffa097 auipc ra,0xffffa - 80207fee: 42e080e7 jalr 1070(ra) # 80202418 <sleep> + 80207f9a: 00032597 auipc a1,0x32 + 80207f9e: 10e58593 addi a1,a1,270 # 8023a0a8 <disk+0x20a8> + 80207fa2: 00032517 auipc a0,0x32 + 80207fa6: 07650513 addi a0,a0,118 # 8023a018 <disk+0x2018> + 80207faa: ffffa097 auipc ra,0xffffa + 80207fae: 468080e7 jalr 1128(ra) # 80202412 <sleep> for(int i = 0; i < 3; i++){ - 80207ff2: f8040a13 addi s4,s0,-128 + 80207fb2: f8040a13 addi s4,s0,-128 { - 80207ff6: 8652 mv a2,s4 + 80207fb6: 8652 mv a2,s4 for(int i = 0; i < 3; i++){ - 80207ff8: 894e mv s2,s3 - 80207ffa: b765 j 80207fa2 <virtio_disk_rw+0x60> + 80207fb8: 894e mv s2,s3 + 80207fba: b765 j 80207f62 <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 - 80207ffc: 00032717 auipc a4,0x32 - 80208000: 00473703 ld a4,4(a4) # 8023a000 <disk+0x2000> - 80208004: 973e add a4,a4,a5 - 80208006: 00071623 sh zero,12(a4) + 80207fbc: 00032717 auipc a4,0x32 + 80207fc0: 04473703 ld a4,68(a4) # 8023a000 <disk+0x2000> + 80207fc4: 973e add a4,a4,a5 + 80207fc6: 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; - 8020800a: 00030517 auipc a0,0x30 - 8020800e: ff650513 addi a0,a0,-10 # 80238000 <disk> - 80208012: 00032717 auipc a4,0x32 - 80208016: fee70713 addi a4,a4,-18 # 8023a000 <disk+0x2000> - 8020801a: 6314 ld a3,0(a4) - 8020801c: 96be add a3,a3,a5 - 8020801e: 00c6d603 lhu a2,12(a3) - 80208022: 00166613 ori a2,a2,1 - 80208026: 00c69623 sh a2,12(a3) + 80207fca: 00030517 auipc a0,0x30 + 80207fce: 03650513 addi a0,a0,54 # 80238000 <disk> + 80207fd2: 00032717 auipc a4,0x32 + 80207fd6: 02e70713 addi a4,a4,46 # 8023a000 <disk+0x2000> + 80207fda: 6314 ld a3,0(a4) + 80207fdc: 96be add a3,a3,a5 + 80207fde: 00c6d603 lhu a2,12(a3) + 80207fe2: 00166613 ori a2,a2,1 + 80207fe6: 00c69623 sh a2,12(a3) disk.desc[idx[1]].next = idx[2]; - 8020802a: f8842683 lw a3,-120(s0) - 8020802e: 6310 ld a2,0(a4) - 80208030: 97b2 add a5,a5,a2 - 80208032: 00d79723 sh a3,14(a5) + 80207fea: f8842683 lw a3,-120(s0) + 80207fee: 6310 ld a2,0(a4) + 80207ff0: 97b2 add a5,a5,a2 + 80207ff2: 00d79723 sh a3,14(a5) disk.info[idx[0]].status = 0; - 80208036: 20048613 addi a2,s1,512 - 8020803a: 0612 slli a2,a2,0x4 - 8020803c: 962a add a2,a2,a0 - 8020803e: 02060823 sb zero,48(a2) + 80207ff6: 20048613 addi a2,s1,512 + 80207ffa: 0612 slli a2,a2,0x4 + 80207ffc: 962a add a2,a2,a0 + 80207ffe: 02060823 sb zero,48(a2) disk.desc[idx[2]].addr = (uint64) &disk.info[idx[0]].status; - 80208042: 00469793 slli a5,a3,0x4 - 80208046: 630c ld a1,0(a4) - 80208048: 95be add a1,a1,a5 - 8020804a: 6689 lui a3,0x2 - 8020804c: 03068693 addi a3,a3,48 # 2030 <_entry-0x801fdfd0> - 80208050: 96ca add a3,a3,s2 - 80208052: 96aa add a3,a3,a0 - 80208054: e194 sd a3,0(a1) + 80208002: 00469793 slli a5,a3,0x4 + 80208006: 630c ld a1,0(a4) + 80208008: 95be add a1,a1,a5 + 8020800a: 6689 lui a3,0x2 + 8020800c: 03068693 addi a3,a3,48 # 2030 <_entry-0x801fdfd0> + 80208010: 96ca add a3,a3,s2 + 80208012: 96aa add a3,a3,a0 + 80208014: e194 sd a3,0(a1) disk.desc[idx[2]].len = 1; - 80208056: 6314 ld a3,0(a4) - 80208058: 96be add a3,a3,a5 - 8020805a: 4585 li a1,1 - 8020805c: c68c sw a1,8(a3) + 80208016: 6314 ld a3,0(a4) + 80208018: 96be add a3,a3,a5 + 8020801a: 4585 li a1,1 + 8020801c: c68c sw a1,8(a3) disk.desc[idx[2]].flags = VRING_DESC_F_WRITE; // device writes the status - 8020805e: 6314 ld a3,0(a4) - 80208060: 96be add a3,a3,a5 - 80208062: 4509 li a0,2 - 80208064: 00a69623 sh a0,12(a3) + 8020801e: 6314 ld a3,0(a4) + 80208020: 96be add a3,a3,a5 + 80208022: 4509 li a0,2 + 80208024: 00a69623 sh a0,12(a3) disk.desc[idx[2]].next = 0; - 80208068: 6314 ld a3,0(a4) - 8020806a: 97b6 add a5,a5,a3 - 8020806c: 00079723 sh zero,14(a5) + 80208028: 6314 ld a3,0(a4) + 8020802a: 97b6 add a5,a5,a3 + 8020802c: 00079723 sh zero,14(a5) // record struct buf for virtio_disk_intr(). b->disk = 1; - 80208070: 00baa223 sw a1,4(s5) + 80208030: 00baa223 sw a1,4(s5) disk.info[idx[0]].b = b; - 80208074: 03563423 sd s5,40(a2) + 80208034: 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]; - 80208078: 6714 ld a3,8(a4) - 8020807a: 0026d783 lhu a5,2(a3) - 8020807e: 8b9d andi a5,a5,7 - 80208080: 0789 addi a5,a5,2 - 80208082: 0786 slli a5,a5,0x1 - 80208084: 96be add a3,a3,a5 - 80208086: 00969023 sh s1,0(a3) + 80208038: 6714 ld a3,8(a4) + 8020803a: 0026d783 lhu a5,2(a3) + 8020803e: 8b9d andi a5,a5,7 + 80208040: 0789 addi a5,a5,2 + 80208042: 0786 slli a5,a5,0x1 + 80208044: 96be add a3,a3,a5 + 80208046: 00969023 sh s1,0(a3) __sync_synchronize(); - 8020808a: 0ff0000f fence + 8020804a: 0ff0000f fence disk.avail[1] = disk.avail[1] + 1; - 8020808e: 6718 ld a4,8(a4) - 80208090: 00275783 lhu a5,2(a4) - 80208094: 2785 addiw a5,a5,1 - 80208096: 00f71123 sh a5,2(a4) + 8020804e: 6718 ld a4,8(a4) + 80208050: 00275783 lhu a5,2(a4) + 80208054: 2785 addiw a5,a5,1 + 80208056: 00f71123 sh a5,2(a4) *R(VIRTIO_MMIO_QUEUE_NOTIFY) = 0; // value is queue number - 8020809a: 00003797 auipc a5,0x3 - 8020809e: f3e7b783 ld a5,-194(a5) # 8020afd8 <digits+0xc58> - 802080a2: 0007a023 sw zero,0(a5) + 8020805a: 00003797 auipc a5,0x3 + 8020805e: f767b783 ld a5,-138(a5) # 8020afd0 <digits+0xc50> + 80208062: 0007a023 sw zero,0(a5) // Wait for virtio_disk_intr() to say request has finished. while(b->disk == 1) { - 802080a6: 004aa783 lw a5,4(s5) - 802080aa: 02b79163 bne a5,a1,802080cc <virtio_disk_rw+0x18a> + 80208066: 004aa783 lw a5,4(s5) + 8020806a: 02b79163 bne a5,a1,8020808c <virtio_disk_rw+0x18a> sleep(b, &disk.vdisk_lock); - 802080ae: 00032917 auipc s2,0x32 - 802080b2: ffa90913 addi s2,s2,-6 # 8023a0a8 <disk+0x20a8> + 8020806e: 00032917 auipc s2,0x32 + 80208072: 03a90913 addi s2,s2,58 # 8023a0a8 <disk+0x20a8> while(b->disk == 1) { - 802080b6: 4485 li s1,1 + 80208076: 4485 li s1,1 sleep(b, &disk.vdisk_lock); - 802080b8: 85ca mv a1,s2 - 802080ba: 8556 mv a0,s5 - 802080bc: ffffa097 auipc ra,0xffffa - 802080c0: 35c080e7 jalr 860(ra) # 80202418 <sleep> + 80208078: 85ca mv a1,s2 + 8020807a: 8556 mv a0,s5 + 8020807c: ffffa097 auipc ra,0xffffa + 80208080: 396080e7 jalr 918(ra) # 80202412 <sleep> while(b->disk == 1) { - 802080c4: 004aa783 lw a5,4(s5) - 802080c8: fe9788e3 beq a5,s1,802080b8 <virtio_disk_rw+0x176> + 80208084: 004aa783 lw a5,4(s5) + 80208088: fe9788e3 beq a5,s1,80208078 <virtio_disk_rw+0x176> } disk.info[idx[0]].b = 0; - 802080cc: f8042483 lw s1,-128(s0) - 802080d0: 20048713 addi a4,s1,512 - 802080d4: 0712 slli a4,a4,0x4 - 802080d6: 00030797 auipc a5,0x30 - 802080da: f2a78793 addi a5,a5,-214 # 80238000 <disk> - 802080de: 97ba add a5,a5,a4 - 802080e0: 0207b423 sd zero,40(a5) + 8020808c: f8042483 lw s1,-128(s0) + 80208090: 20048713 addi a4,s1,512 + 80208094: 0712 slli a4,a4,0x4 + 80208096: 00030797 auipc a5,0x30 + 8020809a: f6a78793 addi a5,a5,-150 # 80238000 <disk> + 8020809e: 97ba add a5,a5,a4 + 802080a0: 0207b423 sd zero,40(a5) if(disk.desc[i].flags & VRING_DESC_F_NEXT) - 802080e4: 00032917 auipc s2,0x32 - 802080e8: f1c90913 addi s2,s2,-228 # 8023a000 <disk+0x2000> - 802080ec: a019 j 802080f2 <virtio_disk_rw+0x1b0> + 802080a4: 00032917 auipc s2,0x32 + 802080a8: f5c90913 addi s2,s2,-164 # 8023a000 <disk+0x2000> + 802080ac: a019 j 802080b2 <virtio_disk_rw+0x1b0> i = disk.desc[i].next; - 802080ee: 00e7d483 lhu s1,14(a5) + 802080ae: 00e7d483 lhu s1,14(a5) free_desc(i); - 802080f2: 8526 mv a0,s1 - 802080f4: 00000097 auipc ra,0x0 - 802080f8: c48080e7 jalr -952(ra) # 80207d3c <free_desc> + 802080b2: 8526 mv a0,s1 + 802080b4: 00000097 auipc ra,0x0 + 802080b8: c48080e7 jalr -952(ra) # 80207cfc <free_desc> if(disk.desc[i].flags & VRING_DESC_F_NEXT) - 802080fc: 0492 slli s1,s1,0x4 - 802080fe: 00093783 ld a5,0(s2) - 80208102: 97a6 add a5,a5,s1 - 80208104: 00c7d703 lhu a4,12(a5) - 80208108: 8b05 andi a4,a4,1 - 8020810a: f375 bnez a4,802080ee <virtio_disk_rw+0x1ac> + 802080bc: 0492 slli s1,s1,0x4 + 802080be: 00093783 ld a5,0(s2) + 802080c2: 97a6 add a5,a5,s1 + 802080c4: 00c7d703 lhu a4,12(a5) + 802080c8: 8b05 andi a4,a4,1 + 802080ca: f375 bnez a4,802080ae <virtio_disk_rw+0x1ac> free_chain(idx[0]); release(&disk.vdisk_lock); - 8020810c: 00032517 auipc a0,0x32 - 80208110: f9c50513 addi a0,a0,-100 # 8023a0a8 <disk+0x20a8> - 80208114: ffff8097 auipc ra,0xffff8 - 80208118: 606080e7 jalr 1542(ra) # 8020071a <release> + 802080cc: 00032517 auipc a0,0x32 + 802080d0: fdc50513 addi a0,a0,-36 # 8023a0a8 <disk+0x20a8> + 802080d4: ffff8097 auipc ra,0xffff8 + 802080d8: 646080e7 jalr 1606(ra) # 8020071a <release> } - 8020811c: 60aa ld ra,136(sp) - 8020811e: 640a ld s0,128(sp) - 80208120: 74e6 ld s1,120(sp) - 80208122: 7946 ld s2,112(sp) - 80208124: 79a6 ld s3,104(sp) - 80208126: 7a06 ld s4,96(sp) - 80208128: 6ae6 ld s5,88(sp) - 8020812a: 6b46 ld s6,80(sp) - 8020812c: 6ba6 ld s7,72(sp) - 8020812e: 6c06 ld s8,64(sp) - 80208130: 7ce2 ld s9,56(sp) - 80208132: 7d42 ld s10,48(sp) - 80208134: 7da2 ld s11,40(sp) - 80208136: 6149 addi sp,sp,144 - 80208138: 8082 ret + 802080dc: 60aa ld ra,136(sp) + 802080de: 640a ld s0,128(sp) + 802080e0: 74e6 ld s1,120(sp) + 802080e2: 7946 ld s2,112(sp) + 802080e4: 79a6 ld s3,104(sp) + 802080e6: 7a06 ld s4,96(sp) + 802080e8: 6ae6 ld s5,88(sp) + 802080ea: 6b46 ld s6,80(sp) + 802080ec: 6ba6 ld s7,72(sp) + 802080ee: 6c06 ld s8,64(sp) + 802080f0: 7ce2 ld s9,56(sp) + 802080f2: 7d42 ld s10,48(sp) + 802080f4: 7da2 ld s11,40(sp) + 802080f6: 6149 addi sp,sp,144 + 802080f8: 8082 ret if(write) - 8020813a: 019037b3 snez a5,s9 - 8020813e: f6f42823 sw a5,-144(s0) + 802080fa: 019037b3 snez a5,s9 + 802080fe: f6f42823 sw a5,-144(s0) buf0.reserved = 0; - 80208142: f6042a23 sw zero,-140(s0) + 80208102: f6042a23 sw zero,-140(s0) buf0.sector = sector; - 80208146: f7a43c23 sd s10,-136(s0) + 80208106: f7a43c23 sd s10,-136(s0) disk.desc[idx[0]].addr = (uint64) kwalkaddr(myproc()->kpagetable, (uint64) &buf0); - 8020814a: ffffa097 auipc ra,0xffffa - 8020814e: 8f2080e7 jalr -1806(ra) # 80201a3c <myproc> - 80208152: f8042483 lw s1,-128(s0) - 80208156: 00449913 slli s2,s1,0x4 - 8020815a: 00032997 auipc s3,0x32 - 8020815e: ea698993 addi s3,s3,-346 # 8023a000 <disk+0x2000> - 80208162: 0009ba03 ld s4,0(s3) - 80208166: 9a4a add s4,s4,s2 - 80208168: f7040593 addi a1,s0,-144 - 8020816c: 6d28 ld a0,88(a0) - 8020816e: ffff9097 auipc ra,0xffff9 - 80208172: a82080e7 jalr -1406(ra) # 80200bf0 <kwalkaddr> - 80208176: 00aa3023 sd a0,0(s4) + 8020810a: ffffa097 auipc ra,0xffffa + 8020810e: 932080e7 jalr -1742(ra) # 80201a3c <myproc> + 80208112: f8042483 lw s1,-128(s0) + 80208116: 00449913 slli s2,s1,0x4 + 8020811a: 00032997 auipc s3,0x32 + 8020811e: ee698993 addi s3,s3,-282 # 8023a000 <disk+0x2000> + 80208122: 0009ba03 ld s4,0(s3) + 80208126: 9a4a add s4,s4,s2 + 80208128: f7040593 addi a1,s0,-144 + 8020812c: 6d28 ld a0,88(a0) + 8020812e: ffff9097 auipc ra,0xffff9 + 80208132: ac2080e7 jalr -1342(ra) # 80200bf0 <kwalkaddr> + 80208136: 00aa3023 sd a0,0(s4) disk.desc[idx[0]].len = sizeof(buf0); - 8020817a: 0009b783 ld a5,0(s3) - 8020817e: 97ca add a5,a5,s2 - 80208180: 4741 li a4,16 - 80208182: c798 sw a4,8(a5) + 8020813a: 0009b783 ld a5,0(s3) + 8020813e: 97ca add a5,a5,s2 + 80208140: 4741 li a4,16 + 80208142: c798 sw a4,8(a5) disk.desc[idx[0]].flags = VRING_DESC_F_NEXT; - 80208184: 0009b783 ld a5,0(s3) - 80208188: 97ca add a5,a5,s2 - 8020818a: 4705 li a4,1 - 8020818c: 00e79623 sh a4,12(a5) + 80208144: 0009b783 ld a5,0(s3) + 80208148: 97ca add a5,a5,s2 + 8020814a: 4705 li a4,1 + 8020814c: 00e79623 sh a4,12(a5) disk.desc[idx[0]].next = idx[1]; - 80208190: f8442783 lw a5,-124(s0) - 80208194: 0009b703 ld a4,0(s3) - 80208198: 974a add a4,a4,s2 - 8020819a: 00f71723 sh a5,14(a4) + 80208150: f8442783 lw a5,-124(s0) + 80208154: 0009b703 ld a4,0(s3) + 80208158: 974a add a4,a4,s2 + 8020815a: 00f71723 sh a5,14(a4) disk.desc[idx[1]].addr = (uint64) b->data; - 8020819e: 0792 slli a5,a5,0x4 - 802081a0: 0009b703 ld a4,0(s3) - 802081a4: 973e add a4,a4,a5 - 802081a6: 058a8693 addi a3,s5,88 - 802081aa: e314 sd a3,0(a4) + 8020815e: 0792 slli a5,a5,0x4 + 80208160: 0009b703 ld a4,0(s3) + 80208164: 973e add a4,a4,a5 + 80208166: 058a8693 addi a3,s5,88 + 8020816a: e314 sd a3,0(a4) disk.desc[idx[1]].len = BSIZE; - 802081ac: 0009b703 ld a4,0(s3) - 802081b0: 973e add a4,a4,a5 - 802081b2: 20000693 li a3,512 - 802081b6: c714 sw a3,8(a4) + 8020816c: 0009b703 ld a4,0(s3) + 80208170: 973e add a4,a4,a5 + 80208172: 20000693 li a3,512 + 80208176: c714 sw a3,8(a4) if(write) - 802081b8: e40c92e3 bnez s9,80207ffc <virtio_disk_rw+0xba> + 80208178: e40c92e3 bnez s9,80207fbc <virtio_disk_rw+0xba> disk.desc[idx[1]].flags = VRING_DESC_F_WRITE; // device writes b->data - 802081bc: 00032717 auipc a4,0x32 - 802081c0: e4473703 ld a4,-444(a4) # 8023a000 <disk+0x2000> - 802081c4: 973e add a4,a4,a5 - 802081c6: 4689 li a3,2 - 802081c8: 00d71623 sh a3,12(a4) - 802081cc: bd3d j 8020800a <virtio_disk_rw+0xc8> + 8020817c: 00032717 auipc a4,0x32 + 80208180: e8473703 ld a4,-380(a4) # 8023a000 <disk+0x2000> + 80208184: 973e add a4,a4,a5 + 80208186: 4689 li a3,2 + 80208188: 00d71623 sh a3,12(a4) + 8020818c: bd3d j 80207fca <virtio_disk_rw+0xc8> -00000000802081ce <virtio_disk_intr>: +000000008020818e <virtio_disk_intr>: void virtio_disk_intr() { - 802081ce: 1101 addi sp,sp,-32 - 802081d0: ec06 sd ra,24(sp) - 802081d2: e822 sd s0,16(sp) - 802081d4: e426 sd s1,8(sp) - 802081d6: e04a sd s2,0(sp) - 802081d8: 1000 addi s0,sp,32 + 8020818e: 1101 addi sp,sp,-32 + 80208190: ec06 sd ra,24(sp) + 80208192: e822 sd s0,16(sp) + 80208194: e426 sd s1,8(sp) + 80208196: e04a sd s2,0(sp) + 80208198: 1000 addi s0,sp,32 acquire(&disk.vdisk_lock); - 802081da: 00032517 auipc a0,0x32 - 802081de: ece50513 addi a0,a0,-306 # 8023a0a8 <disk+0x20a8> - 802081e2: ffff8097 auipc ra,0xffff8 - 802081e6: 4e4080e7 jalr 1252(ra) # 802006c6 <acquire> + 8020819a: 00032517 auipc a0,0x32 + 8020819e: f0e50513 addi a0,a0,-242 # 8023a0a8 <disk+0x20a8> + 802081a2: ffff8097 auipc ra,0xffff8 + 802081a6: 524080e7 jalr 1316(ra) # 802006c6 <acquire> while((disk.used_idx % NUM) != (disk.used->id % NUM)){ - 802081ea: 00032717 auipc a4,0x32 - 802081ee: e1670713 addi a4,a4,-490 # 8023a000 <disk+0x2000> - 802081f2: 02075783 lhu a5,32(a4) - 802081f6: 6b18 ld a4,16(a4) - 802081f8: 00275683 lhu a3,2(a4) - 802081fc: 8ebd xor a3,a3,a5 - 802081fe: 8a9d andi a3,a3,7 - 80208200: cab9 beqz a3,80208256 <virtio_disk_intr+0x88> + 802081aa: 00032717 auipc a4,0x32 + 802081ae: e5670713 addi a4,a4,-426 # 8023a000 <disk+0x2000> + 802081b2: 02075783 lhu a5,32(a4) + 802081b6: 6b18 ld a4,16(a4) + 802081b8: 00275683 lhu a3,2(a4) + 802081bc: 8ebd xor a3,a3,a5 + 802081be: 8a9d andi a3,a3,7 + 802081c0: cab9 beqz a3,80208216 <virtio_disk_intr+0x88> int id = disk.used->elems[disk.used_idx].id; if(disk.info[id].status != 0) - 80208202: 00030917 auipc s2,0x30 - 80208206: dfe90913 addi s2,s2,-514 # 80238000 <disk> + 802081c2: 00030917 auipc s2,0x30 + 802081c6: e3e90913 addi s2,s2,-450 # 80238000 <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; - 8020820a: 00032497 auipc s1,0x32 - 8020820e: df648493 addi s1,s1,-522 # 8023a000 <disk+0x2000> + 802081ca: 00032497 auipc s1,0x32 + 802081ce: e3648493 addi s1,s1,-458 # 8023a000 <disk+0x2000> int id = disk.used->elems[disk.used_idx].id; - 80208212: 078e slli a5,a5,0x3 - 80208214: 973e add a4,a4,a5 - 80208216: 435c lw a5,4(a4) + 802081d2: 078e slli a5,a5,0x3 + 802081d4: 973e add a4,a4,a5 + 802081d6: 435c lw a5,4(a4) if(disk.info[id].status != 0) - 80208218: 20078713 addi a4,a5,512 - 8020821c: 0712 slli a4,a4,0x4 - 8020821e: 974a add a4,a4,s2 - 80208220: 03074703 lbu a4,48(a4) - 80208224: e335 bnez a4,80208288 <virtio_disk_intr+0xba> + 802081d8: 20078713 addi a4,a5,512 + 802081dc: 0712 slli a4,a4,0x4 + 802081de: 974a add a4,a4,s2 + 802081e0: 03074703 lbu a4,48(a4) + 802081e4: e335 bnez a4,80208248 <virtio_disk_intr+0xba> disk.info[id].b->disk = 0; // disk is done with buf - 80208226: 20078793 addi a5,a5,512 - 8020822a: 0792 slli a5,a5,0x4 - 8020822c: 97ca add a5,a5,s2 - 8020822e: 7798 ld a4,40(a5) - 80208230: 00072223 sw zero,4(a4) + 802081e6: 20078793 addi a5,a5,512 + 802081ea: 0792 slli a5,a5,0x4 + 802081ec: 97ca add a5,a5,s2 + 802081ee: 7798 ld a4,40(a5) + 802081f0: 00072223 sw zero,4(a4) wakeup(disk.info[id].b); - 80208234: 7788 ld a0,40(a5) - 80208236: ffffa097 auipc ra,0xffffa - 8020823a: 4ca080e7 jalr 1226(ra) # 80202700 <wakeup> + 802081f4: 7788 ld a0,40(a5) + 802081f6: ffffa097 auipc ra,0xffffa + 802081fa: 504080e7 jalr 1284(ra) # 802026fa <wakeup> disk.used_idx = (disk.used_idx + 1) % NUM; - 8020823e: 0204d783 lhu a5,32(s1) - 80208242: 2785 addiw a5,a5,1 - 80208244: 8b9d andi a5,a5,7 - 80208246: 02f49023 sh a5,32(s1) + 802081fe: 0204d783 lhu a5,32(s1) + 80208202: 2785 addiw a5,a5,1 + 80208204: 8b9d andi a5,a5,7 + 80208206: 02f49023 sh a5,32(s1) while((disk.used_idx % NUM) != (disk.used->id % NUM)){ - 8020824a: 6898 ld a4,16(s1) - 8020824c: 00275683 lhu a3,2(a4) - 80208250: 8a9d andi a3,a3,7 - 80208252: fcf690e3 bne a3,a5,80208212 <virtio_disk_intr+0x44> + 8020820a: 6898 ld a4,16(s1) + 8020820c: 00275683 lhu a3,2(a4) + 80208210: 8a9d andi a3,a3,7 + 80208212: fcf690e3 bne a3,a5,802081d2 <virtio_disk_intr+0x44> } *R(VIRTIO_MMIO_INTERRUPT_ACK) = *R(VIRTIO_MMIO_INTERRUPT_STATUS) & 0x3; - 80208256: 00003797 auipc a5,0x3 - 8020825a: d8a7b783 ld a5,-630(a5) # 8020afe0 <digits+0xc60> - 8020825e: 439c lw a5,0(a5) - 80208260: 8b8d andi a5,a5,3 - 80208262: 00003717 auipc a4,0x3 - 80208266: d8673703 ld a4,-634(a4) # 8020afe8 <digits+0xc68> - 8020826a: c31c sw a5,0(a4) + 80208216: 00003797 auipc a5,0x3 + 8020821a: dc27b783 ld a5,-574(a5) # 8020afd8 <digits+0xc58> + 8020821e: 439c lw a5,0(a5) + 80208220: 8b8d andi a5,a5,3 + 80208222: 00003717 auipc a4,0x3 + 80208226: dbe73703 ld a4,-578(a4) # 8020afe0 <digits+0xc60> + 8020822a: c31c sw a5,0(a4) release(&disk.vdisk_lock); - 8020826c: 00032517 auipc a0,0x32 - 80208270: e3c50513 addi a0,a0,-452 # 8023a0a8 <disk+0x20a8> - 80208274: ffff8097 auipc ra,0xffff8 - 80208278: 4a6080e7 jalr 1190(ra) # 8020071a <release> + 8020822c: 00032517 auipc a0,0x32 + 80208230: e7c50513 addi a0,a0,-388 # 8023a0a8 <disk+0x20a8> + 80208234: ffff8097 auipc ra,0xffff8 + 80208238: 4e6080e7 jalr 1254(ra) # 8020071a <release> } - 8020827c: 60e2 ld ra,24(sp) - 8020827e: 6442 ld s0,16(sp) - 80208280: 64a2 ld s1,8(sp) - 80208282: 6902 ld s2,0(sp) - 80208284: 6105 addi sp,sp,32 - 80208286: 8082 ret + 8020823c: 60e2 ld ra,24(sp) + 8020823e: 6442 ld s0,16(sp) + 80208240: 64a2 ld s1,8(sp) + 80208242: 6902 ld s2,0(sp) + 80208244: 6105 addi sp,sp,32 + 80208246: 8082 ret panic("virtio_disk_intr status"); - 80208288: 00003517 auipc a0,0x3 - 8020828c: ce050513 addi a0,a0,-800 # 8020af68 <digits+0xbe8> - 80208290: ffff8097 auipc ra,0xffff8 - 80208294: eb4080e7 jalr -332(ra) # 80200144 <panic> + 80208248: 00003517 auipc a0,0x3 + 8020824c: d1850513 addi a0,a0,-744 # 8020af60 <digits+0xbe0> + 80208250: ffff8097 auipc ra,0xffff8 + 80208254: ef4080e7 jalr -268(ra) # 80200144 <panic> ... 0000000080209000 <_trampoline>: diff --git a/target/kernel.sym b/target/kernel.sym index 8e5d88937842628551884e969f00a72896c700d5..da0792506e0a63110e140862de6f4f1890f2df9a 100644 --- a/target/kernel.sym +++ b/target/kernel.sym @@ -37,7 +37,7 @@ 0000000000000000 swtch.o 0000000000000000 trap.c 0000000000000000 syscall.c -00000000802030f0 argraw +00000000802030f4 argraw 000000008020c680 sysnames 000000008020bd00 syscalls 000000008022cd90 syscall_counts @@ -48,22 +48,22 @@ 0000000000000000 pipe.c 0000000000000000 exec.c 0000000000000000 sysfile.c -0000000080204bb0 argfd -0000000080204c1a fdalloc -0000000080204c5e create +0000000080204bb4 argfd +0000000080204c1e fdalloc +0000000080204c62 create 0000000000000000 kernelvec.o 0000000000000000 timer.c 0000000000000000 disk.c 0000000000000000 fat32.c -0000000080205f6e read_fat -0000000080205fe4 alloc_clus -0000000080206126 write_fat -00000000802061a6 reloc_clus -00000000802062ae rw_clus -00000000802063fa eget +0000000080205f2e read_fat +0000000080205fa4 alloc_clus +00000000802060e6 write_fat +0000000080206166 reloc_clus +000000008020626e rw_clus +00000000802063ba eget 0000000080232d18 ecache -0000000080206508 read_entry_name -00000000802076f0 lookup_path +00000000802064c8 read_entry_name +00000000802076b0 lookup_path 000000008020d000 illegal.1 000000008020d010 illegal.0 0000000080232b88 fat @@ -72,82 +72,82 @@ 0000000000000000 console.c 0000000000000000 shutdown.c 0000000000000000 virtio_disk.c -0000000080207d3c free_desc +0000000080207cfc free_desc 0000000080238000 disk 000000008020d018 _GLOBAL_OFFSET_TABLE_ -00000000802054ba sys_remove -0000000080206e60 edup +00000000802054be sys_remove +0000000080206e20 edup 0000000080200c68 mappages 00000000802014a4 copyinstr -00000000802079e2 consoleread +00000000802079a2 consoleread 00000000802008b4 safestrcpy -0000000080204ed2 sys_close -00000000802023dc yield +0000000080204ed6 sys_close +00000000802023d6 yield 0000000080216028 kmem -00000000802027da either_copyout -0000000080205e6e timerinit +00000000802027d4 either_copyout +0000000080205e2e timerinit 0000000080216180 proc 00000000802016cc proc_kpagetable -00000000802041ea fileread +00000000802041ee fileread 000000008020018e printf -0000000080203742 sys_sbrk +0000000080203746 sys_sbrk 0000000080209000 trampoline 0000000080216000 panicked -0000000080206a96 emake -00000000802078fa plic_claim -00000000802052ae sys_dev -00000000802078a0 plicinit -0000000080207924 plic_complete -0000000080202206 sched +0000000080206a56 emake +00000000802078ba plic_claim +00000000802052b2 sys_dev +0000000080207860 plicinit +00000000802078e4 plic_complete +0000000080202200 sched 00000000802007be memmove -00000000802033b8 syscall -0000000080204d82 sys_dup3 +00000000802033bc syscall +0000000080204d86 sys_dup3 0000000080201a10 cpuid -0000000080203600 sys_fork +0000000080203604 sys_fork 000000008022d250 bcache -00000000802050b4 sys_mkdir -0000000080207054 etrunc -00000000802078b8 plicinithart -0000000080201f7c reparent -00000000802065f4 fat32_init -0000000080207884 enameparent -0000000080203388 argstr +00000000802050b8 sys_mkdir +0000000080207014 etrunc +0000000080207878 plicinithart +0000000080201f76 reparent +00000000802065b4 fat32_init +0000000080207844 enameparent +000000008020338c argstr 0000000080200f9e uvmdealloc -0000000080203618 sys_clone +000000008020361c sys_clone 000000008020b000 sdata -0000000080203ff4 filedup -0000000080203b26 binit +0000000080203ff8 filedup +0000000080203b2a binit 00000000802012b4 uvmclear -0000000080206f8a eremove -0000000080204e06 sys_read +0000000080206f4a eremove +0000000080204e0a sys_read 0000000080200822 memcpy 0000000080200cf6 kvmmap 0000000080200440 kfree 0000000080201a20 mycpu -0000000080202a6c devintr -00000000802067ba eread +0000000080202a66 devintr +000000008020677a eread 000000008020b004 nextpid -0000000080203f32 fileinit +0000000080203f36 fileinit 0000000080209090 userret 0000000080200682 initlock -00000000802069de formatname +000000008020699e formatname 00000000802012e6 copyout -0000000080202418 sleep -0000000080205bfe sys_munmap +0000000080202412 sleep +0000000080205bfa sys_munmap 00000000802000b8 printstring -0000000080205de0 kernelvec +0000000080205da0 kernelvec 000000008020d017 edata -0000000080203158 sys_stat_syscall +000000008020315c sys_stat_syscall 0000000080200988 wcsncmp -000000008020383c sys_kill -000000008020451c pipeclose -0000000080204f20 sys_fstat -0000000080207954 consolewrite +0000000080203840 sys_kill +0000000080204520 pipeclose +0000000080204f24 sys_fstat +0000000080207914 consolewrite 000000008020a000 rodata_start -0000000080207866 ename +0000000080207826 ename 00000000802004c2 freerange -0000000080205a94 sys_mmap -00000000802070be elock +0000000080205a98 sys_mmap +000000008020707e elock 0000000080200ae4 kvminithart 000000008020100a uvmalloc 0000000080200f14 uvminit @@ -156,160 +156,160 @@ 0000000080201bbc proc_freepagetable 0000000080201894 reg_info 0000000080201b20 proc_pagetable -000000008020378c sys_sleep +0000000080203790 sys_sleep 0000000080201672 kvmfree -0000000080205f0a disk_init -000000008020437c dirnext -0000000080204160 filekstat -0000000080203f8a filealloc -0000000080202700 wakeup -0000000080207dbc virtio_disk_init +0000000080205eca disk_init +0000000080204380 dirnext +0000000080204164 filekstat +0000000080203f8e filealloc +00000000802026fa wakeup +0000000080207d7c virtio_disk_init 0000000080201a3c myproc 0000000080200000 BASE_ADDRESS -00000000802025b0 wait4 -0000000080205380 sys_readdir +00000000802025aa wait4 +0000000080205384 sys_readdir 0000000080200b08 walk -0000000080204f6e sys_open +0000000080204f72 sys_open 00000000802000e4 backtrace -0000000080207b38 consoleintr -0000000080207afa consputc -000000008020276a kill +0000000080207af8 consoleintr +0000000080207aba consputc +0000000080202764 kill 0000000080201ada allocpid 00000000802013c4 copyin 0000000080200910 wnstr 000000008020116c uvmfree 0000000080201372 copyout2 -00000000802042ac filewrite +00000000802042b0 filewrite 0000000080200942 snstr -0000000080203304 argint +0000000080203308 argint 000000008020a000 srodata 0000000080200e22 vmunmap -00000000802038ea sys_times -0000000080205810 sys_openat -0000000080203aba sys_sched_yield -00000000802038b2 sys_trace -0000000080204776 exec +00000000802038ee sys_times +0000000080205814 sys_openat +0000000080203abe sys_sched_yield +00000000802038b6 sys_trace +000000008020477a exec 000000008020a000 etext -0000000080204e6c sys_write +0000000080204e70 sys_write 000000008020071a release -00000000802032d4 fetchstr -0000000080202496 wait -0000000080207142 eput +00000000802032d8 fetchstr +0000000080202490 wait +0000000080207102 eput 0000000080216000 boot_stack_top -00000000802029ce usertrapret -000000008020211c scheduler -0000000080206a68 cal_checksum +00000000802029c8 usertrapret +0000000080202116 scheduler +0000000080206a28 cal_checksum 0000000080209000 _trampoline 000000008023b000 kernel_end -000000008020744c dirlookup -00000000802036de sys_wait4 -0000000080204046 fileclose -00000000802075aa ealloc +000000008020740c dirlookup +00000000802036e2 sys_wait4 +000000008020404a fileclose +000000008020756a ealloc 0000000080200bf0 kwalkaddr 00000000802005c0 freemem_amount -0000000080202b10 usertrap +0000000080202b0a usertrap 000000008020083a strncmp 0000000080232b68 tickslock -000000008020458c pipewrite -0000000080205f56 disk_intr +0000000080204590 pipewrite +0000000080205f16 disk_intr 0000000080200876 strncpy 0000000080231bb0 ftable -00000000802081ce virtio_disk_intr -000000008020aff0 erodata -0000000080204d30 sys_dup +000000008020818e virtio_disk_intr +000000008020afe8 erodata +0000000080204d34 sys_dup 0000000080201452 copyin2 0000000080200144 panic 000000008020e000 bss_start 0000000080201a74 forkret 000000008020050e kinit 0000000080200784 memcmp -0000000080202810 either_copyin -0000000080201e64 fork +000000008020280a either_copyin +0000000080201e5e fork 0000000080216078 cpus -0000000080203e98 releasesleep +0000000080203e9c releasesleep 0000000080200000 _entry 0000000080200698 holding 00000000802006c6 acquire -00000000802031ca sys_uname +00000000802031ce sys_uname 0000000080216000 sbss_clear -00000000802039ea sys_nanosleep +00000000802039ee sys_nanosleep 000000008020b008 initcode -0000000080202992 trapinithart +000000008020298c trapinithart 0000000080200762 memset -0000000080203326 sys_test_proc +000000008020332a sys_test_proc 00000000802009e4 main -0000000080203e42 acquiresleep +0000000080203e46 acquiresleep 0000000080209000 uservec 0000000080200d2e kvminit 00000000802015c4 kfreewalk -0000000080203dcc bunpin -0000000080203366 argaddr +0000000080203dd0 bunpin +000000008020336a argaddr 0000000080200000 text_start -0000000080207d20 sys_shutdown -0000000080203ad4 sys_brk -000000008020386e sys_uptime +0000000080207ce0 sys_shutdown +0000000080203ad8 sys_brk +0000000080203872 sys_uptime 000000008020b000 data_start -00000000802053ce sys_getcwd +00000000802053d2 sys_getcwd 000000008020036e printfinit 0000000080201732 vmprint 0000000080200ee6 uvmcreate -00000000802068b2 ewrite -0000000080201de8 growproc -0000000080203edc holdingsleep +0000000080206872 ewrite +0000000080201de2 growproc +0000000080203ee0 holdingsleep 0000000080201554 copyinstr2 -0000000080201d6c userinit -0000000080203bc6 bread -0000000080204690 piperead +0000000080201d66 userinit +0000000080203bca bread +0000000080204694 piperead 00000000802003a0 print_logo 0000000080232b80 ticks -0000000080207cca consoleinit +0000000080207c8a consoleinit 0000000080200bae walkaddr -0000000080202e92 trapframedump -0000000080202844 procdump -0000000080203cf2 brelse -000000008020323a sys_sysinfo -0000000080205e96 set_next_timeout -0000000080203470 sys_exec +0000000080202e96 trapframedump +000000008020283e procdump +0000000080203cf6 brelse +000000008020323e sys_sysinfo +0000000080205e56 set_next_timeout +0000000080203474 sys_exec 0000000080200c46 kvmpa -000000008020727a estat -0000000080202928 swtch +000000008020723a estat +0000000080202922 swtch 000000008023b000 ebss_clear 00000000802005d6 push_off -00000000802055de sys_rename +00000000802055e2 sys_rename 0000000080200622 pop_off -0000000080203cb6 bwrite -0000000080205ebc timer_tick -0000000080205f3c disk_write -00000000802022dc exit +0000000080203cba bwrite +0000000080205e7c timer_tick +0000000080205efc disk_write +00000000802022d6 exit 0000000080201100 freewalk -00000000802036ac sys_wait -00000000802035b2 sys_exit -0000000080203e08 initsleeplock -00000000802070f4 eunlock -0000000080203994 sys_gettimeofday +00000000802036b0 sys_wait +00000000802035b6 sys_exit +0000000080203e0c initsleeplock +00000000802070b4 eunlock +0000000080203998 sys_gettimeofday 0000000080216058 kernel_pagetable -0000000080207f42 virtio_disk_rw +0000000080207f02 virtio_disk_rw 00000000802008e6 strlen -0000000080205f22 disk_read -00000000802051a2 sys_pipe -0000000080201fe2 clone +0000000080205ee2 disk_read +00000000802051a6 sys_pipe +0000000080201fdc clone 000000008020e000 boot_stack -00000000802028f8 procnum +00000000802028f2 procnum 00000000802009c0 strchr -00000000802072c2 enext +0000000080207282 enext 0000000080201620 kvmfreeusr 0000000080237380 cons 000000008020055a kalloc -0000000080203284 fetchaddr +0000000080203288 fetchaddr 0000000080231b10 devsw -00000000802035e6 sys_getpid -0000000080204442 pipealloc -0000000080203978 sys_getppid +00000000802035ea sys_getpid +0000000080204446 pipealloc +000000008020397c sys_getppid 0000000080200000 kernel_start -000000008020510e sys_chdir -0000000080206ea4 eupdate -0000000080202d92 kerneltrap -0000000080203d90 bpin +0000000080205112 sys_chdir +0000000080206e64 eupdate +0000000080202d96 kerneltrap +0000000080203d94 bpin 000000008020199a procinit -00000000802040fc filestat +0000000080204100 filestat 0000000080216060 pid_lock