diff --git a/obj/.deps b/obj/.deps deleted file mode 100644 index 1f6e344..0000000 --- a/obj/.deps +++ /dev/null @@ -1,21 +0,0 @@ -obj/kern/init.o: kern/init.c inc/stdio.h inc/stdarg.h inc/string.h \ - inc/types.h inc/assert.h kern/monitor.h kern/console.h -obj/kern/entry.o: kern/entry.S inc/mmu.h inc/memlayout.h -obj/kern/readline.o: lib/readline.c inc/stdio.h inc/stdarg.h inc/error.h -obj/boot/main.o: boot/main.c inc/x86.h inc/types.h inc/elf.h -obj/kern/string.o: lib/string.c inc/string.h inc/types.h -obj/kern/printfmt.o: lib/printfmt.c inc/types.h inc/stdio.h inc/stdarg.h \ - inc/string.h inc/error.h -obj/boot/boot.o: boot/boot.S inc/mmu.h -obj/kern/console.o: kern/console.c inc/x86.h inc/types.h inc/memlayout.h \ - inc/mmu.h inc/kbdreg.h inc/string.h inc/assert.h inc/stdio.h \ - inc/stdarg.h kern/console.h -obj/kern/printf.o: kern/printf.c inc/types.h inc/stdio.h inc/stdarg.h -obj/kern/kdebug.o: kern/kdebug.c inc/stab.h inc/types.h inc/string.h \ - inc/memlayout.h inc/mmu.h inc/assert.h inc/stdio.h inc/stdarg.h \ - kern/kdebug.h -obj/kern/monitor.o: kern/monitor.c inc/stdio.h inc/stdarg.h inc/string.h \ - inc/types.h inc/memlayout.h inc/mmu.h inc/assert.h inc/x86.h \ - kern/console.h kern/monitor.h kern/kdebug.h -obj/kern/entrypgdir.o: kern/entrypgdir.c inc/mmu.h inc/types.h \ - inc/memlayout.h diff --git a/obj/.vars.INIT_CFLAGS b/obj/.vars.INIT_CFLAGS deleted file mode 100644 index 8b13789..0000000 --- a/obj/.vars.INIT_CFLAGS +++ /dev/null @@ -1 +0,0 @@ - diff --git a/obj/.vars.KERN_CFLAGS b/obj/.vars.KERN_CFLAGS deleted file mode 100644 index 49b052d..0000000 --- a/obj/.vars.KERN_CFLAGS +++ /dev/null @@ -1 +0,0 @@ - -O1 -fno-builtin -I. -MD -fno-omit-frame-pointer -std=gnu99 -static -Wall -Wno-format -Wno-unused -Werror -gstabs -m32 -fno-tree-ch -fno-pic -fno-pie -fno-stack-protector -DJOS_KERNEL -gstabs diff --git a/obj/.vars.KERN_LDFLAGS b/obj/.vars.KERN_LDFLAGS deleted file mode 100644 index 29bdd68..0000000 --- a/obj/.vars.KERN_LDFLAGS +++ /dev/null @@ -1 +0,0 @@ --m elf_i386 -T kern/kernel.ld -nostdlib diff --git a/obj/boot/boot b/obj/boot/boot deleted file mode 100755 index e76311a..0000000 Binary files a/obj/boot/boot and /dev/null differ diff --git a/obj/boot/boot.asm b/obj/boot/boot.asm deleted file mode 100644 index f834530..0000000 --- a/obj/boot/boot.asm +++ /dev/null @@ -1,325 +0,0 @@ - -obj/boot/boot.out: file format elf32-i386 - - -Disassembly of section .text: - -00007c00 : -.set CR0_PE_ON, 0x1 # protected mode enable flag - -.globl start -start: - .code16 # Assemble for 16-bit mode - cli # Disable interrupts - 7c00: fa cli - cld # String operations increment - 7c01: fc cld - - # Set up the important data segment registers (DS, ES, SS). - xorw %ax,%ax # Segment number zero - 7c02: 31 c0 xor %eax,%eax - movw %ax,%ds # -> Data Segment - 7c04: 8e d8 mov %eax,%ds - movw %ax,%es # -> Extra Segment - 7c06: 8e c0 mov %eax,%es - movw %ax,%ss # -> Stack Segment - 7c08: 8e d0 mov %eax,%ss - -00007c0a : - # Enable A20: - # For backwards compatibility with the earliest PCs, physical - # address line 20 is tied low, so that addresses higher than - # 1MB wrap around to zero by default. This code undoes this. -seta20.1: - inb $0x64,%al # Wait for not busy - 7c0a: e4 64 in $0x64,%al - testb $0x2,%al - 7c0c: a8 02 test $0x2,%al - jnz seta20.1 - 7c0e: 75 fa jne 7c0a - - movb $0xd1,%al # 0xd1 -> port 0x64 - 7c10: b0 d1 mov $0xd1,%al - outb %al,$0x64 - 7c12: e6 64 out %al,$0x64 - -00007c14 : - -seta20.2: - inb $0x64,%al # Wait for not busy - 7c14: e4 64 in $0x64,%al - testb $0x2,%al - 7c16: a8 02 test $0x2,%al - jnz seta20.2 - 7c18: 75 fa jne 7c14 - - movb $0xdf,%al # 0xdf -> port 0x60 - 7c1a: b0 df mov $0xdf,%al - outb %al,$0x60 - 7c1c: e6 60 out %al,$0x60 - - # Switch from real to protected mode, using a bootstrap GDT - # and segment translation that makes virtual addresses - # identical to their physical addresses, so that the - # effective memory map does not change during the switch. - lgdt gdtdesc - 7c1e: 0f 01 16 lgdtl (%esi) - 7c21: 64 7c 0f fs jl 7c33 - movl %cr0, %eax - 7c24: 20 c0 and %al,%al - orl $CR0_PE_ON, %eax - 7c26: 66 83 c8 01 or $0x1,%ax - movl %eax, %cr0 - 7c2a: 0f 22 c0 mov %eax,%cr0 - - # Jump to next instruction, but in 32-bit code segment. - # Switches processor into 32-bit mode. - ljmp $PROT_MODE_CSEG, $protcseg - 7c2d: ea .byte 0xea - 7c2e: 32 7c 08 00 xor 0x0(%eax,%ecx,1),%bh - -00007c32 : - - .code32 # Assemble for 32-bit mode -protcseg: - # Set up the protected-mode data segment registers - movw $PROT_MODE_DSEG, %ax # Our data segment selector - 7c32: 66 b8 10 00 mov $0x10,%ax - movw %ax, %ds # -> DS: Data Segment - 7c36: 8e d8 mov %eax,%ds - movw %ax, %es # -> ES: Extra Segment - 7c38: 8e c0 mov %eax,%es - movw %ax, %fs # -> FS - 7c3a: 8e e0 mov %eax,%fs - movw %ax, %gs # -> GS - 7c3c: 8e e8 mov %eax,%gs - movw %ax, %ss # -> SS: Stack Segment - 7c3e: 8e d0 mov %eax,%ss - - # Set up the stack pointer and call into C. - movl $start, %esp - 7c40: bc 00 7c 00 00 mov $0x7c00,%esp - call bootmain - 7c45: e8 db 00 00 00 call 7d25 - -00007c4a : - - # If bootmain returns (it shouldn't), loop. -spin: - jmp spin - 7c4a: eb fe jmp 7c4a - -00007c4c : - ... - 7c54: ff (bad) - 7c55: ff 00 incl (%eax) - 7c57: 00 00 add %al,(%eax) - 7c59: 9a cf 00 ff ff 00 00 lcall $0x0,$0xffff00cf - 7c60: 00 .byte 0x0 - 7c61: 92 xchg %eax,%edx - 7c62: cf iret - ... - -00007c64 : - 7c64: 17 pop %ss - 7c65: 00 4c 7c 00 add %cl,0x0(%esp,%edi,2) - ... - -00007c6a : - } -} - -void -waitdisk(void) -{ - 7c6a: f3 0f 1e fb endbr32 - -static inline uint8_t -inb(int port) -{ - uint8_t data; - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); - 7c6e: ba f7 01 00 00 mov $0x1f7,%edx - 7c73: ec in (%dx),%al - // wait for disk reaady - while ((inb(0x1F7) & 0xC0) != 0x40) - 7c74: 83 e0 c0 and $0xffffffc0,%eax - 7c77: 3c 40 cmp $0x40,%al - 7c79: 75 f8 jne 7c73 - /* do nothing */; -} - 7c7b: c3 ret - -00007c7c : - -void -readsect(void *dst, uint32_t offset) -{ - 7c7c: f3 0f 1e fb endbr32 - 7c80: 55 push %ebp - 7c81: 89 e5 mov %esp,%ebp - 7c83: 57 push %edi - 7c84: 50 push %eax - 7c85: 8b 4d 0c mov 0xc(%ebp),%ecx - // wait for disk to be ready - waitdisk(); - 7c88: e8 dd ff ff ff call 7c6a -} - -static inline void -outb(int port, uint8_t data) -{ - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); - 7c8d: b0 01 mov $0x1,%al - 7c8f: ba f2 01 00 00 mov $0x1f2,%edx - 7c94: ee out %al,(%dx) - 7c95: ba f3 01 00 00 mov $0x1f3,%edx - 7c9a: 89 c8 mov %ecx,%eax - 7c9c: ee out %al,(%dx) - - outb(0x1F2, 1); // count = 1 - outb(0x1F3, offset); - outb(0x1F4, offset >> 8); - 7c9d: 89 c8 mov %ecx,%eax - 7c9f: ba f4 01 00 00 mov $0x1f4,%edx - 7ca4: c1 e8 08 shr $0x8,%eax - 7ca7: ee out %al,(%dx) - outb(0x1F5, offset >> 16); - 7ca8: 89 c8 mov %ecx,%eax - 7caa: ba f5 01 00 00 mov $0x1f5,%edx - 7caf: c1 e8 10 shr $0x10,%eax - 7cb2: ee out %al,(%dx) - outb(0x1F6, (offset >> 24) | 0xE0); - 7cb3: 89 c8 mov %ecx,%eax - 7cb5: ba f6 01 00 00 mov $0x1f6,%edx - 7cba: c1 e8 18 shr $0x18,%eax - 7cbd: 83 c8 e0 or $0xffffffe0,%eax - 7cc0: ee out %al,(%dx) - 7cc1: b0 20 mov $0x20,%al - 7cc3: ba f7 01 00 00 mov $0x1f7,%edx - 7cc8: ee out %al,(%dx) - outb(0x1F7, 0x20); // cmd 0x20 - read sectors - - // wait for disk to be ready - waitdisk(); - 7cc9: e8 9c ff ff ff call 7c6a - asm volatile("cld\n\trepne\n\tinsl" - 7cce: 8b 7d 08 mov 0x8(%ebp),%edi - 7cd1: b9 80 00 00 00 mov $0x80,%ecx - 7cd6: ba f0 01 00 00 mov $0x1f0,%edx - 7cdb: fc cld - 7cdc: f2 6d repnz insl (%dx),%es:(%edi) - - // read a sector - insl(0x1F0, dst, SECTSIZE/4); -} - 7cde: 5a pop %edx - 7cdf: 5f pop %edi - 7ce0: 5d pop %ebp - 7ce1: c3 ret - -00007ce2 : -{ - 7ce2: f3 0f 1e fb endbr32 - 7ce6: 55 push %ebp - 7ce7: 89 e5 mov %esp,%ebp - 7ce9: 57 push %edi - 7cea: 56 push %esi - 7ceb: 53 push %ebx - 7cec: 83 ec 0c sub $0xc,%esp - offset = (offset / SECTSIZE) + 1; - 7cef: 8b 7d 10 mov 0x10(%ebp),%edi -{ - 7cf2: 8b 5d 08 mov 0x8(%ebp),%ebx - end_pa = pa + count; - 7cf5: 8b 75 0c mov 0xc(%ebp),%esi - offset = (offset / SECTSIZE) + 1; - 7cf8: c1 ef 09 shr $0x9,%edi - end_pa = pa + count; - 7cfb: 01 de add %ebx,%esi - offset = (offset / SECTSIZE) + 1; - 7cfd: 47 inc %edi - pa &= ~(SECTSIZE - 1); - 7cfe: 81 e3 00 fe ff ff and $0xfffffe00,%ebx - while (pa < end_pa) { - 7d04: 39 f3 cmp %esi,%ebx - 7d06: 73 15 jae 7d1d - readsect((uint8_t*) pa, offset); - 7d08: 50 push %eax - 7d09: 50 push %eax - 7d0a: 57 push %edi - offset++; - 7d0b: 47 inc %edi - readsect((uint8_t*) pa, offset); - 7d0c: 53 push %ebx - pa += SECTSIZE; - 7d0d: 81 c3 00 02 00 00 add $0x200,%ebx - readsect((uint8_t*) pa, offset); - 7d13: e8 64 ff ff ff call 7c7c - offset++; - 7d18: 83 c4 10 add $0x10,%esp - 7d1b: eb e7 jmp 7d04 -} - 7d1d: 8d 65 f4 lea -0xc(%ebp),%esp - 7d20: 5b pop %ebx - 7d21: 5e pop %esi - 7d22: 5f pop %edi - 7d23: 5d pop %ebp - 7d24: c3 ret - -00007d25 : -{ - 7d25: f3 0f 1e fb endbr32 - 7d29: 55 push %ebp - 7d2a: 89 e5 mov %esp,%ebp - 7d2c: 56 push %esi - 7d2d: 53 push %ebx - readseg((uint32_t) ELFHDR, SECTSIZE*8, 0); - 7d2e: 52 push %edx - 7d2f: 6a 00 push $0x0 - 7d31: 68 00 10 00 00 push $0x1000 - 7d36: 68 00 00 01 00 push $0x10000 - 7d3b: e8 a2 ff ff ff call 7ce2 - if (ELFHDR->e_magic != ELF_MAGIC) - 7d40: 83 c4 10 add $0x10,%esp - 7d43: 81 3d 00 00 01 00 7f cmpl $0x464c457f,0x10000 - 7d4a: 45 4c 46 - 7d4d: 75 38 jne 7d87 - ph = (struct Proghdr *) ((uint8_t *) ELFHDR + ELFHDR->e_phoff); - 7d4f: a1 1c 00 01 00 mov 0x1001c,%eax - eph = ph + ELFHDR->e_phnum; - 7d54: 0f b7 35 2c 00 01 00 movzwl 0x1002c,%esi - ph = (struct Proghdr *) ((uint8_t *) ELFHDR + ELFHDR->e_phoff); - 7d5b: 8d 98 00 00 01 00 lea 0x10000(%eax),%ebx - eph = ph + ELFHDR->e_phnum; - 7d61: c1 e6 05 shl $0x5,%esi - 7d64: 01 de add %ebx,%esi - for (; ph < eph; ph++) - 7d66: 39 f3 cmp %esi,%ebx - 7d68: 73 17 jae 7d81 - readseg(ph->p_pa, ph->p_memsz, ph->p_offset); - 7d6a: 50 push %eax - for (; ph < eph; ph++) - 7d6b: 83 c3 20 add $0x20,%ebx - readseg(ph->p_pa, ph->p_memsz, ph->p_offset); - 7d6e: ff 73 e4 pushl -0x1c(%ebx) - 7d71: ff 73 f4 pushl -0xc(%ebx) - 7d74: ff 73 ec pushl -0x14(%ebx) - 7d77: e8 66 ff ff ff call 7ce2 - for (; ph < eph; ph++) - 7d7c: 83 c4 10 add $0x10,%esp - 7d7f: eb e5 jmp 7d66 - ((void (*)(void)) (ELFHDR->e_entry))(); - 7d81: ff 15 18 00 01 00 call *0x10018 -} - -static inline void -outw(int port, uint16_t data) -{ - asm volatile("outw %0,%w1" : : "a" (data), "d" (port)); - 7d87: ba 00 8a 00 00 mov $0x8a00,%edx - 7d8c: b8 00 8a ff ff mov $0xffff8a00,%eax - 7d91: 66 ef out %ax,(%dx) - 7d93: b8 00 8e ff ff mov $0xffff8e00,%eax - 7d98: 66 ef out %ax,(%dx) - 7d9a: eb fe jmp 7d9a diff --git a/obj/boot/boot.o b/obj/boot/boot.o deleted file mode 100644 index 6c598b7..0000000 Binary files a/obj/boot/boot.o and /dev/null differ diff --git a/obj/boot/boot.out b/obj/boot/boot.out deleted file mode 100755 index bcafbd5..0000000 Binary files a/obj/boot/boot.out and /dev/null differ diff --git a/obj/boot/main.o b/obj/boot/main.o deleted file mode 100644 index 1377c1a..0000000 Binary files a/obj/boot/main.o and /dev/null differ diff --git a/obj/kern/console.o b/obj/kern/console.o deleted file mode 100644 index 26c98a3..0000000 Binary files a/obj/kern/console.o and /dev/null differ diff --git a/obj/kern/entry.o b/obj/kern/entry.o deleted file mode 100644 index 228ec89..0000000 Binary files a/obj/kern/entry.o and /dev/null differ diff --git a/obj/kern/entrypgdir.o b/obj/kern/entrypgdir.o deleted file mode 100644 index ee5a872..0000000 Binary files a/obj/kern/entrypgdir.o and /dev/null differ diff --git a/obj/kern/init.o b/obj/kern/init.o deleted file mode 100644 index 0320385..0000000 Binary files a/obj/kern/init.o and /dev/null differ diff --git a/obj/kern/kdebug.o b/obj/kern/kdebug.o deleted file mode 100644 index 9f79a45..0000000 Binary files a/obj/kern/kdebug.o and /dev/null differ diff --git a/obj/kern/kernel b/obj/kern/kernel deleted file mode 100755 index c9a8cd9..0000000 Binary files a/obj/kern/kernel and /dev/null differ diff --git a/obj/kern/kernel.asm b/obj/kern/kernel.asm deleted file mode 100644 index fc152ad..0000000 --- a/obj/kern/kernel.asm +++ /dev/null @@ -1,3349 +0,0 @@ - -obj/kern/kernel: file format elf32-i386 - - -Disassembly of section .text: - -f0100000 <_start+0xeffffff4>: -.globl _start -_start = RELOC(entry) - -.globl entry -entry: - movw $0x1234,0x472 # warm boot -f0100000: 02 b0 ad 1b 00 00 add 0x1bad(%eax),%dh -f0100006: 00 00 add %al,(%eax) -f0100008: fe 4f 52 decb 0x52(%edi) -f010000b: e4 .byte 0xe4 - -f010000c : -f010000c: 66 c7 05 72 04 00 00 movw $0x1234,0x472 -f0100013: 34 12 - # sufficient until we set up our real page table in mem_init - # in lab 2. - - # Load the physical address of entry_pgdir into cr3. entry_pgdir - # is defined in entrypgdir.c. - movl $(RELOC(entry_pgdir)), %eax -f0100015: b8 00 00 11 00 mov $0x110000,%eax - movl %eax, %cr3 -f010001a: 0f 22 d8 mov %eax,%cr3 - # Turn on paging. - movl %cr0, %eax -f010001d: 0f 20 c0 mov %cr0,%eax - orl $(CR0_PE|CR0_PG|CR0_WP), %eax -f0100020: 0d 01 00 01 80 or $0x80010001,%eax - movl %eax, %cr0 -f0100025: 0f 22 c0 mov %eax,%cr0 - - # Now paging is enabled, but we're still running at a low EIP - # (why is this okay?). Jump up above KERNBASE before entering - # C code. - mov $relocated, %eax -f0100028: b8 2f 00 10 f0 mov $0xf010002f,%eax - jmp *%eax -f010002d: ff e0 jmp *%eax - -f010002f : -relocated: - - # Clear the frame pointer register (EBP) - # so that once we get into debugging C code, - # stack backtraces will be terminated properly. - movl $0x0,%ebp # nuke frame pointer -f010002f: bd 00 00 00 00 mov $0x0,%ebp - - # Set the stack pointer - movl $(bootstacktop),%esp -f0100034: bc 00 00 11 f0 mov $0xf0110000,%esp - - # now to C code - call i386_init -f0100039: e8 5a 00 00 00 call f0100098 - -f010003e : - - # Should never get here, but in case we do, just spin. -spin: jmp spin -f010003e: eb fe jmp f010003e - -f0100040 : -#include - -// Test the stack backtrace function (lab 1 only) -void -test_backtrace(int x) -{ -f0100040: f3 0f 1e fb endbr32 -f0100044: 55 push %ebp -f0100045: 89 e5 mov %esp,%ebp -f0100047: 53 push %ebx -f0100048: 83 ec 0c sub $0xc,%esp -f010004b: 8b 5d 08 mov 0x8(%ebp),%ebx - cprintf("entering test_backtrace %d\n", x); -f010004e: 53 push %ebx -f010004f: 68 a0 18 10 f0 push $0xf01018a0 -f0100054: e8 ce 08 00 00 call f0100927 - if (x > 0) -f0100059: 83 c4 10 add $0x10,%esp -f010005c: 85 db test %ebx,%ebx -f010005e: 7e 25 jle f0100085 - test_backtrace(x-1); -f0100060: 83 ec 0c sub $0xc,%esp -f0100063: 8d 43 ff lea -0x1(%ebx),%eax -f0100066: 50 push %eax -f0100067: e8 d4 ff ff ff call f0100040 -f010006c: 83 c4 10 add $0x10,%esp - else - mon_backtrace(0, 0, 0); - cprintf("leaving test_backtrace %d\n", x); -f010006f: 83 ec 08 sub $0x8,%esp -f0100072: 53 push %ebx -f0100073: 68 bc 18 10 f0 push $0xf01018bc -f0100078: e8 aa 08 00 00 call f0100927 -} -f010007d: 83 c4 10 add $0x10,%esp -f0100080: 8b 5d fc mov -0x4(%ebp),%ebx -f0100083: c9 leave -f0100084: c3 ret - mon_backtrace(0, 0, 0); -f0100085: 83 ec 04 sub $0x4,%esp -f0100088: 6a 00 push $0x0 -f010008a: 6a 00 push $0x0 -f010008c: 6a 00 push $0x0 -f010008e: e8 ff 06 00 00 call f0100792 -f0100093: 83 c4 10 add $0x10,%esp -f0100096: eb d7 jmp f010006f - -f0100098 : - -void -i386_init(void) -{ -f0100098: f3 0f 1e fb endbr32 -f010009c: 55 push %ebp -f010009d: 89 e5 mov %esp,%ebp -f010009f: 83 ec 0c sub $0xc,%esp - extern char edata[], end[]; - - // Before doing anything else, complete the ELF loading process. - // Clear the uninitialized global data (BSS) section of our program. - // This ensures that all static/global variables start out zero. - memset(edata, 0, end - edata); -f01000a2: b8 40 29 11 f0 mov $0xf0112940,%eax -f01000a7: 2d 00 23 11 f0 sub $0xf0112300,%eax -f01000ac: 50 push %eax -f01000ad: 6a 00 push $0x0 -f01000af: 68 00 23 11 f0 push $0xf0112300 -f01000b4: e8 62 13 00 00 call f010141b - - // Initialize the console. - // Can't call cprintf until after we do this! - cons_init(); -f01000b9: e8 af 04 00 00 call f010056d - - cprintf("6828 decimal is %o octal!\n", 6828); -f01000be: 83 c4 08 add $0x8,%esp -f01000c1: 68 ac 1a 00 00 push $0x1aac -f01000c6: 68 d7 18 10 f0 push $0xf01018d7 -f01000cb: e8 57 08 00 00 call f0100927 - - // Test the stack backtrace function (lab 1 only) - test_backtrace(5); -f01000d0: c7 04 24 05 00 00 00 movl $0x5,(%esp) -f01000d7: e8 64 ff ff ff call f0100040 -f01000dc: 83 c4 10 add $0x10,%esp - - // Drop into the kernel monitor. - while (1) - monitor(NULL); -f01000df: 83 ec 0c sub $0xc,%esp -f01000e2: 6a 00 push $0x0 -f01000e4: e8 b3 06 00 00 call f010079c -f01000e9: 83 c4 10 add $0x10,%esp -f01000ec: eb f1 jmp f01000df - -f01000ee <_panic>: - * Panic is called on unresolvable fatal errors. - * It prints "panic: mesg", and then enters the kernel monitor. - */ -void -_panic(const char *file, int line, const char *fmt,...) -{ -f01000ee: f3 0f 1e fb endbr32 -f01000f2: 55 push %ebp -f01000f3: 89 e5 mov %esp,%ebp -f01000f5: 56 push %esi -f01000f6: 53 push %ebx -f01000f7: 8b 75 10 mov 0x10(%ebp),%esi - va_list ap; - - if (panicstr) -f01000fa: 83 3d 44 29 11 f0 00 cmpl $0x0,0xf0112944 -f0100101: 74 0f je f0100112 <_panic+0x24> - va_end(ap); - -dead: - /* break into the kernel monitor */ - while (1) - monitor(NULL); -f0100103: 83 ec 0c sub $0xc,%esp -f0100106: 6a 00 push $0x0 -f0100108: e8 8f 06 00 00 call f010079c -f010010d: 83 c4 10 add $0x10,%esp -f0100110: eb f1 jmp f0100103 <_panic+0x15> - panicstr = fmt; -f0100112: 89 35 44 29 11 f0 mov %esi,0xf0112944 - asm volatile("cli; cld"); -f0100118: fa cli -f0100119: fc cld - va_start(ap, fmt); -f010011a: 8d 5d 14 lea 0x14(%ebp),%ebx - cprintf("kernel panic at %s:%d: ", file, line); -f010011d: 83 ec 04 sub $0x4,%esp -f0100120: ff 75 0c pushl 0xc(%ebp) -f0100123: ff 75 08 pushl 0x8(%ebp) -f0100126: 68 f2 18 10 f0 push $0xf01018f2 -f010012b: e8 f7 07 00 00 call f0100927 - vcprintf(fmt, ap); -f0100130: 83 c4 08 add $0x8,%esp -f0100133: 53 push %ebx -f0100134: 56 push %esi -f0100135: e8 c3 07 00 00 call f01008fd - cprintf("\n"); -f010013a: c7 04 24 2e 19 10 f0 movl $0xf010192e,(%esp) -f0100141: e8 e1 07 00 00 call f0100927 -f0100146: 83 c4 10 add $0x10,%esp -f0100149: eb b8 jmp f0100103 <_panic+0x15> - -f010014b <_warn>: -} - -/* like panic, but don't */ -void -_warn(const char *file, int line, const char *fmt,...) -{ -f010014b: f3 0f 1e fb endbr32 -f010014f: 55 push %ebp -f0100150: 89 e5 mov %esp,%ebp -f0100152: 53 push %ebx -f0100153: 83 ec 08 sub $0x8,%esp - va_list ap; - - va_start(ap, fmt); -f0100156: 8d 5d 14 lea 0x14(%ebp),%ebx - cprintf("kernel warning at %s:%d: ", file, line); -f0100159: ff 75 0c pushl 0xc(%ebp) -f010015c: ff 75 08 pushl 0x8(%ebp) -f010015f: 68 0a 19 10 f0 push $0xf010190a -f0100164: e8 be 07 00 00 call f0100927 - vcprintf(fmt, ap); -f0100169: 83 c4 08 add $0x8,%esp -f010016c: 53 push %ebx -f010016d: ff 75 10 pushl 0x10(%ebp) -f0100170: e8 88 07 00 00 call f01008fd - cprintf("\n"); -f0100175: c7 04 24 2e 19 10 f0 movl $0xf010192e,(%esp) -f010017c: e8 a6 07 00 00 call f0100927 - va_end(ap); -} -f0100181: 83 c4 10 add $0x10,%esp -f0100184: 8b 5d fc mov -0x4(%ebp),%ebx -f0100187: c9 leave -f0100188: c3 ret - -f0100189 : - -static bool serial_exists; - -static int -serial_proc_data(void) -{ -f0100189: f3 0f 1e fb endbr32 - -static inline uint8_t -inb(int port) -{ - uint8_t data; - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f010018d: ba fd 03 00 00 mov $0x3fd,%edx -f0100192: ec in (%dx),%al - if (!(inb(COM1+COM_LSR) & COM_LSR_DATA)) -f0100193: a8 01 test $0x1,%al -f0100195: 74 0a je f01001a1 -f0100197: ba f8 03 00 00 mov $0x3f8,%edx -f010019c: ec in (%dx),%al - return -1; - return inb(COM1+COM_RX); -f010019d: 0f b6 c0 movzbl %al,%eax -f01001a0: c3 ret - return -1; -f01001a1: b8 ff ff ff ff mov $0xffffffff,%eax -} -f01001a6: c3 ret - -f01001a7 : - -// called by device interrupt routines to feed input characters -// into the circular console input buffer. -static void -cons_intr(int (*proc)(void)) -{ -f01001a7: 55 push %ebp -f01001a8: 89 e5 mov %esp,%ebp -f01001aa: 53 push %ebx -f01001ab: 83 ec 04 sub $0x4,%esp -f01001ae: 89 c3 mov %eax,%ebx - int c; - - while ((c = (*proc)()) != -1) { -f01001b0: ff d3 call *%ebx -f01001b2: 83 f8 ff cmp $0xffffffff,%eax -f01001b5: 74 29 je f01001e0 - if (c == 0) -f01001b7: 85 c0 test %eax,%eax -f01001b9: 74 f5 je f01001b0 - continue; - cons.buf[cons.wpos++] = c; -f01001bb: 8b 0d 24 25 11 f0 mov 0xf0112524,%ecx -f01001c1: 8d 51 01 lea 0x1(%ecx),%edx -f01001c4: 88 81 20 23 11 f0 mov %al,-0xfeedce0(%ecx) - if (cons.wpos == CONSBUFSIZE) -f01001ca: 81 fa 00 02 00 00 cmp $0x200,%edx - cons.wpos = 0; -f01001d0: b8 00 00 00 00 mov $0x0,%eax -f01001d5: 0f 44 d0 cmove %eax,%edx -f01001d8: 89 15 24 25 11 f0 mov %edx,0xf0112524 -f01001de: eb d0 jmp f01001b0 - } -} -f01001e0: 83 c4 04 add $0x4,%esp -f01001e3: 5b pop %ebx -f01001e4: 5d pop %ebp -f01001e5: c3 ret - -f01001e6 : -{ -f01001e6: f3 0f 1e fb endbr32 -f01001ea: 55 push %ebp -f01001eb: 89 e5 mov %esp,%ebp -f01001ed: 53 push %ebx -f01001ee: 83 ec 04 sub $0x4,%esp -f01001f1: ba 64 00 00 00 mov $0x64,%edx -f01001f6: ec in (%dx),%al - if ((stat & KBS_DIB) == 0) -f01001f7: a8 01 test $0x1,%al -f01001f9: 0f 84 f2 00 00 00 je f01002f1 - if (stat & KBS_TERR) -f01001ff: a8 20 test $0x20,%al -f0100201: 0f 85 f1 00 00 00 jne f01002f8 -f0100207: ba 60 00 00 00 mov $0x60,%edx -f010020c: ec in (%dx),%al -f010020d: 89 c2 mov %eax,%edx - if (data == 0xE0) { -f010020f: 3c e0 cmp $0xe0,%al -f0100211: 74 61 je f0100274 - } else if (data & 0x80) { -f0100213: 84 c0 test %al,%al -f0100215: 78 70 js f0100287 - } else if (shift & E0ESC) { -f0100217: 8b 0d 00 23 11 f0 mov 0xf0112300,%ecx -f010021d: f6 c1 40 test $0x40,%cl -f0100220: 74 0e je f0100230 - data |= 0x80; -f0100222: 83 c8 80 or $0xffffff80,%eax -f0100225: 89 c2 mov %eax,%edx - shift &= ~E0ESC; -f0100227: 83 e1 bf and $0xffffffbf,%ecx -f010022a: 89 0d 00 23 11 f0 mov %ecx,0xf0112300 - shift |= shiftcode[data]; -f0100230: 0f b6 d2 movzbl %dl,%edx -f0100233: 0f b6 82 80 1a 10 f0 movzbl -0xfefe580(%edx),%eax -f010023a: 0b 05 00 23 11 f0 or 0xf0112300,%eax - shift ^= togglecode[data]; -f0100240: 0f b6 8a 80 19 10 f0 movzbl -0xfefe680(%edx),%ecx -f0100247: 31 c8 xor %ecx,%eax -f0100249: a3 00 23 11 f0 mov %eax,0xf0112300 - c = charcode[shift & (CTL | SHIFT)][data]; -f010024e: 89 c1 mov %eax,%ecx -f0100250: 83 e1 03 and $0x3,%ecx -f0100253: 8b 0c 8d 60 19 10 f0 mov -0xfefe6a0(,%ecx,4),%ecx -f010025a: 0f b6 14 11 movzbl (%ecx,%edx,1),%edx -f010025e: 0f b6 da movzbl %dl,%ebx - if (shift & CAPSLOCK) { -f0100261: a8 08 test $0x8,%al -f0100263: 74 61 je f01002c6 - if ('a' <= c && c <= 'z') -f0100265: 89 da mov %ebx,%edx -f0100267: 8d 4b 9f lea -0x61(%ebx),%ecx -f010026a: 83 f9 19 cmp $0x19,%ecx -f010026d: 77 4b ja f01002ba - c += 'A' - 'a'; -f010026f: 83 eb 20 sub $0x20,%ebx -f0100272: eb 0c jmp f0100280 - shift |= E0ESC; -f0100274: 83 0d 00 23 11 f0 40 orl $0x40,0xf0112300 - return 0; -f010027b: bb 00 00 00 00 mov $0x0,%ebx -} -f0100280: 89 d8 mov %ebx,%eax -f0100282: 8b 5d fc mov -0x4(%ebp),%ebx -f0100285: c9 leave -f0100286: c3 ret - data = (shift & E0ESC ? data : data & 0x7F); -f0100287: 8b 0d 00 23 11 f0 mov 0xf0112300,%ecx -f010028d: 89 cb mov %ecx,%ebx -f010028f: 83 e3 40 and $0x40,%ebx -f0100292: 83 e0 7f and $0x7f,%eax -f0100295: 85 db test %ebx,%ebx -f0100297: 0f 44 d0 cmove %eax,%edx - shift &= ~(shiftcode[data] | E0ESC); -f010029a: 0f b6 d2 movzbl %dl,%edx -f010029d: 0f b6 82 80 1a 10 f0 movzbl -0xfefe580(%edx),%eax -f01002a4: 83 c8 40 or $0x40,%eax -f01002a7: 0f b6 c0 movzbl %al,%eax -f01002aa: f7 d0 not %eax -f01002ac: 21 c8 and %ecx,%eax -f01002ae: a3 00 23 11 f0 mov %eax,0xf0112300 - return 0; -f01002b3: bb 00 00 00 00 mov $0x0,%ebx -f01002b8: eb c6 jmp f0100280 - else if ('A' <= c && c <= 'Z') -f01002ba: 83 ea 41 sub $0x41,%edx - c += 'a' - 'A'; -f01002bd: 8d 4b 20 lea 0x20(%ebx),%ecx -f01002c0: 83 fa 1a cmp $0x1a,%edx -f01002c3: 0f 42 d9 cmovb %ecx,%ebx - if (!(~shift & (CTL | ALT)) && c == KEY_DEL) { -f01002c6: f7 d0 not %eax -f01002c8: a8 06 test $0x6,%al -f01002ca: 75 b4 jne f0100280 -f01002cc: 81 fb e9 00 00 00 cmp $0xe9,%ebx -f01002d2: 75 ac jne f0100280 - cprintf("Rebooting!\n"); -f01002d4: 83 ec 0c sub $0xc,%esp -f01002d7: 68 24 19 10 f0 push $0xf0101924 -f01002dc: e8 46 06 00 00 call f0100927 -} - -static inline void -outb(int port, uint8_t data) -{ - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f01002e1: b8 03 00 00 00 mov $0x3,%eax -f01002e6: ba 92 00 00 00 mov $0x92,%edx -f01002eb: ee out %al,(%dx) -} -f01002ec: 83 c4 10 add $0x10,%esp -f01002ef: eb 8f jmp f0100280 - return -1; -f01002f1: bb ff ff ff ff mov $0xffffffff,%ebx -f01002f6: eb 88 jmp f0100280 - return -1; -f01002f8: bb ff ff ff ff mov $0xffffffff,%ebx -f01002fd: eb 81 jmp f0100280 - -f01002ff : -} - -// output a character to the console -static void -cons_putc(int c) -{ -f01002ff: 55 push %ebp -f0100300: 89 e5 mov %esp,%ebp -f0100302: 57 push %edi -f0100303: 56 push %esi -f0100304: 53 push %ebx -f0100305: 83 ec 1c sub $0x1c,%esp -f0100308: 89 c1 mov %eax,%ecx - for (i = 0; -f010030a: be 00 00 00 00 mov $0x0,%esi - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f010030f: bf fd 03 00 00 mov $0x3fd,%edi -f0100314: bb 84 00 00 00 mov $0x84,%ebx -f0100319: 89 fa mov %edi,%edx -f010031b: ec in (%dx),%al - !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; -f010031c: a8 20 test $0x20,%al -f010031e: 75 13 jne f0100333 -f0100320: 81 fe ff 31 00 00 cmp $0x31ff,%esi -f0100326: 7f 0b jg f0100333 -f0100328: 89 da mov %ebx,%edx -f010032a: ec in (%dx),%al -f010032b: ec in (%dx),%al -f010032c: ec in (%dx),%al -f010032d: ec in (%dx),%al - i++) -f010032e: 83 c6 01 add $0x1,%esi -f0100331: eb e6 jmp f0100319 - outb(COM1 + COM_TX, c); -f0100333: 88 4d e7 mov %cl,-0x19(%ebp) - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f0100336: ba f8 03 00 00 mov $0x3f8,%edx -f010033b: 89 c8 mov %ecx,%eax -f010033d: ee out %al,(%dx) - for (i = 0; !(inb(0x378+1) & 0x80) && i < 12800; i++) -f010033e: be 00 00 00 00 mov $0x0,%esi - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f0100343: bf 79 03 00 00 mov $0x379,%edi -f0100348: bb 84 00 00 00 mov $0x84,%ebx -f010034d: 89 fa mov %edi,%edx -f010034f: ec in (%dx),%al -f0100350: 81 fe ff 31 00 00 cmp $0x31ff,%esi -f0100356: 7f 0f jg f0100367 -f0100358: 84 c0 test %al,%al -f010035a: 78 0b js f0100367 -f010035c: 89 da mov %ebx,%edx -f010035e: ec in (%dx),%al -f010035f: ec in (%dx),%al -f0100360: ec in (%dx),%al -f0100361: ec in (%dx),%al -f0100362: 83 c6 01 add $0x1,%esi -f0100365: eb e6 jmp f010034d - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f0100367: ba 78 03 00 00 mov $0x378,%edx -f010036c: 0f b6 45 e7 movzbl -0x19(%ebp),%eax -f0100370: ee out %al,(%dx) -f0100371: ba 7a 03 00 00 mov $0x37a,%edx -f0100376: b8 0d 00 00 00 mov $0xd,%eax -f010037b: ee out %al,(%dx) -f010037c: b8 08 00 00 00 mov $0x8,%eax -f0100381: ee out %al,(%dx) - c |= 0x0700; -f0100382: 89 c8 mov %ecx,%eax -f0100384: 80 cc 07 or $0x7,%ah -f0100387: f7 c1 00 ff ff ff test $0xffffff00,%ecx -f010038d: 0f 44 c8 cmove %eax,%ecx - switch (c & 0xff) { -f0100390: 0f b6 c1 movzbl %cl,%eax -f0100393: 80 f9 0a cmp $0xa,%cl -f0100396: 0f 84 dd 00 00 00 je f0100479 -f010039c: 83 f8 0a cmp $0xa,%eax -f010039f: 7f 46 jg f01003e7 -f01003a1: 83 f8 08 cmp $0x8,%eax -f01003a4: 0f 84 a7 00 00 00 je f0100451 -f01003aa: 83 f8 09 cmp $0x9,%eax -f01003ad: 0f 85 d3 00 00 00 jne f0100486 - cons_putc(' '); -f01003b3: b8 20 00 00 00 mov $0x20,%eax -f01003b8: e8 42 ff ff ff call f01002ff - cons_putc(' '); -f01003bd: b8 20 00 00 00 mov $0x20,%eax -f01003c2: e8 38 ff ff ff call f01002ff - cons_putc(' '); -f01003c7: b8 20 00 00 00 mov $0x20,%eax -f01003cc: e8 2e ff ff ff call f01002ff - cons_putc(' '); -f01003d1: b8 20 00 00 00 mov $0x20,%eax -f01003d6: e8 24 ff ff ff call f01002ff - cons_putc(' '); -f01003db: b8 20 00 00 00 mov $0x20,%eax -f01003e0: e8 1a ff ff ff call f01002ff - break; -f01003e5: eb 25 jmp f010040c - switch (c & 0xff) { -f01003e7: 83 f8 0d cmp $0xd,%eax -f01003ea: 0f 85 96 00 00 00 jne f0100486 - crt_pos -= (crt_pos % CRT_COLS); -f01003f0: 0f b7 05 28 25 11 f0 movzwl 0xf0112528,%eax -f01003f7: 69 c0 cd cc 00 00 imul $0xcccd,%eax,%eax -f01003fd: c1 e8 16 shr $0x16,%eax -f0100400: 8d 04 80 lea (%eax,%eax,4),%eax -f0100403: c1 e0 04 shl $0x4,%eax -f0100406: 66 a3 28 25 11 f0 mov %ax,0xf0112528 - if (crt_pos >= CRT_SIZE) { -f010040c: 66 81 3d 28 25 11 f0 cmpw $0x7cf,0xf0112528 -f0100413: cf 07 -f0100415: 0f 87 8e 00 00 00 ja f01004a9 - outb(addr_6845, 14); -f010041b: 8b 0d 30 25 11 f0 mov 0xf0112530,%ecx -f0100421: b8 0e 00 00 00 mov $0xe,%eax -f0100426: 89 ca mov %ecx,%edx -f0100428: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos >> 8); -f0100429: 0f b7 1d 28 25 11 f0 movzwl 0xf0112528,%ebx -f0100430: 8d 71 01 lea 0x1(%ecx),%esi -f0100433: 89 d8 mov %ebx,%eax -f0100435: 66 c1 e8 08 shr $0x8,%ax -f0100439: 89 f2 mov %esi,%edx -f010043b: ee out %al,(%dx) -f010043c: b8 0f 00 00 00 mov $0xf,%eax -f0100441: 89 ca mov %ecx,%edx -f0100443: ee out %al,(%dx) -f0100444: 89 d8 mov %ebx,%eax -f0100446: 89 f2 mov %esi,%edx -f0100448: ee out %al,(%dx) - serial_putc(c); - lpt_putc(c); - cga_putc(c); -} -f0100449: 8d 65 f4 lea -0xc(%ebp),%esp -f010044c: 5b pop %ebx -f010044d: 5e pop %esi -f010044e: 5f pop %edi -f010044f: 5d pop %ebp -f0100450: c3 ret - if (crt_pos > 0) { -f0100451: 0f b7 05 28 25 11 f0 movzwl 0xf0112528,%eax -f0100458: 66 85 c0 test %ax,%ax -f010045b: 74 be je f010041b - crt_pos--; -f010045d: 83 e8 01 sub $0x1,%eax -f0100460: 66 a3 28 25 11 f0 mov %ax,0xf0112528 - crt_buf[crt_pos] = (c & ~0xff) | ' '; -f0100466: 0f b7 d0 movzwl %ax,%edx -f0100469: b1 00 mov $0x0,%cl -f010046b: 83 c9 20 or $0x20,%ecx -f010046e: a1 2c 25 11 f0 mov 0xf011252c,%eax -f0100473: 66 89 0c 50 mov %cx,(%eax,%edx,2) -f0100477: eb 93 jmp f010040c - crt_pos += CRT_COLS; -f0100479: 66 83 05 28 25 11 f0 addw $0x50,0xf0112528 -f0100480: 50 -f0100481: e9 6a ff ff ff jmp f01003f0 - crt_buf[crt_pos++] = c; /* write the character */ -f0100486: 0f b7 05 28 25 11 f0 movzwl 0xf0112528,%eax -f010048d: 8d 50 01 lea 0x1(%eax),%edx -f0100490: 66 89 15 28 25 11 f0 mov %dx,0xf0112528 -f0100497: 0f b7 c0 movzwl %ax,%eax -f010049a: 8b 15 2c 25 11 f0 mov 0xf011252c,%edx -f01004a0: 66 89 0c 42 mov %cx,(%edx,%eax,2) - break; -f01004a4: e9 63 ff ff ff jmp f010040c - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); -f01004a9: a1 2c 25 11 f0 mov 0xf011252c,%eax -f01004ae: 83 ec 04 sub $0x4,%esp -f01004b1: 68 00 0f 00 00 push $0xf00 -f01004b6: 8d 90 a0 00 00 00 lea 0xa0(%eax),%edx -f01004bc: 52 push %edx -f01004bd: 50 push %eax -f01004be: e8 a4 0f 00 00 call f0101467 - crt_buf[i] = 0x0700 | ' '; -f01004c3: 8b 15 2c 25 11 f0 mov 0xf011252c,%edx -f01004c9: 8d 82 00 0f 00 00 lea 0xf00(%edx),%eax -f01004cf: 81 c2 a0 0f 00 00 add $0xfa0,%edx -f01004d5: 83 c4 10 add $0x10,%esp -f01004d8: 66 c7 00 20 07 movw $0x720,(%eax) -f01004dd: 83 c0 02 add $0x2,%eax - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i++) -f01004e0: 39 d0 cmp %edx,%eax -f01004e2: 75 f4 jne f01004d8 - crt_pos -= CRT_COLS; -f01004e4: 66 83 2d 28 25 11 f0 subw $0x50,0xf0112528 -f01004eb: 50 -f01004ec: e9 2a ff ff ff jmp f010041b - -f01004f1 : -{ -f01004f1: f3 0f 1e fb endbr32 - if (serial_exists) -f01004f5: 80 3d 34 25 11 f0 00 cmpb $0x0,0xf0112534 -f01004fc: 75 01 jne f01004ff -f01004fe: c3 ret -{ -f01004ff: 55 push %ebp -f0100500: 89 e5 mov %esp,%ebp -f0100502: 83 ec 08 sub $0x8,%esp - cons_intr(serial_proc_data); -f0100505: b8 89 01 10 f0 mov $0xf0100189,%eax -f010050a: e8 98 fc ff ff call f01001a7 -} -f010050f: c9 leave -f0100510: c3 ret - -f0100511 : -{ -f0100511: f3 0f 1e fb endbr32 -f0100515: 55 push %ebp -f0100516: 89 e5 mov %esp,%ebp -f0100518: 83 ec 08 sub $0x8,%esp - cons_intr(kbd_proc_data); -f010051b: b8 e6 01 10 f0 mov $0xf01001e6,%eax -f0100520: e8 82 fc ff ff call f01001a7 -} -f0100525: c9 leave -f0100526: c3 ret - -f0100527 : -{ -f0100527: f3 0f 1e fb endbr32 -f010052b: 55 push %ebp -f010052c: 89 e5 mov %esp,%ebp -f010052e: 83 ec 08 sub $0x8,%esp - serial_intr(); -f0100531: e8 bb ff ff ff call f01004f1 - kbd_intr(); -f0100536: e8 d6 ff ff ff call f0100511 - if (cons.rpos != cons.wpos) { -f010053b: a1 20 25 11 f0 mov 0xf0112520,%eax - return 0; -f0100540: ba 00 00 00 00 mov $0x0,%edx - if (cons.rpos != cons.wpos) { -f0100545: 3b 05 24 25 11 f0 cmp 0xf0112524,%eax -f010054b: 74 1c je f0100569 - c = cons.buf[cons.rpos++]; -f010054d: 8d 48 01 lea 0x1(%eax),%ecx -f0100550: 0f b6 90 20 23 11 f0 movzbl -0xfeedce0(%eax),%edx - cons.rpos = 0; -f0100557: 3d ff 01 00 00 cmp $0x1ff,%eax -f010055c: b8 00 00 00 00 mov $0x0,%eax -f0100561: 0f 45 c1 cmovne %ecx,%eax -f0100564: a3 20 25 11 f0 mov %eax,0xf0112520 -} -f0100569: 89 d0 mov %edx,%eax -f010056b: c9 leave -f010056c: c3 ret - -f010056d : - -// initialize the console devices -void -cons_init(void) -{ -f010056d: f3 0f 1e fb endbr32 -f0100571: 55 push %ebp -f0100572: 89 e5 mov %esp,%ebp -f0100574: 57 push %edi -f0100575: 56 push %esi -f0100576: 53 push %ebx -f0100577: 83 ec 0c sub $0xc,%esp - was = *cp; -f010057a: 0f b7 15 00 80 0b f0 movzwl 0xf00b8000,%edx - *cp = (uint16_t) 0xA55A; -f0100581: 66 c7 05 00 80 0b f0 movw $0xa55a,0xf00b8000 -f0100588: 5a a5 - if (*cp != 0xA55A) { -f010058a: 0f b7 05 00 80 0b f0 movzwl 0xf00b8000,%eax -f0100591: 66 3d 5a a5 cmp $0xa55a,%ax -f0100595: 0f 84 b7 00 00 00 je f0100652 - addr_6845 = MONO_BASE; -f010059b: c7 05 30 25 11 f0 b4 movl $0x3b4,0xf0112530 -f01005a2: 03 00 00 - cp = (uint16_t*) (KERNBASE + MONO_BUF); -f01005a5: be 00 00 0b f0 mov $0xf00b0000,%esi - outb(addr_6845, 14); -f01005aa: 8b 3d 30 25 11 f0 mov 0xf0112530,%edi -f01005b0: b8 0e 00 00 00 mov $0xe,%eax -f01005b5: 89 fa mov %edi,%edx -f01005b7: ee out %al,(%dx) - pos = inb(addr_6845 + 1) << 8; -f01005b8: 8d 4f 01 lea 0x1(%edi),%ecx - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f01005bb: 89 ca mov %ecx,%edx -f01005bd: ec in (%dx),%al -f01005be: 0f b6 c0 movzbl %al,%eax -f01005c1: c1 e0 08 shl $0x8,%eax -f01005c4: 89 c3 mov %eax,%ebx - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f01005c6: b8 0f 00 00 00 mov $0xf,%eax -f01005cb: 89 fa mov %edi,%edx -f01005cd: ee out %al,(%dx) - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f01005ce: 89 ca mov %ecx,%edx -f01005d0: ec in (%dx),%al - crt_buf = (uint16_t*) cp; -f01005d1: 89 35 2c 25 11 f0 mov %esi,0xf011252c - pos |= inb(addr_6845 + 1); -f01005d7: 0f b6 c0 movzbl %al,%eax -f01005da: 09 d8 or %ebx,%eax - crt_pos = pos; -f01005dc: 66 a3 28 25 11 f0 mov %ax,0xf0112528 - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f01005e2: bb 00 00 00 00 mov $0x0,%ebx -f01005e7: b9 fa 03 00 00 mov $0x3fa,%ecx -f01005ec: 89 d8 mov %ebx,%eax -f01005ee: 89 ca mov %ecx,%edx -f01005f0: ee out %al,(%dx) -f01005f1: bf fb 03 00 00 mov $0x3fb,%edi -f01005f6: b8 80 ff ff ff mov $0xffffff80,%eax -f01005fb: 89 fa mov %edi,%edx -f01005fd: ee out %al,(%dx) -f01005fe: b8 0c 00 00 00 mov $0xc,%eax -f0100603: ba f8 03 00 00 mov $0x3f8,%edx -f0100608: ee out %al,(%dx) -f0100609: be f9 03 00 00 mov $0x3f9,%esi -f010060e: 89 d8 mov %ebx,%eax -f0100610: 89 f2 mov %esi,%edx -f0100612: ee out %al,(%dx) -f0100613: b8 03 00 00 00 mov $0x3,%eax -f0100618: 89 fa mov %edi,%edx -f010061a: ee out %al,(%dx) -f010061b: ba fc 03 00 00 mov $0x3fc,%edx -f0100620: 89 d8 mov %ebx,%eax -f0100622: ee out %al,(%dx) -f0100623: b8 01 00 00 00 mov $0x1,%eax -f0100628: 89 f2 mov %esi,%edx -f010062a: ee out %al,(%dx) - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f010062b: ba fd 03 00 00 mov $0x3fd,%edx -f0100630: ec in (%dx),%al -f0100631: 89 c3 mov %eax,%ebx - serial_exists = (inb(COM1+COM_LSR) != 0xFF); -f0100633: 3c ff cmp $0xff,%al -f0100635: 0f 95 05 34 25 11 f0 setne 0xf0112534 -f010063c: 89 ca mov %ecx,%edx -f010063e: ec in (%dx),%al -f010063f: ba f8 03 00 00 mov $0x3f8,%edx -f0100644: ec in (%dx),%al - cga_init(); - kbd_init(); - serial_init(); - - if (!serial_exists) -f0100645: 80 fb ff cmp $0xff,%bl -f0100648: 74 23 je f010066d - cprintf("Serial port does not exist!\n"); -} -f010064a: 8d 65 f4 lea -0xc(%ebp),%esp -f010064d: 5b pop %ebx -f010064e: 5e pop %esi -f010064f: 5f pop %edi -f0100650: 5d pop %ebp -f0100651: c3 ret - *cp = was; -f0100652: 66 89 15 00 80 0b f0 mov %dx,0xf00b8000 - addr_6845 = CGA_BASE; -f0100659: c7 05 30 25 11 f0 d4 movl $0x3d4,0xf0112530 -f0100660: 03 00 00 - cp = (uint16_t*) (KERNBASE + CGA_BUF); -f0100663: be 00 80 0b f0 mov $0xf00b8000,%esi -f0100668: e9 3d ff ff ff jmp f01005aa - cprintf("Serial port does not exist!\n"); -f010066d: 83 ec 0c sub $0xc,%esp -f0100670: 68 30 19 10 f0 push $0xf0101930 -f0100675: e8 ad 02 00 00 call f0100927 -f010067a: 83 c4 10 add $0x10,%esp -} -f010067d: eb cb jmp f010064a - -f010067f : - -// `High'-level console I/O. Used by readline and cprintf. - -void -cputchar(int c) -{ -f010067f: f3 0f 1e fb endbr32 -f0100683: 55 push %ebp -f0100684: 89 e5 mov %esp,%ebp -f0100686: 83 ec 08 sub $0x8,%esp - cons_putc(c); -f0100689: 8b 45 08 mov 0x8(%ebp),%eax -f010068c: e8 6e fc ff ff call f01002ff -} -f0100691: c9 leave -f0100692: c3 ret - -f0100693 : - -int -getchar(void) -{ -f0100693: f3 0f 1e fb endbr32 -f0100697: 55 push %ebp -f0100698: 89 e5 mov %esp,%ebp -f010069a: 83 ec 08 sub $0x8,%esp - int c; - - while ((c = cons_getc()) == 0) -f010069d: e8 85 fe ff ff call f0100527 -f01006a2: 85 c0 test %eax,%eax -f01006a4: 74 f7 je f010069d - /* do nothing */; - return c; -} -f01006a6: c9 leave -f01006a7: c3 ret - -f01006a8 : - -int -iscons(int fdnum) -{ -f01006a8: f3 0f 1e fb endbr32 - // used by readline - return 1; -} -f01006ac: b8 01 00 00 00 mov $0x1,%eax -f01006b1: c3 ret - -f01006b2 : - -/***** Implementations of basic kernel monitor commands *****/ - -int -mon_help(int argc, char **argv, struct Trapframe *tf) -{ -f01006b2: f3 0f 1e fb endbr32 -f01006b6: 55 push %ebp -f01006b7: 89 e5 mov %esp,%ebp -f01006b9: 83 ec 0c sub $0xc,%esp - int i; - - for (i = 0; i < ARRAY_SIZE(commands); i++) - cprintf("%s - %s\n", commands[i].name, commands[i].desc); -f01006bc: 68 80 1b 10 f0 push $0xf0101b80 -f01006c1: 68 9e 1b 10 f0 push $0xf0101b9e -f01006c6: 68 a3 1b 10 f0 push $0xf0101ba3 -f01006cb: e8 57 02 00 00 call f0100927 -f01006d0: 83 c4 0c add $0xc,%esp -f01006d3: 68 0c 1c 10 f0 push $0xf0101c0c -f01006d8: 68 ac 1b 10 f0 push $0xf0101bac -f01006dd: 68 a3 1b 10 f0 push $0xf0101ba3 -f01006e2: e8 40 02 00 00 call f0100927 - return 0; -} -f01006e7: b8 00 00 00 00 mov $0x0,%eax -f01006ec: c9 leave -f01006ed: c3 ret - -f01006ee : - -int -mon_kerninfo(int argc, char **argv, struct Trapframe *tf) -{ -f01006ee: f3 0f 1e fb endbr32 -f01006f2: 55 push %ebp -f01006f3: 89 e5 mov %esp,%ebp -f01006f5: 83 ec 14 sub $0x14,%esp - extern char _start[], entry[], etext[], edata[], end[]; - - cprintf("Special kernel symbols:\n"); -f01006f8: 68 b5 1b 10 f0 push $0xf0101bb5 -f01006fd: e8 25 02 00 00 call f0100927 - cprintf(" _start %08x (phys)\n", _start); -f0100702: 83 c4 08 add $0x8,%esp -f0100705: 68 0c 00 10 00 push $0x10000c -f010070a: 68 34 1c 10 f0 push $0xf0101c34 -f010070f: e8 13 02 00 00 call f0100927 - cprintf(" entry %08x (virt) %08x (phys)\n", entry, entry - KERNBASE); -f0100714: 83 c4 0c add $0xc,%esp -f0100717: 68 0c 00 10 00 push $0x10000c -f010071c: 68 0c 00 10 f0 push $0xf010000c -f0100721: 68 5c 1c 10 f0 push $0xf0101c5c -f0100726: e8 fc 01 00 00 call f0100927 - cprintf(" etext %08x (virt) %08x (phys)\n", etext, etext - KERNBASE); -f010072b: 83 c4 0c add $0xc,%esp -f010072e: 68 8d 18 10 00 push $0x10188d -f0100733: 68 8d 18 10 f0 push $0xf010188d -f0100738: 68 80 1c 10 f0 push $0xf0101c80 -f010073d: e8 e5 01 00 00 call f0100927 - cprintf(" edata %08x (virt) %08x (phys)\n", edata, edata - KERNBASE); -f0100742: 83 c4 0c add $0xc,%esp -f0100745: 68 00 23 11 00 push $0x112300 -f010074a: 68 00 23 11 f0 push $0xf0112300 -f010074f: 68 a4 1c 10 f0 push $0xf0101ca4 -f0100754: e8 ce 01 00 00 call f0100927 - cprintf(" end %08x (virt) %08x (phys)\n", end, end - KERNBASE); -f0100759: 83 c4 0c add $0xc,%esp -f010075c: 68 40 29 11 00 push $0x112940 -f0100761: 68 40 29 11 f0 push $0xf0112940 -f0100766: 68 c8 1c 10 f0 push $0xf0101cc8 -f010076b: e8 b7 01 00 00 call f0100927 - cprintf("Kernel executable memory footprint: %dKB\n", -f0100770: 83 c4 08 add $0x8,%esp - ROUNDUP(end - entry, 1024) / 1024); -f0100773: b8 40 29 11 f0 mov $0xf0112940,%eax -f0100778: 2d 0d fc 0f f0 sub $0xf00ffc0d,%eax - cprintf("Kernel executable memory footprint: %dKB\n", -f010077d: c1 f8 0a sar $0xa,%eax -f0100780: 50 push %eax -f0100781: 68 ec 1c 10 f0 push $0xf0101cec -f0100786: e8 9c 01 00 00 call f0100927 - return 0; -} -f010078b: b8 00 00 00 00 mov $0x0,%eax -f0100790: c9 leave -f0100791: c3 ret - -f0100792 : - -int -mon_backtrace(int argc, char **argv, struct Trapframe *tf) -{ -f0100792: f3 0f 1e fb endbr32 - // Your code here. - return 0; -} -f0100796: b8 00 00 00 00 mov $0x0,%eax -f010079b: c3 ret - -f010079c : - return 0; -} - -void -monitor(struct Trapframe *tf) -{ -f010079c: f3 0f 1e fb endbr32 -f01007a0: 55 push %ebp -f01007a1: 89 e5 mov %esp,%ebp -f01007a3: 57 push %edi -f01007a4: 56 push %esi -f01007a5: 53 push %ebx -f01007a6: 83 ec 58 sub $0x58,%esp - char *buf; - - cprintf("Welcome to the JOS kernel monitor!\n"); -f01007a9: 68 18 1d 10 f0 push $0xf0101d18 -f01007ae: e8 74 01 00 00 call f0100927 - cprintf("Type 'help' for a list of commands.\n"); -f01007b3: c7 04 24 3c 1d 10 f0 movl $0xf0101d3c,(%esp) -f01007ba: e8 68 01 00 00 call f0100927 -f01007bf: 83 c4 10 add $0x10,%esp -f01007c2: e9 cf 00 00 00 jmp f0100896 - while (*buf && strchr(WHITESPACE, *buf)) -f01007c7: 83 ec 08 sub $0x8,%esp -f01007ca: 0f be c0 movsbl %al,%eax -f01007cd: 50 push %eax -f01007ce: 68 d2 1b 10 f0 push $0xf0101bd2 -f01007d3: e8 fe 0b 00 00 call f01013d6 -f01007d8: 83 c4 10 add $0x10,%esp -f01007db: 85 c0 test %eax,%eax -f01007dd: 74 6c je f010084b - *buf++ = 0; -f01007df: c6 03 00 movb $0x0,(%ebx) -f01007e2: 89 f7 mov %esi,%edi -f01007e4: 8d 5b 01 lea 0x1(%ebx),%ebx -f01007e7: 89 fe mov %edi,%esi - while (*buf && strchr(WHITESPACE, *buf)) -f01007e9: 0f b6 03 movzbl (%ebx),%eax -f01007ec: 84 c0 test %al,%al -f01007ee: 75 d7 jne f01007c7 - argv[argc] = 0; -f01007f0: c7 44 b5 a8 00 00 00 movl $0x0,-0x58(%ebp,%esi,4) -f01007f7: 00 - if (argc == 0) -f01007f8: 85 f6 test %esi,%esi -f01007fa: 0f 84 96 00 00 00 je f0100896 - if (strcmp(argv[0], commands[i].name) == 0) -f0100800: 83 ec 08 sub $0x8,%esp -f0100803: 68 9e 1b 10 f0 push $0xf0101b9e -f0100808: ff 75 a8 pushl -0x58(%ebp) -f010080b: e8 60 0b 00 00 call f0101370 -f0100810: 83 c4 10 add $0x10,%esp -f0100813: 85 c0 test %eax,%eax -f0100815: 0f 84 a7 00 00 00 je f01008c2 -f010081b: 83 ec 08 sub $0x8,%esp -f010081e: 68 ac 1b 10 f0 push $0xf0101bac -f0100823: ff 75 a8 pushl -0x58(%ebp) -f0100826: e8 45 0b 00 00 call f0101370 -f010082b: 83 c4 10 add $0x10,%esp -f010082e: 85 c0 test %eax,%eax -f0100830: 0f 84 87 00 00 00 je f01008bd - cprintf("Unknown command '%s'\n", argv[0]); -f0100836: 83 ec 08 sub $0x8,%esp -f0100839: ff 75 a8 pushl -0x58(%ebp) -f010083c: 68 f4 1b 10 f0 push $0xf0101bf4 -f0100841: e8 e1 00 00 00 call f0100927 - return 0; -f0100846: 83 c4 10 add $0x10,%esp -f0100849: eb 4b jmp f0100896 - if (*buf == 0) -f010084b: 80 3b 00 cmpb $0x0,(%ebx) -f010084e: 74 a0 je f01007f0 - if (argc == MAXARGS-1) { -f0100850: 83 fe 0f cmp $0xf,%esi -f0100853: 74 2f je f0100884 - argv[argc++] = buf; -f0100855: 8d 7e 01 lea 0x1(%esi),%edi -f0100858: 89 5c b5 a8 mov %ebx,-0x58(%ebp,%esi,4) - while (*buf && !strchr(WHITESPACE, *buf)) -f010085c: 0f b6 03 movzbl (%ebx),%eax -f010085f: 84 c0 test %al,%al -f0100861: 74 84 je f01007e7 -f0100863: 83 ec 08 sub $0x8,%esp -f0100866: 0f be c0 movsbl %al,%eax -f0100869: 50 push %eax -f010086a: 68 d2 1b 10 f0 push $0xf0101bd2 -f010086f: e8 62 0b 00 00 call f01013d6 -f0100874: 83 c4 10 add $0x10,%esp -f0100877: 85 c0 test %eax,%eax -f0100879: 0f 85 68 ff ff ff jne f01007e7 - buf++; -f010087f: 83 c3 01 add $0x1,%ebx -f0100882: eb d8 jmp f010085c - cprintf("Too many arguments (max %d)\n", MAXARGS); -f0100884: 83 ec 08 sub $0x8,%esp -f0100887: 6a 10 push $0x10 -f0100889: 68 d7 1b 10 f0 push $0xf0101bd7 -f010088e: e8 94 00 00 00 call f0100927 - return 0; -f0100893: 83 c4 10 add $0x10,%esp - - - while (1) { - buf = readline("K> "); -f0100896: 83 ec 0c sub $0xc,%esp -f0100899: 68 ce 1b 10 f0 push $0xf0101bce -f010089e: e8 e5 08 00 00 call f0101188 -f01008a3: 89 c3 mov %eax,%ebx - if (buf != NULL) -f01008a5: 83 c4 10 add $0x10,%esp -f01008a8: 85 c0 test %eax,%eax -f01008aa: 74 ea je f0100896 - argv[argc] = 0; -f01008ac: c7 45 a8 00 00 00 00 movl $0x0,-0x58(%ebp) - argc = 0; -f01008b3: be 00 00 00 00 mov $0x0,%esi -f01008b8: e9 2c ff ff ff jmp f01007e9 - for (i = 0; i < ARRAY_SIZE(commands); i++) { -f01008bd: b8 01 00 00 00 mov $0x1,%eax - return commands[i].func(argc, argv, tf); -f01008c2: 83 ec 04 sub $0x4,%esp -f01008c5: 8d 04 40 lea (%eax,%eax,2),%eax -f01008c8: ff 75 08 pushl 0x8(%ebp) -f01008cb: 8d 55 a8 lea -0x58(%ebp),%edx -f01008ce: 52 push %edx -f01008cf: 56 push %esi -f01008d0: ff 14 85 6c 1d 10 f0 call *-0xfefe294(,%eax,4) - if (runcmd(buf, tf) < 0) -f01008d7: 83 c4 10 add $0x10,%esp -f01008da: 85 c0 test %eax,%eax -f01008dc: 79 b8 jns f0100896 - break; - } -} -f01008de: 8d 65 f4 lea -0xc(%ebp),%esp -f01008e1: 5b pop %ebx -f01008e2: 5e pop %esi -f01008e3: 5f pop %edi -f01008e4: 5d pop %ebp -f01008e5: c3 ret - -f01008e6 : -#include - - -static void -putch(int ch, int *cnt) -{ -f01008e6: f3 0f 1e fb endbr32 -f01008ea: 55 push %ebp -f01008eb: 89 e5 mov %esp,%ebp -f01008ed: 83 ec 14 sub $0x14,%esp - cputchar(ch); -f01008f0: ff 75 08 pushl 0x8(%ebp) -f01008f3: e8 87 fd ff ff call f010067f - *cnt++; -} -f01008f8: 83 c4 10 add $0x10,%esp -f01008fb: c9 leave -f01008fc: c3 ret - -f01008fd : - -int -vcprintf(const char *fmt, va_list ap) -{ -f01008fd: f3 0f 1e fb endbr32 -f0100901: 55 push %ebp -f0100902: 89 e5 mov %esp,%ebp -f0100904: 83 ec 18 sub $0x18,%esp - int cnt = 0; -f0100907: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - - vprintfmt((void*)putch, &cnt, fmt, ap); -f010090e: ff 75 0c pushl 0xc(%ebp) -f0100911: ff 75 08 pushl 0x8(%ebp) -f0100914: 8d 45 f4 lea -0xc(%ebp),%eax -f0100917: 50 push %eax -f0100918: 68 e6 08 10 f0 push $0xf01008e6 -f010091d: e8 d3 03 00 00 call f0100cf5 - return cnt; -} -f0100922: 8b 45 f4 mov -0xc(%ebp),%eax -f0100925: c9 leave -f0100926: c3 ret - -f0100927 : - -int -cprintf(const char *fmt, ...) -{ -f0100927: f3 0f 1e fb endbr32 -f010092b: 55 push %ebp -f010092c: 89 e5 mov %esp,%ebp -f010092e: 83 ec 10 sub $0x10,%esp - va_list ap; - int cnt; - - va_start(ap, fmt); -f0100931: 8d 45 0c lea 0xc(%ebp),%eax - cnt = vcprintf(fmt, ap); -f0100934: 50 push %eax -f0100935: ff 75 08 pushl 0x8(%ebp) -f0100938: e8 c0 ff ff ff call f01008fd - va_end(ap); - - return cnt; -} -f010093d: c9 leave -f010093e: c3 ret - -f010093f : -// will exit setting left = 118, right = 554. -// -static void -stab_binsearch(const struct Stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) -{ -f010093f: 55 push %ebp -f0100940: 89 e5 mov %esp,%ebp -f0100942: 57 push %edi -f0100943: 56 push %esi -f0100944: 53 push %ebx -f0100945: 83 ec 14 sub $0x14,%esp -f0100948: 89 45 ec mov %eax,-0x14(%ebp) -f010094b: 89 55 e4 mov %edx,-0x1c(%ebp) -f010094e: 89 4d e0 mov %ecx,-0x20(%ebp) -f0100951: 8b 75 08 mov 0x8(%ebp),%esi - int l = *region_left, r = *region_right, any_matches = 0; -f0100954: 8b 1a mov (%edx),%ebx -f0100956: 8b 01 mov (%ecx),%eax -f0100958: 89 45 f0 mov %eax,-0x10(%ebp) -f010095b: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - - while (l <= r) { -f0100962: eb 23 jmp f0100987 - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) - m--; - if (m < l) { // no match in [l, m] - l = true_m + 1; -f0100964: 8d 5f 01 lea 0x1(%edi),%ebx - continue; -f0100967: eb 1e jmp f0100987 - } - - // actual binary search - any_matches = 1; - if (stabs[m].n_value < addr) { -f0100969: 8d 14 40 lea (%eax,%eax,2),%edx -f010096c: 8b 4d ec mov -0x14(%ebp),%ecx -f010096f: 8b 54 91 08 mov 0x8(%ecx,%edx,4),%edx -f0100973: 3b 55 0c cmp 0xc(%ebp),%edx -f0100976: 73 46 jae f01009be - *region_left = m; -f0100978: 8b 5d e4 mov -0x1c(%ebp),%ebx -f010097b: 89 03 mov %eax,(%ebx) - l = true_m + 1; -f010097d: 8d 5f 01 lea 0x1(%edi),%ebx - any_matches = 1; -f0100980: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) - while (l <= r) { -f0100987: 3b 5d f0 cmp -0x10(%ebp),%ebx -f010098a: 7f 5f jg f01009eb - int true_m = (l + r) / 2, m = true_m; -f010098c: 8b 45 f0 mov -0x10(%ebp),%eax -f010098f: 8d 14 03 lea (%ebx,%eax,1),%edx -f0100992: 89 d0 mov %edx,%eax -f0100994: c1 e8 1f shr $0x1f,%eax -f0100997: 01 d0 add %edx,%eax -f0100999: 89 c7 mov %eax,%edi -f010099b: d1 ff sar %edi -f010099d: 83 e0 fe and $0xfffffffe,%eax -f01009a0: 01 f8 add %edi,%eax -f01009a2: 8b 4d ec mov -0x14(%ebp),%ecx -f01009a5: 8d 54 81 04 lea 0x4(%ecx,%eax,4),%edx -f01009a9: 89 f8 mov %edi,%eax - while (m >= l && stabs[m].n_type != type) -f01009ab: 39 c3 cmp %eax,%ebx -f01009ad: 7f b5 jg f0100964 -f01009af: 0f b6 0a movzbl (%edx),%ecx -f01009b2: 83 ea 0c sub $0xc,%edx -f01009b5: 39 f1 cmp %esi,%ecx -f01009b7: 74 b0 je f0100969 - m--; -f01009b9: 83 e8 01 sub $0x1,%eax -f01009bc: eb ed jmp f01009ab - } else if (stabs[m].n_value > addr) { -f01009be: 3b 55 0c cmp 0xc(%ebp),%edx -f01009c1: 76 14 jbe f01009d7 - *region_right = m - 1; -f01009c3: 83 e8 01 sub $0x1,%eax -f01009c6: 89 45 f0 mov %eax,-0x10(%ebp) -f01009c9: 8b 7d e0 mov -0x20(%ebp),%edi -f01009cc: 89 07 mov %eax,(%edi) - any_matches = 1; -f01009ce: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -f01009d5: eb b0 jmp f0100987 - r = m - 1; - } else { - // exact match for 'addr', but continue loop to find - // *region_right - *region_left = m; -f01009d7: 8b 7d e4 mov -0x1c(%ebp),%edi -f01009da: 89 07 mov %eax,(%edi) - l = m; - addr++; -f01009dc: 83 45 0c 01 addl $0x1,0xc(%ebp) -f01009e0: 89 c3 mov %eax,%ebx - any_matches = 1; -f01009e2: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -f01009e9: eb 9c jmp f0100987 - } - } - - if (!any_matches) -f01009eb: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -f01009ef: 75 15 jne f0100a06 - *region_right = *region_left - 1; -f01009f1: 8b 45 e4 mov -0x1c(%ebp),%eax -f01009f4: 8b 00 mov (%eax),%eax -f01009f6: 83 e8 01 sub $0x1,%eax -f01009f9: 8b 7d e0 mov -0x20(%ebp),%edi -f01009fc: 89 07 mov %eax,(%edi) - l > *region_left && stabs[l].n_type != type; - l--) - /* do nothing */; - *region_left = l; - } -} -f01009fe: 83 c4 14 add $0x14,%esp -f0100a01: 5b pop %ebx -f0100a02: 5e pop %esi -f0100a03: 5f pop %edi -f0100a04: 5d pop %ebp -f0100a05: c3 ret - for (l = *region_right; -f0100a06: 8b 45 e0 mov -0x20(%ebp),%eax -f0100a09: 8b 00 mov (%eax),%eax - l > *region_left && stabs[l].n_type != type; -f0100a0b: 8b 7d e4 mov -0x1c(%ebp),%edi -f0100a0e: 8b 0f mov (%edi),%ecx -f0100a10: 8d 14 40 lea (%eax,%eax,2),%edx -f0100a13: 8b 7d ec mov -0x14(%ebp),%edi -f0100a16: 8d 54 97 04 lea 0x4(%edi,%edx,4),%edx - for (l = *region_right; -f0100a1a: eb 03 jmp f0100a1f - l--) -f0100a1c: 83 e8 01 sub $0x1,%eax - for (l = *region_right; -f0100a1f: 39 c1 cmp %eax,%ecx -f0100a21: 7d 0a jge f0100a2d - l > *region_left && stabs[l].n_type != type; -f0100a23: 0f b6 1a movzbl (%edx),%ebx -f0100a26: 83 ea 0c sub $0xc,%edx -f0100a29: 39 f3 cmp %esi,%ebx -f0100a2b: 75 ef jne f0100a1c - *region_left = l; -f0100a2d: 8b 7d e4 mov -0x1c(%ebp),%edi -f0100a30: 89 07 mov %eax,(%edi) -} -f0100a32: eb ca jmp f01009fe - -f0100a34 : -// negative if not. But even if it returns negative it has stored some -// information into '*info'. -// -int -debuginfo_eip(uintptr_t addr, struct Eipdebuginfo *info) -{ -f0100a34: f3 0f 1e fb endbr32 -f0100a38: 55 push %ebp -f0100a39: 89 e5 mov %esp,%ebp -f0100a3b: 57 push %edi -f0100a3c: 56 push %esi -f0100a3d: 53 push %ebx -f0100a3e: 83 ec 1c sub $0x1c,%esp -f0100a41: 8b 7d 08 mov 0x8(%ebp),%edi -f0100a44: 8b 75 0c mov 0xc(%ebp),%esi - const struct Stab *stabs, *stab_end; - const char *stabstr, *stabstr_end; - int lfile, rfile, lfun, rfun, lline, rline; - - // Initialize *info - info->eip_file = ""; -f0100a47: c7 06 7c 1d 10 f0 movl $0xf0101d7c,(%esi) - info->eip_line = 0; -f0100a4d: c7 46 04 00 00 00 00 movl $0x0,0x4(%esi) - info->eip_fn_name = ""; -f0100a54: c7 46 08 7c 1d 10 f0 movl $0xf0101d7c,0x8(%esi) - info->eip_fn_namelen = 9; -f0100a5b: c7 46 0c 09 00 00 00 movl $0x9,0xc(%esi) - info->eip_fn_addr = addr; -f0100a62: 89 7e 10 mov %edi,0x10(%esi) - info->eip_fn_narg = 0; -f0100a65: c7 46 14 00 00 00 00 movl $0x0,0x14(%esi) - - // Find the relevant set of stabs - if (addr >= ULIM) { -f0100a6c: 81 ff ff ff 7f ef cmp $0xef7fffff,%edi -f0100a72: 0f 86 db 00 00 00 jbe f0100b53 - // Can't search for user-level addresses yet! - panic("User address"); - } - - // String table validity checks - if (stabstr_end <= stabstr || stabstr_end[-1] != 0) -f0100a78: b8 d7 7b 10 f0 mov $0xf0107bd7,%eax -f0100a7d: 3d 2d 62 10 f0 cmp $0xf010622d,%eax -f0100a82: 0f 86 5e 01 00 00 jbe f0100be6 -f0100a88: 80 3d d6 7b 10 f0 00 cmpb $0x0,0xf0107bd6 -f0100a8f: 0f 85 58 01 00 00 jne f0100bed - // 'eip'. First, we find the basic source file containing 'eip'. - // Then, we look in that source file for the function. Then we look - // for the line number. - - // Search the entire set of stabs for the source file (type N_SO). - lfile = 0; -f0100a95: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - rfile = (stab_end - stabs) - 1; -f0100a9c: b8 2c 62 10 f0 mov $0xf010622c,%eax -f0100aa1: 2d b4 1f 10 f0 sub $0xf0101fb4,%eax -f0100aa6: c1 f8 02 sar $0x2,%eax -f0100aa9: 69 c0 ab aa aa aa imul $0xaaaaaaab,%eax,%eax -f0100aaf: 83 e8 01 sub $0x1,%eax -f0100ab2: 89 45 e0 mov %eax,-0x20(%ebp) - stab_binsearch(stabs, &lfile, &rfile, N_SO, addr); -f0100ab5: 83 ec 08 sub $0x8,%esp -f0100ab8: 57 push %edi -f0100ab9: 6a 64 push $0x64 -f0100abb: 8d 4d e0 lea -0x20(%ebp),%ecx -f0100abe: 8d 55 e4 lea -0x1c(%ebp),%edx -f0100ac1: b8 b4 1f 10 f0 mov $0xf0101fb4,%eax -f0100ac6: e8 74 fe ff ff call f010093f - if (lfile == 0) -f0100acb: 8b 45 e4 mov -0x1c(%ebp),%eax -f0100ace: 83 c4 10 add $0x10,%esp -f0100ad1: 85 c0 test %eax,%eax -f0100ad3: 0f 84 1b 01 00 00 je f0100bf4 - return -1; - - // Search within that file's stabs for the function definition - // (N_FUN). - lfun = lfile; -f0100ad9: 89 45 dc mov %eax,-0x24(%ebp) - rfun = rfile; -f0100adc: 8b 45 e0 mov -0x20(%ebp),%eax -f0100adf: 89 45 d8 mov %eax,-0x28(%ebp) - stab_binsearch(stabs, &lfun, &rfun, N_FUN, addr); -f0100ae2: 83 ec 08 sub $0x8,%esp -f0100ae5: 57 push %edi -f0100ae6: 6a 24 push $0x24 -f0100ae8: 8d 4d d8 lea -0x28(%ebp),%ecx -f0100aeb: 8d 55 dc lea -0x24(%ebp),%edx -f0100aee: b8 b4 1f 10 f0 mov $0xf0101fb4,%eax -f0100af3: e8 47 fe ff ff call f010093f - - if (lfun <= rfun) { -f0100af8: 8b 5d dc mov -0x24(%ebp),%ebx -f0100afb: 83 c4 10 add $0x10,%esp -f0100afe: 3b 5d d8 cmp -0x28(%ebp),%ebx -f0100b01: 7f 64 jg f0100b67 - // stabs[lfun] points to the function name - // in the string table, but check bounds just in case. - if (stabs[lfun].n_strx < stabstr_end - stabstr) -f0100b03: 8d 04 5b lea (%ebx,%ebx,2),%eax -f0100b06: c1 e0 02 shl $0x2,%eax -f0100b09: 8d 90 b4 1f 10 f0 lea -0xfefe04c(%eax),%edx -f0100b0f: 8b 88 b4 1f 10 f0 mov -0xfefe04c(%eax),%ecx -f0100b15: b8 d7 7b 10 f0 mov $0xf0107bd7,%eax -f0100b1a: 2d 2d 62 10 f0 sub $0xf010622d,%eax -f0100b1f: 39 c1 cmp %eax,%ecx -f0100b21: 73 09 jae f0100b2c - info->eip_fn_name = stabstr + stabs[lfun].n_strx; -f0100b23: 81 c1 2d 62 10 f0 add $0xf010622d,%ecx -f0100b29: 89 4e 08 mov %ecx,0x8(%esi) - info->eip_fn_addr = stabs[lfun].n_value; -f0100b2c: 8b 42 08 mov 0x8(%edx),%eax -f0100b2f: 89 46 10 mov %eax,0x10(%esi) - info->eip_fn_addr = addr; - lline = lfile; - rline = rfile; - } - // Ignore stuff after the colon. - info->eip_fn_namelen = strfind(info->eip_fn_name, ':') - info->eip_fn_name; -f0100b32: 83 ec 08 sub $0x8,%esp -f0100b35: 6a 3a push $0x3a -f0100b37: ff 76 08 pushl 0x8(%esi) -f0100b3a: e8 bc 08 00 00 call f01013fb -f0100b3f: 2b 46 08 sub 0x8(%esi),%eax -f0100b42: 89 46 0c mov %eax,0xc(%esi) - // Search backwards from the line number for the relevant filename - // stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile -f0100b45: 8b 4d e4 mov -0x1c(%ebp),%ecx -f0100b48: 8d 04 5b lea (%ebx,%ebx,2),%eax -f0100b4b: c1 e0 02 shl $0x2,%eax -f0100b4e: 83 c4 10 add $0x10,%esp -f0100b51: eb 22 jmp f0100b75 - panic("User address"); -f0100b53: 83 ec 04 sub $0x4,%esp -f0100b56: 68 86 1d 10 f0 push $0xf0101d86 -f0100b5b: 6a 7f push $0x7f -f0100b5d: 68 93 1d 10 f0 push $0xf0101d93 -f0100b62: e8 87 f5 ff ff call f01000ee <_panic> - info->eip_fn_addr = addr; -f0100b67: 89 7e 10 mov %edi,0x10(%esi) - lline = lfile; -f0100b6a: 8b 5d e4 mov -0x1c(%ebp),%ebx -f0100b6d: eb c3 jmp f0100b32 - && stabs[lline].n_type != N_SOL - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) - lline--; -f0100b6f: 83 eb 01 sub $0x1,%ebx -f0100b72: 83 e8 0c sub $0xc,%eax - while (lline >= lfile -f0100b75: 39 d9 cmp %ebx,%ecx -f0100b77: 7f 3a jg f0100bb3 - && stabs[lline].n_type != N_SOL -f0100b79: 0f b6 90 b8 1f 10 f0 movzbl -0xfefe048(%eax),%edx -f0100b80: 80 fa 84 cmp $0x84,%dl -f0100b83: 74 0e je f0100b93 - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) -f0100b85: 80 fa 64 cmp $0x64,%dl -f0100b88: 75 e5 jne f0100b6f -f0100b8a: 83 b8 bc 1f 10 f0 00 cmpl $0x0,-0xfefe044(%eax) -f0100b91: 74 dc je f0100b6f - if (lline >= lfile && stabs[lline].n_strx < stabstr_end - stabstr) -f0100b93: 8d 04 5b lea (%ebx,%ebx,2),%eax -f0100b96: 8b 14 85 b4 1f 10 f0 mov -0xfefe04c(,%eax,4),%edx -f0100b9d: b8 d7 7b 10 f0 mov $0xf0107bd7,%eax -f0100ba2: 2d 2d 62 10 f0 sub $0xf010622d,%eax -f0100ba7: 39 c2 cmp %eax,%edx -f0100ba9: 73 08 jae f0100bb3 - info->eip_file = stabstr + stabs[lline].n_strx; -f0100bab: 81 c2 2d 62 10 f0 add $0xf010622d,%edx -f0100bb1: 89 16 mov %edx,(%esi) - - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) -f0100bb3: 8b 45 dc mov -0x24(%ebp),%eax -f0100bb6: 8b 4d d8 mov -0x28(%ebp),%ecx - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; - lline++) - info->eip_fn_narg++; - - return 0; -f0100bb9: ba 00 00 00 00 mov $0x0,%edx - if (lfun < rfun) -f0100bbe: 39 c8 cmp %ecx,%eax -f0100bc0: 7d 3e jge f0100c00 - for (lline = lfun + 1; -f0100bc2: 83 c0 01 add $0x1,%eax -f0100bc5: eb 07 jmp f0100bce - info->eip_fn_narg++; -f0100bc7: 83 46 14 01 addl $0x1,0x14(%esi) - lline++) -f0100bcb: 83 c0 01 add $0x1,%eax - for (lline = lfun + 1; -f0100bce: 39 c1 cmp %eax,%ecx -f0100bd0: 74 29 je f0100bfb - lline < rfun && stabs[lline].n_type == N_PSYM; -f0100bd2: 8d 14 40 lea (%eax,%eax,2),%edx -f0100bd5: 80 3c 95 b8 1f 10 f0 cmpb $0xa0,-0xfefe048(,%edx,4) -f0100bdc: a0 -f0100bdd: 74 e8 je f0100bc7 - return 0; -f0100bdf: ba 00 00 00 00 mov $0x0,%edx -f0100be4: eb 1a jmp f0100c00 - return -1; -f0100be6: ba ff ff ff ff mov $0xffffffff,%edx -f0100beb: eb 13 jmp f0100c00 -f0100bed: ba ff ff ff ff mov $0xffffffff,%edx -f0100bf2: eb 0c jmp f0100c00 - return -1; -f0100bf4: ba ff ff ff ff mov $0xffffffff,%edx -f0100bf9: eb 05 jmp f0100c00 - return 0; -f0100bfb: ba 00 00 00 00 mov $0x0,%edx -} -f0100c00: 89 d0 mov %edx,%eax -f0100c02: 8d 65 f4 lea -0xc(%ebp),%esp -f0100c05: 5b pop %ebx -f0100c06: 5e pop %esi -f0100c07: 5f pop %edi -f0100c08: 5d pop %ebp -f0100c09: c3 ret - -f0100c0a : - * using specified putch function and associated pointer putdat. - */ -static void -printnum(void (*putch)(int, void*), void *putdat, - unsigned long long num, unsigned base, int width, int padc) -{ -f0100c0a: 55 push %ebp -f0100c0b: 89 e5 mov %esp,%ebp -f0100c0d: 57 push %edi -f0100c0e: 56 push %esi -f0100c0f: 53 push %ebx -f0100c10: 83 ec 1c sub $0x1c,%esp -f0100c13: 89 c7 mov %eax,%edi -f0100c15: 89 d6 mov %edx,%esi -f0100c17: 8b 45 08 mov 0x8(%ebp),%eax -f0100c1a: 8b 55 0c mov 0xc(%ebp),%edx -f0100c1d: 89 d1 mov %edx,%ecx -f0100c1f: 89 c2 mov %eax,%edx -f0100c21: 89 45 d8 mov %eax,-0x28(%ebp) -f0100c24: 89 4d dc mov %ecx,-0x24(%ebp) -f0100c27: 8b 45 10 mov 0x10(%ebp),%eax -f0100c2a: 8b 5d 14 mov 0x14(%ebp),%ebx - // first recursively print all preceding (more significant) digits - if (num >= base) { -f0100c2d: 89 45 e0 mov %eax,-0x20(%ebp) -f0100c30: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) -f0100c37: 39 c2 cmp %eax,%edx -f0100c39: 1b 4d e4 sbb -0x1c(%ebp),%ecx -f0100c3c: 72 3e jb f0100c7c - printnum(putch, putdat, num / base, base, width - 1, padc); -f0100c3e: 83 ec 0c sub $0xc,%esp -f0100c41: ff 75 18 pushl 0x18(%ebp) -f0100c44: 83 eb 01 sub $0x1,%ebx -f0100c47: 53 push %ebx -f0100c48: 50 push %eax -f0100c49: 83 ec 08 sub $0x8,%esp -f0100c4c: ff 75 e4 pushl -0x1c(%ebp) -f0100c4f: ff 75 e0 pushl -0x20(%ebp) -f0100c52: ff 75 dc pushl -0x24(%ebp) -f0100c55: ff 75 d8 pushl -0x28(%ebp) -f0100c58: e8 d3 09 00 00 call f0101630 <__udivdi3> -f0100c5d: 83 c4 18 add $0x18,%esp -f0100c60: 52 push %edx -f0100c61: 50 push %eax -f0100c62: 89 f2 mov %esi,%edx -f0100c64: 89 f8 mov %edi,%eax -f0100c66: e8 9f ff ff ff call f0100c0a -f0100c6b: 83 c4 20 add $0x20,%esp -f0100c6e: eb 13 jmp f0100c83 - } else { - // print any needed pad characters before first digit - while (--width > 0) - putch(padc, putdat); -f0100c70: 83 ec 08 sub $0x8,%esp -f0100c73: 56 push %esi -f0100c74: ff 75 18 pushl 0x18(%ebp) -f0100c77: ff d7 call *%edi -f0100c79: 83 c4 10 add $0x10,%esp - while (--width > 0) -f0100c7c: 83 eb 01 sub $0x1,%ebx -f0100c7f: 85 db test %ebx,%ebx -f0100c81: 7f ed jg f0100c70 - } - - // then print this (the least significant) digit - putch("0123456789abcdef"[num % base], putdat); -f0100c83: 83 ec 08 sub $0x8,%esp -f0100c86: 56 push %esi -f0100c87: 83 ec 04 sub $0x4,%esp -f0100c8a: ff 75 e4 pushl -0x1c(%ebp) -f0100c8d: ff 75 e0 pushl -0x20(%ebp) -f0100c90: ff 75 dc pushl -0x24(%ebp) -f0100c93: ff 75 d8 pushl -0x28(%ebp) -f0100c96: e8 a5 0a 00 00 call f0101740 <__umoddi3> -f0100c9b: 83 c4 14 add $0x14,%esp -f0100c9e: 0f be 80 a1 1d 10 f0 movsbl -0xfefe25f(%eax),%eax -f0100ca5: 50 push %eax -f0100ca6: ff d7 call *%edi -} -f0100ca8: 83 c4 10 add $0x10,%esp -f0100cab: 8d 65 f4 lea -0xc(%ebp),%esp -f0100cae: 5b pop %ebx -f0100caf: 5e pop %esi -f0100cb0: 5f pop %edi -f0100cb1: 5d pop %ebp -f0100cb2: c3 ret - -f0100cb3 : - int cnt; -}; - -static void -sprintputch(int ch, struct sprintbuf *b) -{ -f0100cb3: f3 0f 1e fb endbr32 -f0100cb7: 55 push %ebp -f0100cb8: 89 e5 mov %esp,%ebp -f0100cba: 8b 45 0c mov 0xc(%ebp),%eax - b->cnt++; -f0100cbd: 83 40 08 01 addl $0x1,0x8(%eax) - if (b->buf < b->ebuf) -f0100cc1: 8b 10 mov (%eax),%edx -f0100cc3: 3b 50 04 cmp 0x4(%eax),%edx -f0100cc6: 73 0a jae f0100cd2 - *b->buf++ = ch; -f0100cc8: 8d 4a 01 lea 0x1(%edx),%ecx -f0100ccb: 89 08 mov %ecx,(%eax) -f0100ccd: 8b 45 08 mov 0x8(%ebp),%eax -f0100cd0: 88 02 mov %al,(%edx) -} -f0100cd2: 5d pop %ebp -f0100cd3: c3 ret - -f0100cd4 : -{ -f0100cd4: f3 0f 1e fb endbr32 -f0100cd8: 55 push %ebp -f0100cd9: 89 e5 mov %esp,%ebp -f0100cdb: 83 ec 08 sub $0x8,%esp - va_start(ap, fmt); -f0100cde: 8d 45 14 lea 0x14(%ebp),%eax - vprintfmt(putch, putdat, fmt, ap); -f0100ce1: 50 push %eax -f0100ce2: ff 75 10 pushl 0x10(%ebp) -f0100ce5: ff 75 0c pushl 0xc(%ebp) -f0100ce8: ff 75 08 pushl 0x8(%ebp) -f0100ceb: e8 05 00 00 00 call f0100cf5 -} -f0100cf0: 83 c4 10 add $0x10,%esp -f0100cf3: c9 leave -f0100cf4: c3 ret - -f0100cf5 : -{ -f0100cf5: f3 0f 1e fb endbr32 -f0100cf9: 55 push %ebp -f0100cfa: 89 e5 mov %esp,%ebp -f0100cfc: 57 push %edi -f0100cfd: 56 push %esi -f0100cfe: 53 push %ebx -f0100cff: 83 ec 3c sub $0x3c,%esp -f0100d02: 8b 75 08 mov 0x8(%ebp),%esi -f0100d05: 8b 5d 0c mov 0xc(%ebp),%ebx -f0100d08: 8b 7d 10 mov 0x10(%ebp),%edi -f0100d0b: e9 5d 03 00 00 jmp f010106d - padc = ' '; -f0100d10: c6 45 d3 20 movb $0x20,-0x2d(%ebp) - altflag = 0; -f0100d14: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) - precision = -1; -f0100d1b: c7 45 d8 ff ff ff ff movl $0xffffffff,-0x28(%ebp) - width = -1; -f0100d22: c7 45 d4 ff ff ff ff movl $0xffffffff,-0x2c(%ebp) - lflag = 0; -f0100d29: b9 00 00 00 00 mov $0x0,%ecx - switch (ch = *(unsigned char *) fmt++) { -f0100d2e: 8d 47 01 lea 0x1(%edi),%eax -f0100d31: 89 45 e4 mov %eax,-0x1c(%ebp) -f0100d34: 0f b6 17 movzbl (%edi),%edx -f0100d37: 8d 42 dd lea -0x23(%edx),%eax -f0100d3a: 3c 55 cmp $0x55,%al -f0100d3c: 0f 87 ae 03 00 00 ja f01010f0 -f0100d42: 0f b6 c0 movzbl %al,%eax -f0100d45: 3e ff 24 85 30 1e 10 notrack jmp *-0xfefe1d0(,%eax,4) -f0100d4c: f0 -f0100d4d: 8b 7d e4 mov -0x1c(%ebp),%edi - padc = '-'; -f0100d50: c6 45 d3 2d movb $0x2d,-0x2d(%ebp) -f0100d54: eb d8 jmp f0100d2e - switch (ch = *(unsigned char *) fmt++) { -f0100d56: 8b 7d e4 mov -0x1c(%ebp),%edi -f0100d59: c6 45 d3 30 movb $0x30,-0x2d(%ebp) -f0100d5d: eb cf jmp f0100d2e -f0100d5f: 0f b6 d2 movzbl %dl,%edx -f0100d62: 8b 7d e4 mov -0x1c(%ebp),%edi - for (precision = 0; ; ++fmt) { -f0100d65: b8 00 00 00 00 mov $0x0,%eax -f0100d6a: 89 4d e4 mov %ecx,-0x1c(%ebp) - precision = precision * 10 + ch - '0'; -f0100d6d: 8d 04 80 lea (%eax,%eax,4),%eax -f0100d70: 8d 44 42 d0 lea -0x30(%edx,%eax,2),%eax - ch = *fmt; -f0100d74: 0f be 17 movsbl (%edi),%edx - if (ch < '0' || ch > '9') -f0100d77: 8d 4a d0 lea -0x30(%edx),%ecx -f0100d7a: 83 f9 09 cmp $0x9,%ecx -f0100d7d: 77 55 ja f0100dd4 - for (precision = 0; ; ++fmt) { -f0100d7f: 83 c7 01 add $0x1,%edi - precision = precision * 10 + ch - '0'; -f0100d82: eb e9 jmp f0100d6d - precision = va_arg(ap, int); -f0100d84: 8b 45 14 mov 0x14(%ebp),%eax -f0100d87: 8b 00 mov (%eax),%eax -f0100d89: 89 45 d8 mov %eax,-0x28(%ebp) -f0100d8c: 8b 45 14 mov 0x14(%ebp),%eax -f0100d8f: 8d 40 04 lea 0x4(%eax),%eax -f0100d92: 89 45 14 mov %eax,0x14(%ebp) - switch (ch = *(unsigned char *) fmt++) { -f0100d95: 8b 7d e4 mov -0x1c(%ebp),%edi - if (width < 0) -f0100d98: 83 7d d4 00 cmpl $0x0,-0x2c(%ebp) -f0100d9c: 79 90 jns f0100d2e - width = precision, precision = -1; -f0100d9e: 8b 45 d8 mov -0x28(%ebp),%eax -f0100da1: 89 45 d4 mov %eax,-0x2c(%ebp) -f0100da4: c7 45 d8 ff ff ff ff movl $0xffffffff,-0x28(%ebp) -f0100dab: eb 81 jmp f0100d2e -f0100dad: 8b 45 d4 mov -0x2c(%ebp),%eax -f0100db0: 85 c0 test %eax,%eax -f0100db2: ba 00 00 00 00 mov $0x0,%edx -f0100db7: 0f 49 d0 cmovns %eax,%edx -f0100dba: 89 55 d4 mov %edx,-0x2c(%ebp) - switch (ch = *(unsigned char *) fmt++) { -f0100dbd: 8b 7d e4 mov -0x1c(%ebp),%edi - goto reswitch; -f0100dc0: e9 69 ff ff ff jmp f0100d2e - switch (ch = *(unsigned char *) fmt++) { -f0100dc5: 8b 7d e4 mov -0x1c(%ebp),%edi - altflag = 1; -f0100dc8: c7 45 e0 01 00 00 00 movl $0x1,-0x20(%ebp) - goto reswitch; -f0100dcf: e9 5a ff ff ff jmp f0100d2e -f0100dd4: 8b 4d e4 mov -0x1c(%ebp),%ecx -f0100dd7: 89 45 d8 mov %eax,-0x28(%ebp) -f0100dda: eb bc jmp f0100d98 - lflag++; -f0100ddc: 83 c1 01 add $0x1,%ecx - switch (ch = *(unsigned char *) fmt++) { -f0100ddf: 8b 7d e4 mov -0x1c(%ebp),%edi - goto reswitch; -f0100de2: e9 47 ff ff ff jmp f0100d2e - putch(va_arg(ap, int), putdat); -f0100de7: 8b 45 14 mov 0x14(%ebp),%eax -f0100dea: 8d 78 04 lea 0x4(%eax),%edi -f0100ded: 83 ec 08 sub $0x8,%esp -f0100df0: 53 push %ebx -f0100df1: ff 30 pushl (%eax) -f0100df3: ff d6 call *%esi - break; -f0100df5: 83 c4 10 add $0x10,%esp - putch(va_arg(ap, int), putdat); -f0100df8: 89 7d 14 mov %edi,0x14(%ebp) - break; -f0100dfb: e9 6a 02 00 00 jmp f010106a - err = va_arg(ap, int); -f0100e00: 8b 45 14 mov 0x14(%ebp),%eax -f0100e03: 8d 78 04 lea 0x4(%eax),%edi -f0100e06: 8b 00 mov (%eax),%eax -f0100e08: 99 cltd -f0100e09: 31 d0 xor %edx,%eax -f0100e0b: 29 d0 sub %edx,%eax - if (err >= MAXERROR || (p = error_string[err]) == NULL) -f0100e0d: 83 f8 06 cmp $0x6,%eax -f0100e10: 7f 23 jg f0100e35 -f0100e12: 8b 14 85 88 1f 10 f0 mov -0xfefe078(,%eax,4),%edx -f0100e19: 85 d2 test %edx,%edx -f0100e1b: 74 18 je f0100e35 - printfmt(putch, putdat, "%s", p); -f0100e1d: 52 push %edx -f0100e1e: 68 c2 1d 10 f0 push $0xf0101dc2 -f0100e23: 53 push %ebx -f0100e24: 56 push %esi -f0100e25: e8 aa fe ff ff call f0100cd4 -f0100e2a: 83 c4 10 add $0x10,%esp - err = va_arg(ap, int); -f0100e2d: 89 7d 14 mov %edi,0x14(%ebp) -f0100e30: e9 35 02 00 00 jmp f010106a - printfmt(putch, putdat, "error %d", err); -f0100e35: 50 push %eax -f0100e36: 68 b9 1d 10 f0 push $0xf0101db9 -f0100e3b: 53 push %ebx -f0100e3c: 56 push %esi -f0100e3d: e8 92 fe ff ff call f0100cd4 -f0100e42: 83 c4 10 add $0x10,%esp - err = va_arg(ap, int); -f0100e45: 89 7d 14 mov %edi,0x14(%ebp) - printfmt(putch, putdat, "error %d", err); -f0100e48: e9 1d 02 00 00 jmp f010106a - if ((p = va_arg(ap, char *)) == NULL) -f0100e4d: 8b 45 14 mov 0x14(%ebp),%eax -f0100e50: 83 c0 04 add $0x4,%eax -f0100e53: 89 45 c8 mov %eax,-0x38(%ebp) -f0100e56: 8b 45 14 mov 0x14(%ebp),%eax -f0100e59: 8b 10 mov (%eax),%edx - p = "(null)"; -f0100e5b: 85 d2 test %edx,%edx -f0100e5d: b8 b2 1d 10 f0 mov $0xf0101db2,%eax -f0100e62: 0f 45 c2 cmovne %edx,%eax -f0100e65: 89 45 cc mov %eax,-0x34(%ebp) - if (width > 0 && padc != '-') -f0100e68: 83 7d d4 00 cmpl $0x0,-0x2c(%ebp) -f0100e6c: 7e 06 jle f0100e74 -f0100e6e: 80 7d d3 2d cmpb $0x2d,-0x2d(%ebp) -f0100e72: 75 0d jne f0100e81 - for (width -= strnlen(p, precision); width > 0; width--) -f0100e74: 8b 45 cc mov -0x34(%ebp),%eax -f0100e77: 89 c7 mov %eax,%edi -f0100e79: 03 45 d4 add -0x2c(%ebp),%eax -f0100e7c: 89 45 d4 mov %eax,-0x2c(%ebp) -f0100e7f: eb 55 jmp f0100ed6 -f0100e81: 83 ec 08 sub $0x8,%esp -f0100e84: ff 75 d8 pushl -0x28(%ebp) -f0100e87: ff 75 cc pushl -0x34(%ebp) -f0100e8a: e8 fb 03 00 00 call f010128a -f0100e8f: 8b 55 d4 mov -0x2c(%ebp),%edx -f0100e92: 29 c2 sub %eax,%edx -f0100e94: 89 55 c4 mov %edx,-0x3c(%ebp) -f0100e97: 83 c4 10 add $0x10,%esp -f0100e9a: 89 d7 mov %edx,%edi - putch(padc, putdat); -f0100e9c: 0f be 45 d3 movsbl -0x2d(%ebp),%eax -f0100ea0: 89 45 d4 mov %eax,-0x2c(%ebp) - for (width -= strnlen(p, precision); width > 0; width--) -f0100ea3: 85 ff test %edi,%edi -f0100ea5: 7e 11 jle f0100eb8 - putch(padc, putdat); -f0100ea7: 83 ec 08 sub $0x8,%esp -f0100eaa: 53 push %ebx -f0100eab: ff 75 d4 pushl -0x2c(%ebp) -f0100eae: ff d6 call *%esi - for (width -= strnlen(p, precision); width > 0; width--) -f0100eb0: 83 ef 01 sub $0x1,%edi -f0100eb3: 83 c4 10 add $0x10,%esp -f0100eb6: eb eb jmp f0100ea3 -f0100eb8: 8b 55 c4 mov -0x3c(%ebp),%edx -f0100ebb: 85 d2 test %edx,%edx -f0100ebd: b8 00 00 00 00 mov $0x0,%eax -f0100ec2: 0f 49 c2 cmovns %edx,%eax -f0100ec5: 29 c2 sub %eax,%edx -f0100ec7: 89 55 d4 mov %edx,-0x2c(%ebp) -f0100eca: eb a8 jmp f0100e74 - putch(ch, putdat); -f0100ecc: 83 ec 08 sub $0x8,%esp -f0100ecf: 53 push %ebx -f0100ed0: 52 push %edx -f0100ed1: ff d6 call *%esi -f0100ed3: 83 c4 10 add $0x10,%esp -f0100ed6: 8b 4d d4 mov -0x2c(%ebp),%ecx -f0100ed9: 29 f9 sub %edi,%ecx - for (; (ch = *p++) != '\0' && (precision < 0 || --precision >= 0); width--) -f0100edb: 83 c7 01 add $0x1,%edi -f0100ede: 0f b6 47 ff movzbl -0x1(%edi),%eax -f0100ee2: 0f be d0 movsbl %al,%edx -f0100ee5: 85 d2 test %edx,%edx -f0100ee7: 74 4b je f0100f34 -f0100ee9: 83 7d d8 00 cmpl $0x0,-0x28(%ebp) -f0100eed: 78 06 js f0100ef5 -f0100eef: 83 6d d8 01 subl $0x1,-0x28(%ebp) -f0100ef3: 78 1e js f0100f13 - if (altflag && (ch < ' ' || ch > '~')) -f0100ef5: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) -f0100ef9: 74 d1 je f0100ecc -f0100efb: 0f be c0 movsbl %al,%eax -f0100efe: 83 e8 20 sub $0x20,%eax -f0100f01: 83 f8 5e cmp $0x5e,%eax -f0100f04: 76 c6 jbe f0100ecc - putch('?', putdat); -f0100f06: 83 ec 08 sub $0x8,%esp -f0100f09: 53 push %ebx -f0100f0a: 6a 3f push $0x3f -f0100f0c: ff d6 call *%esi -f0100f0e: 83 c4 10 add $0x10,%esp -f0100f11: eb c3 jmp f0100ed6 -f0100f13: 89 cf mov %ecx,%edi -f0100f15: eb 0e jmp f0100f25 - putch(' ', putdat); -f0100f17: 83 ec 08 sub $0x8,%esp -f0100f1a: 53 push %ebx -f0100f1b: 6a 20 push $0x20 -f0100f1d: ff d6 call *%esi - for (; width > 0; width--) -f0100f1f: 83 ef 01 sub $0x1,%edi -f0100f22: 83 c4 10 add $0x10,%esp -f0100f25: 85 ff test %edi,%edi -f0100f27: 7f ee jg f0100f17 - if ((p = va_arg(ap, char *)) == NULL) -f0100f29: 8b 45 c8 mov -0x38(%ebp),%eax -f0100f2c: 89 45 14 mov %eax,0x14(%ebp) -f0100f2f: e9 36 01 00 00 jmp f010106a -f0100f34: 89 cf mov %ecx,%edi -f0100f36: eb ed jmp f0100f25 - if (lflag >= 2) -f0100f38: 83 f9 01 cmp $0x1,%ecx -f0100f3b: 7f 1f jg f0100f5c - else if (lflag) -f0100f3d: 85 c9 test %ecx,%ecx -f0100f3f: 74 67 je f0100fa8 - return va_arg(*ap, long); -f0100f41: 8b 45 14 mov 0x14(%ebp),%eax -f0100f44: 8b 00 mov (%eax),%eax -f0100f46: 89 45 d8 mov %eax,-0x28(%ebp) -f0100f49: 89 c1 mov %eax,%ecx -f0100f4b: c1 f9 1f sar $0x1f,%ecx -f0100f4e: 89 4d dc mov %ecx,-0x24(%ebp) -f0100f51: 8b 45 14 mov 0x14(%ebp),%eax -f0100f54: 8d 40 04 lea 0x4(%eax),%eax -f0100f57: 89 45 14 mov %eax,0x14(%ebp) -f0100f5a: eb 17 jmp f0100f73 - return va_arg(*ap, long long); -f0100f5c: 8b 45 14 mov 0x14(%ebp),%eax -f0100f5f: 8b 50 04 mov 0x4(%eax),%edx -f0100f62: 8b 00 mov (%eax),%eax -f0100f64: 89 45 d8 mov %eax,-0x28(%ebp) -f0100f67: 89 55 dc mov %edx,-0x24(%ebp) -f0100f6a: 8b 45 14 mov 0x14(%ebp),%eax -f0100f6d: 8d 40 08 lea 0x8(%eax),%eax -f0100f70: 89 45 14 mov %eax,0x14(%ebp) - if ((long long) num < 0) { -f0100f73: 8b 55 d8 mov -0x28(%ebp),%edx -f0100f76: 8b 4d dc mov -0x24(%ebp),%ecx - base = 10; -f0100f79: b8 0a 00 00 00 mov $0xa,%eax - if ((long long) num < 0) { -f0100f7e: 85 c9 test %ecx,%ecx -f0100f80: 0f 89 ca 00 00 00 jns f0101050 - putch('-', putdat); -f0100f86: 83 ec 08 sub $0x8,%esp -f0100f89: 53 push %ebx -f0100f8a: 6a 2d push $0x2d -f0100f8c: ff d6 call *%esi - num = -(long long) num; -f0100f8e: 8b 55 d8 mov -0x28(%ebp),%edx -f0100f91: 8b 4d dc mov -0x24(%ebp),%ecx -f0100f94: f7 da neg %edx -f0100f96: 83 d1 00 adc $0x0,%ecx -f0100f99: f7 d9 neg %ecx -f0100f9b: 83 c4 10 add $0x10,%esp - base = 10; -f0100f9e: b8 0a 00 00 00 mov $0xa,%eax -f0100fa3: e9 a8 00 00 00 jmp f0101050 - return va_arg(*ap, int); -f0100fa8: 8b 45 14 mov 0x14(%ebp),%eax -f0100fab: 8b 00 mov (%eax),%eax -f0100fad: 89 45 d8 mov %eax,-0x28(%ebp) -f0100fb0: 99 cltd -f0100fb1: 89 55 dc mov %edx,-0x24(%ebp) -f0100fb4: 8b 45 14 mov 0x14(%ebp),%eax -f0100fb7: 8d 40 04 lea 0x4(%eax),%eax -f0100fba: 89 45 14 mov %eax,0x14(%ebp) -f0100fbd: eb b4 jmp f0100f73 - if (lflag >= 2) -f0100fbf: 83 f9 01 cmp $0x1,%ecx -f0100fc2: 7f 1b jg f0100fdf - else if (lflag) -f0100fc4: 85 c9 test %ecx,%ecx -f0100fc6: 74 2c je f0100ff4 - return va_arg(*ap, unsigned long); -f0100fc8: 8b 45 14 mov 0x14(%ebp),%eax -f0100fcb: 8b 10 mov (%eax),%edx -f0100fcd: b9 00 00 00 00 mov $0x0,%ecx -f0100fd2: 8d 40 04 lea 0x4(%eax),%eax -f0100fd5: 89 45 14 mov %eax,0x14(%ebp) - base = 10; -f0100fd8: b8 0a 00 00 00 mov $0xa,%eax - return va_arg(*ap, unsigned long); -f0100fdd: eb 71 jmp f0101050 - return va_arg(*ap, unsigned long long); -f0100fdf: 8b 45 14 mov 0x14(%ebp),%eax -f0100fe2: 8b 10 mov (%eax),%edx -f0100fe4: 8b 48 04 mov 0x4(%eax),%ecx -f0100fe7: 8d 40 08 lea 0x8(%eax),%eax -f0100fea: 89 45 14 mov %eax,0x14(%ebp) - base = 10; -f0100fed: b8 0a 00 00 00 mov $0xa,%eax - return va_arg(*ap, unsigned long long); -f0100ff2: eb 5c jmp f0101050 - return va_arg(*ap, unsigned int); -f0100ff4: 8b 45 14 mov 0x14(%ebp),%eax -f0100ff7: 8b 10 mov (%eax),%edx -f0100ff9: b9 00 00 00 00 mov $0x0,%ecx -f0100ffe: 8d 40 04 lea 0x4(%eax),%eax -f0101001: 89 45 14 mov %eax,0x14(%ebp) - base = 10; -f0101004: b8 0a 00 00 00 mov $0xa,%eax - return va_arg(*ap, unsigned int); -f0101009: eb 45 jmp f0101050 - putch('X', putdat); -f010100b: 83 ec 08 sub $0x8,%esp -f010100e: 53 push %ebx -f010100f: 6a 58 push $0x58 -f0101011: ff d6 call *%esi - putch('X', putdat); -f0101013: 83 c4 08 add $0x8,%esp -f0101016: 53 push %ebx -f0101017: 6a 58 push $0x58 -f0101019: ff d6 call *%esi - putch('X', putdat); -f010101b: 83 c4 08 add $0x8,%esp -f010101e: 53 push %ebx -f010101f: 6a 58 push $0x58 -f0101021: ff d6 call *%esi - break; -f0101023: 83 c4 10 add $0x10,%esp -f0101026: eb 42 jmp f010106a - putch('0', putdat); -f0101028: 83 ec 08 sub $0x8,%esp -f010102b: 53 push %ebx -f010102c: 6a 30 push $0x30 -f010102e: ff d6 call *%esi - putch('x', putdat); -f0101030: 83 c4 08 add $0x8,%esp -f0101033: 53 push %ebx -f0101034: 6a 78 push $0x78 -f0101036: ff d6 call *%esi - num = (unsigned long long) -f0101038: 8b 45 14 mov 0x14(%ebp),%eax -f010103b: 8b 10 mov (%eax),%edx -f010103d: b9 00 00 00 00 mov $0x0,%ecx - goto number; -f0101042: 83 c4 10 add $0x10,%esp - (uintptr_t) va_arg(ap, void *); -f0101045: 8d 40 04 lea 0x4(%eax),%eax -f0101048: 89 45 14 mov %eax,0x14(%ebp) - base = 16; -f010104b: b8 10 00 00 00 mov $0x10,%eax - printnum(putch, putdat, num, base, width, padc); -f0101050: 83 ec 0c sub $0xc,%esp -f0101053: 0f be 7d d3 movsbl -0x2d(%ebp),%edi -f0101057: 57 push %edi -f0101058: ff 75 d4 pushl -0x2c(%ebp) -f010105b: 50 push %eax -f010105c: 51 push %ecx -f010105d: 52 push %edx -f010105e: 89 da mov %ebx,%edx -f0101060: 89 f0 mov %esi,%eax -f0101062: e8 a3 fb ff ff call f0100c0a - break; -f0101067: 83 c4 20 add $0x20,%esp - if ((p = va_arg(ap, char *)) == NULL) -f010106a: 8b 7d e4 mov -0x1c(%ebp),%edi - while ((ch = *(unsigned char *) fmt++) != '%') { -f010106d: 83 c7 01 add $0x1,%edi -f0101070: 0f b6 47 ff movzbl -0x1(%edi),%eax -f0101074: 83 f8 25 cmp $0x25,%eax -f0101077: 0f 84 93 fc ff ff je f0100d10 - if (ch == '\0') -f010107d: 85 c0 test %eax,%eax -f010107f: 0f 84 8b 00 00 00 je f0101110 - putch(ch, putdat); -f0101085: 83 ec 08 sub $0x8,%esp -f0101088: 53 push %ebx -f0101089: 50 push %eax -f010108a: ff d6 call *%esi -f010108c: 83 c4 10 add $0x10,%esp -f010108f: eb dc jmp f010106d - if (lflag >= 2) -f0101091: 83 f9 01 cmp $0x1,%ecx -f0101094: 7f 1b jg f01010b1 - else if (lflag) -f0101096: 85 c9 test %ecx,%ecx -f0101098: 74 2c je f01010c6 - return va_arg(*ap, unsigned long); -f010109a: 8b 45 14 mov 0x14(%ebp),%eax -f010109d: 8b 10 mov (%eax),%edx -f010109f: b9 00 00 00 00 mov $0x0,%ecx -f01010a4: 8d 40 04 lea 0x4(%eax),%eax -f01010a7: 89 45 14 mov %eax,0x14(%ebp) - base = 16; -f01010aa: b8 10 00 00 00 mov $0x10,%eax - return va_arg(*ap, unsigned long); -f01010af: eb 9f jmp f0101050 - return va_arg(*ap, unsigned long long); -f01010b1: 8b 45 14 mov 0x14(%ebp),%eax -f01010b4: 8b 10 mov (%eax),%edx -f01010b6: 8b 48 04 mov 0x4(%eax),%ecx -f01010b9: 8d 40 08 lea 0x8(%eax),%eax -f01010bc: 89 45 14 mov %eax,0x14(%ebp) - base = 16; -f01010bf: b8 10 00 00 00 mov $0x10,%eax - return va_arg(*ap, unsigned long long); -f01010c4: eb 8a jmp f0101050 - return va_arg(*ap, unsigned int); -f01010c6: 8b 45 14 mov 0x14(%ebp),%eax -f01010c9: 8b 10 mov (%eax),%edx -f01010cb: b9 00 00 00 00 mov $0x0,%ecx -f01010d0: 8d 40 04 lea 0x4(%eax),%eax -f01010d3: 89 45 14 mov %eax,0x14(%ebp) - base = 16; -f01010d6: b8 10 00 00 00 mov $0x10,%eax - return va_arg(*ap, unsigned int); -f01010db: e9 70 ff ff ff jmp f0101050 - putch(ch, putdat); -f01010e0: 83 ec 08 sub $0x8,%esp -f01010e3: 53 push %ebx -f01010e4: 6a 25 push $0x25 -f01010e6: ff d6 call *%esi - break; -f01010e8: 83 c4 10 add $0x10,%esp -f01010eb: e9 7a ff ff ff jmp f010106a - putch('%', putdat); -f01010f0: 83 ec 08 sub $0x8,%esp -f01010f3: 53 push %ebx -f01010f4: 6a 25 push $0x25 -f01010f6: ff d6 call *%esi - for (fmt--; fmt[-1] != '%'; fmt--) -f01010f8: 83 c4 10 add $0x10,%esp -f01010fb: 89 f8 mov %edi,%eax -f01010fd: 80 78 ff 25 cmpb $0x25,-0x1(%eax) -f0101101: 74 05 je f0101108 -f0101103: 83 e8 01 sub $0x1,%eax -f0101106: eb f5 jmp f01010fd -f0101108: 89 45 e4 mov %eax,-0x1c(%ebp) -f010110b: e9 5a ff ff ff jmp f010106a -} -f0101110: 8d 65 f4 lea -0xc(%ebp),%esp -f0101113: 5b pop %ebx -f0101114: 5e pop %esi -f0101115: 5f pop %edi -f0101116: 5d pop %ebp -f0101117: c3 ret - -f0101118 : - -int -vsnprintf(char *buf, int n, const char *fmt, va_list ap) -{ -f0101118: f3 0f 1e fb endbr32 -f010111c: 55 push %ebp -f010111d: 89 e5 mov %esp,%ebp -f010111f: 83 ec 18 sub $0x18,%esp -f0101122: 8b 45 08 mov 0x8(%ebp),%eax -f0101125: 8b 55 0c mov 0xc(%ebp),%edx - struct sprintbuf b = {buf, buf+n-1, 0}; -f0101128: 89 45 ec mov %eax,-0x14(%ebp) -f010112b: 8d 4c 10 ff lea -0x1(%eax,%edx,1),%ecx -f010112f: 89 4d f0 mov %ecx,-0x10(%ebp) -f0101132: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - - if (buf == NULL || n < 1) -f0101139: 85 c0 test %eax,%eax -f010113b: 74 26 je f0101163 -f010113d: 85 d2 test %edx,%edx -f010113f: 7e 22 jle f0101163 - return -E_INVAL; - - // print the string to the buffer - vprintfmt((void*)sprintputch, &b, fmt, ap); -f0101141: ff 75 14 pushl 0x14(%ebp) -f0101144: ff 75 10 pushl 0x10(%ebp) -f0101147: 8d 45 ec lea -0x14(%ebp),%eax -f010114a: 50 push %eax -f010114b: 68 b3 0c 10 f0 push $0xf0100cb3 -f0101150: e8 a0 fb ff ff call f0100cf5 - - // null terminate the buffer - *b.buf = '\0'; -f0101155: 8b 45 ec mov -0x14(%ebp),%eax -f0101158: c6 00 00 movb $0x0,(%eax) - - return b.cnt; -f010115b: 8b 45 f4 mov -0xc(%ebp),%eax -f010115e: 83 c4 10 add $0x10,%esp -} -f0101161: c9 leave -f0101162: c3 ret - return -E_INVAL; -f0101163: b8 fd ff ff ff mov $0xfffffffd,%eax -f0101168: eb f7 jmp f0101161 - -f010116a : - -int -snprintf(char *buf, int n, const char *fmt, ...) -{ -f010116a: f3 0f 1e fb endbr32 -f010116e: 55 push %ebp -f010116f: 89 e5 mov %esp,%ebp -f0101171: 83 ec 08 sub $0x8,%esp - va_list ap; - int rc; - - va_start(ap, fmt); -f0101174: 8d 45 14 lea 0x14(%ebp),%eax - rc = vsnprintf(buf, n, fmt, ap); -f0101177: 50 push %eax -f0101178: ff 75 10 pushl 0x10(%ebp) -f010117b: ff 75 0c pushl 0xc(%ebp) -f010117e: ff 75 08 pushl 0x8(%ebp) -f0101181: e8 92 ff ff ff call f0101118 - va_end(ap); - - return rc; -} -f0101186: c9 leave -f0101187: c3 ret - -f0101188 : -#define BUFLEN 1024 -static char buf[BUFLEN]; - -char * -readline(const char *prompt) -{ -f0101188: f3 0f 1e fb endbr32 -f010118c: 55 push %ebp -f010118d: 89 e5 mov %esp,%ebp -f010118f: 57 push %edi -f0101190: 56 push %esi -f0101191: 53 push %ebx -f0101192: 83 ec 0c sub $0xc,%esp -f0101195: 8b 45 08 mov 0x8(%ebp),%eax - int i, c, echoing; - - if (prompt != NULL) -f0101198: 85 c0 test %eax,%eax -f010119a: 74 11 je f01011ad - cprintf("%s", prompt); -f010119c: 83 ec 08 sub $0x8,%esp -f010119f: 50 push %eax -f01011a0: 68 c2 1d 10 f0 push $0xf0101dc2 -f01011a5: e8 7d f7 ff ff call f0100927 -f01011aa: 83 c4 10 add $0x10,%esp - - i = 0; - echoing = iscons(0); -f01011ad: 83 ec 0c sub $0xc,%esp -f01011b0: 6a 00 push $0x0 -f01011b2: e8 f1 f4 ff ff call f01006a8 -f01011b7: 89 c7 mov %eax,%edi -f01011b9: 83 c4 10 add $0x10,%esp - i = 0; -f01011bc: be 00 00 00 00 mov $0x0,%esi -f01011c1: eb 4b jmp f010120e - while (1) { - c = getchar(); - if (c < 0) { - cprintf("read error: %e\n", c); -f01011c3: 83 ec 08 sub $0x8,%esp -f01011c6: 50 push %eax -f01011c7: 68 a4 1f 10 f0 push $0xf0101fa4 -f01011cc: e8 56 f7 ff ff call f0100927 - return NULL; -f01011d1: 83 c4 10 add $0x10,%esp -f01011d4: b8 00 00 00 00 mov $0x0,%eax - cputchar('\n'); - buf[i] = 0; - return buf; - } - } -} -f01011d9: 8d 65 f4 lea -0xc(%ebp),%esp -f01011dc: 5b pop %ebx -f01011dd: 5e pop %esi -f01011de: 5f pop %edi -f01011df: 5d pop %ebp -f01011e0: c3 ret - if (echoing) -f01011e1: 85 ff test %edi,%edi -f01011e3: 75 05 jne f01011ea - i--; -f01011e5: 83 ee 01 sub $0x1,%esi -f01011e8: eb 24 jmp f010120e - cputchar('\b'); -f01011ea: 83 ec 0c sub $0xc,%esp -f01011ed: 6a 08 push $0x8 -f01011ef: e8 8b f4 ff ff call f010067f -f01011f4: 83 c4 10 add $0x10,%esp -f01011f7: eb ec jmp f01011e5 - cputchar(c); -f01011f9: 83 ec 0c sub $0xc,%esp -f01011fc: 53 push %ebx -f01011fd: e8 7d f4 ff ff call f010067f -f0101202: 83 c4 10 add $0x10,%esp - buf[i++] = c; -f0101205: 88 9e 40 25 11 f0 mov %bl,-0xfeedac0(%esi) -f010120b: 8d 76 01 lea 0x1(%esi),%esi - c = getchar(); -f010120e: e8 80 f4 ff ff call f0100693 -f0101213: 89 c3 mov %eax,%ebx - if (c < 0) { -f0101215: 85 c0 test %eax,%eax -f0101217: 78 aa js f01011c3 - } else if ((c == '\b' || c == '\x7f') && i > 0) { -f0101219: 83 f8 08 cmp $0x8,%eax -f010121c: 0f 94 c2 sete %dl -f010121f: 83 f8 7f cmp $0x7f,%eax -f0101222: 0f 94 c0 sete %al -f0101225: 08 c2 or %al,%dl -f0101227: 74 04 je f010122d -f0101229: 85 f6 test %esi,%esi -f010122b: 7f b4 jg f01011e1 - } else if (c >= ' ' && i < BUFLEN-1) { -f010122d: 83 fb 1f cmp $0x1f,%ebx -f0101230: 7e 0e jle f0101240 -f0101232: 81 fe fe 03 00 00 cmp $0x3fe,%esi -f0101238: 7f 06 jg f0101240 - if (echoing) -f010123a: 85 ff test %edi,%edi -f010123c: 74 c7 je f0101205 -f010123e: eb b9 jmp f01011f9 - } else if (c == '\n' || c == '\r') { -f0101240: 83 fb 0a cmp $0xa,%ebx -f0101243: 74 05 je f010124a -f0101245: 83 fb 0d cmp $0xd,%ebx -f0101248: 75 c4 jne f010120e - if (echoing) -f010124a: 85 ff test %edi,%edi -f010124c: 75 11 jne f010125f - buf[i] = 0; -f010124e: c6 86 40 25 11 f0 00 movb $0x0,-0xfeedac0(%esi) - return buf; -f0101255: b8 40 25 11 f0 mov $0xf0112540,%eax -f010125a: e9 7a ff ff ff jmp f01011d9 - cputchar('\n'); -f010125f: 83 ec 0c sub $0xc,%esp -f0101262: 6a 0a push $0xa -f0101264: e8 16 f4 ff ff call f010067f -f0101269: 83 c4 10 add $0x10,%esp -f010126c: eb e0 jmp f010124e - -f010126e : -// Primespipe runs 3x faster this way. -#define ASM 1 - -int -strlen(const char *s) -{ -f010126e: f3 0f 1e fb endbr32 -f0101272: 55 push %ebp -f0101273: 89 e5 mov %esp,%ebp -f0101275: 8b 55 08 mov 0x8(%ebp),%edx - int n; - - for (n = 0; *s != '\0'; s++) -f0101278: b8 00 00 00 00 mov $0x0,%eax -f010127d: 80 3c 02 00 cmpb $0x0,(%edx,%eax,1) -f0101281: 74 05 je f0101288 - n++; -f0101283: 83 c0 01 add $0x1,%eax -f0101286: eb f5 jmp f010127d - return n; -} -f0101288: 5d pop %ebp -f0101289: c3 ret - -f010128a : - -int -strnlen(const char *s, size_t size) -{ -f010128a: f3 0f 1e fb endbr32 -f010128e: 55 push %ebp -f010128f: 89 e5 mov %esp,%ebp -f0101291: 8b 4d 08 mov 0x8(%ebp),%ecx -f0101294: 8b 55 0c mov 0xc(%ebp),%edx - int n; - - for (n = 0; size > 0 && *s != '\0'; s++, size--) -f0101297: b8 00 00 00 00 mov $0x0,%eax -f010129c: 39 d0 cmp %edx,%eax -f010129e: 74 0d je f01012ad -f01012a0: 80 3c 01 00 cmpb $0x0,(%ecx,%eax,1) -f01012a4: 74 05 je f01012ab - n++; -f01012a6: 83 c0 01 add $0x1,%eax -f01012a9: eb f1 jmp f010129c -f01012ab: 89 c2 mov %eax,%edx - return n; -} -f01012ad: 89 d0 mov %edx,%eax -f01012af: 5d pop %ebp -f01012b0: c3 ret - -f01012b1 : - -char * -strcpy(char *dst, const char *src) -{ -f01012b1: f3 0f 1e fb endbr32 -f01012b5: 55 push %ebp -f01012b6: 89 e5 mov %esp,%ebp -f01012b8: 53 push %ebx -f01012b9: 8b 4d 08 mov 0x8(%ebp),%ecx -f01012bc: 8b 5d 0c mov 0xc(%ebp),%ebx - char *ret; - - ret = dst; - while ((*dst++ = *src++) != '\0') -f01012bf: b8 00 00 00 00 mov $0x0,%eax -f01012c4: 0f b6 14 03 movzbl (%ebx,%eax,1),%edx -f01012c8: 88 14 01 mov %dl,(%ecx,%eax,1) -f01012cb: 83 c0 01 add $0x1,%eax -f01012ce: 84 d2 test %dl,%dl -f01012d0: 75 f2 jne f01012c4 - /* do nothing */; - return ret; -} -f01012d2: 89 c8 mov %ecx,%eax -f01012d4: 5b pop %ebx -f01012d5: 5d pop %ebp -f01012d6: c3 ret - -f01012d7 : - -char * -strcat(char *dst, const char *src) -{ -f01012d7: f3 0f 1e fb endbr32 -f01012db: 55 push %ebp -f01012dc: 89 e5 mov %esp,%ebp -f01012de: 53 push %ebx -f01012df: 83 ec 10 sub $0x10,%esp -f01012e2: 8b 5d 08 mov 0x8(%ebp),%ebx - int len = strlen(dst); -f01012e5: 53 push %ebx -f01012e6: e8 83 ff ff ff call f010126e -f01012eb: 83 c4 08 add $0x8,%esp - strcpy(dst + len, src); -f01012ee: ff 75 0c pushl 0xc(%ebp) -f01012f1: 01 d8 add %ebx,%eax -f01012f3: 50 push %eax -f01012f4: e8 b8 ff ff ff call f01012b1 - return dst; -} -f01012f9: 89 d8 mov %ebx,%eax -f01012fb: 8b 5d fc mov -0x4(%ebp),%ebx -f01012fe: c9 leave -f01012ff: c3 ret - -f0101300 : - -char * -strncpy(char *dst, const char *src, size_t size) { -f0101300: f3 0f 1e fb endbr32 -f0101304: 55 push %ebp -f0101305: 89 e5 mov %esp,%ebp -f0101307: 56 push %esi -f0101308: 53 push %ebx -f0101309: 8b 75 08 mov 0x8(%ebp),%esi -f010130c: 8b 55 0c mov 0xc(%ebp),%edx -f010130f: 89 f3 mov %esi,%ebx -f0101311: 03 5d 10 add 0x10(%ebp),%ebx - size_t i; - char *ret; - - ret = dst; - for (i = 0; i < size; i++) { -f0101314: 89 f0 mov %esi,%eax -f0101316: 39 d8 cmp %ebx,%eax -f0101318: 74 11 je f010132b - *dst++ = *src; -f010131a: 83 c0 01 add $0x1,%eax -f010131d: 0f b6 0a movzbl (%edx),%ecx -f0101320: 88 48 ff mov %cl,-0x1(%eax) - // If strlen(src) < size, null-pad 'dst' out to 'size' chars - if (*src != '\0') - src++; -f0101323: 80 f9 01 cmp $0x1,%cl -f0101326: 83 da ff sbb $0xffffffff,%edx -f0101329: eb eb jmp f0101316 - } - return ret; -} -f010132b: 89 f0 mov %esi,%eax -f010132d: 5b pop %ebx -f010132e: 5e pop %esi -f010132f: 5d pop %ebp -f0101330: c3 ret - -f0101331 : - -size_t -strlcpy(char *dst, const char *src, size_t size) -{ -f0101331: f3 0f 1e fb endbr32 -f0101335: 55 push %ebp -f0101336: 89 e5 mov %esp,%ebp -f0101338: 56 push %esi -f0101339: 53 push %ebx -f010133a: 8b 75 08 mov 0x8(%ebp),%esi -f010133d: 8b 4d 0c mov 0xc(%ebp),%ecx -f0101340: 8b 55 10 mov 0x10(%ebp),%edx -f0101343: 89 f0 mov %esi,%eax - char *dst_in; - - dst_in = dst; - if (size > 0) { -f0101345: 85 d2 test %edx,%edx -f0101347: 74 21 je f010136a -f0101349: 8d 44 16 ff lea -0x1(%esi,%edx,1),%eax -f010134d: 89 f2 mov %esi,%edx - while (--size > 0 && *src != '\0') -f010134f: 39 c2 cmp %eax,%edx -f0101351: 74 14 je f0101367 -f0101353: 0f b6 19 movzbl (%ecx),%ebx -f0101356: 84 db test %bl,%bl -f0101358: 74 0b je f0101365 - *dst++ = *src++; -f010135a: 83 c1 01 add $0x1,%ecx -f010135d: 83 c2 01 add $0x1,%edx -f0101360: 88 5a ff mov %bl,-0x1(%edx) -f0101363: eb ea jmp f010134f -f0101365: 89 d0 mov %edx,%eax - *dst = '\0'; -f0101367: c6 00 00 movb $0x0,(%eax) - } - return dst - dst_in; -f010136a: 29 f0 sub %esi,%eax -} -f010136c: 5b pop %ebx -f010136d: 5e pop %esi -f010136e: 5d pop %ebp -f010136f: c3 ret - -f0101370 : - -int -strcmp(const char *p, const char *q) -{ -f0101370: f3 0f 1e fb endbr32 -f0101374: 55 push %ebp -f0101375: 89 e5 mov %esp,%ebp -f0101377: 8b 4d 08 mov 0x8(%ebp),%ecx -f010137a: 8b 55 0c mov 0xc(%ebp),%edx - while (*p && *p == *q) -f010137d: 0f b6 01 movzbl (%ecx),%eax -f0101380: 84 c0 test %al,%al -f0101382: 74 0c je f0101390 -f0101384: 3a 02 cmp (%edx),%al -f0101386: 75 08 jne f0101390 - p++, q++; -f0101388: 83 c1 01 add $0x1,%ecx -f010138b: 83 c2 01 add $0x1,%edx -f010138e: eb ed jmp f010137d - return (int) ((unsigned char) *p - (unsigned char) *q); -f0101390: 0f b6 c0 movzbl %al,%eax -f0101393: 0f b6 12 movzbl (%edx),%edx -f0101396: 29 d0 sub %edx,%eax -} -f0101398: 5d pop %ebp -f0101399: c3 ret - -f010139a : - -int -strncmp(const char *p, const char *q, size_t n) -{ -f010139a: f3 0f 1e fb endbr32 -f010139e: 55 push %ebp -f010139f: 89 e5 mov %esp,%ebp -f01013a1: 53 push %ebx -f01013a2: 8b 45 08 mov 0x8(%ebp),%eax -f01013a5: 8b 55 0c mov 0xc(%ebp),%edx -f01013a8: 89 c3 mov %eax,%ebx -f01013aa: 03 5d 10 add 0x10(%ebp),%ebx - while (n > 0 && *p && *p == *q) -f01013ad: eb 06 jmp f01013b5 - n--, p++, q++; -f01013af: 83 c0 01 add $0x1,%eax -f01013b2: 83 c2 01 add $0x1,%edx - while (n > 0 && *p && *p == *q) -f01013b5: 39 d8 cmp %ebx,%eax -f01013b7: 74 16 je f01013cf -f01013b9: 0f b6 08 movzbl (%eax),%ecx -f01013bc: 84 c9 test %cl,%cl -f01013be: 74 04 je f01013c4 -f01013c0: 3a 0a cmp (%edx),%cl -f01013c2: 74 eb je f01013af - if (n == 0) - return 0; - else - return (int) ((unsigned char) *p - (unsigned char) *q); -f01013c4: 0f b6 00 movzbl (%eax),%eax -f01013c7: 0f b6 12 movzbl (%edx),%edx -f01013ca: 29 d0 sub %edx,%eax -} -f01013cc: 5b pop %ebx -f01013cd: 5d pop %ebp -f01013ce: c3 ret - return 0; -f01013cf: b8 00 00 00 00 mov $0x0,%eax -f01013d4: eb f6 jmp f01013cc - -f01013d6 : - -// Return a pointer to the first occurrence of 'c' in 's', -// or a null pointer if the string has no 'c'. -char * -strchr(const char *s, char c) -{ -f01013d6: f3 0f 1e fb endbr32 -f01013da: 55 push %ebp -f01013db: 89 e5 mov %esp,%ebp -f01013dd: 8b 45 08 mov 0x8(%ebp),%eax -f01013e0: 0f b6 4d 0c movzbl 0xc(%ebp),%ecx - for (; *s; s++) -f01013e4: 0f b6 10 movzbl (%eax),%edx -f01013e7: 84 d2 test %dl,%dl -f01013e9: 74 09 je f01013f4 - if (*s == c) -f01013eb: 38 ca cmp %cl,%dl -f01013ed: 74 0a je f01013f9 - for (; *s; s++) -f01013ef: 83 c0 01 add $0x1,%eax -f01013f2: eb f0 jmp f01013e4 - return (char *) s; - return 0; -f01013f4: b8 00 00 00 00 mov $0x0,%eax -} -f01013f9: 5d pop %ebp -f01013fa: c3 ret - -f01013fb : - -// Return a pointer to the first occurrence of 'c' in 's', -// or a pointer to the string-ending null character if the string has no 'c'. -char * -strfind(const char *s, char c) -{ -f01013fb: f3 0f 1e fb endbr32 -f01013ff: 55 push %ebp -f0101400: 89 e5 mov %esp,%ebp -f0101402: 8b 45 08 mov 0x8(%ebp),%eax -f0101405: 0f b6 4d 0c movzbl 0xc(%ebp),%ecx - for (; *s; s++) -f0101409: 0f b6 10 movzbl (%eax),%edx - if (*s == c) -f010140c: 38 ca cmp %cl,%dl -f010140e: 74 09 je f0101419 -f0101410: 84 d2 test %dl,%dl -f0101412: 74 05 je f0101419 - for (; *s; s++) -f0101414: 83 c0 01 add $0x1,%eax -f0101417: eb f0 jmp f0101409 - break; - return (char *) s; -} -f0101419: 5d pop %ebp -f010141a: c3 ret - -f010141b : - -#if ASM -void * -memset(void *v, int c, size_t n) -{ -f010141b: f3 0f 1e fb endbr32 -f010141f: 55 push %ebp -f0101420: 89 e5 mov %esp,%ebp -f0101422: 57 push %edi -f0101423: 56 push %esi -f0101424: 53 push %ebx -f0101425: 8b 7d 08 mov 0x8(%ebp),%edi -f0101428: 8b 4d 10 mov 0x10(%ebp),%ecx - char *p; - - if (n == 0) -f010142b: 85 c9 test %ecx,%ecx -f010142d: 74 31 je f0101460 - return v; - if ((int)v%4 == 0 && n%4 == 0) { -f010142f: 89 f8 mov %edi,%eax -f0101431: 09 c8 or %ecx,%eax -f0101433: a8 03 test $0x3,%al -f0101435: 75 23 jne f010145a - c &= 0xFF; -f0101437: 0f b6 55 0c movzbl 0xc(%ebp),%edx - c = (c<<24)|(c<<16)|(c<<8)|c; -f010143b: 89 d3 mov %edx,%ebx -f010143d: c1 e3 08 shl $0x8,%ebx -f0101440: 89 d0 mov %edx,%eax -f0101442: c1 e0 18 shl $0x18,%eax -f0101445: 89 d6 mov %edx,%esi -f0101447: c1 e6 10 shl $0x10,%esi -f010144a: 09 f0 or %esi,%eax -f010144c: 09 c2 or %eax,%edx -f010144e: 09 da or %ebx,%edx - asm volatile("cld; rep stosl\n" - :: "D" (v), "a" (c), "c" (n/4) -f0101450: c1 e9 02 shr $0x2,%ecx - asm volatile("cld; rep stosl\n" -f0101453: 89 d0 mov %edx,%eax -f0101455: fc cld -f0101456: f3 ab rep stos %eax,%es:(%edi) -f0101458: eb 06 jmp f0101460 - : "cc", "memory"); - } else - asm volatile("cld; rep stosb\n" -f010145a: 8b 45 0c mov 0xc(%ebp),%eax -f010145d: fc cld -f010145e: f3 aa rep stos %al,%es:(%edi) - :: "D" (v), "a" (c), "c" (n) - : "cc", "memory"); - return v; -} -f0101460: 89 f8 mov %edi,%eax -f0101462: 5b pop %ebx -f0101463: 5e pop %esi -f0101464: 5f pop %edi -f0101465: 5d pop %ebp -f0101466: c3 ret - -f0101467 : - -void * -memmove(void *dst, const void *src, size_t n) -{ -f0101467: f3 0f 1e fb endbr32 -f010146b: 55 push %ebp -f010146c: 89 e5 mov %esp,%ebp -f010146e: 57 push %edi -f010146f: 56 push %esi -f0101470: 8b 45 08 mov 0x8(%ebp),%eax -f0101473: 8b 75 0c mov 0xc(%ebp),%esi -f0101476: 8b 4d 10 mov 0x10(%ebp),%ecx - const char *s; - char *d; - - s = src; - d = dst; - if (s < d && s + n > d) { -f0101479: 39 c6 cmp %eax,%esi -f010147b: 73 32 jae f01014af -f010147d: 8d 14 0e lea (%esi,%ecx,1),%edx -f0101480: 39 c2 cmp %eax,%edx -f0101482: 76 2b jbe f01014af - s += n; - d += n; -f0101484: 8d 3c 08 lea (%eax,%ecx,1),%edi - if ((int)s%4 == 0 && (int)d%4 == 0 && n%4 == 0) -f0101487: 89 fe mov %edi,%esi -f0101489: 09 ce or %ecx,%esi -f010148b: 09 d6 or %edx,%esi -f010148d: f7 c6 03 00 00 00 test $0x3,%esi -f0101493: 75 0e jne f01014a3 - asm volatile("std; rep movsl\n" - :: "D" (d-4), "S" (s-4), "c" (n/4) : "cc", "memory"); -f0101495: 83 ef 04 sub $0x4,%edi -f0101498: 8d 72 fc lea -0x4(%edx),%esi -f010149b: c1 e9 02 shr $0x2,%ecx - asm volatile("std; rep movsl\n" -f010149e: fd std -f010149f: f3 a5 rep movsl %ds:(%esi),%es:(%edi) -f01014a1: eb 09 jmp f01014ac - else - asm volatile("std; rep movsb\n" - :: "D" (d-1), "S" (s-1), "c" (n) : "cc", "memory"); -f01014a3: 83 ef 01 sub $0x1,%edi -f01014a6: 8d 72 ff lea -0x1(%edx),%esi - asm volatile("std; rep movsb\n" -f01014a9: fd std -f01014aa: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - // Some versions of GCC rely on DF being clear - asm volatile("cld" ::: "cc"); -f01014ac: fc cld -f01014ad: eb 1a jmp f01014c9 - } else { - if ((int)s%4 == 0 && (int)d%4 == 0 && n%4 == 0) -f01014af: 89 c2 mov %eax,%edx -f01014b1: 09 ca or %ecx,%edx -f01014b3: 09 f2 or %esi,%edx -f01014b5: f6 c2 03 test $0x3,%dl -f01014b8: 75 0a jne f01014c4 - asm volatile("cld; rep movsl\n" - :: "D" (d), "S" (s), "c" (n/4) : "cc", "memory"); -f01014ba: c1 e9 02 shr $0x2,%ecx - asm volatile("cld; rep movsl\n" -f01014bd: 89 c7 mov %eax,%edi -f01014bf: fc cld -f01014c0: f3 a5 rep movsl %ds:(%esi),%es:(%edi) -f01014c2: eb 05 jmp f01014c9 - else - asm volatile("cld; rep movsb\n" -f01014c4: 89 c7 mov %eax,%edi -f01014c6: fc cld -f01014c7: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - :: "D" (d), "S" (s), "c" (n) : "cc", "memory"); - } - return dst; -} -f01014c9: 5e pop %esi -f01014ca: 5f pop %edi -f01014cb: 5d pop %ebp -f01014cc: c3 ret - -f01014cd : -} -#endif - -void * -memcpy(void *dst, const void *src, size_t n) -{ -f01014cd: f3 0f 1e fb endbr32 -f01014d1: 55 push %ebp -f01014d2: 89 e5 mov %esp,%ebp -f01014d4: 83 ec 0c sub $0xc,%esp - return memmove(dst, src, n); -f01014d7: ff 75 10 pushl 0x10(%ebp) -f01014da: ff 75 0c pushl 0xc(%ebp) -f01014dd: ff 75 08 pushl 0x8(%ebp) -f01014e0: e8 82 ff ff ff call f0101467 -} -f01014e5: c9 leave -f01014e6: c3 ret - -f01014e7 : - -int -memcmp(const void *v1, const void *v2, size_t n) -{ -f01014e7: f3 0f 1e fb endbr32 -f01014eb: 55 push %ebp -f01014ec: 89 e5 mov %esp,%ebp -f01014ee: 56 push %esi -f01014ef: 53 push %ebx -f01014f0: 8b 45 08 mov 0x8(%ebp),%eax -f01014f3: 8b 55 0c mov 0xc(%ebp),%edx -f01014f6: 89 c6 mov %eax,%esi -f01014f8: 03 75 10 add 0x10(%ebp),%esi - const uint8_t *s1 = (const uint8_t *) v1; - const uint8_t *s2 = (const uint8_t *) v2; - - while (n-- > 0) { -f01014fb: 39 f0 cmp %esi,%eax -f01014fd: 74 1c je f010151b - if (*s1 != *s2) -f01014ff: 0f b6 08 movzbl (%eax),%ecx -f0101502: 0f b6 1a movzbl (%edx),%ebx -f0101505: 38 d9 cmp %bl,%cl -f0101507: 75 08 jne f0101511 - return (int) *s1 - (int) *s2; - s1++, s2++; -f0101509: 83 c0 01 add $0x1,%eax -f010150c: 83 c2 01 add $0x1,%edx -f010150f: eb ea jmp f01014fb - return (int) *s1 - (int) *s2; -f0101511: 0f b6 c1 movzbl %cl,%eax -f0101514: 0f b6 db movzbl %bl,%ebx -f0101517: 29 d8 sub %ebx,%eax -f0101519: eb 05 jmp f0101520 - } - - return 0; -f010151b: b8 00 00 00 00 mov $0x0,%eax -} -f0101520: 5b pop %ebx -f0101521: 5e pop %esi -f0101522: 5d pop %ebp -f0101523: c3 ret - -f0101524 : - -void * -memfind(const void *s, int c, size_t n) -{ -f0101524: f3 0f 1e fb endbr32 -f0101528: 55 push %ebp -f0101529: 89 e5 mov %esp,%ebp -f010152b: 8b 45 08 mov 0x8(%ebp),%eax -f010152e: 8b 4d 0c mov 0xc(%ebp),%ecx - const void *ends = (const char *) s + n; -f0101531: 89 c2 mov %eax,%edx -f0101533: 03 55 10 add 0x10(%ebp),%edx - for (; s < ends; s++) -f0101536: 39 d0 cmp %edx,%eax -f0101538: 73 09 jae f0101543 - if (*(const unsigned char *) s == (unsigned char) c) -f010153a: 38 08 cmp %cl,(%eax) -f010153c: 74 05 je f0101543 - for (; s < ends; s++) -f010153e: 83 c0 01 add $0x1,%eax -f0101541: eb f3 jmp f0101536 - break; - return (void *) s; -} -f0101543: 5d pop %ebp -f0101544: c3 ret - -f0101545 : - -long -strtol(const char *s, char **endptr, int base) -{ -f0101545: f3 0f 1e fb endbr32 -f0101549: 55 push %ebp -f010154a: 89 e5 mov %esp,%ebp -f010154c: 57 push %edi -f010154d: 56 push %esi -f010154e: 53 push %ebx -f010154f: 8b 4d 08 mov 0x8(%ebp),%ecx -f0101552: 8b 5d 10 mov 0x10(%ebp),%ebx - int neg = 0; - long val = 0; - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') -f0101555: eb 03 jmp f010155a - s++; -f0101557: 83 c1 01 add $0x1,%ecx - while (*s == ' ' || *s == '\t') -f010155a: 0f b6 01 movzbl (%ecx),%eax -f010155d: 3c 20 cmp $0x20,%al -f010155f: 74 f6 je f0101557 -f0101561: 3c 09 cmp $0x9,%al -f0101563: 74 f2 je f0101557 - - // plus/minus sign - if (*s == '+') -f0101565: 3c 2b cmp $0x2b,%al -f0101567: 74 2a je f0101593 - int neg = 0; -f0101569: bf 00 00 00 00 mov $0x0,%edi - s++; - else if (*s == '-') -f010156e: 3c 2d cmp $0x2d,%al -f0101570: 74 2b je f010159d - s++, neg = 1; - - // hex or octal base prefix - if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) -f0101572: f7 c3 ef ff ff ff test $0xffffffef,%ebx -f0101578: 75 0f jne f0101589 -f010157a: 80 39 30 cmpb $0x30,(%ecx) -f010157d: 74 28 je f01015a7 - s += 2, base = 16; - else if (base == 0 && s[0] == '0') - s++, base = 8; - else if (base == 0) - base = 10; -f010157f: 85 db test %ebx,%ebx -f0101581: b8 0a 00 00 00 mov $0xa,%eax -f0101586: 0f 44 d8 cmove %eax,%ebx -f0101589: b8 00 00 00 00 mov $0x0,%eax -f010158e: 89 5d 10 mov %ebx,0x10(%ebp) -f0101591: eb 46 jmp f01015d9 - s++; -f0101593: 83 c1 01 add $0x1,%ecx - int neg = 0; -f0101596: bf 00 00 00 00 mov $0x0,%edi -f010159b: eb d5 jmp f0101572 - s++, neg = 1; -f010159d: 83 c1 01 add $0x1,%ecx -f01015a0: bf 01 00 00 00 mov $0x1,%edi -f01015a5: eb cb jmp f0101572 - if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) -f01015a7: 80 79 01 78 cmpb $0x78,0x1(%ecx) -f01015ab: 74 0e je f01015bb - else if (base == 0 && s[0] == '0') -f01015ad: 85 db test %ebx,%ebx -f01015af: 75 d8 jne f0101589 - s++, base = 8; -f01015b1: 83 c1 01 add $0x1,%ecx -f01015b4: bb 08 00 00 00 mov $0x8,%ebx -f01015b9: eb ce jmp f0101589 - s += 2, base = 16; -f01015bb: 83 c1 02 add $0x2,%ecx -f01015be: bb 10 00 00 00 mov $0x10,%ebx -f01015c3: eb c4 jmp f0101589 - // digits - while (1) { - int dig; - - if (*s >= '0' && *s <= '9') - dig = *s - '0'; -f01015c5: 0f be d2 movsbl %dl,%edx -f01015c8: 83 ea 30 sub $0x30,%edx - dig = *s - 'a' + 10; - else if (*s >= 'A' && *s <= 'Z') - dig = *s - 'A' + 10; - else - break; - if (dig >= base) -f01015cb: 3b 55 10 cmp 0x10(%ebp),%edx -f01015ce: 7d 3a jge f010160a - break; - s++, val = (val * base) + dig; -f01015d0: 83 c1 01 add $0x1,%ecx -f01015d3: 0f af 45 10 imul 0x10(%ebp),%eax -f01015d7: 01 d0 add %edx,%eax - if (*s >= '0' && *s <= '9') -f01015d9: 0f b6 11 movzbl (%ecx),%edx -f01015dc: 8d 72 d0 lea -0x30(%edx),%esi -f01015df: 89 f3 mov %esi,%ebx -f01015e1: 80 fb 09 cmp $0x9,%bl -f01015e4: 76 df jbe f01015c5 - else if (*s >= 'a' && *s <= 'z') -f01015e6: 8d 72 9f lea -0x61(%edx),%esi -f01015e9: 89 f3 mov %esi,%ebx -f01015eb: 80 fb 19 cmp $0x19,%bl -f01015ee: 77 08 ja f01015f8 - dig = *s - 'a' + 10; -f01015f0: 0f be d2 movsbl %dl,%edx -f01015f3: 83 ea 57 sub $0x57,%edx -f01015f6: eb d3 jmp f01015cb - else if (*s >= 'A' && *s <= 'Z') -f01015f8: 8d 72 bf lea -0x41(%edx),%esi -f01015fb: 89 f3 mov %esi,%ebx -f01015fd: 80 fb 19 cmp $0x19,%bl -f0101600: 77 08 ja f010160a - dig = *s - 'A' + 10; -f0101602: 0f be d2 movsbl %dl,%edx -f0101605: 83 ea 37 sub $0x37,%edx -f0101608: eb c1 jmp f01015cb - // we don't properly detect overflow! - } - - if (endptr) -f010160a: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -f010160e: 74 05 je f0101615 - *endptr = (char *) s; -f0101610: 8b 75 0c mov 0xc(%ebp),%esi -f0101613: 89 0e mov %ecx,(%esi) - return (neg ? -val : val); -f0101615: 89 c2 mov %eax,%edx -f0101617: f7 da neg %edx -f0101619: 85 ff test %edi,%edi -f010161b: 0f 45 c2 cmovne %edx,%eax -} -f010161e: 5b pop %ebx -f010161f: 5e pop %esi -f0101620: 5f pop %edi -f0101621: 5d pop %ebp -f0101622: c3 ret -f0101623: 66 90 xchg %ax,%ax -f0101625: 66 90 xchg %ax,%ax -f0101627: 66 90 xchg %ax,%ax -f0101629: 66 90 xchg %ax,%ax -f010162b: 66 90 xchg %ax,%ax -f010162d: 66 90 xchg %ax,%ax -f010162f: 90 nop - -f0101630 <__udivdi3>: -f0101630: f3 0f 1e fb endbr32 -f0101634: 55 push %ebp -f0101635: 57 push %edi -f0101636: 56 push %esi -f0101637: 53 push %ebx -f0101638: 83 ec 1c sub $0x1c,%esp -f010163b: 8b 54 24 3c mov 0x3c(%esp),%edx -f010163f: 8b 6c 24 30 mov 0x30(%esp),%ebp -f0101643: 8b 74 24 34 mov 0x34(%esp),%esi -f0101647: 8b 5c 24 38 mov 0x38(%esp),%ebx -f010164b: 85 d2 test %edx,%edx -f010164d: 75 19 jne f0101668 <__udivdi3+0x38> -f010164f: 39 f3 cmp %esi,%ebx -f0101651: 76 4d jbe f01016a0 <__udivdi3+0x70> -f0101653: 31 ff xor %edi,%edi -f0101655: 89 e8 mov %ebp,%eax -f0101657: 89 f2 mov %esi,%edx -f0101659: f7 f3 div %ebx -f010165b: 89 fa mov %edi,%edx -f010165d: 83 c4 1c add $0x1c,%esp -f0101660: 5b pop %ebx -f0101661: 5e pop %esi -f0101662: 5f pop %edi -f0101663: 5d pop %ebp -f0101664: c3 ret -f0101665: 8d 76 00 lea 0x0(%esi),%esi -f0101668: 39 f2 cmp %esi,%edx -f010166a: 76 14 jbe f0101680 <__udivdi3+0x50> -f010166c: 31 ff xor %edi,%edi -f010166e: 31 c0 xor %eax,%eax -f0101670: 89 fa mov %edi,%edx -f0101672: 83 c4 1c add $0x1c,%esp -f0101675: 5b pop %ebx -f0101676: 5e pop %esi -f0101677: 5f pop %edi -f0101678: 5d pop %ebp -f0101679: c3 ret -f010167a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi -f0101680: 0f bd fa bsr %edx,%edi -f0101683: 83 f7 1f xor $0x1f,%edi -f0101686: 75 48 jne f01016d0 <__udivdi3+0xa0> -f0101688: 39 f2 cmp %esi,%edx -f010168a: 72 06 jb f0101692 <__udivdi3+0x62> -f010168c: 31 c0 xor %eax,%eax -f010168e: 39 eb cmp %ebp,%ebx -f0101690: 77 de ja f0101670 <__udivdi3+0x40> -f0101692: b8 01 00 00 00 mov $0x1,%eax -f0101697: eb d7 jmp f0101670 <__udivdi3+0x40> -f0101699: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f01016a0: 89 d9 mov %ebx,%ecx -f01016a2: 85 db test %ebx,%ebx -f01016a4: 75 0b jne f01016b1 <__udivdi3+0x81> -f01016a6: b8 01 00 00 00 mov $0x1,%eax -f01016ab: 31 d2 xor %edx,%edx -f01016ad: f7 f3 div %ebx -f01016af: 89 c1 mov %eax,%ecx -f01016b1: 31 d2 xor %edx,%edx -f01016b3: 89 f0 mov %esi,%eax -f01016b5: f7 f1 div %ecx -f01016b7: 89 c6 mov %eax,%esi -f01016b9: 89 e8 mov %ebp,%eax -f01016bb: 89 f7 mov %esi,%edi -f01016bd: f7 f1 div %ecx -f01016bf: 89 fa mov %edi,%edx -f01016c1: 83 c4 1c add $0x1c,%esp -f01016c4: 5b pop %ebx -f01016c5: 5e pop %esi -f01016c6: 5f pop %edi -f01016c7: 5d pop %ebp -f01016c8: c3 ret -f01016c9: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f01016d0: 89 f9 mov %edi,%ecx -f01016d2: b8 20 00 00 00 mov $0x20,%eax -f01016d7: 29 f8 sub %edi,%eax -f01016d9: d3 e2 shl %cl,%edx -f01016db: 89 54 24 08 mov %edx,0x8(%esp) -f01016df: 89 c1 mov %eax,%ecx -f01016e1: 89 da mov %ebx,%edx -f01016e3: d3 ea shr %cl,%edx -f01016e5: 8b 4c 24 08 mov 0x8(%esp),%ecx -f01016e9: 09 d1 or %edx,%ecx -f01016eb: 89 f2 mov %esi,%edx -f01016ed: 89 4c 24 08 mov %ecx,0x8(%esp) -f01016f1: 89 f9 mov %edi,%ecx -f01016f3: d3 e3 shl %cl,%ebx -f01016f5: 89 c1 mov %eax,%ecx -f01016f7: d3 ea shr %cl,%edx -f01016f9: 89 f9 mov %edi,%ecx -f01016fb: 89 5c 24 0c mov %ebx,0xc(%esp) -f01016ff: 89 eb mov %ebp,%ebx -f0101701: d3 e6 shl %cl,%esi -f0101703: 89 c1 mov %eax,%ecx -f0101705: d3 eb shr %cl,%ebx -f0101707: 09 de or %ebx,%esi -f0101709: 89 f0 mov %esi,%eax -f010170b: f7 74 24 08 divl 0x8(%esp) -f010170f: 89 d6 mov %edx,%esi -f0101711: 89 c3 mov %eax,%ebx -f0101713: f7 64 24 0c mull 0xc(%esp) -f0101717: 39 d6 cmp %edx,%esi -f0101719: 72 15 jb f0101730 <__udivdi3+0x100> -f010171b: 89 f9 mov %edi,%ecx -f010171d: d3 e5 shl %cl,%ebp -f010171f: 39 c5 cmp %eax,%ebp -f0101721: 73 04 jae f0101727 <__udivdi3+0xf7> -f0101723: 39 d6 cmp %edx,%esi -f0101725: 74 09 je f0101730 <__udivdi3+0x100> -f0101727: 89 d8 mov %ebx,%eax -f0101729: 31 ff xor %edi,%edi -f010172b: e9 40 ff ff ff jmp f0101670 <__udivdi3+0x40> -f0101730: 8d 43 ff lea -0x1(%ebx),%eax -f0101733: 31 ff xor %edi,%edi -f0101735: e9 36 ff ff ff jmp f0101670 <__udivdi3+0x40> -f010173a: 66 90 xchg %ax,%ax -f010173c: 66 90 xchg %ax,%ax -f010173e: 66 90 xchg %ax,%ax - -f0101740 <__umoddi3>: -f0101740: f3 0f 1e fb endbr32 -f0101744: 55 push %ebp -f0101745: 57 push %edi -f0101746: 56 push %esi -f0101747: 53 push %ebx -f0101748: 83 ec 1c sub $0x1c,%esp -f010174b: 8b 44 24 3c mov 0x3c(%esp),%eax -f010174f: 8b 74 24 30 mov 0x30(%esp),%esi -f0101753: 8b 5c 24 34 mov 0x34(%esp),%ebx -f0101757: 8b 7c 24 38 mov 0x38(%esp),%edi -f010175b: 85 c0 test %eax,%eax -f010175d: 75 19 jne f0101778 <__umoddi3+0x38> -f010175f: 39 df cmp %ebx,%edi -f0101761: 76 5d jbe f01017c0 <__umoddi3+0x80> -f0101763: 89 f0 mov %esi,%eax -f0101765: 89 da mov %ebx,%edx -f0101767: f7 f7 div %edi -f0101769: 89 d0 mov %edx,%eax -f010176b: 31 d2 xor %edx,%edx -f010176d: 83 c4 1c add $0x1c,%esp -f0101770: 5b pop %ebx -f0101771: 5e pop %esi -f0101772: 5f pop %edi -f0101773: 5d pop %ebp -f0101774: c3 ret -f0101775: 8d 76 00 lea 0x0(%esi),%esi -f0101778: 89 f2 mov %esi,%edx -f010177a: 39 d8 cmp %ebx,%eax -f010177c: 76 12 jbe f0101790 <__umoddi3+0x50> -f010177e: 89 f0 mov %esi,%eax -f0101780: 89 da mov %ebx,%edx -f0101782: 83 c4 1c add $0x1c,%esp -f0101785: 5b pop %ebx -f0101786: 5e pop %esi -f0101787: 5f pop %edi -f0101788: 5d pop %ebp -f0101789: c3 ret -f010178a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi -f0101790: 0f bd e8 bsr %eax,%ebp -f0101793: 83 f5 1f xor $0x1f,%ebp -f0101796: 75 50 jne f01017e8 <__umoddi3+0xa8> -f0101798: 39 d8 cmp %ebx,%eax -f010179a: 0f 82 e0 00 00 00 jb f0101880 <__umoddi3+0x140> -f01017a0: 89 d9 mov %ebx,%ecx -f01017a2: 39 f7 cmp %esi,%edi -f01017a4: 0f 86 d6 00 00 00 jbe f0101880 <__umoddi3+0x140> -f01017aa: 89 d0 mov %edx,%eax -f01017ac: 89 ca mov %ecx,%edx -f01017ae: 83 c4 1c add $0x1c,%esp -f01017b1: 5b pop %ebx -f01017b2: 5e pop %esi -f01017b3: 5f pop %edi -f01017b4: 5d pop %ebp -f01017b5: c3 ret -f01017b6: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f01017bd: 8d 76 00 lea 0x0(%esi),%esi -f01017c0: 89 fd mov %edi,%ebp -f01017c2: 85 ff test %edi,%edi -f01017c4: 75 0b jne f01017d1 <__umoddi3+0x91> -f01017c6: b8 01 00 00 00 mov $0x1,%eax -f01017cb: 31 d2 xor %edx,%edx -f01017cd: f7 f7 div %edi -f01017cf: 89 c5 mov %eax,%ebp -f01017d1: 89 d8 mov %ebx,%eax -f01017d3: 31 d2 xor %edx,%edx -f01017d5: f7 f5 div %ebp -f01017d7: 89 f0 mov %esi,%eax -f01017d9: f7 f5 div %ebp -f01017db: 89 d0 mov %edx,%eax -f01017dd: 31 d2 xor %edx,%edx -f01017df: eb 8c jmp f010176d <__umoddi3+0x2d> -f01017e1: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f01017e8: 89 e9 mov %ebp,%ecx -f01017ea: ba 20 00 00 00 mov $0x20,%edx -f01017ef: 29 ea sub %ebp,%edx -f01017f1: d3 e0 shl %cl,%eax -f01017f3: 89 44 24 08 mov %eax,0x8(%esp) -f01017f7: 89 d1 mov %edx,%ecx -f01017f9: 89 f8 mov %edi,%eax -f01017fb: d3 e8 shr %cl,%eax -f01017fd: 8b 4c 24 08 mov 0x8(%esp),%ecx -f0101801: 89 54 24 04 mov %edx,0x4(%esp) -f0101805: 8b 54 24 04 mov 0x4(%esp),%edx -f0101809: 09 c1 or %eax,%ecx -f010180b: 89 d8 mov %ebx,%eax -f010180d: 89 4c 24 08 mov %ecx,0x8(%esp) -f0101811: 89 e9 mov %ebp,%ecx -f0101813: d3 e7 shl %cl,%edi -f0101815: 89 d1 mov %edx,%ecx -f0101817: d3 e8 shr %cl,%eax -f0101819: 89 e9 mov %ebp,%ecx -f010181b: 89 7c 24 0c mov %edi,0xc(%esp) -f010181f: d3 e3 shl %cl,%ebx -f0101821: 89 c7 mov %eax,%edi -f0101823: 89 d1 mov %edx,%ecx -f0101825: 89 f0 mov %esi,%eax -f0101827: d3 e8 shr %cl,%eax -f0101829: 89 e9 mov %ebp,%ecx -f010182b: 89 fa mov %edi,%edx -f010182d: d3 e6 shl %cl,%esi -f010182f: 09 d8 or %ebx,%eax -f0101831: f7 74 24 08 divl 0x8(%esp) -f0101835: 89 d1 mov %edx,%ecx -f0101837: 89 f3 mov %esi,%ebx -f0101839: f7 64 24 0c mull 0xc(%esp) -f010183d: 89 c6 mov %eax,%esi -f010183f: 89 d7 mov %edx,%edi -f0101841: 39 d1 cmp %edx,%ecx -f0101843: 72 06 jb f010184b <__umoddi3+0x10b> -f0101845: 75 10 jne f0101857 <__umoddi3+0x117> -f0101847: 39 c3 cmp %eax,%ebx -f0101849: 73 0c jae f0101857 <__umoddi3+0x117> -f010184b: 2b 44 24 0c sub 0xc(%esp),%eax -f010184f: 1b 54 24 08 sbb 0x8(%esp),%edx -f0101853: 89 d7 mov %edx,%edi -f0101855: 89 c6 mov %eax,%esi -f0101857: 89 ca mov %ecx,%edx -f0101859: 0f b6 4c 24 04 movzbl 0x4(%esp),%ecx -f010185e: 29 f3 sub %esi,%ebx -f0101860: 19 fa sbb %edi,%edx -f0101862: 89 d0 mov %edx,%eax -f0101864: d3 e0 shl %cl,%eax -f0101866: 89 e9 mov %ebp,%ecx -f0101868: d3 eb shr %cl,%ebx -f010186a: d3 ea shr %cl,%edx -f010186c: 09 d8 or %ebx,%eax -f010186e: 83 c4 1c add $0x1c,%esp -f0101871: 5b pop %ebx -f0101872: 5e pop %esi -f0101873: 5f pop %edi -f0101874: 5d pop %ebp -f0101875: c3 ret -f0101876: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f010187d: 8d 76 00 lea 0x0(%esi),%esi -f0101880: 29 fe sub %edi,%esi -f0101882: 19 c3 sbb %eax,%ebx -f0101884: 89 f2 mov %esi,%edx -f0101886: 89 d9 mov %ebx,%ecx -f0101888: e9 1d ff ff ff jmp f01017aa <__umoddi3+0x6a> diff --git a/obj/kern/kernel.img b/obj/kern/kernel.img deleted file mode 100644 index 8cfc54c..0000000 Binary files a/obj/kern/kernel.img and /dev/null differ diff --git a/obj/kern/kernel.sym b/obj/kern/kernel.sym deleted file mode 100644 index 64b04ef..0000000 --- a/obj/kern/kernel.sym +++ /dev/null @@ -1,80 +0,0 @@ -0010000c T _start -f010000c T entry -f010002f t relocated -f010003e t spin -f0100040 T test_backtrace -f0100098 T i386_init -f01000ee T _panic -f010014b T _warn -f0100189 t serial_proc_data -f01001a7 t cons_intr -f01001e6 t kbd_proc_data -f01002ff t cons_putc -f01004f1 T serial_intr -f0100511 T kbd_intr -f0100527 T cons_getc -f010056d T cons_init -f010067f T cputchar -f0100693 T getchar -f01006a8 T iscons -f01006b2 T mon_help -f01006ee T mon_kerninfo -f0100792 T mon_backtrace -f010079c T monitor -f01008e6 t putch -f01008fd T vcprintf -f0100927 T cprintf -f010093f t stab_binsearch -f0100a34 T debuginfo_eip -f0100c0a t printnum -f0100cb3 t sprintputch -f0100cd4 T printfmt -f0100cf5 T vprintfmt -f0101118 T vsnprintf -f010116a T snprintf -f0101188 T readline -f010126e T strlen -f010128a T strnlen -f01012b1 T strcpy -f01012d7 T strcat -f0101300 T strncpy -f0101331 T strlcpy -f0101370 T strcmp -f010139a T strncmp -f01013d6 T strchr -f01013fb T strfind -f010141b T memset -f0101467 T memmove -f01014cd T memcpy -f01014e7 T memcmp -f0101524 T memfind -f0101545 T strtol -f0101630 T __udivdi3 -f0101740 T __umoddi3 -f010188d T etext -f0101960 r charcode -f0101980 r togglecode -f0101a80 r shiftcode -f0101d64 r commands -f0101f88 r error_string -f0101fb4 R __STAB_BEGIN__ -f010622c R __STAB_END__ -f010622d R __STABSTR_BEGIN__ -f0107bd7 R __STABSTR_END__ -f0108000 D bootstack -f0110000 D bootstacktop -f0110000 D entry_pgdir -f0111000 D entry_pgtable -f0112000 d ctlmap -f0112100 d shiftmap -f0112200 d normalmap -f0112300 B edata -f0112300 b shift.1385 -f0112320 b cons -f0112528 b crt_pos -f011252c b crt_buf -f0112530 b addr_6845 -f0112534 b serial_exists -f0112540 b buf -f0112940 B end -f0112944 B panicstr diff --git a/obj/kern/monitor.o b/obj/kern/monitor.o deleted file mode 100644 index d62b357..0000000 Binary files a/obj/kern/monitor.o and /dev/null differ diff --git a/obj/kern/printf.o b/obj/kern/printf.o deleted file mode 100644 index a45b0f7..0000000 Binary files a/obj/kern/printf.o and /dev/null differ diff --git a/obj/kern/printfmt.o b/obj/kern/printfmt.o deleted file mode 100644 index d3239f5..0000000 Binary files a/obj/kern/printfmt.o and /dev/null differ diff --git a/obj/kern/readline.o b/obj/kern/readline.o deleted file mode 100644 index d63ad24..0000000 Binary files a/obj/kern/readline.o and /dev/null differ diff --git a/obj/kern/string.o b/obj/kern/string.o deleted file mode 100644 index 8e88b91..0000000 Binary files a/obj/kern/string.o and /dev/null differ