start code build process

pd
openpowerwtf 2 years ago
parent f6a3d5bbf2
commit 373adc7962

@ -0,0 +1,982 @@
48000400
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000CE0
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000A00
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
480000BC
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7CBE6AA6
2C250000
408200EC
3C608C00
3800001F
38400015
38800000
3900025F
7C7CFBA6
7C4011A6
7C8009A6
7D0001A6
4C00012C
81400A08
3800001E
3C801000
3900025F
65081000
7D4011A6
7C8009A6
7D0001A6
4C00012C
3C608800
3800000F
3840003F
38800000
3900025F
7C7CFBA6
7C4011A6
7C8009A6
7D0001A6
4C00012C
3800000D
3C801000
3900025F
65081000
7D4011A6
7C8009A6
7D0001A6
4C00012C
81400A00
7D400124
4C00012C
3C200300
7C334BA6
38200000
7C3603A6
7C3D43A6
7C3C43A6
3C40FE00
7C5053A6
7C56FAA6
70420200
7C56FBA6
7C3053A6
7C3453A6
80200A04
7021000F
7C366BA6
4C00012C
48000014
81400A00
7D400124
4C00012C
48000004
80200A04
74218000
40820008
480006F1
80200A04
3C407FFF
6042FFFF
7C211038
90200A04
7CBE6AA6
78A53664
38A50A80
81650000
E9850008
E9A50010
80200A04
70210010
4182001C
80400A0C
3C204400
60210012
F8220000
7C2803A6
48000014
48000005
7C2802A6
38210030
7C2803A6
7D7B03A6
7DBA03A6
7D816378
7C7E6AA6
7C4C42A6
F8450030
4C000064
60000000
60000000
60000000
44000022
7CBE6AA6
78A53664
38A50A80
7C4C42A6
F8450038
2C230000
41820148
48000044
48000040
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
48000000
480000FC
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
48000000
480000FC
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
480001DC
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
8002B000
80000001
0000003F
10000000
48000070
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
8002F000
00000000
00000000
100FFFFC
00000000
10000000
00000000
10030000
00000000
10031FFF
00000000
10030000
00000000
00000000
00000000
00000000
8002F000
00000000
00000000
100EFFFC
00000000
10000000
00000000
10032000
00000000
10033FFF
00000000
10032000
00000000
00000000
00000000
00000000
8002F000
00000000
00000000
00000000
00000000
10000000
00000000
10034000
00000000
10035FFF
00000000
10034000
00000000
00000000
00000000
00000000
8002F000
00000000
00000000
00000000
00000000
10000000
00000000
10036000
00000000
10037FFF
00000000
10036000
00000000
00000000
00000000
00000000
48000080
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7CBE6AA6
78A53664
38A50A80
38C50018
E8E60000
38C50020
E9060000
7D074050
39080001
7D0903A6
38C00000
7CE83B78
98C80000
39080001
4200FFF8
39050028
F8E80000
4E800020
480000B8
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
80000A00
7C000124
4C00012C
4BFFF894
480000F0
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7C0802A6
2C230001
41820038
2C230010
41820070
2C230100
418200A8
2C230107
41820120
3860FFFF
7C0803A6
4C000064
60000000
60000000
60000000
60000000
7C7E6AA6
4C000064
48000038
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7C6C42A6
4C000064
48000038
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7CBE6AA6
78A53664
38A50A80
38C50028
E8E60000
98870000
38E70001
39050020
E9080000
7C274000
38600000
40810010
39050018
E8E80000
3860FFFF
F8E60000
4C000064
4800003C
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7C6902A6
4BFFFCBD
7C6903A6
7C0803A6
38600000
4C000064

@ -0,0 +1,30 @@
9421FFE0
90610018
81210018
9121000C
39200000
91210008
48000024
8141000C
81210008
7D2A4A14
39290001
9121000C
81210008
39290001
91210008
81210008
28090009
4081FFD8
81210018
39290037
8141000C
7C0A4800
4082000C
39200000
4800000C
8121000C
3D290800
7D234B78
38210020
4E800020

@ -0,0 +1,5 @@
# Kernel updates/build process

* test1 - minimal updates to kernel; add linker script and build kernel and test separately
* passed coco sim

@ -0,0 +1,633 @@
# © IBM Corp. 2022
# Licensed under and subject to the terms of the CC-BY 4.0
# license (https://creativecommons.org/licenses/by/4.0/legalcode).
# Additional rights, including the right to physically implement a softcore
# that is compliant with the required sections of the Power ISA
# Specification, will be available at no cost via the OpenPOWER Foundation.
# This README will be updated with additional information when OpenPOWER's
# license is available.

# start conversion to simple boot which jumps to bios
# this version will work similarly to original fpga test version
# the original version did not run from rom; eventually will assume rom and do r/w data copy/init
# the rom and test are built into separate memory loads or a single one with addr/data format

# boot kernel
# set up translations
# set up timer facilities
# set up threads
# call user code
# process user rc

# todo:
# 1. skip_printf_init flag should be threaded

.include "defines.s"

# constants from linker script, or defsym
.ifndef STACKSIZE
.set STACKSIZE,_stack_size
.endif

.ifndef STACK0
.set STACK0,_stack_0
.endif

.ifndef STACK1
.set STACK1,_stack_1
.endif

.set STACK2, 0
.set STACK3, 0

.ifndef TEST
.set TEST,_test_start
.endif

.section .text

.global _start
_start:

int_000:
b boot_start

# critical input
.align 5
int_020:
b .

# debug
.align 5
int_040:
b .

# dsi
.align 5
int_060:
b .

# isi
.align 5
int_080:
b .

# external
.align 5
int_0A0:
b .

# alignment
.align 5
int_0C0:
b .

# program
.align 5
int_0E0:
b .

# fp unavailable
.align 5
int_100:
b .

# sc
.align 5
int_120:
b int_120_handler

# apu unavailable
.align 5
int_140:
b .

# decrementer
.align 5
int_160:
b .

# fit
.align 5
int_180:
b .

# watchdog
.align 5
int_1A0:
b .

# dtlb
.align 5
int_1C0:
b .

# itlb
.align 5
int_1E0:
b .

# vector unavailable
.align 5
int_200:
b .

#
.align 5
int_220:
b .

#
.align 5
int_240:
b .

#
.align 5
int_260:
b .

# doorbell
.align 5
int_280:
b .

# doorbell critical
.align 5
int_2A0:
b .

# doorbell guest
.align 5
int_2C0:
b .

# doorbell guest critical
.align 5
int_2E0:
b .

# hvsc
.align 8
int_300:
b int_300_handler

# hvpriv
.align 5
int_320:
b .

# lrat
.align 5
int_340:
b .

# ------------------------------------------------------------------------------------------------------------------------------
# initial translation
# both erats:
# 00000000 1M: (boot)
# 10000000 1M: (test)

.align 8
boot_start:

mfspr r5,tir # who am i?
cmpdi r5,0x00 # skip unless T0
bne init_t123

lis r3,0x8C00 # 32=ecl 36:37=tlbsel (10=i, 11=d)
# derat 31 @00000000

li r0,0x001F # entry #31
li r2,0x0015 # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63
li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
li r8,0x025F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G

mtspr mmucr0,r3
eratwe r2,r0,2
eratwe r4,r0,1
eratwe r8,r0,0
isync

lwz r10,CONFIG+S_ERATW2(r0) # load parms for erat settings

# derat 30 @100000000

li r0,0x001E # entry #30
lis r4,0x1000 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
li r8,0x025F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G
oris r8,r8,0x1000

eratwe r10,r0,2
eratwe r4,r0,1
eratwe r8,r0,0
isync

lis r3,0x8800 # 32=ecl 36:37=tlbsel (10=i, 11=d)
# ierat 15 @00000000

li r0,0x000F # entry #15
li r2,0x003F # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63
li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
li r8,0x025F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G

mtspr mmucr0,r3
eratwe r2,r0,2
eratwe r4,r0,1
eratwe r8,r0,0
isync

# *** leave the init'd entry 14 for MT access to FFFFFFC0
# ierat 13 @10000000

li r0,0x000D # entry #13
lis r4,0x1000 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
li r8,0x025F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G
oris r8,r8,0x1000

eratwe r10,r0,2
eratwe r4,r0,1
eratwe r8,r0,0
isync

# ------------------------------------------------------------------------------------------------------------------------------
# init
#

# T0-only
# set up any core facilities, then enable the others if config'd
init_t0:

# switch to 64b

lwz r10,CONFIG+S_MSR(r0)
mtmsr r10
isync

# other init

lis r1,0x0300 # icm=gicm=1
mtspr epcr,r1

# set up timer facs

li r1,0 # clear
mtspr dec,r1
mtspr tbh,r1
mtspr tbl,r1

lis r2,0xFE00 # mask: clear enw,wis,wrs,dis,fis,udis
mtspr tsr,r2

mfspr r2,xucr0
andi. r2,r2,0x0200 # set tcs=0
mtspr xucr0,r2

mtspr tsr,r1 # clear tsr
mtspr tcr,r1 # disable all timers

# set thread configuration

lwz r1,CONFIG+S_FLAGS(r0)
andi. r1,r1,0xF
mtspr tens,r1 # 60:63 = tid 3:0 enabled
#not r1,r1
#mtspr tenc,r1 # in case T0 is marked disabled
isync

b boot_complete

# except T0
# just worry about myself

init_t123:

# switch to 64b

lwz r10,CONFIG+S_MSR(r0)
mtmsr r10
isync

b boot_complete

# ------------------------------------------------------------------------------------------------------------------------------
boot_complete:

# set up thread and hop to it

lwz r1,CONFIG+S_FLAGS(r0)
andis. r1,r1,0x8000 # 1=skip initial printf init
bne boot_complete_1
bl printf_reset # wipe buffer

boot_complete_1:

lwz r1,CONFIG+S_FLAGS(r0)
lis r2,0x7FFF # clear printf flag
ori r2,r2,0xFFFF
and r1,r1,r2
stw r1,CONFIG+S_FLAGS(r0)

mfspr r5,tir # who am i?
sldi r5,r5,6 # 64B offset
addi r5,r5,CONFIG+T_CONFIG

lwz r11,T_MSR(r5)
ld r12,T_STACK(r5)
ld r13,T_ENTRY(r5)

lwz r1,CONFIG+S_FLAGS(r0)
andi. r1,r1,FLAG_EOT_SC
beq eot_blr

eot_sc:

lwz r2,CONFIG+S_EOT_SC(r0)
lis r1,0x4400 # 'sc 1'
ori r1,r1,0022
std r1,0x0(r2)
mtlr r1 # prog will blr to sc
b process_start

eot_blr:

bl 4
mflr r1
addi r1,r1,0x30 # !!!!!!!!!!!!!!! <-- WARNING!
mtlr r1 # prog will blr to exec_complete

process_start:

mtspr srr1,r11 # msr
mtspr srr0,r13 # @entry
mr r1,r12 # @stack
mfspr r3,tir # tid - main(tid) if yall want it

mfspr r2,tb
std r2,T_TIMER_START(r5)
rfi
nop # !!!!!!!!!!!!!!! pads for lr calc
nop
nop

# ------------------------------------------------------------------------------------------------------------------------------
exec_complete:
# allow blr to here, or it will be entered by sc directly

# user blr'd here...
sc 1 # hvsc back to sup state

exec_complete_sup:
mfspr r5,tir # who am i?
sldi r5,r5,6 # 64B offset
addi r5,r5,CONFIG+T_CONFIG

mfspr r2,tb
std r2,T_TIMER_END(r5)

cmpdi r3,0 # check rc
beq pass
b fail

# ------------------------------------------------------------------------------------------------------------------------------
# dead zone
.align 8
fail:
b .

# ------------------------------------------------------------------------------------------------------------------------------
# happy ending
.align 8
pass:
b .

# ------------------------------------------------------------------------------------------------------------------------------

# dec
.align 11
int_800:
b .

# perf
.align 5
int_820:
b .

.set CONFIG,0x0A00
# ------------------------------------------------------------------------------------------------------------------------------
# config info
.align 9

.long 0x8002B000 # sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0
.long 0x80000001 # flags: skip_printf_init=0 eot_sc=27 thr_en=28:31(T3:T0)

# LE
# .long 0x000000BF # erat w2 (test) # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63
# BE
.long 0x0000003F # erat w2 (test) # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63
.long 0x10000000 # @user eot sc

# per-thread configs (64B each)
.align 7
.long 0x8002F000 # usr MSR cm=1 ce=1 ee=1 pr=1 fp=1 me=1 fe=00 de=0 is=0 ds=0
.long 0x00000000 #
.long 0x00000000 #
.long STACK0 # @stack
.long 0x00000000 #
.long TEST # @entry
.long 0
.long 0x10030000 # @print_start
.long 0
.long 0x10031FFF # @print_end
.long 0
.long 0x10030000 # print ptr
.quad 0 # start tb
.quad 0 # end tb

.long 0x8002F000 # usr MSR cm=1 ce=1 ee=1 pr=1 fp=1 me=1 fe=00 de=0 is=0 ds=0
.long 0x00000000 #
.long 0x00000000 #
.long STACK1 # @stack
.long 0x00000000 #
.long TEST # @entry
.long 0
.long 0x10032000 # @print_start
.long 0
.long 0x10033FFF # @print_end
.long 0
.long 0x10032000 # print ptr
.quad 0 # start tb
.quad 0 # end tb

.long 0x8002F000 # usr MSR cm=1 ce=1 ee=1 pr=1 fp=1 me=1 fe=00 de=0 is=0 ds=0
.long 0x00000000 # flags
.long 0x00000000 #
.long STACK2 # @stack
.long 0x00000000 #
.long TEST # @entry
.long 0
.long 0x10034000 # @print_start
.long 0
.long 0x10035FFF # @print_end
.long 0
.long 0x10034000 # print ptr
.quad 0 # start tb
.quad 0 # end tb

.long 0x8002F000 # usr MSR cm=1 ce=1 ee=1 pr=1 fp=1 me=1 fe=00 de=0 is=0 ds=0
.long 0x00000000 # flags
.long 0x00000000 #
.long STACK3 # @stack
.long 0x00000000 #
.long TEST # @entry
.long 0
.long 0x10036000 # @print_start
.long 0
.long 0x10037FFF # @print_end
.long 0
.long 0x10036000 # print ptr
.quad 0 # start tb
.quad 0 # end tb


.set S_MSR,0x00
.set S_FLAGS,0x04
.set S_ERATW2,0x08
.set S_EOT_SC,0x0C

.set T_CONFIG,0x80
.set T_MSR,0x00
.set T_FLAGS,0x04
.set T_STACK,0x08
.set T_ENTRY,0x10
.set T_TIMER_START,0x30
.set T_TIMER_END,0x38
.set T_PRINTSTART, 0x18
.set T_PRINTEND, 0x20
.set T_PRINTF, 0x28
.set FLAG_EOT_SC,0x10


# ------------------------------------------------------------------------------------------------------------------------------
# other stuff
.align 10

# clear buffer and reset pointer to start
.align 6
printf_reset:

mfspr r5,tir # who am i?
sldi r5,r5,6 # 64B offset
addi r5,r5,CONFIG+T_CONFIG

addi r6,r5,T_PRINTSTART
ld r7,0(r6) # buffer start
addi r6,r5,T_PRINTEND
ld r8,0(r6) # buffer end
sub r8,r8,r7
addi r8,r8,1 # num bytes

