[PATCH SLOF v2 4/5] disk-label: introduce helper to check fat filesystem
Nikunj A Dadhania
nikunj at linux.vnet.ibm.com
Thu Jun 25 16:45:28 AEST 2015
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
;
--
2.4.3
More information about the Linuxppc-dev
mailing list