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