diff options
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/libinstaller/syslxint.h')
-rw-r--r-- | contrib/syslinux/syslinux-4.03/libinstaller/syslxint.h | 246 |
1 files changed, 0 insertions, 246 deletions
diff --git a/contrib/syslinux/syslinux-4.03/libinstaller/syslxint.h b/contrib/syslinux/syslinux-4.03/libinstaller/syslxint.h deleted file mode 100644 index 14a7fc2..0000000 --- a/contrib/syslinux/syslinux-4.03/libinstaller/syslxint.h +++ /dev/null @@ -1,246 +0,0 @@ -/* ----------------------------------------------------------------------- * - * - * Copyright 2007-2008 H. Peter Anvin - All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, Inc., 53 Temple Place Ste 330, - * Boston MA 02111-1307, USA; either version 2 of the License, or - * (at your option) any later version; incorporated herein by reference. - * - * ----------------------------------------------------------------------- */ - -#ifndef SYSLXINT_H -#define SYSLXINT_H - -#include "syslinux.h" - -#if defined(__386__) || defined(__i386__) || defined(__x86_64__) -# define X86_MEM 1 /* Littleendian and unaligned safe */ -#else -# define X86_MEM 0 -#endif - -/* - * Access functions for littleendian numbers, possibly misaligned. - */ -static inline uint8_t get_8(const uint8_t * p) -{ - return *p; -} - -static inline uint16_t get_16(const uint16_t * p) -{ -#if X86_MEM - /* Littleendian and unaligned-capable */ - return *p; -#else - const uint8_t *pp = (const uint8_t *)p; - return pp[0] + ((uint16_t)pp[1] << 8); -#endif -} - -static inline uint32_t get_32(const uint32_t * p) -{ -#if X86_MEM - /* Littleendian and unaligned-capable */ - return *p; -#else - const uint16_t *pp = (const uint16_t *)p; - return get_16(pp[0]) + (uint32_t)get_16(pp[1]); -#endif -} - -static inline uint64_t get_64(const uint64_t * p) -{ -#if X86_MEM - /* Littleendian and unaligned-capable */ - return *p; -#else - const uint32_t *pp = (const uint32_t *)p; - return get_32(pp[0]) + (uint64_t)get_32(pp[1]); -#endif -} - -static inline void set_8(uint8_t *p, uint8_t v) -{ - *p = v; -} - -static inline void set_16(uint16_t *p, uint16_t v) -{ -#if X86_MEM - /* Littleendian and unaligned-capable */ - *p = v; -#else - uint8_t *pp = (uint8_t *) p; - pp[0] = (v & 0xff); - pp[1] = ((v >> 8) & 0xff); -#endif -} - -static inline void set_32(uint32_t *p, uint32_t v) -{ -#if X86_MEM - /* Littleendian and unaligned-capable */ - *p = v; -#else - uint8_t *pp = (uint8_t *) p; - pp[0] = (v & 0xff); - pp[1] = ((v >> 8) & 0xff); - pp[2] = ((v >> 16) & 0xff); - pp[3] = ((v >> 24) & 0xff); -#endif -} - -static inline void set_64(uint64_t *p, uint64_t v) -{ -#if X86_MEM - /* Littleendian and unaligned-capable */ - *p = v; -#else - uint32_t *pp = (uint32_t *) p; - set_32(pp[0], v); - set_32(pp[1], v >> 32); -#endif -} - -/* - * Special handling for the MS-DOS derivative: syslinux_ldlinux - * is a "far" object... - */ -#ifdef __MSDOS__ - -static inline __attribute__ ((const)) -uint16_t ds(void) -{ - uint16_t v; - asm("movw %%ds,%0":"=rm"(v)); - return v; -} - -static inline void *set_fs(const void *p) -{ - uint16_t seg; - - seg = ds() + ((size_t) p >> 4); - asm volatile ("movw %0,%%fs"::"rm" (seg)); - return (void *)((size_t) p & 0xf); -} - -uint8_t get_8_sl(const uint8_t * p); -uint16_t get_16_sl(const uint16_t * p); -uint32_t get_32_sl(const uint32_t * p); -uint64_t get_64_sl(const uint64_t * p); -void set_8_sl(uint8_t * p, uint8_t v); -void set_16_sl(uint16_t * p, uint16_t v); -void set_32_sl(uint32_t * p, uint32_t v); -void set_64_sl(uint64_t * p, uint64_t v); -void memcpy_to_sl(void *dst, const void *src, size_t len); -void memcpy_from_sl(void *dst, const void *src, size_t len); - -#else - -/* Sane system ... */ -#define get_8_sl(x) get_8(x) -#define get_16_sl(x) get_16(x) -#define get_32_sl(x) get_32(x) -#define get_64_sl(x) get_64(x) -#define set_8_sl(x,y) set_8(x,y) -#define set_16_sl(x,y) set_16(x,y) -#define set_32_sl(x,y) set_32(x,y) -#define set_64_sl(x,y) set_64(x,y) -#define memcpy_to_sl(d,s,l) memcpy(d,s,l) -#define memcpy_from_sl(d,s,l) memcpy(d,s,l) - -#endif - -#define LDLINUX_MAGIC 0x3eb202fe - -/* Patch area for disk-based installers */ -struct patch_area { - uint32_t magic; /* LDLINUX_MAGIC */ - uint32_t instance; /* Per-version value */ - uint16_t data_sectors; - uint16_t adv_sectors; - uint32_t dwords; - uint32_t checksum; - uint16_t maxtransfer; - uint16_t epaoffset; /* Pointer to the extended patch area */ -}; - -struct ext_patch_area { - uint16_t advptroffset; /* ADV pointers */ - uint16_t diroffset; /* Current directory field */ - uint16_t dirlen; /* Length of current directory field */ - uint16_t subvoloffset; /* Subvolume field */ - uint16_t subvollen; /* Length of subvolume field */ - uint16_t secptroffset; /* Sector extent pointers */ - uint16_t secptrcnt; /* Number of sector extent pointers */ - - uint16_t sect1ptr0; /* Boot sector offset of sector 1 ptr LSW */ - uint16_t sect1ptr1; /* Boot sector offset of sector 1 ptr MSW */ - uint16_t raidpatch; /* Boot sector RAID mode patch pointer */ -}; - -/* Sector extent */ -struct syslinux_extent { - uint64_t lba; - uint16_t len; -} __attribute__((packed)); - -/* FAT bootsector format, also used by other disk-based derivatives */ -struct boot_sector { - uint8_t bsJump[3]; - char bsOemName[8]; - uint16_t bsBytesPerSec; - uint8_t bsSecPerClust; - uint16_t bsResSectors; - uint8_t bsFATs; - uint16_t bsRootDirEnts; - uint16_t bsSectors; - uint8_t bsMedia; - uint16_t bsFATsecs; - uint16_t bsSecPerTrack; - uint16_t bsHeads; - uint32_t bsHiddenSecs; - uint32_t bsHugeSectors; - - union { - struct { - uint8_t DriveNumber; - uint8_t Reserved1; - uint8_t BootSignature; - uint32_t VolumeID; - char VolumeLabel[11]; - char FileSysType[8]; - uint8_t Code[448]; - } __attribute__ ((packed)) bs16; - struct { - uint32_t FATSz32; - uint16_t ExtFlags; - uint16_t FSVer; - uint32_t RootClus; - uint16_t FSInfo; - uint16_t BkBootSec; - uint8_t Reserved0[12]; - uint8_t DriveNumber; - uint8_t Reserved1; - uint8_t BootSignature; - uint32_t VolumeID; - char VolumeLabel[11]; - char FileSysType[8]; - uint8_t Code[420]; - } __attribute__ ((packed)) bs32; - } __attribute__ ((packed)); - - uint16_t bsSignature; -} __attribute__ ((packed)); - -#define bsHead bsJump -#define bsHeadLen offsetof(struct boot_sector, bsBytesPerSec) -#define bsCode bs32.Code /* The common safe choice */ -#define bsCodeLen (offsetof(struct boot_sector, bsSignature) - \ - offsetof(struct boot_sector, bsCode)) - -#endif /* SYSLXINT_H */ |