diff options
Diffstat (limited to 'qemu/roms/SLOF/board-js2x/slof/rtas.fs')
-rw-r--r-- | qemu/roms/SLOF/board-js2x/slof/rtas.fs | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/qemu/roms/SLOF/board-js2x/slof/rtas.fs b/qemu/roms/SLOF/board-js2x/slof/rtas.fs deleted file mode 100644 index 0a90c2903..000000000 --- a/qemu/roms/SLOF/board-js2x/slof/rtas.fs +++ /dev/null @@ -1,240 +0,0 @@ -\ ***************************************************************************** -\ * 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 -\ ****************************************************************************/ - -#include <rtas/rtas-init.fs> -#include <rtas/rtas-cpu.fs> -#include <rtas/rtas-reboot.fs> -#include <rtas/rtas-flash.fs> -#include <rtas/rtas-vpd.fs> - -\ for update-flash -: (get-flashside) ( -- flashside ) rtas-get-flashside ; - -' (get-flashside) to get-flashside - -\ remember the current flashside -get-flashside to flashside? - -\ for update-flash -: (set-flashside) ( flashside -- status ) - dup rtas-set-flashside = IF 0 ELSE -1 THEN -; - -' (set-flashside) to set-flashside - -: rtas-ibm-read-pci-config ( size puid bus devfn off -- x ) - [ s" ibm,read-pci-config" rtas-get-token ] LITERAL rtas-cb rtas>token l! - 4 rtas-cb rtas>nargs l! - 2 rtas-cb rtas>nret l! - swap 8 lshift or swap 10 lshift or rtas-cb rtas>args0 l! - dup 20 rshift rtas-cb rtas>args1 l! - ffffffff and rtas-cb rtas>args2 l! - rtas-cb rtas>args3 l! - enter-rtas - rtas-cb rtas>args5 l@ -; - -: rtas-fetch-cpus ( mask -- status ) - [ s" rtas-fetch-slaves" rtas-get-token ] LITERAL rtas-cb rtas>token l! - 1 rtas-cb rtas>nargs l! - 1 rtas-cb rtas>nret l! - rtas-cb rtas>args0 l! - 0 rtas-cb rtas>args1 l! - enter-rtas - rtas-cb rtas>args1 l@ -; - -: rtas-stop-bootwatchdog ( -- status ) - [ s" rtas-stop-bootwatchdog" rtas-get-token ] LITERAL rtas-cb rtas>token l! - 0 rtas-cb rtas>nargs l! - 1 rtas-cb rtas>nret l! - enter-rtas - rtas-cb rtas>args0 l@ -; - -: rtas-set-bootwatchdog ( seconds -- ) - [ s" rtas-set-bootwatchdog" rtas-get-token ] LITERAL rtas-cb rtas>token l! - 1 rtas-cb rtas>nargs l! - 0 rtas-cb rtas>nret l! - rtas-cb rtas>args0 l! - enter-rtas -; - -' rtas-set-bootwatchdog to set-watchdog - -: rtas-dump-flash ( offset cnt -- ) - [ s" rtas-dump-flash" rtas-get-token ] LITERAL rtas-cb rtas>token l! - 2 rtas-cb rtas>nargs l! - 0 rtas-cb rtas>nret l! - rtas-cb rtas>args0 l! - rtas-cb rtas>args1 l! - enter-rtas -; - -create blist 50 allot -blist 50 erase - -: build-blocklist_old - \ set version - 1 blist c! - \ set length of block list - 50 blist 7 + c! - \ no more block list - 0000000000000000 blist 8 + ! - \ first block - get-load-base 0 + blist 10 + ! - 80000 blist 18 + ! - get-load-base 80000 + blist 20 + ! - 80000 blist 28 + ! - get-load-base 100000 + blist 30 + ! - 80000 blist 38 + ! - get-load-base 180000 + blist 40 + ! - 8006C blist 48 + ! -; - -80000 constant _block_size - -: build-blocklist - \ set length of block list - \ length of flashfs at load-base is at offset 30... get it... - get-load-base 30 + @ - \ calculate the number of blocks we need - _block_size / 1 + - \ total number of blocks is 2 (for header and block_list extension + (number of blocks for flashfs * 2 (1 for address 1 for length)) - 2 * 2 + 8 * blist ! - \ set version ( in first byte only ) - 1 blist c! - \ no more block list - 0000000000000000 blist 8 + ! - \ length of flashfs at load-base is at offset 30... get it... - get-load-base 30 + @ - \ i define one block to be 64K, so calculate the number of blocks we need and loop over them - _block_size / 1 + 0 do - get-load-base _block_size i * + \ which position of load-base to store - blist 10 + \ at what offset of blist ( 0x8 + for header 0x8 + for extension ) - i 10 * + \ for each loop we have done 0x10 + - ! \ store it - get-load-base 30 + @ - _block_size i * - \ remaining length - dup _block_size > - IF \ is the remaining length > block size - drop _block_size \ then store the block size as length - ELSE - \ do nothing (store remaining length) - THEN - blist 10 + \ store the length at - i 10 * + \ correct blist offset - 8 + \ + 8 (we have stored address, now the length) - ! \ store it - loop -; - - - -: build-blocklist-v0_old - \ set version - 0 blist c! - 48 blist 7 + c! - \ first block - get-load-base 0 + blist 8 + ! - 80000 blist 10 + ! - get-load-base 80000 + blist 18 + ! - 80000 blist 20 + ! - get-load-base 100000 + blist 28 + ! - 80000 blist 30 + ! - get-load-base 180000 + blist 38 + ! - 8006C blist 40 + ! -; - -: build-blocklist-v0 - \ set length of block list - \ length of flashfs at load-base is at offset 30... get it... - get-load-base 30 + @ - \ calculate the number of blocks we need - _block_size / 1 + - \ total number of blocks is 1 (for header + (number of blocks for flashfs * 2 (1 for address 1 for length)) - 2 * 1 + 8 * blist ! - \ length of flashfs at load-base is at offset 30... get it... - get-load-base 30 + @ - \ i define one block to be 64K, so calculate the number of blocks we need and loop over them - _block_size / 1 + 0 do - get-load-base _block_size i * + \ which position of load-base to store - blist 8 + \ at what offset of blist ( 0x8 + for header) - i 10 * + \ for each loop we have done 0x10 + - ! \ store it - get-load-base 30 + @ - _block_size i * - \ remaining length - dup _block_size > - IF \ is the remaining length > block size - drop _block_size \ then store the block size as length - ELSE - \ do nothing (store remaining length) - THEN - blist 8 + \ store the length at - i 10 * + \ correct blist offset - 8 + \ + 8 (we have stored address, now the length) - ! \ store it - loop -; - - -: yy - build-blocklist - blist rtas-ibm-update-flash-64-and-reboot -; - -: yy0 - build-blocklist-v0 - blist rtas-ibm-update-flash-64-and-reboot -; - -: rtas-ibm-update-flash-64 ( block-list -- status ) - [ s" ibm,update-flash-64" rtas-get-token ] LITERAL rtas-cb rtas>token l! - 2 rtas-cb rtas>nargs l! - 1 rtas-cb rtas>nret l! - rtas-cb rtas>args0 l! - \ special unofficial parameter: if this is set to 1, the rtas function will not check, wether - \ we are on the perm side... this is needed for "update-flash -c" to work... - 1 rtas-cb rtas>args1 l! - enter-rtas - rtas-cb rtas>args2 l@ -; - -\ for update-flash -: flash-write ( image-address -- status) - load-base-override >r to load-base-override build-blocklist-v0 - blist rtas-ibm-update-flash-64 - r> to load-base-override 0= IF true ELSE false THEN -; - -: commit 1 rtas-ibm-manage-flash-image ; -: reject 0 rtas-ibm-manage-flash-image ; - -: rtas-ibm-validate-flash-image ( image-to-commit -- status ) - [ s" ibm,validate-flash-image" rtas-get-token ] LITERAL rtas-cb rtas>token l! - 2 rtas-cb rtas>nargs l! - 2 rtas-cb rtas>nret l! - rtas-cb rtas>args0 l! - enter-rtas - rtas-cb rtas>args1 l@ -; - -: rtas-get-blade-descr ( address size -- len status ) - [ s" rtas-get-blade-descr" rtas-get-token ] LITERAL rtas-cb rtas>token l! - 2 rtas-cb rtas>nargs l! - 2 rtas-cb rtas>nret l! - rtas-cb rtas>args1 l! - rtas-cb rtas>args0 l! - enter-rtas - rtas-cb rtas>args2 l@ - rtas-cb rtas>args3 l@ -; |