|
|
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.