diff options
author | jhb <jhb@FreeBSD.org> | 2001-11-04 03:51:59 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2001-11-04 03:51:59 +0000 |
commit | 1c85c21111205c3599ba05c3076bc34ba0b979c2 (patch) | |
tree | 9b367afc16650d11e291b2acb164fa99081321ad /sys/boot | |
parent | b95616aa58e74eba9ef40e37b794586725f2e51c (diff) | |
download | FreeBSD-src-1c85c21111205c3599ba05c3076bc34ba0b979c2.zip FreeBSD-src-1c85c21111205c3599ba05c3076bc34ba0b979c2.tar.gz |
Trim all the extra debugging output including hexdumps, debug messages,
etc. The only bit of debugging left is performing dual output to both
the screen and COM1. Also, the twiddle is still disabled since it seems
to do weird things to the serial dump. cdboot now has 880 bytes to spare.
Diffstat (limited to 'sys/boot')
-rw-r--r-- | sys/boot/i386/cdboot/cdboot.s | 193 |
1 files changed, 4 insertions, 189 deletions
diff --git a/sys/boot/i386/cdboot/cdboot.s b/sys/boot/i386/cdboot/cdboot.s index e4a9e39..78fef20 100644 --- a/sys/boot/i386/cdboot/cdboot.s +++ b/sys/boot/i386/cdboot/cdboot.s @@ -132,8 +132,6 @@ load_vd: push %eax # Save %eax mov $1,%dh # One sector mov $MEM_VOLDESC,%ebx # Destination call read # Read it in - mov $16,%cx - call hexdump cmpb $VD_PRIMARY,(%bx) # Primary VD? je have_vd # Yes pop %eax # Prepare to @@ -149,8 +147,6 @@ have_vd: mov $msg_vd,%si # Have Primary VD # mov $loader_path,%si # File to lookup call lookup # Try to find it - mov $msg_lookup_done,%si - call putstr # # Load the binary into the buffer. Due to real mode addressing limitations # we have to read it in in 64k chunks. @@ -263,10 +259,6 @@ pm_end: sti # Turn interrupts back on now pop %eax # Restore saved entry point stosl # and add it to the end of # the arguments - mov $msg_entry2,%di - call hex32 - mov $msg_entry,%si - call putstr # # Now we just start up BTX and let it do the rest # @@ -311,13 +303,7 @@ lookup_done: mov $msg_lookupok,%si # Success message # Returns: CF = 0 (success), BX = pointer to record, SX = next path item # CF = 1 (not found), SI = preserved # -find_file: push %si - mov $msg_startff,%si - call putstr - pop %si - movzbw DIR_LEN(%bx),%cx - call hexdump - mov DIR_EXTENT(%bx),%eax # Load extent +find_file: mov DIR_EXTENT(%bx),%eax # Load extent xor %edx,%edx mov DIR_EA_LEN(%bx),%dl add %edx,%eax # Skip extended attributes @@ -334,16 +320,6 @@ ff.namelen: inc %cl # Update length jnz ff.namelen # No, keep going ff.namedone: dec %cl # Adjust length and save mov %cl,name_len - mov %cl,%al - mov $msg_fflen,%di - call hex8 - mov $msg_ffpath,%si - call putstr - pop %si - push %si - call putstr - mov $msg_ffpath2,%si - call putstr pop %si # Restore ff.load: mov rec_lba,%eax # Load LBA mov $MEM_DIR,%ebx # Address buffer @@ -358,17 +334,9 @@ ff.scan: mov %ebx,%edx # Check for EOF ret ff.scan.1: cmpb $0,DIR_LEN(%bx) # Last record in block? je ff.nextblock - movzbw DIR_LEN(%bx),%cx - call hexdump push %si # Save - mov $msg_ffscan,%si - call putstr movzbw DIR_NAMELEN(%bx),%si # Find end of string -ff.checkver: push %bx - mov DIR_NAME-1(%bx,%si),%al - call putc - pop %bx - cmpb $'0',DIR_NAME-1(%bx,%si) # Less than '0'? +ff.checkver: cmpb $'0',DIR_NAME-1(%bx,%si) # Less than '0'? jb ff.checkver.1 cmpb $'9',DIR_NAME-1(%bx,%si) # Greater than '9'? ja ff.checkver.1 @@ -379,39 +347,17 @@ ff.checkver: push %bx ff.checkver.1: movzbw DIR_NAMELEN(%bx),%cx cmp %cx,%si # Did we find any digits? je ff.checkdot # No - push %bx - mov DIR_NAME-1(%bx,%si),%al - call putc - pop %bx cmpb $';',DIR_NAME-1(%bx,%si) # Check for semicolon jne ff.checkver.2 dec %si # Skip semicolon mov %si,%cx mov %cl,DIR_NAMELEN(%bx) # Adjust length - push %bx - mov $'-',%al - call putc - pop %bx jmp ff.checkdot ff.checkver.2: mov %cx,%si # Restore %si to end of string ff.checkdot: cmpb $'.',DIR_NAME-1(%bx,%si) # Trailing dot? jne ff.checklen # No - push %bx - mov $'-',%al - call putc - pop %bx decb DIR_NAMELEN(%bx) # Adjust length ff.checklen: pop %si # Restore - push %si - mov $msg_ffscan2,%si - call putstr - mov $msg_ffcheck,%si - call putstr - lea DIR_NAMELEN(%bx),%si - call putstrl - mov $msg_ffcheck2,%si - call putstr - pop %si movzbw name_len,%cx # Load length of name cmp %cl,DIR_NAMELEN(%bx) # Does length match? je ff.checkname # Yes, check name @@ -421,11 +367,7 @@ ff.nextrec: add DIR_LEN(%bx),%bl # Next record ff.nextblock: subl $SECTOR_SIZE,rec_size # Adjust size jnc ff.load # If subtract ok, keep going ret # End of file, so not found -ff.checkname: push %si - mov $msg_lenmatch,%si - call putstr - pop %si - lea DIR_NAME(%bx),%di # Address name in record +ff.checkname: lea DIR_NAME(%bx),%di # Address name in record push %si # Save repe cmpsb # Compare name jcxz ff.match # We have a winner! @@ -447,24 +389,6 @@ read: push %si # Save mov %ax,edd_addr+0x2 # and store read.retry: #call twiddle # Entertain the user push %dx # Save - push %di # DEBUG: dump packet - push %bx - mov %dh,%al # Length - mov $dump_len,%di - call hex8 - mov edd_addr+0x2,%ax # Seg - mov $dump_seg,%di - call hex16 - mov edd_addr,%ax # Offset - mov $dump_offset,%di - call hex16 - mov edd_lba,%eax # LBA - mov $dump_lba,%di - call hex32 - mov $dump_packet,%si # Display - call putstr - pop %bx - pop %di mov $edd_packet,%si # Address Packet mov %dh,edd_len # Set length mov drive,%dl # BIOS Device @@ -489,67 +413,6 @@ halt: hlt jmp halt # Spin # -# Dump CX bytes from memory at [BX]. -# -hexdump: push %ax # Save - push %bx # Save - push %dx # Save - push %si # Save - push %di # Save - mov %bx,%si # Where to read from -hd.line: mov $16,%dx # Bytes per line - push %si # Save offset - push %cx # Save - push %dx # counts - mov $hex_line,%di - mov %si,%ax # Format hex - call hex16 # offset - inc %di -hd.hexloop: jcxz hd.hexblank # Are we done yet? - lodsb # Read - call hex8 # Hexify - inc %di - dec %cx # Update total count - dec %dx # and per-line count - jnz hd.hexloop # Next char - jmp hd.raw # Second half of line -hd.hexblank: mov $' ',%al # Put spaces as -hd.hb.loop: stosb # placeholders - stosb - inc %di - dec %dx # Just do per-line count - jnz hd.hb.loop # Next blank -hd.raw: pop %dx # Restore - pop %cx # counts - pop %si # Restart input - inc %di # Skip pipe char -hd.rawloop: jcxz hd.rawblank # Done yet? - lodsb # Read - cmp $0x20,%al # Use '.' for - jge hd.rawok # special - mov $'.',%al # characters -hd.rawok: stosb - dec %cx - dec %dx - jnz hd.rawloop # Next char - jmp hd.outline # Next line -hd.rawblank: mov $' ',%al # Space as placeholder - mov %dx,%cx # Fill rest - rep stosb # of line -hd.outline: push %si # Save - mov $hex_line,%si # Now spit it out - call putstr - pop %si # Restore - jcxz hd.ret # Return if done - jmp hd.line # Next line -hd.ret: pop %di # Restore - pop %si # Restore - pop %dx # Restore - pop %bx # Restore - pop %ax # Restore - ret - -# # Display a null-terminated string. # # Trashes: AX, SI @@ -564,23 +427,6 @@ putstr.putc: call putc # output char jmp putstr.load # next char # -# Print out length-based string from [SI]. -# -# Trashes: AX, SI -# -putstrl: push %bx # Save - push %cx # Save - lodsb - movzbw %al,%cx # Length - jcxz putstrl.ret # Skip if empty -putstrl.loop: lodsb # Read char - call putc # Display - loop putstrl.loop # Loop -putstrl.ret: pop %cx # Restore - pop %bx # Restore - ret - -# # Display a single char. # putc: push %ax @@ -630,14 +476,8 @@ seta20.2: in $0x64,%al # Get status ret # To caller # -# Convert EAX, AX, or AL to hex, saving the result to [EDI]. +# Convert AL to hex, saving the result to [EDI]. # -hex32: pushl %eax # Save - shrl $0x10,%eax # Do upper - call hex16 # 16 - popl %eax # Restore -hex16: call hex16.1 # Do upper 8 -hex16.1: xchgb %ah,%al # Save/restore hex8: pushl %eax # Save shrb $0x4,%al # Do upper call hex8.1 # 4 @@ -723,28 +563,3 @@ msg_load2big: .asciz "File too big\r\n" loader_path: .asciz "/BOOT/LOADER" twiddle_chars: .ascii "|/-\\" -msg_entry: .ascii "Entry point: " -msg_entry2: .asciz "00000000\r\n" -msg_lookup_done:.asciz "Lookup returned\r\n" -msg_startff: .asciz "\r\nStarting find_file\r\n" -msg_ffpath: .asciz "Path = \"" -msg_ffpath2: .ascii "\" Length = " -msg_fflen: .asciz "00\r\n" -msg_lenmatch: .asciz "ff: Length matched\r\n" -msg_ffcheck: .asciz "ff: Checking name: " -msg_ffscan2: -msg_ffcheck2: .asciz "\r\n" -msg_ffscan: .asciz "ff: Scanning name: " - -dump_packet: .ascii "Len " -dump_len: .ascii "00 Addr " -dump_seg: .ascii "0000:" -dump_offset: .ascii "0000 LBA " -dump_lba: .asciz "00000000\r\n" - -dump_bx: .ascii "bx = " -hex_bx: .asciz "0000\r\n" - -hex_line: .ascii "0000:00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 " - .asciz "|................|\r\n" - |