mtctr r8
li r6,0
mr r8,r7
printf_reset_clr:
stb r6,0(r8)
addi r8,r8,1
bdnz printf_reset_clr

addi r8,r5,T_PRINTF
std r7,0(r8) # reset ptr

blr


# hvsc
.align 8
# go to exec_complete_sup in sup mode
int_300_handler:

lwz r0,CONFIG+S_MSR(r0)
mtmsr r0
isync
b exec_complete_sup

# sc
.align 8
# r3 is id, remaining are function-specific
# not preserving r0, r3-r9 right now
#
# 0001 whoami
# 0010 tick
# 0100 putchar r4=c
# 0106 printf_mode *NI*
# 0107 printf_rst
#
int_120_handler:

mflr r0

cmpdi r3,0x0001
beq sc_whoami
cmpdi r3,0x0010
beq sc_tick
cmpdi r3,0x100
beq sc_putchar
cmpdi r3,0x107
beq sc_printf_rst

li r3,-1
mtlr r0
rfi

# thread id
.align 6
sc_whoami:
mfspr r3,tir
rfi

# tb
.align 6
sc_tick:
mfspr r3,tb
rfi

# wrap buffer; could add flag to stop when full, or reset
.align 6
sc_putchar:

mfspr r5,tir # who am i?
sldi r5,r5,6 # 64B offset
addi r5,r5,CONFIG+T_CONFIG

addi r6,r5,T_PRINTF
ld r7,0(r6) # buffer ptr
stb r4,0(r7) # store char
addi r7,r7,1

addi r8,r5,T_PRINTEND
ld r8,0(r8) # buffer end
cmpd r7,r8
li r3,0 # rc=normal
ble sc_putchar_ok
addi r8,r5,T_PRINTSTART
ld r7,0(r8) # buffer start
li r3,-1 # rc=full
sc_putchar_ok:
std r7,0(r6) # save ptr

rfi

# clear buffer and reset pointer to start
.align 6
sc_printf_rst:

mfctr r3

bl printf_reset

mtctr r3
mtlr r0
li r3,0

rfi

@ -0,0 +1,71 @@
#!/usr/bin/bash

export COMMONFLAGS="-ffreestanding -fomit-frame-pointer -Wall -fno-stack-protector"
export CFLAGS="$COMMONFLAGS -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes"

# defines

## define vars to init rom with csr's it uses...

#
#csr_base=`grep '#define CSR_BASE' generated/csr.h | cut -d ' ' -f 3 | cut -c 1-6`
#uart_base=`grep 'CSR_UART_BASE' generated/csr.h | cut -d ' ' -f 5 | cut -c 3-6`
#UART_ADDR="${csr_base}${uart_base}"
#defsyms="-defsym $UART_ADDR"
#
#uart_base=`grep 'CSR_UART_1_BASE' generated/csr.h | cut -d ' ' -f 5 | cut -c 3-6`
#if [[ "$uart_base" != "" ]] ; then
# UART_1_ADDR="${csr_base}${uart_base}"
# defsyms="$defsyms -defsym $UART_1_ADDR"
#fi
#
#uart_base=`grep 'CSR_UART_2_BASE' generated/csr.h | cut -d ' ' -f 5 | cut -c 3-6`
#if [[ "$uart_base" != "" ]] ; then
# UART_2_ADDR="${csr_base}${uart_base}"
# defsyms="$defsyms -defsym $UART_2_ADDR"
#fi
#
#leds_base=`grep 'CSR_LEDS_BASE' generated/csr.h | cut -d ' ' -f 5 | cut -c 3-6`
#if [[ "$leds_base" != "" ]] ; then
# LEDS_ADDR="${csr_base}${leds_base}"
# defsyms="$defsyms -defsym $LEDS_ADDR"
#fi
#
#echo "CSR Addresses"
#echo "Console UART: ${UART_ADDR}"
#echo " LEDS: ${LEDS_ADDR}"
#echo " UART_1: ${UART_1_ADDR}"
#echo " UART_2: ${UART_1_ADDR}"

# a2o nanokernel

echo -n "Compiling..."

echo -n "asm/boot.s "
#powerpc-linux-gnu-as -defsym UART_ADDR=$UART_ADDR -defsym LEDS_ADDR=$LEDS_ADDR -defsym UNHANDLED=1 -mbig-endian -mpower9 -I./asm asm/cmod7-boot.s -ahlnd -o crt0.o > crt0.lst
powerpc-linux-gnu-as -mbig-endian -ma2 -I. boot.s -ahlnd -o crt0.o > crt0.lst
if [ $? -ne 0 ]; then
exit
fi

echo ""
echo "Linking..."
powerpc-linux-gnu-ld -nostdlib -nodefaultlibs -T linker-kernel.ld crt0.o -o rom
if [ $? -ne 0 ]; then
exit
fi

powerpc-linux-gnu-objdump -d rom > rom.d #wtf: why not getting labels in asm code?
powerpc-linux-gnu-objdump -s rom > rom.s
powerpc-linux-gnu-objcopy -O binary rom rom.bin

# make rom.bin.hex
bin/bin2init rom.bin
mv rom.bin.hex rom.init

echo "Built rom.d, rom.s, rom.init."

romsize=`grep rom regions.ld | cut -d " " -f 8 | cut -c 3-10`

echo "Hardware ROM Size $romsize"

@ -0,0 +1,26 @@
#!/usr/bin/bash

export COMMONFLAGS="-ffreestanding -fomit-frame-pointer -Wall -fno-stack-protector"
export CFLAGS="$COMMONFLAGS -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes"

echo -n "Compiling..."

echo -n "test.c "
powerpc-linux-gnu-gcc -c -I. $CFLAGS test.c

echo ""
echo "Linking..."
powerpc-linux-gnu-ld -nostdlib -nodefaultlibs -T linker.ld test.o -o test
if [ $? -ne 0 ]; then
exit
fi

powerpc-linux-gnu-objdump -d test > test.d #wtf: why not getting labels in asm code?
powerpc-linux-gnu-objdump -s test > test.s
powerpc-linux-gnu-objcopy -O binary test test.bin

# make rom.bin.hex
bin/bin2init test.bin
mv test.bin.hex test.init

echo "Built test.d, test.s, test.init."

