X86: Add makeAtomicResponse to the read/write functions of x86 devices.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 25 Feb 2009 18:16:43 +0000 (10:16 -0800)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 25 Feb 2009 18:16:43 +0000 (10:16 -0800)
src/arch/x86/interrupts.cc
src/dev/x86/cmos.cc
src/dev/x86/i8042.cc
src/dev/x86/i82094aa.cc
src/dev/x86/i8237.cc
src/dev/x86/i8254.cc
src/dev/x86/i8259.cc
src/dev/x86/speaker.cc

index 29157b3f5723d3ba7b0f32113d9d7df8266d6362..30c532c2b8cdc733ce2d025598b043ef465fb23d 100644 (file)
@@ -221,6 +221,7 @@ X86ISA::Interrupts::read(PacketPtr pkt)
             "Reading Local APIC register %d at offset %#x as %#x.\n",
             reg, offset, val);
     pkt->setData(((uint8_t *)&val) + (offset & mask(3)));
+    pkt->makeAtomicResponse();
     return latency;
 }
 
@@ -238,6 +239,7 @@ X86ISA::Interrupts::write(PacketPtr pkt)
             "Writing Local APIC register %d at offset %#x as %#x.\n",
             reg, offset, gtoh(val));
     setReg(reg, gtoh(val));
+    pkt->makeAtomicResponse();
     return latency;
 }
 void
index 6bdc78a4bcc2a59c87c6d47ff27771a637aa1155..e08c56e8c365cb598d7b8bc6fe4fe4751f5ad885 100644 (file)
@@ -56,6 +56,7 @@ X86ISA::Cmos::read(PacketPtr pkt)
       default:
         panic("Read from undefined CMOS port.\n");
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
@@ -74,6 +75,7 @@ X86ISA::Cmos::write(PacketPtr pkt)
       default:
         panic("Write to undefined CMOS port.\n");
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
index 78ce307aeab28cf816395207d4ae98e634ee1061..afcbfdfb4b316f1f5be76475a6079460a4793eca 100644 (file)
@@ -303,6 +303,7 @@ X86ISA::I8042::read(PacketPtr pkt)
     } else {
         panic("Read from unrecognized port %#x.\n", addr);
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
@@ -434,6 +435,7 @@ X86ISA::I8042::write(PacketPtr pkt)
     } else {
         panic("Write to unrecognized port %#x.\n", addr);
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
index 03944c1900439ff5f03e806ca99bd2df3a63cf18..d160fcb2491524dd670e8330c6966530cdcf4c29 100644 (file)
@@ -67,6 +67,7 @@ X86ISA::I82094AA::read(PacketPtr pkt)
       default:
         panic("Illegal read from I/O APIC.\n");
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
@@ -85,6 +86,7 @@ X86ISA::I82094AA::write(PacketPtr pkt)
       default:
         panic("Illegal write to I/O APIC.\n");
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
index 5afe6b91ac3e01651fa7913cd4f1ff0340c78747..f6ea9d75f677a3b6db2a55ac4f1eeb043ca56186 100644 (file)
@@ -63,6 +63,7 @@ X86ISA::I8237::read(PacketPtr pkt)
       default:
         panic("Read from undefined i8237 register %d.\n", offset);
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
@@ -120,6 +121,7 @@ X86ISA::I8237::write(PacketPtr pkt)
       default:
         panic("Write to undefined i8254 register.\n");
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
index 4f37eebad3f97620935fea84d52e7f4bf14541af..5eb28844a7a7ac53ff45851f709ce02e379c45dd 100644 (file)
@@ -56,6 +56,7 @@ X86ISA::I8254::read(PacketPtr pkt)
     } else {
         panic("Read from undefined i8254 register.\n");
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
@@ -71,6 +72,7 @@ X86ISA::I8254::write(PacketPtr pkt)
     } else {
         panic("Write to undefined i8254 register.\n");
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
index f9e0a0c934ebe37a7ef719395eec4771240c7777..b868295ebc7a792c409473f7d1c8c31ff64f3a41 100644 (file)
@@ -65,6 +65,7 @@ X86ISA::I8259::read(PacketPtr pkt)
         pkt->set(IMR);
         break;
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
@@ -210,6 +211,7 @@ X86ISA::I8259::write(PacketPtr pkt)
         }
         break;
     }
+    pkt->makeAtomicResponse();
     return latency;
 }
 
index 25014d0c684cbbcd368695b29b102fc639c3c28c..c6eb9db9ec64cb30af9116dad0248554b130684f 100644 (file)
@@ -47,6 +47,7 @@ X86ISA::Speaker::read(PacketPtr pkt)
             controlVal.speaker ? "on" : "off",
             controlVal.timer ? "on" : "off");
     pkt->set((uint8_t)controlVal);
+    pkt->makeAtomicResponse();
     return latency;
 }
 
@@ -67,6 +68,7 @@ X86ISA::Speaker::write(PacketPtr pkt)
     controlVal.speaker = val.speaker;
     DPRINTF(PcSpeaker, "Writing to speaker device: gate %s, speaker %s.\n",
             controlVal.gate ? "on" : "off", controlVal.speaker ? "on" : "off");
+    pkt->makeAtomicResponse();
     return latency;
 }