16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2607ca46eSDavid Howells #ifndef __LINUX_ROMFS_FS_H 3607ca46eSDavid Howells #define __LINUX_ROMFS_FS_H 4607ca46eSDavid Howells 5607ca46eSDavid Howells #include <linux/types.h> 6607ca46eSDavid Howells #include <linux/fs.h> 7607ca46eSDavid Howells 8607ca46eSDavid Howells /* The basic structures of the romfs filesystem */ 9607ca46eSDavid Howells 10607ca46eSDavid Howells #define ROMBSIZE BLOCK_SIZE 11607ca46eSDavid Howells #define ROMBSBITS BLOCK_SIZE_BITS 12607ca46eSDavid Howells #define ROMBMASK (ROMBSIZE-1) 13607ca46eSDavid Howells #define ROMFS_MAGIC 0x7275 14607ca46eSDavid Howells 15607ca46eSDavid Howells #define ROMFS_MAXFN 128 16607ca46eSDavid Howells 17607ca46eSDavid Howells #define __mkw(h,l) (((h)&0x00ff)<< 8|((l)&0x00ff)) 18607ca46eSDavid Howells #define __mkl(h,l) (((h)&0xffff)<<16|((l)&0xffff)) 19607ca46eSDavid Howells #define __mk4(a,b,c,d) cpu_to_be32(__mkl(__mkw(a,b),__mkw(c,d))) 20607ca46eSDavid Howells #define ROMSB_WORD0 __mk4('-','r','o','m') 21607ca46eSDavid Howells #define ROMSB_WORD1 __mk4('1','f','s','-') 22607ca46eSDavid Howells 23607ca46eSDavid Howells /* On-disk "super block" */ 24607ca46eSDavid Howells 25607ca46eSDavid Howells struct romfs_super_block { 26607ca46eSDavid Howells __be32 word0; 27607ca46eSDavid Howells __be32 word1; 28607ca46eSDavid Howells __be32 size; 29607ca46eSDavid Howells __be32 checksum; 30*94dfc73eSGustavo A. R. Silva char name[]; /* volume name */ 31607ca46eSDavid Howells }; 32607ca46eSDavid Howells 33607ca46eSDavid Howells /* On disk inode */ 34607ca46eSDavid Howells 35607ca46eSDavid Howells struct romfs_inode { 36607ca46eSDavid Howells __be32 next; /* low 4 bits see ROMFH_ */ 37607ca46eSDavid Howells __be32 spec; 38607ca46eSDavid Howells __be32 size; 39607ca46eSDavid Howells __be32 checksum; 40*94dfc73eSGustavo A. R. Silva char name[]; 41607ca46eSDavid Howells }; 42607ca46eSDavid Howells 43607ca46eSDavid Howells #define ROMFH_TYPE 7 44607ca46eSDavid Howells #define ROMFH_HRD 0 45607ca46eSDavid Howells #define ROMFH_DIR 1 46607ca46eSDavid Howells #define ROMFH_REG 2 47607ca46eSDavid Howells #define ROMFH_SYM 3 48607ca46eSDavid Howells #define ROMFH_BLK 4 49607ca46eSDavid Howells #define ROMFH_CHR 5 50607ca46eSDavid Howells #define ROMFH_SCK 6 51607ca46eSDavid Howells #define ROMFH_FIF 7 52607ca46eSDavid Howells #define ROMFH_EXEC 8 53607ca46eSDavid Howells 54607ca46eSDavid Howells /* Alignment */ 55607ca46eSDavid Howells 56607ca46eSDavid Howells #define ROMFH_SIZE 16 57607ca46eSDavid Howells #define ROMFH_PAD (ROMFH_SIZE-1) 58607ca46eSDavid Howells #define ROMFH_MASK (~ROMFH_PAD) 59607ca46eSDavid Howells 60607ca46eSDavid Howells #endif 61