@ -0,0 +1,944 @@
1 # © IBM Corp. 2022
2 # Licensed under and subject to the terms of the CC-BY 4.0
3 # license (https://creativecommons.org/licenses/by/4.0/legalcode).
4 # Additional rights, including the right to physically implement a softcore
5 # that is compliant with the required sections of the Power ISA
6 # Specification, will be available at no cost via the OpenPOWER Foundation.
7 # This README will be updated with additional information when OpenPOWER's
8 # license is available.
9
10 # start conversion to simple boot which jumps to bios
11 # this version will work similarly to original fpga test version
12 # the original version did not run from rom; eventually will assume rom and do r/w data copy/init
13 # the rom and test are built into separate memory loads or a single one with addr/data format
14
15 # boot kernel
16 # set up translations
17 # set up timer facilities
18 # set up threads
19 # call user code
20 # process user rc
21
22 # todo:
23 # 1. skip_printf_init flag should be threaded
24
25 .include "defines.s"
1 # © IBM Corp. 2020
2 # Licensed under and subject to the terms of the CC-BY 4.0
3 # license (https://creativecommons.org/licenses/by/4.0/legalcode).
4 # Additional rights, including the right to physically implement a softcore
5 # that is compliant with the required sections of the Power ISA
6 # Specification, will be available at no cost via the OpenPOWER Foundation.
7 # This README will be updated with additional information when OpenPOWER's
8 # license is available.
9
10 #-----------------------------------------
11 # Defines
12 #-----------------------------------------
13
14 # Regs
15
16 .set r0, 0
17 .set r1, 1
18 .set r2, 2
19 .set r3, 3
20 .set r4, 4
21 .set r5, 5
22 .set r6, 6
23 .set r7, 7
24 .set r8, 8
25 .set r9, 9
26 .set r10,10
27 .set r11,11
28 .set r12,12
29 .set r13,13
30 .set r14,14
31 .set r15,15
32 .set r16,16
33 .set r17,17
34 .set r18,18
35 .set r19,19
36 .set r20,20
37 .set r21,21
38 .set r22,22
39 .set r23,23
40 .set r24,24
41 .set r25,25
42 .set r26,26
43 .set r27,27
44 .set r28,28
45 .set r29,29
46 .set r30,30
47 .set r31,31
48
49 .set f0, 0
50 .set f1, 1
51 .set f2, 2
52 .set f3, 3
53 .set f4, 4
54 .set f5, 5
55 .set f6, 6
56 .set f7, 7
57 .set f8, 8
58 .set f9, 9
59 .set f10,10
60 .set f11,11
61 .set f12,12
62 .set f13,13
63 .set f14,14
64 .set f15,15
65 .set f16,16
66 .set f17,17
67 .set f18,18
68 .set f19,19
69 .set f20,20
70 .set f21,21
71 .set f22,22
72 .set f23,23
73 .set f24,24
74 .set f25,25
75 .set f26,26
76 .set f27,27
77 .set f28,28
78 .set f29,29
79 .set f30,30
80 .set f31,31
81
82 .set cr0, 0
83 .set cr1, 1
84 .set cr2, 2
85 .set cr3, 3
86 .set cr4, 4
87 .set cr5, 5
88 .set cr6, 6
89 .set cr7, 7
90
91 # SPR numbers
92
93 .set srr0, 26
94 .set srr1, 27
95 .set epcr, 307
96 .set tar, 815
97
98 .set dbsr, 304
99 .set dbcr0, 308
100 .set dbcr1, 309
101 .set dbcr2, 310
102 .set dbcr3, 848
103
104 .set ivpr, 63
105
106 .set iucr0, 1011
107 .set iucr1, 883
108 .set iucr2, 884
109
110 .set iudbg0, 888
111 .set iudbg1, 889
112 .set iudbg2, 890
113 .set iulfsr, 891
114 .set iullcr, 892
115
116 .set mmucr0, 1020
117 .set mmucr1, 1021
118 .set mmucr2, 1022
119 .set mmucr3, 1023
120
121 .set tb, 268
122 .set tbl, 284
123 .set tbh, 285
124
125 .set dec, 22
126 .set udec, 550
127 .set tsr, 336
128 .set tcr, 340
129
130 .set xucr0, 1014
131 .set xucr1, 851
132 .set xucr2, 1016
133 .set xucr3, 852
134 .set xucr4, 853
135
136 .set tens, 438
137 .set tenc, 439
138 .set tensr, 437
139
140 .set pid, 48
141 .set pir, 286
142 .set pvr, 287
143 .set tir, 446
144
26
27 # constants from linker script, or defsym
28 .ifndef STACKSIZE
29 .set STACKSIZE,_stack_size
30 .endif
31
32 .ifndef STACK0
33 .set STACK0,_stack_0
34 .endif
35
36 .ifndef STACK1
37 .set STACK1,_stack_1
38 .endif
39
40 .set STACK2, 0
41 .set STACK3, 0
42
43 .ifndef TEST
44 .set TEST,_test_start
45 .endif
46
47 .section .text
48
49 .global _start
50 _start:
51
52 int_000:
53 0000 48000400 b boot_start
54
55 # critical input
56 0004 4800001C .align 5
56 60000000
56 60000000
56 60000000
56 60000000
57 int_020:
58 0020 48000000 b .
59
60 # debug
61 0024 4800001C .align 5
61 60000000
61 60000000
61 60000000
61 60000000
62 int_040:
63 0040 48000000 b .
64
65 # dsi
66 0044 4800001C .align 5
66 60000000
66 60000000
66 60000000
66 60000000
67 int_060:
68 0060 48000000 b .
69
70 # isi
71 0064 4800001C .align 5
71 60000000
71 60000000
71 60000000
71 60000000
72 int_080:
73 0080 48000000 b .
74
75 # external
76 0084 4800001C .align 5
76 60000000
76 60000000
76 60000000
76 60000000
77 int_0A0:
78 00a0 48000000 b .
79
80 # alignment
81 00a4 4800001C .align 5
81 60000000
81 60000000
81 60000000
81 60000000
82 int_0C0:
83 00c0 48000000 b .
84
85 # program
86 00c4 4800001C .align 5
86 60000000
86 60000000
86 60000000
86 60000000
87 int_0E0:
88 00e0 48000000 b .
89
90 # fp unavailable
91 00e4 4800001C .align 5
91 60000000
91 60000000
91 60000000
91 60000000
92 int_100:
93 0100 48000000 b .
94
95 # sc
96 0104 4800001C .align 5
96 60000000
96 60000000
96 60000000
96 60000000
97 int_120:
98 0120 48000CE0 b int_120_handler
99
100 # apu unavailable
101 0124 4800001C .align 5
101 60000000
101 60000000
101 60000000
101 60000000
102 int_140:
103 0140 48000000 b .
104
105 # decrementer
106 0144 4800001C .align 5
106 60000000
106 60000000
106 60000000
106 60000000
107 int_160:
108 0160 48000000 b .
109
110 # fit
111 0164 4800001C .align 5
111 60000000
111 60000000
111 60000000
111 60000000
112 int_180:
113 0180 48000000 b .
114
115 # watchdog
116 0184 4800001C .align 5
116 60000000
116 60000000
116 60000000
116 60000000
117 int_1A0:
118 01a0 48000000 b .
119
120 # dtlb
121 01a4 4800001C .align 5
121 60000000
121 60000000
121 60000000
121 60000000
122 int_1C0:
123 01c0 48000000 b .
124
125 # itlb
126 01c4 4800001C .align 5
126 60000000
126 60000000
126 60000000
126 60000000
127 int_1E0:
128 01e0 48000000 b .
129
130 # vector unavailable
131 01e4 4800001C .align 5
131 60000000
131 60000000
131 60000000
131 60000000
132 int_200:
133 0200 48000000 b .
134
135 #
136 0204 4800001C .align 5
136 60000000
136 60000000
136 60000000
136 60000000
137 int_220:
138 0220 48000000 b .
139
140 #
141 0224 4800001C .align 5
141 60000000
141 60000000
141 60000000
141 60000000
142 int_240:
143 0240 48000000 b .
144
145 #
146 0244 4800001C .align 5
146 60000000
146 60000000
146 60000000
146 60000000
147 int_260:
148 0260 48000000 b .
149
150 # doorbell
151 0264 4800001C .align 5
151 60000000
151 60000000
151 60000000
151 60000000
152 int_280:
153 0280 48000000 b .
154
155 # doorbell critical
156 0284 4800001C .align 5
156 60000000
156 60000000
156 60000000
156 60000000
157 int_2A0:
158 02a0 48000000 b .
159
160 # doorbell guest
161 02a4 4800001C .align 5
161 60000000
161 60000000
161 60000000
161 60000000
162 int_2C0:
163 02c0 48000000 b .
164
165 # doorbell guest critical
166 02c4 4800001C .align 5
166 60000000
166 60000000
166 60000000
166 60000000
167 int_2E0:
168 02e0 48000000 b .
169
170 # hvsc
171 02e4 4800001C .align 8
171 60000000
171 60000000
171 60000000
171 60000000
172 int_300:
173 0300 48000A00 b int_300_handler
174
175 # hvpriv
176 0304 4800001C .align 5
176 60000000
176 60000000
176 60000000
176 60000000
177 int_320:
178 0320 48000000 b .
179
180 # lrat
181 0324 4800001C .align 5
181 60000000
181 60000000
181 60000000
181 60000000
182 int_340:
183 0340 48000000 b .
184
185 # -------------------------------------------------------------------------------------------------
186 # initial translation
187 # both erats:
188 # 00000000 1M: (boot)
189 # 10000000 1M: (test)
190
191 0344 480000BC .align 8
191 60000000
191 60000000
191 60000000
191 60000000
192 boot_start:
193
194 0400 7CBE6AA6 mfspr r5,tir # who am i?
195 0404 2C250000 cmpdi r5,0x00 # skip unless T0
196 0408 408200EC bne init_t123
197
198 040c 3C608C00 lis r3,0x8C00 # 32=ecl 36:37=tlbsel (10=i, 11=d)
199 # derat 31 @00000000
200
201 0410 3800001F li r0,0x001F # entry #31
202 0414 38400015 li r2,0x0015 # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/
203 0418 38800000 li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
204 041c 3900025F li r8,0x025F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 s
205
206 0420 7C7CFBA6 mtspr mmucr0,r3
207 0424 7C4011A6 eratwe r2,r0,2
208 0428 7C8009A6 eratwe r4,r0,1
209 042c 7D0001A6 eratwe r8,r0,0
210 0430 4C00012C isync
211
212 0434 81400A08 lwz r10,CONFIG+S_ERATW2(r0) # load parms for erat settings
213
214 # derat 30 @100000000
215
216 0438 3800001E li r0,0x001E # entry #30
217 043c 3C801000 lis r4,0x1000 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
218 0440 3900025F li r8,0x025F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 s
219 0444 65081000 oris r8,r8,0x1000
220
221 0448 7D4011A6 eratwe r10,r0,2
222 044c 7C8009A6 eratwe r4,r0,1
223 0450 7D0001A6 eratwe r8,r0,0
224 0454 4C00012C isync
225
226 0458 3C608800 lis r3,0x8800 # 32=ecl 36:37=tlbsel (10=i, 11=d)
227 # ierat 15 @00000000
228
229 045c 3800000F li r0,0x000F # entry #15
230 0460 3840003F li r2,0x003F # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/
231 0464 38800000 li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
232 0468 3900025F li r8,0x025F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 s
233
234 046c 7C7CFBA6 mtspr mmucr0,r3
235 0470 7C4011A6 eratwe r2,r0,2
236 0474 7C8009A6 eratwe r4,r0,1
237 0478 7D0001A6 eratwe r8,r0,0
238 047c 4C00012C isync
239
240 # *** leave the init'd entry 14 for MT access to FFFFFFC0
241 # ierat 13 @10000000
242
243 0480 3800000D li r0,0x000D # entry #13
244 0484 3C801000 lis r4,0x1000 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
245 0488 3900025F li r8,0x025F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 s
246 048c 65081000 oris r8,r8,0x1000
247
248 0490 7D4011A6 eratwe r10,r0,2
249 0494 7C8009A6 eratwe r4,r0,1
250 0498 7D0001A6 eratwe r8,r0,0
251 049c 4C00012C isync
252
253 # -------------------------------------------------------------------------------------------------
254 # init
255 #
256
257 # T0-only
258 # set up any core facilities, then enable the others if config'd
259 init_t0:
260
261 # switch to 64b
262
263 04a0 81400A00 lwz r10,CONFIG+S_MSR(r0)
264 04a4 7D400124 mtmsr r10
265 04a8 4C00012C isync
266
267 # other init
268
269 04ac 3C200300 lis r1,0x0300 # icm=gicm=1
270 04b0 7C334BA6 mtspr epcr,r1
271
272 # set up timer facs
273
274 04b4 38200000 li r1,0 # clear
275 04b8 7C3603A6 mtspr dec,r1
276 04bc 7C3D43A6 mtspr tbh,r1
277 04c0 7C3C43A6 mtspr tbl,r1
278
279 04c4 3C40FE00 lis r2,0xFE00 # mask: clear enw,wis,wrs,dis,fis,udis
280 04c8 7C5053A6 mtspr tsr,r2
281
282 04cc 7C56FAA6 mfspr r2,xucr0
283 04d0 70420200 andi. r2,r2,0x0200 # set tcs=0
284 04d4 7C56FBA6 mtspr xucr0,r2
285
286 04d8 7C3053A6 mtspr tsr,r1 # clear tsr
287 04dc 7C3453A6 mtspr tcr,r1 # disable all timers
288
289 # set thread configuration
290
291 04e0 80200A04 lwz r1,CONFIG+S_FLAGS(r0)
292 04e4 7021000F andi. r1,r1,0xF
293 04e8 7C366BA6 mtspr tens,r1 # 60:63 = tid 3:0 enabled
294 #not r1,r1
295 #mtspr tenc,r1 # in case T0 is marked disabled
296 04ec 4C00012C isync
297
298 04f0 48000014 b boot_complete
299
300 # except T0
301 # just worry about myself
302
303 init_t123:
304
305 # switch to 64b
306
307 04f4 81400A00 lwz r10,CONFIG+S_MSR(r0)
308 04f8 7D400124 mtmsr r10
309 04fc 4C00012C isync
310
311 0500 48000004 b boot_complete
312
313 # -------------------------------------------------------------------------------------------------
314 boot_complete:
315
316 # set up thread and hop to it
317
318 0504 80200A04 lwz r1,CONFIG+S_FLAGS(r0)
319 0508 74218000 andis. r1,r1,0x8000 # 1=skip initial printf init
320 050c 40820008 bne boot_complete_1
321 0510 480006F1 bl printf_reset # wipe buffer
322
323 boot_complete_1:
324
325 0514 80200A04 lwz r1,CONFIG+S_FLAGS(r0)
326 0518 3C407FFF lis r2,0x7FFF # clear printf flag
327 051c 6042FFFF ori r2,r2,0xFFFF
328 0520 7C211038 and r1,r1,r2
329 0524 90200A04 stw r1,CONFIG+S_FLAGS(r0)
330
331 0528 7CBE6AA6 mfspr r5,tir # who am i?
332 052c 78A53664 sldi r5,r5,6 # 64B offset
333 0530 38A50A80 addi r5,r5,CONFIG+T_CONFIG
334
335 0534 81650000 lwz r11,T_MSR(r5)
336 0538 E9850008 ld r12,T_STACK(r5)
337 053c E9A50010 ld r13,T_ENTRY(r5)
338
339 0540 80200A04 lwz r1,CONFIG+S_FLAGS(r0)
340 0544 70210010 andi. r1,r1,FLAG_EOT_SC
341 0548 4182001C beq eot_blr
342
343 eot_sc:
344
345 054c 80400A0C lwz r2,CONFIG+S_EOT_SC(r0)
346 0550 3C204400 lis r1,0x4400 # 'sc 1'
347 0554 60210012 ori r1,r1,0022
348 0558 F8220000 std r1,0x0(r2)
349 055c 7C2803A6 mtlr r1 # prog will blr to sc
350 0560 48000014 b process_start
351
352 eot_blr:
353
354 0564 48000005 bl 4
355 0568 7C2802A6 mflr r1
356 056c 38210030 addi r1,r1,0x30 # !!!!!!!!!!!!!!! <-- WARNING!
357 0570 7C2803A6 mtlr r1 # prog will blr to exec_complete
358
359 process_start:
360
361 0574 7D7B03A6 mtspr srr1,r11 # msr
362 0578 7DBA03A6 mtspr srr0,r13 # @entry
363 057c 7D816378 mr r1,r12 # @stack
364 0580 7C7E6AA6 mfspr r3,tir # tid - main(tid) if yall want it
365
366 0584 7C4C42A6 mfspr r2,tb
367 0588 F8450030 std r2,T_TIMER_START(r5)
368 058c 4C000064 rfi
369 0590 60000000 nop # !!!!!!!!!!!!!!! pads for lr calc
370 0594 60000000 nop
371 0598 60000000 nop
372
373 # -------------------------------------------------------------------------------------------------
374 exec_complete:
375 # allow blr to here, or it will be entered by sc directly
376
377 # user blr'd here...
378 059c 44000022 sc 1 # hvsc back to sup state
379
380 exec_complete_sup:
381 05a0 7CBE6AA6 mfspr r5,tir # who am i?
382 05a4 78A53664 sldi r5,r5,6 # 64B offset
383 05a8 38A50A80 addi r5,r5,CONFIG+T_CONFIG
384
385 05ac 7C4C42A6 mfspr r2,tb
386 05b0 F8450038 std r2,T_TIMER_END(r5)
387
388 05b4 2C230000 cmpdi r3,0 # check rc
389 05b8 41820148 beq pass
390 05bc 48000044 b fail
391
392 # -------------------------------------------------------------------------------------------------
393 # dead zone
394 05c0 48000040 .align 8
394 60000000
394 60000000
394 60000000
394 60000000
395 fail:
396 0600 48000000 b .
397
398 # -------------------------------------------------------------------------------------------------
399 # happy ending
400 0604 480000FC .align 8
400 60000000
400 60000000
400 60000000
400 60000000
401 pass:
402 0700 48000000 b .
403
404 # -------------------------------------------------------------------------------------------------
405
406 # dec
407 0704 480000FC .align 11
407 60000000
407 60000000
407 60000000
407 60000000
408 int_800:
409 0800 48000000 b .
410
411 # perf
412 0804 4800001C .align 5
412 60000000
412 60000000
412 60000000
412 60000000
413 int_820:
414 0820 48000000 b .
415
416 .set CONFIG,0x0A00
417 # -------------------------------------------------------------------------------------------------
418 # config info
419 0824 480001DC .align 9
419 60000000
419 60000000
419 60000000
419 60000000
420
421 0a00 8002B000 .long 0x8002B000 # sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0
422 0a04 80000001 .long 0x80000001 # flags: skip_printf_init=0 eot_sc=27 thr_en=28:31(T3:T0)
423
424 # LE
425 # .long 0x000000BF # erat w2 (test) # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wi
426 # BE
427 0a08 0000003F .long 0x0000003F # erat w2 (test) # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wi
428 0a0c 10000000 .long 0x10000000 # @user eot sc
429
430 # per-thread configs (64B each)
431 0a10 48000070 .align 7
431 60000000
431 60000000
431 60000000
431 60000000
432 0a80 8002F000 .long 0x8002F000 # usr MSR cm=1 ce=1 ee=1 pr=1 fp=1 me=1 fe=00 de=0 is=0 ds=0
433 0a84 00000000 .long 0x00000000 #
434 0a88 00000000 .long 0x00000000 #
435 0a8c 00000000 .long STACK0 # @stack
436 0a90 00000000 .long 0x00000000 #
437 0a94 00000000 .long TEST # @entry
438 0a98 00000000 .long 0
439 0a9c 10030000 .long 0x10030000 # @print_start
440 0aa0 00000000 .long 0
441 0aa4 10031FFF .long 0x10031FFF # @print_end
442 0aa8 00000000 .long 0
443 0aac 10030000 .long 0x10030000 # print ptr
444 0ab0 00000000 .quad 0 # start tb
444 00000000
445 0ab8 00000000 .quad 0 # end tb
445 00000000
446
447 0ac0 8002F000 .long 0x8002F000 # usr MSR cm=1 ce=1 ee=1 pr=1 fp=1 me=1 fe=00 de=0 is=0 ds=0
448 0ac4 00000000 .long 0x00000000 #
449 0ac8 00000000 .long 0x00000000 #
450 0acc 00000000 .long STACK1 # @stack
451 0ad0 00000000 .long 0x00000000 #
452 0ad4 00000000 .long TEST # @entry
453 0ad8 00000000 .long 0
454 0adc 10032000 .long 0x10032000 # @print_start
455 0ae0 00000000 .long 0
456 0ae4 10033FFF .long 0x10033FFF # @print_end
457 0ae8 00000000 .long 0
458 0aec 10032000 .long 0x10032000 # print ptr
459 0af0 00000000 .quad 0 # start tb
459 00000000
460 0af8 00000000 .quad 0 # end tb
460 00000000
461
462 0b00 8002F000 .long 0x8002F000 # usr MSR cm=1 ce=1 ee=1 pr=1 fp=1 me=1 fe=00 de=0 is=0 ds=0
463 0b04 00000000 .long 0x00000000 # flags
464 0b08 00000000 .long 0x00000000 #
465 0b0c 00000000 .long STACK2 # @stack
466 0b10 00000000 .long 0x00000000 #
467 0b14 00000000 .long TEST # @entry
468 0b18 00000000 .long 0
469 0b1c 10034000 .long 0x10034000 # @print_start
470 0b20 00000000 .long 0
471 0b24 10035FFF .long 0x10035FFF # @print_end
472 0b28 00000000 .long 0
473 0b2c 10034000 .long 0x10034000 # print ptr
474 0b30 00000000 .quad 0 # start tb
474 00000000
475 0b38 00000000 .quad 0 # end tb
475 00000000
476
477 0b40 8002F000 .long 0x8002F000 # usr MSR cm=1 ce=1 ee=1 pr=1 fp=1 me=1 fe=00 de=0 is=0 ds=0
478 0b44 00000000 .long 0x00000000 # flags
479 0b48 00000000 .long 0x00000000 #
480 0b4c 00000000 .long STACK3 # @stack
481 0b50 00000000 .long 0x00000000 #
482 0b54 00000000 .long TEST # @entry
483 0b58 00000000 .long 0
484 0b5c 10036000 .long 0x10036000 # @print_start
485 0b60 00000000 .long 0
486 0b64 10037FFF .long 0x10037FFF # @print_end
487 0b68 00000000 .long 0
488 0b6c 10036000 .long 0x10036000 # print ptr
489 0b70 00000000 .quad 0 # start tb
489 00000000
490 0b78 00000000 .quad 0 # end tb
490 00000000
491
492
493 .set S_MSR,0x00
494 .set S_FLAGS,0x04
495 .set S_ERATW2,0x08
496 .set S_EOT_SC,0x0C
497
498 .set T_CONFIG,0x80
499 .set T_MSR,0x00
500 .set T_FLAGS,0x04
501 .set T_STACK,0x08
502 .set T_ENTRY,0x10
503 .set T_TIMER_START,0x30
504 .set T_TIMER_END,0x38
505 .set T_PRINTSTART, 0x18
506 .set T_PRINTEND, 0x20
507 .set T_PRINTF, 0x28
508 .set FLAG_EOT_SC,0x10
509
510
511 # -------------------------------------------------------------------------------------------------
512 # other stuff
513 0b80 48000080 .align 10
513 60000000
513 60000000
513 60000000
513 60000000
514
515 # clear buffer and reset pointer to start
516 .align 6
517 printf_reset:
518
519 0c00 7CBE6AA6 mfspr r5,tir # who am i?
520 0c04 78A53664 sldi r5,r5,6 # 64B offset
521 0c08 38A50A80 addi r5,r5,CONFIG+T_CONFIG
522
523 0c0c 38C50018 addi r6,r5,T_PRINTSTART
524 0c10 E8E60000 ld r7,0(r6) # buffer start
525 0c14 38C50020 addi r6,r5,T_PRINTEND
526 0c18 E9060000 ld r8,0(r6) # buffer end
527 0c1c 7D074050 sub r8,r8,r7
528 0c20 39080001 addi r8,r8,1 # num bytes
529
530 0c24 7D0903A6 mtctr r8
531 0c28 38C00000 li r6,0
532 0c2c 7CE83B78 mr r8,r7
533 printf_reset_clr:
534 0c30 98C80000 stb r6,0(r8)
535 0c34 39080001 addi r8,r8,1
536 0c38 4200FFF8 bdnz printf_reset_clr
537
538 0c3c 39050028 addi r8,r5,T_PRINTF
539 0c40 F8E80000 std r7,0(r8) # reset ptr
540
541 0c44 4E800020 blr
542
543
544 # hvsc
545 0c48 480000B8 .align 8
545 60000000
545 60000000
545 60000000
545 60000000
546 # go to exec_complete_sup in sup mode
547 int_300_handler:
548
549 0d00 80000A00 lwz r0,CONFIG+S_MSR(r0)
550 0d04 7C000124 mtmsr r0
551 0d08 4C00012C isync
552 0d0c 4BFFF894 b exec_complete_sup
553
554 # sc
555 0d10 480000F0 .align 8
555 60000000
555 60000000
555 60000000
555 60000000
556 # r3 is id, remaining are function-specific
557 # not preserving r0, r3-r9 right now
558 #
559 # 0001 whoami
560 # 0010 tick
561 # 0100 putchar r4=c
562 # 0106 printf_mode *NI*
563 # 0107 printf_rst
564 #
565 int_120_handler:
566
567 0e00 7C0802A6 mflr r0
568
569 0e04 2C230001 cmpdi r3,0x0001
570 0e08 41820038 beq sc_whoami
571 0e0c 2C230010 cmpdi r3,0x0010
572 0e10 41820070 beq sc_tick
573 0e14 2C230100 cmpdi r3,0x100
574 0e18 418200A8 beq sc_putchar
575 0e1c 2C230107 cmpdi r3,0x107
576 0e20 41820120 beq sc_printf_rst
577
578 0e24 3860FFFF li r3,-1
579 0e28 7C0803A6 mtlr r0
580 0e2c 4C000064 rfi
581
582 # thread id
583 0e30 60000000 .align 6
583 60000000
583 60000000
583 60000000
584 sc_whoami:
585 0e40 7C7E6AA6 mfspr r3,tir
586 0e44 4C000064 rfi
587
588 # tb
589 0e48 48000038 .align 6
589 60000000
589 60000000
589 60000000
589 60000000
590 sc_tick:
591 0e80 7C6C42A6 mfspr r3,tb
592 0e84 4C000064 rfi
593
594 # wrap buffer; could add flag to stop when full, or reset
595 0e88 48000038 .align 6
595 60000000
595 60000000
595 60000000
595 60000000
596 sc_putchar:
597
598 0ec0 7CBE6AA6 mfspr r5,tir # who am i?
599 0ec4 78A53664 sldi r5,r5,6 # 64B offset
600 0ec8 38A50A80 addi r5,r5,CONFIG+T_CONFIG
601
602 0ecc 38C50028 addi r6,r5,T_PRINTF
603 0ed0 E8E60000 ld r7,0(r6) # buffer ptr
604 0ed4 98870000 stb r4,0(r7) # store char
605 0ed8 38E70001 addi r7,r7,1
606
607 0edc 39050020 addi r8,r5,T_PRINTEND
608 0ee0 E9080000 ld r8,0(r8) # buffer end
609 0ee4 7C274000 cmpd r7,r8
610 0ee8 38600000 li r3,0 # rc=normal
611 0eec 40810010 ble sc_putchar_ok
612 0ef0 39050018 addi r8,r5,T_PRINTSTART
613 0ef4 E8E80000 ld r7,0(r8) # buffer start
614 0ef8 3860FFFF li r3,-1 # rc=full
615 sc_putchar_ok:
616 0efc F8E60000 std r7,0(r6) # save ptr
617
618 0f00 4C000064 rfi
619
620 # clear buffer and reset pointer to start
621 0f04 4800003C .align 6
621 60000000
621 60000000
621 60000000
621 60000000
622 sc_printf_rst:
623
624 0f40 7C6902A6 mfctr r3
625
626 0f44 4BFFFCBD bl printf_reset
627
628 0f48 7C6903A6 mtctr r3
629 0f4c 7C0803A6 mtlr r0
630 0f50 38600000 li r3,0
631
632 0f54 4C000064 rfi
633

