--- qemu/roms/SLOF/board-qemu/slof/rtas.fs 2018/04/24 18:59:08 1.1 +++ qemu/roms/SLOF/board-qemu/slof/rtas.fs 2018/04/24 19:44:51 1.1.1.2 @@ -108,6 +108,63 @@ find-qemu-rtas enter-rtas ; + +0 value puid + +: rtas-do-config-@ ( config-addr size -- value) + \ We really want to cache this ! + " ibm,read-pci-config" rtas-get-token rtas-cb rtas>token l! + 4 rtas-cb rtas>nargs l! + 2 rtas-cb rtas>nret l! + ( addr size ) rtas-cb rtas>args3 l! + puid ffffffff and rtas-cb rtas>args2 l! + puid 20 rshift rtas-cb rtas>args1 l! + ( addr ) rtas-cb rtas>args0 l! + enter-rtas + rtas-cb rtas>args4 l@ dup IF + \ Do not warn on error as this is part of the + \ normal PCI probing pass + drop ffffffff + ELSE + drop rtas-cb rtas>args5 l@ + THEN +; + +: rtas-do-config-! ( value config-addr size ) + \ We really want to cache this ! + " ibm,write-pci-config" rtas-get-token rtas-cb rtas>token l! + 5 rtas-cb rtas>nargs l! + 1 rtas-cb rtas>nret l! + ( value addr size ) rtas-cb rtas>args3 l! + puid ffffffff and rtas-cb rtas>args2 l! + puid 20 rshift rtas-cb rtas>args1 l! + ( value addr ) rtas-cb rtas>args0 l! + ( value ) rtas-cb rtas>args4 l! + enter-rtas + rtas-cb rtas>args5 l@ dup IF + ." RTAS write config err " . cr + ELSE drop THEN +; + +: rtas-config-b@ ( config-addr -- value ) + 1 rtas-do-config-@ ff and +; +: rtas-config-b! ( value config-addr -- ) + 1 rtas-do-config-! +; +: rtas-config-w@ ( config-addr -- value ) + 2 rtas-do-config-@ ffff and +; +: rtas-config-w! ( value config-addr -- ) + 2 rtas-do-config-! +; +: rtas-config-l@ ( config-addr -- value ) + 4 rtas-do-config-@ ffffffff and +; +: rtas-config-l! ( value config-addr -- ) + 4 rtas-do-config-! +; + : of-start-cpu rtas-start-cpu ; \ Methods of the rtas node proper