aboutsummaryrefslogtreecommitdiffstats
path: root/src/block.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2013-12-24 00:46:15 -0500
committerKevin O'Connor <kevin@koconnor.net>2013-12-27 12:41:12 -0500
commit4b400a127acd12b6c7b598e3493718d265265023 (patch)
treefb4d1f2e2607748e1209d3da46a3dcc3f7cb60f2 /src/block.c
parent01b3c9985c748f2314a98bca9846182a07c5ea18 (diff)
downloadseabios-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.c8
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;