blob: 8e4db80609e93ad1ca67f9fe1159384e67bdaf30 [file] [log] [blame]
\ *****************************************************************************
\ * 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
\ ****************************************************************************/
false VALUE (sms-loaded?)
false value (sms-available?)
s" sms.fs" romfs-lookup IF true to (sms-available?) drop THEN
(sms-available?) [IF]
#include "packages/sms.fs"
\ Initialize SMS NVRAM handling.
#include "sms-nvram.fs"
\ Dynamically load sms code from the romfs file
\ Assumption is that skeleton sms package already exists
\ but aside of open & close, all other methods are in a romfs file (sms.fs)
\ Here we open the package and load the rest of the functionality
\ After that, one needs to find-device and execute sms-start method
\ The shorthand for that is given as (global) sms-start word
: $sms-node s" /packages/sms" ;
: (sms-init-package) ( -- true|false )
(sms-loaded?) ?dup IF EXIT THEN
$sms-node ['] find-device catch IF 2drop false EXIT THEN
s" sms.fs" [COMPILE] included
device-end
true dup to (sms-loaded?)
;
\ External wrapper for sms package method
: (sms-evaluate) ( addr len -- )
(sms-init-package) not IF
cr ." SMS is not available." cr 2drop exit
THEN
s" Entering SMS ..." type
disable-watchdog
reset-dual-emit
\ if we only had execute-device-method...
2>r $sms-node find-device
2r> evaluate
device-end
vpd-boot-import
;
: sms-start ( -- ) s" sms-start" (sms-evaluate) ;
: sms-fru-replacement ( -- ) s" sms-fru-replacement" (sms-evaluate) ;
[ELSE]
: sms-start ( -- ) cr ." SMS is not available." cr ;
: sms-fru-replacement ( -- ) cr ." SMS FRU replacement is not available." cr ;
[THEN]