merge
This commit is contained in:
@@ -225,7 +225,7 @@ unfold:
|
||||
|
||||
/* Get some pages. If small, then get 1 page located just after the end
|
||||
of the first PT_LOAD of the compressed program. This will still be below
|
||||
all of the uncompressed program. If large (>=3MB uncompressed), then enough
|
||||
all of the uncompressed program. If large (>=3 MiB uncompressed), then enough
|
||||
to duplicate the entire compressed PT_LOAD, plus 1 page, located just after
|
||||
the brk() of the _un_compressed program. The address and length are pre-
|
||||
calculated by PackLinuxElf64amd::defineSymbols().
|
||||
|
||||
@@ -56,7 +56,7 @@ decompress_kernel: # (char *out, char *tmp, char *tmp_end, int arch_id)
|
||||
// Value stored from r1 to memory will be overwritten by outsize.
|
||||
stmdb r1!,{r0,r1,r2,r3,sp} // &indata, space, &outdata, arch_id, sp_in
|
||||
loadcon8 3,METHOD // mov r3,#METHOD
|
||||
mov sp,r1 // switch stacks to tmp_end area (64KB)
|
||||
mov sp,r1 // switch stacks to tmp_end area (64 KiB)
|
||||
ldr r1,1f // insize
|
||||
str r3,[sp,#-4]! // method
|
||||
ldr r3,2f // outsize
|
||||
|
||||
@@ -99,7 +99,7 @@ section EXEENTRY
|
||||
push ds
|
||||
.byte 0xa9
|
||||
do_copy:
|
||||
mov ch, 0x80 /* 64 kbyte */
|
||||
mov ch, 0x80 /* 64 KiB */
|
||||
mov ax, cs
|
||||
addaxds:
|
||||
add ax, offset source_segment /* MSB is referenced by the "sub" below */
|
||||
|
||||
@@ -38,7 +38,7 @@ PHDRS
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
/* 0x00c01000: 12MB+4KB for Fedora Core 5 vDSO at 0xc00000 */
|
||||
/* 0x00c01000: 12 MiB + 4 KiB for Fedora Core 5 vDSO at 0xc00000 */
|
||||
. = 0x00c01000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
*(.text)
|
||||
|
||||
@@ -162,7 +162,7 @@ setcursor:
|
||||
mov al,15; call outb_p; inc edx
|
||||
mov al,cl
|
||||
// jmp outb_p
|
||||
|
||||
|
||||
outb_p:
|
||||
outb dx,al
|
||||
call 0f; 0: // insure minimum delay between 'outb'
|
||||
|
||||
@@ -371,7 +371,7 @@ umax(unsigned a, unsigned b)
|
||||
// OpenBSD 3.9 wants all .text from all modules together, then (above that)
|
||||
// all .data from all modules together, in order to maximize the effectiveness
|
||||
// of lowering the segment limit on %cs as an implementation of "no-execute
|
||||
// .data". Thus OpenBSD 3.9 puts a gap of 0x20000000 (512MB) between the
|
||||
// .data". Thus OpenBSD 3.9 puts a gap of 0x20000000 (512 MiB) between the
|
||||
// origins of .text and .data in each module. So, mapping ET_DYN must "level"
|
||||
// the excursion in .text and .data of anything which preceeded it,
|
||||
// then add the new PT_LOAD.
|
||||
|
||||
@@ -281,7 +281,7 @@ unfold: // s7= &decompress; s6= &b_info(fold); s5= sz_pack2
|
||||
|
||||
/* Get some pages. If small, then get 1 page located just after the end
|
||||
of the first PT_LOAD of the compressed program. This will still be below
|
||||
all of the uncompressed program. If large (>=3MB uncompressed), then enough
|
||||
all of the uncompressed program. If large (>=3 MiB uncompressed), then enough
|
||||
to duplicate the entire compressed PT_LOAD, plus 1 page, located just after
|
||||
the brk() of the _un_compressed program. The address and length are pre-
|
||||
calculated by PackLinuxElf64amd::defineSymbols().
|
||||
|
||||
@@ -71,7 +71,7 @@ L90:
|
||||
lwz a1,-8(r31) # offset to {l_info; p_info; b_info}
|
||||
subf a0,a1,r31 # &l_info
|
||||
lwz a3,sz_unc+sz_p_info+sz_l_info(a0) # sz_mach_headers
|
||||
cmpli 0,a3,2048; bgt L100; li a3,2048 # at least 2KB for /usr/lib/dyld
|
||||
cmpli 0,a3,2048; bgt L100; li a3,2048 # at least 2 KiB for /usr/lib/dyld
|
||||
L100:
|
||||
movr r29,sp # remember for restoring later
|
||||
subf sp,a3,sp # alloca
|
||||
|
||||
Reference in New Issue
Block a user