Binary file not shown.

@ -0,0 +1,144 @@
# © IBM Corp. 2020
# Licensed under and subject to the terms of the CC-BY 4.0
# license (https://creativecommons.org/licenses/by/4.0/legalcode).
# Additional rights, including the right to physically implement a softcore
# that is compliant with the required sections of the Power ISA
# Specification, will be available at no cost via the OpenPOWER Foundation.
# This README will be updated with additional information when OpenPOWER's
# license is available.

#-----------------------------------------
# Defines
#-----------------------------------------

# Regs

.set r0, 0
.set r1, 1
.set r2, 2
.set r3, 3
.set r4, 4
.set r5, 5
.set r6, 6
.set r7, 7
.set r8, 8
.set r9, 9
.set r10,10
.set r11,11
.set r12,12
.set r13,13
.set r14,14
.set r15,15
.set r16,16
.set r17,17
.set r18,18
.set r19,19
.set r20,20
.set r21,21
.set r22,22
.set r23,23
.set r24,24
.set r25,25
.set r26,26
.set r27,27
.set r28,28
.set r29,29
.set r30,30
.set r31,31

.set f0, 0
.set f1, 1
.set f2, 2
.set f3, 3
.set f4, 4
.set f5, 5
.set f6, 6
.set f7, 7
.set f8, 8
.set f9, 9
.set f10,10
.set f11,11
.set f12,12
.set f13,13
.set f14,14
.set f15,15
.set f16,16
.set f17,17
.set f18,18
.set f19,19
.set f20,20
.set f21,21
.set f22,22
.set f23,23
.set f24,24
.set f25,25
.set f26,26
.set f27,27
.set f28,28
.set f29,29
.set f30,30
.set f31,31

.set cr0, 0
.set cr1, 1
.set cr2, 2
.set cr3, 3
.set cr4, 4
.set cr5, 5
.set cr6, 6
.set cr7, 7

# SPR numbers

.set srr0, 26
.set srr1, 27
.set epcr, 307
.set tar, 815

.set dbsr, 304
.set dbcr0, 308
.set dbcr1, 309
.set dbcr2, 310
.set dbcr3, 848

.set ivpr, 63

.set iucr0, 1011
.set iucr1, 883
.set iucr2, 884

.set iudbg0, 888
.set iudbg1, 889
.set iudbg2, 890
.set iulfsr, 891
.set iullcr, 892

.set mmucr0, 1020
.set mmucr1, 1021
.set mmucr2, 1022
.set mmucr3, 1023

.set tb, 268
.set tbl, 284
.set tbh, 285

.set dec, 22
.set udec, 550
.set tsr, 336
.set tcr, 340

.set xucr0, 1014
.set xucr1, 851
.set xucr2, 1016
.set xucr3, 852
.set xucr4, 853

.set tens, 438
.set tenc, 439
.set tensr, 437

.set pid, 48
.set pir, 286
.set pvr, 287
.set tir, 446

@ -0,0 +1,31 @@
/* simple loader of kernel only */

/* define format
INCLUDE output_format.ld */
OUTPUT_FORMAT("elf64-powerpc")

ENTRY(_start)

/* define origin, len of rom, ram, csr */
INCLUDE regions.ld

SECTIONS
{
/* kernel code */
.kernel :
{
/*_fkernel = .; */
*crt0*(.text)
KEEP(*crt0*(.text))
*(.gnu.linkonce.t.*)
_ekernel = .;
} > rom
}

PROVIDE(_stack_size = 0x00010000);
PROVIDE(_stack_0 = ORIGIN(ram) + LENGTH(ram) - 4);
PROVIDE(_stack_1 = _stack_0 - _stack_size);

PROVIDE(_fdata_rom = LOADADDR(.data));
PROVIDE(_edata_rom = LOADADDR(.data) + SIZEOF(.data));
PROVIDE(_test_start = ORIGIN(ram));

@ -0,0 +1,86 @@
/* hacked version of litex */

/* define format
INCLUDE output_format.ld */
OUTPUT_FORMAT("elf64-powerpc")

ENTRY(_start)

/* define origin, len of rom, ram, csr */
INCLUDE regions.ld

SECTIONS
{
/* kernel code */
.kernel :
{
/*_fkernel = .; */
*crt0*(.text)
KEEP(*crt0*(.text))
*(.gnu.linkonce.t.*)
_ekernel = .;
} > rom

.rodata :
{
. = ALIGN(8);
_frodata = .;
*(.rodata .rodata.* .gnu.linkonce.r.*)
*(.rodata1)
*(.got2 .got2.*)
*(.toc .toc.*)
FILL(0);
. = ALIGN(8);
_erodata = .;
} > rom

/* kernel data to be copied to ram by rom code...*/
.data :
{
. = ALIGN(8);
_fdata = .;
*(.data .data.* .gnu.linkonce.d.*)
FILL(0);
. = ALIGN(8);
_edata = .;
} > ram AT > rom

/* test code */
.test :
{
. = ALIGN(4);
*test.o (.text .text* .gnu.linkonce.t.*)
. = ALIGN(4);
} > ram

.bss :
{
. = ALIGN(8);
_fbss = .;
*(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*)
*(.scommon)
*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(8);
_ebss = .;
_end = .;
} > ram

/DISCARD/ :
{
*(.eh_frame)
*(.comment)
*(.gnu.attributes)
}

}

PROVIDE(_stack_size = 0x00010000);
PROVIDE(_stack_0 = ORIGIN(ram) + LENGTH(ram) - 4);
PROVIDE(_stack_1 = _stack_0 - _stack_size);

PROVIDE(_fdata_rom = LOADADDR(.data));
PROVIDE(_edata_rom = LOADADDR(.data) + SIZEOF(.data));
PROVIDE(_test_start = LOADADDR(.test));

@ -0,0 +1,13 @@
# Updating build process - test1

* original test kernel with updates to use link symbols
* still build kernel and test separately

```
build-kernel
build-test

# create mem files for coco sim
cp rom.init test1/.
cp test.init test1/.
```

@ -0,0 +1,5 @@
MEMORY {
rom : ORIGIN = 0x00000000, LENGTH = 0x00010000
ram : ORIGIN = 0x10000000, LENGTH = 0x00100000
csr : ORIGIN = 0xFFF00000, LENGTH = 0x00010000
}

Binary file not shown.

Binary file not shown.

@ -0,0 +1,969 @@

rom: file format elf64-powerpc


Disassembly of section .kernel:

