[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 04/11] fdc: handle read-only floppies (abort earl
From: |
Hervé Poussineau |
Subject: |
[Qemu-devel] [PATCH v4 04/11] fdc: handle read-only floppies (abort early on write commands) |
Date: |
Mon, 6 Feb 2012 22:29:05 +0100 |
A real floppy doesn't attempt to write to read-only media either.
Signed-off-by: Hervé Poussineau <address@hidden>
---
hw/fdc.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/hw/fdc.c b/hw/fdc.c
index 49b8c97..060ca84 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -300,6 +300,7 @@ enum {
};
enum {
+ FD_SR1_NW = 0x02, /* Not writable */
FD_SR1_EC = 0x80, /* End of cylinder */
};
@@ -1179,6 +1180,16 @@ static int fdctrl_transfer_handler (void *opaque, int
nchan,
break;
case FD_DIR_WRITE:
/* WRITE commands */
+ if (cur_drv->ro) {
+ /* Handle readonly medium early, no need to do DMA, touch the
+ * LED or attempt any writes. A real floppy doesn't attempt
+ * to write to readonly media either. */
+ fdctrl_stop_transfer(fdctrl,
+ FD_SR0_ABNTERM | FD_SR0_SEEK, FD_SR1_NW,
+ 0x00);
+ goto transfer_error;
+ }
+
DMA_read_memory (nchan, fdctrl->fifo + rel_pos,
fdctrl->data_pos, len);
if (bdrv_write(cur_drv->bs, fd_sector(cur_drv),
--
1.7.8.3
- [Qemu-devel] [PATCH v4 00/11] Misc fixes for floppy emulation, Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 01/11] fdc: take side count into account, Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 02/11] fdc: set busy bit when starting a command, Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 03/11] fdc: most control commands do not generate interrupts, Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 04/11] fdc: handle read-only floppies (abort early on write commands),
Hervé Poussineau <=
- [Qemu-devel] [PATCH v4 05/11] fdc: add CCR (Configuration Control Register) write register, Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 10/11] fdc: fix seek command, which shouldn't check tracks, Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 11/11] fdc: DIR (Digital Input Register) should return status of current drive..., Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 06/11] block: add a transfer rate for floppy types, Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 07/11] pc: add 1.1 machine type, Hervé Poussineau, 2012/02/06
- [Qemu-devel] [PATCH v4 09/11] fdc: check if media rate is correct before doing any transfer, Hervé Poussineau, 2012/02/06