aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2009-03-31 16:31:18 -0700
committerH. Peter Anvin <hpa@linux.intel.com>2009-03-31 16:31:18 -0700
commit0d8c3d040d9f733f95384f2d5e46609f73bd9c78 (patch)
tree9341a6bcfc7da3abf15ea514ad44f6d3c3233f19 /doc
parent1656aefeb6b7195db38d25065137c4f37655f33a (diff)
downloadsyslinux.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.txt18
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.