0000000000000000 <_start>:
0: 48 00 04 00 b 400 <_start+0x400>
4: 48 00 00 1c b 20 <_start+0x20>
8: 60 00 00 00 nop
c: 60 00 00 00 nop
10: 60 00 00 00 nop
14: 60 00 00 00 nop
18: 60 00 00 00 nop
1c: 60 00 00 00 nop
20: 48 00 00 00 b 20 <_start+0x20>
24: 48 00 00 1c b 40 <_start+0x40>
28: 60 00 00 00 nop
2c: 60 00 00 00 nop
30: 60 00 00 00 nop
34: 60 00 00 00 nop
38: 60 00 00 00 nop
3c: 60 00 00 00 nop
40: 48 00 00 00 b 40 <_start+0x40>
44: 48 00 00 1c b 60 <_start+0x60>
48: 60 00 00 00 nop
4c: 60 00 00 00 nop
50: 60 00 00 00 nop
54: 60 00 00 00 nop
58: 60 00 00 00 nop
5c: 60 00 00 00 nop
60: 48 00 00 00 b 60 <_start+0x60>
64: 48 00 00 1c b 80 <_start+0x80>
68: 60 00 00 00 nop
6c: 60 00 00 00 nop
70: 60 00 00 00 nop
74: 60 00 00 00 nop
78: 60 00 00 00 nop
7c: 60 00 00 00 nop
80: 48 00 00 00 b 80 <_start+0x80>
84: 48 00 00 1c b a0 <_start+0xa0>
88: 60 00 00 00 nop
8c: 60 00 00 00 nop
90: 60 00 00 00 nop
94: 60 00 00 00 nop
98: 60 00 00 00 nop
9c: 60 00 00 00 nop
a0: 48 00 00 00 b a0 <_start+0xa0>
a4: 48 00 00 1c b c0 <_start+0xc0>
a8: 60 00 00 00 nop
ac: 60 00 00 00 nop
b0: 60 00 00 00 nop
b4: 60 00 00 00 nop
b8: 60 00 00 00 nop
bc: 60 00 00 00 nop
c0: 48 00 00 00 b c0 <_start+0xc0>
c4: 48 00 00 1c b e0 <_start+0xe0>
c8: 60 00 00 00 nop
cc: 60 00 00 00 nop
d0: 60 00 00 00 nop
d4: 60 00 00 00 nop
d8: 60 00 00 00 nop
dc: 60 00 00 00 nop
e0: 48 00 00 00 b e0 <_start+0xe0>
e4: 48 00 00 1c b 100 <_start+0x100>
e8: 60 00 00 00 nop
ec: 60 00 00 00 nop
f0: 60 00 00 00 nop
f4: 60 00 00 00 nop
f8: 60 00 00 00 nop
fc: 60 00 00 00 nop
100: 48 00 00 00 b 100 <_start+0x100>
104: 48 00 00 1c b 120 <_start+0x120>
108: 60 00 00 00 nop
10c: 60 00 00 00 nop
110: 60 00 00 00 nop
114: 60 00 00 00 nop
118: 60 00 00 00 nop
11c: 60 00 00 00 nop
120: 48 00 0c e0 b e00 <_start+0xe00>
124: 48 00 00 1c b 140 <_start+0x140>
128: 60 00 00 00 nop
12c: 60 00 00 00 nop
130: 60 00 00 00 nop
134: 60 00 00 00 nop
138: 60 00 00 00 nop
13c: 60 00 00 00 nop
140: 48 00 00 00 b 140 <_start+0x140>
144: 48 00 00 1c b 160 <_start+0x160>
148: 60 00 00 00 nop
14c: 60 00 00 00 nop
150: 60 00 00 00 nop
154: 60 00 00 00 nop
158: 60 00 00 00 nop
15c: 60 00 00 00 nop
160: 48 00 00 00 b 160 <_start+0x160>
164: 48 00 00 1c b 180 <_start+0x180>
168: 60 00 00 00 nop
16c: 60 00 00 00 nop
170: 60 00 00 00 nop
174: 60 00 00 00 nop
178: 60 00 00 00 nop
17c: 60 00 00 00 nop
180: 48 00 00 00 b 180 <_start+0x180>
184: 48 00 00 1c b 1a0 <_start+0x1a0>
188: 60 00 00 00 nop
18c: 60 00 00 00 nop
190: 60 00 00 00 nop
194: 60 00 00 00 nop
198: 60 00 00 00 nop
19c: 60 00 00 00 nop
1a0: 48 00 00 00 b 1a0 <_start+0x1a0>
1a4: 48 00 00 1c b 1c0 <_start+0x1c0>
1a8: 60 00 00 00 nop
1ac: 60 00 00 00 nop
1b0: 60 00 00 00 nop
1b4: 60 00 00 00 nop
1b8: 60 00 00 00 nop
1bc: 60 00 00 00 nop
1c0: 48 00 00 00 b 1c0 <_start+0x1c0>
1c4: 48 00 00 1c b 1e0 <_start+0x1e0>
1c8: 60 00 00 00 nop
1cc: 60 00 00 00 nop
1d0: 60 00 00 00 nop
1d4: 60 00 00 00 nop
1d8: 60 00 00 00 nop
1dc: 60 00 00 00 nop
1e0: 48 00 00 00 b 1e0 <_start+0x1e0>
1e4: 48 00 00 1c b 200 <_start+0x200>
1e8: 60 00 00 00 nop
1ec: 60 00 00 00 nop
1f0: 60 00 00 00 nop
1f4: 60 00 00 00 nop
1f8: 60 00 00 00 nop
1fc: 60 00 00 00 nop
200: 48 00 00 00 b 200 <_start+0x200>
204: 48 00 00 1c b 220 <_start+0x220>
208: 60 00 00 00 nop
20c: 60 00 00 00 nop
210: 60 00 00 00 nop
214: 60 00 00 00 nop
218: 60 00 00 00 nop
21c: 60 00 00 00 nop
220: 48 00 00 00 b 220 <_start+0x220>
224: 48 00 00 1c b 240 <_start+0x240>
228: 60 00 00 00 nop
22c: 60 00 00 00 nop
230: 60 00 00 00 nop
234: 60 00 00 00 nop
238: 60 00 00 00 nop
23c: 60 00 00 00 nop
240: 48 00 00 00 b 240 <_start+0x240>
244: 48 00 00 1c b 260 <_start+0x260>
248: 60 00 00 00 nop
24c: 60 00 00 00 nop
250: 60 00 00 00 nop
254: 60 00 00 00 nop
258: 60 00 00 00 nop
25c: 60 00 00 00 nop
260: 48 00 00 00 b 260 <_start+0x260>
264: 48 00 00 1c b 280 <_start+0x280>
268: 60 00 00 00 nop
26c: 60 00 00 00 nop
270: 60 00 00 00 nop
274: 60 00 00 00 nop
278: 60 00 00 00 nop
27c: 60 00 00 00 nop
280: 48 00 00 00 b 280 <_start+0x280>
284: 48 00 00 1c b 2a0 <_start+0x2a0>
288: 60 00 00 00 nop
28c: 60 00 00 00 nop
290: 60 00 00 00 nop
294: 60 00 00 00 nop
298: 60 00 00 00 nop
29c: 60 00 00 00 nop
2a0: 48 00 00 00 b 2a0 <_start+0x2a0>
2a4: 48 00 00 1c b 2c0 <_start+0x2c0>
2a8: 60 00 00 00 nop
2ac: 60 00 00 00 nop
2b0: 60 00 00 00 nop
2b4: 60 00 00 00 nop
2b8: 60 00 00 00 nop
2bc: 60 00 00 00 nop
2c0: 48 00 00 00 b 2c0 <_start+0x2c0>
2c4: 48 00 00 1c b 2e0 <_start+0x2e0>
2c8: 60 00 00 00 nop
2cc: 60 00 00 00 nop
2d0: 60 00 00 00 nop
2d4: 60 00 00 00 nop
2d8: 60 00 00 00 nop
2dc: 60 00 00 00 nop
2e0: 48 00 00 00 b 2e0 <_start+0x2e0>
2e4: 48 00 00 1c b 300 <_start+0x300>
2e8: 60 00 00 00 nop
2ec: 60 00 00 00 nop
2f0: 60 00 00 00 nop
2f4: 60 00 00 00 nop
2f8: 60 00 00 00 nop
2fc: 60 00 00 00 nop
300: 48 00 0a 00 b d00 <_start+0xd00>
304: 48 00 00 1c b 320 <_start+0x320>
308: 60 00 00 00 nop
30c: 60 00 00 00 nop
310: 60 00 00 00 nop
314: 60 00 00 00 nop
318: 60 00 00 00 nop
31c: 60 00 00 00 nop
320: 48 00 00 00 b 320 <_start+0x320>
324: 48 00 00 1c b 340 <_start+0x340>
328: 60 00 00 00 nop
32c: 60 00 00 00 nop
330: 60 00 00 00 nop
334: 60 00 00 00 nop
338: 60 00 00 00 nop
33c: 60 00 00 00 nop
340: 48 00 00 00 b 340 <_start+0x340>
344: 48 00 00 bc b 400 <_start+0x400>
348: 60 00 00 00 nop
34c: 60 00 00 00 nop
350: 60 00 00 00 nop
354: 60 00 00 00 nop
358: 60 00 00 00 nop
35c: 60 00 00 00 nop
360: 60 00 00 00 nop
364: 60 00 00 00 nop
368: 60 00 00 00 nop
36c: 60 00 00 00 nop
370: 60 00 00 00 nop
374: 60 00 00 00 nop
378: 60 00 00 00 nop
37c: 60 00 00 00 nop
380: 60 00 00 00 nop
384: 60 00 00 00 nop
388: 60 00 00 00 nop
38c: 60 00 00 00 nop
390: 60 00 00 00 nop
394: 60 00 00 00 nop
398: 60 00 00 00 nop
39c: 60 00 00 00 nop
3a0: 60 00 00 00 nop
3a4: 60 00 00 00 nop
3a8: 60 00 00 00 nop
3ac: 60 00 00 00 nop
3b0: 60 00 00 00 nop
3b4: 60 00 00 00 nop
3b8: 60 00 00 00 nop
3bc: 60 00 00 00 nop
3c0: 60 00 00 00 nop
3c4: 60 00 00 00 nop
3c8: 60 00 00 00 nop
3cc: 60 00 00 00 nop
3d0: 60 00 00 00 nop
3d4: 60 00 00 00 nop
3d8: 60 00 00 00 nop
3dc: 60 00 00 00 nop
3e0: 60 00 00 00 nop
3e4: 60 00 00 00 nop
3e8: 60 00 00 00 nop
3ec: 60 00 00 00 nop
3f0: 60 00 00 00 nop
3f4: 60 00 00 00 nop
3f8: 60 00 00 00 nop
3fc: 60 00 00 00 nop
400: 7c be 6a a6 mfspr r5,446
404: 2c 25 00 00 cmpdi r5,0
408: 40 82 00 ec bne 4f4 <_start+0x4f4>
40c: 3c 60 8c 00 lis r3,-29696
410: 38 00 00 1f li r0,31
414: 38 40 00 15 li r2,21
418: 38 80 00 00 li r4,0
41c: 39 00 02 5f li r8,607
420: 7c 7c fb a6 mtspr 1020,r3
424: 7c 40 11 a6 eratwe r2,r0,2
428: 7c 80 09 a6 eratwe r4,r0,1
42c: 7d 00 01 a6 mtfprwa f8,r0
430: 4c 00 01 2c isync
434: 81 40 0a 08 lwz r10,2568(0)
438: 38 00 00 1e li r0,30
43c: 3c 80 10 00 lis r4,4096
440: 39 00 02 5f li r8,607
444: 65 08 10 00 oris r8,r8,4096
448: 7d 40 11 a6 eratwe r10,r0,2
44c: 7c 80 09 a6 eratwe r4,r0,1
450: 7d 00 01 a6 mtfprwa f8,r0
454: 4c 00 01 2c isync
458: 3c 60 88 00 lis r3,-30720
45c: 38 00 00 0f li r0,15
460: 38 40 00 3f li r2,63
464: 38 80 00 00 li r4,0
468: 39 00 02 5f li r8,607
46c: 7c 7c fb a6 mtspr 1020,r3
470: 7c 40 11 a6 eratwe r2,r0,2
474: 7c 80 09 a6 eratwe r4,r0,1
478: 7d 00 01 a6 mtfprwa f8,r0
47c: 4c 00 01 2c isync
480: 38 00 00 0d li r0,13
484: 3c 80 10 00 lis r4,4096
488: 39 00 02 5f li r8,607
48c: 65 08 10 00 oris r8,r8,4096
490: 7d 40 11 a6 eratwe r10,r0,2
494: 7c 80 09 a6 eratwe r4,r0,1
498: 7d 00 01 a6 mtfprwa f8,r0
49c: 4c 00 01 2c isync
4a0: 81 40 0a 00 lwz r10,2560(0)
4a4: 7d 40 01 24 mtmsr r10
4a8: 4c 00 01 2c isync
4ac: 3c 20 03 00 lis r1,768
4b0: 7c 33 4b a6 mtspr 307,r1
4b4: 38 20 00 00 li r1,0
4b8: 7c 36 03 a6 mtdec r1
4bc: 7c 3d 43 a6 mttbu r1
4c0: 7c 3c 43 a6 mttbl r1
4c4: 3c 40 fe 00 lis r2,-512
4c8: 7c 50 53 a6 mtspr 336,r2
4cc: 7c 56 fa a6 mfspr r2,1014
4d0: 70 42 02 00 andi. r2,r2,512
4d4: 7c 56 fb a6 mtspr 1014,r2
4d8: 7c 30 53 a6 mtspr 336,r1
4dc: 7c 34 53 a6 mtspr 340,r1
4e0: 80 20 0a 04 lwz r1,2564(0)
4e4: 70 21 00 0f andi. r1,r1,15
4e8: 7c 36 6b a6 mtspr 438,r1
4ec: 4c 00 01 2c isync
4f0: 48 00 00 14 b 504 <_start+0x504>
4f4: 81 40 0a 00 lwz r10,2560(0)
4f8: 7d 40 01 24 mtmsr r10
4fc: 4c 00 01 2c isync
500: 48 00 00 04 b 504 <_start+0x504>
504: 80 20 0a 04 lwz r1,2564(0)
508: 74 21 80 00 andis. r1,r1,32768
50c: 40 82 00 08 bne 514 <_start+0x514>
510: 48 00 06 f1 bl c00 <_start+0xc00>
514: 80 20 0a 04 lwz r1,2564(0)
518: 3c 40 7f ff lis r2,32767
51c: 60 42 ff ff ori r2,r2,65535
520: 7c 21 10 38 and r1,r1,r2
524: 90 20 0a 04 stw r1,2564(0)
528: 7c be 6a a6 mfspr r5,446
52c: 78 a5 36 64 rldicr r5,r5,6,57
530: 38 a5 0a 80 addi r5,r5,2688
534: 81 65 00 00 lwz r11,0(r5)
538: e9 85 00 08 ld r12,8(r5)
53c: e9 a5 00 10 ld r13,16(r5)
540: 80 20 0a 04 lwz r1,2564(0)
544: 70 21 00 10 andi. r1,r1,16
548: 41 82 00 1c beq 564 <_start+0x564>
54c: 80 40 0a 0c lwz r2,2572(0)
550: 3c 20 44 00 lis r1,17408
554: 60 21 00 12 ori r1,r1,18
558: f8 22 00 00 std r1,0(r2)
55c: 7c 28 03 a6 mtlr r1
560: 48 00 00 14 b 574 <_start+0x574>
564: 48 00 00 05 bl 568 <_start+0x568>
568: 7c 28 02 a6 mflr r1
56c: 38 21 00 30 addi r1,r1,48
570: 7c 28 03 a6 mtlr r1
574: 7d 7b 03 a6 mtsrr1 r11
578: 7d ba 03 a6 mtsrr0 r13
57c: 7d 81 63 78 mr r1,r12
580: 7c 7e 6a a6 mfspr r3,446
584: 7c 4c 42 a6 mftb r2
588: f8 45 00 30 std r2,48(r5)
58c: 4c 00 00 64 rfi
590: 60 00 00 00 nop
594: 60 00 00 00 nop
598: 60 00 00 00 nop
59c: 44 00 00 22 sc 1
5a0: 7c be 6a a6 mfspr r5,446
5a4: 78 a5 36 64 rldicr r5,r5,6,57
5a8: 38 a5 0a 80 addi r5,r5,2688
5ac: 7c 4c 42 a6 mftb r2
5b0: f8 45 00 38 std r2,56(r5)
5b4: 2c 23 00 00 cmpdi r3,0
5b8: 41 82 01 48 beq 700 <_start+0x700>
5bc: 48 00 00 44 b 600 <_start+0x600>
5c0: 48 00 00 40 b 600 <_start+0x600>
5c4: 60 00 00 00 nop
5c8: 60 00 00 00 nop
5cc: 60 00 00 00 nop
5d0: 60 00 00 00 nop
5d4: 60 00 00 00 nop
5d8: 60 00 00 00 nop
5dc: 60 00 00 00 nop
5e0: 60 00 00 00 nop
5e4: 60 00 00 00 nop
5e8: 60 00 00 00 nop
5ec: 60 00 00 00 nop
5f0: 60 00 00 00 nop
5f4: 60 00 00 00 nop
5f8: 60 00 00 00 nop
5fc: 60 00 00 00 nop
600: 48 00 00 00 b 600 <_start+0x600>
604: 48 00 00 fc b 700 <_start+0x700>
608: 60 00 00 00 nop
60c: 60 00 00 00 nop
610: 60 00 00 00 nop
614: 60 00 00 00 nop
618: 60 00 00 00 nop
61c: 60 00 00 00 nop
620: 60 00 00 00 nop
624: 60 00 00 00 nop
628: 60 00 00 00 nop
62c: 60 00 00 00 nop
630: 60 00 00 00 nop
634: 60 00 00 00 nop
638: 60 00 00 00 nop
63c: 60 00 00 00 nop
640: 60 00 00 00 nop
644: 60 00 00 00 nop
648: 60 00 00 00 nop
64c: 60 00 00 00 nop
650: 60 00 00 00 nop
654: 60 00 00 00 nop
658: 60 00 00 00 nop
65c: 60 00 00 00 nop
660: 60 00 00 00 nop
664: 60 00 00 00 nop
668: 60 00 00 00 nop
66c: 60 00 00 00 nop
670: 60 00 00 00 nop
674: 60 00 00 00 nop
678: 60 00 00 00 nop
67c: 60 00 00 00 nop
680: 60 00 00 00 nop
684: 60 00 00 00 nop
688: 60 00 00 00 nop
68c: 60 00 00 00 nop
690: 60 00 00 00 nop
694: 60 00 00 00 nop
698: 60 00 00 00 nop
69c: 60 00 00 00 nop
6a0: 60 00 00 00 nop
6a4: 60 00 00 00 nop
6a8: 60 00 00 00 nop
6ac: 60 00 00 00 nop
6b0: 60 00 00 00 nop
6b4: 60 00 00 00 nop
6b8: 60 00 00 00 nop
6bc: 60 00 00 00 nop
6c0: 60 00 00 00 nop
6c4: 60 00 00 00 nop
6c8: 60 00 00 00 nop
6cc: 60 00 00 00 nop
6d0: 60 00 00 00 nop
6d4: 60 00 00 00 nop
6d8: 60 00 00 00 nop
6dc: 60 00 00 00 nop
6e0: 60 00 00 00 nop
6e4: 60 00 00 00 nop
6e8: 60 00 00 00 nop
6ec: 60 00 00 00 nop
6f0: 60 00 00 00 nop
6f4: 60 00 00 00 nop
6f8: 60 00 00 00 nop
6fc: 60 00 00 00 nop
700: 48 00 00 00 b 700 <_start+0x700>
704: 48 00 00 fc b 800 <_start+0x800>
708: 60 00 00 00 nop
70c: 60 00 00 00 nop
710: 60 00 00 00 nop
714: 60 00 00 00 nop
718: 60 00 00 00 nop
71c: 60 00 00 00 nop
720: 60 00 00 00 nop
724: 60 00 00 00 nop
728: 60 00 00 00 nop
72c: 60 00 00 00 nop
730: 60 00 00 00 nop
734: 60 00 00 00 nop
738: 60 00 00 00 nop
73c: 60 00 00 00 nop
740: 60 00 00 00 nop
744: 60 00 00 00 nop
748: 60 00 00 00 nop
74c: 60 00 00 00 nop
750: 60 00 00 00 nop
754: 60 00 00 00 nop
758: 60 00 00 00 nop
75c: 60 00 00 00 nop
760: 60 00 00 00 nop
764: 60 00 00 00 nop
768: 60 00 00 00 nop
76c: 60 00 00 00 nop
770: 60 00 00 00 nop
774: 60 00 00 00 nop
778: 60 00 00 00 nop
77c: 60 00 00 00 nop
780: 60 00 00 00 nop
784: 60 00 00 00 nop
788: 60 00 00 00 nop
78c: 60 00 00 00 nop
790: 60 00 00 00 nop
794: 60 00 00 00 nop
798: 60 00 00 00 nop
79c: 60 00 00 00 nop
7a0: 60 00 00 00 nop
7a4: 60 00 00 00 nop
7a8: 60 00 00 00 nop
7ac: 60 00 00 00 nop
7b0: 60 00 00 00 nop
7b4: 60 00 00 00 nop
7b8: 60 00 00 00 nop
7bc: 60 00 00 00 nop
7c0: 60 00 00 00 nop
7c4: 60 00 00 00 nop
7c8: 60 00 00 00 nop
7cc: 60 00 00 00 nop
7d0: 60 00 00 00 nop
7d4: 60 00 00 00 nop
7d8: 60 00 00 00 nop
7dc: 60 00 00 00 nop
7e0: 60 00 00 00 nop
7e4: 60 00 00 00 nop
7e8: 60 00 00 00 nop
7ec: 60 00 00 00 nop
7f0: 60 00 00 00 nop
7f4: 60 00 00 00 nop
7f8: 60 00 00 00 nop
7fc: 60 00 00 00 nop
800: 48 00 00 00 b 800 <_start+0x800>
804: 48 00 00 1c b 820 <_start+0x820>
808: 60 00 00 00 nop
80c: 60 00 00 00 nop
810: 60 00 00 00 nop
814: 60 00 00 00 nop
818: 60 00 00 00 nop
81c: 60 00 00 00 nop
820: 48 00 00 00 b 820 <_start+0x820>
824: 48 00 01 dc b a00 <_start+0xa00>
828: 60 00 00 00 nop
82c: 60 00 00 00 nop
830: 60 00 00 00 nop
834: 60 00 00 00 nop
838: 60 00 00 00 nop
83c: 60 00 00 00 nop
840: 60 00 00 00 nop
844: 60 00 00 00 nop
848: 60 00 00 00 nop
84c: 60 00 00 00 nop
850: 60 00 00 00 nop
854: 60 00 00 00 nop
858: 60 00 00 00 nop
85c: 60 00 00 00 nop
860: 60 00 00 00 nop
864: 60 00 00 00 nop
868: 60 00 00 00 nop
86c: 60 00 00 00 nop
870: 60 00 00 00 nop
874: 60 00 00 00 nop
878: 60 00 00 00 nop
87c: 60 00 00 00 nop
880: 60 00 00 00 nop
884: 60 00 00 00 nop
888: 60 00 00 00 nop
88c: 60 00 00 00 nop
890: 60 00 00 00 nop
894: 60 00 00 00 nop
898: 60 00 00 00 nop
89c: 60 00 00 00 nop
8a0: 60 00 00 00 nop
8a4: 60 00 00 00 nop
8a8: 60 00 00 00 nop
8ac: 60 00 00 00 nop
8b0: 60 00 00 00 nop
8b4: 60 00 00 00 nop
8b8: 60 00 00 00 nop
8bc: 60 00 00 00 nop
8c0: 60 00 00 00 nop
8c4: 60 00 00 00 nop
8c8: 60 00 00 00 nop
8cc: 60 00 00 00 nop
8d0: 60 00 00 00 nop
8d4: 60 00 00 00 nop
8d8: 60 00 00 00 nop
8dc: 60 00 00 00 nop
8e0: 60 00 00 00 nop
8e4: 60 00 00 00 nop
8e8: 60 00 00 00 nop
8ec: 60 00 00 00 nop
8f0: 60 00 00 00 nop
8f4: 60 00 00 00 nop
8f8: 60 00 00 00 nop
8fc: 60 00 00 00 nop
900: 60 00 00 00 nop
904: 60 00 00 00 nop
908: 60 00 00 00 nop
90c: 60 00 00 00 nop
910: 60 00 00 00 nop
914: 60 00 00 00 nop
918: 60 00 00 00 nop
91c: 60 00 00 00 nop
920: 60 00 00 00 nop
924: 60 00 00 00 nop
928: 60 00 00 00 nop
92c: 60 00 00 00 nop
930: 60 00 00 00 nop
934: 60 00 00 00 nop
938: 60 00 00 00 nop
93c: 60 00 00 00 nop
940: 60 00 00 00 nop
944: 60 00 00 00 nop
948: 60 00 00 00 nop
94c: 60 00 00 00 nop
950: 60 00 00 00 nop
954: 60 00 00 00 nop
958: 60 00 00 00 nop
95c: 60 00 00 00 nop
960: 60 00 00 00 nop
964: 60 00 00 00 nop
968: 60 00 00 00 nop
96c: 60 00 00 00 nop
970: 60 00 00 00 nop
974: 60 00 00 00 nop
978: 60 00 00 00 nop
97c: 60 00 00 00 nop
980: 60 00 00 00 nop
984: 60 00 00 00 nop
988: 60 00 00 00 nop
98c: 60 00 00 00 nop
990: 60 00 00 00 nop
994: 60 00 00 00 nop
998: 60 00 00 00 nop
99c: 60 00 00 00 nop
9a0: 60 00 00 00 nop
9a4: 60 00 00 00 nop
9a8: 60 00 00 00 nop
9ac: 60 00 00 00 nop
9b0: 60 00 00 00 nop
9b4: 60 00 00 00 nop
9b8: 60 00 00 00 nop
9bc: 60 00 00 00 nop
9c0: 60 00 00 00 nop
9c4: 60 00 00 00 nop
9c8: 60 00 00 00 nop
9cc: 60 00 00 00 nop
9d0: 60 00 00 00 nop
9d4: 60 00 00 00 nop
9d8: 60 00 00 00 nop
9dc: 60 00 00 00 nop
9e0: 60 00 00 00 nop
9e4: 60 00 00 00 nop
9e8: 60 00 00 00 nop
9ec: 60 00 00 00 nop
9f0: 60 00 00 00 nop
9f4: 60 00 00 00 nop
9f8: 60 00 00 00 nop
9fc: 60 00 00 00 nop
a00: 80 02 b0 00 lwz r0,-20480(r2)
a04: 80 00 00 01 lwz r0,1(0)
a08: 00 00 00 3f .long 0x3f
a0c: 10 00 00 00 vaddubm v0,v0,v0
a10: 48 00 00 70 b a80 <_start+0xa80>
a14: 60 00 00 00 nop
a18: 60 00 00 00 nop
a1c: 60 00 00 00 nop
a20: 60 00 00 00 nop
a24: 60 00 00 00 nop
a28: 60 00 00 00 nop
a2c: 60 00 00 00 nop
a30: 60 00 00 00 nop
a34: 60 00 00 00 nop
a38: 60 00 00 00 nop
a3c: 60 00 00 00 nop
a40: 60 00 00 00 nop
a44: 60 00 00 00 nop
a48: 60 00 00 00 nop
a4c: 60 00 00 00 nop
a50: 60 00 00 00 nop
a54: 60 00 00 00 nop
a58: 60 00 00 00 nop
a5c: 60 00 00 00 nop
a60: 60 00 00 00 nop
a64: 60 00 00 00 nop
a68: 60 00 00 00 nop
a6c: 60 00 00 00 nop
a70: 60 00 00 00 nop
a74: 60 00 00 00 nop
a78: 60 00 00 00 nop
a7c: 60 00 00 00 nop
a80: 80 02 f0 00 lwz r0,-4096(r2)
...
a8c: 10 0f ff fc vaddeuqm v0,v15,v31,v31
a90: 00 00 00 00 .long 0x0
a94: 10 00 00 00 vaddubm v0,v0,v0
a98: 00 00 00 00 .long 0x0
a9c: 10 03 00 00 vaddubm v0,v3,v0
aa0: 00 00 00 00 .long 0x0
aa4: 10 03 1f ff vsubecuq v0,v3,v3,v31
aa8: 00 00 00 00 .long 0x0
aac: 10 03 00 00 vaddubm v0,v3,v0
...
ac0: 80 02 f0 00 lwz r0,-4096(r2)
...
acc: 10 0e ff fc vaddeuqm v0,v14,v31,v31
ad0: 00 00 00 00 .long 0x0
ad4: 10 00 00 00 vaddubm v0,v0,v0
ad8: 00 00 00 00 .long 0x0
adc: 10 03 20 00 vaddubm v0,v3,v4
ae0: 00 00 00 00 .long 0x0
ae4: 10 03 3f ff vsubecuq v0,v3,v7,v31
ae8: 00 00 00 00 .long 0x0
aec: 10 03 20 00 vaddubm v0,v3,v4
...
b00: 80 02 f0 00 lwz r0,-4096(r2)
...
b14: 10 00 00 00 vaddubm v0,v0,v0
b18: 00 00 00 00 .long 0x0
b1c: 10 03 40 00 vaddubm v0,v3,v8
b20: 00 00 00 00 .long 0x0
b24: 10 03 5f ff vsubecuq v0,v3,v11,v31
b28: 00 00 00 00 .long 0x0
b2c: 10 03 40 00 vaddubm v0,v3,v8
...
b40: 80 02 f0 00 lwz r0,-4096(r2)
...
b54: 10 00 00 00 vaddubm v0,v0,v0
b58: 00 00 00 00 .long 0x0
b5c: 10 03 60 00 vaddubm v0,v3,v12
b60: 00 00 00 00 .long 0x0
b64: 10 03 7f ff vsubecuq v0,v3,v15,v31
b68: 00 00 00 00 .long 0x0
b6c: 10 03 60 00 vaddubm v0,v3,v12
...
b80: 48 00 00 80 b c00 <_start+0xc00>
b84: 60 00 00 00 nop
b88: 60 00 00 00 nop
b8c: 60 00 00 00 nop
b90: 60 00 00 00 nop
b94: 60 00 00 00 nop
b98: 60 00 00 00 nop
b9c: 60 00 00 00 nop
ba0: 60 00 00 00 nop
ba4: 60 00 00 00 nop
ba8: 60 00 00 00 nop
bac: 60 00 00 00 nop
bb0: 60 00 00 00 nop
bb4: 60 00 00 00 nop
bb8: 60 00 00 00 nop
bbc: 60 00 00 00 nop
bc0: 60 00 00 00 nop
bc4: 60 00 00 00 nop
bc8: 60 00 00 00 nop
bcc: 60 00 00 00 nop
bd0: 60 00 00 00 nop
bd4: 60 00 00 00 nop
bd8: 60 00 00 00 nop
bdc: 60 00 00 00 nop
be0: 60 00 00 00 nop
be4: 60 00 00 00 nop
be8: 60 00 00 00 nop
bec: 60 00 00 00 nop
bf0: 60 00 00 00 nop
bf4: 60 00 00 00 nop
bf8: 60 00 00 00 nop
bfc: 60 00 00 00 nop
c00: 7c be 6a a6 mfspr r5,446
c04: 78 a5 36 64 rldicr r5,r5,6,57
c08: 38 a5 0a 80 addi r5,r5,2688
c0c: 38 c5 00 18 addi r6,r5,24
c10: e8 e6 00 00 ld r7,0(r6)
c14: 38 c5 00 20 addi r6,r5,32
c18: e9 06 00 00 ld r8,0(r6)
c1c: 7d 07 40 50 subf r8,r7,r8
c20: 39 08 00 01 addi r8,r8,1
c24: 7d 09 03 a6 mtctr r8
c28: 38 c0 00 00 li r6,0
c2c: 7c e8 3b 78 mr r8,r7
c30: 98 c8 00 00 stb r6,0(r8)
c34: 39 08 00 01 addi r8,r8,1
c38: 42 00 ff f8 bdnz c30 <_start+0xc30>
c3c: 39 05 00 28 addi r8,r5,40
c40: f8 e8 00 00 std r7,0(r8)
c44: 4e 80 00 20 blr
c48: 48 00 00 b8 b d00 <_start+0xd00>
c4c: 60 00 00 00 nop
c50: 60 00 00 00 nop
c54: 60 00 00 00 nop
c58: 60 00 00 00 nop
c5c: 60 00 00 00 nop
c60: 60 00 00 00 nop
c64: 60 00 00 00 nop
c68: 60 00 00 00 nop
c6c: 60 00 00 00 nop
c70: 60 00 00 00 nop
c74: 60 00 00 00 nop
c78: 60 00 00 00 nop
c7c: 60 00 00 00 nop
c80: 60 00 00 00 nop
c84: 60 00 00 00 nop
c88: 60 00 00 00 nop
c8c: 60 00 00 00 nop
c90: 60 00 00 00 nop
c94: 60 00 00 00 nop
c98: 60 00 00 00 nop
c9c: 60 00 00 00 nop
ca0: 60 00 00 00 nop
ca4: 60 00 00 00 nop
ca8: 60 00 00 00 nop
cac: 60 00 00 00 nop
cb0: 60 00 00 00 nop
cb4: 60 00 00 00 nop
cb8: 60 00 00 00 nop
cbc: 60 00 00 00 nop
cc0: 60 00 00 00 nop
cc4: 60 00 00 00 nop
cc8: 60 00 00 00 nop
ccc: 60 00 00 00 nop
cd0: 60 00 00 00 nop
cd4: 60 00 00 00 nop
cd8: 60 00 00 00 nop
cdc: 60 00 00 00 nop
ce0: 60 00 00 00 nop
ce4: 60 00 00 00 nop
ce8: 60 00 00 00 nop
cec: 60 00 00 00 nop
cf0: 60 00 00 00 nop
cf4: 60 00 00 00 nop
cf8: 60 00 00 00 nop
cfc: 60 00 00 00 nop
d00: 80 00 0a 00 lwz r0,2560(0)
d04: 7c 00 01 24 mtmsr r0
d08: 4c 00 01 2c isync
d0c: 4b ff f8 94 b 5a0 <_start+0x5a0>
d10: 48 00 00 f0 b e00 <_start+0xe00>
d14: 60 00 00 00 nop
d18: 60 00 00 00 nop
d1c: 60 00 00 00 nop
d20: 60 00 00 00 nop
d24: 60 00 00 00 nop
d28: 60 00 00 00 nop
d2c: 60 00 00 00 nop
d30: 60 00 00 00 nop
d34: 60 00 00 00 nop
d38: 60 00 00 00 nop
d3c: 60 00 00 00 nop
d40: 60 00 00 00 nop
d44: 60 00 00 00 nop
d48: 60 00 00 00 nop
d4c: 60 00 00 00 nop
d50: 60 00 00 00 nop
d54: 60 00 00 00 nop
d58: 60 00 00 00 nop
d5c: 60 00 00 00 nop
d60: 60 00 00 00 nop
d64: 60 00 00 00 nop
d68: 60 00 00 00 nop
d6c: 60 00 00 00 nop
d70: 60 00 00 00 nop
d74: 60 00 00 00 nop
d78: 60 00 00 00 nop
d7c: 60 00 00 00 nop
d80: 60 00 00 00 nop
d84: 60 00 00 00 nop
d88: 60 00 00 00 nop
d8c: 60 00 00 00 nop
d90: 60 00 00 00 nop
d94: 60 00 00 00 nop
d98: 60 00 00 00 nop
d9c: 60 00 00 00 nop
da0: 60 00 00 00 nop
da4: 60 00 00 00 nop
da8: 60 00 00 00 nop
dac: 60 00 00 00 nop
db0: 60 00 00 00 nop
db4: 60 00 00 00 nop
db8: 60 00 00 00 nop
dbc: 60 00 00 00 nop
dc0: 60 00 00 00 nop
dc4: 60 00 00 00 nop
dc8: 60 00 00 00 nop
dcc: 60 00 00 00 nop
dd0: 60 00 00 00 nop
dd4: 60 00 00 00 nop
dd8: 60 00 00 00 nop
ddc: 60 00 00 00 nop
de0: 60 00 00 00 nop
de4: 60 00 00 00 nop
de8: 60 00 00 00 nop
dec: 60 00 00 00 nop
df0: 60 00 00 00 nop
df4: 60 00 00 00 nop
df8: 60 00 00 00 nop
dfc: 60 00 00 00 nop
e00: 7c 08 02 a6 mflr r0
e04: 2c 23 00 01 cmpdi r3,1
e08: 41 82 00 38 beq e40 <_start+0xe40>
e0c: 2c 23 00 10 cmpdi r3,16
e10: 41 82 00 70 beq e80 <_start+0xe80>
e14: 2c 23 01 00 cmpdi r3,256
e18: 41 82 00 a8 beq ec0 <_start+0xec0>
e1c: 2c 23 01 07 cmpdi r3,263
e20: 41 82 01 20 beq f40 <_start+0xf40>
e24: 38 60 ff ff li r3,-1
e28: 7c 08 03 a6 mtlr r0
e2c: 4c 00 00 64 rfi
e30: 60 00 00 00 nop
e34: 60 00 00 00 nop
e38: 60 00 00 00 nop
e3c: 60 00 00 00 nop
e40: 7c 7e 6a a6 mfspr r3,446
e44: 4c 00 00 64 rfi
e48: 48 00 00 38 b e80 <_start+0xe80>
e4c: 60 00 00 00 nop
e50: 60 00 00 00 nop
e54: 60 00 00 00 nop
e58: 60 00 00 00 nop
e5c: 60 00 00 00 nop
e60: 60 00 00 00 nop
e64: 60 00 00 00 nop
e68: 60 00 00 00 nop
e6c: 60 00 00 00 nop
e70: 60 00 00 00 nop
e74: 60 00 00 00 nop
e78: 60 00 00 00 nop
e7c: 60 00 00 00 nop
e80: 7c 6c 42 a6 mftb r3
e84: 4c 00 00 64 rfi
e88: 48 00 00 38 b ec0 <_start+0xec0>
e8c: 60 00 00 00 nop
e90: 60 00 00 00 nop
e94: 60 00 00 00 nop
e98: 60 00 00 00 nop
e9c: 60 00 00 00 nop
ea0: 60 00 00 00 nop
ea4: 60 00 00 00 nop
ea8: 60 00 00 00 nop
eac: 60 00 00 00 nop
eb0: 60 00 00 00 nop
eb4: 60 00 00 00 nop
eb8: 60 00 00 00 nop
ebc: 60 00 00 00 nop
ec0: 7c be 6a a6 mfspr r5,446
ec4: 78 a5 36 64 rldicr r5,r5,6,57
ec8: 38 a5 0a 80 addi r5,r5,2688
ecc: 38 c5 00 28 addi r6,r5,40
ed0: e8 e6 00 00 ld r7,0(r6)
ed4: 98 87 00 00 stb r4,0(r7)
ed8: 38 e7 00 01 addi r7,r7,1
edc: 39 05 00 20 addi r8,r5,32
ee0: e9 08 00 00 ld r8,0(r8)
ee4: 7c 27 40 00 cmpd r7,r8
ee8: 38 60 00 00 li r3,0
eec: 40 81 00 10 ble efc <_start+0xefc>
ef0: 39 05 00 18 addi r8,r5,24
ef4: e8 e8 00 00 ld r7,0(r8)
ef8: 38 60 ff ff li r3,-1
efc: f8 e6 00 00 std r7,0(r6)
f00: 4c 00 00 64 rfi
f04: 48 00 00 3c b f40 <_start+0xf40>
f08: 60 00 00 00 nop
f0c: 60 00 00 00 nop
f10: 60 00 00 00 nop
f14: 60 00 00 00 nop
f18: 60 00 00 00 nop
f1c: 60 00 00 00 nop
f20: 60 00 00 00 nop
f24: 60 00 00 00 nop
f28: 60 00 00 00 nop
f2c: 60 00 00 00 nop
f30: 60 00 00 00 nop
f34: 60 00 00 00 nop
f38: 60 00 00 00 nop
f3c: 60 00 00 00 nop
f40: 7c 69 02 a6 mfctr r3
f44: 4b ff fc bd bl c00 <_start+0xc00>
f48: 7c 69 03 a6 mtctr r3
f4c: 7c 08 03 a6 mtlr r0
f50: 38 60 00 00 li r3,0
f54: 4c 00 00 64 rfi

