|
|
1.1 root 1: \ *****************************************************************************
2: \ * Copyright (c) 2004, 2008 IBM Corporation
3: \ * All rights reserved.
4: \ * This program and the accompanying materials
5: \ * are made available under the terms of the BSD License
6: \ * which accompanies this distribution, and is available at
7: \ * http://www.opensource.org/licenses/bsd-license.php
8: \ *
9: \ * Contributors:
10: \ * IBM Corporation - initial implementation
11: \ ****************************************************************************/
12:
13:
14: 10 CONSTANT quiesce-xt#
15:
16: \ The array with the quiesce execution tokens:
17: CREATE quiesce-xts quiesce-xt# cells allot
18: quiesce-xts quiesce-xt# cells erase
19:
20:
21: \ Add a token to the quiesce execution token array:
22: : add-quiesce-xt ( xt -- )
23: quiesce-xt# 0 DO
24: quiesce-xts I cells + ( xt arrayptr )
25: dup @ 0= ( xt arrayptr true|false )
26: IF
27: ! UNLOOP EXIT
28: ELSE ( xt arrayptr )
29: over swap ( xt xt arrayptr )
30: @ = \ xt already stored ?
31: IF
32: drop UNLOOP EXIT
33: THEN ( xt )
34: THEN
35: LOOP
36: drop ( xt -- )
37: ." Warning: quiesce xt list is full." cr
38: ;
39:
40:
41: \ The quiesce call asserts that the firmware and all hardware
42: \ is in a sane state (e.g. assert that no background DMA is
43: \ running anymore)
44: : quiesce ( -- )
45: quiesce-xt# 0 DO
46: quiesce-xts I cells + ( arrayptr )
47: @ dup IF ( xt )
48: EXECUTE
49: ELSE
50: drop UNLOOP EXIT
51: THEN
52: LOOP
53: ;
54:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.