merge
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -90,6 +90,42 @@ section NRV2D
|
||||
section NRV2E
|
||||
#include "arch/powerpc/32/nrv2e_d.S"
|
||||
|
||||
section NRV_TAIL
|
||||
eof_nrv:
|
||||
#define dst0 a4
|
||||
#define tmp a1
|
||||
lwz dst0,0(ldst) // original dst
|
||||
mtlr t3 // return address
|
||||
subf a0,lsrc,src
|
||||
subf tmp,dst0,dst // -1+ dst length
|
||||
addi a0,a0,1 // return 0: good; else: bad [+1: correct for lbzu]
|
||||
addi tmp,tmp,1 // dst length
|
||||
stw tmp,0(ldst)
|
||||
#undef tmp
|
||||
|
||||
// CACHELINE=32 is the observed minimum line size of any cache.
|
||||
// Some caches may have larger lines, but it is cumbersome to lookup
|
||||
// {AT_DCACHEBSIZE, AT_ICACHEBSIZE, AT_UCACHEBSIZE: /usr/include/elf.h},
|
||||
// then save the correct size in a variable {where to put it?}, or to modify
|
||||
// the two instructions here. If a cache has larger lines, then we expect
|
||||
// that the second dcbst (or icbi) on a the same line will be fast.
|
||||
// If not, then too bad.
|
||||
|
||||
section CFLUSH // In: a2=dst= &highest stored byte; a4=dst0= &lowest stored byte
|
||||
CACHELINE=32
|
||||
ori dst0,dst0,-1+ CACHELINE // highest addr on cache line
|
||||
cfl_nrv:
|
||||
dcbst 0,dst0 // initiate store (modified) cacheline to memory
|
||||
cmpl cr0,dst0,dst // did we cover the highest-addressed byte?
|
||||
icbi 0,dst0 // discard instructions from cacheline
|
||||
addi dst0,dst0,CACHELINE // highest addr on next line
|
||||
blt cr0,cfl_nrv // not done yet
|
||||
#undef dst0
|
||||
sync // wait for all memory operations to finish
|
||||
isync // discard prefetched instructions (if any)
|
||||
cfl_ret:
|
||||
ret
|
||||
|
||||
#undef hibit
|
||||
|
||||
#undef src
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
file format elf64-x86-64
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 MACHMAINX 00000015 0000000000000000 0000000000000000 00000040 2**0 CONTENTS, RELOC, READONLY
|
||||
1 NRV_HEAD 00000066 0000000000000000 0000000000000000 00000055 2**0 CONTENTS, READONLY
|
||||
2 NRV2E 000000b7 0000000000000000 0000000000000000 000000bb 2**0 CONTENTS, RELOC, READONLY
|
||||
3 NRV2D 0000009e 0000000000000000 0000000000000000 00000172 2**0 CONTENTS, RELOC, READONLY
|
||||
4 NRV2B 00000090 0000000000000000 0000000000000000 00000210 2**0 CONTENTS, RELOC, READONLY
|
||||
5 LZMA_ELF00 00000064 0000000000000000 0000000000000000 000002a0 2**0 CONTENTS, RELOC, READONLY
|
||||
6 LZMA_DEC10 000009f7 0000000000000000 0000000000000000 00000304 2**0 CONTENTS, READONLY
|
||||
7 LZMA_DEC20 000009f7 0000000000000000 0000000000000000 00000cfb 2**0 CONTENTS, READONLY
|
||||
8 LZMA_DEC30 00000014 0000000000000000 0000000000000000 000016f2 2**0 CONTENTS, READONLY
|
||||
9 NRV_TAIL 00000000 0000000000000000 0000000000000000 00001706 2**0 CONTENTS, READONLY
|
||||
10 MACHMAINY 00000011 0000000000000000 0000000000000000 00001706 2**0 CONTENTS, READONLY
|
||||
11 MACHMAINZ 00000135 0000000000000000 0000000000000000 00001717 2**0 CONTENTS, RELOC, READONLY
|
||||
SYMBOL TABLE:
|
||||
0000000000000000 l d MACHMAINX 0000000000000000 MACHMAINX
|
||||
0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD
|
||||
0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30
|
||||
0000000000000000 l d MACHMAINY 0000000000000000 MACHMAINY
|
||||
0000000000000000 l d MACHMAINZ 0000000000000000 MACHMAINZ
|
||||
0000000000000000 l d NRV2E 0000000000000000 NRV2E
|
||||
0000000000000000 l d NRV2D 0000000000000000 NRV2D
|
||||
0000000000000000 l d NRV2B 0000000000000000 NRV2B
|
||||
0000000000000000 l d LZMA_ELF00 0000000000000000 LZMA_ELF00
|
||||
0000000000000000 l d LZMA_DEC10 0000000000000000 LZMA_DEC10
|
||||
0000000000000000 l d LZMA_DEC20 0000000000000000 LZMA_DEC20
|
||||
0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL
|
||||
0000000000000000 g MACHMAINX 0000000000000000 _start
|
||||
0000000000000011 g MACHMAINY 0000000000000000 end_decompress
|
||||
|
||||
RELOCATION RECORDS FOR [MACHMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000009 R_X86_64_PC32 MACHMAINZ+0xffffffffffffffff
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2E]:
|
||||
OFFSET TYPE VALUE
|
||||
00000000000000ae R_X86_64_PC32 NRV_HEAD+0x0000000000000021
|
||||
000000000000005b R_X86_64_PC32 MACHMAINY+0xfffffffffffffffc
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2D]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000095 R_X86_64_PC32 NRV_HEAD+0x0000000000000021
|
||||
000000000000005b R_X86_64_PC32 MACHMAINY+0xfffffffffffffffc
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2B]:
|
||||
OFFSET TYPE VALUE
|
||||
000000000000008a R_X86_64_PC32 NRV_HEAD+0x0000000000000021
|
||||
0000000000000052 R_X86_64_PC32 MACHMAINY+0xfffffffffffffffc
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000006 R_X86_64_PC32 LZMA_DEC30+0x0000000000000010
|
||||
|
||||
RELOCATION RECORDS FOR [MACHMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
000000000000000f R_X86_64_32 MACHMAINZ+0x0000000000000135
|
||||
0000000000000014 R_X86_64_32 MACHMAINX+0x000000000000000d
|
||||
0000000000000048 R_X86_64_32 MACHMAINZ+0x0000000000000135
|
||||
000000000000004e R_X86_64_32 MACHMAINX+0x000000000000000d
|
||||
@@ -9,21 +9,25 @@ Idx Name Size VMA LMA File off Algn Flags
|
||||
4 NRV2B 000000f0 00000000 00000000 000000a8 2**0 CONTENTS, RELOC, READONLY
|
||||
5 NRV2D 0000012c 00000000 00000000 00000198 2**0 CONTENTS, RELOC, READONLY
|
||||
6 NRV2E 00000148 00000000 00000000 000002c4 2**0 CONTENTS, RELOC, READONLY
|
||||
7 LZMA 00000000 00000000 00000000 0000040c 2**0 CONTENTS, READONLY
|
||||
8 LZMA_ELF00 0000008c 00000000 00000000 0000040c 2**0 CONTENTS, RELOC, READONLY
|
||||
9 LZMA_DEC10 0000099c 00000000 00000000 00000498 2**0 CONTENTS, READONLY
|
||||
10 LZMA_DEC20 0000099c 00000000 00000000 00000e34 2**0 CONTENTS, READONLY
|
||||
11 LZMA_DEC30 00000020 00000000 00000000 000017d0 2**0 CONTENTS, READONLY
|
||||
12 UPX1HEAD 00000020 00000000 00000000 000017f0 2**0 CONTENTS, READONLY
|
||||
7 NRV_TAIL 0000001c 00000000 00000000 0000040c 2**0 CONTENTS, READONLY
|
||||
8 CFLUSH 00000024 00000000 00000000 00000428 2**0 CONTENTS, READONLY
|
||||
9 LZMA 00000000 00000000 00000000 0000044c 2**0 CONTENTS, READONLY
|
||||
10 LZMA_ELF00 0000008c 00000000 00000000 0000044c 2**0 CONTENTS, RELOC, READONLY
|
||||
11 LZMA_DEC10 0000099c 00000000 00000000 000004d8 2**0 CONTENTS, READONLY
|
||||
12 LZMA_DEC20 0000099c 00000000 00000000 00000e74 2**0 CONTENTS, READONLY
|
||||
13 LZMA_DEC30 00000020 00000000 00000000 00001810 2**0 CONTENTS, READONLY
|
||||
14 UPX1HEAD 00000020 00000000 00000000 00001830 2**0 CONTENTS, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d LINUX020 00000000 LINUX020
|
||||
00000000 l d LINUX030 00000000 LINUX030
|
||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||
00000000 l d LINUX000 00000000 LINUX000
|
||||
00000000 l d LINUX010 00000000 LINUX010
|
||||
00000000 l d NRV2B 00000000 NRV2B
|
||||
00000000 l d NRV2D 00000000 NRV2D
|
||||
00000000 l d NRV2E 00000000 NRV2E
|
||||
00000000 l d CFLUSH 00000000 CFLUSH
|
||||
00000000 l d LZMA 00000000 LZMA
|
||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||
@@ -31,7 +35,6 @@ SYMBOL TABLE:
|
||||
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
||||
00000000 *UND* 00000000 filter_length
|
||||
00000000 *UND* 00000000 filter_cto
|
||||
00000000 *UND* 00000000 eof_nrv
|
||||
|
||||
RELOCATION RECORDS FOR [LINUX000]:
|
||||
OFFSET TYPE VALUE
|
||||
@@ -45,15 +48,15 @@ OFFSET TYPE VALUE
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2B]:
|
||||
OFFSET TYPE VALUE
|
||||
00000090 R_PPC_REL14 eof_nrv
|
||||
00000090 R_PPC_REL14 NRV_TAIL
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2D]:
|
||||
OFFSET TYPE VALUE
|
||||
000000b4 R_PPC_REL14 eof_nrv
|
||||
000000b4 R_PPC_REL14 NRV_TAIL
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2E]:
|
||||
OFFSET TYPE VALUE
|
||||
000000b4 R_PPC_REL14 eof_nrv
|
||||
000000b4 R_PPC_REL14 NRV_TAIL
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||
OFFSET TYPE VALUE
|
||||
|
||||
Reference in New Issue
Block a user