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/packages/disk-label.fs | |
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/packages/disk-label.fs')
-rw-r--r-- | qemu/roms/openbios/packages/disk-label.fs | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/qemu/roms/openbios/packages/disk-label.fs b/qemu/roms/openbios/packages/disk-label.fs new file mode 100644 index 000000000..8354f878e --- /dev/null +++ b/qemu/roms/openbios/packages/disk-label.fs @@ -0,0 +1,102 @@ +\ tag: Utility functions +\ +\ deblocker / filesystem support +\ +\ Copyright (C) 2003, 2004 Samuel Rydh +\ +\ See the file "COPYING" for further information about +\ the copyright and warranty status of this work. +\ + +dev /packages + +\ ------------------------------------------------------------- +\ /packages/disk-label (partition handling) +\ ------------------------------------------------------------- + +[IFDEF] CONFIG_DISK_LABEL + +new-device + " disk-label" device-name + external + + variable part-handlers \ list with (probe-xt, phandle) elements + variable fs-handlers \ list with (fs-probe-xt, phandle) elements + + : find-part-handler ( block0 -- phandle | 0 ) + >r part-handlers + begin list-get while + ( nextlist dictptr ) + r@ over @ execute if + ( nextlist dictptr ) + na1+ @ r> rot 2drop exit + then + drop + repeat + r> drop 0 + ; + + : find-filesystem ( offs.d ih -- ph | 0 ) + >r fs-handlers ( offs.d listhead ) + begin list-get while + 2over ( offs.d nextlist dictptr offs.d ) + r@ ( offs.d nextlist dictptr offs.d ih ) + 3 pick ( offs.d nextlist dictptr offs.d ih dictptr ) + @ ( offs.d nextlist dictptr offs.d ih probe-xt ) + execute ( offs.d nextlist dictptr flag? ) + if + ( offs.d nextlist dictptr ) + na1+ ( offs.d nextlist dictptr+1 ) + @ ( offs.d nextlist phandle ) + r> ( offs.d nextlist phandle ih ) + rot ( offs.d phandle ih nextlist ) + 2drop ( offs.d phandle ) + -rot ( phandle offs.d ) + 2drop ( phandle ) + exit + then + drop ( offs.d nextlist ) + repeat + 2drop ( offs.d ) + r> drop 0 + ; + + + : register-part-handler ( handler-ph -- ) + dup " probe" rot find-method + 0= abort" Missing probe method!" + ( phandle probe-xt ) + part-handlers list-add , , + ; + + : register-fs-handler ( handler-ph -- ) + dup " probe" rot find-method + 0= abort" Missing probe method!" + ( phandle probe-xt ) + fs-handlers list-add , , + ; +finish-device + +\ --------------------------------------------------------------------------- +\ methods to register partion and filesystem packages used by disk-label +\ --------------------------------------------------------------------------- + +device-end +: register-partition-package ( -- ) + " register-part-handler" " disk-label" $find-package-method ?dup if + active-package swap execute + else + ." [disk-label] internal error" cr + then +; + +: register-fs-package ( -- ) + " register-fs-handler" " disk-label" $find-package-method ?dup if + active-package swap execute + else + ." [misc-files] internal error" cr + then +; + +[THEN] +device-end |