.include "asm/macros.inc" .include "global.inc" .section .text arm_func_start FUN_03805A48 FUN_03805A48: ;@ 0x03805A48 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 mov r6, r1 mov r5, r2 mov r4, r3 bl RTCi_GpioStart mov r0, r7 mov r1, r6 bl RTCi_GpioSendCommand cmp r7, #6 beq _03805A90 cmp r7, #134 ;@ 0x86 bne _03805A9C mov r0, r5 mov r1, r4 bl RTCi_GpioReceiveData b _03805A9C _03805A90: mov r0, r5 mov r1, r4 bl RTCi_GpioSendData _03805A9C: bl RTCi_GpioEnd add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr arm_func_start FUN_03805AAC FUN_03805AAC: ;@ 0x03805AAC ldr r2, [r0] mov r1, r2, lsl #18 mov r3, r1, lsr #26 cmp r3, #35 ;@ 0x23 addls pc, pc, r3, lsl #2 b _03805BA8 b _03805B54 b _03805B54 b _03805B54 b _03805B54 b _03805B54 b _03805B54 b _03805B54 b _03805B54 b _03805B78 b _03805B78 b _03805BA8 b _03805BA8 b _03805BA8 b _03805BA8 b _03805BA8 b _03805BA8 b _03805B54 b _03805B54 b _03805B9C b _03805B9C b _03805B9C b _03805B9C b _03805B9C b _03805B9C b _03805B9C b _03805B9C b _03805BA8 b _03805BA8 b _03805BA8 b _03805BA8 b _03805BA8 b _03805BA8 b _03805B9C b _03805B9C b _03805B9C b _03805B9C _03805B54: mov r1, r2, lsl #17 movs r1, r1, lsr #31 bxeq lr bic r2, r2, #16128 ;@ 0x3f00 add r1, r3, #18 and r1, r1, #63 ;@ 0x3f orr r1, r2, r1, lsl #8 str r1, [r0] bx lr _03805B78: mov r1, r2, lsl #17 movs r1, r1, lsr #31 bxeq lr bic r2, r2, #16128 ;@ 0x3f00 add r1, r3, #24 and r1, r1, #63 ;@ 0x3f orr r1, r2, r1, lsl #8 str r1, [r0] bx lr _03805B9C: orr r1, r2, #16384 ;@ 0x4000 str r1, [r0] bx lr _03805BA8: ldr r1, [r0] bic r1, r1, #16384 ;@ 0x4000 str r1, [r0] ldr r1, [r0] bic r1, r1, #16128 ;@ 0x3f00 str r1, [r0] bx lr arm_func_start FUN_03805BC4 FUN_03805BC4: ;@ 0x03805BC4 ldr r1, [r0] mov r2, r1, lsl #18 mov r2, r2, lsr #26 cmp r2, #35 ;@ 0x23 addls pc, pc, r2, lsl #2 b _03805CD0 b _03805C6C b _03805C6C b _03805C6C b _03805C6C b _03805C6C b _03805C6C b _03805C6C b _03805C6C b _03805C6C b _03805C6C b _03805CD0 b _03805CD0 b _03805CD0 b _03805CD0 b _03805CD0 b _03805CD0 b _03805C6C b _03805C6C b _03805C78 b _03805C78 b _03805C78 b _03805C78 b _03805C78 b _03805C78 b _03805C78 b _03805C78 b _03805CD0 b _03805CD0 b _03805CD0 b _03805CD0 b _03805CD0 b _03805CD0 b _03805CA4 b _03805CA4 b _03805C78 b _03805C78 _03805C6C: bic r1, r1, #16384 ;@ 0x4000 str r1, [r0] bx lr _03805C78: orr r1, r1, #16384 ;@ 0x4000 str r1, [r0] ldr r1, [r0] bic r2, r1, #16128 ;@ 0x3f00 mov r1, r1, lsl #18 mov r1, r1, lsr #26 sub r1, r1, #18 and r1, r1, #63 ;@ 0x3f orr r1, r2, r1, lsl #8 str r1, [r0] bx lr _03805CA4: orr r1, r1, #16384 ;@ 0x4000 str r1, [r0] ldr r1, [r0] bic r2, r1, #16128 ;@ 0x3f00 mov r1, r1, lsl #18 mov r1, r1, lsr #26 sub r1, r1, #24 and r1, r1, #63 ;@ 0x3f orr r1, r2, r1, lsl #8 str r1, [r0] bx lr _03805CD0: ldr r1, [r0] bic r1, r1, #16384 ;@ 0x4000 str r1, [r0] ldr r1, [r0] bic r1, r1, #16128 ;@ 0x3f00 str r1, [r0] bx lr arm_func_start RTC_WriteFree RTC_WriteFree: ;@ 0x03805CEC stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #6 mov r1, #112 ;@ 0x70 mov r2, r4 mov r3, #1 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadFree RTC_ReadFree: ;@ 0x03805D18 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #134 ;@ 0x86 mov r1, #112 ;@ 0x70 mov r2, r4 mov r3, #1 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_WriteAdjust RTC_WriteAdjust: ;@ 0x03805D44 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #6 mov r1, #48 ;@ 0x30 mov r2, r4 mov r3, #1 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadAdjust RTC_ReadAdjust: ;@ 0x03805D70 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #134 ;@ 0x86 mov r1, #48 ;@ 0x30 mov r2, r4 mov r3, #1 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_WriteStatus2 RTC_WriteStatus2: ;@ 0x03805D9C stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #6 mov r1, #64 ;@ 0x40 mov r2, r4 mov r3, #1 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadStatus2 RTC_ReadStatus2: ;@ 0x03805DC8 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #134 ;@ 0x86 mov r1, #64 ;@ 0x40 mov r2, r4 mov r3, #1 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_WriteStatus1 RTC_WriteStatus1: ;@ 0x03805DF4 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #6 mov r1, #0 mov r2, r4 mov r3, #1 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadStatus1 RTC_ReadStatus1: ;@ 0x03805E20 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #134 ;@ 0x86 mov r1, #0 mov r2, r4 mov r3, #1 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_WriteAlarm2 RTC_WriteAlarm2: ;@ 0x03805E4C stmdb sp!, {r4, lr} sub sp, sp, #8 mov r4, r0 add r0, sp, #0 bl RTC_ReadStatus2 ldrh r0, [sp] mov r0, r0, lsl #25 movs r0, r0, lsr #31 moveq r0, #0 beq _03805E8C mov r0, #6 mov r1, #80 ;@ 0x50 mov r2, r4 mov r3, #3 bl FUN_03805A48 mov r0, #1 _03805E8C: add sp, sp, #8 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadAlarm2 RTC_ReadAlarm2: ;@ 0x03805E98 stmdb sp!, {r4, lr} sub sp, sp, #8 mov r4, r0 add r0, sp, #0 bl RTC_ReadStatus2 ldrh r0, [sp] mov r0, r0, lsl #25 movs r0, r0, lsr #31 moveq r0, #0 beq _03805ED8 mov r0, #134 ;@ 0x86 mov r1, #80 ;@ 0x50 mov r2, r4 mov r3, #3 bl FUN_03805A48 mov r0, #1 _03805ED8: add sp, sp, #8 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_WriteAlarm1 RTC_WriteAlarm1: ;@ 0x03805EE4 stmdb sp!, {r4, lr} sub sp, sp, #8 mov r4, r0 add r0, sp, #0 bl RTC_ReadStatus2 ldrh r0, [sp] mov r0, r0, lsl #28 mov r0, r0, lsr #28 cmp r0, #4 movne r0, #0 bne _03805F28 mov r0, #6 mov r1, #16 mov r2, r4 mov r3, #3 bl FUN_03805A48 mov r0, #1 _03805F28: add sp, sp, #8 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadAlarm1 RTC_ReadAlarm1: ;@ 0x03805F34 stmdb sp!, {r4, lr} sub sp, sp, #8 mov r4, r0 add r0, sp, #0 bl RTC_ReadStatus2 ldrh r0, [sp] mov r0, r0, lsl #28 mov r0, r0, lsr #28 cmp r0, #4 movne r0, #0 bne _03805F78 mov r0, #134 ;@ 0x86 mov r1, #16 mov r2, r4 mov r3, #3 bl FUN_03805A48 mov r0, #1 _03805F78: add sp, sp, #8 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_WritePulse RTC_WritePulse: ;@ 0x03805F84 stmdb sp!, {r4, lr} sub sp, sp, #8 mov r4, r0 add r0, sp, #0 bl RTC_ReadStatus2 ldrh r0, [sp] mov r0, r0, lsl #28 mov r0, r0, lsr #28 and r0, r0, #11 cmp r0, #1 movne r0, #0 bne _03805FCC mov r0, #6 mov r1, #16 mov r2, r4 mov r3, #1 bl FUN_03805A48 mov r0, #1 _03805FCC: add sp, sp, #8 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadPulse RTC_ReadPulse: ;@ 0x03805FD8 stmdb sp!, {r4, lr} sub sp, sp, #8 mov r4, r0 add r0, sp, #0 bl RTC_ReadStatus2 ldrh r0, [sp] mov r0, r0, lsl #28 mov r0, r0, lsr #28 and r0, r0, #11 cmp r0, #1 movne r0, #0 bne _03806020 mov r0, #134 ;@ 0x86 mov r1, #16 mov r2, r4 mov r3, #1 bl FUN_03805A48 mov r0, #1 _03806020: add sp, sp, #8 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_WriteTime RTC_WriteTime: ;@ 0x0380602C stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #6 mov r1, #96 ;@ 0x60 mov r2, r4 mov r3, #3 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadTime RTC_ReadTime: ;@ 0x03806058 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #134 ;@ 0x86 mov r1, #96 ;@ 0x60 mov r2, r4 mov r3, #3 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadDate RTC_ReadDate: ;@ 0x03806084 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #134 ;@ 0x86 mov r1, #32 mov r2, r4 mov r3, #4 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_WriteDateTime RTC_WriteDateTime: ;@ 0x038060B0 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #6 mov r1, #32 mov r2, r4 mov r3, #7 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_ReadDateTime RTC_ReadDateTime: ;@ 0x038060DC stmdb sp!, {r4, lr} mov r4, r0 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt mov r0, #134 ;@ 0x86 mov r1, #32 mov r2, r4 mov r3, #7 bl FUN_03805A48 ldmia sp!, {r4, lr} bx lr arm_func_start RTC_SetHourFormat RTC_SetHourFormat: ;@ 0x03806108 stmdb sp!, {r4, r5, lr} sub sp, sp, #12 mov r4, r0 and r5, r4, #1 mov r0, r5, lsl #16 mov r0, r0, lsr #16 cmp r0, #1 bne _038061FC add r0, sp, #0 bl RTC_ReadStatus1 ldrh r1, [sp] mov r0, r1, lsl #30 mov r2, r0, lsr #31 mov r0, r5, lsl #16 cmp r2, r0, lsr #16 beq _038061FC and r4, r4, #1 bic r1, r1, #2 mov r0, r4, lsl #16 mov r0, r0, lsr #16 and r0, r0, #1 orr r0, r1, r0, lsl #1 strh r0, [sp] add r0, sp, #0 bl RTC_WriteStatus1 mov r0, #134 ;@ 0x86 mov r1, #16 add r2, sp, #4 mov r3, #3 bl FUN_03805A48 mov r0, r4, lsl #16 movs r0, r0, lsr #16 bne _03806198 add r0, sp, #4 bl FUN_03805BC4 b _038061A0 _03806198: add r0, sp, #4 bl FUN_03805AAC _038061A0: mov r0, #6 mov r1, #16 add r2, sp, #4 mov r3, #3 bl FUN_03805A48 mov r0, #134 ;@ 0x86 mov r1, #80 ;@ 0x50 add r2, sp, #4 mov r3, #3 bl FUN_03805A48 mov r0, r5, lsl #16 movs r0, r0, lsr #16 bne _038061E0 add r0, sp, #4 bl FUN_03805BC4 b _038061E8 _038061E0: add r0, sp, #4 bl FUN_03805AAC _038061E8: mov r0, #6 mov r1, #80 ;@ 0x50 add r2, sp, #4 mov r3, #3 bl FUN_03805A48 _038061FC: add sp, sp, #12 ldmia sp!, {r4, r5, lr} bx lr arm_func_start RTC_Reset RTC_Reset: ;@ 0x03806208 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #32768 ;@ 0x8000 bl EXIi_SelectRcnt ldrh r0, [sp] bic r0, r0, #1 orr r0, r0, #1 strh r0, [sp] mov r0, #6 mov r1, #0 add r2, sp, #0 mov r3, #1 bl FUN_03805A48 add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start RTCi_GpioStart RTCi_GpioStart: ;@ 0x03806248 mov ip, #67108864 ;@ 0x4000000 add ip, ip, #312 ;@ 0x138 ldrh r0, [ip] bic r0, r0, #119 ;@ 0x77 orr r0, r0, #114 ;@ 0x72 strh r0, [ip] mov r3, #2 _03806264: subs r3, r3, #1 bne _03806264 bic r0, r0, #4 orr r0, r0, #4 strh r0, [ip] mov r3, #2 _0380627C: subs r3, r3, #1 bne _0380627C bx lr arm_func_start RTCi_GpioEnd RTCi_GpioEnd: ;@ 0x03806288 mov ip, #67108864 ;@ 0x4000000 add ip, ip, #312 ;@ 0x138 mov r3, #2 _03806294: subs r3, r3, #1 bne _03806294 ldrh r0, [ip] bic r0, r0, #4 orr r0, r0, #0 strh r0, [ip] mov r3, #2 _038062B0: subs r3, r3, #1 bne _038062B0 bx lr arm_func_start RTCi_GpioSendCommand RTCi_GpioSendCommand: ;@ 0x038062BC mov ip, #67108864 ;@ 0x4000000 add ip, ip, #312 ;@ 0x138 orr r1, r0, r1 ldrh r0, [ip] bic r0, r0, #119 ;@ 0x77 orr r0, r0, #116 ;@ 0x74 mov r2, #0 _038062D8: bic r0, r0, #3 orr r0, r0, #0 mov r3, #1 tst r3, r1, lsr r2 movne r3, #1 moveq r3, #0 orr r0, r0, r3 strh r0, [ip] mov r3, #9 _038062FC: subs r3, r3, #1 bne _038062FC bic r0, r0, #2 orr r0, r0, #2 strh r0, [ip] mov r3, #9 _03806314: subs r3, r3, #1 bne _03806314 add r2, r2, #1 cmp r2, #8 bne _038062D8 bx lr arm_func_start RTCi_GpioSendData RTCi_GpioSendData: ;@ 0x0380632C mov ip, #67108864 ;@ 0x4000000 add ip, ip, #312 ;@ 0x138 _03806334: stmdb sp!, {r0, r1} tst r0, #1 ldreqh r1, [r0] ldrneh r1, [r0, #-1] movne r1, r1, lsr #8 ldrh r0, [ip] bic r0, r0, #119 ;@ 0x77 orr r0, r0, #116 ;@ 0x74 mov r2, #0 _03806358: bic r0, r0, #3 orr r0, r0, #0 mov r3, #1 tst r3, r1, lsr r2 movne r3, #1 moveq r3, #0 orr r0, r0, r3 strh r0, [ip] mov r3, #9 _0380637C: subs r3, r3, #1 bne _0380637C bic r0, r0, #2 orr r0, r0, #2 strh r0, [ip] mov r3, #9 _03806394: subs r3, r3, #1 bne _03806394 add r2, r2, #1 cmp r2, #8 bne _03806358 ldmia sp!, {r0, r1} add r0, r0, #1 subs r1, r1, #1 bne _03806334 bx lr arm_func_start RTCi_GpioReceiveData RTCi_GpioReceiveData: ;@ 0x038063BC mov ip, #67108864 ;@ 0x4000000 add ip, ip, #312 ;@ 0x138 _038063C4: stmdb sp!, {r0, r1} ldrh r0, [ip] bic r0, r0, #119 ;@ 0x77 orr r0, r0, #100 ;@ 0x64 mov r2, #0 mov r1, #0 _038063DC: bic r0, r0, #3 orr r0, r0, #0 strh r0, [ip] mov r3, #9 _038063EC: subs r3, r3, #1 bne _038063EC ldrh r0, [ip] and r3, r0, #1 cmp r3, #1 moveq r3, #128 ;@ 0x80 movne r3, #0 orr r2, r3, r2, lsr #1 bic r0, r0, #2 orr r0, r0, #2 strh r0, [ip] mov r3, #9 _0380641C: subs r3, r3, #1 bne _0380641C add r1, r1, #1 cmp r1, #8 bne _038063DC ldmia sp!, {r0, r1} tst r0, #1 beq _03806454 ldrh r3, [r0, #-1] bic r3, r3, #65280 ;@ 0xff00 mov r2, r2, lsl #8 orr r3, r2, r3 strh r3, [r0, #-1] b _03806464 _03806454: ldrh r3, [r0] bic r3, r3, #255 ;@ 0xff orr r3, r3, r2 strh r3, [r0] _03806464: add r0, r0, #1 subs r1, r1, #1 bne _038063C4 bx lr