@ -0,0 +1,982 @@
48000400
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000CE0
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000A00
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
480000BC
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7CBE6AA6
2C250000
408200EC
3C608C00
3800001F
38400015
38800000
3900025F
7C7CFBA6
7C4011A6
7C8009A6
7D0001A6
4C00012C
81400A08
3800001E
3C801000
3900025F
65081000
7D4011A6
7C8009A6
7D0001A6
4C00012C
3C608800
3800000F
3840003F
38800000
3900025F
7C7CFBA6
7C4011A6
7C8009A6
7D0001A6
4C00012C
3800000D
3C801000
3900025F
65081000
7D4011A6
7C8009A6
7D0001A6
4C00012C
81400A00
7D400124
4C00012C
3C200300
7C334BA6
38200000
7C3603A6
7C3D43A6
7C3C43A6
3C40FE00
7C5053A6
7C56FAA6
70420200
7C56FBA6
7C3053A6
7C3453A6
80200A04
7021000F
7C366BA6
4C00012C
48000014
81400A00
7D400124
4C00012C
48000004
80200A04
74218000
40820008
480006F1
80200A04
3C407FFF
6042FFFF
7C211038
90200A04
7CBE6AA6
78A53664
38A50A80
81650000
E9850008
E9A50010
80200A04
70210010
4182001C
80400A0C
3C204400
60210012
F8220000
7C2803A6
48000014
48000005
7C2802A6
38210030
7C2803A6
7D7B03A6
7DBA03A6
7D816378
7C7E6AA6
7C4C42A6
F8450030
4C000064
60000000
60000000
60000000
44000022
7CBE6AA6
78A53664
38A50A80
7C4C42A6
F8450038
2C230000
41820148
48000044
48000040
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
48000000
480000FC
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
48000000
480000FC
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
48000000
4800001C
60000000
60000000
60000000
60000000
60000000
60000000
48000000
480001DC
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
8002B000
80000001
0000003F
10000000
48000070
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
8002F000
00000000
00000000
100FFFFC
00000000
10000000
00000000
10030000
00000000
10031FFF
00000000
10030000
00000000
00000000
00000000
00000000
8002F000
00000000
00000000
100EFFFC
00000000
10000000
00000000
10032000
00000000
10033FFF
00000000
10032000
00000000
00000000
00000000
00000000
8002F000
00000000
00000000
00000000
00000000
10000000
00000000
10034000
00000000
10035FFF
00000000
10034000
00000000
00000000
00000000
00000000
8002F000
00000000
00000000
00000000
00000000
10000000
00000000
10036000
00000000
10037FFF
00000000
10036000
00000000
00000000
00000000
00000000
48000080
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7CBE6AA6
78A53664
38A50A80
38C50018
E8E60000
38C50020
E9060000
7D074050
39080001
7D0903A6
38C00000
7CE83B78
98C80000
39080001
4200FFF8
39050028
F8E80000
4E800020
480000B8
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
80000A00
7C000124
4C00012C
4BFFF894
480000F0
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7C0802A6
2C230001
41820038
2C230010
41820070
2C230100
418200A8
2C230107
41820120
3860FFFF
7C0803A6
4C000064
60000000
60000000
60000000
60000000
7C7E6AA6
4C000064
48000038
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7C6C42A6
4C000064
48000038
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7CBE6AA6
78A53664
38A50A80
38C50028
E8E60000
98870000
38E70001
39050020
E9080000
7C274000
38600000
40810010
39050018
E8E80000
3860FFFF
F8E60000
4C000064
4800003C
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
60000000
7C6902A6
4BFFFCBD
7C6903A6
7C0803A6
38600000
4C000064

