diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2009-03-31 16:31:18 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2009-03-31 16:31:18 -0700 |
commit | 0d8c3d040d9f733f95384f2d5e46609f73bd9c78 (patch) | |
tree | 9341a6bcfc7da3abf15ea514ad44f6d3c3233f19 /doc | |
parent | 1656aefeb6b7195db38d25065137c4f37655f33a (diff) | |
download | syslinux.git-0d8c3d040d9f733f95384f2d5e46609f73bd9c78.tar.gz syslinux.git-0d8c3d040d9f733f95384f2d5e46609f73bd9c78.tar.xz syslinux.git-0d8c3d040d9f733f95384f2d5e46609f73bd9c78.zip |
shuffler: make the new shuffler actually work
Make the new shuffler actually work. This includes changing
rllpack.inc to run in 32-bit mode (since simple_pm_call now switches
to 32-bit mode) and changing the new shuffler interface to move the
shuffle list before actually doing any work.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/comboot.txt | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/doc/comboot.txt b/doc/comboot.txt index 96678671..3ebadf33 100644 --- a/doc/comboot.txt +++ b/doc/comboot.txt @@ -897,8 +897,9 @@ AX=0023h [3.75] Get shuffler parameters AX=0024h [3.75] Cleanup, shuffle and boot, raw version Input: AX 0024h DX derivative-specific flags (see function 000Ch) - EDI shuffle descriptor list - EBX pointer to a "safe area" in memory + EDI shuffle descriptor list safe area + ESI shuffle descriptor list source + ECX byte count of shuffle descriptor list Output: Does not return This routine performs final cleanup, then performs a sequence @@ -911,7 +912,7 @@ AX=0024h [3.75] Cleanup, shuffle and boot, raw version address 7C00h. Either the shuffle descriptor list or the safe area (or both) may be located in high memory. - EDI points to a list of descriptors each of the form: + ESI points to a list of descriptors each of the form: Offset Size Meaning 0 dword destination address @@ -920,6 +921,13 @@ AX=0024h [3.75] Cleanup, shuffle and boot, raw version The copies are overlap-safe, like memmove(). + Before actually executing the move list, the list is moved to + the address specified in EDI. The caller is responsibe to + ensure that the moved descriptor list plus a "safe area" + immediately afterwards (the size of which is specified by + function 0023h) is not disturbed by the copy sequence. It is, + however, safe to overwrite descriptors already consumed. + If the source address is -1 (FFFFFFFFh) then the block specified by the destination address and the length is set to all zero. @@ -938,7 +946,3 @@ AX=0024h [3.75] Cleanup, shuffle and boot, raw version point reloads all data segment registers at the earliest possible point. - It is the responsibility of the caller that neither the - descriptor list nor the "safe area" is disturbed by the copy - sequence. It is, however, safe to overwrite descriptors - already consumed. |