diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2013-12-24 00:46:15 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2013-12-27 12:41:12 -0500 |
commit | 4b400a127acd12b6c7b598e3493718d265265023 (patch) | |
tree | fb4d1f2e2607748e1209d3da46a3dcc3f7cb60f2 /src/block.c | |
parent | 01b3c9985c748f2314a98bca9846182a07c5ea18 (diff) | |
download | seabios-4b400a127acd12b6c7b598e3493718d265265023.tar.gz |
pvscsi: Always run entirely in 32bit mode.
Instead of jumping into 32bit mode to access the PCI config space, run
the entire driver in 32bit mode.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/block.c')
-rw-r--r-- | src/block.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/block.c b/src/block.c index ac2a830f..898c2795 100644 --- a/src/block.c +++ b/src/block.c @@ -313,7 +313,7 @@ __disk_ret_unimplemented(struct bregs *regs, u32 linecode, const char *fname) * 16bit calling interface ****************************************************************/ -static int +int VISIBLE32FLAT process_scsi_op(struct disk_op_s *op) { switch (op->command) { @@ -386,9 +386,13 @@ process_op(struct disk_op_s *op) case DTYPE_LSI_SCSI: case DTYPE_ESP_SCSI: case DTYPE_MEGASAS: - case DTYPE_PVSCSI: ret = process_scsi_op(op); break; + case DTYPE_PVSCSI: ; + extern void _cfunc32flat_process_scsi_op(void); + ret = call32(_cfunc32flat_process_scsi_op + , (u32)MAKE_FLATPTR(GET_SEG(SS), op), DISK_RET_EPARAM); + break; default: ret = DISK_RET_EPARAM; break; |