Message ID | 1435214729-15952-5-git-send-email-nikunj@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On Thu, 25 Jun 2015 12:15:28 +0530 Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> wrote: > Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> > --- > slof/fs/packages/disk-label.fs | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/slof/fs/packages/disk-label.fs b/slof/fs/packages/disk-label.fs > index 0995808..7ed5526 100644 > --- a/slof/fs/packages/disk-label.fs > +++ b/slof/fs/packages/disk-label.fs > @@ -321,6 +321,14 @@ CONSTANT /gpt-part-entry > > \ Load from first active DOS boot partition. > > +: fat-bootblock? ( addr -- flag ) > + \ byte 0-2 of the bootblock is a jump instruction in > + \ all FAT filesystems. > + \ e9 and eb are jump instructions in x86 assembler. > + dup c@ e9 = IF drop true EXIT THEN > + dup c@ eb = swap 2+ c@ 90 = and > +; > + > \ NOTE: block-size is always 512 bytes for DOS partition tables. > > : load-from-dos-boot-partition ( addr -- size ) > @@ -549,14 +557,7 @@ AA268B49521E5A8B CONSTANT GPT-PREP-PARTITION-4 > : try-dos-files ( -- found? ) > no-mbr? IF false EXIT THEN > > - \ disk-buf 0 byte 0-2 is a jump instruction in all FAT > - \ filesystems. > - \ e9 and eb are jump instructions in x86 assembler. > - disk-buf c@ e9 <> IF > - disk-buf c@ eb <> > - disk-buf 2+ c@ 90 <> or > - IF false EXIT THEN > - THEN > + disk-buf fat-bootblock? 0= IF false EXIT THEN > s" fat-files" (interpose-filesystem) > true > ; Reviewed-by: Thomas Huth <thuth@redhat.com>
diff --git a/slof/fs/packages/disk-label.fs b/slof/fs/packages/disk-label.fs index 0995808..7ed5526 100644 --- a/slof/fs/packages/disk-label.fs +++ b/slof/fs/packages/disk-label.fs @@ -321,6 +321,14 @@ CONSTANT /gpt-part-entry \ Load from first active DOS boot partition. +: fat-bootblock? ( addr -- flag ) + \ byte 0-2 of the bootblock is a jump instruction in + \ all FAT filesystems. + \ e9 and eb are jump instructions in x86 assembler. + dup c@ e9 = IF drop true EXIT THEN + dup c@ eb = swap 2+ c@ 90 = and +; + \ NOTE: block-size is always 512 bytes for DOS partition tables. : load-from-dos-boot-partition ( addr -- size ) @@ -549,14 +557,7 @@ AA268B49521E5A8B CONSTANT GPT-PREP-PARTITION-4 : try-dos-files ( -- found? ) no-mbr? IF false EXIT THEN - \ disk-buf 0 byte 0-2 is a jump instruction in all FAT - \ filesystems. - \ e9 and eb are jump instructions in x86 assembler. - disk-buf c@ e9 <> IF - disk-buf c@ eb <> - disk-buf 2+ c@ 90 <> or - IF false EXIT THEN - THEN + disk-buf fat-bootblock? 0= IF false EXIT THEN s" fat-files" (interpose-filesystem) true ;
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> --- slof/fs/packages/disk-label.fs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)