https://bitbucket.org/daniel_fort/magic-lantern
Tip revision: 128459811ce1ff28aea3f9f20971b3d059e76738 authored by alex@thinkpad on 13 October 2012, 17:05:35 UTC
5DC: Added a small joke on "don't click me" :)
5DC: Added a small joke on "don't click me" :)
Tip revision: 1284598
entry_40D.S
.text
.org 0
.globl _start, start, init_code_run
start:
_start:
B copy_and_restart
init_code_run: // original : sub_FF810054
LDR R0, =0xC0400000
LDR R1, =0x430005
STR R1, [R0,#8]
MOV R0, #0xC0000000
LDR R1, =0xD9C50000
STR R1, [R0,#0x10]
LDR R2, =0xC0200000
MOV R1, #0x0FFFFFFFF
STR R1, [R2,#0x10C]
STR R1, [R2,#0xC]
STR R1, [R2,#0x1C]
STR R1, [R2,#0x2C]
STR R1, [R2,#0x3C]
STR R1, [R2,#0x4C]
STR R1, [R2,#0x5C]
STR R1, [R2,#0x6C]
STR R1, [R2,#0x7C]
STR R1, [R2,#0x8C]
STR R1, [R2,#0x9C]
STR R1, [R2,#0xAC]
STR R1, [R2,#0xBC]
STR R1, [R2,#0xCC]
STR R1, [R2,#0xDC]
STR R1, [R2,#0xEC]
STR R1, [R2,#0xFC]
LDR SP, =0x1900
MOV R11, #0
LDR PC, =my_romStart
my_romStart: // original : sub_FF8100DC
MOV R12, SP
STMFD SP!, {R4,R11,R12,LR,PC}
SUB R11, R12, #4
MOV R4, R0
LDR R3, =0x25530
SUB R2, R3, #0x1900
MOV R3, R2,LSR#2
LDR R0, =0xFFD89CC0
MOV R1, #0x1900
MOV R2, R3
BL unknown_cache
MOV R0, R4
BL my_usrInit
LDMDB R11, {R4,R11,SP,PC}
my_usrInit: // original : sub_FF810FC8
MOV R12, SP
STMFD SP!, {R11,R12,LR,PC}
SUB R11, R12, #4
SUB SP, SP, #4
STR R0, [R11,#-0x10]
LDR R0, [R11,#-0x10]
BL sysStart
MOV R0, #1
MOV R1, #2
BL cacheLibInit
BL excVecInit
BL sysHwInit
BL sub_FF810B54
BL my_usrInit_1
LDMDB R11, {R11,SP,PC}
my_usrInit_1: // original : sub_FF810B7C
MOV R12, SP
STMFD SP!, {R11,R12,LR,PC}
SUB R11, R12, #4
SUB SP, SP, #8
BL classLibInit
BL sub_FFD6B830
LDR R3, =0xF518
LDR R0, =0x240A0
LDR R1, [R3]
LDR R2, =0x248E0
MOV R3, #0x100
BL qInit
LDR R3, =0xF558
LDR R0, =0xF3BC // activeQHead
LDR R1, [R3]
BL qInit
LDR R3, =0xF49C
LDR R0, =0x21460
LDR R1, [R3]
BL qInit
BL sub_FFD685BC
BL sub_FF810504
MOV R3, R0
MOV R2, #0xC00
STR R2, [SP,#0]
MOV R2, #0
STR R2, [SP,#4]
LDR R0, =my_usrRoot
MOV R1, #0x4000
LDR R2, =0x25530
BL sub_FFD6D6CC
LDMDB R11, {R11,SP,PC}
my_usrRoot: // original : sub_FF8110BC
MOV R12, SP
STMFD SP!, {R11,R12,LR,PC}
SUB R11, R12, #4
SUB SP, SP, #8
STR R0, [R11,#-0x10]
STR R1, [R11,#0xFFFFFFEC]
BL sub_FF811004
LDR R0, [R11,#-0x10]
LDR R1, [R11,#0xFFFFFFEC]
BL sub_FFD76204
LDR R0, [R11,#-0x10]
LDR R1, [R11,#0xFFFFFFEC]
BL sub_FFD75A68
BL sub_FF810C50
BL sub_FF810B28
MOV R0, #0x32
BL selectInit
BL usrRoot_init0
BL usrRoot_init1
BL usrRoot_init2
BL selTaskDeleteHookAdd
BL sub_FFD890FC
BL my_usrAppInit
LDMDB R11, {R11,SP,PC}
my_usrAppInit: // original : sub_FF810654
MOV R12, SP
STMFD SP!, {R11,R12,LR,PC}
SUB R11, R12, #4
BL my_task_Startup
LDMDB R11, {R11,SP,PC}
my_task_Startup: // original : sub_FF811324
STMFD SP!, {R4,LR}
MOV R3, #0x5 // 386D4000
SUB SP, SP, #0x2C
ADD R3, R3, #0x380
LDR R2, =a2008_11_281217 // "2008.11.28 12:17:47"
LDR R1, =a4_0_1 // "4.0.1"
LDR R0, =aK190ReadyVerSB // "--------------------------\nK190 READY :"
STR R3, [SP,#4]
BL printf
BL sub_FFD5BC68
BL sub_FFD3C2C0
MOV R1, #0xB80000 // reserve 512 KB or RAM for ML (original: 0xc00000)
MOV R0, #0x200000
BL sub_FFD5B350
BL InitializeKernel
LDR R0, [SP,#4]
BL sub_FFD59D94
BL sub_FFD444B0
BL FlushWriteCache_1
BL sub_FFD3E398
MOV R0, #0xF8000000
BL Install3VMemory
BL RegisterISRs_OCH
MOV R0, #0x32
BL InitializeTimerSystem
LDR R2, =0x1BC4
MOV R1, #8
MOV R0, #0x10
BL InitializeHPTimerSystem
BL ResourceNameServiceInit
MOV R0, #0
BL sub_FFD47BE4
BL sub_FFD409A0
MOV R0, #3
BL sysClockRateSet
BL InitializeSerialIO
ADD R4, SP, #8
ADD R0, SP, #4
MOV R1, R4
BL sub_FFD59FF4
MOV R0, R4
BL RtcInit
BL InitHPC
LDR R0, =sub_FF8199E0
BL PowerMgrInit
BL DisablePowerSave
MOV R2, #0x80000
MOV R1, #0x180000
MOV R0, #0x1F
BL sub_FFD4C08C
MOV R0, #0xFFFFFFFF
MOV R1, #3
BL sub_FFD4C590
MOV R1, #0
LDR R0, =aStartupeventfl // "StartupEventFlag"
BL CreateEventFlag
LDR R3, =0xFCBC
MOV R4, #0
MOV R1, #0x18
MOV R2, #0x1800
STR R0, [R3]
LDR R3, =Startup_TaskMain
LDR R0, =aTaskmain // "TaskMain"
STR R4, [SP,#0]
BL CreateTask
//NOP
//NOP
//BL CreateMyTasks
BL sub_FFD4C338 // register functions : dmstart, dmstop, dump, dumpf, ... dmprint, logstat
BL sub_FFD5CAE0 // register functions that control bootFlags - EnableBootDisk, DisableBootDisk,...
BL sub_FFD57564 // register functions : memShow, taskShow, checkSum,
MOV R1, R4
LDR R0, =aUpdate // "update"
LDR R2, =sub_FFD5C86C
BL Register_Func_with_Name
MOV R1, R4
LDR R0, =aLv_on // "lv_on"
LDR R2, =sub_FF812728
BL Register_Func_with_Name
MOV R1, R4
LDR R0, =aSend_mpu_1 // "send_mpu"
LDR R2, =sub_FF811180
BL Register_Func_with_Name
MOV R1, R4
LDR R0, =aMarker_1 // "Marker"
LDR R2, =sub_FF8126EC
BL Register_Func_with_Name
NOP
NOP
BL CreateMyTasks
NOP
NOP
LDR R0, =aK190 // "K190"
BL sub_FFD4EC6C
ADD SP, SP, #0x2C
LDMFD SP!, {R4,PC}
my_ledBlueOn:
LDR R0, =0xC02200E8
LDR R1, =0x46
STR R1, [R0]
MOV PC, LR
.align 2
fin: