diff options
author | Yang Zhang <yang.z.zhang@intel.com> | 2015-08-28 09:58:54 +0800 |
---|---|---|
committer | Yang Zhang <yang.z.zhang@intel.com> | 2015-09-01 12:44:00 +0800 |
commit | e44e3482bdb4d0ebde2d8b41830ac2cdb07948fb (patch) | |
tree | 66b09f592c55df2878107a468a91d21506104d3f /qemu/roms/openbios/forth/util | |
parent | 9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00 (diff) |
Add qemu 2.4.0
Change-Id: Ic99cbad4b61f8b127b7dc74d04576c0bcbaaf4f5
Signed-off-by: Yang Zhang <yang.z.zhang@intel.com>
Diffstat (limited to 'qemu/roms/openbios/forth/util')
-rw-r--r-- | qemu/roms/openbios/forth/util/apic.fs | 62 | ||||
-rw-r--r-- | qemu/roms/openbios/forth/util/build.xml | 19 | ||||
-rw-r--r-- | qemu/roms/openbios/forth/util/pci.fs | 92 | ||||
-rw-r--r-- | qemu/roms/openbios/forth/util/util.fs | 95 |
4 files changed, 268 insertions, 0 deletions
diff --git a/qemu/roms/openbios/forth/util/apic.fs b/qemu/roms/openbios/forth/util/apic.fs new file mode 100644 index 000000000..82a62aa7b --- /dev/null +++ b/qemu/roms/openbios/forth/util/apic.fs @@ -0,0 +1,62 @@ +\ +\ ioapic and local apic tester +\ +\ Copyright (C) 2003 Stefan Reinauer +\ +\ See the file "COPYING" for further information about +\ the copyright and warranty status of this work. +\ + +hex + +fee00000 constant lapic_base +fec00000 constant ioapic_base + +: read_lapic ( regoffset -- value ) + lapic_base + l@ + ; + +: write_lapic ( value regoffset -- ) + lapic_base + l! + ; + +: read_ioapic ( regoffset -- low_value high_value ) + 2* 10 + dup + ioapic_base l! ioapic_base 4 cells + l@ + swap 1+ + ioapic_base l! ioapic_base 4 cells + l@ + ; + +: write_ioapic ( low high regoffset -- ) + 2* 10 + dup ( low high offs offs ) + ioapic_base l! rot ioapic_base 4 cells + l! ( high offs ) + 1+ + ioapic_base l! ioapic_base 4 cells + l! ( high offs ) + ; + +: test-lapic + s" Dumping local apic:" type cr + 3f0 0 do + i dup ( lapic_base + ) s" 0x" type . s" = 0x" type read_lapic space . + i 30 and 0= if cr then + 10 +loop + cr + ; + +: test-ioapic + s" Dumping io apic:" type cr + 17 0 do + i dup s" irq=" type . read_ioapic s" = 0x" type . s" ." type . + i 1 and 0<> if + cr + then + loop + cr + ; + +: dump-apics + test-lapic + test-ioapic + ; + +\ tag: apic test utility diff --git a/qemu/roms/openbios/forth/util/build.xml b/qemu/roms/openbios/forth/util/build.xml new file mode 100644 index 000000000..4839d2cd3 --- /dev/null +++ b/qemu/roms/openbios/forth/util/build.xml @@ -0,0 +1,19 @@ +<build> + + <!-- + build description for OpenBIOS utility functions + + Copyright (C) 2004-2005 by Stefan Reinauer + See the file "COPYING" for further information about + the copyright and warranty status of this work. + --> + + <dictionary name="openbios" target="forth"> + <object source="util.fs"/> + <object source="pci.fs"/> + <!-- We don't want/need these at the moment + <object source="apic.fs"/> + --> + </dictionary> + +</build> diff --git a/qemu/roms/openbios/forth/util/pci.fs b/qemu/roms/openbios/forth/util/pci.fs new file mode 100644 index 000000000..57ded6265 --- /dev/null +++ b/qemu/roms/openbios/forth/util/pci.fs @@ -0,0 +1,92 @@ +\ tag: PCI helper functions +\ +\ Copyright (C) 2003-2004 Stefan Reinauer +\ Copyright (C) 2003 Samuel Rydh +\ +\ See the file "COPYING" for further information about +\ the copyright and warranty status of this work. +\ + +\ simple set of words for pci access, these are not +\ compliant to the PCI bus binding of OpenFirmware. + +\ only forth +\ vocabulary pci +\ also pci definitions + +hex + +: busdevfn ( bus dev fn -- busdevfn ) + 7 and swap + 1f and 3 << or ( dev fn -- devfn ) + swap 8 << or ( bus devfn -- busdevfn ) + ; + +: config-command ( busdevfn reg -- reg addr ) + dup -rot + 3 invert and + swap 8 << or + 80000000 or + ; + +: pci-c@ ( busdevfn reg -- x ) + config-command + cf8 iol! + 3 and cfc + + ioc@ + ; + +: pci-w@ ( busdevfn reg -- x ) + config-command + cf8 iol! + 2 and cfc + iow@ + ; + +: pci-l@ ( busdevfn reg -- x ) + config-command + cf8 iol! + drop + cfc iol@ + ; + +: pci-c! ( busdevfn reg val -- ) + -rot config-command + cf8 iol! + 3 and cfc + ioc! + ; + +: pci-w! ( busdevfn reg val -- ) + -rot config-command + cf8 iol! + 2 and cfc + iow! + ; + +: pci-l! ( busdevfn reg val -- ) + -rot config-command + cf8 iol! + drop + cfc iol! + ; + +: dump-pci-device ( bus dev fn -- ) + 2 pick (.) type 3a emit over + (.) type 2e emit dup (.) type 20 emit 5b emit \ 0:18.0 [ + busdevfn >r + r@ 0 pci-w@ u. 2f emit r@ 2 pci-w@ u. 5d emit \ 1022/1100] + r> + \ now we iterate + 10 0 do + cr i todigit emit 30 emit 3a emit 20 emit + 10 0 do + dup i j 4 << or pci-c@ + dup 4 >> todigit emit f and todigit emit + 20 emit + loop + loop + drop + cr cr + ; + +\ : test-pci +\ 0 2 0 dump-pci-device +\ ; diff --git a/qemu/roms/openbios/forth/util/util.fs b/qemu/roms/openbios/forth/util/util.fs new file mode 100644 index 000000000..6f549bf54 --- /dev/null +++ b/qemu/roms/openbios/forth/util/util.fs @@ -0,0 +1,95 @@ +\ tag: Utility functions +\ +\ Utility functions +\ +\ Copyright (C) 2003, 2004 Samuel Rydh +\ +\ See the file "COPYING" for further information about +\ the copyright and warranty status of this work. +\ + +\ ------------------------------------------------------------------------- +\ package utils +\ ------------------------------------------------------------------------- + +( method-str method-len package-str package-len -- xt|0 ) +: $find-package-method + find-package 0= if 2drop false exit then + find-method 0= if 0 then +; + +\ like $call-parent but takes an xt +: call-parent ( ... xt -- ??? ) + my-parent call-package +; + +: [active-package], + ['] (lit) , active-package , +; immediate + +\ ------------------------------------------------------------------------- +\ word creation +\ ------------------------------------------------------------------------- + +: ?mmissing ( name len -- 1 name len | 0 ) + 2dup active-package find-method + if 3drop false else true then +; + +\ install trivial open and close functions +: is-open ( -- ) + " open" ?mmissing if ['] true -rot is-xt-func then + " close" ?mmissing if 0 -rot is-xt-func then +; + +\ is-relay installs a relay function (a function that calls +\ a function with the same name but belonging to a different node). +\ The execution behaviour of xt should be ( -- ptr-to-ihandle ). +\ +: is-relay ( xt ph name-str name-len -- ) + rot >r 2dup r> find-method 0= if + \ function missing (not necessarily an error) + 3drop exit + then + + -rot is-func-begin + ( xt method-xt ) + ['] (lit) , , \ ['] method + , ['] @ , \ xt @ + ['] call-package , \ call-package + is-func-end +; + +\ ------------------------------------------------------------------------- +\ install deblocker bindings +\ ------------------------------------------------------------------------- + +: (open-deblocker) ( varaddr -- ) + " deblocker" find-package if + 0 0 rot open-package + else 0 then + swap ! +; + +: is-deblocker ( -- ) + " deblocker" find-package 0= if exit then >r + " deblocker" is-ivariable + + \ create open-deblocker + " open-deblocker" is-func-begin + dup , ['] (open-deblocker) , + is-func-end + + \ create close-deblocker + " close-deblocker" is-func-begin + dup , ['] @ , ['] close-package , + is-func-end + + ( save-ph deblk-xt R: deblocker-ph ) + r> + 2dup " read" is-relay + 2dup " seek" is-relay + 2dup " write" is-relay + 2dup " tell" is-relay + 2drop +; |