Some atari/tos cleanups.
This commit is contained in:
+32
-12
@@ -117,9 +117,13 @@ void PackTos::buildLoader(const Filter *ft)
|
|||||||
initLoader(nrv_loader, sizeof(nrv_loader));
|
initLoader(nrv_loader, sizeof(nrv_loader));
|
||||||
//linker->dumpSymbols();
|
//linker->dumpSymbols();
|
||||||
|
|
||||||
|
//
|
||||||
|
// part 1a
|
||||||
|
//
|
||||||
|
|
||||||
addLoader("entry");
|
addLoader("entry");
|
||||||
|
|
||||||
if (symbols.up21_a6 > 0 && symbols.up21_a6 <= 32767)
|
if (symbols.up21_a6 <= 32767)
|
||||||
addLoader("set_up21_a6.w");
|
addLoader("set_up21_a6.w");
|
||||||
else if (symbols.up21_d4 <= 32767)
|
else if (symbols.up21_d4 <= 32767)
|
||||||
addLoader("set_up21_d4.w");
|
addLoader("set_up21_d4.w");
|
||||||
@@ -167,17 +171,22 @@ void PackTos::buildLoader(const Filter *ft)
|
|||||||
|
|
||||||
symbols.up31_d4 = symbols.up31_base_d4 + getDecomprOffset(ph.method, opt->small);
|
symbols.up31_d4 = symbols.up31_base_d4 + getDecomprOffset(ph.method, opt->small);
|
||||||
symbols.up31_a6 = symbols.up31_base_a6 + getDecomprOffset(ph.method, opt->small);
|
symbols.up31_a6 = symbols.up31_base_a6 + getDecomprOffset(ph.method, opt->small);
|
||||||
if (symbols.up31_a6 > 0 && symbols.up31_a6 <= 32767)
|
if (symbols.up31_a6 <= 32767)
|
||||||
addLoader("jmp_decompressor_a6.w");
|
addLoader("jmp_decompressor_a6.w");
|
||||||
else if (symbols.up31_d4 <= 32767)
|
else if (symbols.up31_d4 <= 32767)
|
||||||
addLoader("jmp_decompressor_d4.w");
|
addLoader("jmp_decompressor_d4.w");
|
||||||
else if (symbols.up31_a6 >= 32768 && symbols.up31_a6 <= 65534)
|
else if (symbols.up31_a6 <= 65534)
|
||||||
addLoader("jmp_decompressor_a6.w2");
|
addLoader("jmp_decompressor_a6.w2");
|
||||||
else
|
else
|
||||||
addLoader("jmp_decompressor_d4.l");
|
addLoader("jmp_decompressor_d4.l");
|
||||||
|
|
||||||
addLoader("clear_bss");
|
//
|
||||||
|
// part 1b
|
||||||
|
//
|
||||||
|
|
||||||
|
addLoader("code_on_stack");
|
||||||
|
|
||||||
|
addLoader("clear_dirty_bss");
|
||||||
addLoader("loop3_label");
|
addLoader("loop3_label");
|
||||||
addLoader(opt->small ? "loop3.small" : "loop3.fast");
|
addLoader(opt->small ? "loop3.small" : "loop3.fast");
|
||||||
if (symbols.loop3.mode == symbols.LOOP_SUBQ_L)
|
if (symbols.loop3.mode == symbols.LOOP_SUBQ_L)
|
||||||
@@ -190,11 +199,18 @@ void PackTos::buildLoader(const Filter *ft)
|
|||||||
throwBadLoader();
|
throwBadLoader();
|
||||||
|
|
||||||
addLoader("flush_cache");
|
addLoader("flush_cache");
|
||||||
|
addLoader("restore_stack");
|
||||||
|
#if 0
|
||||||
addLoader("clear_dirty_stack");
|
addLoader("clear_dirty_stack");
|
||||||
|
#endif
|
||||||
addLoader("start_program");
|
addLoader("start_program");
|
||||||
|
|
||||||
addLoader("IDENTSTR,+40D,UPX1HEAD,CUTPOINT");
|
addLoader("IDENTSTR,+40D,UPX1HEAD,CUTPOINT");
|
||||||
|
|
||||||
|
//
|
||||||
|
// part 2
|
||||||
|
//
|
||||||
|
|
||||||
if (M_IS_NRV2B(ph.method)) {
|
if (M_IS_NRV2B(ph.method)) {
|
||||||
addLoader(opt->small ? "nrv2b_8.small" : "nrv2b_8.fast");
|
addLoader(opt->small ? "nrv2b_8.small" : "nrv2b_8.fast");
|
||||||
} else if (M_IS_NRV2D(ph.method)) {
|
} else if (M_IS_NRV2D(ph.method)) {
|
||||||
@@ -514,7 +530,7 @@ void PackTos::pack(OutputFile *fo)
|
|||||||
d_len = lsize - e_len;
|
d_len = lsize - e_len;
|
||||||
assert((e_len & 3) == 0 && (d_len & 1) == 0);
|
assert((e_len & 3) == 0 && (d_len & 1) == 0);
|
||||||
|
|
||||||
// compute addresses
|
// compute section sizes
|
||||||
o_text = e_len;
|
o_text = e_len;
|
||||||
o_data = ph.c_len;
|
o_data = ph.c_len;
|
||||||
o_bss = i_bss;
|
o_bss = i_bss;
|
||||||
@@ -528,6 +544,7 @@ void PackTos::pack(OutputFile *fo)
|
|||||||
|
|
||||||
// append decompressor (part 2 of loader)
|
// append decompressor (part 2 of loader)
|
||||||
d_off = o_data;
|
d_off = o_data;
|
||||||
|
////memcpy(obuf + d_off, getLoader() + e_len, d_len); // must be done after relocation
|
||||||
o_data += d_len;
|
o_data += d_len;
|
||||||
|
|
||||||
// dword align the len of the final data segment
|
// dword align the len of the final data segment
|
||||||
@@ -577,13 +594,16 @@ void PackTos::pack(OutputFile *fo)
|
|||||||
symbols.up31_base_d4 = d_off + offset;
|
symbols.up31_base_d4 = d_off + offset;
|
||||||
symbols.up21_a6 = symbols.up21_d4 - (i_text + i_data);
|
symbols.up21_a6 = symbols.up21_d4 - (i_text + i_data);
|
||||||
symbols.up31_base_a6 = symbols.up31_base_d4 - (i_text + i_data);
|
symbols.up31_base_a6 = symbols.up31_base_d4 - (i_text + i_data);
|
||||||
|
assert((int)symbols.up21_a6 > 0);
|
||||||
|
assert((int)symbols.up31_base_a6 > 0);
|
||||||
|
|
||||||
|
const unsigned c = linker->getSymbolOffset("code_on_stack");
|
||||||
unsigned d;
|
unsigned d;
|
||||||
d = linker->getSymbolOffset("flush_cache_rts") - linker->getSymbolOffset("clear_bss");
|
d = linker->getSymbolOffset("flush_cache_rts") - c;
|
||||||
symbols.flush_cache_rts_offset = d;
|
symbols.flush_cache_rts_offset = d;
|
||||||
d = linker->getSymbolOffset("clear_dirty_stack_loop") - linker->getSymbolOffset("clear_bss");
|
d = linker->getSymbolOffset("clear_dirty_stack_loop") - c;
|
||||||
symbols.clear_dirty_stack_len = (d + 3) / 4 + 32 - 1;
|
symbols.clear_dirty_stack_len = (d + 3) / 4 + 32 - 1;
|
||||||
d = linker->getSymbolOffset("clear_bss_end") - linker->getSymbolOffset("clear_bss");
|
d = linker->getSymbolOffset("code_on_stack_end") - c;
|
||||||
symbols.copy_to_stack_len = d / 2 - 1;
|
symbols.copy_to_stack_len = d / 2 - 1;
|
||||||
|
|
||||||
// now re-build loader
|
// now re-build loader
|
||||||
@@ -611,16 +631,16 @@ void PackTos::pack(OutputFile *fo)
|
|||||||
linker->defineSymbol("orig_p_dlen", i_data);
|
linker->defineSymbol("orig_p_dlen", i_data);
|
||||||
linker->defineSymbol("orig_p_blen", i_bss);
|
linker->defineSymbol("orig_p_blen", i_bss);
|
||||||
|
|
||||||
if (symbols.up21_a6 > 0 && symbols.up21_a6 <= 32767)
|
if (symbols.up21_a6 <= 32767)
|
||||||
linker->defineSymbol("up21_a6", symbols.up21_a6);
|
linker->defineSymbol("up21_a6", symbols.up21_a6);
|
||||||
else
|
else
|
||||||
linker->defineSymbol("up21_d4", symbols.up21_d4);
|
linker->defineSymbol("up21_d4", symbols.up21_d4);
|
||||||
|
|
||||||
if (symbols.up31_a6 > 0 && symbols.up31_a6 <= 32767)
|
if (symbols.up31_a6 <= 32767)
|
||||||
linker->defineSymbol("up31_a6", symbols.up31_a6);
|
linker->defineSymbol("up31_a6", symbols.up31_a6);
|
||||||
else if (symbols.up31_d4 <= 32767)
|
else if (symbols.up31_d4 <= 32767)
|
||||||
linker->defineSymbol("up31_d4", symbols.up31_d4);
|
linker->defineSymbol("up31_d4", symbols.up31_d4);
|
||||||
else if (symbols.up31_a6 >= 32768 && symbols.up31_a6 <= 65534)
|
else if (symbols.up31_a6 <= 65534)
|
||||||
linker->defineSymbol("up31_a6", symbols.up31_a6 - 32767);
|
linker->defineSymbol("up31_a6", symbols.up31_a6 - 32767);
|
||||||
else
|
else
|
||||||
linker->defineSymbol("up31_d4", symbols.up31_d4);
|
linker->defineSymbol("up31_d4", symbols.up31_d4);
|
||||||
@@ -675,13 +695,13 @@ void PackTos::pack(OutputFile *fo)
|
|||||||
MemBuffer loader(o_text);
|
MemBuffer loader(o_text);
|
||||||
memcpy(loader, getLoader(), o_text);
|
memcpy(loader, getLoader(), o_text);
|
||||||
patchPackHeader(loader, o_text);
|
patchPackHeader(loader, o_text);
|
||||||
memcpy(obuf+d_off, getLoader() + e_len, d_len);
|
|
||||||
|
|
||||||
// write new file header, loader and compressed file
|
// write new file header, loader and compressed file
|
||||||
fo->write(&oh, FH_SIZE);
|
fo->write(&oh, FH_SIZE);
|
||||||
fo->write(loader, o_text); // entry
|
fo->write(loader, o_text); // entry
|
||||||
if (opt->debug.dump_stub_loader)
|
if (opt->debug.dump_stub_loader)
|
||||||
OutputFile::dump(opt->debug.dump_stub_loader, loader, o_text);
|
OutputFile::dump(opt->debug.dump_stub_loader, loader, o_text);
|
||||||
|
memcpy(obuf + d_off, getLoader() + e_len, d_len); // copy decompressor
|
||||||
fo->write(obuf, o_data); // compressed + decompressor
|
fo->write(obuf, o_data); // compressed + decompressor
|
||||||
|
|
||||||
// write empty relocation fixup
|
// write empty relocation fixup
|
||||||
|
|||||||
+1
-1
@@ -620,7 +620,7 @@ tc.m68k-atari.tos.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
|||||||
tc.m68k-atari.tos.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
tc.m68k-atari.tos.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
||||||
|
|
||||||
m68k-atari.tos.h : $(srcdir)/src/$$T.S
|
m68k-atari.tos.h : $(srcdir)/src/$$T.S
|
||||||
$(call tc,gcc) -c -x assembler-with-cpp -Wa,-m68040,-l,--pcrel,--register-prefix-optional $< -o tmp/$T.bin
|
$(call tc,gcc) -c -x assembler-with-cpp -Wa,-m68000,-l,--pcrel,--register-prefix-optional $< -o tmp/$T.bin
|
||||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||||
$(call tc,bin2h) --ident=nrv_loader tmp/$T.bin $@
|
$(call tc,bin2h) --ident=nrv_loader tmp/$T.bin $@
|
||||||
|
|
||||||
|
|||||||
+1226
-1190
File diff suppressed because it is too large
Load Diff
@@ -294,10 +294,10 @@ section copy_to_stack
|
|||||||
// Copy the final startup code below the stack. This will get
|
// Copy the final startup code below the stack. This will get
|
||||||
// called via "jmp (ASTACK)" after decompression and relocation.
|
// called via "jmp (ASTACK)" after decompression and relocation.
|
||||||
|
|
||||||
lea.l clear_bss_end:w(pc),a0
|
lea.l code_on_stack_end:w(pc),a0
|
||||||
move.l d4,-(ASTACK) // entry point for final jmp
|
move.l d4,-(ASTACK) // entry point for final jmp
|
||||||
|
|
||||||
//moveq.l #((clear_bss_end-clear_bss)/2-1),d5
|
////moveq.l #((code_on_stack_end-code_on_stack)/2-1),d5
|
||||||
moveq.l #copy_to_stack_len,d5
|
moveq.l #copy_to_stack_len,d5
|
||||||
1: move.w -(a0),-(ASTACK)
|
1: move.w -(a0),-(ASTACK)
|
||||||
subq.l #1,d5
|
subq.l #1,d5
|
||||||
@@ -307,7 +307,7 @@ section copy_to_stack
|
|||||||
|
|
||||||
#ifdef FLUSH_CACHE
|
#ifdef FLUSH_CACHE
|
||||||
// patch code: on the stack, the 'rts' becomes a 'nop'
|
// patch code: on the stack, the 'rts' becomes a 'nop'
|
||||||
//move.w #0x4e71,(flush_cache_rts-clear_bss):w(ASTACK)
|
////move.w #0x4e71,(flush_cache_rts-code_on_stack):w(ASTACK)
|
||||||
move.w #0x4e71,flush_cache_rts_offset:w(ASTACK)
|
move.w #0x4e71,flush_cache_rts_offset:w(ASTACK)
|
||||||
|
|
||||||
bsrs flush_cache
|
bsrs flush_cache
|
||||||
@@ -366,17 +366,18 @@ section jmp_decompressor_d4.l
|
|||||||
// this is the final part of the startup code which runs in the stack
|
// this is the final part of the startup code which runs in the stack
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
// ------------- clear dirty bss
|
section code_on_stack
|
||||||
|
|
||||||
section clear_bss
|
|
||||||
|
|
||||||
// on entry:
|
// on entry:
|
||||||
// ASTACK == pc == clear_bss (on stack)
|
// ASTACK == pc == code_on_stack (on stack)
|
||||||
// a6 start of dirty bss [long living register]
|
// a6 start of dirty bss [long living register]
|
||||||
// d6.l number of clr loops
|
// d6 number of clr loops for clear_dirty_bss
|
||||||
// d3.l 0
|
// d3.l 0
|
||||||
|
|
||||||
|
|
||||||
|
// ------------- clear dirty bss
|
||||||
|
|
||||||
|
section clear_dirty_bss
|
||||||
section loop3_label
|
section loop3_label
|
||||||
section loop3.small
|
section loop3.small
|
||||||
move.l d3,(a6)+
|
move.l d3,(a6)+
|
||||||
@@ -413,20 +414,19 @@ GL(flush_cache_rts) // for flush_cache_rts_offset
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// ------------- restore ASTACK
|
// ------------- restore stack
|
||||||
|
|
||||||
section clear_dirty_stack
|
section restore_stack
|
||||||
|
|
||||||
//lea clear_bss_size+4:w(ASTACK),sp
|
lea code_on_stack_end+4:w(pc),sp
|
||||||
lea clear_bss_end+4:w(pc),sp
|
|
||||||
|
|
||||||
// assert sp == clear_bss_end(pc)+4
|
|
||||||
|
|
||||||
|
|
||||||
// ------------- clear the dirty stack
|
// ------------- clear the dirty stack
|
||||||
|
|
||||||
// clear down to clear_bss(pc) + 32 extra longs
|
section clear_dirty_stack
|
||||||
////moveq.l #((clear_dirty_stack_loop-clear_bss+3)/4+32-1),d0
|
|
||||||
|
// clear down to code_on_stack(pc) + 32 extra longs
|
||||||
|
////moveq.l #((clear_dirty_stack_loop-code_on_stack+3)/4+32-1),d0
|
||||||
moveq.l #clear_dirty_stack_len,d0
|
moveq.l #clear_dirty_stack_len,d0
|
||||||
lea 1f(pc),a0
|
lea 1f(pc),a0
|
||||||
GL(clear_dirty_stack_loop) // for clear_dirty_stack_len
|
GL(clear_dirty_stack_loop) // for clear_dirty_stack_len
|
||||||
@@ -445,7 +445,7 @@ section start_program
|
|||||||
1: dc.w 0x4ef9 // jmp $xxxxxxxx - jmp to text segment
|
1: dc.w 0x4ef9 // jmp $xxxxxxxx - jmp to text segment
|
||||||
|
|
||||||
|
|
||||||
GL(clear_bss_end) // for copy_to_stack_len
|
GL(code_on_stack_end) // for copy_to_stack_len
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -549,7 +549,7 @@ section reloc
|
|||||||
// note: d3.l is still 0
|
// note: d3.l is still 0
|
||||||
|
|
||||||
move.l a6,a0 // a0 = start of relocations
|
move.l a6,a0 // a0 = start of relocations
|
||||||
moveq.l #1,d5
|
moveq.l #1,d1
|
||||||
|
|
||||||
move.l d4,a1
|
move.l d4,a1
|
||||||
add.l (a0)+,a1 // get initial fixup
|
add.l (a0)+,a1 // get initial fixup
|
||||||
@@ -558,12 +558,14 @@ section reloc
|
|||||||
add.l d4,(a1) // reloc one address
|
add.l d4,(a1) // reloc one address
|
||||||
2: move.b (a0)+,d3
|
2: move.b (a0)+,d3
|
||||||
beqs 3f
|
beqs 3f
|
||||||
cmp.b d5,d3 // note: d5.b is #1 from above
|
cmp.b d1,d3 // note: d1.b is #1 from above
|
||||||
bnes 1b
|
bnes 1b
|
||||||
lea 254(a1),a1 // d3 == 1 -> add 254, don't reloc
|
lea 254(a1),a1 // d3 == 1 -> add 254, don't reloc
|
||||||
bras 2b
|
bras 2b
|
||||||
3:
|
3:
|
||||||
|
|
||||||
|
// note: d3.l is still 0
|
||||||
|
|
||||||
|
|
||||||
// ------------- clear dirty bss & start program
|
// ------------- clear dirty bss & start program
|
||||||
|
|
||||||
@@ -581,7 +583,7 @@ section jmp_stack
|
|||||||
// We are currently running in the dirty bss.
|
// We are currently running in the dirty bss.
|
||||||
// Jump to the code we copied below the stack.
|
// Jump to the code we copied below the stack.
|
||||||
|
|
||||||
jmp (ASTACK) // jmp clear_bss (on stack)
|
jmp (ASTACK) // jmp code_on_stack (on stack)
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
|||||||
@@ -25,34 +25,36 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
20 jmp_decompressor_d4.w 00000006 00000000 00000000 00000100 2**0 CONTENTS, RELOC, READONLY
|
20 jmp_decompressor_d4.w 00000006 00000000 00000000 00000100 2**0 CONTENTS, RELOC, READONLY
|
||||||
21 jmp_decompressor_a6.w2 00000008 00000000 00000000 00000106 2**0 CONTENTS, RELOC, READONLY
|
21 jmp_decompressor_a6.w2 00000008 00000000 00000000 00000106 2**0 CONTENTS, RELOC, READONLY
|
||||||
22 jmp_decompressor_d4.l 0000000a 00000000 00000000 0000010e 2**0 CONTENTS, RELOC, READONLY
|
22 jmp_decompressor_d4.l 0000000a 00000000 00000000 0000010e 2**0 CONTENTS, RELOC, READONLY
|
||||||
23 clear_bss 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
23 code_on_stack 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||||
24 loop3_label 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
24 clear_dirty_bss 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||||
25 loop3.small 00000002 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
25 loop3_label 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||||
26 loop3.fast 00000008 00000000 00000000 0000011a 2**0 CONTENTS, READONLY
|
26 loop3.small 00000002 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||||
27 loop3_subql 00000004 00000000 00000000 00000122 2**0 CONTENTS, RELOC, READONLY
|
27 loop3.fast 00000008 00000000 00000000 0000011a 2**0 CONTENTS, READONLY
|
||||||
28 loop3_subqw 00000004 00000000 00000000 00000126 2**0 CONTENTS, RELOC, READONLY
|
28 loop3_subql 00000004 00000000 00000000 00000122 2**0 CONTENTS, RELOC, READONLY
|
||||||
29 loop3_dbra 00000004 00000000 00000000 0000012a 2**0 CONTENTS, RELOC, READONLY
|
29 loop3_subqw 00000004 00000000 00000000 00000126 2**0 CONTENTS, RELOC, READONLY
|
||||||
30 flush_cache 00000078 00000000 00000000 0000012e 2**0 CONTENTS, READONLY
|
30 loop3_dbra 00000004 00000000 00000000 0000012a 2**0 CONTENTS, RELOC, READONLY
|
||||||
31 clear_dirty_stack 00000010 00000000 00000000 000001a6 2**0 CONTENTS, RELOC, READONLY
|
31 flush_cache 00000078 00000000 00000000 0000012e 2**0 CONTENTS, READONLY
|
||||||
32 start_program 0000000c 00000000 00000000 000001b6 2**0 CONTENTS, READONLY
|
32 restore_stack 00000004 00000000 00000000 000001a6 2**0 CONTENTS, RELOC, READONLY
|
||||||
33 UPX1HEAD 00000020 00000000 00000000 000001c2 2**0 CONTENTS, READONLY
|
33 clear_dirty_stack 0000000c 00000000 00000000 000001aa 2**0 CONTENTS, RELOC, READONLY
|
||||||
34 CUTPOINT 00000000 00000000 00000000 000001e2 2**0 CONTENTS, READONLY
|
34 start_program 0000000c 00000000 00000000 000001b6 2**0 CONTENTS, READONLY
|
||||||
35 nrv2b_8.fast 0000007c 00000000 00000000 000001e2 2**0 CONTENTS, READONLY
|
35 UPX1HEAD 00000020 00000000 00000000 000001c2 2**0 CONTENTS, READONLY
|
||||||
36 nrv2d_8.fast 00000090 00000000 00000000 0000025e 2**0 CONTENTS, READONLY
|
36 CUTPOINT 00000000 00000000 00000000 000001e2 2**0 CONTENTS, READONLY
|
||||||
37 nrv2e_8.fast 00000098 00000000 00000000 000002ee 2**0 CONTENTS, READONLY
|
37 nrv2b_8.fast 0000007c 00000000 00000000 000001e2 2**0 CONTENTS, READONLY
|
||||||
38 nrv2b_8.small 00000076 00000000 00000000 00000386 2**0 CONTENTS, READONLY
|
38 nrv2d_8.fast 00000090 00000000 00000000 0000025e 2**0 CONTENTS, READONLY
|
||||||
39 nrv2d_8.small 0000008a 00000000 00000000 000003fc 2**0 CONTENTS, READONLY
|
39 nrv2e_8.fast 00000098 00000000 00000000 000002ee 2**0 CONTENTS, READONLY
|
||||||
40 nrv2e_8.small 00000092 00000000 00000000 00000486 2**0 CONTENTS, READONLY
|
40 nrv2b_8.small 00000076 00000000 00000000 00000386 2**0 CONTENTS, READONLY
|
||||||
41 lzma.init 0000002e 00000000 00000000 00000518 2**0 CONTENTS, RELOC, READONLY
|
41 nrv2d_8.small 0000008a 00000000 00000000 000003fc 2**0 CONTENTS, READONLY
|
||||||
42 lzma.fast 000008ca 00000000 00000000 00000546 2**0 CONTENTS, RELOC, READONLY
|
42 nrv2e_8.small 00000092 00000000 00000000 00000486 2**0 CONTENTS, READONLY
|
||||||
43 lzma.small 000008ca 00000000 00000000 00000e10 2**0 CONTENTS, RELOC, READONLY
|
43 lzma.init 0000002e 00000000 00000000 00000518 2**0 CONTENTS, RELOC, READONLY
|
||||||
44 lzma.finish 00000012 00000000 00000000 000016da 2**0 CONTENTS, READONLY
|
44 lzma.fast 000008ca 00000000 00000000 00000546 2**0 CONTENTS, RELOC, READONLY
|
||||||
45 reloc 0000001a 00000000 00000000 000016ec 2**0 CONTENTS, READONLY
|
45 lzma.small 000008ca 00000000 00000000 00000e10 2**0 CONTENTS, RELOC, READONLY
|
||||||
46 loop3_set_count.b 00000002 00000000 00000000 00001706 2**0 CONTENTS, RELOC, READONLY
|
46 lzma.finish 00000012 00000000 00000000 000016da 2**0 CONTENTS, READONLY
|
||||||
47 loop3_set_count.w 00000004 00000000 00000000 00001708 2**0 CONTENTS, RELOC, READONLY
|
47 reloc 0000001a 00000000 00000000 000016ec 2**0 CONTENTS, READONLY
|
||||||
48 loop3_set_count.l 00000006 00000000 00000000 0000170c 2**0 CONTENTS, RELOC, READONLY
|
48 loop3_set_count.b 00000002 00000000 00000000 00001706 2**0 CONTENTS, RELOC, READONLY
|
||||||
49 jmp_stack 00000002 00000000 00000000 00001712 2**0 CONTENTS, READONLY
|
49 loop3_set_count.w 00000004 00000000 00000000 00001708 2**0 CONTENTS, RELOC, READONLY
|
||||||
50 __mulsi3 0000001c 00000000 00000000 00001714 2**0 CONTENTS, READONLY
|
50 loop3_set_count.l 00000006 00000000 00000000 0000170c 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
51 jmp_stack 00000002 00000000 00000000 00001712 2**0 CONTENTS, READONLY
|
||||||
|
52 __mulsi3 0000001c 00000000 00000000 00001714 2**0 CONTENTS, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d loop1_label 00000000 loop1_label
|
00000000 l d loop1_label 00000000 loop1_label
|
||||||
00000000 l d flush_cache 00000000 flush_cache
|
00000000 l d flush_cache 00000000 flush_cache
|
||||||
@@ -80,12 +82,14 @@ SYMBOL TABLE:
|
|||||||
00000000 l d jmp_decompressor_d4.w 00000000 jmp_decompressor_d4.w
|
00000000 l d jmp_decompressor_d4.w 00000000 jmp_decompressor_d4.w
|
||||||
00000000 l d jmp_decompressor_a6.w2 00000000 jmp_decompressor_a6.w2
|
00000000 l d jmp_decompressor_a6.w2 00000000 jmp_decompressor_a6.w2
|
||||||
00000000 l d jmp_decompressor_d4.l 00000000 jmp_decompressor_d4.l
|
00000000 l d jmp_decompressor_d4.l 00000000 jmp_decompressor_d4.l
|
||||||
00000000 l d clear_bss 00000000 clear_bss
|
00000000 l d code_on_stack 00000000 code_on_stack
|
||||||
|
00000000 l d clear_dirty_bss 00000000 clear_dirty_bss
|
||||||
00000000 l d loop3.small 00000000 loop3.small
|
00000000 l d loop3.small 00000000 loop3.small
|
||||||
00000000 l d loop3.fast 00000000 loop3.fast
|
00000000 l d loop3.fast 00000000 loop3.fast
|
||||||
00000000 l d loop3_subql 00000000 loop3_subql
|
00000000 l d loop3_subql 00000000 loop3_subql
|
||||||
00000000 l d loop3_subqw 00000000 loop3_subqw
|
00000000 l d loop3_subqw 00000000 loop3_subqw
|
||||||
00000000 l d loop3_dbra 00000000 loop3_dbra
|
00000000 l d loop3_dbra 00000000 loop3_dbra
|
||||||
|
00000000 l d restore_stack 00000000 restore_stack
|
||||||
00000000 l d clear_dirty_stack 00000000 clear_dirty_stack
|
00000000 l d clear_dirty_stack 00000000 clear_dirty_stack
|
||||||
00000000 l d start_program 00000000 start_program
|
00000000 l d start_program 00000000 start_program
|
||||||
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
||||||
@@ -112,14 +116,14 @@ SYMBOL TABLE:
|
|||||||
00000000 *UND* 00000000 up21_d4
|
00000000 *UND* 00000000 up21_d4
|
||||||
00000000 *UND* 00000000 loop1_count
|
00000000 *UND* 00000000 loop1_count
|
||||||
00000000 *UND* 00000000 loop2_count
|
00000000 *UND* 00000000 loop2_count
|
||||||
0000000c g start_program 00000000 clear_bss_end
|
0000000c g start_program 00000000 code_on_stack_end
|
||||||
00000000 *UND* 00000000 copy_to_stack_len
|
00000000 *UND* 00000000 copy_to_stack_len
|
||||||
00000000 *UND* 00000000 flush_cache_rts_offset
|
00000000 *UND* 00000000 flush_cache_rts_offset
|
||||||
00000000 *UND* 00000000 up31_a6
|
00000000 *UND* 00000000 up31_a6
|
||||||
00000000 *UND* 00000000 up31_d4
|
00000000 *UND* 00000000 up31_d4
|
||||||
00000076 g flush_cache 00000000 flush_cache_rts
|
00000076 g flush_cache 00000000 flush_cache_rts
|
||||||
00000000 *UND* 00000000 clear_dirty_stack_len
|
00000000 *UND* 00000000 clear_dirty_stack_len
|
||||||
0000000a g clear_dirty_stack 00000000 clear_dirty_stack_loop
|
00000006 g clear_dirty_stack 00000000 clear_dirty_stack_loop
|
||||||
00000002 g nrv2b_8.fast 00000000 nrv2b_8_fast_decompr_start
|
00000002 g nrv2b_8.fast 00000000 nrv2b_8_fast_decompr_start
|
||||||
00000002 g nrv2d_8.fast 00000000 nrv2d_8_fast_decompr_start
|
00000002 g nrv2d_8.fast 00000000 nrv2d_8_fast_decompr_start
|
||||||
00000002 g nrv2e_8.fast 00000000 nrv2e_8_fast_decompr_start
|
00000002 g nrv2e_8.fast 00000000 nrv2e_8_fast_decompr_start
|
||||||
@@ -180,7 +184,7 @@ OFFSET TYPE VALUE
|
|||||||
|
|
||||||
RELOCATION RECORDS FOR [copy_to_stack]:
|
RELOCATION RECORDS FOR [copy_to_stack]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000002 R_68K_PC16 clear_bss_end
|
00000002 R_68K_PC16 code_on_stack_end
|
||||||
00000007 R_68K_8 copy_to_stack_len
|
00000007 R_68K_8 copy_to_stack_len
|
||||||
00000012 R_68K_16 flush_cache_rts_offset
|
00000012 R_68K_16 flush_cache_rts_offset
|
||||||
00000015 R_68K_PC8 flush_cache+0xffffffff
|
00000015 R_68K_PC8 flush_cache+0xffffffff
|
||||||
@@ -213,10 +217,13 @@ RELOCATION RECORDS FOR [loop3_dbra]:
|
|||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000002 R_68K_PC16 loop3_label
|
00000002 R_68K_PC16 loop3_label
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [restore_stack]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000002 R_68K_PC16 code_on_stack_end+0x00000004
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [clear_dirty_stack]:
|
RELOCATION RECORDS FOR [clear_dirty_stack]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000002 R_68K_PC16 clear_bss_end+0x00000004
|
00000001 R_68K_8 clear_dirty_stack_len
|
||||||
00000005 R_68K_8 clear_dirty_stack_len
|
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [lzma.init]:
|
RELOCATION RECORDS FOR [lzma.init]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
|
|||||||
Reference in New Issue
Block a user