[PATCH SLOF v2 4/5] disk-label: introduce helper to check fat filesystem
Thomas Huth
thuth at redhat.com
Mon Jun 29 18:47:16 AEST 2015
On Thu, 25 Jun 2015 12:15:28 +0530
Nikunj A Dadhania <nikunj at linux.vnet.ibm.com> wrote:
> Signed-off-by: Nikunj A Dadhania <nikunj at 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 at redhat.com>
More information about the Linuxppc-dev
mailing list