thanks to ultimo and others I think I have the pi2 switching back to svc and secure mode now.

and other cleanup
This commit is contained in:
dwelch
2016-03-28 20:44:00 -04:00
parent 77f364f4a4
commit 6f4c0d8bcc
106 changed files with 1728 additions and 262941 deletions

1
README
View File

@@ -23,6 +23,7 @@ now there is a growing number of variations.
ARM11 based (BCM2835)
Raspberry Pi B
Raspberry Pi B2
Raspberry Pi A+
Raspberry Pi B+
Raspberry Pi Zero

View File

@@ -1,35 +0,0 @@
Normally I prefer to not use a config.txt. The standard boot files
bootcode.bin, start.elf, and kernel7.img are how most of the raspberry
pis in the world are used, booting linux. Well tested. config.txt
creates exceptions to that, and from the early days of the raspi to
the present some of these have come and gone.
But...As of this writing in order to run 64 bit, from what the folks
on the bare metal forums say, you have to use a config.txt containing
arm_control=0x200
kernel_old=1
The bit set in arm_control indicates boot 64 bit not 32 bit.
kernel_old tells the bootloader to not provide any boot code for the
ARM (as of this writing that code is 32 bit instructions so wont work).
This means we have to build our program for address 0x0000 not address
0x8000 like we would normally. This also means we have to deal with
the other four cores. When all the affinity bits are zero in the
MPIDR_EL1 register, that is the master core.
This relies on some SBZ/RES0 bits, but works for now to put the other
cores in an infinite loop.
mrs x0,mpidr_el1
mov x1,#0xC1000000
bic x0,x0,x1
cbz x0,master
b .
master:
My build_gcc repository has a build_arm64 script that will build a
gnu based toolchain that can be/was used to build these examples.

View File

@@ -1,36 +0,0 @@
ARMGNU ?= aarch64-none-elf
COPS = -Wall -O2 -nostdlib -nostartfiles -ffreestanding
gcc : kernel7.img
all : gcc
clean :
rm -f *.o
rm -f *.bin
rm -f *.hex
rm -f *.elf
rm -f *.list
rm -f *.img
rm -f *.bc
rm -f *.clang.s
vectors.o : vectors.s
$(ARMGNU)-as vectors.s -o vectors.o
bootloader07.o : bootloader07.c
$(ARMGNU)-gcc $(COPS) -c bootloader07.c -o bootloader07.o
periph7.o : periph.c
$(ARMGNU)-gcc $(COPS) -c periph.c -o periph7.o
kernel7.img : loader vectors.o periph7.o bootloader07.o
$(ARMGNU)-ld vectors.o periph7.o bootloader07.o -T loader -o bootloader07_rpi2.elf
$(ARMGNU)-objdump -D bootloader07_rpi2.elf > bootloader07_rpi2.list
$(ARMGNU)-objcopy bootloader07_rpi2.elf -O ihex bootloader07_rpi2.hex
$(ARMGNU)-objcopy bootloader07_rpi2.elf -O binary kernel7.img

View File

@@ -1,56 +0,0 @@
See the top level README file for more information on documentation
and how to run these programs.
This is a very simple bootloader. Instead of the sd dance (see
top level README), this makes life a bit simpler and greatly reduces
physical wear and tear on the sd card socket. Do the sd card dance one
more time with this kernel.img. Get some sort of serial solution to
connect a dumb termial program with the ability to download raw/ascii
files.
bootloader01 was .hex based, this one is also .hex based but a
different way to parse it. bootloader02 through bootloader06
expect binary files, a binary image of the memory starting at
address 0x8000. I intend to release bootloader08 at the same time
and it will be .bin based but have the go feature.
This bootloader07 parses intel hex formatted files. Look that up at
wikipedia, it is very simple and historically widely used for bare
metal embedded work. (S record is another format like intel hex but
of course motorola had to have their own. Intel hex and Motorola S-
record). I felt like doing another state machine and honestly had
forgotten I did one before in bootloader01. This bootloader does
not make any of the others obsolete, it was just a fun exercise.
The thing that annoyed me the most about my bootloader is that
I use minicom and minicom spawns a separate program to do the file
transfers, xmodem, ascii, kermit, etc, and there is a delay and
a loss of data when the spawned program exits and minicom returns.
The solution is that you hit the g key when you want the program
to start so you are basically back in the terminal at that point.
I normally do not deliver binaries. In this case I have included all
of the build files so that you can at least get started without having
to build the bootloader. This is specifically for the raspberry pi 3,
compiled for aarch64.
As of this writing for this to work you must in addition to the other
files (bootcode.bin, start.elf, the kernel7.img from here) and a
config.txt containing
arm_control=0x200
kernel_old=1
The bit set in arm_control indicates boot 64 bit not 32 bit.
kernel_old tells the bootloader to not provide any boot code for the
ARM (as of this writing that code is 32 bit instructions so wont work).
This means we have to build our program for address 0x0000 not address
0x8000 like we would normally. This also means we have to deal with
the other four cores. When all the affinity bits are zero in the
MPIDR_EL1 register, that is the master core. For now I put the other
cores in an infinite loop.

View File

