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?

-- 
John Baldwin
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to