fix fast exception handling for pi_st
authorTobias Platen <tplaten@posteo.de>
Mon, 22 Nov 2021 17:57:54 +0000 (18:57 +0100)
committerTobias Platen <tplaten@posteo.de>
Mon, 22 Nov 2021 17:57:54 +0000 (18:57 +0100)
src/soc/config/test/test_pi2ls.py

index 9cd9c23b38bafb2664c94d9c147648d8afc8cec2..486dc5c9c54f6c3e4446289976cfa716e1a12592 100644 (file)
@@ -58,13 +58,6 @@ def pi_st(port1, addr, data, datalen, msr_pr=0, is_dcbz=0):
     yield Settle()
     yield from wait_addr(port1)             # wait until addr ok
     yield from wait_addr(port1)             # wait until addr ok
-    exc_happened = yield port1.exc_o.happened
-    if exc_happened:
-        print("print fast exception happened")
-        yield port1.is_st_i.eq(0)  # end
-        yield port1.addr.ok.eq(0)  # set !ok
-        yield port1.is_dcbz_i.eq(0)  # reset dcbz too
-        return "fast"
 
     # yield # not needed, just for checking
     # yield # not needed, just for checking
@@ -73,10 +66,15 @@ def pi_st(port1, addr, data, datalen, msr_pr=0, is_dcbz=0):
     yield port1.st.ok.eq(1)
     yield
     yield port1.st.ok.eq(0)
+    exc_happened = yield port1.exc_o.happened
+    if exc_happened:
+        print("print fast exception happened")
+        yield port1.is_st_i.eq(0)  # end
+        yield port1.addr.ok.eq(0)  # set !ok
+        yield port1.is_dcbz_i.eq(0)  # reset dcbz too
+        return "fast"
     yield from wait_busy(port1,debug="pi_st_E") # wait while busy
 
-    # TODO: fast exception handling
-
     # can go straight to reset.
     yield port1.is_st_i.eq(0)  # end
     yield port1.addr.ok.eq(0)  # set !ok