@@ -1,226 +0,0 @@
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
// 2 outer corner
// 4
// 6
// 8 TX out
// 10 RX in
extern void PUT32 ( unsigned int, unsigned int );
extern unsigned int GET32 ( unsigned int );
extern unsigned int GETPC ( void );
extern void BRANCHTO ( unsigned int );
extern void dummy ( unsigned int );
extern void uart_init ( void );
extern unsigned int uart_lcr ( void );
extern void uart_flush ( void );
extern void uart_send ( unsigned int );
extern unsigned int uart_recv ( void );
extern unsigned int uart_check ( void );
extern void hexstring ( unsigned int );
extern void hexstrings ( unsigned int );
extern void timer_init ( void );
extern unsigned int timer_tick ( void );
extern void timer_init ( void );
extern unsigned int timer_tick ( void );
//------------------------------------------------------------------------
int notmain ( void )
{
unsigned int state;
unsigned int byte_count;
unsigned int address;
unsigned int record_type;
unsigned int segment;
unsigned int data;
unsigned int sum;
unsigned int ra;
uart_init();
hexstring(0x12345678);
hexstring(GETPC());
uart_send('I');
uart_send('H');
uart_send('E');
uart_send('X');
uart_send(0x0D);
uart_send(0x0A);
state=0;
segment=0;
sum=0;
data=0;
record_type=0;
address=0;
byte_count=0;
while(1)
{
ra=uart_recv();
if(ra==':')
{
state=1;
continue;
}
if(ra==0x0D)
{
state=0;
continue;
}
if(ra==0x0A)
{
state=0;
continue;
}
if((ra=='g')||(ra=='G'))
{
uart_send(0x0D);
uart_send('-');
uart_send('-');
uart_send(0x0D);
uart_send(0x0A);
uart_send(0x0A);
BRANCHTO(0x8000);
state=0;
break;
}
switch(state)
{
case 0:
{
break;
}
case 1:
case 2:
{
byte_count<<=4;
if(ra>0x39) ra-=7;
byte_count|=(ra&0xF);
byte_count&=0xFF;
state++;
break;
}
case 3:
case 4:
case 5:
case 6:
{
address<<=4;
if(ra>0x39) ra-=7;
address|=(ra&0xF);
address&=0xFFFF;
address|=segment;
state++;
break;
}
case 7:
{
record_type<<=4;
if(ra>0x39) ra-=7;
record_type|=(ra&0xF);
record_type&=0xFF;
state++;
break;
}
case 8:
{
record_type<<=4;
if(ra>0x39) ra-=7;
record_type|=(ra&0xF);
record_type&=0xFF;
switch(record_type)
{
case 0x00:
{
state=14;
break;
}
case 0x01:
{
hexstring(sum);
state=0;
break;
}
case 0x02:
{
state=9;
break;
}
default:
{
state=0;
break;
}
}
break;
}
case 9:
case 10:
case 11:
case 12:
{
segment<<=4;
if(ra>0x39) ra-=7;
segment|=(ra&0xF);
segment&=0xFFFF;
state++;
break;
}
case 13:
{
segment<<=4;
state=0;
break;
}
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
{
data<<=4;
if(ra>0x39) ra-=7;
data|=(ra&0xF);
if(state==21)
{
ra=(data>>24)|(data<<24);
ra|=(data>>8)&0x0000FF00;
ra|=(data<<8)&0x00FF0000;
data=ra;
PUT32(address,data);
sum+=address;
sum+=data;
address+=4;
state=14;
}
else
{
state++;
}
break;
}
}
}
return(0);
}
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//
// Copyright (c) 2014 David Welch dwelch@dwelch.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//-------------------------------------------------------------------------

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,394 +0,0 @@
bootloader07_rpi2.elf: file format elf64-littleaarch64
Disassembly of section .text:
0000000000000000 <_start>:
0: 14080000 b 200000 <skip>
...
0000000000200000 <skip>:
200000: d53800a0 mrs x0, mpidr_el1
200004: d2b82001 mov x1, #0xc1000000 // #3238002688
200008: 8a210000 bic x0, x0, x1
20000c: b4000040 cbz x0, 200014 <master>
200010: 14000003 b 20001c <hang>
0000000000200014 <master>:
200014: b26503ff mov sp, #0x8000000 // #134217728
200018: 940000b2 bl 2002e0 <notmain>
000000000020001c <hang>:
20001c: 14000000 b 20001c <hang>
0000000000200020 <PUT32>:
200020: b9000001 str w1, [x0]
200024: d65f03c0 ret
0000000000200028 <GET32>:
200028: b9400000 ldr w0, [x0]
20002c: d65f03c0 ret
0000000000200030 <GETPC>:
200030: aa1e03e0 mov x0, x30
200034: d65f03c0 ret
0000000000200038 <BRANCHTO>:
200038: 2a0003fe mov w30, w0
20003c: d65f03c0 ret
0000000000200040 <dummy>:
200040: d65f03c0 ret
200044: 00000000 .inst 0x00000000 ; undefined
0000000000200048 <uart_lcr>:
200048: 528a0a80 mov w0, #0x5054 // #20564
20004c: 72a7e420 movk w0, #0x3f21, lsl #16
200050: 17fffff6 b 200028 <GET32>
200054: d503201f nop
0000000000200058 <uart_recv>:
200058: a9bf7bfd stp x29, x30, [sp,#-16]!
20005c: 910003fd mov x29, sp
200060: 528a0a80 mov w0, #0x5054 // #20564
200064: 72a7e420 movk w0, #0x3f21, lsl #16
200068: 97fffff0 bl 200028 <GET32>
20006c: 3607ffa0 tbz w0, #0, 200060 <uart_recv+0x8>
200070: 528a0800 mov w0, #0x5040 // #20544
200074: 72a7e420 movk w0, #0x3f21, lsl #16
200078: 97ffffec bl 200028 <GET32>
20007c: 53001c00 uxtb w0, w0
200080: a8c17bfd ldp x29, x30, [sp],#16
200084: d65f03c0 ret
0000000000200088 <uart_check>:
200088: a9bf7bfd stp x29, x30, [sp,#-16]!
20008c: 528a0a80 mov w0, #0x5054 // #20564
200090: 910003fd mov x29, sp
200094: 72a7e420 movk w0, #0x3f21, lsl #16
200098: 97ffffe4 bl 200028 <GET32>
20009c: 12000000 and w0, w0, #0x1
2000a0: a8c17bfd ldp x29, x30, [sp],#16
2000a4: d65f03c0 ret
00000000002000a8 <uart_send>:
2000a8: a9be7bfd stp x29, x30, [sp,#-32]!
2000ac: 910003fd mov x29, sp
2000b0: f9000bf3 str x19, [sp,#16]
2000b4: 2a0003f3 mov w19, w0
2000b8: 528a0a80 mov w0, #0x5054 // #20564
2000bc: 72a7e420 movk w0, #0x3f21, lsl #16
2000c0: 97ffffda bl 200028 <GET32>
2000c4: 362fffa0 tbz w0, #5, 2000b8 <uart_send+0x10>
2000c8: 2a1303e1 mov w1, w19
2000cc: 528a0800 mov w0, #0x5040 // #20544
2000d0: f9400bf3 ldr x19, [sp,#16]
2000d4: 72a7e420 movk w0, #0x3f21, lsl #16
2000d8: a8c27bfd ldp x29, x30, [sp],#32
2000dc: 17ffffd1 b 200020 <PUT32>
00000000002000e0 <uart_flush>:
2000e0: a9bf7bfd stp x29, x30, [sp,#-16]!
2000e4: 910003fd mov x29, sp
2000e8: 528a0a80 mov w0, #0x5054 // #20564
2000ec: 72a7e420 movk w0, #0x3f21, lsl #16
2000f0: 97ffffce bl 200028 <GET32>
2000f4: 3747ffa0 tbnz w0, #8, 2000e8 <uart_flush+0x8>
2000f8: a8c17bfd ldp x29, x30, [sp],#16
2000fc: d65f03c0 ret
0000000000200100 <hexstrings>:
200100: a9be7bfd stp x29, x30, [sp,#-32]!
200104: 910003fd mov x29, sp
200108: a90153f3 stp x19, x20, [sp,#16]
20010c: 2a0003f4 mov w20, w0
200110: 52800413 mov w19, #0x20 // #32
200114: 51001273 sub w19, w19, #0x4
200118: 1ad32681 lsr w1, w20, w19
20011c: 12000c21 and w1, w1, #0xf
200120: 1100dc20 add w0, w1, #0x37
200124: 1100c022 add w2, w1, #0x30
200128: 7100283f cmp w1, #0xa
20012c: 1a803040 csel w0, w2, w0, cc
200130: 97ffffde bl 2000a8 <uart_send>
200134: 35ffff13 cbnz w19, 200114 <hexstrings+0x14>
200138: a94153f3 ldp x19, x20, [sp,#16]
20013c: a8c27bfd ldp x29, x30, [sp],#32
200140: 52800400 mov w0, #0x20 // #32
200144: 17ffffd9 b 2000a8 <uart_send>
0000000000200148 <hexstring>:
200148: a9bf7bfd stp x29, x30, [sp,#-16]!
20014c: 910003fd mov x29, sp
200150: 97ffffec bl 200100 <hexstrings>
200154: 528001a0 mov w0, #0xd // #13
200158: 97ffffd4 bl 2000a8 <uart_send>
20015c: a8c17bfd ldp x29, x30, [sp],#16
200160: 52800140 mov w0, #0xa // #10
200164: 17ffffd1 b 2000a8 <uart_send>
0000000000200168 <uart_init>:
200168: a9be7bfd stp x29, x30, [sp,#-32]!
20016c: 528a0080 mov w0, #0x5004 // #20484
200170: 52800021 mov w1, #0x1 // #1
200174: 910003fd mov x29, sp
200178: 72a7e420 movk w0, #0x3f21, lsl #16
20017c: f9000bf3 str x19, [sp,#16]
200180: 97ffffa8 bl 200020 <PUT32>
200184: 528a0880 mov w0, #0x5044 // #20548
200188: 52800001 mov w1, #0x0 // #0
20018c: 72a7e420 movk w0, #0x3f21, lsl #16
200190: 52800013 mov w19, #0x0 // #0
200194: 97ffffa3 bl 200020 <PUT32>
200198: 528a0c00 mov w0, #0x5060 // #20576
20019c: 52800001 mov w1, #0x0 // #0
2001a0: 72a7e420 movk w0, #0x3f21, lsl #16
2001a4: 97ffff9f bl 200020 <PUT32>
2001a8: 528a0980 mov w0, #0x504c // #20556
2001ac: 52800061 mov w1, #0x3 // #3
2001b0: 72a7e420 movk w0, #0x3f21, lsl #16
2001b4: 97ffff9b bl 200020 <PUT32>
2001b8: 528a0a00 mov w0, #0x5050 // #20560
2001bc: 52800001 mov w1, #0x0 // #0
2001c0: 72a7e420 movk w0, #0x3f21, lsl #16
2001c4: 97ffff97 bl 200020 <PUT32>
2001c8: 528a0880 mov w0, #0x5044 // #20548
2001cc: 52800001 mov w1, #0x0 // #0
2001d0: 72a7e420 movk w0, #0x3f21, lsl #16
2001d4: 97ffff93 bl 200020 <PUT32>
2001d8: 528a0900 mov w0, #0x5048 // #20552
2001dc: 528018c1 mov w1, #0xc6 // #198
2001e0: 72a7e420 movk w0, #0x3f21, lsl #16
2001e4: 97ffff8f bl 200020 <PUT32>
2001e8: 528a0d00 mov w0, #0x5068 // #20584
2001ec: 528021c1 mov w1, #0x10e // #270
2001f0: 72a7e420 movk w0, #0x3f21, lsl #16
2001f4: 97ffff8b bl 200020 <PUT32>
2001f8: 52800080 mov w0, #0x4 // #4
2001fc: 72a7e400 movk w0, #0x3f20, lsl #16
200200: 97ffff8a bl 200028 <GET32>
200204: 120e6402 and w2, w0, #0xfffc0fff
200208: 52840001 mov w1, #0x2000 // #8192
20020c: 52800080 mov w0, #0x4 // #4
200210: 72a00021 movk w1, #0x1, lsl #16
200214: 72a7e400 movk w0, #0x3f20, lsl #16
200218: 2a010041 orr w1, w2, w1
20021c: 97ffff81 bl 200020 <PUT32>
200220: 52801280 mov w0, #0x94 // #148
200224: 52800001 mov w1, #0x0 // #0
200228: 72a7e400 movk w0, #0x3f20, lsl #16
20022c: 97ffff7d bl 200020 <PUT32>
200230: 2a1303e0 mov w0, w19
200234: 11000673 add w19, w19, #0x1
200238: 97ffff82 bl 200040 <dummy>
20023c: 71025a7f cmp w19, #0x96
200240: 54ffff81 b.ne 200230 <uart_init+0xc8>
200244: 52801300 mov w0, #0x98 // #152
200248: 52980001 mov w1, #0xc000 // #49152
20024c: 72a7e400 movk w0, #0x3f20, lsl #16
200250: 52800013 mov w19, #0x0 // #0
200254: 97ffff73 bl 200020 <PUT32>
200258: 2a1303e0 mov w0, w19
20025c: 11000673 add w19, w19, #0x1
200260: 97ffff78 bl 200040 <dummy>
200264: 71025a7f cmp w19, #0x96
200268: 54ffff81 b.ne 200258 <uart_init+0xf0>
20026c: 52801300 mov w0, #0x98 // #152
200270: 52800001 mov w1, #0x0 // #0
200274: 72a7e400 movk w0, #0x3f20, lsl #16
200278: 97ffff6a bl 200020 <PUT32>
20027c: f9400bf3 ldr x19, [sp,#16]
200280: 528a0c00 mov w0, #0x5060 // #20576
200284: 52800061 mov w1, #0x3 // #3
200288: a8c27bfd ldp x29, x30, [sp],#32
20028c: 72a7e420 movk w0, #0x3f21, lsl #16
200290: 17ffff64 b 200020 <PUT32>
200294: d503201f nop
0000000000200298 <timer_init>:
200298: a9be7bfd stp x29, x30, [sp,#-32]!
20029c: 52a01f21 mov w1, #0xf90000 // #16318464
2002a0: 910003fd mov x29, sp
2002a4: f9000bf3 str x19, [sp,#16]
2002a8: 52968113 mov w19, #0xb408 // #46088
2002ac: 72a7e013 movk w19, #0x3f00, lsl #16
2002b0: 2a1303e0 mov w0, w19
2002b4: 97ffff5b bl 200020 <PUT32>
2002b8: 2a1303e0 mov w0, w19
2002bc: 52804001 mov w1, #0x200 // #512
2002c0: f9400bf3 ldr x19, [sp,#16]
2002c4: 72a01f21 movk w1, #0xf9, lsl #16
2002c8: a8c27bfd ldp x29, x30, [sp],#32
2002cc: 17ffff55 b 200020 <PUT32>
00000000002002d0 <timer_tick>:
2002d0: 52968400 mov w0, #0xb420 // #46112
2002d4: 72a7e000 movk w0, #0x3f00, lsl #16
2002d8: 17ffff54 b 200028 <GET32>
2002dc: d503201f nop
00000000002002e0 <notmain>:
2002e0: a9bb7bfd stp x29, x30, [sp,#-80]!
2002e4: 910003fd mov x29, sp
2002e8: a90153f3 stp x19, x20, [sp,#16]
2002ec: a9025bf5 stp x21, x22, [sp,#32]
2002f0: a90363f7 stp x23, x24, [sp,#48]
2002f4: a9046bf9 stp x25, x26, [sp,#64]
2002f8: 97ffff9c bl 200168 <uart_init>
2002fc: 90000015 adrp x21, 200000 <skip>
200300: 528acf00 mov w0, #0x5678 // #22136
200304: 52800018 mov w24, #0x0 // #0
200308: 72a24680 movk w0, #0x1234, lsl #16
20030c: 52800017 mov w23, #0x0 // #0
200310: 5280001a mov w26, #0x0 // #0
200314: 52800014 mov w20, #0x0 // #0
200318: 97ffff8c bl 200148 <hexstring>
20031c: 52800016 mov w22, #0x0 // #0
200320: 97ffff44 bl 200030 <GETPC>
200324: 52800013 mov w19, #0x0 // #0
200328: 97ffff88 bl 200148 <hexstring>
20032c: 52800139 mov w25, #0x9 // #9
200330: 52800920 mov w0, #0x49 // #73
200334: 911482b5 add x21, x21, #0x520
200338: 97ffff5c bl 2000a8 <uart_send>
20033c: 52800900 mov w0, #0x48 // #72
200340: 97ffff5a bl 2000a8 <uart_send>
200344: 528008a0 mov w0, #0x45 // #69
200348: 97ffff58 bl 2000a8 <uart_send>
20034c: 52800b00 mov w0, #0x58 // #88
200350: 97ffff56 bl 2000a8 <uart_send>
200354: 528001a0 mov w0, #0xd // #13
200358: 97ffff54 bl 2000a8 <uart_send>
20035c: 52800140 mov w0, #0xa // #10
200360: 97ffff52 bl 2000a8 <uart_send>
200364: 97ffff3d bl 200058 <uart_recv>
200368: 7100e81f cmp w0, #0x3a
20036c: 54000340 b.eq 2003d4 <notmain+0xf4>
200370: 7100281f cmp w0, #0xa
200374: 7a4d1804 ccmp w0, #0xd, #0x4, ne
200378: 54000360 b.eq 2003e4 <notmain+0x104>
20037c: 121a7801 and w1, w0, #0xffffffdf
200380: 71011c3f cmp w1, #0x47
200384: 54000820 b.eq 200488 <notmain+0x1a8>
200388: 51000661 sub w1, w19, #0x1
20038c: 7100503f cmp w1, #0x14
200390: 54fffea8 b.hi 200364 <notmain+0x84>
200394: 38614aa1 ldrb w1, [x21,w1,uxtw]
200398: 10000062 adr x2, 2003a4 <notmain+0xc4>
20039c: 8b218841 add x1, x2, w1, sxtb #2
2003a0: d61f0020 br x1
2003a4: d503201f nop
2003a8: 7100e81f cmp w0, #0x3a
2003ac: 51001c01 sub w1, w0, #0x7
2003b0: 1a802020 csel w0, w1, w0, cs
2003b4: 7100567f cmp w19, #0x15
2003b8: 12000c00 and w0, w0, #0xf
2003bc: 2a171017 orr w23, w0, w23, lsl #4
2003c0: 540009c0 b.eq 2004f8 <notmain+0x218>
2003c4: 97ffff25 bl 200058 <uart_recv>
2003c8: 7100e81f cmp w0, #0x3a
2003cc: 11000673 add w19, w19, #0x1
2003d0: 54fffd01 b.ne 200370 <notmain+0x90>
2003d4: 52800033 mov w19, #0x1 // #1
2003d8: 17ffffe3 b 200364 <notmain+0x84>
2003dc: d503201f nop
2003e0: 531c6f5a lsl w26, w26, #4
2003e4: 52800013 mov w19, #0x0 // #0
2003e8: 17ffffdf b 200364 <notmain+0x84>
2003ec: d503201f nop
2003f0: 51001c01 sub w1, w0, #0x7
2003f4: 7100e81f cmp w0, #0x3a
2003f8: 1a802020 csel w0, w1, w0, cs
2003fc: 11000673 add w19, w19, #0x1
200400: 12000c00 and w0, w0, #0xf
200404: 2a1a1000 orr w0, w0, w26, lsl #4
200408: 12003c1a and w26, w0, #0xffff
20040c: 17ffffd6 b 200364 <notmain+0x84>
200410: 7100e81f cmp w0, #0x3a
200414: 51001c01 sub w1, w0, #0x7
200418: 1a802020 csel w0, w1, w0, cs
20041c: 12000c00 and w0, w0, #0xf
200420: 2a141014 orr w20, w0, w20, lsl #4
200424: 12001e94 and w20, w20, #0xff
200428: 7100069f cmp w20, #0x1
20042c: 540005e0 b.eq 2004e8 <notmain+0x208>
200430: 34000594 cbz w20, 2004e0 <notmain+0x200>
200434: 71000a9f cmp w20, #0x2
200438: 1a9f0333 csel w19, w25, wzr, eq
20043c: 17ffffca b 200364 <notmain+0x84>
200440: 51001c01 sub w1, w0, #0x7
200444: 7100e81f cmp w0, #0x3a
200448: 1a802020 csel w0, w1, w0, cs
20044c: 52800113 mov w19, #0x8 // #8
200450: 12000c00 and w0, w0, #0xf
200454: 2a141014 orr w20, w0, w20, lsl #4
200458: 12001e94 and w20, w20, #0xff
20045c: 17ffffc2 b 200364 <notmain+0x84>
200460: 51001c01 sub w1, w0, #0x7
200464: 7100e81f cmp w0, #0x3a
200468: 1a802020 csel w0, w1, w0, cs
20046c: 11000673 add w19, w19, #0x1
200470: 12000c00 and w0, w0, #0xf
200474: 2a161016 orr w22, w0, w22, lsl #4
200478: 12003ed6 and w22, w22, #0xffff
20047c: 2a160356 orr w22, w26, w22
200480: 17ffffb9 b 200364 <notmain+0x84>
200484: d503201f nop
200488: 528001a0 mov w0, #0xd // #13
20048c: 97ffff07 bl 2000a8 <uart_send>
200490: 528005a0 mov w0, #0x2d // #45
200494: 97ffff05 bl 2000a8 <uart_send>
200498: 528005a0 mov w0, #0x2d // #45
20049c: 97ffff03 bl 2000a8 <uart_send>
2004a0: 528001a0 mov w0, #0xd // #13
2004a4: 97ffff01 bl 2000a8 <uart_send>
2004a8: 52800140 mov w0, #0xa // #10
2004ac: 97fffeff bl 2000a8 <uart_send>
2004b0: 52800140 mov w0, #0xa // #10
2004b4: 97fffefd bl 2000a8 <uart_send>
2004b8: 52900000 mov w0, #0x8000 // #32768
2004bc: 97fffedf bl 200038 <BRANCHTO>
2004c0: 52800000 mov w0, #0x0 // #0
2004c4: a94153f3 ldp x19, x20, [sp,#16]
2004c8: a9425bf5 ldp x21, x22, [sp,#32]
2004cc: a94363f7 ldp x23, x24, [sp,#48]
2004d0: a9446bf9 ldp x25, x26, [sp,#64]
2004d4: a8c57bfd ldp x29, x30, [sp],#80
2004d8: d65f03c0 ret
2004dc: d503201f nop
2004e0: 528001d3 mov w19, #0xe // #14
2004e4: 17ffffa0 b 200364 <notmain+0x84>
2004e8: 2a1803e0 mov w0, w24
2004ec: 52800013 mov w19, #0x0 // #0
2004f0: 97ffff16 bl 200148 <hexstring>
2004f4: 17ffff9c b 200364 <notmain+0x84>
2004f8: 5ac00af7 rev w23, w23
2004fc: 2a1603e0 mov w0, w22
200500: 2a1703e1 mov w1, w23
200504: 0b1802d8 add w24, w22, w24
200508: 528001d3 mov w19, #0xe // #14
20050c: 0b1802f8 add w24, w23, w24
200510: 97fffec4 bl 200020 <PUT32>
200514: 110012d6 add w22, w22, #0x4
200518: 17ffff93 b 200364 <notmain+0x84>
20051c: d503201f nop
Disassembly of section .rodata:
0000000000200520 <.rodata>:
200520: 2f2f0808 .word 0x2f2f0808
200524: 1b272f2f .word 0x1b272f2f
200528: 13131313 .word 0x13131313
20052c: 0101010f .word 0x0101010f
200530: 01010101 .word 0x01010101
200534: 00000001 .word 0x00000001
Disassembly of section .comment:
0000000000000000 <.comment>:
0: 3a434347 ccmn w26, w3, #0x7, mi
4: 4e472820 trn1 v0.8h, v1.8h, v7.8h
8: 35202955 cbnz w21, 40530 <_start+0x40530>
c: 302e332e adr x14, 5c671 <_start+0x5c671>
...

View File

@@ -1,2 +0,0 @@
arm_control=0x200
kernel_old=1

Binary file not shown.

View File

@@ -1,12 +0,0 @@
MEMORY
{
ram : ORIGIN = 0x0000, LENGTH = 0x1000000
}
SECTIONS
{
.text : { *(.text*) } > ram
.bss : { *(.bss*) } > ram
}

View File

@@ -1,150 +0,0 @@
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
#define PBASE 0x3F000000
extern void PUT32 ( unsigned int, unsigned int );
extern unsigned int GET32 ( unsigned int );
extern void dummy ( unsigned int );
#define ARM_TIMER_CTL (PBASE+0x0000B408)
#define ARM_TIMER_CNT (PBASE+0x0000B420)
#define GPFSEL1 (PBASE+0x00200004)
#define GPSET0 (PBASE+0x0020001C)
#define GPCLR0 (PBASE+0x00200028)
#define GPPUD (PBASE+0x00200094)
#define GPPUDCLK0 (PBASE+0x00200098)
#define AUX_ENABLES (PBASE+0x00215004)
#define AUX_MU_IO_REG (PBASE+0x00215040)
#define AUX_MU_IER_REG (PBASE+0x00215044)
#define AUX_MU_IIR_REG (PBASE+0x00215048)
#define AUX_MU_LCR_REG (PBASE+0x0021504C)
#define AUX_MU_MCR_REG (PBASE+0x00215050)
#define AUX_MU_LSR_REG (PBASE+0x00215054)
#define AUX_MU_MSR_REG (PBASE+0x00215058)
#define AUX_MU_SCRATCH (PBASE+0x0021505C)
#define AUX_MU_CNTL_REG (PBASE+0x00215060)
#define AUX_MU_STAT_REG (PBASE+0x00215064)
#define AUX_MU_BAUD_REG (PBASE+0x00215068)
//GPIO14 TXD0 and TXD1
//GPIO15 RXD0 and RXD1
//------------------------------------------------------------------------
unsigned int uart_lcr ( void )
{
return(GET32(AUX_MU_LSR_REG));
}
//------------------------------------------------------------------------
unsigned int uart_recv ( void )
{
while(1)
{
if(GET32(AUX_MU_LSR_REG)&0x01) break;
}
return(GET32(AUX_MU_IO_REG)&0xFF);
}
//------------------------------------------------------------------------
unsigned int uart_check ( void )
{
if(GET32(AUX_MU_LSR_REG)&0x01) return(1);
return(0);
}
//------------------------------------------------------------------------
void uart_send ( unsigned int c )
{
while(1)
{
if(GET32(AUX_MU_LSR_REG)&0x20) break;
}
PUT32(AUX_MU_IO_REG,c);
}
//------------------------------------------------------------------------
void uart_flush ( void )
{
while(1)
{
if((GET32(AUX_MU_LSR_REG)&0x100)==0) break;
}
}
//------------------------------------------------------------------------
void hexstrings ( unsigned int d )
{
//unsigned int ra;
unsigned int rb;
unsigned int rc;
rb=32;
while(1)
{
rb-=4;
rc=(d>>rb)&0xF;
if(rc>9) rc+=0x37; else rc+=0x30;
uart_send(rc);
if(rb==0) break;
}
uart_send(0x20);
}
//------------------------------------------------------------------------
void hexstring ( unsigned int d )
{
hexstrings(d);
uart_send(0x0D);
uart_send(0x0A);
}
//------------------------------------------------------------------------
void uart_init ( void )
{
unsigned int ra;
PUT32(AUX_ENABLES,1);
PUT32(AUX_MU_IER_REG,0);
PUT32(AUX_MU_CNTL_REG,0);
PUT32(AUX_MU_LCR_REG,3);
PUT32(AUX_MU_MCR_REG,0);
PUT32(AUX_MU_IER_REG,0);
PUT32(AUX_MU_IIR_REG,0xC6);
PUT32(AUX_MU_BAUD_REG,270);
ra=GET32(GPFSEL1);
ra&=~(7<<12); //gpio14
ra|=2<<12; //alt5
ra&=~(7<<15); //gpio15
ra|=2<<15; //alt5
PUT32(GPFSEL1,ra);
PUT32(GPPUD,0);
for(ra=0;ra<150;ra++) dummy(ra);
PUT32(GPPUDCLK0,(1<<14)|(1<<15));
for(ra=0;ra<150;ra++) dummy(ra);
PUT32(GPPUDCLK0,0);
PUT32(AUX_MU_CNTL_REG,3);
}
//------------------------------------------------------------------------
void timer_init ( void )
{
//0xF9+1 = 250
//250MHz/250 = 1MHz
PUT32(ARM_TIMER_CTL,0x00F90000);
PUT32(ARM_TIMER_CTL,0x00F90200);
}
//-------------------------------------------------------------------------
unsigned int timer_tick ( void )
{
return(GET32(ARM_TIMER_CNT));
}
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//
// Copyright (c) 2012 David Welch dwelch@dwelch.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//-------------------------------------------------------------------------

Binary file not shown.

Binary file not shown.

View File

@@ -1,62 +0,0 @@
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
.globl _start
_start:
b skip
.space 0x200000-0x0004,0
skip:
mrs x0,mpidr_el1
mov x1,#0xC1000000
bic x0,x0,x1
cbz x0,master
b hang
master:
mov sp,#0x08000000
bl notmain
hang: b hang
.globl PUT32
PUT32:
str w1,[x0]
ret
.globl GET32
GET32:
ldr w0,[x0]
ret
.globl GETPC
GETPC:
mov x0,x30
ret
.globl BRANCHTO
BRANCHTO:
mov w30,w0
ret
.globl dummy
dummy:
ret
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//
// Copyright (c) 2012 David Welch dwelch@dwelch.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//-------------------------------------------------------------------------

View File

@@ -1,40 +0,0 @@
ARMGNU ?= aarch64-none-elf
COPS = -Wall -O2 -nostdlib -nostartfiles -ffreestanding
gcc : uart02.hex uart02.bin
all : gcc clang
clean :
rm -f *.o
rm -f *.bin
rm -f *.hex
rm -f *.elf
rm -f *.list
rm -f *.img
rm -f *.bc
rm -f *.clang.opt.s
vectors.o : vectors.s
$(ARMGNU)-as vectors.s -o vectors.o
uart02.o : uart02.c
$(ARMGNU)-gcc $(COPS) -c uart02.c -o uart02.o
uart02.elf : memmap vectors.o uart02.o
$(ARMGNU)-ld vectors.o uart02.o -T memmap -o uart02.elf
$(ARMGNU)-objdump -D uart02.elf > uart02.list
uart02.bin : uart02.elf
$(ARMGNU)-objcopy uart02.elf -O binary uart02.bin
uart02.hex : uart02.elf
$(ARMGNU)-objcopy uart02.elf -O ihex uart02.hex

View File

@@ -1,21 +0,0 @@
See the top level README for information on where to find the
schematic and programmers reference manual for the ARM processor
on the raspberry pi. Also find information on how to load and run
these programs.
Based on uart01, this one enables the uart rxd1 receiver (gpio15).
It starts by printing 12345678 then whatever you type on the terminal
is echoed back.
See the top level README file for information on how to connect the
raspi uart to your host computer.
Using a dumb terminal (minicom) 115200 board No parity 8 bits 1 stop
bit, no flow control (might have to exit minicom and start again for
the flow control setting to take). What you type on the dumb terminal
comes back.
This is an aarch64 example. It is meant to be loaded using the
bootloader07 (64bit) bootloader. It is specifically for the
raspberry pi 3.

View File

@@ -1,12 +0,0 @@
MEMORY
{
ram : ORIGIN = 0x8000, LENGTH = 0x1000
}
SECTIONS
{
.text : { *(.text*) } > ram
.bss : { *(.bss*) } > ram
}

View File

@@ -1,159 +0,0 @@
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
extern void PUT32 ( unsigned int, unsigned int );
extern unsigned int GET32 ( unsigned int );
extern void dummy ( unsigned int );
#define GPFSEL1 0x3F200004
#define GPSET0 0x3F20001C
#define GPCLR0 0x3F200028
#define GPPUD 0x3F200094
#define GPPUDCLK0 0x3F200098
#define AUX_ENABLES 0x3F215004
#define AUX_MU_IO_REG 0x3F215040
#define AUX_MU_IER_REG 0x3F215044
#define AUX_MU_IIR_REG 0x3F215048
#define AUX_MU_LCR_REG 0x3F21504C
#define AUX_MU_MCR_REG 0x3F215050
#define AUX_MU_LSR_REG 0x3F215054
#define AUX_MU_MSR_REG 0x3F215058
#define AUX_MU_SCRATCH 0x3F21505C
#define AUX_MU_CNTL_REG 0x3F215060
#define AUX_MU_STAT_REG 0x3F215064
#define AUX_MU_BAUD_REG 0x3F215068
//GPIO14 TXD0 and TXD1
//GPIO15 RXD0 and RXD1
//alt function 5 for uart1
//alt function 0 for uart0
//((250,000,000/115200)/8)-1 = 270
//GPIO14 TXD0 and TXD1
//GPIO15 RXD0 and RXD1
//------------------------------------------------------------------------
unsigned int uart_lcr ( void )
{
return(GET32(AUX_MU_LSR_REG));
}
//------------------------------------------------------------------------
unsigned int uart_recv ( void )
{
while(1)
{
if(GET32(AUX_MU_LSR_REG)&0x01) break;
}
return(GET32(AUX_MU_IO_REG)&0xFF);
}
//------------------------------------------------------------------------
unsigned int uart_check ( void )
{
if(GET32(AUX_MU_LSR_REG)&0x01) return(1);
return(0);
}
//------------------------------------------------------------------------
void uart_send ( unsigned int c )
{
while(1)
{
if(GET32(AUX_MU_LSR_REG)&0x20) break;
}
PUT32(AUX_MU_IO_REG,c);
}
//------------------------------------------------------------------------
void uart_flush ( void )
{
while(1)
{
if((GET32(AUX_MU_LSR_REG)&0x100)==0) break;
}
}
//------------------------------------------------------------------------
void hexstrings ( unsigned int d )
{
//unsigned int ra;
unsigned int rb;
unsigned int rc;
rb=32;
while(1)
{
rb-=4;
rc=(d>>rb)&0xF;
if(rc>9) rc+=0x37; else rc+=0x30;
uart_send(rc);
if(rb==0) break;
}
uart_send(0x20);
}
//------------------------------------------------------------------------
void hexstring ( unsigned int d )
{
hexstrings(d);
uart_send(0x0D);
uart_send(0x0A);
}
//------------------------------------------------------------------------
void uart_init ( void )
{
unsigned int ra;
PUT32(AUX_ENABLES,1);
PUT32(AUX_MU_IER_REG,0);
PUT32(AUX_MU_CNTL_REG,0);
PUT32(AUX_MU_LCR_REG,3);
PUT32(AUX_MU_MCR_REG,0);
PUT32(AUX_MU_IER_REG,0);
PUT32(AUX_MU_IIR_REG,0xC6);
PUT32(AUX_MU_BAUD_REG,270);
ra=GET32(GPFSEL1);
ra&=~(7<<12); //gpio14
ra|=2<<12; //alt5
ra&=~(7<<15); //gpio15
ra|=2<<15; //alt5
PUT32(GPFSEL1,ra);
PUT32(GPPUD,0);
for(ra=0;ra<150;ra++) dummy(ra);
PUT32(GPPUDCLK0,(1<<14)|(1<<15));
for(ra=0;ra<150;ra++) dummy(ra);
PUT32(GPPUDCLK0,0);
PUT32(AUX_MU_CNTL_REG,3);
}
//------------------------------------------------------------------------
int notmain ( unsigned int pc )
{
unsigned int ra;
uart_init();
hexstring(0x12345678);
hexstring(0x87654321);
hexstring(pc);
while(1)
{
ra=uart_recv();
if(ra==0x0D) uart_send(0x0A);
uart_send(ra);
}
return(0);
}
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//
// Copyright (c) 2012 David Welch dwelch@dwelch.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//-------------------------------------------------------------------------

View File

@@ -1,43 +0,0 @@
.globl _start
_start:
mrs x0,mpidr_el1
mov x1,#0xC1000000
bic x0,x0,x1
cbz x0,master
b hang
master:
mov sp,#0x8000
bl skip
skip:
mov x0,x30
bl notmain
hang: b hang
.globl PUT32
PUT32:
str w1,[x0]
ret
.globl GET32
GET32:
ldr w0,[x0]
ret
.globl dummy
dummy:
ret
//-------------------------------------------------------------------------
//
// Copyright (c) 2012 David Welch dwelch@dwelch.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//-------------------------------------------------------------------------

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,11 +0,0 @@
:1080000002D9A0E3050000EBFEFFFFEA001080E5C7
:108010001EFF2FE1000090E51EFF2FE11EFF2FE164
:1080200010482DE954409FE504B08DE20400A0E122
:10803000F7FFFFEB0707C0E3011780E30400A0E1AF
:10804000F1FFFFEB38009FE50118A0E3EEFFFFEB27
:1080500030009FE5EEFFFFEB010510E3FBFFFF0A99
:1080600024009FE50118A0E3E7FFFFEB14009FE564
:10807000E7FFFFEB010510E3FBFFFF1AF0FFFFEA4C
:10808000040020201C002020043000202800202094
:040000030000800079
:00000001FF

Binary file not shown.

Binary file not shown.

View File

@@ -1,86 +0,0 @@
blinker02.clang.opt.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000005 bl 8020 <notmain>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <PUT32>:
800c: e5801000 str r1, [r0]
8010: e12fff1e bx lr
00008014 <GET32>:
8014: e5900000 ldr r0, [r0]
8018: e12fff1e bx lr
0000801c <dummy>:
801c: e12fff1e bx lr
00008020 <notmain>:
8020: e92d4810 push {r4, fp, lr}
8024: e59f4054 ldr r4, [pc, #84] ; 8080 <notmain+0x60>
8028: e28db004 add fp, sp, #4
802c: e1a00004 mov r0, r4
8030: ebfffff7 bl 8014 <GET32>
8034: e3c00707 bic r0, r0, #1835008 ; 0x1c0000
8038: e3801701 orr r1, r0, #262144 ; 0x40000
803c: e1a00004 mov r0, r4
8040: ebfffff1 bl 800c <PUT32>
8044: e59f0038 ldr r0, [pc, #56] ; 8084 <notmain+0x64>
8048: e3a01801 mov r1, #65536 ; 0x10000
804c: ebffffee bl 800c <PUT32>
8050: e59f0030 ldr r0, [pc, #48] ; 8088 <notmain+0x68>
8054: ebffffee bl 8014 <GET32>
8058: e3100501 tst r0, #4194304 ; 0x400000
805c: 0afffffb beq 8050 <notmain+0x30>
8060: e59f0024 ldr r0, [pc, #36] ; 808c <notmain+0x6c>
8064: e3a01801 mov r1, #65536 ; 0x10000
8068: ebffffe7 bl 800c <PUT32>
806c: e59f0014 ldr r0, [pc, #20] ; 8088 <notmain+0x68>
8070: ebffffe7 bl 8014 <GET32>
8074: e3100501 tst r0, #4194304 ; 0x400000
8078: 1afffffb bne 806c <notmain+0x4c>
807c: eafffff0 b 8044 <notmain+0x24>
8080: 20200004 eorcs r0, r0, r4
8084: 2020001c eorcs r0, r0, ip, lsl r0
8088: 20003004 andcs r3, r0, r4
808c: 20200028 eorcs r0, r0, r8, lsr #32
Disassembly of section .ARM.attributes:
00000000 <.ARM.attributes>:
0: 00002f41 andeq r2, r0, r1, asr #30
4: 61656100 cmnvs r5, r0, lsl #2
8: 01006962 tsteq r0, r2, ror #18
c: 00000025 andeq r0, r0, r5, lsr #32
10: 4d524105 ldfmie f4, [r2, #-20] ; 0xffffffec
14: 36373131 ; <UNDEFINED> instruction: 0x36373131
18: 2d465a4a vstrcs s11, [r6, #-296] ; 0xfffffed8
1c: 06060053 ; <UNDEFINED> instruction: 0x06060053
20: 01090108 tsteq r9, r8, lsl #2
24: 0114020a tsteq r4, sl, lsl #4
28: 03170115 tsteq r7, #1073741829 ; 0x40000005
2c: 01440118 cmpeq r4, r8, lsl r1
Disassembly of section .comment:
00000000 <.comment>:
0: 6e616c63 cdpvs 12, 6, cr6, cr1, cr3, {3}
4: 65762067 ldrbvs r2, [r6, #-103]! ; 0x67
8: 6f697372 svcvs 0x00697372
c: 2e33206e cdpcs 0, 3, cr2, cr3, cr14, {3}
10: 62282034 eorvs r2, r8, #52 ; 0x34
14: 636e6172 cmnvs lr, #-2147483620 ; 0x8000001c
18: 2f736568 svccs 0x00736568
1c: 656c6572 strbvs r6, [ip, #-1394]! ; 0x572
20: 5f657361 svcpl 0x00657361
24: 32203433 eorcc r3, r0, #855638016 ; 0x33000000
28: 36303130 ; <UNDEFINED> instruction: 0x36303130
2c: Address 0x000000000000002c is out of bounds.

Binary file not shown.

View File

@@ -1,68 +0,0 @@
.syntax unified
.cpu arm1176jzf-s
.eabi_attribute 6, 6
.eabi_attribute 8, 1
.fpu vfpv2
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.file "blinker02.clang.opt.bc"
.text
.globl notmain
.align 2
.type notmain,%function
notmain: @ @notmain
@ BB#0: @ %entry
push {r4, r11, lr}
ldr r4, .LCPI0_0
add r11, sp, #4
mov r0, r4
bl GET32
bic r0, r0, #1835008
orr r1, r0, #262144
mov r0, r4
bl PUT32
.LBB0_1: @ %while.body
@ =>This Loop Header: Depth=1
@ Child Loop BB0_2 Depth 2
@ Child Loop BB0_4 Depth 2
ldr r0, .LCPI0_1
mov r1, #65536
bl PUT32
.LBB0_2: @ %while.body2
@ Parent Loop BB0_1 Depth=1
@ => This Inner Loop Header: Depth=2
ldr r0, .LCPI0_2
bl GET32
tst r0, #4194304
beq .LBB0_2
@ BB#3: @ %while.end
@ in Loop: Header=BB0_1 Depth=1
ldr r0, .LCPI0_3
mov r1, #65536
bl PUT32
.LBB0_4: @ %while.body6
@ Parent Loop BB0_1 Depth=1
@ => This Inner Loop Header: Depth=2
ldr r0, .LCPI0_2
bl GET32
tst r0, #4194304
bne .LBB0_4
b .LBB0_1
.align 2
@ BB#5:
.LCPI0_0:
.long 538968068 @ 0x20200004
.LCPI0_1:
.long 538968092 @ 0x2020001c
.LCPI0_2:
.long 536883204 @ 0x20003004
.LCPI0_3:
.long 538968104 @ 0x20200028
.Ltmp0:
.size notmain, .Ltmp0-notmain
.ident "clang version 3.4 (branches/release_34 201060)"

Binary file not shown.

View File

@@ -1,11 +0,0 @@
:1080000002D9A0E3050000EBFEFFFFEA001080E5C7
:108010001EFF2FE1000090E51EFF2FE11EFF2FE164
:1080200008402DE94C009FE5F9FFFFEB0717C0E37F
:10803000011781E33C009FE5F3FFFFEB38009FE56C
:108040000118A0E3F0FFFFEB30009FE5F0FFFFEB2E
:10805000010510E3FBFFFF0A24009FE50118A0E3E0
:10806000E9FFFFEB14009FE5E9FFFFEB010510E3DB
:10807000FBFFFF1AF0FFFFEA040020201C00202075
:0880800004300020280020203C
:040000030000800079
:00000001FF

View File

@@ -1,76 +0,0 @@
blinker02.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000005 bl 8020 <notmain>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <PUT32>:
800c: e5801000 str r1, [r0]
8010: e12fff1e bx lr
00008014 <GET32>:
8014: e5900000 ldr r0, [r0]
8018: e12fff1e bx lr
0000801c <dummy>:
801c: e12fff1e bx lr
00008020 <notmain>:
8020: e92d4008 push {r3, lr}
8024: e59f004c ldr r0, [pc, #76] ; 8078 <notmain+0x58>
8028: ebfffff9 bl 8014 <GET32>
802c: e3c01707 bic r1, r0, #1835008 ; 0x1c0000
8030: e3811701 orr r1, r1, #262144 ; 0x40000
8034: e59f003c ldr r0, [pc, #60] ; 8078 <notmain+0x58>
8038: ebfffff3 bl 800c <PUT32>
803c: e59f0038 ldr r0, [pc, #56] ; 807c <notmain+0x5c>
8040: e3a01801 mov r1, #65536 ; 0x10000
8044: ebfffff0 bl 800c <PUT32>
8048: e59f0030 ldr r0, [pc, #48] ; 8080 <notmain+0x60>
804c: ebfffff0 bl 8014 <GET32>
8050: e3100501 tst r0, #4194304 ; 0x400000
8054: 0afffffb beq 8048 <notmain+0x28>
8058: e59f0024 ldr r0, [pc, #36] ; 8084 <notmain+0x64>
805c: e3a01801 mov r1, #65536 ; 0x10000
8060: ebffffe9 bl 800c <PUT32>
8064: e59f0014 ldr r0, [pc, #20] ; 8080 <notmain+0x60>
8068: ebffffe9 bl 8014 <GET32>
806c: e3100501 tst r0, #4194304 ; 0x400000
8070: 1afffffb bne 8064 <notmain+0x44>
8074: eafffff0 b 803c <notmain+0x1c>
8078: 20200004 eorcs r0, r0, r4
807c: 2020001c eorcs r0, r0, ip, lsl r0
8080: 20003004 andcs r3, r0, r4
8084: 20200028 eorcs r0, r0, r8, lsr #32
Disassembly of section .ARM.attributes:
00000000 <.ARM.attributes>:
0: 00002a41 andeq r2, r0, r1, asr #20
4: 61656100 cmnvs r5, r0, lsl #2
8: 01006962 tsteq r0, r2, ror #18
c: 00000020 andeq r0, r0, r0, lsr #32
10: 4d524105 ldfmie f4, [r2, #-20] ; 0xffffffec
14: 54347620 ldrtpl r7, [r4], #-1568 ; 0x620
18: 08020600 stmdaeq r2, {r9, sl}
1c: 12010901 andne r0, r1, #16384 ; 0x4000
20: 15011404 strne r1, [r1, #-1028] ; 0x404
24: 18031701 stmdane r3, {r0, r8, r9, sl, ip}
28: Address 0x0000000000000028 is out of bounds.
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <notmain+0x10c8d04>
4: 4e472820 cdpmi 8, 4, cr2, cr7, cr0, {1}
8: 34202955 strtcc r2, [r0], #-2389 ; 0x955
c: 322e382e eorcc r3, lr, #3014656 ; 0x2e0000
...

Binary file not shown.

Binary file not shown.

View File

@@ -44,7 +44,8 @@ LLCOPS = -march=arm -mcpu=arm1176jzf-s
LLCOPS0 = -march=arm
LLCOPS1 = -march=arm -mcpu=arm1176jzf-s
COPS = -Wall -O2 -nostdlib -nostartfiles -ffreestanding
OOPS = -std-compile-opts
#OOPS = -std-compile-opts
OOPS = -std-link-opts
clang : blinker03.clang.hex blinker03.clang.bin

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,17 +0,0 @@
:1080000002D9A0E3050000EBFEFFFFEA001080E5C7
:108010001EFF2FE1000090E51EFF2FE11EFF2FE164
:10802000F0402DE9A4409FE50400A0E1F8FFFFEB3C
:108030000707C0E3011780E30400A0E1F2FFFFEBB4
:108040008C409FE5F918A0E30400A0E1EEFFFFEBF0
:10805000021CA0E3F91881E30400A0E1EAFFFFEBB2
:1080600070009FE5EAFFFFEB095CA0E3126CA0E360
:108070000040A0E13D5885E37A6886E3000000EA0D
:10808000064084E050009FE50118A0E3DEFFFFEB0F
:1080900040009FE5DEFFFFEB040040E0050050E1FB
:1080A000FAFFFF3A34009FE50118A0E3D6FFFFEB8B
:1080B0002C009FE5047040E018009FE5D4FFFFEB23
:1080C000000087E0050050E1FAFFFF3AEBFFFFEA0E
:1080D0000400202008B4002020B400201C00202030
:0880E0002800202000F7C2FF78
:040000030000800079
:00000001FF

Binary file not shown.

Binary file not shown.

View File

@@ -1,89 +0,0 @@
blinker03.clang.opt.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000005 bl 8020 <notmain>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <PUT32>:
800c: e5801000 str r1, [r0]
8010: e12fff1e bx lr
00008014 <GET32>:
8014: e5900000 ldr r0, [r0]
8018: e12fff1e bx lr
0000801c <dummy>:
801c: e12fff1e bx lr
00008020 <notmain>:
8020: e92d40f0 push {r4, r5, r6, r7, lr}
8024: e59f40a4 ldr r4, [pc, #164] ; 80d0 <notmain+0xb0>
8028: e1a00004 mov r0, r4
802c: ebfffff8 bl 8014 <GET32>
8030: e3c00707 bic r0, r0, #1835008 ; 0x1c0000
8034: e3801701 orr r1, r0, #262144 ; 0x40000
8038: e1a00004 mov r0, r4
803c: ebfffff2 bl 800c <PUT32>
8040: e59f408c ldr r4, [pc, #140] ; 80d4 <notmain+0xb4>
8044: e3a018f9 mov r1, #16318464 ; 0xf90000
8048: e1a00004 mov r0, r4
804c: ebffffee bl 800c <PUT32>
8050: e3a01c02 mov r1, #512 ; 0x200
8054: e38118f9 orr r1, r1, #16318464 ; 0xf90000
8058: e1a00004 mov r0, r4
805c: ebffffea bl 800c <PUT32>
8060: e59f0070 ldr r0, [pc, #112] ; 80d8 <notmain+0xb8>
8064: ebffffea bl 8014 <GET32>
8068: e3a05c09 mov r5, #2304 ; 0x900
806c: e3a06c12 mov r6, #4608 ; 0x1200
8070: e1a04000 mov r4, r0
8074: e385583d orr r5, r5, #3997696 ; 0x3d0000
8078: e386687a orr r6, r6, #7995392 ; 0x7a0000
807c: ea000000 b 8084 <notmain+0x64>
8080: e0844006 add r4, r4, r6
8084: e59f0050 ldr r0, [pc, #80] ; 80dc <notmain+0xbc>
8088: e3a01801 mov r1, #65536 ; 0x10000
808c: ebffffde bl 800c <PUT32>
8090: e59f0040 ldr r0, [pc, #64] ; 80d8 <notmain+0xb8>
8094: ebffffde bl 8014 <GET32>
8098: e0400004 sub r0, r0, r4
809c: e1500005 cmp r0, r5
80a0: 3afffffa bcc 8090 <notmain+0x70>
80a4: e59f0034 ldr r0, [pc, #52] ; 80e0 <notmain+0xc0>
80a8: e3a01801 mov r1, #65536 ; 0x10000
80ac: ebffffd6 bl 800c <PUT32>
80b0: e59f002c ldr r0, [pc, #44] ; 80e4 <notmain+0xc4>
80b4: e0407004 sub r7, r0, r4
80b8: e59f0018 ldr r0, [pc, #24] ; 80d8 <notmain+0xb8>
80bc: ebffffd4 bl 8014 <GET32>
80c0: e0870000 add r0, r7, r0
80c4: e1500005 cmp r0, r5
80c8: 3afffffa bcc 80b8 <notmain+0x98>
80cc: eaffffeb b 8080 <notmain+0x60>
80d0: 20200004 eorcs r0, r0, r4
80d4: 2000b408 andcs fp, r0, r8, lsl #8
80d8: 2000b420 andcs fp, r0, r0, lsr #8
80dc: 2020001c eorcs r0, r0, ip, lsl r0
80e0: 20200028 eorcs r0, r0, r8, lsr #32
80e4: ffc2f700 ; <UNDEFINED> instruction: 0xffc2f700
Disassembly of section .ARM.attributes:
00000000 <.ARM.attributes>:
0: 00002141 andeq r2, r0, r1, asr #2
4: 61656100 cmnvs r5, r0, lsl #2
8: 01006962 tsteq r0, r2, ror #18
c: 00000017 andeq r0, r0, r7, lsl r0
10: 01080206 tsteq r8, r6, lsl #4
14: 020a0109 andeq r0, sl, #1073741826 ; 0x40000002
18: 01150114 tsteq r5, r4, lsl r1
1c: 01180317 tsteq r8, r7, lsl r3
20: Address 0x00000020 is out of bounds.

Binary file not shown.

View File

@@ -1,91 +0,0 @@
.syntax unified
.eabi_attribute 10, 2
.fpu vfpv2
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.file "blinker03.clang.opt.bc"
.text
.globl notmain
.align 2
.type notmain,%function
notmain: @ @notmain
@ BB#0: @ %entry
push {r4, r5, r6, r7, lr}
ldr r4, .LCPI0_0
mov r0, r4
bl GET32
bic r0, r0, #1835008
orr r1, r0, #262144
mov r0, r4
bl PUT32
ldr r4, .LCPI0_1
mov r1, #16318464
mov r0, r4
bl PUT32
mov r1, #512
orr r1, r1, #16318464
mov r0, r4
bl PUT32
ldr r0, .LCPI0_2
bl GET32
mov r5, #2304
mov r6, #4608
mov r4, r0
orr r5, r5, #3997696
orr r6, r6, #7995392
b .LBB0_2
.LBB0_1: @ %while.end12
@ in Loop: Header=BB0_2 Depth=1
add r4, r4, r6
.LBB0_2: @ %while.body
@ =>This Loop Header: Depth=1
@ Child Loop BB0_5 Depth 2
@ Child Loop BB0_3 Depth 2
ldr r0, .LCPI0_3
mov r1, #65536
bl PUT32
.LBB0_3: @ %while.body3
@ Parent Loop BB0_2 Depth=1
@ => This Inner Loop Header: Depth=2
ldr r0, .LCPI0_2
bl GET32
sub r0, r0, r4
cmp r0, r5
blo .LBB0_3
@ BB#4: @ %while.end
@ in Loop: Header=BB0_2 Depth=1
ldr r0, .LCPI0_4
mov r1, #65536
bl PUT32
ldr r0, .LCPI0_5
sub r7, r0, r4
.LBB0_5: @ %while.body6
@ Parent Loop BB0_2 Depth=1
@ => This Inner Loop Header: Depth=2
ldr r0, .LCPI0_2
bl GET32
add r0, r7, r0
cmp r0, r5
blo .LBB0_5
b .LBB0_1
.align 2
@ BB#6:
.LCPI0_0:
.long 538968068 @ 0x20200004
.LCPI0_1:
.long 536917000 @ 0x2000b408
.LCPI0_2:
.long 536917024 @ 0x2000b420
.LCPI0_3:
.long 538968092 @ 0x2020001c
.LCPI0_4:
.long 538968104 @ 0x20200028
.LCPI0_5:
.long 4290967296 @ 0xffc2f700
.Ltmp0:
.size notmain, .Ltmp0-notmain

Binary file not shown.

View File

@@ -1,16 +0,0 @@
:1080000002D9A0E3050000EBFEFFFFEA001080E5C7
:108010001EFF2FE1000090E51EFF2FE11EFF2FE164
:1080200070402DE98C009FE5F9FFFFEB0717C0E3D7
:10803000011781E37C009FE5F3FFFFEB78009FE5EC
:10804000F918A0E3F0FFFFEB6C009FE56C109FE5D3
:10805000EDFFFFEB68009FE5EDFFFFEB64409FE560
:108060000050A0E160009FE50118A0E3E6FFFFEBF0
:108070004C009FE5E6FFFFEB000065E0040050E1E7
:10808000FAFFFF9A3D6885E240009FE50118A0E3F2
:10809000096C86E2DCFFFFEB24009FE5DCFFFFEBD1
:1080A000002066E0040052E1FAFFFF9A7A5885E268
:1080B000125C85E2EAFFFFEA0400202008B40020F9
:1080C0000002F90020B40020FF083D001C00202021
:0480D0002800202044
:040000030000800079
:00000001FF

View File

@@ -1,103 +0,0 @@
blinker03.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000005 bl 8020 <notmain>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <PUT32>:
800c: e5801000 str r1, [r0]
8010: e12fff1e bx lr
00008014 <GET32>:
8014: e5900000 ldr r0, [r0]
8018: e12fff1e bx lr
0000801c <dummy>:
801c: e12fff1e bx lr
00008020 <notmain>:
8020: e92d4070 push {r4, r5, r6, lr}
8024: e59f008c ldr r0, [pc, #140] ; 80b8 <notmain+0x98>
8028: ebfffff9 bl 8014 <GET32>
802c: e3c01707 bic r1, r0, #1835008 ; 0x1c0000
8030: e3811701 orr r1, r1, #262144 ; 0x40000
8034: e59f007c ldr r0, [pc, #124] ; 80b8 <notmain+0x98>
8038: ebfffff3 bl 800c <PUT32>
803c: e59f0078 ldr r0, [pc, #120] ; 80bc <notmain+0x9c>
8040: e3a018f9 mov r1, #16318464 ; 0xf90000
8044: ebfffff0 bl 800c <PUT32>
8048: e59f006c ldr r0, [pc, #108] ; 80bc <notmain+0x9c>
804c: e59f106c ldr r1, [pc, #108] ; 80c0 <notmain+0xa0>
8050: ebffffed bl 800c <PUT32>
8054: e59f0068 ldr r0, [pc, #104] ; 80c4 <notmain+0xa4>
8058: ebffffed bl 8014 <GET32>
805c: e59f4064 ldr r4, [pc, #100] ; 80c8 <notmain+0xa8>
8060: e1a05000 mov r5, r0
8064: e59f0060 ldr r0, [pc, #96] ; 80cc <notmain+0xac>
8068: e3a01801 mov r1, #65536 ; 0x10000
806c: ebffffe6 bl 800c <PUT32>
8070: e59f004c ldr r0, [pc, #76] ; 80c4 <notmain+0xa4>
8074: ebffffe6 bl 8014 <GET32>
8078: e0650000 rsb r0, r5, r0
807c: e1500004 cmp r0, r4
8080: 9afffffa bls 8070 <notmain+0x50>
8084: e285683d add r6, r5, #3997696 ; 0x3d0000
8088: e59f0040 ldr r0, [pc, #64] ; 80d0 <notmain+0xb0>
808c: e3a01801 mov r1, #65536 ; 0x10000
8090: e2866c09 add r6, r6, #2304 ; 0x900
8094: ebffffdc bl 800c <PUT32>
8098: e59f0024 ldr r0, [pc, #36] ; 80c4 <notmain+0xa4>
809c: ebffffdc bl 8014 <GET32>
80a0: e0662000 rsb r2, r6, r0
80a4: e1520004 cmp r2, r4
80a8: 9afffffa bls 8098 <notmain+0x78>
80ac: e285587a add r5, r5, #7995392 ; 0x7a0000
80b0: e2855c12 add r5, r5, #4608 ; 0x1200
80b4: eaffffea b 8064 <notmain+0x44>
80b8: 20200004 eorcs r0, r0, r4
80bc: 2000b408 andcs fp, r0, r8, lsl #8
80c0: 00f90200 rscseq r0, r9, r0, lsl #4
80c4: 2000b420 andcs fp, r0, r0, lsr #8
80c8: 003d08ff ldrshteq r0, [sp], -pc
80cc: 2020001c eorcs r0, r0, ip, lsl r0
80d0: 20200028 eorcs r0, r0, r8, lsr #32
Disassembly of section .ARM.attributes:
00000000 <.ARM.attributes>:
0: 00002c41 andeq r2, r0, r1, asr #24
4: 61656100 cmnvs r5, r0, lsl #2
8: 01006962 tsteq r0, r2, ror #18
c: 00000022 andeq r0, r0, r2, lsr #32
10: 4d524105 ldfmie f4, [r2, #-20] ; 0xffffffec
14: 54347620 ldrtpl r7, [r4], #-1568 ; 0x620
18: 08020600 stmdaeq r2, {r9, sl}
1c: 12010901 andne r0, r1, #16384 ; 0x4000
20: 15011404 strne r1, [r1, #-1028] ; 0x404
24: 18031701 stmdane r3, {r0, r8, r9, sl, ip}
28: 2c011a01 stccs 10, cr1, [r1], {1}
2c: Address 0x000000000000002c is out of bounds.
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <notmain+0x10c8d04>
4: 6f532820 svcvs 0x00532820
8: 65637275 strbvs r7, [r3, #-629]! ; 0x275
c: 43207972 teqmi r0, #1867776 ; 0x1c8000
10: 4265646f rsbmi r6, r5, #1862270976 ; 0x6f000000
14: 68636e65 stmdavs r3!, {r0, r2, r5, r6, r9, sl, fp, sp, lr}^
18: 74694c20 strbtvc r4, [r9], #-3104 ; 0xc20
1c: 30322065 eorscc r2, r2, r5, rrx
20: 302e3131 eorcc r3, lr, r1, lsr r1
24: 39362d39 ldmdbcc r6!, {r0, r3, r4, r5, r8, sl, fp, sp}
28: 2e342029 cdpcs 0, 3, cr2, cr4, cr9, {1}
2c: 00312e36 eorseq r2, r1, r6, lsr lr

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,9 @@
See the top level README for information on where to find documentation
for the raspberry pi and the ARM processor inside. Also find information
on how to load and run these programs.
will write more on this. As of this time the GPU based bootstrap leaves
the ARM in HYP mode when we get control at address 0x8000. These
examples leave the arm in that mode.
These examples are for the pi2, see other directories for other
flavors of raspberry pi. Specifically these examples are for running
in HYP mode. As of this writing the GPU planted bootstrap places
the ARM in HYP mode. These examples assume the ARM is in this mode
as it affects how you do things compared to SVC mode.

View File

@@ -1,63 +0,0 @@
ARMGNU ?= arm-none-eabi
COPS = -Wall -O2 -nostdlib -nostartfiles -ffreestanding
gcc : kernel7.img
all : gcc clang
clean :
rm -f *.o
rm -f *.bin
rm -f *.hex
rm -f *.elf
rm -f *.list
rm -f *.img
rm -f *.bc
rm -f *.clang.s
vectors.o : vectors.s
$(ARMGNU)-as vectors.s -o vectors.o
bootloader07.o : bootloader07.c
$(ARMGNU)-gcc $(COPS) -c bootloader07.c -o bootloader07.o
periph.o : periph.c
$(ARMGNU)-gcc $(COPS) -c periph.c -o periph.o
kernel7.img : loader vectors.o periph.o bootloader07.o
$(ARMGNU)-ld vectors.o periph.o bootloader07.o -T loader -o bootloader07_rpi1.elf
$(ARMGNU)-objdump -D bootloader07_rpi1.elf > bootloader07_rpi1.list
$(ARMGNU)-objcopy bootloader07_rpi1.elf -O ihex bootloader07_rpi1.hex
$(ARMGNU)-objcopy bootloader07_rpi1.elf -O binary kernel7.img
LOPS = -Wall -m32 -emit-llvm
LLCOPS0 = -march=arm
LLCOPS1 = -march=arm -mcpu=arm1176jzf-s
LLCOPS = $(LLCOPS1)
COPS = -Wall -O2 -nostdlib -nostartfiles -ffreestanding
OOPSx = -std-compile-opts
OOPS = -std-link-opts
clang : bootloader07.clang.bin
bootloader07.bc : bootloader07.c
clang $(LOPS) -c bootloader07.c -o bootloader07.bc
periph.bc : periph.c
clang $(LOPS) -c periph.c -o periph.bc
bootloader07.clang.elf : loader vectors.o bootloader07.bc periph.bc
llvm-link periph.bc bootloader07.bc -o bootloader07.nopt.bc
opt $(OOPS) bootloader07.nopt.bc -o bootloader07.opt.bc
llc $(LLCOPS) bootloader07.opt.bc -o bootloader07.clang.s
$(ARMGNU)-as bootloader07.clang.s -o bootloader07.clang.o
$(ARMGNU)-ld -o bootloader07.clang.elf -T loader vectors.o bootloader07.clang.o
$(ARMGNU)-objdump -D bootloader07.clang.elf > bootloader07.clang.list
bootloader07.clang.bin : bootloader07.clang.elf
$(ARMGNU)-objcopy bootloader07.clang.elf bootloader07.clang.bin -O binary

File diff suppressed because it is too large Load Diff

View File

@@ -14,8 +14,8 @@ Cortex A7. Quad core. The peripherals for the pi1 boards were in the
ARM address space starting at 0x20xxxxxx, but to allow for more room
to have more ram they moved the peripherals to 0x3Fxxxxxx.
My preferred way to run examples is to use my bootloader07 kernel.img on
the board with an ftdi usb to uart board or cable. I also solder a
My preferred way to run examples is to use my bootloader07 kernel7.img
on the board with an ftdi usb to uart board or cable. I also solder a
momentary pushbutton on the RUN pins, which is basically a board reset.
There are ways to do this without soldering, pins you can push in rather
than solder.
@@ -24,10 +24,10 @@ Once the sd card is in with bootloader07, press reset, download the
intel hex (.hex) version of the program I want to run. Press 'g' to go.
Repeat as necessary.
Or you can copy the blinker01.bin file to the kernel7.img file on your
sd card, replace the sd card and turn the power on.
Or you can copy the .bin file to the kernel7.img file on your sd card,
replace the sd card and turn the power on.
In late 2015 the standard GPU bootloader would put the ARM in HYP mode
In 2015 the standard GPU bootloader would put the ARM in HYP mode
on its way to running kernel7.img. As of this writing that is still
the case. I now see how to switch back to SVC. So there is a directory
of examples for staying in HYP mode and a directory for switching

View File

@@ -1,3 +1,81 @@
need to work on this readme. This directory puts the pi2 in svc mode
it boots as of this writing in HYP mode.
See the top level README for information on where to find documentation
for the raspberry pi and the ARM processor inside. Also find information
on how to load and run these programs.
These examples are for the pi2, see other directories for other
flavors of raspberry pi. Specifically these examples are for running
in SVC mode. As of this writing the GPU planted bootstrap places
the ARM in HYP mode. For the moment I am using the code below to return
the ARM to SVC and secure mode. At least until it breaks.
The bootloader is one level up and shared for both SVC and HYP as I
want the applications loaded to make the changes not the bootloader.
.globl _start
_start:
ldr pc,reset_handler
ldr pc,undefined_handler
ldr pc,swi_handler
ldr pc,prefetch_handler
ldr pc,data_handler
ldr pc,hyp_handler
ldr pc,irq_handler
ldr pc,fiq_handler
reset_handler: .word reset
undefined_handler: .word hang
swi_handler: .word smc
prefetch_handler: .word hang
data_handler: .word hang
hyp_handler: .word hang
irq_handler: .word hang
fiq_handler: .word hang
reset:
;@ b skip
mrs r0,cpsr
bic r0,r0,#0x1F
orr r0,r0,#0x13
msr spsr_cxsf,r0
add r0,pc,#4
msr ELR_hyp,r0
eret
skip:
mrc p15, 0, r1, c12, c0, 0 ;@ get vbar
mov r0,#0x8000
;@ mov r1,#0x0000
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
mov r12,#0
mcr p15, 0, r12, c7, c10, 1
dsb
mov r12, #0
mcr p15, 0, r12, c7, c5, 0
mov r12, #0
mcr p15, 0, r12, c7, c5, 6
dsb
isb
smc #0
mrc p15,0,r2,c1,c0,0
bic r2,#0x1000
bic r2,#0x0004
mcr p15,0,r2,c1,c0,0
mov sp,#0x8000
mov r0,pc
bl notmain
hang: b hang
smc:
mrc p15, 0, r1, c1, c1, 0
bic r1, r1, #1
mcr p15, 0, r1, c1, c1, 0
movs pc, lr

View File

@@ -1,19 +1,29 @@
:1080000000000FE11F1000E21A0051E30500001A02
:108010001F00C0E3130080E300F06FE104008FE273
:1080200000F32EE16E0060E102D9A0E30F00A0E1B1
:10803000070000EBFEFFFFEA001080E51EFF2FE1C6
:10804000000090E51EFF2FE11EFF2FE100000FE171
:108050001EFF2FE170402DE9A0009FE5F7FFFFEB29
:108060000E16C0E3021681E390009FE5F1FFFFEBDF
:108070008C009FE5F1FFFFEB0E19C0E3021981E3CD
:108080007C009FE5EBFFFFEBEFFFFFEB1F0000E243
:108090001A0050E30258A0030158A0130219A0E3EC
:1080A00060009FE5E3FFFFEB0810A0E358009FE5A9
:1080B000E0FFFFEB0040A0E30400A0E1014084E208
:1080C000E0FFFFEB040055E1FAFFFF1A0219A0E3FD
:1080D00034009FE5D7FFFFEB0810A0E324009FE5E5
:1080E000D4FFFFEB0040A0E30400A0E1014084E2E4
:1080F000D4FFFFEB040055E1FAFFFF1AE6FFFFEAA9
:108100001000203F0C00203F2000203F2C00203F8B
:1080000018F09FE518F09FE518F09FE518F09FE540
:1080100018F09FE518F09FE518F09FE518F09FE530
:1080200040800000B8800000BC800000B8800000E4
:10803000B8800000B8800000B8800000B880000060
:1080400000000FE11F00C0E3130080E300F06FE1C8
:1080500004008FE200F32EE16E0060E1101F1CEEC1
:108060000209A0E3FC03B0E8FC03A1E8FC03B0E8CC
:10807000FC03A1E800C0A0E33ACF07EE4FF07FF584
:1080800000C0A0E315CF07EE00C0A0E3D5CF07EEF8
:108090004FF07FF56FF07FF5700060E1102F11EE6B
:1080A000012AC2E30420C2E3102F01EE02D9A0E3AB
:1080B0000F00A0E10B0000EBFEFFFFEA111F11EE25
:1080C0000110C1E3111F01EE0EF0B0E1001080E5D8
:1080D0001EFF2FE1000090E51EFF2FE11EFF2FE1A4
:1080E00000000FE11EFF2FE170402DE9A0009FE589
:1080F000F7FFFFEB0E16C0E3021681E390009FE549
:10810000F1FFFFEB8C009FE5F1FFFFEB0E19C0E3E1
:10811000021981E37C009FE5EBFFFFEBEFFFFFEB34
:108120001F0000E21A0050E30258A0030158A013F8
:108130000219A0E360009FE5E3FFFFEB0810A0E356
:1081400058009FE5E0FFFFEB0040A0E30400A0E142
:10815000014084E2E0FFFFEB040055E1FAFFFF1A63
:108160000219A0E334009FE5D7FFFFEB0810A0E35E
:1081700024009FE5D4FFFFEB0040A0E30400A0E152
:10818000014084E2D4FFFFEB040055E1FAFFFF1A3F
:10819000E6FFFFEA1000203F0C00203F2000203FB8
:0481A0002C00203F50
:040000030000800079
:00000001FF

View File

@@ -5,88 +5,145 @@ blinker01.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e10f0000 mrs r0, CPSR
8004: e200101f and r1, r0, #31
8008: e351001a cmp r1, #26
800c: 1a000005 bne 8028 <skip>
8010: e3c0001f bic r0, r0, #31
8014: e3800013 orr r0, r0, #19
8018: e16ff000 msr SPSR_fsxc, r0
801c: e28f0004 add r0, pc, #4
8020: e12ef300 msr ELR_hyp, r0
8024: e160006e eret
8000: e59ff018 ldr pc, [pc, #24] ; 8020 <reset_handler>
8004: e59ff018 ldr pc, [pc, #24] ; 8024 <undefined_handler>
8008: e59ff018 ldr pc, [pc, #24] ; 8028 <swi_handler>
800c: e59ff018 ldr pc, [pc, #24] ; 802c <prefetch_handler>
8010: e59ff018 ldr pc, [pc, #24] ; 8030 <data_handler>
8014: e59ff018 ldr pc, [pc, #24] ; 8034 <hyp_handler>
8018: e59ff018 ldr pc, [pc, #24] ; 8038 <irq_handler>
801c: e59ff018 ldr pc, [pc, #24] ; 803c <fiq_handler>
00008028 <skip>:
8028: e3a0d902 mov sp, #32768 ; 0x8000
802c: e1a0000f mov r0, pc
8030: eb000007 bl 8054 <notmain>
00008020 <reset_handler>:
8020: 00008040 andeq r8, r0, r0, asr #32
00008034 <hang>:
8034: eafffffe b 8034 <hang>
00008024 <undefined_handler>:
8024: 000080b8 strheq r8, [r0], -r8 ; <UNPREDICTABLE>
00008038 <PUT32>:
8038: e5801000 str r1, [r0]
803c: e12fff1e bx lr
00008028 <swi_handler>:
8028: 000080bc strheq r8, [r0], -ip
00008040 <GET32>:
8040: e5900000 ldr r0, [r0]
8044: e12fff1e bx lr
0000802c <prefetch_handler>:
802c: 000080b8 strheq r8, [r0], -r8 ; <UNPREDICTABLE>
00008048 <dummy>:
8048: e12fff1e bx lr
00008030 <data_handler>:
8030: 000080b8 strheq r8, [r0], -r8 ; <UNPREDICTABLE>
0000804c <GETCPSR>:
804c: e10f0000 mrs r0, CPSR
8050: e12fff1e bx lr
00008034 <hyp_handler>:
8034: 000080b8 strheq r8, [r0], -r8 ; <UNPREDICTABLE>
00008054 <notmain>:
8054: e92d4070 push {r4, r5, r6, lr}
8058: e59f00a0 ldr r0, [pc, #160] ; 8100 <notmain+0xac>
805c: ebfffff7 bl 8040 <GET32>
8060: e3c0160e bic r1, r0, #14680064 ; 0xe00000
8064: e3811602 orr r1, r1, #2097152 ; 0x200000
8068: e59f0090 ldr r0, [pc, #144] ; 8100 <notmain+0xac>
806c: ebfffff1 bl 8038 <PUT32>
8070: e59f008c ldr r0, [pc, #140] ; 8104 <notmain+0xb0>
8074: ebfffff1 bl 8040 <GET32>
8078: e3c0190e bic r1, r0, #229376 ; 0x38000
807c: e3811902 orr r1, r1, #32768 ; 0x8000
8080: e59f007c ldr r0, [pc, #124] ; 8104 <notmain+0xb0>
8084: ebffffeb bl 8038 <PUT32>
8088: ebffffef bl 804c <GETCPSR>
808c: e200001f and r0, r0, #31
8090: e350001a cmp r0, #26
8094: 03a05802 moveq r5, #131072 ; 0x20000
8098: 13a05801 movne r5, #65536 ; 0x10000
809c: e3a01902 mov r1, #32768 ; 0x8000
80a0: e59f0060 ldr r0, [pc, #96] ; 8108 <notmain+0xb4>
80a4: ebffffe3 bl 8038 <PUT32>
80a8: e3a01008 mov r1, #8
80ac: e59f0058 ldr r0, [pc, #88] ; 810c <notmain+0xb8>
80b0: ebffffe0 bl 8038 <PUT32>
80b4: e3a04000 mov r4, #0
80b8: e1a00004 mov r0, r4
80bc: e2844001 add r4, r4, #1
80c0: ebffffe0 bl 8048 <dummy>
80c4: e1550004 cmp r5, r4
80c8: 1afffffa bne 80b8 <notmain+0x64>
80cc: e3a01902 mov r1, #32768 ; 0x8000
80d0: e59f0034 ldr r0, [pc, #52] ; 810c <notmain+0xb8>
80d4: ebffffd7 bl 8038 <PUT32>
80d8: e3a01008 mov r1, #8
80dc: e59f0024 ldr r0, [pc, #36] ; 8108 <notmain+0xb4>
80e0: ebffffd4 bl 8038 <PUT32>
80e4: e3a04000 mov r4, #0
80e8: e1a00004 mov r0, r4
80ec: e2844001 add r4, r4, #1
80f0: ebffffd4 bl 8048 <dummy>
80f4: e1550004 cmp r5, r4
80f8: 1afffffa bne 80e8 <notmain+0x94>
80fc: eaffffe6 b 809c <notmain+0x48>
8100: 3f200010 svccc 0x00200010
8104: 3f20000c svccc 0x0020000c
8108: 3f200020 svccc 0x00200020
810c: 3f20002c svccc 0x0020002c
00008038 <irq_handler>:
8038: 000080b8 strheq r8, [r0], -r8 ; <UNPREDICTABLE>
0000803c <fiq_handler>:
803c: 000080b8 strheq r8, [r0], -r8 ; <UNPREDICTABLE>
00008040 <reset>:
8040: e10f0000 mrs r0, CPSR
8044: e3c0001f bic r0, r0, #31
8048: e3800013 orr r0, r0, #19
804c: e16ff000 msr SPSR_fsxc, r0
8050: e28f0004 add r0, pc, #4
8054: e12ef300 msr ELR_hyp, r0
8058: e160006e eret
0000805c <skip>:
805c: ee1c1f10 mrc 15, 0, r1, cr12, cr0, {0}
8060: e3a00902 mov r0, #32768 ; 0x8000
8064: e8b003fc ldm r0!, {r2, r3, r4, r5, r6, r7, r8, r9}
8068: e8a103fc stmia r1!, {r2, r3, r4, r5, r6, r7, r8, r9}
806c: e8b003fc ldm r0!, {r2, r3, r4, r5, r6, r7, r8, r9}
8070: e8a103fc stmia r1!, {r2, r3, r4, r5, r6, r7, r8, r9}
8074: e3a0c000 mov ip, #0
8078: ee07cf3a mcr 15, 0, ip, cr7, cr10, {1}
807c: f57ff04f dsb sy
8080: e3a0c000 mov ip, #0
8084: ee07cf15 mcr 15, 0, ip, cr7, cr5, {0}
8088: e3a0c000 mov ip, #0
808c: ee07cfd5 mcr 15, 0, ip, cr7, cr5, {6}
8090: f57ff04f dsb sy
8094: f57ff06f isb sy
8098: e1600070 smc 0
809c: ee112f10 mrc 15, 0, r2, cr1, cr0, {0}
80a0: e3c22a01 bic r2, r2, #4096 ; 0x1000
80a4: e3c22004 bic r2, r2, #4
80a8: ee012f10 mcr 15, 0, r2, cr1, cr0, {0}
80ac: e3a0d902 mov sp, #32768 ; 0x8000
80b0: e1a0000f mov r0, pc
80b4: eb00000b bl 80e8 <notmain>
000080b8 <hang>:
80b8: eafffffe b 80b8 <hang>
000080bc <smc>:
80bc: ee111f11 mrc 15, 0, r1, cr1, cr1, {0}
80c0: e3c11001 bic r1, r1, #1
80c4: ee011f11 mcr 15, 0, r1, cr1, cr1, {0}
80c8: e1b0f00e movs pc, lr
000080cc <PUT32>:
80cc: e5801000 str r1, [r0]
80d0: e12fff1e bx lr
000080d4 <GET32>:
80d4: e5900000 ldr r0, [r0]
80d8: e12fff1e bx lr
000080dc <dummy>:
80dc: e12fff1e bx lr
000080e0 <GETCPSR>:
80e0: e10f0000 mrs r0, CPSR
80e4: e12fff1e bx lr
000080e8 <notmain>:
80e8: e92d4070 push {r4, r5, r6, lr}
80ec: e59f00a0 ldr r0, [pc, #160] ; 8194 <notmain+0xac>
80f0: ebfffff7 bl 80d4 <GET32>
80f4: e3c0160e bic r1, r0, #14680064 ; 0xe00000
80f8: e3811602 orr r1, r1, #2097152 ; 0x200000
80fc: e59f0090 ldr r0, [pc, #144] ; 8194 <notmain+0xac>
8100: ebfffff1 bl 80cc <PUT32>
8104: e59f008c ldr r0, [pc, #140] ; 8198 <notmain+0xb0>
8108: ebfffff1 bl 80d4 <GET32>
810c: e3c0190e bic r1, r0, #229376 ; 0x38000
8110: e3811902 orr r1, r1, #32768 ; 0x8000
8114: e59f007c ldr r0, [pc, #124] ; 8198 <notmain+0xb0>
8118: ebffffeb bl 80cc <PUT32>
811c: ebffffef bl 80e0 <GETCPSR>
8120: e200001f and r0, r0, #31
8124: e350001a cmp r0, #26
8128: 03a05802 moveq r5, #131072 ; 0x20000
812c: 13a05801 movne r5, #65536 ; 0x10000
8130: e3a01902 mov r1, #32768 ; 0x8000
8134: e59f0060 ldr r0, [pc, #96] ; 819c <notmain+0xb4>
8138: ebffffe3 bl 80cc <PUT32>
813c: e3a01008 mov r1, #8
8140: e59f0058 ldr r0, [pc, #88] ; 81a0 <notmain+0xb8>
8144: ebffffe0 bl 80cc <PUT32>
8148: e3a04000 mov r4, #0
814c: e1a00004 mov r0, r4
8150: e2844001 add r4, r4, #1
8154: ebffffe0 bl 80dc <dummy>
8158: e1550004 cmp r5, r4
815c: 1afffffa bne 814c <notmain+0x64>
8160: e3a01902 mov r1, #32768 ; 0x8000
8164: e59f0034 ldr r0, [pc, #52] ; 81a0 <notmain+0xb8>
8168: ebffffd7 bl 80cc <PUT32>
816c: e3a01008 mov r1, #8
8170: e59f0024 ldr r0, [pc, #36] ; 819c <notmain+0xb4>
8174: ebffffd4 bl 80cc <PUT32>
8178: e3a04000 mov r4, #0
817c: e1a00004 mov r0, r4
8180: e2844001 add r4, r4, #1
8184: ebffffd4 bl 80dc <dummy>
8188: e1550004 cmp r5, r4
818c: 1afffffa bne 817c <notmain+0x94>
8190: eaffffe6 b 8130 <notmain+0x48>
8194: 3f200010 svccc 0x00200010
8198: 3f20000c svccc 0x0020000c
819c: 3f200020 svccc 0x00200020
81a0: 3f20002c svccc 0x0020002c
Disassembly of section .ARM.attributes:
@@ -101,12 +158,12 @@ Disassembly of section .ARM.attributes:
1c: 04120109 ldreq r0, [r2], #-265 ; 0xfffffef7
20: 01150114 tsteq r5, r4, lsl r1
24: 01180317 tsteq r8, r7, lsl r3
28: 0244011a subeq r0, r4, #-2147483642 ; 0x80000006
28: 0344011a movteq r0, #16666 ; 0x411a
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <notmain+0x10c8cd0>
0: 3a434347 bcc 10d0d24 <notmain+0x10c8c3c>
4: 4e472820 cdpmi 8, 4, cr2, cr7, cr0, {1}
8: 35202955 strcc r2, [r0, #-2389]! ; 0xfffff6ab
c: 302e332e eorcc r3, lr, lr, lsr #6

Binary file not shown.

View File

@@ -5,23 +5,70 @@
.globl _start
_start:
ldr pc,reset_handler
ldr pc,undefined_handler
ldr pc,swi_handler
ldr pc,prefetch_handler
ldr pc,data_handler
ldr pc,hyp_handler
ldr pc,irq_handler
ldr pc,fiq_handler
reset_handler: .word reset
undefined_handler: .word hang
swi_handler: .word smc
prefetch_handler: .word hang
data_handler: .word hang
hyp_handler: .word hang
irq_handler: .word hang
fiq_handler: .word hang
reset:
;@ b skip
mrs r0,cpsr
and r1,r0,#0x1F
cmp r1,#0x1A
bne skip
bic r0,r0,#0x1F
orr r0,r0,#0x13
msr spsr_cxsf,r0
add r0,pc,#4
msr ELR_hyp,r0 ;@ .word 0xe12ef300
eret ;@ .word 0xe160006e
msr ELR_hyp,r0
eret
skip:
mrc p15, 0, r1, c12, c0, 0 ;@ get vbar
mov r0,#0x8000
;@ mov r1,#0x0000
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
mov r12,#0
mcr p15, 0, r12, c7, c10, 1
dsb
mov r12, #0
mcr p15, 0, r12, c7, c5, 0
mov r12, #0
mcr p15, 0, r12, c7, c5, 6
dsb
isb
smc #0
mrc p15,0,r2,c1,c0,0
bic r2,#0x1000
bic r2,#0x0004
mcr p15,0,r2,c1,c0,0
mov sp,#0x8000
mov r0,pc
bl notmain
hang: b hang
smc:
mrc p15, 0, r1, c1, c1, 0
bic r1, r1, #1
mcr p15, 0, r1, c1, c1, 0
movs pc, lr
.globl PUT32
PUT32:
str r1,[r0]

View File

@@ -5,22 +5,70 @@
.globl _start
_start:
ldr pc,reset_handler
ldr pc,undefined_handler
ldr pc,swi_handler
ldr pc,prefetch_handler
ldr pc,data_handler
ldr pc,hyp_handler
ldr pc,irq_handler
ldr pc,fiq_handler
reset_handler: .word reset
undefined_handler: .word hang
swi_handler: .word smc
prefetch_handler: .word hang
data_handler: .word hang
hyp_handler: .word hang
irq_handler: .word hang
fiq_handler: .word hang
reset:
;@ b skip
mrs r0,cpsr
and r1,r0,#0x1F
cmp r1,#0x1A
bne skip
bic r0,r0,#0x1F
orr r0,r0,#0x13
msr spsr_cxsf,r0
add r0,pc,#4
msr ELR_hyp,r0 ;@ .word 0xe12ef300
eret ;@ .word 0xe160006e
msr ELR_hyp,r0
eret
skip:
mrc p15, 0, r1, c12, c0, 0 ;@ get vbar
mov r0,#0x8000
;@ mov r1,#0x0000
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
mov r12,#0
mcr p15, 0, r12, c7, c10, 1
dsb
mov r12, #0
mcr p15, 0, r12, c7, c5, 0
mov r12, #0
mcr p15, 0, r12, c7, c5, 6
dsb
isb
smc #0
mrc p15,0,r2,c1,c0,0
bic r2,#0x1000
bic r2,#0x0004
mcr p15,0,r2,c1,c0,0
mov sp,#0x8000
mov r0,pc
bl notmain
hang: b hang
smc:
mrc p15, 0, r1, c1, c1, 0
bic r1, r1, #1
mcr p15, 0, r1, c1, c1, 0
movs pc, lr
.globl PUT32
PUT32:
str r1,[r0]

View File

@@ -4,24 +4,70 @@
.globl _start
_start:
ldr pc,reset_handler
ldr pc,undefined_handler
ldr pc,swi_handler
ldr pc,prefetch_handler
ldr pc,data_handler
ldr pc,hyp_handler
ldr pc,irq_handler
ldr pc,fiq_handler
reset_handler: .word reset
undefined_handler: .word hang
swi_handler: .word smc
prefetch_handler: .word hang
data_handler: .word hang
hyp_handler: .word hang
irq_handler: .word hang
fiq_handler: .word hang
reset:
;@ b skip
mrs r0,cpsr
and r1,r0,#0x1F
cmp r1,#0x1A
bne skip
bic r0,r0,#0x1F
orr r0,r0,#0x13
msr spsr_cxsf,r0
add r0,pc,#4
msr ELR_hyp,r0 ;@ .word 0xe12ef300
eret ;@ .word 0xe160006e
msr ELR_hyp,r0
eret
skip:
mrc p15, 0, r1, c12, c0, 0 ;@ get vbar
mov r0,#0x8000
;@ mov r1,#0x0000
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
mov r12,#0
mcr p15, 0, r12, c7, c10, 1
dsb
mov r12, #0
mcr p15, 0, r12, c7, c5, 0
mov r12, #0
mcr p15, 0, r12, c7, c5, 6
dsb
isb
smc #0
mrc p15,0,r2,c1,c0,0
bic r2,#0x1000
bic r2,#0x0004
mcr p15,0,r2,c1,c0,0
mov sp,#0x8000
mov r0,pc
bl notmain
hang: b hang
smc:
mrc p15, 0, r1, c1, c1, 0
bic r1, r1, #1
mcr p15, 0, r1, c1, c1, 0
movs pc, lr
.globl PUT32
PUT32:
str r1,[r0]

View File

@@ -2,26 +2,73 @@
;@-------------------------------------------------------------------------
;@-------------------------------------------------------------------------
.globl _start
_start:
ldr pc,reset_handler
ldr pc,undefined_handler
ldr pc,swi_handler
ldr pc,prefetch_handler
ldr pc,data_handler
ldr pc,hyp_handler
ldr pc,irq_handler
ldr pc,fiq_handler
reset_handler: .word reset
undefined_handler: .word hang
swi_handler: .word smc
prefetch_handler: .word hang
data_handler: .word hang
hyp_handler: .word hang
irq_handler: .word hang
fiq_handler: .word hang
reset:
;@ b skip
mrs r0,cpsr
and r1,r0,#0x1F
cmp r1,#0x1A
bne skip
bic r0,r0,#0x1F
orr r0,r0,#0x13
msr spsr_cxsf,r0
add r0,pc,#4
msr ELR_hyp,r0 ;@ .word 0xe12ef300
eret ;@ .word 0xe160006e
msr ELR_hyp,r0
eret
skip:
mrc p15, 0, r1, c12, c0, 0 ;@ get vbar
mov r0,#0x8000
;@ mov r1,#0x0000
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
mov r12,#0
mcr p15, 0, r12, c7, c10, 1
dsb
mov r12, #0
mcr p15, 0, r12, c7, c5, 0
mov r12, #0
mcr p15, 0, r12, c7, c5, 6
dsb
isb
smc #0
mrc p15,0,r2,c1,c0,0
bic r2,#0x1000
bic r2,#0x0004
mcr p15,0,r2,c1,c0,0
mov sp,#0x8000
mov r0,pc
bl notmain
hang: b hang
smc:
mrc p15, 0, r1, c1, c1, 0
bic r1, r1, #1
mcr p15, 0, r1, c1, c1, 0
movs pc, lr
.globl PUT32
PUT32:
str r1,[r0]

View File

@@ -15,6 +15,6 @@ sd card to ram is kernel7.img the older raspberry pis still use
kernel.img.
So I have code that switches back to SVC mode, but still more work
to do on this. In theory all I have to do is change the VBAR, but
that hangs. So doing it the old fashioned way like I do with the
ARM11 based pis and setting up the exception table at address 0x000
to do on this. I had the wrong instruction, so now it does change
the VBAR rather than have to write stuff to 0x0000 to setup a new
exception table.

View File

@@ -14,7 +14,7 @@ _start:
ldr pc,fiq_handler
reset_handler: .word reset
undefined_handler: .word hang
swi_handler: .word hang
swi_handler: .word smc
prefetch_handler: .word hang
data_handler: .word hang
hyp_handler: .word hang
@@ -25,24 +25,49 @@ reset:
;@ b skip
mrs r0,cpsr
and r1,r0,#0x1F
cmp r1,#0x1A
bne skip
bic r0,r0,#0x1F
orr r0,r0,#0x13
msr spsr_cxsf,r0
add r0,pc,#4
msr ELR_hyp,r0 ;@ .word 0xe12ef300
eret ;@ .word 0xe160006e
msr ELR_hyp,r0
eret
skip:
mrc p15, 0, r1, c12, c0, 0 ;@ get vbar
mov r0,#0x8000
mov r1,#0x0000
;@ mov r1,#0x0000
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
mov r12,#0
mcr p15, 0, r12, c7, c10, 1
dsb
mov r12, #0
mcr p15, 0, r12, c7, c5, 0
mov r12, #0
mcr p15, 0, r12, c7, c5, 6
dsb
isb
smc #0
mrc p15,0,r2,c1,c0,0
bic r2,#0x1000
bic r2,#0x0004
mcr p15,0,r2,c1,c0,0
mov r0,#0x8000
mcr p15, 0, r0, c12, c0, 0
;@ mov r0,#0x8000
;@ mov r1,#0x0000
;@ ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
;@ stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
;@ ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
;@ stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
;@ (PSR_IRQ_MODE|PSR_FIQ_DIS|PSR_IRQ_DIS)
mov r0,#0xD2
msr cpsr_c,r0
@@ -61,6 +86,12 @@ skip:
bl notmain
hang: b hang
smc:
mrc p15, 0, r1, c1, c1, 0
bic r1, r1, #1
mcr p15, 0, r1, c1, c1, 0
movs pc, lr
.globl PUT32
PUT32:
str r1,[r0]

View File

@@ -0,0 +1,34 @@
ARMGNU ?= arm-none-eabi
COPS = -Wall -O2 -nostdlib -nostartfiles -ffreestanding
all : kernel7.img
clean :
rm -f *.o
rm -f *.bin
rm -f *.hex
rm -f *.elf
rm -f *.list
rm -f *.img
rm -f *.bc
rm -f *.clang.s
vectors.o : vectors.s
$(ARMGNU)-as vectors.s -o vectors.o
bootloader07.o : bootloader07.c
$(ARMGNU)-gcc $(COPS) -c bootloader07.c -o bootloader07.o
periph.o : periph.c
$(ARMGNU)-gcc $(COPS) -c periph.c -o periph.o
kernel7.img : loader vectors.o periph.o bootloader07.o
$(ARMGNU)-ld vectors.o periph.o bootloader07.o -T loader -o bootloader07.elf
$(ARMGNU)-objdump -D bootloader07.elf > bootloader07.list
$(ARMGNU)-objcopy bootloader07.elf -O ihex bootloader07.hex
$(ARMGNU)-objcopy bootloader07.elf -O binary kernel7.img

View File

@@ -47,4 +47,7 @@ will reset the board, and released allow it to boot again. Then you
can use this bootloader and simply press the button to try another
program.
Wow, forgot that the GPU planted bootstrap turns on the caches. And
I was seeing the cache coherency problems with doing that. In theory
I have that fixed, it invalidates I and D and branch prediction
before launching the downloaded code.

View File

@@ -13,6 +13,8 @@ extern void PUT16 ( unsigned int, unsigned int );
extern void PUT8 ( unsigned int, unsigned int );
extern unsigned int GET32 ( unsigned int );
extern unsigned int GETPC ( void );
extern unsigned int GETCPSR ( void );
extern unsigned int GETSCTLR ( void );
extern void BRANCHTO ( unsigned int );
extern void dummy ( unsigned int );
@@ -48,6 +50,8 @@ int notmain ( void )
uart_init();
hexstring(0x12345678);
hexstring(GETPC());
hexstring(GETCPSR());
hexstring(GETSCTLR());
uart_send('I');
uart_send('H');
@@ -146,7 +150,15 @@ int notmain ( void )
}
case 0x01:
{
for(ra=0;ra<20;ra++)
hexstring(sum);
segment=0;
sum=0;
data=0;
record_type=0;
address=0;
byte_count=0;
state=0;
break;
}

View File

@@ -129055,85 +129055,98 @@
:10FFE0000000000000000000000000000000000011
:10FFF0000000000000000000000000000000000001
:020000040020DA
:1000000002D3A0E3A60000EBFEFFFFEA001080E5AC
:1000000002D3A0E3CD0000EBFEFFFFEA001080E585
:100010001EFF2FE1B010C0E11EFF2FE10010C0E570
:100020001EFF2FE1000090E51EFF2FE10E00A0E172
:100030001EFF2FE110FF2FE11EFF2FE108402DE9E9
:1000400008009FE5F6FFFFEB0840BDE81EFF2FE12B
:100050005450212008402DE91C009FE5F0FFFFEBE4
:10006000010010E3FBFFFF0A10009FE5ECFFFFEB30
:100070000840BDE8FF0000E21EFF2FE154502120A0
:100080004050212008402DE90C009FE5E4FFFFEBE4
:100090000840BDE8010000E21EFF2FE1545021207E
:1000A00010402DE90040A0E11C009FE5DCFFFFEBC4
:1000B000200010E3FBFFFF0A0410A0E10C009FE505
:1000C000D1FFFFEB1040BDE81EFF2FE1545021206F
:1000D0004050212008402DE910009FE5D0FFFFEBA4
:1000E000010C10E3FBFFFF1A0840BDE81EFF2FE1E3
:1000F0005450212038402DE90050A0E12040A0E3D9
:10010000044044E23534A0E10F3003E2090053E338
:100110003700838230008392E0FFFFEB000054E35E
:10012000F6FFFF1A2000A0E33840BDE8DBFFFFEA3E
:1001300008402DE9EEFFFFEB0D00A0E3D7FFFFEB3A
:100140000A00A0E30840BDE8D4FFFFEA10402DE913
:10015000D8009FE50110A0E3ABFFFFEBD0009FE5C7
:100160000010A0E3A8FFFFEBC8009FE50010A0E38C
:10017000A5FFFFEBC0009FE50310A0E3A2FFFFEB8C
:10018000B8009FE50010A0E39FFFFFEBA0009FE5F4
:100190000010A0E39CFFFFEBA4009FE5C610A0E3C6
:1001A00099FFFFEB9C109FE59C009FE596FFFFEBFE
:1001B00098009FE59AFFFFEB3F1AC0E3121A81E314
:1001C00088009FE590FFFFEB84009FE50010A0E30F
:1001D0008DFFFFEB0040A0E30400A0E1014084E2BA
:1001E00094FFFFEB960054E3FAFFFF1A64009FE5CB
:1001F0000319A0E384FFFFEB0040A0E30400A0E1AB
:10020000014084E28BFFFFEB960054E3FAFFFF1AF4
:1002100040009FE50010A0E37BFFFFEB14009FE58B
:100220000310A0E378FFFFEB1040BDE81EFF2FE1B5
:100230000450212044502120605021204C50212086
:1002400050502120485021200E01000068502120EC
:1002500004002020940020209800202010402DE948
:100260001C409FE5F918A0E30400A0E166FFFFEB46
:100270000400A0E10C109FE563FFFFEB1040BDE818
:100280001EFF2FE108B400200002F90008402DE90C
:1002900008009FE562FFFFEB0840BDE81EFF2FE16D
:1002A00020B40020F8432DE9A7FFFFEB44029FE5AF
:1002B0009EFFFFEB5CFFFFEB9CFFFFEB4900A0E321
:1002C00076FFFFEB4800A0E374FFFFEB4500A0E3DF
:1002D00072FFFFEB5800A0E370FFFFEB0D00A0E3FF
:1002E0006EFFFFEB0A00A0E36CFFFFEB0070A0E3E2
:1002F0000780A0E10760A0E10750A0E10790A0E11E
:100300000740A0E152FFFFEB3A0050E32A00000A49
:100310000D0050E35400000A0A0050E35200000AA6
:100320002030C0E3470053E35100000A013044E2AB
:10033000140053E303F19F97F1FFFFEAAC032000A1
:10034000AC0320004804200048042000480420009A
:100350004804200028042000F4032000D0032000DB
:10036000D0032000D0032000D0032000C4032000CD
:1003700090032000900320009003200090032000B1
:1003800090032000900320009003200090032000A1
:10039000390050E3070040820882A0E10F0000E22C
:1003A000150054E3088080E14200000A28FFFFEBBB
:1003B0003A0050E3014084E2D4FFFF1A0140A0E379
:1003C000CFFFFFEA0662A0E10040A0E3CCFFFFEA16
:1003D000390050E3070040820662A0E10F0000E20E
:1003E000066080E10668A0E12668A0E1014084E2A1
:1003F000C3FFFFEA390050E3070040820552A0E145
:100400000F0000E2055080E1FF5005E2010055E3D6
:100410003400000A3100003A020055E30940A0030D
:100420000040A013B6FFFFEA390050E30700408206
:100430000552A0E10F0000E2055080E1FF5005E207
:100440000840A0E3AEFFFFEA390050E30700408216
:100450000992A0E10F0000E2099080E10998A0E173
:10046000299886E1014084E2A5FFFFEA0040A0E36D
:10047000A3FFFFEA0D00A0E308FFFFEB2D00A0E3C0
:1004800006FFFFEB2D00A0E304FFFFEB0D00A0E350
:1004900002FFFFEB0A00A0E300FFFFEB0A00A0E36E
:1004A000FEFEFFEB0209A0E3E1FEFFEB0000A0E38C
:1004B000F843BDE81EFF2FE1683828E02334A0E1AF
:1004C000FF3CC3E3688423E00900A0E10810A0E139
:1004D000CDFEFFEB097087E0087087E0049089E2A9
:1004E0000E40A0E386FFFFEA0700A0E10FFFFFEB4D
:0C04F0000040A0E382FFFFEA78563412BF
:100030001EFF2FE100C0A0E33ACF07EE4FF07FF59F
:1000400000C0A0E315CF07EE00C0A0E3D5CF07EEB8
:100050004FF07FF56FF07FF510FF2FE11EFF2FE1CE
:1000600000000FE11EFF2FE1100F11EE1EFF2FE128
:1000700010402DE908009FE5E9FFFFEB1040BDE8C7
:100080001EFF2FE15450213F10402DE91C009FE539
:10009000E3FFFFEB010010E3FBFFFF0A10009FE509
:1000A000DFFFFFEB1040BDE8FF0000E21EFF2FE185
:1000B0005450213F4050213F10402DE90C009FE556
:1000C000D7FFFFEB1040BDE8010000E21EFF2FE16B
:1000D0005450213F10402DE90040A0E11C009FE555
:1000E000CFFFFFEB200010E3FBFFFF0A0410A0E1AD
:1000F0000C009FE5C4FFFFEB1040BDE81EFF2FE1A1
:100100005450213F4050213F10402DE910009FE501
:10011000C3FFFFEB010C10E3FBFFFF1A1040BDE82B
:100120001EFF2FE15450213F70402DE90050A0E107
:100130002040A0E3044044E23504A0E10F0000E2C7
:10014000090050E33700808230008092E0FFFFEB2F
:10015000000054E3F6FFFF1A2000A0E37040BDE862
:10016000DBFFFFEA10402DE9EEFFFFEB0D00A0E3FF
:10017000D7FFFFEB0A00A0E31040BDE8D4FFFFEA81
:1001800010402DE90110A0E3D4009FE59EFFFFEB96
:100190000010A0E3CC009FE59BFFFFEB0010A0E365
:1001A000C4009FE598FFFFEB0310A0E3BC009FE5B0
:1001B00095FFFFEB0010A0E3B4009FE592FFFFEB7B
:1001C0000010A0E39C009FE58FFFFFEBC610A0E3AB
:1001D000A0009FE58CFFFFEB9C109FE59C009FE536
:1001E00089FFFFEB98009FE58DFFFFEB3F1AC0E30F
:1001F000121A81E388009FE583FFFFEB0010A0E364
:1002000080009FE580FFFFEB0040A0E30400A0E139
:10021000014084E290FFFFEB960054E3FAFFFF1ADF
:100220000319A0E360009FE577FFFFEB0040A0E328
:100230000400A0E1014084E287FFFFEB960054E355
:10024000FAFFFF1A0010A0E33C009FE56EFFFFEBF2
:100250000310A0E310009FE56BFFFFEB1040BDE82B
:100260001EFF2FE10450213F4450213F6050213FA9
:100270004C50213F5050213F4850213F0E0100007B
:100280006850213F0400203F9400203F9800203F09
:1002900010402DE91C409FE5F918A0E30400A0E1FF
:1002A00059FFFFEB0400A0E10C109FE556FFFFEBA8
:1002B0001040BDE81EFF2FE108B4003F0002F90026
:1002C00010402DE908009FE555FFFFEB1040BDE809
:1002D0001EFF2FE120B4003F70402DE954409FE500
:1002E0000400A0E14EFFFFEB4C509FE50E16C0E36B
:1002F000021681E30400A0E143FFFFEB0500A0E14B
:1003000047FFFFEB0E19C0E31C4084E20500A0E1AB
:10031000021981E33CFFFFEB0400A0E10219A0E316
:1003200039FFFFEB0400A0E10810A0E336FFFFEB6C
:100330007040BDE81EFF2FE11000203F0C00203F61
:10034000F0472DE90070A0E3E2FFFFEB8BFFFFEB2E
:100350006C029FE582FFFFEB33FFFFEB80FFFFEBBB
:100360003EFFFFEB7EFFFFEB3EFFFFEB7CFFFFEB73
:100370004900A0E356FFFFEB4800A0E354FFFFEB6A
:100380004500A0E352FFFFEB5800A0E350FFFFEB56
:100390000D00A0E34EFFFFEB0A00A0E30790A0E1F1
:1003A0000760A0E10750A0E10780A0E10740A0E1BD
:1003B00047FFFFEB33FFFFEB3A0050E32B00000A4F
:1003C0000A0050E30D00501301A0A00300A0A013E9
:1003D0002900000A2030C0E3470053E35000000A20
:1003E000013044E2140053E303F19F97F0FFFFEA6A
:1003F00060042000600420000005200000052000AB
:100400000005200000052000E0042000A8042000D2
:10041000840420008404200084042000840420003C
:1004200078042000440420004404200044042000F8
:10043000440420004404200044042000440420001C
:1004400044042000390050E3070040820992A0E1F3
:100450000F0000E2150054E3099080E14C00000A0F
:1004600008FFFFEB3A0050E3014084E2D3FFFF1A9C
:100470000140A0E3CEFFFFEA0662A0E10040A0E356
:10048000CBFFFFEA390050E3070040820662A0E19B
:100490000F0000E2066080E10668A0E12668A0E1A6
:1004A000014084E2C2FFFFEA390050E307004082C6
:1004B0000552A0E10F0000E2055080E1FF5005E287
:1004C000010055E32700000A0E40A033B8FFFF3AB1
:1004D000020055E30940A0030040A013B4FFFFEA67
:1004E000390050E3070040820552A0E10F0000E20E
:1004F000055080E1FF5005E20840A0E3ACFFFFEAB1
:10050000390050E3070040820882A0E10F0000E2BA
:10051000088080E10888A0E1288886E1014084E223
:10052000A3FFFFEA0D00A0E3E9FEFFEB2D00A0E32F
:10053000E7FEFFEB2D00A0E3E5FEFFEB0D00A0E3DF
:10054000E3FEFFEB0A00A0E3E1FEFFEB0A00A0E3FD
:10055000DFFEFFEB0209A0E3B5FEFFEB0A00A0E11E
:10056000F047BDE81EFF2FE11440A0E30700A0E123
:10057000FBFEFFEB014054E2FBFFFF1A0470A0E119
:100580000490A0E10460A0E10450A0E10480A0E197
:1005900087FFFFEA693829E02334A0E1FF3CC3E389
:1005A000699423E00800A0E1077088E00910A0E149
:1005B00095FEFFEB077089E0048088E20E40A0E31F
:0805C0007BFFFFEA78563412BC
:040000030000800079
:00000001FF

View File

@@ -0,0 +1,450 @@
bootloader07.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: ea07dffe b 200000 <skip>
...
00200000 <skip>:
200000: e3a0d302 mov sp, #134217728 ; 0x8000000
200004: eb0000cd bl 200340 <notmain>
00200008 <hang>:
200008: eafffffe b 200008 <hang>
0020000c <PUT32>:
20000c: e5801000 str r1, [r0]
200010: e12fff1e bx lr
00200014 <PUT16>:
200014: e1c010b0 strh r1, [r0]
200018: e12fff1e bx lr
0020001c <PUT8>:
20001c: e5c01000 strb r1, [r0]
200020: e12fff1e bx lr
00200024 <GET32>:
200024: e5900000 ldr r0, [r0]
200028: e12fff1e bx lr
0020002c <GETPC>:
20002c: e1a0000e mov r0, lr
200030: e12fff1e bx lr
00200034 <BRANCHTO>:
200034: e3a0c000 mov ip, #0
200038: ee07cf3a mcr 15, 0, ip, cr7, cr10, {1}
20003c: f57ff04f dsb sy
200040: e3a0c000 mov ip, #0
200044: ee07cf15 mcr 15, 0, ip, cr7, cr5, {0}
200048: e3a0c000 mov ip, #0
20004c: ee07cfd5 mcr 15, 0, ip, cr7, cr5, {6}
200050: f57ff04f dsb sy
200054: f57ff06f isb sy
200058: e12fff10 bx r0
0020005c <dummy>:
20005c: e12fff1e bx lr
00200060 <GETCPSR>:
200060: e10f0000 mrs r0, CPSR
200064: e12fff1e bx lr
00200068 <GETSCTLR>:
200068: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
20006c: e12fff1e bx lr
00200070 <uart_lcr>:
200070: e92d4010 push {r4, lr}
200074: e59f0008 ldr r0, [pc, #8] ; 200084 <uart_lcr+0x14>
200078: ebffffe9 bl 200024 <GET32>
20007c: e8bd4010 pop {r4, lr}
200080: e12fff1e bx lr
200084: 3f215054 svccc 0x00215054
00200088 <uart_recv>:
200088: e92d4010 push {r4, lr}
20008c: e59f001c ldr r0, [pc, #28] ; 2000b0 <uart_recv+0x28>
200090: ebffffe3 bl 200024 <GET32>
200094: e3100001 tst r0, #1
200098: 0afffffb beq 20008c <uart_recv+0x4>
20009c: e59f0010 ldr r0, [pc, #16] ; 2000b4 <uart_recv+0x2c>
2000a0: ebffffdf bl 200024 <GET32>
2000a4: e8bd4010 pop {r4, lr}
2000a8: e20000ff and r0, r0, #255 ; 0xff
2000ac: e12fff1e bx lr
2000b0: 3f215054 svccc 0x00215054
2000b4: 3f215040 svccc 0x00215040
002000b8 <uart_check>:
2000b8: e92d4010 push {r4, lr}
2000bc: e59f000c ldr r0, [pc, #12] ; 2000d0 <uart_check+0x18>
2000c0: ebffffd7 bl 200024 <GET32>
2000c4: e8bd4010 pop {r4, lr}
2000c8: e2000001 and r0, r0, #1
2000cc: e12fff1e bx lr
2000d0: 3f215054 svccc 0x00215054
002000d4 <uart_send>:
2000d4: e92d4010 push {r4, lr}
2000d8: e1a04000 mov r4, r0
2000dc: e59f001c ldr r0, [pc, #28] ; 200100 <uart_send+0x2c>
2000e0: ebffffcf bl 200024 <GET32>
2000e4: e3100020 tst r0, #32
2000e8: 0afffffb beq 2000dc <uart_send+0x8>
2000ec: e1a01004 mov r1, r4
2000f0: e59f000c ldr r0, [pc, #12] ; 200104 <uart_send+0x30>
2000f4: ebffffc4 bl 20000c <PUT32>
2000f8: e8bd4010 pop {r4, lr}
2000fc: e12fff1e bx lr
200100: 3f215054 svccc 0x00215054
200104: 3f215040 svccc 0x00215040
00200108 <uart_flush>:
200108: e92d4010 push {r4, lr}
20010c: e59f0010 ldr r0, [pc, #16] ; 200124 <uart_flush+0x1c>
200110: ebffffc3 bl 200024 <GET32>
200114: e3100c01 tst r0, #256 ; 0x100
200118: 1afffffb bne 20010c <uart_flush+0x4>
20011c: e8bd4010 pop {r4, lr}
200120: e12fff1e bx lr
200124: 3f215054 svccc 0x00215054
00200128 <hexstrings>:
200128: e92d4070 push {r4, r5, r6, lr}
20012c: e1a05000 mov r5, r0
200130: e3a04020 mov r4, #32
200134: e2444004 sub r4, r4, #4
200138: e1a00435 lsr r0, r5, r4
20013c: e200000f and r0, r0, #15
200140: e3500009 cmp r0, #9
200144: 82800037 addhi r0, r0, #55 ; 0x37
200148: 92800030 addls r0, r0, #48 ; 0x30
20014c: ebffffe0 bl 2000d4 <uart_send>
200150: e3540000 cmp r4, #0
200154: 1afffff6 bne 200134 <hexstrings+0xc>
200158: e3a00020 mov r0, #32
20015c: e8bd4070 pop {r4, r5, r6, lr}
200160: eaffffdb b 2000d4 <uart_send>
00200164 <hexstring>:
200164: e92d4010 push {r4, lr}
200168: ebffffee bl 200128 <hexstrings>
20016c: e3a0000d mov r0, #13
200170: ebffffd7 bl 2000d4 <uart_send>
200174: e3a0000a mov r0, #10
200178: e8bd4010 pop {r4, lr}
20017c: eaffffd4 b 2000d4 <uart_send>
00200180 <uart_init>:
200180: e92d4010 push {r4, lr}
200184: e3a01001 mov r1, #1
200188: e59f00d4 ldr r0, [pc, #212] ; 200264 <uart_init+0xe4>
20018c: ebffff9e bl 20000c <PUT32>
200190: e3a01000 mov r1, #0
200194: e59f00cc ldr r0, [pc, #204] ; 200268 <uart_init+0xe8>
200198: ebffff9b bl 20000c <PUT32>
20019c: e3a01000 mov r1, #0
2001a0: e59f00c4 ldr r0, [pc, #196] ; 20026c <uart_init+0xec>
2001a4: ebffff98 bl 20000c <PUT32>
2001a8: e3a01003 mov r1, #3
2001ac: e59f00bc ldr r0, [pc, #188] ; 200270 <uart_init+0xf0>
2001b0: ebffff95 bl 20000c <PUT32>
2001b4: e3a01000 mov r1, #0
2001b8: e59f00b4 ldr r0, [pc, #180] ; 200274 <uart_init+0xf4>
2001bc: ebffff92 bl 20000c <PUT32>
2001c0: e3a01000 mov r1, #0
2001c4: e59f009c ldr r0, [pc, #156] ; 200268 <uart_init+0xe8>
2001c8: ebffff8f bl 20000c <PUT32>
2001cc: e3a010c6 mov r1, #198 ; 0xc6
2001d0: e59f00a0 ldr r0, [pc, #160] ; 200278 <uart_init+0xf8>
2001d4: ebffff8c bl 20000c <PUT32>
2001d8: e59f109c ldr r1, [pc, #156] ; 20027c <uart_init+0xfc>
2001dc: e59f009c ldr r0, [pc, #156] ; 200280 <uart_init+0x100>
2001e0: ebffff89 bl 20000c <PUT32>
2001e4: e59f0098 ldr r0, [pc, #152] ; 200284 <uart_init+0x104>
2001e8: ebffff8d bl 200024 <GET32>
2001ec: e3c01a3f bic r1, r0, #258048 ; 0x3f000
2001f0: e3811a12 orr r1, r1, #73728 ; 0x12000
2001f4: e59f0088 ldr r0, [pc, #136] ; 200284 <uart_init+0x104>
2001f8: ebffff83 bl 20000c <PUT32>
2001fc: e3a01000 mov r1, #0
200200: e59f0080 ldr r0, [pc, #128] ; 200288 <uart_init+0x108>
200204: ebffff80 bl 20000c <PUT32>
200208: e3a04000 mov r4, #0
20020c: e1a00004 mov r0, r4
200210: e2844001 add r4, r4, #1
200214: ebffff90 bl 20005c <dummy>
200218: e3540096 cmp r4, #150 ; 0x96
20021c: 1afffffa bne 20020c <uart_init+0x8c>
200220: e3a01903 mov r1, #49152 ; 0xc000
200224: e59f0060 ldr r0, [pc, #96] ; 20028c <uart_init+0x10c>
200228: ebffff77 bl 20000c <PUT32>
20022c: e3a04000 mov r4, #0
200230: e1a00004 mov r0, r4
200234: e2844001 add r4, r4, #1
200238: ebffff87 bl 20005c <dummy>
20023c: e3540096 cmp r4, #150 ; 0x96
200240: 1afffffa bne 200230 <uart_init+0xb0>
200244: e3a01000 mov r1, #0
200248: e59f003c ldr r0, [pc, #60] ; 20028c <uart_init+0x10c>
20024c: ebffff6e bl 20000c <PUT32>
200250: e3a01003 mov r1, #3
200254: e59f0010 ldr r0, [pc, #16] ; 20026c <uart_init+0xec>
200258: ebffff6b bl 20000c <PUT32>
20025c: e8bd4010 pop {r4, lr}
200260: e12fff1e bx lr
200264: 3f215004 svccc 0x00215004
200268: 3f215044 svccc 0x00215044
20026c: 3f215060 svccc 0x00215060
200270: 3f21504c svccc 0x0021504c
200274: 3f215050 svccc 0x00215050
200278: 3f215048 svccc 0x00215048
20027c: 0000010e andeq r0, r0, lr, lsl #2
200280: 3f215068 svccc 0x00215068
200284: 3f200004 svccc 0x00200004
200288: 3f200094 svccc 0x00200094
20028c: 3f200098 svccc 0x00200098
00200290 <timer_init>:
200290: e92d4010 push {r4, lr}
200294: e59f401c ldr r4, [pc, #28] ; 2002b8 <timer_init+0x28>
200298: e3a018f9 mov r1, #16318464 ; 0xf90000
20029c: e1a00004 mov r0, r4
2002a0: ebffff59 bl 20000c <PUT32>
2002a4: e1a00004 mov r0, r4
2002a8: e59f100c ldr r1, [pc, #12] ; 2002bc <timer_init+0x2c>
2002ac: ebffff56 bl 20000c <PUT32>
2002b0: e8bd4010 pop {r4, lr}
2002b4: e12fff1e bx lr
2002b8: 3f00b408 svccc 0x0000b408
2002bc: 00f90200 rscseq r0, r9, r0, lsl #4
002002c0 <timer_tick>:
2002c0: e92d4010 push {r4, lr}
2002c4: e59f0008 ldr r0, [pc, #8] ; 2002d4 <timer_tick+0x14>
2002c8: ebffff55 bl 200024 <GET32>
2002cc: e8bd4010 pop {r4, lr}
2002d0: e12fff1e bx lr
2002d4: 3f00b420 svccc 0x0000b420
002002d8 <leds_off>:
2002d8: e92d4070 push {r4, r5, r6, lr}
2002dc: e59f4054 ldr r4, [pc, #84] ; 200338 <leds_off+0x60>
2002e0: e1a00004 mov r0, r4
2002e4: ebffff4e bl 200024 <GET32>
2002e8: e59f504c ldr r5, [pc, #76] ; 20033c <leds_off+0x64>
2002ec: e3c0160e bic r1, r0, #14680064 ; 0xe00000
2002f0: e3811602 orr r1, r1, #2097152 ; 0x200000
2002f4: e1a00004 mov r0, r4
2002f8: ebffff43 bl 20000c <PUT32>
2002fc: e1a00005 mov r0, r5
200300: ebffff47 bl 200024 <GET32>
200304: e3c0190e bic r1, r0, #229376 ; 0x38000
200308: e284401c add r4, r4, #28
20030c: e1a00005 mov r0, r5
200310: e3811902 orr r1, r1, #32768 ; 0x8000
200314: ebffff3c bl 20000c <PUT32>
200318: e1a00004 mov r0, r4
20031c: e3a01902 mov r1, #32768 ; 0x8000
200320: ebffff39 bl 20000c <PUT32>
200324: e1a00004 mov r0, r4
200328: e3a01008 mov r1, #8
20032c: ebffff36 bl 20000c <PUT32>
200330: e8bd4070 pop {r4, r5, r6, lr}
200334: e12fff1e bx lr
200338: 3f200010 svccc 0x00200010
20033c: 3f20000c svccc 0x0020000c
00200340 <notmain>:
200340: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
200344: e3a07000 mov r7, #0
200348: ebffffe2 bl 2002d8 <leds_off>
20034c: ebffff8b bl 200180 <uart_init>
200350: e59f026c ldr r0, [pc, #620] ; 2005c4 <notmain+0x284>
200354: ebffff82 bl 200164 <hexstring>
200358: ebffff33 bl 20002c <GETPC>
20035c: ebffff80 bl 200164 <hexstring>
200360: ebffff3e bl 200060 <GETCPSR>
200364: ebffff7e bl 200164 <hexstring>
200368: ebffff3e bl 200068 <GETSCTLR>
20036c: ebffff7c bl 200164 <hexstring>
200370: e3a00049 mov r0, #73 ; 0x49
200374: ebffff56 bl 2000d4 <uart_send>
200378: e3a00048 mov r0, #72 ; 0x48
20037c: ebffff54 bl 2000d4 <uart_send>
200380: e3a00045 mov r0, #69 ; 0x45
200384: ebffff52 bl 2000d4 <uart_send>
200388: e3a00058 mov r0, #88 ; 0x58
20038c: ebffff50 bl 2000d4 <uart_send>
200390: e3a0000d mov r0, #13
200394: ebffff4e bl 2000d4 <uart_send>
200398: e3a0000a mov r0, #10
20039c: e1a09007 mov r9, r7
2003a0: e1a06007 mov r6, r7
2003a4: e1a05007 mov r5, r7
2003a8: e1a08007 mov r8, r7
2003ac: e1a04007 mov r4, r7
2003b0: ebffff47 bl 2000d4 <uart_send>
2003b4: ebffff33 bl 200088 <uart_recv>
2003b8: e350003a cmp r0, #58 ; 0x3a
2003bc: 0a00002b beq 200470 <notmain+0x130>
2003c0: e350000a cmp r0, #10
2003c4: 1350000d cmpne r0, #13
2003c8: 03a0a001 moveq sl, #1
2003cc: 13a0a000 movne sl, #0
2003d0: 0a000029 beq 20047c <notmain+0x13c>
2003d4: e3c03020 bic r3, r0, #32
2003d8: e3530047 cmp r3, #71 ; 0x47
2003dc: 0a000050 beq 200524 <notmain+0x1e4>
2003e0: e2443001 sub r3, r4, #1
2003e4: e3530014 cmp r3, #20
2003e8: 979ff103 ldrls pc, [pc, r3, lsl #2]
2003ec: eafffff0 b 2003b4 <notmain+0x74>
2003f0: 00200460 eoreq r0, r0, r0, ror #8
2003f4: 00200460 eoreq r0, r0, r0, ror #8
2003f8: 00200500 eoreq r0, r0, r0, lsl #10
2003fc: 00200500 eoreq r0, r0, r0, lsl #10
200400: 00200500 eoreq r0, r0, r0, lsl #10
200404: 00200500 eoreq r0, r0, r0, lsl #10
200408: 002004e0 eoreq r0, r0, r0, ror #9
20040c: 002004a8 eoreq r0, r0, r8, lsr #9
200410: 00200484 eoreq r0, r0, r4, lsl #9
200414: 00200484 eoreq r0, r0, r4, lsl #9
200418: 00200484 eoreq r0, r0, r4, lsl #9
20041c: 00200484 eoreq r0, r0, r4, lsl #9
200420: 00200478 eoreq r0, r0, r8, ror r4
200424: 00200444 eoreq r0, r0, r4, asr #8
200428: 00200444 eoreq r0, r0, r4, asr #8
20042c: 00200444 eoreq r0, r0, r4, asr #8
200430: 00200444 eoreq r0, r0, r4, asr #8
200434: 00200444 eoreq r0, r0, r4, asr #8
200438: 00200444 eoreq r0, r0, r4, asr #8
20043c: 00200444 eoreq r0, r0, r4, asr #8
200440: 00200444 eoreq r0, r0, r4, asr #8
200444: e3500039 cmp r0, #57 ; 0x39
200448: 82400007 subhi r0, r0, #7
20044c: e1a09209 lsl r9, r9, #4
200450: e200000f and r0, r0, #15
200454: e3540015 cmp r4, #21
200458: e1809009 orr r9, r0, r9
20045c: 0a00004c beq 200594 <notmain+0x254>
200460: ebffff08 bl 200088 <uart_recv>
200464: e350003a cmp r0, #58 ; 0x3a
200468: e2844001 add r4, r4, #1
20046c: 1affffd3 bne 2003c0 <notmain+0x80>
200470: e3a04001 mov r4, #1
200474: eaffffce b 2003b4 <notmain+0x74>
200478: e1a06206 lsl r6, r6, #4
20047c: e3a04000 mov r4, #0
200480: eaffffcb b 2003b4 <notmain+0x74>
200484: e3500039 cmp r0, #57 ; 0x39
200488: 82400007 subhi r0, r0, #7
20048c: e1a06206 lsl r6, r6, #4
200490: e200000f and r0, r0, #15
200494: e1806006 orr r6, r0, r6
200498: e1a06806 lsl r6, r6, #16
20049c: e1a06826 lsr r6, r6, #16
2004a0: e2844001 add r4, r4, #1
2004a4: eaffffc2 b 2003b4 <notmain+0x74>
2004a8: e3500039 cmp r0, #57 ; 0x39
2004ac: 82400007 subhi r0, r0, #7
2004b0: e1a05205 lsl r5, r5, #4
2004b4: e200000f and r0, r0, #15
2004b8: e1805005 orr r5, r0, r5
2004bc: e20550ff and r5, r5, #255 ; 0xff
2004c0: e3550001 cmp r5, #1
2004c4: 0a000027 beq 200568 <notmain+0x228>
2004c8: 33a0400e movcc r4, #14
2004cc: 3affffb8 bcc 2003b4 <notmain+0x74>
2004d0: e3550002 cmp r5, #2
2004d4: 03a04009 moveq r4, #9
2004d8: 13a04000 movne r4, #0
2004dc: eaffffb4 b 2003b4 <notmain+0x74>
2004e0: e3500039 cmp r0, #57 ; 0x39
2004e4: 82400007 subhi r0, r0, #7
2004e8: e1a05205 lsl r5, r5, #4
2004ec: e200000f and r0, r0, #15
2004f0: e1805005 orr r5, r0, r5
2004f4: e20550ff and r5, r5, #255 ; 0xff
2004f8: e3a04008 mov r4, #8
2004fc: eaffffac b 2003b4 <notmain+0x74>
200500: e3500039 cmp r0, #57 ; 0x39
200504: 82400007 subhi r0, r0, #7
200508: e1a08208 lsl r8, r8, #4
20050c: e200000f and r0, r0, #15
200510: e1808008 orr r8, r0, r8
200514: e1a08808 lsl r8, r8, #16
200518: e1868828 orr r8, r6, r8, lsr #16
20051c: e2844001 add r4, r4, #1
200520: eaffffa3 b 2003b4 <notmain+0x74>
200524: e3a0000d mov r0, #13
200528: ebfffee9 bl 2000d4 <uart_send>
20052c: e3a0002d mov r0, #45 ; 0x2d
200530: ebfffee7 bl 2000d4 <uart_send>
200534: e3a0002d mov r0, #45 ; 0x2d
200538: ebfffee5 bl 2000d4 <uart_send>
20053c: e3a0000d mov r0, #13
200540: ebfffee3 bl 2000d4 <uart_send>
200544: e3a0000a mov r0, #10
200548: ebfffee1 bl 2000d4 <uart_send>
20054c: e3a0000a mov r0, #10
200550: ebfffedf bl 2000d4 <uart_send>
200554: e3a00902 mov r0, #32768 ; 0x8000
200558: ebfffeb5 bl 200034 <BRANCHTO>
20055c: e1a0000a mov r0, sl
200560: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
200564: e12fff1e bx lr
200568: e3a04014 mov r4, #20
20056c: e1a00007 mov r0, r7
200570: ebfffefb bl 200164 <hexstring>
200574: e2544001 subs r4, r4, #1
200578: 1afffffb bne 20056c <notmain+0x22c>
20057c: e1a07004 mov r7, r4
200580: e1a09004 mov r9, r4
200584: e1a06004 mov r6, r4
200588: e1a05004 mov r5, r4
20058c: e1a08004 mov r8, r4
200590: eaffff87 b 2003b4 <notmain+0x74>
200594: e0293869 eor r3, r9, r9, ror #16
200598: e1a03423 lsr r3, r3, #8
20059c: e3c33cff bic r3, r3, #65280 ; 0xff00
2005a0: e0239469 eor r9, r3, r9, ror #8
2005a4: e1a00008 mov r0, r8
2005a8: e0887007 add r7, r8, r7
2005ac: e1a01009 mov r1, r9
2005b0: ebfffe95 bl 20000c <PUT32>
2005b4: e0897007 add r7, r9, r7
2005b8: e2888004 add r8, r8, #4
2005bc: e3a0400e mov r4, #14
2005c0: eaffff7b b 2003b4 <notmain+0x74>
2005c4: 12345678 eorsne r5, r4, #120, 12 ; 0x7800000
Disassembly of section .ARM.attributes:
00000000 <.ARM.attributes>:
0: 00002a41 andeq r2, r0, r1, asr #20
4: 61656100 cmnvs r5, r0, lsl #2
8: 01006962 tsteq r0, r2, ror #18
c: 00000020 andeq r0, r0, r0, lsr #32
10: 4d524105 ldfmie f4, [r2, #-20] ; 0xffffffec
14: 4b367620 blmi d9d89c <notmain+0xb9d55c>
18: 08090600 stmdaeq r9, {r9, sl}
1c: 12010901 andne r0, r1, #16384 ; 0x4000
20: 15011404 strne r1, [r1, #-1028] ; 0xfffffbfc
24: 18031701 stmdane r3, {r0, r8, r9, sl, ip}
28: Address 0x0000000000000028 is out of bounds.
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <notmain+0xed09e4>
4: 4e472820 cdpmi 8, 4, cr2, cr7, cr0, {1}
8: 35202955 strcc r2, [r0, #-2389]! ; 0xfffff6ab
c: 302e332e eorcc r3, lr, lr, lsr #6
...

Binary file not shown.

Binary file not shown.

View File

@@ -9,6 +9,13 @@ _start:
.space 0x200000-0x8004,0
skip:
;@ stop caching !!!
;@ mrc p15,0,r2,c1,c0,0
;@ bic r2,#0x1000
;@ bic r2,#0x0004
;@ mcr p15,0,r2,c1,c0,0
mov sp,#0x08000000
bl notmain
hang: b hang
@@ -40,12 +47,32 @@ GETPC:
.globl BRANCHTO
BRANCHTO:
mov r12,#0
mcr p15, 0, r12, c7, c10, 1
dsb
mov r12, #0
mcr p15, 0, r12, c7, c5, 0
mov r12, #0
mcr p15, 0, r12, c7, c5, 6
dsb
isb
bx r0
.globl dummy
dummy:
bx lr
.globl GETCPSR
GETCPSR:
mrs r0,cpsr
bx lr
.globl GETSCTLR
GETSCTLR:
mrc p15,0,r0,c1,c0,0
bx lr
;@-------------------------------------------------------------------------
;@-------------------------------------------------------------------------

View File

@@ -19,8 +19,8 @@ compatibility mode which runs the legacy 32 bit instruction set. See
the aarch32 directory for legacy 32 bit mode, and aarch64 for the
64 bit mode.
My preferred way to run examples is to use my bootloader07 kernel.img on
the board with an ftdi usb to uart board or cable. I also solder a
My preferred way to run examples is to use my bootloader07 kernel7.img
on the board with an ftdi usb to uart board or cable. I also solder a
momentary pushbutton on the RUN pins, which is basically a board reset.
There are ways to do this without soldering, pins you can push in rather
than solder.

View File

@@ -71,7 +71,8 @@ LLCOPS0 = -march=arm
LLCOPS1 = -march=arm -mcpu=arm1176jzf-s
LLCOPS = $(LLCOPS1)
COPS = -Wall -O2 -nostdlib -nostartfiles -ffreestanding
OOPS = -std-compile-opts
#OOPS = -std-compile-opts
OOPS = -std-link-opts
clang : bootloader07.clang.bin

Binary file not shown.

View File

@@ -1,12 +1,12 @@
:1080000002D9A0E3050000EBFEFFFFEA001080E5C7
:108010001EFF2FE1000090E51EFF2FE11EFF2FE164
:1080200070402DE98C009FE5F9FFFFEB0717C0E3D7
:10803000011781E37C009FE5F3FFFFEB78009FE5EC
:10804000F918A0E3F0FFFFEB6C009FE56C109FE5D3
:10805000EDFFFFEB68009FE5EDFFFFEB64409FE560
:108060000050A0E160009FE50118A0E3E6FFFFEBF0
:10803000011781E37C009FE5F3FFFFEBF918A0E354
:1080400074009FE5F0FFFFEB70109FE568009FE56F
:10805000EDFFFFEB68009FE5EDFFFFEB0050A0E1B7
:1080600060409FE50118A0E35C009FE5E6FFFFEBA1
:108070004C009FE5E6FFFFEB000065E0040050E1E7
:10808000FAFFFF9A3D6985E240009FE50118A0E3F1
:10808000FAFFFF9A3D6985E20118A0E33C009FE5F5
:10809000096D86E2DCFFFFEB24009FE5DCFFFFEBD0
:1080A000000066E0040050E1FAFFFF9A7A5985E289
:1080B000125D85E2EAFFFFEA0400202008B40020F8

View File

@@ -30,18 +30,18 @@ Disassembly of section .text:
8030: e3811701 orr r1, r1, #262144 ; 0x40000
8034: e59f007c ldr r0, [pc, #124] ; 80b8 <notmain+0x98>
8038: ebfffff3 bl 800c <PUT32>
803c: e59f0078 ldr r0, [pc, #120] ; 80bc <notmain+0x9c>
8040: e3a018f9 mov r1, #16318464 ; 0xf90000
803c: e3a018f9 mov r1, #16318464 ; 0xf90000
8040: e59f0074 ldr r0, [pc, #116] ; 80bc <notmain+0x9c>
8044: ebfffff0 bl 800c <PUT32>
8048: e59f006c ldr r0, [pc, #108] ; 80bc <notmain+0x9c>
804c: e59f106c ldr r1, [pc, #108] ; 80c0 <notmain+0xa0>
8048: e59f1070 ldr r1, [pc, #112] ; 80c0 <notmain+0xa0>
804c: e59f0068 ldr r0, [pc, #104] ; 80bc <notmain+0x9c>
8050: ebffffed bl 800c <PUT32>
8054: e59f0068 ldr r0, [pc, #104] ; 80c4 <notmain+0xa4>
8058: ebffffed bl 8014 <GET32>
805c: e59f4064 ldr r4, [pc, #100] ; 80c8 <notmain+0xa8>
8060: e1a05000 mov r5, r0
8064: e59f0060 ldr r0, [pc, #96] ; 80cc <notmain+0xac>
8068: e3a01801 mov r1, #65536 ; 0x10000
805c: e1a05000 mov r5, r0
8060: e59f4060 ldr r4, [pc, #96] ; 80c8 <notmain+0xa8>
8064: e3a01801 mov r1, #65536 ; 0x10000
8068: e59f005c ldr r0, [pc, #92] ; 80cc <notmain+0xac>
806c: ebffffe6 bl 800c <PUT32>
8070: e59f004c ldr r0, [pc, #76] ; 80c4 <notmain+0xa4>
8074: ebffffe6 bl 8014 <GET32>
@@ -49,8 +49,8 @@ Disassembly of section .text:
807c: e1500004 cmp r0, r4
8080: 9afffffa bls 8070 <notmain+0x50>
8084: e285693d add r6, r5, #999424 ; 0xf4000
8088: e59f0040 ldr r0, [pc, #64] ; 80d0 <notmain+0xb0>
808c: e3a01801 mov r1, #65536 ; 0x10000
8088: e3a01801 mov r1, #65536 ; 0x10000
808c: e59f003c ldr r0, [pc, #60] ; 80d0 <notmain+0xb0>
8090: e2866d09 add r6, r6, #576 ; 0x240
8094: ebffffdc bl 800c <PUT32>
8098: e59f0024 ldr r0, [pc, #36] ; 80c4 <notmain+0xa4>
@@ -77,10 +77,10 @@ Disassembly of section .ARM.attributes:
8: 01006962 tsteq r0, r2, ror #18
c: 00000020 andeq r0, r0, r0, lsr #32
10: 4d524105 ldfmie f4, [r2, #-20] ; 0xffffffec
14: 54347620 ldrtpl r7, [r4], #-1568 ; 0x620
14: 54347620 ldrtpl r7, [r4], #-1568 ; 0xfffff9e0
18: 08020600 stmdaeq r2, {r9, sl}
1c: 12010901 andne r0, r1, #16384 ; 0x4000
20: 15011404 strne r1, [r1, #-1028] ; 0x404
20: 15011404 strne r1, [r1, #-1028] ; 0xfffffbfc
24: 18031701 stmdane r3, {r0, r8, r9, sl, ip}
28: Address 0x0000000000000028 is out of bounds.
@@ -90,6 +90,6 @@ Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <notmain+0x10c8d04>
4: 4e472820 cdpmi 8, 4, cr2, cr7, cr0, {1}
8: 34202955 strtcc r2, [r0], #-2389 ; 0x955
c: 332e382e teqcc lr, #3014656 ; 0x2e0000
8: 35202955 strcc r2, [r0, #-2389]! ; 0xfffff6ab
c: 302e332e eorcc r3, lr, lr, lsr #6
...

BIN
bootloader07/blinker.o Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -3,13 +3,13 @@
:1080200070402DE9BC009FE5F9FFFFEB0E16C0E3A1
:10803000021681E3AC009FE5F3FFFFEBA8009FE58C
:10804000F3FFFFEB0E19C0E3021981E398009FE5EF
:10805000EDFFFFEB94009FE5F918A0E3EAFFFFEBCB
:1080600088009FE588109FE5E7FFFFEB84009FE510
:10807000E7FFFFEB80409FE50050A0E17C009FE51B
:108080000219A0E3E0FFFFEB74009FE50810A0E3F6
:10805000EDFFFFEBF918A0E390009FE5EAFFFFEBCF
:108060008C109FE584009FE5E7FFFFEB84009FE510
:10807000E7FFFFEB0050A0E17C409FE50219A0E381
:1080800078009FE5E0FFFFEB0810A0E370009FE59C
:10809000DDFFFFEB5C009FE5DDFFFFEB000065E02F
:1080A000040050E1FAFFFF9A54009FE50219A0E393
:1080B000D5FFFFEB3D6985E240009FE50810A0E396
:1080A000040050E1FAFFFF9A0219A0E350009FE597
:1080B000D5FFFFEB3D6985E20810A0E33C009FE59A
:1080C000096D86E2D0FFFFEB28009FE5D0FFFFEBB4
:1080D000000066E0040050E1FAFFFF9A7A5985E259
:1080E000125D85E2E4FFFFEA1000203F0C00203F14

108
bootloader07/blinker7.list Normal file
View File

@@ -0,0 +1,108 @@
blinker7.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000005 bl 8020 <notmain>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <PUT32>:
800c: e5801000 str r1, [r0]
8010: e12fff1e bx lr
00008014 <GET32>:
8014: e5900000 ldr r0, [r0]
8018: e12fff1e bx lr
0000801c <dummy>:
801c: e12fff1e bx lr
00008020 <notmain>:
8020: e92d4070 push {r4, r5, r6, lr}
8024: e59f00bc ldr r0, [pc, #188] ; 80e8 <notmain+0xc8>
8028: ebfffff9 bl 8014 <GET32>
802c: e3c0160e bic r1, r0, #14680064 ; 0xe00000
8030: e3811602 orr r1, r1, #2097152 ; 0x200000
8034: e59f00ac ldr r0, [pc, #172] ; 80e8 <notmain+0xc8>
8038: ebfffff3 bl 800c <PUT32>
803c: e59f00a8 ldr r0, [pc, #168] ; 80ec <notmain+0xcc>
8040: ebfffff3 bl 8014 <GET32>
8044: e3c0190e bic r1, r0, #229376 ; 0x38000
8048: e3811902 orr r1, r1, #32768 ; 0x8000
804c: e59f0098 ldr r0, [pc, #152] ; 80ec <notmain+0xcc>
8050: ebffffed bl 800c <PUT32>
8054: e3a018f9 mov r1, #16318464 ; 0xf90000
8058: e59f0090 ldr r0, [pc, #144] ; 80f0 <notmain+0xd0>
805c: ebffffea bl 800c <PUT32>
8060: e59f108c ldr r1, [pc, #140] ; 80f4 <notmain+0xd4>
8064: e59f0084 ldr r0, [pc, #132] ; 80f0 <notmain+0xd0>
8068: ebffffe7 bl 800c <PUT32>
806c: e59f0084 ldr r0, [pc, #132] ; 80f8 <notmain+0xd8>
8070: ebffffe7 bl 8014 <GET32>
8074: e1a05000 mov r5, r0
8078: e59f407c ldr r4, [pc, #124] ; 80fc <notmain+0xdc>
807c: e3a01902 mov r1, #32768 ; 0x8000
8080: e59f0078 ldr r0, [pc, #120] ; 8100 <notmain+0xe0>
8084: ebffffe0 bl 800c <PUT32>
8088: e3a01008 mov r1, #8
808c: e59f0070 ldr r0, [pc, #112] ; 8104 <notmain+0xe4>
8090: ebffffdd bl 800c <PUT32>
8094: e59f005c ldr r0, [pc, #92] ; 80f8 <notmain+0xd8>
8098: ebffffdd bl 8014 <GET32>
809c: e0650000 rsb r0, r5, r0
80a0: e1500004 cmp r0, r4
80a4: 9afffffa bls 8094 <notmain+0x74>
80a8: e3a01902 mov r1, #32768 ; 0x8000
80ac: e59f0050 ldr r0, [pc, #80] ; 8104 <notmain+0xe4>
80b0: ebffffd5 bl 800c <PUT32>
80b4: e285693d add r6, r5, #999424 ; 0xf4000
80b8: e3a01008 mov r1, #8
80bc: e59f003c ldr r0, [pc, #60] ; 8100 <notmain+0xe0>
80c0: e2866d09 add r6, r6, #576 ; 0x240
80c4: ebffffd0 bl 800c <PUT32>
80c8: e59f0028 ldr r0, [pc, #40] ; 80f8 <notmain+0xd8>
80cc: ebffffd0 bl 8014 <GET32>
80d0: e0660000 rsb r0, r6, r0
80d4: e1500004 cmp r0, r4
80d8: 9afffffa bls 80c8 <notmain+0xa8>
80dc: e285597a add r5, r5, #1998848 ; 0x1e8000
80e0: e2855d12 add r5, r5, #1152 ; 0x480
80e4: eaffffe4 b 807c <notmain+0x5c>
80e8: 3f200010 svccc 0x00200010
80ec: 3f20000c svccc 0x0020000c
80f0: 3f00b408 svccc 0x0000b408
80f4: 00f90200 rscseq r0, r9, r0, lsl #4
80f8: 3f00b420 svccc 0x0000b420
80fc: 000f423f andeq r4, pc, pc, lsr r2 ; <UNPREDICTABLE>
8100: 3f200020 svccc 0x00200020
8104: 3f20002c svccc 0x0020002c
Disassembly of section .ARM.attributes:
00000000 <.ARM.attributes>:
0: 00002a41 andeq r2, r0, r1, asr #20
4: 61656100 cmnvs r5, r0, lsl #2
8: 01006962 tsteq r0, r2, ror #18
c: 00000020 andeq r0, r0, r0, lsr #32
10: 4d524105 ldfmie f4, [r2, #-20] ; 0xffffffec
14: 54347620 ldrtpl r7, [r4], #-1568 ; 0xfffff9e0
18: 08020600 stmdaeq r2, {r9, sl}
1c: 12010901 andne r0, r1, #16384 ; 0x4000
20: 15011404 strne r1, [r1, #-1028] ; 0xfffffbfc
24: 18031701 stmdane r3, {r0, r8, r9, sl, ip}
28: Address 0x0000000000000028 is out of bounds.
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <notmain+0x10c8d04>
4: 4e472820 cdpmi 8, 4, cr2, cr7, cr0, {1}
8: 35202955 strcc r2, [r0, #-2389]! ; 0xfffff6ab
c: 302e332e eorcc r3, lr, lr, lsr #6
...

BIN
bootloader07/blinker7.o Normal file

Binary file not shown.

Binary file not shown.

BIN
bootloader07/bootloader07.o Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -129058,82 +129058,82 @@
:1000000002D3A0E3A60000EBFEFFFFEA001080E5AC
:100010001EFF2FE1B010C0E11EFF2FE10010C0E570
:100020001EFF2FE1000090E51EFF2FE10E00A0E172
:100030001EFF2FE110FF2FE11EFF2FE108402DE9E9
:1000400008009FE5F6FFFFEB0840BDE81EFF2FE12B
:100050005450212008402DE91C009FE5F0FFFFEBE4
:100030001EFF2FE110FF2FE11EFF2FE110402DE9E1
:1000400008009FE5F6FFFFEB1040BDE81EFF2FE123
:100050005450212010402DE91C009FE5F0FFFFEBDC
:10006000010010E3FBFFFF0A10009FE5ECFFFFEB30
:100070000840BDE8FF0000E21EFF2FE154502120A0
:100080004050212008402DE90C009FE5E4FFFFEBE4
:100090000840BDE8010000E21EFF2FE1545021207E
:100070001040BDE8FF0000E21EFF2FE15450212098
:100080004050212010402DE90C009FE5E4FFFFEBDC
:100090001040BDE8010000E21EFF2FE15450212076
:1000A00010402DE90040A0E11C009FE5DCFFFFEBC4
:1000B000200010E3FBFFFF0A0410A0E10C009FE505
:1000C000D1FFFFEB1040BDE81EFF2FE1545021206F
:1000D0004050212008402DE910009FE5D0FFFFEBA4
:1000E000010C10E3FBFFFF1A0840BDE81EFF2FE1E3
:1000F0005450212038402DE90050A0E12040A0E3D9
:10010000044044E23534A0E10F3003E2090053E338
:100110003700838230008392E0FFFFEB000054E35E
:10012000F6FFFF1A2000A0E33840BDE8DBFFFFEA3E
:1001300008402DE9EEFFFFEB0D00A0E3D7FFFFEB3A
:100140000A00A0E30840BDE8D4FFFFEA10402DE913
:10015000D8009FE50110A0E3ABFFFFEBD0009FE5C7
:100160000010A0E3A8FFFFEBC8009FE50010A0E38C
:10017000A5FFFFEBC0009FE50310A0E3A2FFFFEB8C
:10018000B8009FE50010A0E39FFFFFEBA0009FE5F4
:100190000010A0E39CFFFFEBA4009FE5C610A0E3C6
:1000D0004050212010402DE910009FE5D0FFFFEB9C
:1000E000010C10E3FBFFFF1A1040BDE81EFF2FE1DB
:1000F0005450212070402DE90050A0E12040A0E3A1
:10010000044044E23504A0E10F0000E2090050E39E
:100110003700808230008092E0FFFFEB000054E364
:10012000F6FFFF1A2000A0E37040BDE8DBFFFFEA06
:1001300010402DE9EEFFFFEB0D00A0E3D7FFFFEB32
:100140000A00A0E31040BDE8D4FFFFEA10402DE90B
:100150000110A0E3D4009FE5ABFFFFEB0010A0E38C
:10016000CC009FE5A8FFFFEB0010A0E3C4009FE5D3
:10017000A5FFFFEB0310A0E3BC009FE5A2FFFFEB90
:100180000010A0E3B4009FE59FFFFFEB0010A0E389
:100190009C009FE59CFFFFEBC610A0E3A0009FE53D
:1001A00099FFFFEB9C109FE59C009FE596FFFFEBFE
:1001B00098009FE59AFFFFEB3F1AC0E3121A81E314
:1001C00088009FE590FFFFEB84009FE50010A0E30F
:1001C00088009FE590FFFFEB0010A0E380009FE513
:1001D0008DFFFFEB0040A0E30400A0E1014084E2BA
:1001E00094FFFFEB960054E3FAFFFF1A64009FE5CB
:1001F0000319A0E384FFFFEB0040A0E30400A0E1AB
:1001E00094FFFFEB960054E3FAFFFF1A0319A0E314
:1001F00060009FE584FFFFEB0040A0E30400A0E166
:10020000014084E28BFFFFEB960054E3FAFFFF1AF4
:1002100040009FE50010A0E37BFFFFEB14009FE58B
:100220000310A0E378FFFFEB1040BDE81EFF2FE1B5
:100210000010A0E33C009FE57BFFFFEB0310A0E391
:1002200010009FE578FFFFEB1040BDE81EFF2FE1B7
:100230000450212044502120605021204C50212086
:1002400050502120485021200E01000068502120EC
:1002500004002020940020209800202010402DE948
:100260001C409FE5F918A0E30400A0E166FFFFEB46
:100270000400A0E10C109FE563FFFFEB1040BDE818
:100280001EFF2FE108B400200002F90008402DE90C
:1002900008009FE562FFFFEB0840BDE81EFF2FE16D
:1002A00020B40020F8432DE9A7FFFFEB44029FE5AF
:1002B0009EFFFFEB5CFFFFEB9CFFFFEB4900A0E321
:1002C00076FFFFEB4800A0E374FFFFEB4500A0E3DF
:1002D00072FFFFEB5800A0E370FFFFEB0D00A0E3FF
:1002E0006EFFFFEB0A00A0E36CFFFFEB0070A0E3E2
:1002F0000780A0E10760A0E10750A0E10790A0E11E
:100300000740A0E152FFFFEB3A0050E32A00000A49
:100310000D0050E35400000A0A0050E35200000AA6
:100320002030C0E3470053E35100000A013044E2AB
:10033000140053E303F19F97F1FFFFEAAC032000A1
:10034000AC0320004804200048042000480420009A
:100350004804200028042000F4032000D0032000DB
:10036000D0032000D0032000D0032000C4032000CD
:1003700090032000900320009003200090032000B1
:1003800090032000900320009003200090032000A1
:10039000390050E3070040820882A0E10F0000E22C
:1003A000150054E3088080E14200000A28FFFFEBBB
:1003B0003A0050E3014084E2D4FFFF1A0140A0E379
:1003C000CFFFFFEA0662A0E10040A0E3CCFFFFEA16
:1003D000390050E3070040820662A0E10F0000E20E
:1003E000066080E10668A0E12668A0E1014084E2A1
:1003F000C3FFFFEA390050E3070040820552A0E145
:100400000F0000E2055080E1FF5005E2010055E3D6
:100410003400000A3100003A020055E30940A0030D
:100420000040A013B6FFFFEA390050E30700408206
:100430000552A0E10F0000E2055080E1FF5005E207
:100440000840A0E3AEFFFFEA390050E30700408216
:100450000992A0E10F0000E2099080E10998A0E173
:10046000299886E1014084E2A5FFFFEA0040A0E36D
:100280001EFF2FE108B400200002F90010402DE904
:1002900008009FE562FFFFEB1040BDE81EFF2FE165
:1002A00020B40020F0472DE90080A0E3A6FFFFEB7B
:1002B00040029FE59DFFFFEB5BFFFFEB9BFFFFEB2A
:1002C0004900A0E375FFFFEB4800A0E373FFFFEBDD
:1002D0004500A0E371FFFFEB5800A0E36FFFFFEBC9
:1002E0000D00A0E36DFFFFEB0A00A0E30890A0E182
:1002F0000860A0E10850A0E10870A0E10840A0E17A
:1003000066FFFFEB52FFFFEB3A0050E32B00000AC1
:100310000D0050E30A00501301A0A00300A0A01399
:100320002900000A2030C0E3470053E35000000AD0
:10033000013044E2140053E303F19F97F0FFFFEA1A
:10034000B0032000B003200050042000500420001F
:10035000500420005004200030042000F803200046
:10036000D4032000D4032000D4032000D4032000B1
:10037000C80320009403200094032000940320006D
:100380009403200094032000940320009403200091
:1003900094032000390050E3070040820992A0E155
:1003A0000F0000E2150054E3099080E14500000AC7
:1003B00027FFFFEB3A0050E3014084E2D3FFFF1A2E
:1003C0000140A0E3CEFFFFEA0662A0E10040A0E307
:1003D000CBFFFFEA390050E3070040820662A0E14C
:1003E0000F0000E2066080E10668A0E12668A0E157
:1003F000014084E2C2FFFFEA390050E30700408277
:100400000552A0E10F0000E2055080E1FF5005E237
:10041000010055E32700000A0E40A033B8FFFF3A61
:10042000020055E30940A0030040A013B4FFFFEA17
:10043000390050E3070040820552A0E10F0000E2BE
:10044000055080E1FF5005E20840A0E3ACFFFFEA61
:10045000390050E3070040820772A0E10F0000E27C
:10046000077080E10778A0E1277886E1014084E207
:10047000A3FFFFEA0D00A0E308FFFFEB2D00A0E3C0
:1004800006FFFFEB2D00A0E304FFFFEB0D00A0E350
:1004900002FFFFEB0A00A0E300FFFFEB0A00A0E36E
:1004A000FEFEFFEB0209A0E3E1FEFFEB0000A0E38C
:1004B000F843BDE81EFF2FE1683828E02334A0E1AF
:1004C000FF3CC3E3688423E00900A0E10810A0E139
:1004D000CDFEFFEB097087E0087087E0049089E2A9
:1004E0000E40A0E386FFFFEA0700A0E10FFFFFEB4D
:0C04F0000040A0E382FFFFEA78563412BF
:1004A000FEFEFFEB0209A0E3E1FEFFEB0A00A0E184
:1004B000F047BDE81EFF2FE10800A0E11BFFFFEBA6
:1004C0000040A0E38EFFFFEA693829E02334A0E171
:1004D000FF3CC3E3699423E00700A0E1088087E0C4
:1004E0000910A0E1C8FEFFEB088089E0047087E2F4
:0C04F0000E40A0E382FFFFEA78563412B1
:040000030000800079
:00000001FF

View File

@@ -1,5 +1,5 @@
bootloader07.elf: file format elf32-littlearm
bootloader07_rpi1.elf: file format elf32-littlearm
Disassembly of section .text:
@@ -42,32 +42,32 @@ Disassembly of section .text:
200038: e12fff1e bx lr
0020003c <uart_lcr>:
20003c: e92d4008 push {r3, lr}
20003c: e92d4010 push {r4, lr}
200040: e59f0008 ldr r0, [pc, #8] ; 200050 <uart_lcr+0x14>
200044: ebfffff6 bl 200024 <GET32>
200048: e8bd4008 pop {r3, lr}
200048: e8bd4010 pop {r4, lr}
20004c: e12fff1e bx lr
200050: 20215054 eorcs r5, r1, r4, asr r0
00200054 <uart_recv>:
200054: e92d4008 push {r3, lr}
200054: e92d4010 push {r4, lr}
200058: e59f001c ldr r0, [pc, #28] ; 20007c <uart_recv+0x28>
20005c: ebfffff0 bl 200024 <GET32>
200060: e3100001 tst r0, #1
200064: 0afffffb beq 200058 <uart_recv+0x4>
200068: e59f0010 ldr r0, [pc, #16] ; 200080 <uart_recv+0x2c>
20006c: ebffffec bl 200024 <GET32>
200070: e8bd4008 pop {r3, lr}
200070: e8bd4010 pop {r4, lr}
200074: e20000ff and r0, r0, #255 ; 0xff
200078: e12fff1e bx lr
20007c: 20215054 eorcs r5, r1, r4, asr r0
200080: 20215040 eorcs r5, r1, r0, asr #32
00200084 <uart_check>:
200084: e92d4008 push {r3, lr}
200084: e92d4010 push {r4, lr}
200088: e59f000c ldr r0, [pc, #12] ; 20009c <uart_check+0x18>
20008c: ebffffe4 bl 200024 <GET32>
200090: e8bd4008 pop {r3, lr}
200090: e8bd4010 pop {r4, lr}
200094: e2000001 and r0, r0, #1
200098: e12fff1e bx lr
20009c: 20215054 eorcs r5, r1, r4, asr r0
@@ -88,63 +88,63 @@ Disassembly of section .text:
2000d0: 20215040 eorcs r5, r1, r0, asr #32
002000d4 <uart_flush>:
2000d4: e92d4008 push {r3, lr}
2000d4: e92d4010 push {r4, lr}
2000d8: e59f0010 ldr r0, [pc, #16] ; 2000f0 <uart_flush+0x1c>
2000dc: ebffffd0 bl 200024 <GET32>
2000e0: e3100c01 tst r0, #256 ; 0x100
2000e4: 1afffffb bne 2000d8 <uart_flush+0x4>
2000e8: e8bd4008 pop {r3, lr}
2000e8: e8bd4010 pop {r4, lr}
2000ec: e12fff1e bx lr
2000f0: 20215054 eorcs r5, r1, r4, asr r0
002000f4 <hexstrings>:
2000f4: e92d4038 push {r3, r4, r5, lr}
2000f4: e92d4070 push {r4, r5, r6, lr}
2000f8: e1a05000 mov r5, r0
2000fc: e3a04020 mov r4, #32
200100: e2444004 sub r4, r4, #4
200104: e1a03435 lsr r3, r5, r4
200108: e203300f and r3, r3, #15
20010c: e3530009 cmp r3, #9
200110: 82830037 addhi r0, r3, #55 ; 0x37
200114: 92830030 addls r0, r3, #48 ; 0x30
200104: e1a00435 lsr r0, r5, r4
200108: e200000f and r0, r0, #15
20010c: e3500009 cmp r0, #9
200110: 82800037 addhi r0, r0, #55 ; 0x37
200114: 92800030 addls r0, r0, #48 ; 0x30
200118: ebffffe0 bl 2000a0 <uart_send>
20011c: e3540000 cmp r4, #0
200120: 1afffff6 bne 200100 <hexstrings+0xc>
200124: e3a00020 mov r0, #32
200128: e8bd4038 pop {r3, r4, r5, lr}
200128: e8bd4070 pop {r4, r5, r6, lr}
20012c: eaffffdb b 2000a0 <uart_send>
00200130 <hexstring>:
200130: e92d4008 push {r3, lr}
200130: e92d4010 push {r4, lr}
200134: ebffffee bl 2000f4 <hexstrings>
200138: e3a0000d mov r0, #13
20013c: ebffffd7 bl 2000a0 <uart_send>
200140: e3a0000a mov r0, #10
200144: e8bd4008 pop {r3, lr}
200144: e8bd4010 pop {r4, lr}
200148: eaffffd4 b 2000a0 <uart_send>
0020014c <uart_init>:
20014c: e92d4010 push {r4, lr}
200150: e59f00d8 ldr r0, [pc, #216] ; 200230 <uart_init+0xe4>
200154: e3a01001 mov r1, #1
200150: e3a01001 mov r1, #1
200154: e59f00d4 ldr r0, [pc, #212] ; 200230 <uart_init+0xe4>
200158: ebffffab bl 20000c <PUT32>
20015c: e59f00d0 ldr r0, [pc, #208] ; 200234 <uart_init+0xe8>
200160: e3a01000 mov r1, #0
20015c: e3a01000 mov r1, #0
200160: e59f00cc ldr r0, [pc, #204] ; 200234 <uart_init+0xe8>
200164: ebffffa8 bl 20000c <PUT32>
200168: e59f00c8 ldr r0, [pc, #200] ; 200238 <uart_init+0xec>
20016c: e3a01000 mov r1, #0
200168: e3a01000 mov r1, #0
20016c: e59f00c4 ldr r0, [pc, #196] ; 200238 <uart_init+0xec>
200170: ebffffa5 bl 20000c <PUT32>
200174: e59f00c0 ldr r0, [pc, #192] ; 20023c <uart_init+0xf0>
200178: e3a01003 mov r1, #3
200174: e3a01003 mov r1, #3
200178: e59f00bc ldr r0, [pc, #188] ; 20023c <uart_init+0xf0>
20017c: ebffffa2 bl 20000c <PUT32>
200180: e59f00b8 ldr r0, [pc, #184] ; 200240 <uart_init+0xf4>
200184: e3a01000 mov r1, #0
200180: e3a01000 mov r1, #0
200184: e59f00b4 ldr r0, [pc, #180] ; 200240 <uart_init+0xf4>
200188: ebffff9f bl 20000c <PUT32>
20018c: e59f00a0 ldr r0, [pc, #160] ; 200234 <uart_init+0xe8>
200190: e3a01000 mov r1, #0
20018c: e3a01000 mov r1, #0
200190: e59f009c ldr r0, [pc, #156] ; 200234 <uart_init+0xe8>
200194: ebffff9c bl 20000c <PUT32>
200198: e59f00a4 ldr r0, [pc, #164] ; 200244 <uart_init+0xf8>
20019c: e3a010c6 mov r1, #198 ; 0xc6
200198: e3a010c6 mov r1, #198 ; 0xc6
20019c: e59f00a0 ldr r0, [pc, #160] ; 200244 <uart_init+0xf8>
2001a0: ebffff99 bl 20000c <PUT32>
2001a4: e59f109c ldr r1, [pc, #156] ; 200248 <uart_init+0xfc>
2001a8: e59f009c ldr r0, [pc, #156] ; 20024c <uart_init+0x100>
@@ -155,8 +155,8 @@ Disassembly of section .text:
2001bc: e3811a12 orr r1, r1, #73728 ; 0x12000
2001c0: e59f0088 ldr r0, [pc, #136] ; 200250 <uart_init+0x104>
2001c4: ebffff90 bl 20000c <PUT32>
2001c8: e59f0084 ldr r0, [pc, #132] ; 200254 <uart_init+0x108>
2001cc: e3a01000 mov r1, #0
2001c8: e3a01000 mov r1, #0
2001cc: e59f0080 ldr r0, [pc, #128] ; 200254 <uart_init+0x108>
2001d0: ebffff8d bl 20000c <PUT32>
2001d4: e3a04000 mov r4, #0
2001d8: e1a00004 mov r0, r4
@@ -164,8 +164,8 @@ Disassembly of section .text:
2001e0: ebffff94 bl 200038 <dummy>
2001e4: e3540096 cmp r4, #150 ; 0x96
2001e8: 1afffffa bne 2001d8 <uart_init+0x8c>
2001ec: e59f0064 ldr r0, [pc, #100] ; 200258 <uart_init+0x10c>
2001f0: e3a01903 mov r1, #49152 ; 0xc000
2001ec: e3a01903 mov r1, #49152 ; 0xc000
2001f0: e59f0060 ldr r0, [pc, #96] ; 200258 <uart_init+0x10c>
2001f4: ebffff84 bl 20000c <PUT32>
2001f8: e3a04000 mov r4, #0
2001fc: e1a00004 mov r0, r4
@@ -173,11 +173,11 @@ Disassembly of section .text:
200204: ebffff8b bl 200038 <dummy>
200208: e3540096 cmp r4, #150 ; 0x96
20020c: 1afffffa bne 2001fc <uart_init+0xb0>
200210: e59f0040 ldr r0, [pc, #64] ; 200258 <uart_init+0x10c>
200214: e3a01000 mov r1, #0
200210: e3a01000 mov r1, #0
200214: e59f003c ldr r0, [pc, #60] ; 200258 <uart_init+0x10c>
200218: ebffff7b bl 20000c <PUT32>
20021c: e59f0014 ldr r0, [pc, #20] ; 200238 <uart_init+0xec>
200220: e3a01003 mov r1, #3
20021c: e3a01003 mov r1, #3
200220: e59f0010 ldr r0, [pc, #16] ; 200238 <uart_init+0xec>
200224: ebffff78 bl 20000c <PUT32>
200228: e8bd4010 pop {r4, lr}
20022c: e12fff1e bx lr
@@ -208,129 +208,129 @@ Disassembly of section .text:
200288: 00f90200 rscseq r0, r9, r0, lsl #4
0020028c <timer_tick>:
20028c: e92d4008 push {r3, lr}
20028c: e92d4010 push {r4, lr}
200290: e59f0008 ldr r0, [pc, #8] ; 2002a0 <timer_tick+0x14>
200294: ebffff62 bl 200024 <GET32>
200298: e8bd4008 pop {r3, lr}
200298: e8bd4010 pop {r4, lr}
20029c: e12fff1e bx lr
2002a0: 2000b420 andcs fp, r0, r0, lsr #8
002002a4 <notmain>:
2002a4: e92d43f8 push {r3, r4, r5, r6, r7, r8, r9, lr}
2002a8: ebffffa7 bl 20014c <uart_init>
2002ac: e59f0244 ldr r0, [pc, #580] ; 2004f8 <notmain+0x254>
2002b0: ebffff9e bl 200130 <hexstring>
2002b4: ebffff5c bl 20002c <GETPC>
2002b8: ebffff9c bl 200130 <hexstring>
2002bc: e3a00049 mov r0, #73 ; 0x49
2002c0: ebffff76 bl 2000a0 <uart_send>
2002c4: e3a00048 mov r0, #72 ; 0x48
2002c8: ebffff74 bl 2000a0 <uart_send>
2002cc: e3a00045 mov r0, #69 ; 0x45
2002d0: ebffff72 bl 2000a0 <uart_send>
2002d4: e3a00058 mov r0, #88 ; 0x58
2002d8: ebffff70 bl 2000a0 <uart_send>
2002dc: e3a0000d mov r0, #13
2002e0: ebffff6e bl 2000a0 <uart_send>
2002e4: e3a0000a mov r0, #10
2002e8: ebffff6c bl 2000a0 <uart_send>
2002ec: e3a07000 mov r7, #0
2002f0: e1a08007 mov r8, r7
2002f4: e1a06007 mov r6, r7
2002f8: e1a05007 mov r5, r7
2002fc: e1a09007 mov r9, r7
200300: e1a04007 mov r4, r7
2002a4: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
2002a8: e3a08000 mov r8, #0
2002ac: ebffffa6 bl 20014c <uart_init>
2002b0: e59f0240 ldr r0, [pc, #576] ; 2004f8 <notmain+0x254>
2002b4: ebffff9d bl 200130 <hexstring>
2002b8: ebffff5b bl 20002c <GETPC>
2002bc: ebffff9b bl 200130 <hexstring>
2002c0: e3a00049 mov r0, #73 ; 0x49
2002c4: ebffff75 bl 2000a0 <uart_send>
2002c8: e3a00048 mov r0, #72 ; 0x48
2002cc: ebffff73 bl 2000a0 <uart_send>
2002d0: e3a00045 mov r0, #69 ; 0x45
2002d4: ebffff71 bl 2000a0 <uart_send>
2002d8: e3a00058 mov r0, #88 ; 0x58
2002dc: ebffff6f bl 2000a0 <uart_send>
2002e0: e3a0000d mov r0, #13
2002e4: ebffff6d bl 2000a0 <uart_send>
2002e8: e3a0000a mov r0, #10
2002ec: e1a09008 mov r9, r8
2002f0: e1a06008 mov r6, r8
2002f4: e1a05008 mov r5, r8
2002f8: e1a07008 mov r7, r8
2002fc: e1a04008 mov r4, r8
200300: ebffff66 bl 2000a0 <uart_send>
200304: ebffff52 bl 200054 <uart_recv>
200308: e350003a cmp r0, #58 ; 0x3a
20030c: 0a00002a beq 2003bc <notmain+0x118>
20030c: 0a00002b beq 2003c0 <notmain+0x11c>
200310: e350000d cmp r0, #13
200314: 0a000054 beq 20046c <notmain+0x1c8>
200318: e350000a cmp r0, #10
20031c: 0a000052 beq 20046c <notmain+0x1c8>
200320: e3c03020 bic r3, r0, #32
200324: e3530047 cmp r3, #71 ; 0x47
200328: 0a000051 beq 200474 <notmain+0x1d0>
20032c: e2443001 sub r3, r4, #1
200330: e3530014 cmp r3, #20
200334: 979ff103 ldrls pc, [pc, r3, lsl #2]
200338: eafffff1 b 200304 <notmain+0x60>
20033c: 002003ac eoreq r0, r0, ip, lsr #7
200340: 002003ac eoreq r0, r0, ip, lsr #7
200344: 00200448 eoreq r0, r0, r8, asr #8
200348: 00200448 eoreq r0, r0, r8, asr #8
20034c: 00200448 eoreq r0, r0, r8, asr #8
200350: 00200448 eoreq r0, r0, r8, asr #8
200354: 00200428 eoreq r0, r0, r8, lsr #8
200358: 002003f4 strdeq r0, [r0], -r4 ; <UNPREDICTABLE>
20035c: 002003d0 ldrdeq r0, [r0], -r0 ; <UNPREDICTABLE>
200360: 002003d0 ldrdeq r0, [r0], -r0 ; <UNPREDICTABLE>
200364: 002003d0 ldrdeq r0, [r0], -r0 ; <UNPREDICTABLE>
200368: 002003d0 ldrdeq r0, [r0], -r0 ; <UNPREDICTABLE>
20036c: 002003c4 eoreq r0, r0, r4, asr #7
200370: 00200390 mlaeq r0, r0, r3, r0
200374: 00200390 mlaeq r0, r0, r3, r0
200378: 00200390 mlaeq r0, r0, r3, r0
20037c: 00200390 mlaeq r0, r0, r3, r0
200380: 00200390 mlaeq r0, r0, r3, r0
200384: 00200390 mlaeq r0, r0, r3, r0
200388: 00200390 mlaeq r0, r0, r3, r0
20038c: 00200390 mlaeq r0, r0, r3, r0
200390: e3500039 cmp r0, #57 ; 0x39
200394: 82400007 subhi r0, r0, #7
200398: e1a08208 lsl r8, r8, #4
20039c: e200000f and r0, r0, #15
2003a0: e3540015 cmp r4, #21
2003a4: e1808008 orr r8, r0, r8
2003a8: 0a000042 beq 2004b8 <notmain+0x214>
2003ac: ebffff28 bl 200054 <uart_recv>
2003b0: e350003a cmp r0, #58 ; 0x3a
2003b4: e2844001 add r4, r4, #1
2003b8: 1affffd4 bne 200310 <notmain+0x6c>
2003bc: e3a04001 mov r4, #1
2003c0: eaffffcf b 200304 <notmain+0x60>
2003c4: e1a06206 lsl r6, r6, #4
2003c8: e3a04000 mov r4, #0
2003cc: eaffffcc b 200304 <notmain+0x60>
2003d0: e3500039 cmp r0, #57 ; 0x39
2003d4: 82400007 subhi r0, r0, #7
2003d8: e1a06206 lsl r6, r6, #4
2003dc: e200000f and r0, r0, #15
2003e0: e1806006 orr r6, r0, r6
2003e4: e1a06806 lsl r6, r6, #16
2003e8: e1a06826 lsr r6, r6, #16
2003ec: e2844001 add r4, r4, #1
2003f0: eaffffc3 b 200304 <notmain+0x60>
2003f4: e3500039 cmp r0, #57 ; 0x39
2003f8: 82400007 subhi r0, r0, #7
2003fc: e1a05205 lsl r5, r5, #4
200400: e200000f and r0, r0, #15
200404: e1805005 orr r5, r0, r5
200408: e20550ff and r5, r5, #255 ; 0xff
20040c: e3550001 cmp r5, #1
200410: 0a000034 beq 2004e8 <notmain+0x244>
200414: 3a000031 bcc 2004e0 <notmain+0x23c>
200418: e3550002 cmp r5, #2
20041c: 03a04009 moveq r4, #9
200420: 13a04000 movne r4, #0
200424: eaffffb6 b 200304 <notmain+0x60>
200428: e3500039 cmp r0, #57 ; 0x39
20042c: 82400007 subhi r0, r0, #7
200430: e1a05205 lsl r5, r5, #4
200434: e200000f and r0, r0, #15
200438: e1805005 orr r5, r0, r5
20043c: e20550ff and r5, r5, #255 ; 0xff
200440: e3a04008 mov r4, #8
200444: eaffffae b 200304 <notmain+0x60>
200448: e3500039 cmp r0, #57 ; 0x39
20044c: 82400007 subhi r0, r0, #7
200450: e1a09209 lsl r9, r9, #4
200454: e200000f and r0, r0, #15
200458: e1809009 orr r9, r0, r9
20045c: e1a09809 lsl r9, r9, #16
200460: e1869829 orr r9, r6, r9, lsr #16
200464: e2844001 add r4, r4, #1
200468: eaffffa5 b 200304 <notmain+0x60>
20046c: e3a04000 mov r4, #0
200314: 1350000a cmpne r0, #10
200318: 03a0a001 moveq sl, #1
20031c: 13a0a000 movne sl, #0
200320: 0a000029 beq 2003cc <notmain+0x128>
200324: e3c03020 bic r3, r0, #32
200328: e3530047 cmp r3, #71 ; 0x47
20032c: 0a000050 beq 200474 <notmain+0x1d0>
200330: e2443001 sub r3, r4, #1
200334: e3530014 cmp r3, #20
200338: 979ff103 ldrls pc, [pc, r3, lsl #2]
20033c: eafffff0 b 200304 <notmain+0x60>
200340: 002003b0 strhteq r0, [r0], -r0
200344: 002003b0 strhteq r0, [r0], -r0
200348: 00200450 eoreq r0, r0, r0, asr r4
20034c: 00200450 eoreq r0, r0, r0, asr r4
200350: 00200450 eoreq r0, r0, r0, asr r4
200354: 00200450 eoreq r0, r0, r0, asr r4
200358: 00200430 eoreq r0, r0, r0, lsr r4
20035c: 002003f8 strdeq r0, [r0], -r8 ; <UNPREDICTABLE>
200360: 002003d4 ldrdeq r0, [r0], -r4 ; <UNPREDICTABLE>
200364: 002003d4 ldrdeq r0, [r0], -r4 ; <UNPREDICTABLE>
200368: 002003d4 ldrdeq r0, [r0], -r4 ; <UNPREDICTABLE>
20036c: 002003d4 ldrdeq r0, [r0], -r4 ; <UNPREDICTABLE>
200370: 002003c8 eoreq r0, r0, r8, asr #7
200374: 00200394 mlaeq r0, r4, r3, r0
200378: 00200394 mlaeq r0, r4, r3, r0
20037c: 00200394 mlaeq r0, r4, r3, r0
200380: 00200394 mlaeq r0, r4, r3, r0
200384: 00200394 mlaeq r0, r4, r3, r0
200388: 00200394 mlaeq r0, r4, r3, r0
20038c: 00200394 mlaeq r0, r4, r3, r0
200390: 00200394 mlaeq r0, r4, r3, r0
200394: e3500039 cmp r0, #57 ; 0x39
200398: 82400007 subhi r0, r0, #7
20039c: e1a09209 lsl r9, r9, #4
2003a0: e200000f and r0, r0, #15
2003a4: e3540015 cmp r4, #21
2003a8: e1809009 orr r9, r0, r9
2003ac: 0a000045 beq 2004c8 <notmain+0x224>
2003b0: ebffff27 bl 200054 <uart_recv>
2003b4: e350003a cmp r0, #58 ; 0x3a
2003b8: e2844001 add r4, r4, #1
2003bc: 1affffd3 bne 200310 <notmain+0x6c>
2003c0: e3a04001 mov r4, #1
2003c4: eaffffce b 200304 <notmain+0x60>
2003c8: e1a06206 lsl r6, r6, #4
2003cc: e3a04000 mov r4, #0
2003d0: eaffffcb b 200304 <notmain+0x60>
2003d4: e3500039 cmp r0, #57 ; 0x39
2003d8: 82400007 subhi r0, r0, #7
2003dc: e1a06206 lsl r6, r6, #4
2003e0: e200000f and r0, r0, #15
2003e4: e1806006 orr r6, r0, r6
2003e8: e1a06806 lsl r6, r6, #16
2003ec: e1a06826 lsr r6, r6, #16
2003f0: e2844001 add r4, r4, #1
2003f4: eaffffc2 b 200304 <notmain+0x60>
2003f8: e3500039 cmp r0, #57 ; 0x39
2003fc: 82400007 subhi r0, r0, #7
200400: e1a05205 lsl r5, r5, #4
200404: e200000f and r0, r0, #15
200408: e1805005 orr r5, r0, r5
20040c: e20550ff and r5, r5, #255 ; 0xff
200410: e3550001 cmp r5, #1
200414: 0a000027 beq 2004b8 <notmain+0x214>
200418: 33a0400e movcc r4, #14
20041c: 3affffb8 bcc 200304 <notmain+0x60>
200420: e3550002 cmp r5, #2
200424: 03a04009 moveq r4, #9
200428: 13a04000 movne r4, #0
20042c: eaffffb4 b 200304 <notmain+0x60>
200430: e3500039 cmp r0, #57 ; 0x39
200434: 82400007 subhi r0, r0, #7
200438: e1a05205 lsl r5, r5, #4
20043c: e200000f and r0, r0, #15
200440: e1805005 orr r5, r0, r5
200444: e20550ff and r5, r5, #255 ; 0xff
200448: e3a04008 mov r4, #8
20044c: eaffffac b 200304 <notmain+0x60>
200450: e3500039 cmp r0, #57 ; 0x39
200454: 82400007 subhi r0, r0, #7
200458: e1a07207 lsl r7, r7, #4
20045c: e200000f and r0, r0, #15
200460: e1807007 orr r7, r0, r7
200464: e1a07807 lsl r7, r7, #16
200468: e1867827 orr r7, r6, r7, lsr #16
20046c: e2844001 add r4, r4, #1
200470: eaffffa3 b 200304 <notmain+0x60>
200474: e3a0000d mov r0, #13
200478: ebffff08 bl 2000a0 <uart_send>
@@ -346,24 +346,24 @@ Disassembly of section .text:
2004a0: ebfffefe bl 2000a0 <uart_send>
2004a4: e3a00902 mov r0, #32768 ; 0x8000
2004a8: ebfffee1 bl 200034 <BRANCHTO>
2004ac: e3a00000 mov r0, #0
2004b0: e8bd43f8 pop {r3, r4, r5, r6, r7, r8, r9, lr}
2004ac: e1a0000a mov r0, sl
2004b0: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
2004b4: e12fff1e bx lr
2004b8: e0283868 eor r3, r8, r8, ror #16
2004bc: e1a03423 lsr r3, r3, #8
2004c0: e3c33cff bic r3, r3, #65280 ; 0xff00
2004c4: e0238468 eor r8, r3, r8, ror #8
2004c8: e1a00009 mov r0, r9
2004cc: e1a01008 mov r1, r8
2004d0: ebfffecd bl 20000c <PUT32>
2004d4: e0877009 add r7, r7, r9
2004d8: e0877008 add r7, r7, r8
2004dc: e2899004 add r9, r9, #4
2004e0: e3a0400e mov r4, #14
2004e4: eaffff86 b 200304 <notmain+0x60>
2004e8: e1a00007 mov r0, r7
2004ec: ebffff0f bl 200130 <hexstring>
2004f0: e3a04000 mov r4, #0
2004b8: e1a00008 mov r0, r8
2004bc: ebffff1b bl 200130 <hexstring>
2004c0: e3a04000 mov r4, #0
2004c4: eaffff8e b 200304 <notmain+0x60>
2004c8: e0293869 eor r3, r9, r9, ror #16
2004cc: e1a03423 lsr r3, r3, #8
2004d0: e3c33cff bic r3, r3, #65280 ; 0xff00
2004d4: e0239469 eor r9, r3, r9, ror #8
2004d8: e1a00007 mov r0, r7
2004dc: e0878008 add r8, r7, r8
2004e0: e1a01009 mov r1, r9
2004e4: ebfffec8 bl 20000c <PUT32>
2004e8: e0898008 add r8, r9, r8
2004ec: e2877004 add r7, r7, #4
2004f0: e3a0400e mov r4, #14
2004f4: eaffff82 b 200304 <notmain+0x60>
2004f8: 12345678 eorsne r5, r4, #120, 12 ; 0x7800000
@@ -375,10 +375,10 @@ Disassembly of section .ARM.attributes:
8: 01006962 tsteq r0, r2, ror #18
c: 00000020 andeq r0, r0, r0, lsr #32
10: 4d524105 ldfmie f4, [r2, #-20] ; 0xffffffec
14: 54347620 ldrtpl r7, [r4], #-1568 ; 0x620
14: 54347620 ldrtpl r7, [r4], #-1568 ; 0xfffff9e0
18: 08020600 stmdaeq r2, {r9, sl}
1c: 12010901 andne r0, r1, #16384 ; 0x4000
20: 15011404 strne r1, [r1, #-1028] ; 0x404
20: 15011404 strne r1, [r1, #-1028] ; 0xfffffbfc
24: 18031701 stmdane r3, {r0, r8, r9, sl, ip}
28: Address 0x0000000000000028 is out of bounds.
@@ -388,6 +388,6 @@ Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <notmain+0xed0a80>
4: 4e472820 cdpmi 8, 4, cr2, cr7, cr0, {1}
8: 34202955 strtcc r2, [r0], #-2389 ; 0x955
c: 332e382e teqcc lr, #3014656 ; 0x2e0000
8: 35202955 strcc r2, [r0, #-2389]! ; 0xfffff6ab
c: 302e332e eorcc r3, lr, lr, lsr #6
...

Binary file not shown.

View File

@@ -129058,82 +129058,82 @@
:1000000002D3A0E3A60000EBFEFFFFEA001080E5AC
:100010001EFF2FE1B010C0E11EFF2FE10010C0E570
:100020001EFF2FE1000090E51EFF2FE10E00A0E172
:100030001EFF2FE110FF2FE11EFF2FE108402DE9E9
:1000400008009FE5F6FFFFEB0840BDE81EFF2FE12B
:100050005450213F08402DE91C009FE5F0FFFFEBC5
:100030001EFF2FE110FF2FE11EFF2FE110402DE9E1
:1000400008009FE5F6FFFFEB1040BDE81EFF2FE123
:100050005450213F10402DE91C009FE5F0FFFFEBBD
:10006000010010E3FBFFFF0A10009FE5ECFFFFEB30
:100070000840BDE8FF0000E21EFF2FE15450213F81
:100080004050213F08402DE90C009FE5E4FFFFEBC5
:100090000840BDE8010000E21EFF2FE15450213F5F
:100070001040BDE8FF0000E21EFF2FE15450213F79
:100080004050213F10402DE90C009FE5E4FFFFEBBD
:100090001040BDE8010000E21EFF2FE15450213F57
:1000A00010402DE90040A0E11C009FE5DCFFFFEBC4
:1000B000200010E3FBFFFF0A0410A0E10C009FE505
:1000C000D1FFFFEB1040BDE81EFF2FE15450213F50
:1000D0004050213F08402DE910009FE5D0FFFFEB85
:1000E000010C10E3FBFFFF1A0840BDE81EFF2FE1E3
:1000F0005450213F38402DE90050A0E12040A0E3BA
:10010000044044E23534A0E10F3003E2090053E338
:100110003700838230008392E0FFFFEB000054E35E
:10012000F6FFFF1A2000A0E33840BDE8DBFFFFEA3E
:1001300008402DE9EEFFFFEB0D00A0E3D7FFFFEB3A
:100140000A00A0E30840BDE8D4FFFFEA10402DE913
:10015000D8009FE50110A0E3ABFFFFEBD0009FE5C7
:100160000010A0E3A8FFFFEBC8009FE50010A0E38C
:10017000A5FFFFEBC0009FE50310A0E3A2FFFFEB8C
:10018000B8009FE50010A0E39FFFFFEBA0009FE5F4
:100190000010A0E39CFFFFEBA4009FE5C610A0E3C6
:1000D0004050213F10402DE910009FE5D0FFFFEB7D
:1000E000010C10E3FBFFFF1A1040BDE81EFF2FE1DB
:1000F0005450213F70402DE90050A0E12040A0E382
:10010000044044E23504A0E10F0000E2090050E39E
:100110003700808230008092E0FFFFEB000054E364
:10012000F6FFFF1A2000A0E37040BDE8DBFFFFEA06
:1001300010402DE9EEFFFFEB0D00A0E3D7FFFFEB32
:100140000A00A0E31040BDE8D4FFFFEA10402DE90B
:100150000110A0E3D4009FE5ABFFFFEB0010A0E38C
:10016000CC009FE5A8FFFFEB0010A0E3C4009FE5D3
:10017000A5FFFFEB0310A0E3BC009FE5A2FFFFEB90
:100180000010A0E3B4009FE59FFFFFEB0010A0E389
:100190009C009FE59CFFFFEBC610A0E3A0009FE53D
:1001A00099FFFFEB9C109FE59C009FE596FFFFEBFE
:1001B00098009FE59AFFFFEB3F1AC0E3121A81E314
:1001C00088009FE590FFFFEB84009FE50010A0E30F
:1001C00088009FE590FFFFEB0010A0E380009FE513
:1001D0008DFFFFEB0040A0E30400A0E1014084E2BA
:1001E00094FFFFEB960054E3FAFFFF1A64009FE5CB
:1001F0000319A0E384FFFFEB0040A0E30400A0E1AB
:1001E00094FFFFEB960054E3FAFFFF1A0319A0E314
:1001F00060009FE584FFFFEB0040A0E30400A0E166
:10020000014084E28BFFFFEB960054E3FAFFFF1AF4
:1002100040009FE50010A0E37BFFFFEB14009FE58B
:100220000310A0E378FFFFEB1040BDE81EFF2FE1B5
:100210000010A0E33C009FE57BFFFFEB0310A0E391
:1002200010009FE578FFFFEB1040BDE81EFF2FE1B7
:100230000450213F4450213F6050213F4C50213F0A
:100240005050213F4850213F0E0100006850213F8F
:100250000400203F9400203F9800203F10402DE9EB
:100260001C409FE5F918A0E30400A0E166FFFFEB46
:100270000400A0E10C109FE563FFFFEB1040BDE818
:100280001EFF2FE108B4003F0002F90008402DE9ED
:1002900008009FE562FFFFEB0840BDE81EFF2FE16D
:1002A00020B4003FF8432DE9A7FFFFEB44029FE590
:1002B0009EFFFFEB5CFFFFEB9CFFFFEB4900A0E321
:1002C00076FFFFEB4800A0E374FFFFEB4500A0E3DF
:1002D00072FFFFEB5800A0E370FFFFEB0D00A0E3FF
:1002E0006EFFFFEB0A00A0E36CFFFFEB0070A0E3E2
:1002F0000780A0E10760A0E10750A0E10790A0E11E
:100300000740A0E152FFFFEB3A0050E32A00000A49
:100310000D0050E35400000A0A0050E35200000AA6
:100320002030C0E3470053E35100000A013044E2AB
:10033000140053E303F19F97F1FFFFEAAC032000A1
:10034000AC0320004804200048042000480420009A
:100350004804200028042000F4032000D0032000DB
:10036000D0032000D0032000D0032000C4032000CD
:1003700090032000900320009003200090032000B1
:1003800090032000900320009003200090032000A1
:10039000390050E3070040820882A0E10F0000E22C
:1003A000150054E3088080E14200000A28FFFFEBBB
:1003B0003A0050E3014084E2D4FFFF1A0140A0E379
:1003C000CFFFFFEA0662A0E10040A0E3CCFFFFEA16
:1003D000390050E3070040820662A0E10F0000E20E
:1003E000066080E10668A0E12668A0E1014084E2A1
:1003F000C3FFFFEA390050E3070040820552A0E145
:100400000F0000E2055080E1FF5005E2010055E3D6
:100410003400000A3100003A020055E30940A0030D
:100420000040A013B6FFFFEA390050E30700408206
:100430000552A0E10F0000E2055080E1FF5005E207
:100440000840A0E3AEFFFFEA390050E30700408216
:100450000992A0E10F0000E2099080E10998A0E173
:10046000299886E1014084E2A5FFFFEA0040A0E36D
:100280001EFF2FE108B4003F0002F90010402DE9E5
:1002900008009FE562FFFFEB1040BDE81EFF2FE165
:1002A00020B4003FF0472DE90080A0E3A6FFFFEB5C
:1002B00040029FE59DFFFFEB5BFFFFEB9BFFFFEB2A
:1002C0004900A0E375FFFFEB4800A0E373FFFFEBDD
:1002D0004500A0E371FFFFEB5800A0E36FFFFFEBC9
:1002E0000D00A0E36DFFFFEB0A00A0E30890A0E182
:1002F0000860A0E10850A0E10870A0E10840A0E17A
:1003000066FFFFEB52FFFFEB3A0050E32B00000AC1
:100310000D0050E30A00501301A0A00300A0A01399
:100320002900000A2030C0E3470053E35000000AD0
:10033000013044E2140053E303F19F97F0FFFFEA1A
:10034000B0032000B003200050042000500420001F
:10035000500420005004200030042000F803200046
:10036000D4032000D4032000D4032000D4032000B1
:10037000C80320009403200094032000940320006D
:100380009403200094032000940320009403200091
:1003900094032000390050E3070040820992A0E155
:1003A0000F0000E2150054E3099080E14500000AC7
:1003B00027FFFFEB3A0050E3014084E2D3FFFF1A2E
:1003C0000140A0E3CEFFFFEA0662A0E10040A0E307
:1003D000CBFFFFEA390050E3070040820662A0E14C
:1003E0000F0000E2066080E10668A0E12668A0E157
:1003F000014084E2C2FFFFEA390050E30700408277
:100400000552A0E10F0000E2055080E1FF5005E237
:10041000010055E32700000A0E40A033B8FFFF3A61
:10042000020055E30940A0030040A013B4FFFFEA17
:10043000390050E3070040820552A0E10F0000E2BE
:10044000055080E1FF5005E20840A0E3ACFFFFEA61
:10045000390050E3070040820772A0E10F0000E27C
:10046000077080E10778A0E1277886E1014084E207
:10047000A3FFFFEA0D00A0E308FFFFEB2D00A0E3C0
:1004800006FFFFEB2D00A0E304FFFFEB0D00A0E350
:1004900002FFFFEB0A00A0E300FFFFEB0A00A0E36E
:1004A000FEFEFFEB0209A0E3E1FEFFEB0000A0E38C
:1004B000F843BDE81EFF2FE1683828E02334A0E1AF
:1004C000FF3CC3E3688423E00900A0E10810A0E139
:1004D000CDFEFFEB097087E0087087E0049089E2A9
:1004E0000E40A0E386FFFFEA0700A0E10FFFFFEB4D
:0C04F0000040A0E382FFFFEA78563412BF
:1004A000FEFEFFEB0209A0E3E1FEFFEB0A00A0E184
:1004B000F047BDE81EFF2FE10800A0E11BFFFFEBA6
:1004C0000040A0E38EFFFFEA693829E02334A0E171
:1004D000FF3CC3E3699423E00700A0E1088087E0C4
:1004E0000910A0E1C8FEFFEB088089E0047087E2F4
:0C04F0000E40A0E382FFFFEA78563412B1
:040000030000800079
:00000001FF

View File

@@ -1,5 +1,5 @@
bootloader07_rpi1.elf: file format elf32-littlearm
bootloader07_rpi2.elf: file format elf32-littlearm
Disassembly of section .text:
@@ -10,7 +10,7 @@ Disassembly of section .text:
00200000 <skip>:
200000: e3a0d302 mov sp, #134217728 ; 0x8000000
200004: eb0000c0 bl 20030c <notmain>
200004: eb0000a6 bl 2002a4 <notmain>
00200008 <hang>:
200008: eafffffe b 200008 <hang>
@@ -215,186 +215,157 @@ Disassembly of section .text:
20029c: e12fff1e bx lr
2002a0: 3f00b420 svccc 0x0000b420
002002a4 <leds_off>:
2002a4: e92d4070 push {r4, r5, r6, lr}
2002a8: e59f4054 ldr r4, [pc, #84] ; 200304 <leds_off+0x60>
2002ac: e1a00004 mov r0, r4
2002b0: ebffff5b bl 200024 <GET32>
2002b4: e59f504c ldr r5, [pc, #76] ; 200308 <leds_off+0x64>
2002b8: e3c0160e bic r1, r0, #14680064 ; 0xe00000
2002bc: e3811602 orr r1, r1, #2097152 ; 0x200000
2002c0: e1a00004 mov r0, r4
2002c4: ebffff50 bl 20000c <PUT32>
2002c8: e1a00005 mov r0, r5
2002cc: ebffff54 bl 200024 <GET32>
2002d0: e3c0190e bic r1, r0, #229376 ; 0x38000
2002d4: e284401c add r4, r4, #28
2002d8: e1a00005 mov r0, r5
2002dc: e3811902 orr r1, r1, #32768 ; 0x8000
2002e0: ebffff49 bl 20000c <PUT32>
2002e4: e1a00004 mov r0, r4
2002e8: e3a01902 mov r1, #32768 ; 0x8000
2002ec: ebffff46 bl 20000c <PUT32>
2002f0: e1a00004 mov r0, r4
2002f4: e3a01008 mov r1, #8
2002f8: ebffff43 bl 20000c <PUT32>
2002fc: e8bd4070 pop {r4, r5, r6, lr}
200300: e12fff1e bx lr
200304: 3f200010 svccc 0x00200010
200308: 3f20000c svccc 0x0020000c
0020030c <notmain>:
20030c: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
200310: e3a08000 mov r8, #0
200314: ebffffe2 bl 2002a4 <leds_off>
200318: ebffff8b bl 20014c <uart_init>
20031c: e59f0240 ldr r0, [pc, #576] ; 200564 <notmain+0x258>
200320: ebffff82 bl 200130 <hexstring>
200324: ebffff40 bl 20002c <GETPC>
200328: ebffff80 bl 200130 <hexstring>
20032c: e3a00049 mov r0, #73 ; 0x49
200330: ebffff5a bl 2000a0 <uart_send>
200334: e3a00048 mov r0, #72 ; 0x48
200338: ebffff58 bl 2000a0 <uart_send>
20033c: e3a00045 mov r0, #69 ; 0x45
200340: ebffff56 bl 2000a0 <uart_send>
200344: e3a00058 mov r0, #88 ; 0x58
200348: ebffff54 bl 2000a0 <uart_send>
20034c: e3a0000d mov r0, #13
200350: ebffff52 bl 2000a0 <uart_send>
200354: e3a0000a mov r0, #10
200358: e1a09008 mov r9, r8
20035c: e1a06008 mov r6, r8
200360: e1a05008 mov r5, r8
200364: e1a07008 mov r7, r8
200368: e1a04008 mov r4, r8
20036c: ebffff4b bl 2000a0 <uart_send>
200370: ebffff37 bl 200054 <uart_recv>
200374: e350003a cmp r0, #58 ; 0x3a
200378: 0a00002b beq 20042c <notmain+0x120>
20037c: e350000d cmp r0, #13
200380: 1350000a cmpne r0, #10
200384: 03a0a001 moveq sl, #1
200388: 13a0a000 movne sl, #0
20038c: 0a000029 beq 200438 <notmain+0x12c>
200390: e3c03020 bic r3, r0, #32
200394: e3530047 cmp r3, #71 ; 0x47
200398: 0a000050 beq 2004e0 <notmain+0x1d4>
20039c: e2443001 sub r3, r4, #1
2003a0: e3530014 cmp r3, #20
2003a4: 979ff103 ldrls pc, [pc, r3, lsl #2]
2003a8: eafffff0 b 200370 <notmain+0x64>
2003ac: 0020041c eoreq r0, r0, ip, lsl r4
2003b0: 0020041c eoreq r0, r0, ip, lsl r4
2003b4: 002004bc strhteq r0, [r0], -ip
2003b8: 002004bc strhteq r0, [r0], -ip
2003bc: 002004bc strhteq r0, [r0], -ip
2003c0: 002004bc strhteq r0, [r0], -ip
2003c4: 0020049c mlaeq r0, ip, r4, r0
2003c8: 00200464 eoreq r0, r0, r4, ror #8
2003cc: 00200440 eoreq r0, r0, r0, asr #8
2003d0: 00200440 eoreq r0, r0, r0, asr #8
2003d4: 00200440 eoreq r0, r0, r0, asr #8
2003d8: 00200440 eoreq r0, r0, r0, asr #8
2003dc: 00200434 eoreq r0, r0, r4, lsr r4
2003e0: 00200400 eoreq r0, r0, r0, lsl #8
2003e4: 00200400 eoreq r0, r0, r0, lsl #8
2003e8: 00200400 eoreq r0, r0, r0, lsl #8
2003ec: 00200400 eoreq r0, r0, r0, lsl #8
2003f0: 00200400 eoreq r0, r0, r0, lsl #8
2003f4: 00200400 eoreq r0, r0, r0, lsl #8
2003f8: 00200400 eoreq r0, r0, r0, lsl #8
2003fc: 00200400 eoreq r0, r0, r0, lsl #8
200400: e3500039 cmp r0, #57 ; 0x39
200404: 82400007 subhi r0, r0, #7
200408: e1a09209 lsl r9, r9, #4
20040c: e200000f and r0, r0, #15
200410: e3540015 cmp r4, #21
200414: e1809009 orr r9, r0, r9
200418: 0a000045 beq 200534 <notmain+0x228>
20041c: ebffff0c bl 200054 <uart_recv>
200420: e350003a cmp r0, #58 ; 0x3a
200424: e2844001 add r4, r4, #1
200428: 1affffd3 bne 20037c <notmain+0x70>
20042c: e3a04001 mov r4, #1
200430: eaffffce b 200370 <notmain+0x64>
200434: e1a06206 lsl r6, r6, #4
200438: e3a04000 mov r4, #0
20043c: eaffffcb b 200370 <notmain+0x64>
200440: e3500039 cmp r0, #57 ; 0x39
200444: 82400007 subhi r0, r0, #7
200448: e1a06206 lsl r6, r6, #4
20044c: e200000f and r0, r0, #15
200450: e1806006 orr r6, r0, r6
200454: e1a06806 lsl r6, r6, #16
200458: e1a06826 lsr r6, r6, #16
20045c: e2844001 add r4, r4, #1
200460: eaffffc2 b 200370 <notmain+0x64>
200464: e3500039 cmp r0, #57 ; 0x39
200468: 82400007 subhi r0, r0, #7
20046c: e1a05205 lsl r5, r5, #4
200470: e200000f and r0, r0, #15
200474: e1805005 orr r5, r0, r5
200478: e20550ff and r5, r5, #255 ; 0xff
20047c: e3550001 cmp r5, #1
200480: 0a000027 beq 200524 <notmain+0x218>
200484: 33a0400e movcc r4, #14
200488: 3affffb8 bcc 200370 <notmain+0x64>
20048c: e3550002 cmp r5, #2
200490: 03a04009 moveq r4, #9
200494: 13a04000 movne r4, #0
200498: eaffffb4 b 200370 <notmain+0x64>
20049c: e3500039 cmp r0, #57 ; 0x39
2004a0: 82400007 subhi r0, r0, #7
2004a4: e1a05205 lsl r5, r5, #4
2004a8: e200000f and r0, r0, #15
2004ac: e1805005 orr r5, r0, r5
2004b0: e20550ff and r5, r5, #255 ; 0xff
2004b4: e3a04008 mov r4, #8
2004b8: eaffffac b 200370 <notmain+0x64>
2004bc: e3500039 cmp r0, #57 ; 0x39
2004c0: 82400007 subhi r0, r0, #7
2004c4: e1a07207 lsl r7, r7, #4
2004c8: e200000f and r0, r0, #15
2004cc: e1807007 orr r7, r0, r7
2004d0: e1a07807 lsl r7, r7, #16
2004d4: e1867827 orr r7, r6, r7, lsr #16
2004d8: e2844001 add r4, r4, #1
2004dc: eaffffa3 b 200370 <notmain+0x64>
2004e0: e3a0000d mov r0, #13
2004e4: ebfffeed bl 2000a0 <uart_send>
2004e8: e3a0002d mov r0, #45 ; 0x2d
2004ec: ebfffeeb bl 2000a0 <uart_send>
2004f0: e3a0002d mov r0, #45 ; 0x2d
2004f4: ebfffee9 bl 2000a0 <uart_send>
2004f8: e3a0000d mov r0, #13
2004fc: ebfffee7 bl 2000a0 <uart_send>
200500: e3a0000a mov r0, #10
200504: ebfffee5 bl 2000a0 <uart_send>
200508: e3a0000a mov r0, #10
20050c: ebfffee3 bl 2000a0 <uart_send>
200510: e3a00902 mov r0, #32768 ; 0x8000
200514: ebfffec6 bl 200034 <BRANCHTO>
200518: e1a0000a mov r0, sl
20051c: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
200520: e12fff1e bx lr
200524: e1a00008 mov r0, r8
200528: ebffff00 bl 200130 <hexstring>
20052c: e3a04000 mov r4, #0
200530: eaffff8e b 200370 <notmain+0x64>
200534: e0293869 eor r3, r9, r9, ror #16
200538: e1a03423 lsr r3, r3, #8
20053c: e3c33cff bic r3, r3, #65280 ; 0xff00
200540: e0239469 eor r9, r3, r9, ror #8
200544: e1a00007 mov r0, r7
200548: e0878008 add r8, r7, r8
20054c: e1a01009 mov r1, r9
200550: ebfffead bl 20000c <PUT32>
200554: e0898008 add r8, r9, r8
200558: e2877004 add r7, r7, #4
20055c: e3a0400e mov r4, #14
200560: eaffff82 b 200370 <notmain+0x64>
200564: 12345678 eorsne r5, r4, #120, 12 ; 0x7800000
002002a4 <notmain>:
2002a4: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
2002a8: e3a08000 mov r8, #0
2002ac: ebffffa6 bl 20014c <uart_init>
2002b0: e59f0240 ldr r0, [pc, #576] ; 2004f8 <notmain+0x254>
2002b4: ebffff9d bl 200130 <hexstring>
2002b8: ebffff5b bl 20002c <GETPC>
2002bc: ebffff9b bl 200130 <hexstring>
2002c0: e3a00049 mov r0, #73 ; 0x49
2002c4: ebffff75 bl 2000a0 <uart_send>
2002c8: e3a00048 mov r0, #72 ; 0x48
2002cc: ebffff73 bl 2000a0 <uart_send>
2002d0: e3a00045 mov r0, #69 ; 0x45
2002d4: ebffff71 bl 2000a0 <uart_send>
2002d8: e3a00058 mov r0, #88 ; 0x58
2002dc: ebffff6f bl 2000a0 <uart_send>
2002e0: e3a0000d mov r0, #13
2002e4: ebffff6d bl 2000a0 <uart_send>
2002e8: e3a0000a mov r0, #10
2002ec: e1a09008 mov r9, r8
2002f0: e1a06008 mov r6, r8
2002f4: e1a05008 mov r5, r8
2002f8: e1a07008 mov r7, r8
2002fc: e1a04008 mov r4, r8
200300: ebffff66 bl 2000a0 <uart_send>
200304: ebffff52 bl 200054 <uart_recv>
200308: e350003a cmp r0, #58 ; 0x3a
20030c: 0a00002b beq 2003c0 <notmain+0x11c>
200310: e350000d cmp r0, #13
200314: 1350000a cmpne r0, #10
200318: 03a0a001 moveq sl, #1
20031c: 13a0a000 movne sl, #0
200320: 0a000029 beq 2003cc <notmain+0x128>
200324: e3c03020 bic r3, r0, #32
200328: e3530047 cmp r3, #71 ; 0x47
20032c: 0a000050 beq 200474 <notmain+0x1d0>
200330: e2443001 sub r3, r4, #1
200334: e3530014 cmp r3, #20
200338: 979ff103 ldrls pc, [pc, r3, lsl #2]
20033c: eafffff0 b 200304 <notmain+0x60>
200340: 002003b0 strhteq r0, [r0], -r0
200344: 002003b0 strhteq r0, [r0], -r0
200348: 00200450 eoreq r0, r0, r0, asr r4
20034c: 00200450 eoreq r0, r0, r0, asr r4
200350: 00200450 eoreq r0, r0, r0, asr r4
200354: 00200450 eoreq r0, r0, r0, asr r4
200358: 00200430 eoreq r0, r0, r0, lsr r4
20035c: 002003f8 strdeq r0, [r0], -r8 ; <UNPREDICTABLE>
200360: 002003d4 ldrdeq r0, [r0], -r4 ; <UNPREDICTABLE>
200364: 002003d4 ldrdeq r0, [r0], -r4 ; <UNPREDICTABLE>
200368: 002003d4 ldrdeq r0, [r0], -r4 ; <UNPREDICTABLE>
20036c: 002003d4 ldrdeq r0, [r0], -r4 ; <UNPREDICTABLE>
200370: 002003c8 eoreq r0, r0, r8, asr #7
200374: 00200394 mlaeq r0, r4, r3, r0
200378: 00200394 mlaeq r0, r4, r3, r0
20037c: 00200394 mlaeq r0, r4, r3, r0
200380: 00200394 mlaeq r0, r4, r3, r0
200384: 00200394 mlaeq r0, r4, r3, r0
200388: 00200394 mlaeq r0, r4, r3, r0
20038c: 00200394 mlaeq r0, r4, r3, r0
200390: 00200394 mlaeq r0, r4, r3, r0
200394: e3500039 cmp r0, #57 ; 0x39
200398: 82400007 subhi r0, r0, #7
20039c: e1a09209 lsl r9, r9, #4
2003a0: e200000f and r0, r0, #15
2003a4: e3540015 cmp r4, #21
2003a8: e1809009 orr r9, r0, r9
2003ac: 0a000045 beq 2004c8 <notmain+0x224>
2003b0: ebffff27 bl 200054 <uart_recv>
2003b4: e350003a cmp r0, #58 ; 0x3a
2003b8: e2844001 add r4, r4, #1
2003bc: 1affffd3 bne 200310 <notmain+0x6c>
2003c0: e3a04001 mov r4, #1
2003c4: eaffffce b 200304 <notmain+0x60>
2003c8: e1a06206 lsl r6, r6, #4
2003cc: e3a04000 mov r4, #0
2003d0: eaffffcb b 200304 <notmain+0x60>
2003d4: e3500039 cmp r0, #57 ; 0x39
2003d8: 82400007 subhi r0, r0, #7
2003dc: e1a06206 lsl r6, r6, #4
2003e0: e200000f and r0, r0, #15
2003e4: e1806006 orr r6, r0, r6
2003e8: e1a06806 lsl r6, r6, #16
2003ec: e1a06826 lsr r6, r6, #16
2003f0: e2844001 add r4, r4, #1
2003f4: eaffffc2 b 200304 <notmain+0x60>
2003f8: e3500039 cmp r0, #57 ; 0x39
2003fc: 82400007 subhi r0, r0, #7
200400: e1a05205 lsl r5, r5, #4
200404: e200000f and r0, r0, #15
200408: e1805005 orr r5, r0, r5
20040c: e20550ff and r5, r5, #255 ; 0xff
200410: e3550001 cmp r5, #1
200414: 0a000027 beq 2004b8 <notmain+0x214>
200418: 33a0400e movcc r4, #14
20041c: 3affffb8 bcc 200304 <notmain+0x60>
200420: e3550002 cmp r5, #2
200424: 03a04009 moveq r4, #9
200428: 13a04000 movne r4, #0
20042c: eaffffb4 b 200304 <notmain+0x60>
200430: e3500039 cmp r0, #57 ; 0x39
200434: 82400007 subhi r0, r0, #7
200438: e1a05205 lsl r5, r5, #4
20043c: e200000f and r0, r0, #15
200440: e1805005 orr r5, r0, r5
200444: e20550ff and r5, r5, #255 ; 0xff
200448: e3a04008 mov r4, #8
20044c: eaffffac b 200304 <notmain+0x60>
200450: e3500039 cmp r0, #57 ; 0x39
200454: 82400007 subhi r0, r0, #7
200458: e1a07207 lsl r7, r7, #4
20045c: e200000f and r0, r0, #15
200460: e1807007 orr r7, r0, r7
200464: e1a07807 lsl r7, r7, #16
200468: e1867827 orr r7, r6, r7, lsr #16
20046c: e2844001 add r4, r4, #1
200470: eaffffa3 b 200304 <notmain+0x60>
200474: e3a0000d mov r0, #13
200478: ebffff08 bl 2000a0 <uart_send>
20047c: e3a0002d mov r0, #45 ; 0x2d
200480: ebffff06 bl 2000a0 <uart_send>
200484: e3a0002d mov r0, #45 ; 0x2d
200488: ebffff04 bl 2000a0 <uart_send>
20048c: e3a0000d mov r0, #13
200490: ebffff02 bl 2000a0 <uart_send>
200494: e3a0000a mov r0, #10
200498: ebffff00 bl 2000a0 <uart_send>
20049c: e3a0000a mov r0, #10
2004a0: ebfffefe bl 2000a0 <uart_send>
2004a4: e3a00902 mov r0, #32768 ; 0x8000
2004a8: ebfffee1 bl 200034 <BRANCHTO>
2004ac: e1a0000a mov r0, sl
2004b0: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr}
2004b4: e12fff1e bx lr
2004b8: e1a00008 mov r0, r8
2004bc: ebffff1b bl 200130 <hexstring>
2004c0: e3a04000 mov r4, #0
2004c4: eaffff8e b 200304 <notmain+0x60>
2004c8: e0293869 eor r3, r9, r9, ror #16
2004cc: e1a03423 lsr r3, r3, #8
2004d0: e3c33cff bic r3, r3, #65280 ; 0xff00
2004d4: e0239469 eor r9, r3, r9, ror #8
2004d8: e1a00007 mov r0, r7
2004dc: e0878008 add r8, r7, r8
2004e0: e1a01009 mov r1, r9
2004e4: ebfffec8 bl 20000c <PUT32>
2004e8: e0898008 add r8, r9, r8
2004ec: e2877004 add r7, r7, #4
2004f0: e3a0400e mov r4, #14
2004f4: eaffff82 b 200304 <notmain+0x60>
2004f8: 12345678 eorsne r5, r4, #120, 12 ; 0x7800000
Disassembly of section .ARM.attributes:
@@ -415,7 +386,7 @@ Disassembly of section .ARM.attributes:
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <notmain+0xed0a18>
0: 3a434347 bcc 10d0d24 <notmain+0xed0a80>
4: 4e472820 cdpmi 8, 4, cr2, cr7, cr0, {1}
8: 35202955 strcc r2, [r0, #-2389]! ; 0xfffff6ab
c: 302e332e eorcc r3, lr, lr, lsr #6

BIN
bootloader07/periph.o Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More