On 06/21/2011 17:55, John Baldwin wrote:
On Tuesday, June 21, 2011 10:50:14 am Henri Hennebert wrote:
On 06/21/2011 15:01, John Baldwin wrote:
Index: zfsldr.S
===================================================================
--- zfsldr.S (revision 223339)
+++ zfsldr.S (working copy)
@@ -234,9 +234,12 @@ nread.1: xor %ecx,%ecx # Get
callw read # Read from disk
lea 0x10(%bp),%sp # Clear stack
jnc return # If success, return
- mov $msg_read,%si # Otherwise, set the error
- # message and fall through to
- # the error routine
+ mov %ah,%al # Format
+ mov $read_err,%di # error
+ call hex8 # code
+ mov $msg_read,%si # Set the error message and
+ # fall through to the error
+ # routine
/*
* Print out the error message pointed to by %ds:(%si) followed
* by a prompt, wait for a keypress, and then reboot the machine.
@@ -296,12 +299,28 @@ read.1: mov $msg_chs,%si
jmp error
msg_chs: .asciz "CHS not supported"
+/*
+ * Convert AL to hex, saving the result to [EDI].
+ */
+hex8: push %ax # Save
+ shrb $0x4,%al # Do upper
+ call hex8.1 # 4
+ pop %ax # Restore
+hex8.1: andb $0xf,%al # Get lower 4
+ cmpb $0xa,%al # Convert
+ sbbb $0x69,%al # to hex
+ das # digit
+ orb $0x20,%al # To lower case
+ stosb # Save char
+ ret # (Recursive)
+
/* Messages */
-msg_read: .asciz "Read"
-msg_part: .asciz "Boot"
+msg_read: .ascii "Read error: "
+read_err: .asciz "XX"
+msg_part: .asciz "Boot error"
-prompt: .asciz " error\r\n"
+prompt: .asciz "\r\n"
.org PRT_OFF,0x90
I get
Read error: 01
Hmm, that would be 'invalid parameter'.
Can you add a 'foo: jmp foo' infinite loop and move it around to figure out
which read call is failing?
main.5: mov %dx,MEM_ARG # Save args
movb $NSECT,%dh # Sector count
movl $1024,%eax # Offset to boot2
callw nread.1 # Read disk
foo: jmp foo
After this one I get
'Read error: 01'
Henri
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[email protected]"