Date: Tue, 21 Jun 2011 18:15:58 +0200 From: Henri Hennebert <hlh@restart.be> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-stable@freebsd.org Subject: Re: ZFS boot inside on the second partition inside a slice Message-ID: <4E00C3BE.3050004@restart.be> In-Reply-To: <201106211155.19231.jhb@freebsd.org> References: <BANLkTi=drd8vY84_4jqDZTFK%2Bsq=n0Kx9g@mail.gmail.com> <201106210901.27338.jhb@freebsd.org> <4E00AFA6.4050305@restart.be> <201106211155.19231.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E00C3BE.3050004>