start code build process
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 @@
|
||||
../bin
|
@ -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
|
||||