search for: disk_ebios_dapa

Displaying 7 results from an estimated 7 matches for "disk_ebios_dapa".

2013 Sep 06
1
[PATCH 2/2 v2] com32/disk: Improve flow at disk_write_sectors and disk_read_sectors.
...+ uint8_t ah; + void *(*op)(const struct disk_info *const, com32sys_t *, + uint64_t, uint8_t); +}; + +enum disk_op_codes { + EBIOS_READ_CODE = 0x42, /* Extended read */ + EBIOS_WRITE_CODE = 0x43, /* Extended write */ + CHS_READ_CODE = 0x02, + CHS_WRITE_CODE = 0x03, +}; + struct disk_ebios_dapa { uint16_t len; uint16_t count; @@ -177,4 +190,9 @@ extern void disk_gpt_part_dump(const struct disk_gpt_part_entry *const gpt_part); extern void disk_gpt_header_dump(const struct disk_gpt_header *const gpt); +static inline void *ebios_disk_op(const struct disk_info *const,...
2013 Sep 06
1
[PATCH 2/2] com32/disk: Improve flow at disk_write_sectors and disk_read_sectors.
...ct disk_info { uint32_t cyl; uint32_t head; uint32_t spt; + struct disk_ops ops; +}; + +enum disk_op_codes { + EBIOS_READ_CODE = 0x42, /* Extended read */ + EBIOS_WRITE_CODE = 0x43, /* Extended write */ + CHS_READ_CODE = 0x02, + CHS_WRITE_CODE = 0x03, }; struct disk_ebios_dapa { @@ -177,4 +193,9 @@ extern void disk_gpt_part_dump(const struct disk_gpt_part_entry *const gpt_part); extern void disk_gpt_header_dump(const struct disk_gpt_header *const gpt); +static void *ebios_disk_op(const struct disk_info *const, + com32sys_t *, uint64_t, uint8_t); +stat...
2013 Oct 17
1
[PATCH] chain: Fix chainloading on 6.02
...inux/disk.c index 0b0c737..47ecb52 100644 --- a/com32/lib/syslinux/disk.c +++ b/com32/lib/syslinux/disk.c @@ -171,22 +171,28 @@ out: static void *ebios_setup(const struct disk_info *const diskinfo, com32sys_t *inreg, uint64_t lba, uint8_t count, uint8_t op_code) { - static __lowmem struct disk_ebios_dapa dapa; + static struct disk_ebios_dapa *dapa = NULL; void *buf; + if (!dapa) { + dapa = lmalloc(sizeof *dapa); + if (!dapa) + return NULL; + } + buf = lmalloc(count * diskinfo->bps); if (!buf) return NULL; - dapa.len = sizeof(dapa); - dapa.count = count; -...
2013 Sep 17
1
[PATCH 2/4 v3] com32/disk: Code cleanup at disk_write_sectors and disk_read_sectors.
...of sectors to read + * @v op_code Code to write/read operation + * @ret lmalloc'd buf upon success, NULL upon failure + */ +static void *ebios_setup(const struct disk_info *const diskinfo, com32sys_t *inreg, + uint64_t lba, uint8_t count, uint8_t op_code) +{ + static __lowmem struct disk_ebios_dapa dapa; + void *buf; + + buf = lmalloc(count * diskinfo->bps); + if (!buf) + return NULL; + + dapa.len = sizeof(dapa); + dapa.count = count; + dapa.off = OFFS(buf); + dapa.seg = SEG(buf); + dapa.lba = lba; + + inreg->eax.b[1] = op_code; + inreg->esi.w[0] = OFFS(...
2012 Jun 26
2
[GIT PULL] elflink bug fixes
...nfo->lbacnt = diskinfo->cyl * diskinfo->head * diskinfo->spt; - return 0; +out: + lfree(eparam); + return rv; } /** @@ -163,17 +172,26 @@ void *disk_read_sectors(const struct disk_info *const diskinfo, uint64_t lba, uint8_t count) { com32sys_t inreg; - struct disk_ebios_dapa *dapa = __com32.cs_bounce; - void *buf = (char *)__com32.cs_bounce + diskinfo->bps; - void *data; + struct disk_ebios_dapa *dapa; + void *buf; + void *data = NULL; uint32_t maxcnt; + uint32_t size = 65536; - maxcnt = (__com32.cs_bounce_size - diskinfo->bps) / diski...
2015 Sep 24
0
[PATCH] com32/disk: add UEFI support
...ation */ + int ebios; /* EBIOS supported on this disk */ + int cbios; /* CHS geometry is valid */ + }; + struct { /* EFI-specific information */ + void *biop; /* EFI_BLOCK_IO_PROTOCOL pointer */ + }; + }; }; +#ifndef SYSLINUX_EFI + struct disk_ebios_dapa { uint16_t len; uint16_t count; @@ -87,6 +97,8 @@ struct disk_ebios_eparam { uint8_t checksum; } __attribute__ ((packed)); +#endif + /** * CHS (cylinder, head, sector) value extraction macros. * Taken from WinVBlock. None expand to an lvalue. @@ -169,19 +181,25 @@ struct di...
2012 Aug 20
13
[PATCH 00/12] Multidisk support
Hello, the following patches should get multidisk access working. The syntax accepted is the following: (hdx,y)/path/to/file where x is the disk number and start at 0 and the y is the partition number starting at 1. So (hd0,1) is the first partition of the first disk. the other accepted syntax is using MBR's 32 bits disk signature so for example: (mbr:0x12345678,2)/foo/bar would address