1 /* SPDX-License-Identifier: GPL-2.0 */ << 2 #ifndef _ADFS_FS_H 1 #ifndef _ADFS_FS_H 3 #define _ADFS_FS_H 2 #define _ADFS_FS_H 4 3 5 #include <uapi/linux/adfs_fs.h> !! 4 #include <linux/types.h> 6 5 7 /* 6 /* >> 7 * Disc Record at disc address 0xc00 >> 8 */ >> 9 struct adfs_discrecord { >> 10 __u8 log2secsize; >> 11 __u8 secspertrack; >> 12 __u8 heads; >> 13 __u8 density; >> 14 __u8 idlen; >> 15 __u8 log2bpmb; >> 16 __u8 skew; >> 17 __u8 bootoption; >> 18 __u8 lowsector; >> 19 __u8 nzones; >> 20 __u16 zone_spare; >> 21 __u32 root; >> 22 __u32 disc_size; >> 23 __u16 disc_id; >> 24 __u8 disc_name[10]; >> 25 __u32 disc_type; >> 26 __u32 disc_size_high; >> 27 __u8 log2sharesize:4; >> 28 __u8 unused40:4; >> 29 __u8 big_flag:1; >> 30 __u8 unused41:1; >> 31 __u8 nzones_high; >> 32 __u32 format_version; >> 33 __u32 root_size; >> 34 __u8 unused52[60 - 52]; >> 35 }; >> 36 >> 37 #define ADFS_DISCRECORD (0xc00) >> 38 #define ADFS_DR_OFFSET (0x1c0) >> 39 #define ADFS_DR_SIZE 60 >> 40 #define ADFS_DR_SIZE_BITS (ADFS_DR_SIZE << 3) >> 41 #define ADFS_SUPER_MAGIC 0xadf5 >> 42 >> 43 #ifdef __KERNEL__ >> 44 /* 8 * Calculate the boot block checksum on an ADF 45 * Calculate the boot block checksum on an ADFS drive. Note that this will 9 * appear to be correct if the sector contains 46 * appear to be correct if the sector contains all zeros, so also check that 10 * the disk size is non-zero!!! 47 * the disk size is non-zero!!! 11 */ 48 */ 12 static inline int adfs_checkbblk(unsigned char 49 static inline int adfs_checkbblk(unsigned char *ptr) 13 { 50 { 14 unsigned int result = 0; 51 unsigned int result = 0; 15 unsigned char *p = ptr + 511; 52 unsigned char *p = ptr + 511; 16 53 17 do { 54 do { 18 result = (result & 0xff) + (re 55 result = (result & 0xff) + (result >> 8); 19 result = result + *--p; 56 result = result + *--p; 20 } while (p != ptr); 57 } while (p != ptr); 21 58 22 return (result & 0xff) != ptr[511]; 59 return (result & 0xff) != ptr[511]; 23 } 60 } >> 61 >> 62 #endif >> 63 24 #endif 64 #endif 25 65
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.