@ -0,0 +1,250 @@

rom: file format elf64-powerpc

Contents of section .kernel:
0000 48000400 4800001c 60000000 60000000 H...H...`...`...
0010 60000000 60000000 60000000 60000000 `...`...`...`...
0020 48000000 4800001c 60000000 60000000 H...H...`...`...
0030 60000000 60000000 60000000 60000000 `...`...`...`...
0040 48000000 4800001c 60000000 60000000 H...H...`...`...
0050 60000000 60000000 60000000 60000000 `...`...`...`...
0060 48000000 4800001c 60000000 60000000 H...H...`...`...
0070 60000000 60000000 60000000 60000000 `...`...`...`...
0080 48000000 4800001c 60000000 60000000 H...H...`...`...
0090 60000000 60000000 60000000 60000000 `...`...`...`...
00a0 48000000 4800001c 60000000 60000000 H...H...`...`...
00b0 60000000 60000000 60000000 60000000 `...`...`...`...
00c0 48000000 4800001c 60000000 60000000 H...H...`...`...
00d0 60000000 60000000 60000000 60000000 `...`...`...`...
00e0 48000000 4800001c 60000000 60000000 H...H...`...`...
00f0 60000000 60000000 60000000 60000000 `...`...`...`...
0100 48000000 4800001c 60000000 60000000 H...H...`...`...
0110 60000000 60000000 60000000 60000000 `...`...`...`...
0120 48000ce0 4800001c 60000000 60000000 H...H...`...`...
0130 60000000 60000000 60000000 60000000 `...`...`...`...
0140 48000000 4800001c 60000000 60000000 H...H...`...`...
0150 60000000 60000000 60000000 60000000 `...`...`...`...
0160 48000000 4800001c 60000000 60000000 H...H...`...`...
0170 60000000 60000000 60000000 60000000 `...`...`...`...
0180 48000000 4800001c 60000000 60000000 H...H...`...`...
0190 60000000 60000000 60000000 60000000 `...`...`...`...
01a0 48000000 4800001c 60000000 60000000 H...H...`...`...
01b0 60000000 60000000 60000000 60000000 `...`...`...`...
01c0 48000000 4800001c 60000000 60000000 H...H...`...`...
01d0 60000000 60000000 60000000 60000000 `...`...`...`...
01e0 48000000 4800001c 60000000 60000000 H...H...`...`...
01f0 60000000 60000000 60000000 60000000 `...`...`...`...
0200 48000000 4800001c 60000000 60000000 H...H...`...`...
0210 60000000 60000000 60000000 60000000 `...`...`...`...
0220 48000000 4800001c 60000000 60000000 H...H...`...`...
0230 60000000 60000000 60000000 60000000 `...`...`...`...
0240 48000000 4800001c 60000000 60000000 H...H...`...`...
0250 60000000 60000000 60000000 60000000 `...`...`...`...
0260 48000000 4800001c 60000000 60000000 H...H...`...`...
0270 60000000 60000000 60000000 60000000 `...`...`...`...
0280 48000000 4800001c 60000000 60000000 H...H...`...`...
0290 60000000 60000000 60000000 60000000 `...`...`...`...
02a0 48000000 4800001c 60000000 60000000 H...H...`...`...
02b0 60000000 60000000 60000000 60000000 `...`...`...`...
02c0 48000000 4800001c 60000000 60000000 H...H...`...`...
02d0 60000000 60000000 60000000 60000000 `...`...`...`...
02e0 48000000 4800001c 60000000 60000000 H...H...`...`...
02f0 60000000 60000000 60000000 60000000 `...`...`...`...
0300 48000a00 4800001c 60000000 60000000 H...H...`...`...
0310 60000000 60000000 60000000 60000000 `...`...`...`...
0320 48000000 4800001c 60000000 60000000 H...H...`...`...
0330 60000000 60000000 60000000 60000000 `...`...`...`...
0340 48000000 480000bc 60000000 60000000 H...H...`...`...
0350 60000000 60000000 60000000 60000000 `...`...`...`...
0360 60000000 60000000 60000000 60000000 `...`...`...`...
0370 60000000 60000000 60000000 60000000 `...`...`...`...
0380 60000000 60000000 60000000 60000000 `...`...`...`...
0390 60000000 60000000 60000000 60000000 `...`...`...`...
03a0 60000000 60000000 60000000 60000000 `...`...`...`...
03b0 60000000 60000000 60000000 60000000 `...`...`...`...
03c0 60000000 60000000 60000000 60000000 `...`...`...`...
03d0 60000000 60000000 60000000 60000000 `...`...`...`...
03e0 60000000 60000000 60000000 60000000 `...`...`...`...
03f0 60000000 60000000 60000000 60000000 `...`...`...`...
0400 7cbe6aa6 2c250000 408200ec 3c608c00 |.j.,%..@...<`..
0410 3800001f 38400015 38800000 3900025f 8...8@..8...9.._
0420 7c7cfba6 7c4011a6 7c8009a6 7d0001a6 ||..|@..|...}...
0430 4c00012c 81400a08 3800001e 3c801000 L..,.@..8...<...
0440 3900025f 65081000 7d4011a6 7c8009a6 9.._e...}@..|...
0450 7d0001a6 4c00012c 3c608800 3800000f }...L..,<`..8...
0460 3840003f 38800000 3900025f 7c7cfba6 8@.?8...9.._||..
0470 7c4011a6 7c8009a6 7d0001a6 4c00012c |@..|...}...L..,
0480 3800000d 3c801000 3900025f 65081000 8...<...9.._e...
0490 7d4011a6 7c8009a6 7d0001a6 4c00012c }@..|...}...L..,
04a0 81400a00 7d400124 4c00012c 3c200300 .@..}@.$L..,< ..
04b0 7c334ba6 38200000 7c3603a6 7c3d43a6 |3K.8 ..|6..|=C.
04c0 7c3c43a6 3c40fe00 7c5053a6 7c56faa6 |<C.<@..|PS.|V..
04d0 70420200 7c56fba6 7c3053a6 7c3453a6 pB..|V..|0S.|4S.
04e0 80200a04 7021000f 7c366ba6 4c00012c . ..p!..|6k.L..,
04f0 48000014 81400a00 7d400124 4c00012c H....@..}@.$L..,
0500 48000004 80200a04 74218000 40820008 H.... ..t!..@...
0510 480006f1 80200a04 3c407fff 6042ffff H.... ..<@..`B..
0520 7c211038 90200a04 7cbe6aa6 78a53664 |!.8. ..|.j.x.6d
0530 38a50a80 81650000 e9850008 e9a50010 8....e..........
0540 80200a04 70210010 4182001c 80400a0c . ..p!..A....@..
0550 3c204400 60210012 f8220000 7c2803a6 < D.`!..."..|(..
0560 48000014 48000005 7c2802a6 38210030 H...H...|(..8!.0
0570 7c2803a6 7d7b03a6 7dba03a6 7d816378 |(..}{..}...}.cx
0580 7c7e6aa6 7c4c42a6 f8450030 4c000064 |~j.|LB..E.0L..d
0590 60000000 60000000 60000000 44000022 `...`...`...D.."
05a0 7cbe6aa6 78a53664 38a50a80 7c4c42a6 |.j.x.6d8...|LB.
05b0 f8450038 2c230000 41820148 48000044 .E.8,#..A..HH..D
05c0 48000040 60000000 60000000 60000000 H..@`...`...`...
05d0 60000000 60000000 60000000 60000000 `...`...`...`...
05e0 60000000 60000000 60000000 60000000 `...`...`...`...
05f0 60000000 60000000 60000000 60000000 `...`...`...`...
0600 48000000 480000fc 60000000 60000000 H...H...`...`...
0610 60000000 60000000 60000000 60000000 `...`...`...`...
0620 60000000 60000000 60000000 60000000 `...`...`...`...
0630 60000000 60000000 60000000 60000000 `...`...`...`...
0640 60000000 60000000 60000000 60000000 `...`...`...`...
0650 60000000 60000000 60000000 60000000 `...`...`...`...
0660 60000000 60000000 60000000 60000000 `...`...`...`...
0670 60000000 60000000 60000000 60000000 `...`...`...`...
0680 60000000 60000000 60000000 60000000 `...`...`...`...
0690 60000000 60000000 60000000 60000000 `...`...`...`...
06a0 60000000 60000000 60000000 60000000 `...`...`...`...
06b0 60000000 60000000 60000000 60000000 `...`...`...`...
06c0 60000000 60000000 60000000 60000000 `...`...`...`...
06d0 60000000 60000000 60000000 60000000 `...`...`...`...
06e0 60000000 60000000 60000000 60000000 `...`...`...`...
06f0 60000000 60000000 60000000 60000000 `...`...`...`...
0700 48000000 480000fc 60000000 60000000 H...H...`...`...
0710 60000000 60000000 60000000 60000000 `...`...`...`...
0720 60000000 60000000 60000000 60000000 `...`...`...`...
0730 60000000 60000000 60000000 60000000 `...`...`...`...
0740 60000000 60000000 60000000 60000000 `...`...`...`...
0750 60000000 60000000 60000000 60000000 `...`...`...`...
0760 60000000 60000000 60000000 60000000 `...`...`...`...
0770 60000000 60000000 60000000 60000000 `...`...`...`...
0780 60000000 60000000 60000000 60000000 `...`...`...`...
0790 60000000 60000000 60000000 60000000 `...`...`...`...
07a0 60000000 60000000 60000000 60000000 `...`...`...`...
07b0 60000000 60000000 60000000 60000000 `...`...`...`...
07c0 60000000 60000000 60000000 60000000 `...`...`...`...
07d0 60000000 60000000 60000000 60000000 `...`...`...`...
07e0 60000000 60000000 60000000 60000000 `...`...`...`...
07f0 60000000 60000000 60000000 60000000 `...`...`...`...
0800 48000000 4800001c 60000000 60000000 H...H...`...`...
0810 60000000 60000000 60000000 60000000 `...`...`...`...
0820 48000000 480001dc 60000000 60000000 H...H...`...`...
0830 60000000 60000000 60000000 60000000 `...`...`...`...
0840 60000000 60000000 60000000 60000000 `...`...`...`...
0850 60000000 60000000 60000000 60000000 `...`...`...`...
0860 60000000 60000000 60000000 60000000 `...`...`...`...
0870 60000000 60000000 60000000 60000000 `...`...`...`...
0880 60000000 60000000 60000000 60000000 `...`...`...`...
0890 60000000 60000000 60000000 60000000 `...`...`...`...
08a0 60000000 60000000 60000000 60000000 `...`...`...`...
08b0 60000000 60000000 60000000 60000000 `...`...`...`...
08c0 60000000 60000000 60000000 60000000 `...`...`...`...
08d0 60000000 60000000 60000000 60000000 `...`...`...`...
08e0 60000000 60000000 60000000 60000000 `...`...`...`...
08f0 60000000 60000000 60000000 60000000 `...`...`...`...
0900 60000000 60000000 60000000 60000000 `...`...`...`...
0910 60000000 60000000 60000000 60000000 `...`...`...`...
0920 60000000 60000000 60000000 60000000 `...`...`...`...
0930 60000000 60000000 60000000 60000000 `...`...`...`...
0940 60000000 60000000 60000000 60000000 `...`...`...`...
0950 60000000 60000000 60000000 60000000 `...`...`...`...
0960 60000000 60000000 60000000 60000000 `...`...`...`...
0970 60000000 60000000 60000000 60000000 `...`...`...`...
0980 60000000 60000000 60000000 60000000 `...`...`...`...
0990 60000000 60000000 60000000 60000000 `...`...`...`...
09a0 60000000 60000000 60000000 60000000 `...`...`...`...
09b0 60000000 60000000 60000000 60000000 `...`...`...`...
09c0 60000000 60000000 60000000 60000000 `...`...`...`...
09d0 60000000 60000000 60000000 60000000 `...`...`...`...
09e0 60000000 60000000 60000000 60000000 `...`...`...`...
09f0 60000000 60000000 60000000 60000000 `...`...`...`...
0a00 8002b000 80000001 0000003f 10000000 ...........?....
0a10 48000070 60000000 60000000 60000000 H..p`...`...`...
0a20 60000000 60000000 60000000 60000000 `...`...`...`...
0a30 60000000 60000000 60000000 60000000 `...`...`...`...
0a40 60000000 60000000 60000000 60000000 `...`...`...`...
0a50 60000000 60000000 60000000 60000000 `...`...`...`...
0a60 60000000 60000000 60000000 60000000 `...`...`...`...
0a70 60000000 60000000 60000000 60000000 `...`...`...`...
0a80 8002f000 00000000 00000000 100ffffc ................
0a90 00000000 10000000 00000000 10030000 ................
0aa0 00000000 10031fff 00000000 10030000 ................
0ab0 00000000 00000000 00000000 00000000 ................
0ac0 8002f000 00000000 00000000 100efffc ................
0ad0 00000000 10000000 00000000 10032000 .............. .
0ae0 00000000 10033fff 00000000 10032000 ......?....... .
0af0 00000000 00000000 00000000 00000000 ................
0b00 8002f000 00000000 00000000 00000000 ................
0b10 00000000 10000000 00000000 10034000 ..............@.
0b20 00000000 10035fff 00000000 10034000 ......_.......@.
0b30 00000000 00000000 00000000 00000000 ................
0b40 8002f000 00000000 00000000 00000000 ................
0b50 00000000 10000000 00000000 10036000 ..............`.
0b60 00000000 10037fff 00000000 10036000 ..............`.
0b70 00000000 00000000 00000000 00000000 ................
0b80 48000080 60000000 60000000 60000000 H...`...`...`...
0b90 60000000 60000000 60000000 60000000 `...`...`...`...
0ba0 60000000 60000000 60000000 60000000 `...`...`...`...
0bb0 60000000 60000000 60000000 60000000 `...`...`...`...
0bc0 60000000 60000000 60000000 60000000 `...`...`...`...
0bd0 60000000 60000000 60000000 60000000 `...`...`...`...
0be0 60000000 60000000 60000000 60000000 `...`...`...`...
0bf0 60000000 60000000 60000000 60000000 `...`...`...`...
0c00 7cbe6aa6 78a53664 38a50a80 38c50018 |.j.x.6d8...8...
0c10 e8e60000 38c50020 e9060000 7d074050 ....8.. ....}.@P
0c20 39080001 7d0903a6 38c00000 7ce83b78 9...}...8...|.;x
0c30 98c80000 39080001 4200fff8 39050028 ....9...B...9..(
0c40 f8e80000 4e800020 480000b8 60000000 ....N.. H...`...
0c50 60000000 60000000 60000000 60000000 `...`...`...`...
0c60 60000000 60000000 60000000 60000000 `...`...`...`...
0c70 60000000 60000000 60000000 60000000 `...`...`...`...
0c80 60000000 60000000 60000000 60000000 `...`...`...`...
0c90 60000000 60000000 60000000 60000000 `...`...`...`...
0ca0 60000000 60000000 60000000 60000000 `...`...`...`...
0cb0 60000000 60000000 60000000 60000000 `...`...`...`...
0cc0 60000000 60000000 60000000 60000000 `...`...`...`...
0cd0 60000000 60000000 60000000 60000000 `...`...`...`...
0ce0 60000000 60000000 60000000 60000000 `...`...`...`...
0cf0 60000000 60000000 60000000 60000000 `...`...`...`...
0d00 80000a00 7c000124 4c00012c 4bfff894 ....|..$L..,K...
0d10 480000f0 60000000 60000000 60000000 H...`...`...`...
0d20 60000000 60000000 60000000 60000000 `...`...`...`...
0d30 60000000 60000000 60000000 60000000 `...`...`...`...
0d40 60000000 60000000 60000000 60000000 `...`...`...`...
0d50 60000000 60000000 60000000 60000000 `...`...`...`...
0d60 60000000 60000000 60000000 60000000 `...`...`...`...
0d70 60000000 60000000 60000000 60000000 `...`...`...`...
0d80 60000000 60000000 60000000 60000000 `...`...`...`...
0d90 60000000 60000000 60000000 60000000 `...`...`...`...
0da0 60000000 60000000 60000000 60000000 `...`...`...`...
0db0 60000000 60000000 60000000 60000000 `...`...`...`...
0dc0 60000000 60000000 60000000 60000000 `...`...`...`...
0dd0 60000000 60000000 60000000 60000000 `...`...`...`...
0de0 60000000 60000000 60000000 60000000 `...`...`...`...
0df0 60000000 60000000 60000000 60000000 `...`...`...`...
0e00 7c0802a6 2c230001 41820038 2c230010 |...,#..A..8,#..
0e10 41820070 2c230100 418200a8 2c230107 A..p,#..A...,#..
0e20 41820120 3860ffff 7c0803a6 4c000064 A.. 8`..|...L..d
0e30 60000000 60000000 60000000 60000000 `...`...`...`...
0e40 7c7e6aa6 4c000064 48000038 60000000 |~j.L..dH..8`...
0e50 60000000 60000000 60000000 60000000 `...`...`...`...
0e60 60000000 60000000 60000000 60000000 `...`...`...`...
0e70 60000000 60000000 60000000 60000000 `...`...`...`...
0e80 7c6c42a6 4c000064 48000038 60000000 |lB.L..dH..8`...
0e90 60000000 60000000 60000000 60000000 `...`...`...`...
0ea0 60000000 60000000 60000000 60000000 `...`...`...`...
0eb0 60000000 60000000 60000000 60000000 `...`...`...`...
0ec0 7cbe6aa6 78a53664 38a50a80 38c50028 |.j.x.6d8...8..(
0ed0 e8e60000 98870000 38e70001 39050020 ........8...9..
0ee0 e9080000 7c274000 38600000 40810010 ....|'@.8`..@...
0ef0 39050018 e8e80000 3860ffff f8e60000 9.......8`......
0f00 4c000064 4800003c 60000000 60000000 L..dH..<`...`...
0f10 60000000 60000000 60000000 60000000 `...`...`...`...
0f20 60000000 60000000 60000000 60000000 `...`...`...`...
0f30 60000000 60000000 60000000 60000000 `...`...`...`...
0f40 7c6902a6 4bfffcbd 7c6903a6 7c0803a6 |i..K...|i..|...
0f50 38600000 4c000064 8`..L..d

Binary file not shown.

Binary file not shown.

@ -0,0 +1,13 @@
#include <stdint.h>

uint32_t main(uint32_t tid) {
uint32_t i, a = tid;
for (i = 0; i < 10; i++) {
a = a + i + 1;
}
if (a == 55+tid) {
return 0;
} else {
return 0x8000000 + a;
}
}

@ -0,0 +1,37 @@

test: file format elf64-powerpc


Disassembly of section .test:

0000000010000000 <main>:
10000000: 94 21 ff e0 stwu r1,-32(r1)
10000004: 90 61 00 18 stw r3,24(r1)
10000008: 81 21 00 18 lwz r9,24(r1)
1000000c: 91 21 00 0c stw r9,12(r1)
10000010: 39 20 00 00 li r9,0
10000014: 91 21 00 08 stw r9,8(r1)
10000018: 48 00 00 24 b 1000003c <main+0x3c>
1000001c: 81 41 00 0c lwz r10,12(r1)
10000020: 81 21 00 08 lwz r9,8(r1)
10000024: 7d 2a 4a 14 add r9,r10,r9
10000028: 39 29 00 01 addi r9,r9,1
1000002c: 91 21 00 0c stw r9,12(r1)
10000030: 81 21 00 08 lwz r9,8(r1)
10000034: 39 29 00 01 addi r9,r9,1
10000038: 91 21 00 08 stw r9,8(r1)
1000003c: 81 21 00 08 lwz r9,8(r1)
10000040: 28 09 00 09 cmplwi r9,9
10000044: 40 81 ff d8 ble 1000001c <main+0x1c>
10000048: 81 21 00 18 lwz r9,24(r1)
1000004c: 39 29 00 37 addi r9,r9,55
10000050: 81 41 00 0c lwz r10,12(r1)
10000054: 7c 0a 48 00 cmpw r10,r9
10000058: 40 82 00 0c bne 10000064 <main+0x64>
1000005c: 39 20 00 00 li r9,0
10000060: 48 00 00 0c b 1000006c <main+0x6c>
10000064: 81 21 00 0c lwz r9,12(r1)
10000068: 3d 29 08 00 addis r9,r9,2048
1000006c: 7d 23 4b 78 mr r3,r9
10000070: 38 21 00 20 addi r1,r1,32
10000074: 4e 80 00 20 blr

@ -0,0 +1,30 @@
9421FFE0
90610018
81210018
9121000C
39200000
91210008
48000024
8141000C
81210008
7D2A4A14
39290001
9121000C
81210008
39290001
91210008
81210008
28090009
4081FFD8
81210018
39290037
8141000C
7C0A4800
4082000C
39200000
4800000C
8121000C
3D290800
7D234B78
38210020
4E800020

Binary file not shown.

@ -0,0 +1,12 @@

test: file format elf64-powerpc

Contents of section .test:
10000000 9421ffe0 90610018 81210018 9121000c .!...a...!...!..
10000010 39200000 91210008 48000024 8141000c 9 ...!..H..$.A..
10000020 81210008 7d2a4a14 39290001 9121000c .!..}*J.9)...!..
10000030 81210008 39290001 91210008 81210008 .!..9)...!...!..
10000040 28090009 4081ffd8 81210018 39290037 (...@....!..9).7
10000050 8141000c 7c0a4800 4082000c 39200000 .A..|.H.@...9 ..
10000060 4800000c 8121000c 3d290800 7d234b78 H....!..=)..}#Kx
10000070 38210020 4e800020 8!. N..

@ -0,0 +1 @@
../../sim/mem/test1
Loading…
Cancel
Save