Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / slof / fs / quiesce.fs
diff --git a/qemu/roms/SLOF/slof/fs/quiesce.fs b/qemu/roms/SLOF/slof/fs/quiesce.fs
new file mode 100644 (file)
index 0000000..47006e4
--- /dev/null
@@ -0,0 +1,58 @@
+\ *****************************************************************************
+\ * Copyright (c) 2004, 2008 IBM Corporation
+\ * All rights reserved.
+\ * This program and the accompanying materials
+\ * are made available under the terms of the BSD License
+\ * which accompanies this distribution, and is available at
+\ * http://www.opensource.org/licenses/bsd-license.php
+\ *
+\ * Contributors:
+\ *     IBM Corporation - initial implementation
+\ ****************************************************************************/
+
+
+100 CONSTANT quiesce-xt#
+
+\ The array with the quiesce execution tokens:
+CREATE quiesce-xts quiesce-xt# cells allot
+quiesce-xts quiesce-xt# cells erase
+
+0 VALUE quiesce-done?
+
+
+\ Add a token to the quiesce execution token array:
+: add-quiesce-xt  ( xt -- )
+   quiesce-xt# 0 DO
+      quiesce-xts I cells +    ( xt arrayptr )
+      dup @ 0=                 ( xt arrayptr true|false )
+      IF
+         ! UNLOOP EXIT
+      ELSE                     ( xt arrayptr )
+         over swap             ( xt xt arrayptr )
+         @ =                   \ xt already stored ?
+         IF
+            drop UNLOOP EXIT
+         THEN                  ( xt )
+      THEN
+   LOOP
+   drop                        ( xt -- )
+   ." Warning: quiesce xt list is full." cr
+;
+
+
+\ The quiesce call asserts that the firmware and all hardware
+\ is in a sane state (e.g. assert that no background DMA is
+\ running anymore)
+: quiesce  ( -- )
+   quiesce-done? IF EXIT THEN
+   true to quiesce-done?
+   quiesce-xt# 0 DO
+      quiesce-xts I cells +    ( arrayptr )
+      @ dup IF                 ( xt )
+         EXECUTE
+      ELSE
+         drop UNLOOP EXIT
+      THEN
+   LOOP
+;
+