add aip/sg_ini partial decompilations
This commit is contained in:
parent
7e535e8038
commit
4544e6742f
28
aip.lds
Normal file
28
aip.lds
Normal file
@ -0,0 +1,28 @@
|
||||
OUTPUT_FORMAT("elf32-shl", "elf32-shl", "elf32-shl")
|
||||
|
||||
MEMORY
|
||||
{
|
||||
systemid (arx) : ORIGIN = 0x8c008000, LENGTH = 0x100
|
||||
toc (arx) : ORIGIN = 0x8c008100, LENGTH = 0x200
|
||||
sg_sec (arx) : ORIGIN = 0x8c008300, LENGTH = 0x3400
|
||||
sg_are (arx) : ORIGIN = 0x8c00b700, LENGTH = 0x100
|
||||
sg_ini (arx) : ORIGIN = 0x8c00b800, LENGTH = 0x2800
|
||||
aip (arx) : ORIGIN = 0x8c00e000, LENGTH = 0x2000
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text.aip :
|
||||
{
|
||||
KEEP(*(.text.*aip))
|
||||
. = ALIGN(8192);
|
||||
} > aip
|
||||
|
||||
/DISCARD/ :
|
||||
{
|
||||
*(.text)
|
||||
*(.data)
|
||||
*(.bss)
|
||||
*(.comment)
|
||||
}
|
||||
}
|
207
aip.s
Normal file
207
aip.s
Normal file
@ -0,0 +1,207 @@
|
||||
.section .text.aip
|
||||
.global _text_aip_start
|
||||
|
||||
_text_aip_start:
|
||||
bra label_10
|
||||
nop
|
||||
|
||||
label_4:
|
||||
.long 0xac010000
|
||||
label_8:
|
||||
.long 0x00000000
|
||||
label_c:
|
||||
.long 0xac00e100
|
||||
|
||||
label_10:
|
||||
mov.l label_1c,r0 /* ac00e020 */
|
||||
jsr @r0
|
||||
nop
|
||||
label_16:
|
||||
bra label_16
|
||||
nop
|
||||
nop
|
||||
label_1c:
|
||||
.long 0xac00e020
|
||||
|
||||
/* called from label_10 */
|
||||
label_20:
|
||||
mov.l label_40,r2 /* ac00e0dc */
|
||||
mov.l label_3c,r3 /* a0000000 */
|
||||
or r3,r2
|
||||
jsr @r2 /* jump to label_dc */
|
||||
nop
|
||||
stc sr,r0
|
||||
mov.w label_38,r1 /* ff0f */
|
||||
and r1,r0
|
||||
or #0xf0,r0 /* set IMASK ; disables interrupts */
|
||||
ldc r0,sr
|
||||
bra label_44
|
||||
nop
|
||||
label_38:
|
||||
.word 0xff0f
|
||||
label_3a:
|
||||
.word 0x0000
|
||||
label_3c:
|
||||
.long 0xa0000000
|
||||
label_40:
|
||||
.long 0xac00e0dc
|
||||
|
||||
label_44:
|
||||
mov.l label_4c,r0 /* ac00f400 → new stack address */
|
||||
mov r0,r15
|
||||
bra label_50
|
||||
nop
|
||||
|
||||
label_4c:
|
||||
.long 0xac00f400
|
||||
|
||||
label_50:
|
||||
mov.l label_70,r2 /* ac00e0d0 */
|
||||
mov.l label_6c,r3 /* a0000000 */
|
||||
or r3,r2
|
||||
jsr @r2 /* jump to label_d0 */
|
||||
nop
|
||||
label_5a:
|
||||
mov.l label_78,r3 /* ac00e13c */
|
||||
mov.l label_74,r4 /* ac00fc00 */
|
||||
mov.w label_68,r6 /* 400 */
|
||||
jsr @r3 /* jump to label_13c */
|
||||
mov #0,r5
|
||||
bra label_7c
|
||||
nop
|
||||
|
||||
label_68:
|
||||
.word 0x0400
|
||||
label_6a:
|
||||
.word 0x0000
|
||||
label_6c:
|
||||
.long 0xa0000000
|
||||
label_70:
|
||||
.long 0xac00e0d0
|
||||
label_74:
|
||||
.long 0xac00fc00
|
||||
label_78:
|
||||
.long 0xac00e13c
|
||||
|
||||
label_7c:
|
||||
mov.l label_c4,r0 /* 700000f0 */
|
||||
ldc r0,sr
|
||||
sub r0,r0
|
||||
mov r0,r1
|
||||
mov r0,r2
|
||||
mov r0,r3
|
||||
mov r0,r4
|
||||
mov r0,r5
|
||||
mov r0,r6
|
||||
mov r0,r7
|
||||
mov r0,r8
|
||||
mov r0,r9
|
||||
mov r0,r10
|
||||
mov r0,r11
|
||||
mov r0,r12
|
||||
mov r0,r13
|
||||
mov r0,r14
|
||||
mov.l label_bc,r0 /* 8c00f400 */
|
||||
mov r0,r15
|
||||
mov.l label_c8,r0 /* 8c00f400 */
|
||||
ldc r0,vbr
|
||||
mov.l label_c0,r0 /* 40000 */
|
||||
lds r0,fpscr
|
||||
mov.l label_b8,r0 /* ac00e004 */
|
||||
mov.l @r0,r0 /* ac010000 */
|
||||
jsr @r0
|
||||
mov r1,r0
|
||||
label_b2:
|
||||
bra label_b2
|
||||
nop
|
||||
nop
|
||||
|
||||
label_b8:
|
||||
.long 0xac00e004
|
||||
label_bc:
|
||||
.long 0x8c00f400
|
||||
label_c0:
|
||||
.long 0x00040000
|
||||
label_c4:
|
||||
.long 0x700000f0
|
||||
label_c8:
|
||||
.long 0x8c00f400
|
||||
|
||||
/* unreachable label_cc ? */
|
||||
label_cc:
|
||||
bra label_cc
|
||||
nop
|
||||
/* called from label_50 */
|
||||
label_d0:
|
||||
mov.l label_d8,r2 /* ff00001c (CCN.CCR) */
|
||||
mov #0,r3 /* disable all caches */
|
||||
rts
|
||||
mov.l r3,@r2
|
||||
|
||||
label_d8:
|
||||
.long 0xff00001c
|
||||
|
||||
/* called from label_20 */
|
||||
label_dc:
|
||||
mov.l label_f4,r0 /* ff00001c (CCN.CCR) */
|
||||
mov.l @r0,r1
|
||||
mov.l label_f8,r2 /* 89af → mask off undefined bits */
|
||||
and r2,r1
|
||||
mov.w label_f0,r2 /* 800 → ICI , instruction cache invalidation */
|
||||
or r2,r1
|
||||
mov.l r1,@r0
|
||||
bra label_fc
|
||||
nop
|
||||
nop
|
||||
|
||||
label_f0:
|
||||
.word 0x0800
|
||||
nop /* unreachable nop? */
|
||||
label_f4:
|
||||
.long 0xff00001c
|
||||
label_f8:
|
||||
.word 0x89af
|
||||
label_fa:
|
||||
.word 0x0000
|
||||
|
||||
label_fc:
|
||||
rts
|
||||
nop
|
||||
|
||||
mov.l label_108,r0 /* 8c0000e0 */
|
||||
mov.l @r0,r1
|
||||
jmp @r1
|
||||
mov #1,r4
|
||||
label_108:
|
||||
.long 0x8c0000e0
|
||||
label_10c:
|
||||
.long 0xac00e110
|
||||
|
||||
.ascii "\nAIP Ver 1.07 Build:Apr 27 1999 14:00:30\n"
|
||||
.byte 0x00
|
||||
.byte 0x00
|
||||
.byte 0x00
|
||||
/* called from label_5a */
|
||||
/*
|
||||
memset(char * dest, char value, unsigned int length)
|
||||
dest : r4
|
||||
value : r5
|
||||
length : r6
|
||||
[return]: original value of `dest` as r0
|
||||
*/
|
||||
label_13c:
|
||||
mov #0,r7
|
||||
mov r7,r3
|
||||
cmp/hs r6,r3 /* r3 ≥ r6 (unsigned) */
|
||||
/* 0 ≥ 0x400 */
|
||||
bt/s label_150
|
||||
mov r4,r0 /* ac00fc00 → r0 */
|
||||
label_146:
|
||||
add #1,r7
|
||||
mov.b r5,@r0 /* 0 → @(ac00fc00) */
|
||||
cmp/hs r6,r7 /* r7 ≥ 0x400 */
|
||||
bf/s label_146
|
||||
add #1,r0
|
||||
label_150:
|
||||
rts
|
||||
mov r4,r0
|
28
sg_ini.lds
Normal file
28
sg_ini.lds
Normal file
@ -0,0 +1,28 @@
|
||||
OUTPUT_FORMAT("elf32-shl", "elf32-shl", "elf32-shl")
|
||||
|
||||
MEMORY
|
||||
{
|
||||
systemid (arx) : ORIGIN = 0x8c008000, LENGTH = 0x100
|
||||
toc (arx) : ORIGIN = 0x8c008100, LENGTH = 0x200
|
||||
sg_sec (arx) : ORIGIN = 0x8c008300, LENGTH = 0x3400
|
||||
sg_are (arx) : ORIGIN = 0x8c00b700, LENGTH = 0x100
|
||||
sg_ini (arx) : ORIGIN = 0x8c00b800, LENGTH = 0x2800
|
||||
aip (arx) : ORIGIN = 0x8c00e000, LENGTH = 0x2000
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text.sg_ini :
|
||||
{
|
||||
KEEP(*(.text.*sg_ini))
|
||||
. = 0x2800;
|
||||
} > sg_ini
|
||||
|
||||
/DISCARD/ :
|
||||
{
|
||||
*(.text)
|
||||
*(.data)
|
||||
*(.bss)
|
||||
*(.comment)
|
||||
}
|
||||
}
|
576
sg_ini.s
Normal file
576
sg_ini.s
Normal file
@ -0,0 +1,576 @@
|
||||
.section .text.sg_ini
|
||||
.global _text_sg_ini_start
|
||||
|
||||
_text_sg_ini_start:
|
||||
mov.l label_18,r0 /* 8d000000 → beginning of system ram, image area */
|
||||
mov r0,r15
|
||||
nop
|
||||
nop
|
||||
mov.l label_1c,r0 /* 8c00d820 → label_2020 */
|
||||
jmp @r0
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
label_18:
|
||||
.long 0x8d000000
|
||||
label_1c:
|
||||
.long 0x8c00d820
|
||||
label_20:
|
||||
.fill 0x2000,1,0x00
|
||||
|
||||
label_2020:
|
||||
mov.l label_204c,r0 /* 8c00d940 → label_2140 */
|
||||
mov #0,r1
|
||||
jsr @r0
|
||||
nop
|
||||
mov.l label_2050,r0 /* 8c00d900 → label_2100 */
|
||||
jsr @r0
|
||||
nop
|
||||
mov.l label_2054,r0 /* 8c00d888 → label_2088 */
|
||||
jsr @r0
|
||||
nop
|
||||
mov.l label_2058,r0 /* 8c00dae0 → label_22e0 */
|
||||
jsr @r0
|
||||
nop
|
||||
mov.l label_205c,r0 /* 8c00db40 → label_2340 */
|
||||
jsr @r0
|
||||
nop
|
||||
nop
|
||||
mov.l label_2060,r0 /* 8c00d86c → label_206c */
|
||||
jmp @r0
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
label_204c:
|
||||
.long 0x8c00d940
|
||||
label_2050:
|
||||
.long 0x8c00d900
|
||||
label_2054:
|
||||
.long 0x8c00d888
|
||||
label_2058:
|
||||
.long 0x8c00dae0
|
||||
label_205c:
|
||||
.long 0x8c00db40
|
||||
label_2060:
|
||||
.long 0x8c00d86c
|
||||
|
||||
.ascii "INI90405"
|
||||
|
||||
label_206c:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
mov.l label_2084,r0 /* 8c00e000 */
|
||||
jmp @r0
|
||||
nop
|
||||
label_2084:
|
||||
.long 0x8c00e000 /* aip */
|
||||
|
||||
label_2088:
|
||||
sts.l pr,@-r15
|
||||
mov.l label_20a4,r0 /* 8c000048 */
|
||||
mov.l @r0,r0
|
||||
cmp/eq #6,r0
|
||||
bt label_209e
|
||||
cmp/eq #7,r0
|
||||
bt label_209e
|
||||
cmp/eq #9,r0
|
||||
bt label_209e
|
||||
rts
|
||||
lds.l @r15+,pr
|
||||
label_209e:
|
||||
mov.l label_20a8,r1 /* 8c00d8ac → label_20ac */
|
||||
jmp @r1
|
||||
nop
|
||||
label_20a4:
|
||||
.long 0x8c000048
|
||||
label_20a8:
|
||||
.long 0x8c00d8ac
|
||||
|
||||
label_20ac:
|
||||
mov.l label_20b4,r0 /* 8c0000e0 */
|
||||
mov.l @r0,r0
|
||||
jmp @r0
|
||||
mov #1,r4
|
||||
label_20b4:
|
||||
.long 0x8c0000e0
|
||||
|
||||
label_20b8:
|
||||
exts.b r4,r0
|
||||
mov #57,r1
|
||||
cmp/gt r1,r0
|
||||
bf label_20c2
|
||||
add #-7,r0
|
||||
label_20c2:
|
||||
rts
|
||||
add #-48,r0
|
||||
label_20c6:
|
||||
xor r2,r2
|
||||
sts.l pr,@-r15
|
||||
mov.b @r4,r4
|
||||
mov r4,r0
|
||||
cmp/eq #32,r0
|
||||
bt label_20e0
|
||||
bsr label_20b8
|
||||
nop
|
||||
mov #1,r1
|
||||
tst r1,r0
|
||||
bt.s label_20e0
|
||||
xor r2,r2
|
||||
mov #1,r2
|
||||
label_20e0:
|
||||
lds.l @r15+,pr
|
||||
rts
|
||||
mov r2,r0
|
||||
.word 0xffff
|
||||
label_20e8:
|
||||
mov.l label_20fc,r1 ! 8c008024
|
||||
mov.l label_20f8,r3 ! 4c494d20
|
||||
mov.l @r1,r2
|
||||
cmp/eq r3,r2
|
||||
movt r0
|
||||
rts
|
||||
nop
|
||||
nop
|
||||
label_20f8:
|
||||
.long 0x4c494d20
|
||||
label_20fc:
|
||||
.long 0x8c008024
|
||||
label_2100:
|
||||
sts.l pr,@-r15
|
||||
mov.l label_212c,r3 /* 8c00d8c6 → label_20c6 */
|
||||
mov.l label_213c,r4 ! 8c008000
|
||||
jsr @r3
|
||||
add #62,r4
|
||||
tst r0,r0
|
||||
bf label_2126
|
||||
mov.l label_2130,r3 /* 8c00d8e8 → label_20e8 */
|
||||
jsr @r3
|
||||
nop
|
||||
tst r0,r0
|
||||
bf label_2126
|
||||
mov.l label_2138,r3 ! 8c010000
|
||||
mov.w @r3,r0
|
||||
cmp/eq #34,r0
|
||||
bf label_2126
|
||||
mov.l label_2134,r1 /* 8c00d8ac → label_20ac */
|
||||
jmp @r1
|
||||
lds.l @r15+,pr
|
||||
label_2126:
|
||||
lds.l @r15+,pr
|
||||
rts
|
||||
nop
|
||||
label_212c:
|
||||
.long 0x8c00d8c6
|
||||
label_2130:
|
||||
.long 0x8c00d8e8
|
||||
label_2134:
|
||||
.long 0x8c00d8ac
|
||||
label_2138:
|
||||
.long 0x8c010000
|
||||
label_213c:
|
||||
.long 0x8c008000
|
||||
|
||||
label_2140:
|
||||
mov.l r2,@-r15
|
||||
mov.l r3,@-r15
|
||||
mov.l r4,@-r15
|
||||
mov.l r5,@-r15
|
||||
sts.l pr,@-r15
|
||||
mova label_2284,r0
|
||||
mov.w @(r0,r1),r1
|
||||
add r1,r0
|
||||
label_2150:
|
||||
add #3,r0
|
||||
shlr2 r0
|
||||
shll2 r0
|
||||
mov.w @r0+,r4
|
||||
tst r4,r4
|
||||
bf label_2172
|
||||
mov.w @r0+,r4
|
||||
tst r4,r4
|
||||
bf.s label_2150
|
||||
add r4,r0
|
||||
lds.l @r15+,pr
|
||||
mov.l @r15+,r5
|
||||
mov.l @r15+,r4
|
||||
mov.l @r15+,r3
|
||||
mov.l @r15+,r2
|
||||
rts
|
||||
sett
|
||||
label_2172:
|
||||
mov.w @r0+,r3
|
||||
mov.l label_2278,r1 ! ffff8000
|
||||
and r3,r1
|
||||
tst r1,r1
|
||||
bt label_2180
|
||||
xor r1,r3
|
||||
bf label_2182
|
||||
label_2180:
|
||||
mov.l @r0+,r2
|
||||
label_2182:
|
||||
mov.l label_227c,r1 ! 6000
|
||||
and r3,r1
|
||||
tst r1,r1
|
||||
bt label_21a0
|
||||
xor r1,r3
|
||||
add #12,r3
|
||||
mov.l @r0+,r1
|
||||
mov r0,r5
|
||||
add r1,r0
|
||||
label_2194:
|
||||
bsrf r3
|
||||
dt r4
|
||||
bf.s label_2194
|
||||
add #4,r2
|
||||
bra label_2150
|
||||
mov r5,r0
|
||||
label_21a0:
|
||||
bsrf r3
|
||||
dt r4
|
||||
bf.s label_21a0
|
||||
add #4,r2
|
||||
bt label_2150
|
||||
mov #0,r1
|
||||
rts
|
||||
mov.l r1,@r2
|
||||
mov #0,r1
|
||||
rts
|
||||
mov.w r1,@r2
|
||||
mov #0,r1
|
||||
rts
|
||||
mov.b r1,@r2
|
||||
mov.l @r0+,r1
|
||||
rts
|
||||
mov.l r1,@r2
|
||||
mov.w @r0+,r1
|
||||
rts
|
||||
mov.l r1,@r2
|
||||
mov.l @r0+,r1
|
||||
rts
|
||||
mov.b r1,@r2
|
||||
mov #-1,r1
|
||||
rts
|
||||
mov.l r1,@r2
|
||||
mov.w @r0+,r1
|
||||
rts
|
||||
mov.w r1,@r2
|
||||
mov.l @r0+,r1
|
||||
rts
|
||||
mov.w r1,@r2
|
||||
nop
|
||||
rts
|
||||
mov.l @r2,r1
|
||||
bra label_2228
|
||||
nop
|
||||
nop
|
||||
xor r1,r1
|
||||
sts.l pr,@-r15
|
||||
mov.l r3,@-r15
|
||||
label_21f2:
|
||||
mov #8,r3
|
||||
label_21f4:
|
||||
mov.l r1,@r2
|
||||
dt r3
|
||||
bf.s label_21f4
|
||||
add #4,r2
|
||||
bsr label_2252
|
||||
nop
|
||||
dt r4
|
||||
bf label_21f2
|
||||
add #1,r4
|
||||
add #-4,r2
|
||||
mov.l @r15+,r3
|
||||
lds.l @r15+,pr
|
||||
rts
|
||||
sett
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
label_2228:
|
||||
sts.l pr,@-r15
|
||||
mov.l r0,@-r15
|
||||
mov.l r1,@-r15
|
||||
mov.l r2,@-r15
|
||||
mov.l r3,@-r15
|
||||
mov.l r4,@-r15
|
||||
mov.l r5,@-r15
|
||||
mov.l r6,@-r15
|
||||
jsr @r2
|
||||
mov.l r7,@-r15
|
||||
mov.l @r15+,r7
|
||||
mov.l @r15+,r6
|
||||
mov.l @r15+,r5
|
||||
mov.l @r15+,r4
|
||||
mov.l @r15+,r3
|
||||
mov.l @r15+,r2
|
||||
mov.l @r15+,r1
|
||||
mov.l @r15+,r0
|
||||
lds.l @r15+,pr
|
||||
rts
|
||||
sett
|
||||
label_2252:
|
||||
mov.l r0,@-r15
|
||||
mov.l r1,@-r15
|
||||
mov.l r2,@-r15
|
||||
mov.l label_2270,r1 ! a05f688c
|
||||
mov.l label_2274,r2 ! 1800
|
||||
label_225c:
|
||||
dt r2
|
||||
bt label_2266
|
||||
mov.l @r1,r0
|
||||
tst #1,r0
|
||||
bf label_225c
|
||||
label_2266:
|
||||
mov.l @r15+,r2
|
||||
mov.l @r15+,r1
|
||||
rts
|
||||
mov.l @r15+,r0
|
||||
nop
|
||||
label_2270:
|
||||
.long 0xa05f688c
|
||||
label_2274:
|
||||
.long 0x00001800
|
||||
|
||||
label_2278:
|
||||
.long 0xffff8000
|
||||
label_227c:
|
||||
.long 0x00006000
|
||||
|
||||
/* unreachable? */
|
||||
.word 0x8040
|
||||
.word 0xa05f
|
||||
label_2284:
|
||||
.word 0x0002
|
||||
.word 0x0009
|
||||
.word 0x0002
|
||||
.word 0x0006
|
||||
.word 0x0038
|
||||
.word 0xff00
|
||||
.word 0x0001
|
||||
.word 0x0018
|
||||
.word 0x002c
|
||||
.word 0xffa0
|
||||
.word 0x12c0
|
||||
.word 0x0000
|
||||
.word 0x0004
|
||||
.word 0x000c
|
||||
.word 0x0000
|
||||
.word 0xffd0
|
||||
.word 0x0001
|
||||
.word 0x0018
|
||||
.word 0x0024
|
||||
.word 0xff00
|
||||
.word 0x0020
|
||||
.word 0x0000
|
||||
.word 0x0002
|
||||
.word 0x001e
|
||||
.word 0x7490
|
||||
.word 0xa05f
|
||||
.word 0x0222
|
||||
.word 0x0222
|
||||
.word 0x0002
|
||||
.word 0x001e
|
||||
.word 0x74a0
|
||||
.word 0xa05f
|
||||
.word 0x2001
|
||||
.word 0x2001
|
||||
.word 0x0002
|
||||
.word 0x001e
|
||||
.word 0x7890
|
||||
.word 0xa05f
|
||||
.word 0x001b
|
||||
.word 0x0271
|
||||
.word 0x0000
|
||||
.word 0x0000
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
label_22e0:
|
||||
sts.l pr,@-r15
|
||||
mov.l label_2330,r4 ! 8c008000
|
||||
mov.l label_2328,r3 ! 8c00d8c6
|
||||
jsr @r3
|
||||
add #62,r4
|
||||
tst r0,r0
|
||||
bt label_2320
|
||||
mov.l label_2334,r1 ! 8ce01010
|
||||
mov.l @r1,r0
|
||||
tst r0,r0
|
||||
bt label_231a
|
||||
mov.l label_233c,r2 ! a8
|
||||
cmp/hi r2,r0
|
||||
bt label_231a
|
||||
dt r0
|
||||
mov r0,r2
|
||||
shll r2
|
||||
add r0,r2
|
||||
shll2 r2
|
||||
add r2,r1
|
||||
add #12,r1
|
||||
mov.l @r1,r2
|
||||
add #4,r1
|
||||
mov.l @r1,r3
|
||||
add r3,r2
|
||||
mov.l label_2338,r0 ! a05f74f4
|
||||
mov.l @r0,r3
|
||||
cmp/eq r3,r2
|
||||
bt label_2320
|
||||
label_231a:
|
||||
mov.l label_232c,r1 ! 8c00d8ac
|
||||
jmp @r1
|
||||
lds.l @r15+,pr
|
||||
label_2320:
|
||||
lds.l @r15+,pr
|
||||
rts
|
||||
nop
|
||||
nop
|
||||
label_2328:
|
||||
.long 0x8c00d8c6
|
||||
label_232c:
|
||||
.long 0x8c00d8ac
|
||||
label_2330:
|
||||
.long 0x8c008000
|
||||
label_2334:
|
||||
.long 0x8ce01010
|
||||
label_2338:
|
||||
.long 0xa05f74f4
|
||||
label_233c:
|
||||
.long 0x000000a8
|
||||
|
||||
label_2340:
|
||||
mov.l r14,@-r15
|
||||
mov #-1,r14
|
||||
sts.l pr,@-r15
|
||||
add #-20,r15
|
||||
mov r15,r3
|
||||
mov r15,r5
|
||||
mov.l r3,@(16,r15)
|
||||
add #16,r5
|
||||
bsr label_23e0
|
||||
mov #30,r4
|
||||
mov r0,r4
|
||||
tst r4,r4
|
||||
bt label_2384
|
||||
bsr label_2396
|
||||
nop
|
||||
tst r0,r0
|
||||
bf label_2384
|
||||
mov.l @(4,r15),r4
|
||||
mov.l label_23d4,r3 ! ffff
|
||||
cmp/hi r3,r4
|
||||
bt label_2384
|
||||
mov r15,r5
|
||||
mov.w label_23d0,r1 ! e10
|
||||
mov.l r1,@(4,r15)
|
||||
bsr label_23e0
|
||||
mov #31,r4
|
||||
mov r0,r4
|
||||
tst r4,r4
|
||||
bt label_2384
|
||||
bsr label_2396
|
||||
nop
|
||||
tst r0,r0
|
||||
bf label_2384
|
||||
mov #0,r14
|
||||
label_2384:
|
||||
tst r14,r14
|
||||
bt label_238e
|
||||
mov.l label_23d8,r2 ! 8c00d8ac
|
||||
jsr @r2
|
||||
nop
|
||||
label_238e:
|
||||
add #20,r15
|
||||
lds.l @r15+,pr
|
||||
rts
|
||||
mov.l @r15+,r14
|
||||
label_2396:
|
||||
mov.l r14,@-r15
|
||||
mov.l r13,@-r15
|
||||
sts.l pr,@-r15
|
||||
mov #0,r14
|
||||
add #-16,r15
|
||||
mov r4,r13
|
||||
label_23a2:
|
||||
bsr label_23f8
|
||||
nop
|
||||
mov r15,r5
|
||||
bsr label_23ec
|
||||
mov r13,r4
|
||||
cmp/eq #-1,r0
|
||||
bt label_23c4
|
||||
cmp/eq #1,r0
|
||||
bt label_23bc
|
||||
cmp/eq #2,r0
|
||||
bf label_23c4
|
||||
bra label_23c6
|
||||
mov #0,r0
|
||||
label_23bc:
|
||||
mov.l label_23dc,r4 ! 10000
|
||||
add #1,r14
|
||||
cmp/ge r4,r14
|
||||
bf label_23a2
|
||||
label_23c4:
|
||||
mov #-1,r0
|
||||
label_23c6:
|
||||
add #16,r15
|
||||
lds.l @r15+,pr
|
||||
mov.l @r15+,r13
|
||||
rts
|
||||
mov.l @r15+,r14
|
||||
label_23d0:
|
||||
.word 0x0e10
|
||||
.word 0xffff
|
||||
label_23d4:
|
||||
.long 0x0000ffff
|
||||
label_23d8:
|
||||
.long 0x8c00d8ac
|
||||
label_23dc:
|
||||
.long 0x00010000
|
||||
|
||||
label_23e0:
|
||||
mov #0,r6
|
||||
mov #0,r7
|
||||
mov.l label_2404,r0 ! 8c0000bc
|
||||
mov.l @r0,r0
|
||||
label_23e8:
|
||||
jmp @r0
|
||||
nop
|
||||
label_23ec:
|
||||
mov #0,r6
|
||||
mov #1,r7
|
||||
mov.l label_2404,r0 ! 8c0000bc
|
||||
mov.l @r0,r0
|
||||
jmp @r0
|
||||
nop
|
||||
label_23f8:
|
||||
mov #0,r6
|
||||
mov #2,r7
|
||||
mov.l label_2404,r0 ! 8c0000bc
|
||||
mov.l @r0,r0
|
||||
jmp @r0
|
||||
nop
|
||||
label_2404:
|
||||
.long 0x8c0000bc
|
15
test_compile_ip_fragments.sh
Normal file
15
test_compile_ip_fragments.sh
Normal file
@ -0,0 +1,15 @@
|
||||
set -eux
|
||||
|
||||
sh4-none-elf-as -g --isa=sh4 --little sg_ini.s -o sg_ini.o
|
||||
sh4-none-elf-ld -T sg_ini.lds sg_ini.o -o sg_ini.elf
|
||||
sh4-none-elf-objcopy -O binary sg_ini.elf sg_ini.bin
|
||||
xxd sg_ini.bin sg_ini.bin.txt
|
||||
sh4-none-elf-objcopy -O binary sg/sg_ini.obj sg/sg_ini.bin
|
||||
xxd sg/sg_ini.bin sg/sg_ini.bin.txt
|
||||
|
||||
sh4-none-elf-as -g --isa=sh4 --little aip.s -o aip.o
|
||||
sh4-none-elf-ld -T aip.lds aip.o -o aip.elf
|
||||
sh4-none-elf-objcopy -O binary aip.elf aip.bin
|
||||
xxd aip.bin aip.bin.txt
|
||||
sh4-none-elf-objcopy -O binary sg/aip.obj sg/aip.bin
|
||||
xxd sg/aip.bin sg/aip.bin.txt
|
Loading…
x
Reference in New Issue
Block a user