;Driver Command: ccarm -c -MD -IGenerated\inc\ -I..\Generated\inc -I..\Src ; -I..\Src -I..\Generated\inc\ -I..\Src ; -I..\..\..\MCAL\Platform_ZX_K14xM\Inc ; -I..\..\..\MCAL\Platform_ZX_K14xM\StartUp\Inc ; -I..\..\..\MCAL\McalLib_ZX_K14xM\Inc\Devices ; -I..\..\..\MCAL\McalLib_ZX_K14xM\Inc ; -I..\..\..\MCAL\Mcu_ZX_K14xM\Inc -I..\..\..\MCAL\Adc_ZX_K14xM\Inc ; -I..\..\..\MCAL\Dem_ZX_K14xM\Inc -I..\..\..\MCAL\Det_ZX_K14xM\Inc ; -I..\..\..\MCAL\Dio_ZX_K14xM\Inc ; -I..\..\..\MCAL\Base_ZX_K14xM\Inc ; -I..\..\..\MCAL\Wdg_ZX_K14xM\Inc ; -I..\..\..\MCAL\Port_ZX_K14xM\Inc ; -I..\..\..\MCAL\Rte_ZX_K14xM\Inc ; -I..\..\..\MCAL\Base_ZX_K14xM\Inc\MemMap ; -I..\..\..\MCAL\WdgIf_ZX_K14xM\Inc ; -I..\..\..\MCAL\Can_ZX_K14xM\Inc -I..\..\..\MCAL\Gpt_ZX_K14xM\Inc ; -I..\..\..\MCAL\Dma_ZX_K14xM\Inc -I..\..\..\MCAL\Pwm_ZX_K14xM\Inc ; -I..\..\..\MCAL\EcuM_ZX_K14xM\Inc ; -I..\..\..\MCAL\Can_ZX_K14xM\Inc ; -I..\..\..\MCAL\CanIf_ZX_K14xM\Inc ; -I..\..\..\mcal\Icu_ZX_K14xM\Inc ; -I..\..\..\MCAL\Ecum_ZX_K14xM\Inc ; -I..\..\..\MCAL\Fls_ZX_K14xM\Inc ; -I..\..\..\MCAL\MemIf_ZX_K14xM\Inc ; -I..\..\..\mcal\Icu_ZX_K14xM\Inc -I..\..\..\mcal\Spi_ZX_K14xM\Inc ; -I..\..\..\Package\OS\Task ; -I..\..\..\Package\OS\Task\cpu_port\Zhixin ; -I..\..\..\Package\cm_backtrace -I..\..\..\Package\Cdd ; -I..\..\..\Package\Cdd\CddBuck\Gen ; -I..\..\..\Package\Cdd\CddBuck\Gen ; -I..\..\..\Package\Cdd\CddSbc\Api ; -I..\..\..\Package\Cdd\CddSbc\Cfg ; -I..\..\..\Package\Cdd\CddTle94x1\Cfg ; -I..\..\..\Package\Cdd\CddTle94x1\Api ; -I..\..\..\Package\Cdd\CddTle94x1\Gen ; -I..\..\..\Package\Cdd\CddBoost\Api -cpu=cortexm4f -Wshadow ; -Wtrigraphs -keeptempfiles -Wundef -Wimplicit-int -dual_debug ; --no_commons --no_exceptions --gnu_asm ; --incorrect_pragma_warnings --prototype_errors -list ; --misra_2004=2.1 -ignore_debug_references ; -preprocess_assembly_files -thumb_lib -thumb --hardware_divide ; -c99 -no_japanese_automotive_c --std --stdl --slash_comment ; -Ospeed --no_debug -object_dir=objs\release -filetype.c ; ..\..\..\mcal\Spi_ZX_K14xM\Src\Spi.c -o objs\release\Spi.o ;Source File: ..\..\..\mcal\Spi_ZX_K14xM\Src\Spi.c ;Directory: ; D:\AUTOMFL\AutoSAR\ZHIXIN\MCAL_Capri(1.2.0)\Project\Capri\MultiProject ;Compile Date: Mon Dec 18 00:01:43 2023 ;Host OS: Win64 ;Version: C-ARM 2021.1.4 RELEASE VERSION ;Release: Compiler v2021.1.4 ;Revision Date: Mon Apr 26 12:37:23 2021 ;Release Date: Mon Apr 26 08:01:05 2021 ; ecom -w -OLM .section ".mcal_code","ax" .align 2 ..gh.f.f.1.a.1.e.0: .endo ..gh.f.f.1.a.1.e.0 .thumb2 Spi_CheckSequence: push {r4,lr} movw r12,%lo(Spi_ConfigPtr) movt r12,%hi(Spi_ConfigPtr) ldr.w r3,[r12] cbnz r3,.L1194 movs r3,26 movs r4,1 movs r1,0 movs r0,83 .L1525: bl Det_ReportError b .L1192 .L1194: ldrb r12,[r3,6] movs r4,0 cmp r1,r12 bls .L1197 movs r3,12 movs r4,1 movs r1,0 movs r0,83 .L1527: bl Det_ReportError b .L1192 .L1197: ldr r3,[r3,20] ldr.w r1,[r3,r1 lsl 2] cbz r1,.L1204 ldr r3,[r1,4] cmp r0,r3 beq .L1203 .L1204: movs r3,15 movs r4,1 movs r1,0 movs r0,83 .L1529: bl Det_ReportError b .L1192 .L1203: ldrh r0,[r1] movs r1,r0 bne .L1192 movs r3,92 movs r4,1 movs r0,83 .L1531: bl Det_ReportError .L1192: cpy r0,r4 .L1533: pop {r4,pc} .endf Spi_CheckSequence ;Ret r4 local ;CoreId r0 param ;Sequence r1 param ;ServiceId r2 param .section ".mcal_bss","awb" .align 4 Spi_ConfigPtr: .space 4 .endo Spi_ConfigPtr .section ".ghcalltbl","" .align 4 .L1526: .data.w .L1525 .endo .L1526 .L1528: .data.w .L1527 .endo .L1528 .L1530: .data.w .L1529 .endo .L1530 .L1532: .data.w .L1531 .endo .L1532 .section ".ghrettbl","" .align 4 .L1534: .data.w .L1533 .endo .L1534 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.1: .endo ..gh.f.f.1.a.1.e.1 Spi_CheckChannel: push {r4,lr} movw r12,%lo(Spi_ConfigPtr) movt r12,%hi(Spi_ConfigPtr) ldr.w r3,[r12] cbnz r3,.L1537 movs r3,26 movs r4,1 movs r1,0 movs r0,83 .L1814: bl Det_ReportError b .L1535 .L1537: ldrb r12,[r3,2] movs r4,0 cmp r1,r12 bls .L1540 movs r3,10 movs r4,1 movs r1,0 movs r0,83 .L1816: bl Det_ReportError b .L1535 .L1540: ldr r3,[r3,12] ldr.w r1,[r3,r1 lsl 2] cbz r1,.L1547 ldr r1,[r1,20] cmp r0,r1 beq .L1535 .L1547: movs r3,15 movs r4,1 movs r1,0 movs r0,83 .L1818: bl Det_ReportError .L1535: cpy r0,r4 .L1820: pop {r4,pc} .endf Spi_CheckChannel ;Ret r4 local ;CoreId r0 param ;Channel r1 param ;ServiceId r2 param .section ".ghcalltbl","" .L1815: .data.w .L1814 .endo .L1815 .L1817: .data.w .L1816 .endo .L1817 .L1819: .data.w .L1818 .endo .L1819 .section ".ghrettbl","" .L1821: .data.w .L1820 .endo .L1821 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.2: .endo ..gh.f.f.1.a.1.e.2 Spi_CheckHWUnit: push {r4,lr} movw r12,%lo(Spi_ConfigPtr) movt r12,%hi(Spi_ConfigPtr) ldr.w r3,[r12] movs r4,1 cbnz r3,.L1824 movs r3,26 movs r1,0 movs r0,83 .L2099: bl Det_ReportError cpy r0,r4 .L2101: pop {r4,pc} .L1824: cmp r1,2 blo .L1827 movs r3,97 movs r1,0 movs r0,83 .L2103: bl Det_ReportError cpy r0,r4 .L2105: pop {r4,pc} .L1827: ldr r3,[r3,28] ldr.w r1,[r3,r1 lsl 2] cbz r1,.L1834 ldr r1,[r1,8] cmp r0,r1 itt eq mov r0,0 .L2107: pop {r4,pc} .L1834: movs r3,15 movs r1,0 movs r0,83 .L2109: bl Det_ReportError cpy r0,r4 .L2111: pop {r4,pc} .endf Spi_CheckHWUnit ;Ret r4 local ;CoreId r0 param ;HWUnit r1 param ;ServiceId r2 param .section ".ghcalltbl","" .L2100: .data.w .L2099 .endo .L2100 .section ".ghrettbl","" .L2102: .data.w .L2101 .endo .L2102 .section ".ghcalltbl","" .L2104: .data.w .L2103 .endo .L2104 .section ".ghrettbl","" .L2106: .data.w .L2105 .endo .L2106 .L2108: .data.w .L2107 .endo .L2108 .section ".ghcalltbl","" .L2110: .data.w .L2109 .endo .L2110 .section ".ghrettbl","" .L2112: .data.w .L2111 .endo .L2112 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.3: .endo ..gh.f.f.1.a.1.e.3 Spi_StartNextJob: push {r4-r7,lr} cpy r5,r0 .L3663: bl SchM_Enter_Spi_UpdateAsyncHWUnitQueue ldrsb r0,[r5,16] cmp r0,0 blt .L2115 lsls r1,r0,1 adds r2,r5,r1 ldrh r4,[r5,r1] movw r7,%lo(Spi_JobStateArray) movt r7,%hi(Spi_JobStateArray) rsb r1,r4,r4 lsl 2 lsls r6,r1,2 adds r1,r6,r7 ldrh r1,[r1,8] strh r1,[r2] mov r2,0xffff cmp r1,r2 bne .L2117 add r2,r5,r0 lsl 1 subs r0,r0,1 strh r1,[r2,8] add r1,r0,1 it mi mov r1,0 lsrs r3,r1,3 beq .L2209 mov r2,0xffff .L2217: lsl r12,r0,1 ldrh r12,[r12,r5] cmp r12,r2 bne .L2125 subs r0,r0,1 lsl r12,r0,1 ldrh r12,[r12,r5] cmp r12,r2 bne .L2125 subs r0,r0,1 lsl r12,r0,1 ldrh r12,[r12,r5] cmp r12,r2 bne .L2125 subs r0,r0,1 lsl r12,r0,1 ldrh r12,[r12,r5] cmp r12,r2 bne .L2125 subs r0,r0,1 lsl r12,r0,1 ldrh r12,[r12,r5] cmp r12,r2 bne .L2125 subs r0,r0,1 lsl r12,r0,1 ldrh r12,[r12,r5] cmp r12,r2 bne .L2125 subs r0,r0,1 lsl r12,r0,1 ldrh r12,[r12,r5] cmp r12,r2 bne .L2125 subs r0,r0,1 lsl r12,r0,1 ldrh r12,[r12,r5] cmp r12,r2 bne .L2125 subs r0,r0,1 subs r3,r3,1 bne .L2217 .L2209: ands r1,r1,7 beq .L2125 add r2,r5,r0 lsl 1 mov r12,0xffff .L2212: ldrh r3,[r2] cmp r3,r12 bne .L2125 subs r2,r2,2 subs r0,r0,1 subs r1,r1,1 bne .L2212 .L2125: strb r0,[r5,16] .L2117: .L3665: bl SchM_Exit_Spi_UpdateAsyncHWUnitQueue movs r0,1 str r0,[r7,r6] movs r0,0 strb r0,[r5,24] strh r4,[r5,26] movw r1,%lo(Spi_ConfigPtr) movt r1,%hi(Spi_ConfigPtr) ldr r0,[r1] ldr r0,[r0,16] ldr.w r0,[r0,r4 lsl 2] pop {r4-r7,lr} .L3667: b Spi_TransferAsyncJob .L2115: movs r0,1 str r0,[r5,20] pop {r4-r7,lr} .L3669: b SchM_Exit_Spi_UpdateAsyncHWUnitQueue .endf Spi_StartNextJob ;Job r4 local ;JobListHead r2 local ;Priority r1 local ;MaxScheduledPriority r0 local ;HWUnitQueue r5 param ;CoreId none param .section ".ghcalltbl","" .L3664: .data.w .L3663 .endo .L3664 .L3666: .data.w .L3665 .endo .L3666 .section ".ghtailcalltbl","" .align 4 .L3668: .data.w .L3667 .endo .L3668 .L3670: .data.w .L3669 .endo .L3670 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.4: .endo ..gh.f.f.1.a.1.e.4 Spi_TransferAsyncJob: push {r4,lr} sub sp,sp,4 cpy r4,r0 ldr r0,[r0,12] cmp r0,0 it ne .L3817: blx r0 ldrb r0,[r4] cmp r0,1 ite ls mov r3,1 mov r3,0 movs r0,0 str r0,[sp] ldr r0,[r4,32] movw r2,%lo(Spi_ConfigPtr) movt r2,%hi(Spi_ConfigPtr) ldr r1,[r0] ldr r0,[r2] ldr r2,[r0,12] ldr r0,[r4,4] ldrb r0,[r0] ldr.w r0,[r2,r0 lsl 2] movs r2,1 .L3819: bl Spi_Drvw_TransmitChannel add sp,sp,4 .L3821: pop {r4,pc} .endf Spi_TransferAsyncJob ;IsLastChannel r3 local ;JobCfgPtr r4 param .section ".ghcalltbl","" .L3818: .data.w .L3817 .endo .L3818 .L3820: .data.w .L3819 .endo .L3820 .section ".ghrettbl","" .L3822: .data.w .L3821 .endo .L3822 .section ".mcal_code","ax" .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 .assert 0x0 + (Spi_SequenceStateArray - Spi_ConfigPtr) +0 == 76 .assert 0x0 + (Spi_SeqUsedHWUnits - Spi_ConfigPtr) +0 == 4 ..gh.f.f.1.a.1.e.5: .endo ..gh.f.f.1.a.1.e.5 Spi_Init:: push {r4-fp,lr} movw r4,%lo(Spi_ConfigPtr) movt r4,%hi(Spi_ConfigPtr) ldr r1,[r4] sub sp,sp,16 cbz r1,.L3829 movs r3,74 movs r2,0 cpy r1,r2 movs r0,83 add sp,sp,16 pop {r4-fp,lr} .L10072: b Det_ReportError .L3829: movs r2,r0 bne .L3831 movs r3,106 movs r0,83 add sp,sp,16 pop {r4-fp,lr} .L10074: b Det_ReportError .L3831: ldrh r1,[r0,4] ldrb r2,[r0,6] ldrb r3,[r0,2] cmp r3,4 itt lo cmp r1,4 cmp r2,4 blo .L3835 movs r3,90 movs r2,0 cpy r1,r2 movs r0,83 add sp,sp,16 pop {r4-fp,lr} .L10076: b Det_ReportError .L3835: ldr r1,[r0,8] movs r5,r1 beq .L3840 movs r3,15 movs r2,0 cpy r1,r2 movs r0,83 add sp,sp,16 pop {r4-fp,lr} .L10078: b Det_ReportError .L3840: str r0,[r4] ldr r2,[r0,12] ldrb r3,[r0,2] mov r8,r0 movw r0,%lo(Spi_ChannelStateArray) movt r0,%hi(Spi_ChannelStateArray) .L3844: ldr r6,[r2] cbz r6,.L3850 ldr.w r12,[r6,20] cmp r12,0 bne .L3850 mov r12,1 strb r12,[r0] ldr.w r12,[r6] cmp r12,0 bne .L3848 ldrh r12,[r6,12] strh r12,[r0,2] adds r0,r0,4 adds r2,r2,4 adds r1,r1,1 cmp r1,r3 bls .L3844 b .L3854 .L3848: ldr.w r12,[r6,16] cpy r6,r5 stm r12,{r5-r6} strh r5,[r0,2] .L3850: adds r0,r0,4 adds r2,r2,4 adds r1,r1,1 cmp r1,r3 bls .L3844 .L3854: ldr.w r3,[r8,16] ldrh r0,[r8,4] movw r1,%lo(Spi_JobStateArray) movt r1,%hi(Spi_JobStateArray) cpy r2,r3 cbnz r0,.L5997 ldr r6,[r3] movs r0,1 cbnz r6,.L6000 b .L6002 .L5997: adds r0,r0,1 lsrs r5,r0,3 beq .L5999 .L6006: ldr r6,[r2] cbz r6,.L6009 ldr r6,[r6,20] cbnz r6,.L6009 mov r12,r6 stm r1,{r6,r12} .L6009: ldr r6,[r2,4] cbz r6,.L6012 ldr r6,[r6,20] cbnz r6,.L6012 str r6,[r1,12] str r6,[r1,16] .L6012: ldr r6,[r2,8] cbz r6,.L6015 ldr r6,[r6,20] cbnz r6,.L6015 str r6,[r1,24] str r6,[r1,28] .L6015: ldr r6,[r2,12] cbz r6,.L6018 ldr r6,[r6,20] cbnz r6,.L6018 str r6,[r1,36] str r6,[r1,40] .L6018: ldr r6,[r2,16] cbz r6,.L6021 ldr r6,[r6,20] cbnz r6,.L6021 str r6,[r1,48] str r6,[r1,52] .L6021: ldr r6,[r2,20] cbz r6,.L6024 ldr r6,[r6,20] cbnz r6,.L6024 str r6,[r1,60] str r6,[r1,64] .L6024: ldr r6,[r2,24] cbz r6,.L6027 ldr r6,[r6,20] cbnz r6,.L6027 str r6,[r1,72] str r6,[r1,76] .L6027: ldr r6,[r2,28] cbz r6,.L6030 ldr r6,[r6,20] cbnz r6,.L6030 str r6,[r1,84] str r6,[r1,88] .L6030: adds r2,r2,32 adds r1,r1,96 subs r5,r5,1 bne .L6006 ands r0,r0,7 beq .L3863 .L5999: ldr r6,[r2] cbz r6,.L6002 .L6000: ldr r5,[r6,20] cbnz r5,.L6002 mov r12,r5 stm r1,{r5,r12} .L6002: adds r2,r2,4 adds r1,r1,12 subs r0,r0,1 bne .L5999 .L3863: mov fp,r0 ldr.w r0,[r8,20] ldrb r9,[r8,6] str r0,[sp,12] .L3864: ldr r1,[sp,12] ldr.w lr,[r1,fp lsl 2] cmp lr,0 beq .L3870 ldr.w r0,[lr,4] cmp r0,0 bne .L3870 add r1,r4,76 lsl r0,fp,4 adds r2,r0,r4 str lr,[r2,80] movs r2,0 str r2,[r0,r1] ldrh r0,[lr] cpy r7,r2 str r0,[sp,4] lsrs r6,r0,3 beq .L5924 cpy r1,r2 movs r5,1 lsls r7,r6,3 ldr.w r2,[lr,8] .L5930: ldrh r12,[r2],16 ldrh r10,[r2,-14] ldr.w r12,[r3,r12 lsl 2] ldrh r0,[r2,-12] ldr.w r10,[r3,r10 lsl 2] ldrb r12,[r12,28] ldr.w r0,[r3,r0 lsl 2] lsl r12,r5,r12 orr r1,r1,r12 ldrb r10,[r10,28] ldrh r12,[r2,-10] ldrb r0,[r0,28] lsl r10,r5,r10 orr r1,r1,r10 ldrh r10,[r2,-8] lsl r0,r5,r0 orrs r1,r0 ldr.w r12,[r3,r12 lsl 2] ldr.w r10,[r3,r10 lsl 2] ldrh r0,[r2,-6] ldrb r12,[r12,28] ldrb r10,[r10,28] lsl r12,r5,r12 orr r1,r1,r12 ldrh r12,[r2,-4] lsl r10,r5,r10 orr r1,r1,r10 ldrh r10,[r2,-2] ldr.w r0,[r3,r0 lsl 2] ldr.w r12,[r3,r12 lsl 2] ldr.w r10,[r3,r10 lsl 2] ldrb r0,[r0,28] ldrb r12,[r12,28] ldrb r10,[r10,28] lsl r0,r5,r0 orrs r1,r0 subs r6,r6,1 lsl r12,r5,r12 orr r1,r1,r12 lsl r12,r5,r10 orr r1,r1,r12 bne .L5930 cpy r2,r1 .L5924: ldr r0,[sp,4] ands r1,r0,7 bne .L6202 movw r1,%lo(Spi_SeqUsedHWUnits) movt r1,%hi(Spi_SeqUsedHWUnits) str r2,[r1,fp lsl 2] add fp,fp,1 cmp fp,r9 bls .L3864 b .L5985 .L6202: ldr.w r6,[lr,8] .L5927: lsls r5,r7,1 ldrh r5,[r5,r6] ldr.w r12,[r3,r5 lsl 2] ldrb r12,[r12,28] movs r5,1 lsl r5,r5,r12 orrs r2,r5 adds r7,r7,1 subs r1,r1,1 bne .L5927 movw r1,%lo(Spi_SeqUsedHWUnits) movt r1,%hi(Spi_SeqUsedHWUnits) str r2,[r1,fp lsl 2] .L3870: add fp,fp,1 cmp fp,r9 bls .L3864 .L5985: ldr.w r0,[r8,28] ldr r1,[r0] cbz r1,.L5990 ldr r2,[r1,8] cbnz r2,.L5990 cpy r0,r2 .L10080: bl Spi_Drvw_Init movs r1,0 cpy r0,r1 .L10082: bl Spi_Drvw_SetAsyncMode mov r0,-1 cpy r2,r0 cpy r1,r0 cpy r3,r0 add r12,r4,20 stm r12,{r0-r3} ldr r1,[r4] strb r0,[r4,36] movs r0,1 str r0,[r4,40] ldr r0,[r1,28] .L5990: ldr r1,[r0,4] cbz r1,.L3823 ldr r0,[r1,8] cbnz r0,.L3823 movs r0,1 .L10084: bl Spi_Drvw_Init movs r1,0 movs r0,1 .L10086: bl Spi_Drvw_SetAsyncMode mov r0,-1 add r12,r4,48 cpy r2,r0 cpy r1,r0 cpy r3,r0 stm r12,{r0-r3} strb r0,[r12,16] movs r0,1 str r0,[r12,20] .L3823: add sp,sp,16 .L10088: pop {r4-fp,pc} .endf Spi_Init ;Job r1 local ;Sequence r2 local ;Channel r1 local ;ChannelCfgPtr r6 local ;JobCfgPtr r6 local ;Sequence fp local ;SeqCfgPtr lr local ;Job r7 local ;ConfigPtr r0 param .section ".mcal_bss","awb" Spi_SeqUsedHWUnits: .space 16 .endo Spi_SeqUsedHWUnits Spi_HWUnitQueueArray: .space 56 .endo Spi_HWUnitQueueArray Spi_SequenceStateArray: .space 64 .endo Spi_SequenceStateArray .section ".ghtailcalltbl","" .L10073: .data.w .L10072 .endo .L10073 .L10075: .data.w .L10074 .endo .L10075 .L10077: .data.w .L10076 .endo .L10077 .L10079: .data.w .L10078 .endo .L10079 .section ".ghcalltbl","" .L10081: .data.w .L10080 .endo .L10081 .L10083: .data.w .L10082 .endo .L10083 .L10085: .data.w .L10084 .endo .L10085 .L10087: .data.w .L10086 .endo .L10087 .section ".ghrettbl","" .L10089: .data.w .L10088 .endo .L10089 .section ".mcal_code","ax" .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 ..gh.f.f.1.a.1.e.6: .endo ..gh.f.f.1.a.1.e.6 Spi_DeInit:: push {r4-r5,lr} movw r5,%lo(Spi_ConfigPtr) movt r5,%hi(Spi_ConfigPtr) ldr r1,[r5] cbnz r1,.L10092 movs r4,1 movs r3,26 cpy r2,r4 movs r0,83 .L10495: bl Det_ReportError cpy r0,r4 .L10497: pop {r4-r5,pc} .L10092: movs r4,0 .L10499: bl Spi_GetStatus cmp r0,1 itt ne mov r0,1 .L10501: pop {r4-r5,pc} ldr r0,[r5] ldr r0,[r0,28] ldr r1,[r0] cbz r1,.L10217 ldr r1,[r1,8] cbnz r1,.L10217 cpy r0,r1 .L10503: bl Spi_Drvw_DeInit ldr r0,[r5] str r4,[r5,40] ldr r0,[r0,28] .L10217: ldr r0,[r0,4] cbz r0,.L10097 ldr r0,[r0,8] cbnz r0,.L10097 movs r0,1 .L10505: bl Spi_Drvw_DeInit str r4,[r5,68] .L10097: str r4,[r5] cpy r0,r4 .L10507: pop {r4-r5,pc} .endf Spi_DeInit ;Ret r4 local .section ".ghcalltbl","" .L10496: .data.w .L10495 .endo .L10496 .section ".ghrettbl","" .L10498: .data.w .L10497 .endo .L10498 .section ".ghcalltbl","" .L10500: .data.w .L10499 .endo .L10500 .section ".ghrettbl","" .L10502: .data.w .L10501 .endo .L10502 .section ".ghcalltbl","" .L10504: .data.w .L10503 .endo .L10504 .L10506: .data.w .L10505 .endo .L10506 .section ".ghrettbl","" .L10508: .data.w .L10507 .endo .L10508 .section ".mcal_code","ax" .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.7: .endo ..gh.f.f.1.a.1.e.7 Spi_WriteIB:: push {r4-r7,r10,lr} cpy r5,r0 cpy r6,r1 movw r10,%lo(Spi_ConfigPtr) movt r10,%hi(Spi_ConfigPtr) cpy r1,r0 movs r2,2 movs r0,0 .L11569: bl Spi_CheckChannel cpy r4,r0 cmp r0,1 beq .L10511 ldr.w r0,[r10] ldr r1,[r0,12] ldr.w r0,[r1,r5 lsl 2] ldr r0,[r0] cmp r0,1 bne .L10511 cpy r4,r0 movs r3,10 movs r2,2 movs r1,0 movs r0,83 .L11571: bl Det_ReportError .L10511: cmp r4,1 beq .L10509 ldr.w r0,[r10] ldr r0,[r0,12] movw r1,%lo(Spi_ChannelStateArray) movt r1,%hi(Spi_ChannelStateArray) add r7,r1,r5 lsl 2 ldr.w r5,[r0,r5 lsl 2] .L11573: bl SchM_Enter_Spi_UpdateChannelState movs r1,r6 beq .L10520 ldr r0,[r5,16] ldrh r3,[r5,12] movs r2,0 cmp r2,r3 ldr r0,[r0] bhs .L10522 .L10525: ldrb r3,[r1],1 strb r3,[r0],1 ldrh r12,[r5,12] add r2,r2,1<<16 cmp r12,r2 lsr 16 bhi .L10525 .L10522: ldrb r0,[r7] and r0,r0,254 strb r0,[r7] .L11575: bl SchM_Exit_Spi_UpdateChannelState b .L10509 .L10520: ldrb r0,[r7] orr r0,r0,1 strb r0,[r7] .L11577: bl SchM_Exit_Spi_UpdateChannelState .L10509: cpy r0,r4 .L11579: pop {r4-r7,r10,pc} .endf Spi_WriteIB ;Ret r4 local ;Index r2 local ;ChannelState r7 local ;ChannelCfgPtr r5 local ;DataBufferDes r0 local ;DataBufferSrc r1 local ;Ret r4 local ;Channel r5 param ;DataBufferPtr r6 param .section ".ghcalltbl","" .L11570: .data.w .L11569 .endo .L11570 .L11572: .data.w .L11571 .endo .L11572 .L11574: .data.w .L11573 .endo .L11574 .L11576: .data.w .L11575 .endo .L11576 .L11578: .data.w .L11577 .endo .L11578 .section ".ghrettbl","" .L11580: .data.w .L11579 .endo .L11580 .section ".mcal_code","ax" .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 .assert 0x0 + (Spi_SequenceStateArray - Spi_ConfigPtr) +0 == 76 ..gh.f.f.1.a.1.e.8: .endo ..gh.f.f.1.a.1.e.8 Spi_AsyncTransmit:: push {r4-fp,lr} sub sp,sp,16 cpy r4,r0 cpy r1,r0 movs r2,3 strb r0,[sp,3] movs r0,0 .L16221: bl Spi_CheckSequence cpy r6,r0 cmp r0,1 beq .L11583 movw r0,%lo(Spi_ConfigPtr) movt r0,%hi(Spi_ConfigPtr) ldr.w fp,[r0] ldr.w r2,[fp,20] ldr.w r0,[r2,r4 lsl 2] movs r5,0 ldrh r9,[r0] str r0,[sp,12] cmp r5,r9 bhs .L11583 .L11587: ldr r0,[sp,12] ldr r3,[r0,8] lsls r1,r5,1 ldr.w r2,[fp,16] ldrh r1,[r1,r3] ldr.w r4,[r2,r1 lsl 2] ldrb r1,[r4] cbnz r1,.L11589 movs r6,1 movs r3,93 movs r2,3 movs r0,83 .L16223: bl Det_ReportError movw r0,%lo(Spi_ConfigPtr) movt r0,%hi(Spi_ConfigPtr) ldr.w fp,[r0] .L11589: ldr.w r2,[fp,28] ldrb r1,[r4,28] ldr.w r1,[r2,r1 lsl 2] ldr r1,[r1,4] cbz r1,.L11591 movs r3,14 mov r8,1 movs r2,3 movs r1,0 movs r0,83 .L16225: bl Det_ReportError b .L11581 .L11591: movs r2,r6 bne .L11583 ldrb lr,[r4] lsrs r10,lr,3 beq .L12074 movw r3,%lo(Spi_ChannelStateArray) movt r3,%hi(Spi_ChannelStateArray) ldr.w r12,[r4,4] ldr.w r7,[fp,12] .L12084: ldrb r1,[r12,r2] ldr.w r0,[r7,r1 lsl 2] ldr r0,[r0] cmp r0,1 bne .L12089 add r1,r3,r1 lsl 2 ldrh r1,[r1,2] cmp r1,0 beq .L12079 .L12089: adds r2,r2,1 ldrb r1,[r12,r2] ldr.w r0,[r7,r1 lsl 2] ldr r0,[r0] cmp r0,1 bne .L12094 add r1,r3,r1 lsl 2 ldrh r1,[r1,2] cmp r1,0 beq .L12079 .L12094: adds r2,r2,1 ldrb r1,[r12,r2] ldr.w r0,[r7,r1 lsl 2] ldr r0,[r0] cmp r0,1 bne .L12099 add r1,r3,r1 lsl 2 ldrh r1,[r1,2] cmp r1,0 beq .L12079 .L12099: adds r2,r2,1 ldrb r1,[r12,r2] ldr.w r0,[r7,r1 lsl 2] ldr r0,[r0] cmp r0,1 bne .L12104 add r1,r3,r1 lsl 2 ldrh r1,[r1,2] cmp r1,0 beq .L12079 .L12104: adds r2,r2,1 ldrb r1,[r12,r2] ldr.w r0,[r7,r1 lsl 2] ldr r0,[r0] cmp r0,1 bne .L12109 add r1,r3,r1 lsl 2 ldrh r1,[r1,2] cbz r1,.L12079 .L12109: adds r2,r2,1 ldrb r1,[r12,r2] ldr.w r0,[r7,r1 lsl 2] ldr r0,[r0] cmp r0,1 bne .L12114 add r1,r3,r1 lsl 2 ldrh r1,[r1,2] cbz r1,.L12079 .L12114: adds r2,r2,1 ldrb r1,[r12,r2] ldr.w r0,[r7,r1 lsl 2] ldr r0,[r0] cmp r0,1 bne .L12119 add r1,r3,r1 lsl 2 ldrh r1,[r1,2] cbz r1,.L12079 .L12119: adds r2,r2,1 ldrb r1,[r12,r2] ldr.w r0,[r7,r1 lsl 2] ldr r0,[r0] cmp r0,1 bne .L12123 add r1,r3,r1 lsl 2 ldrh r1,[r1,2] cbz r1,.L12079 .L12123: adds r2,r2,1 uxtb r2,r2 subs r10,r10,1 bne .L12084 .L12074: ands r3,lr,7 beq .L11600 ldr r1,[r4,4] ldr.w r4,[fp,12] add r2,r2,r1 .L12077: ldrb r1,[r2],1 ldr.w r7,[r4,r1 lsl 2] ldr r7,[r7] cmp r7,1 bne .L12081 movw r0,%lo(Spi_ChannelStateArray) movt r0,%hi(Spi_ChannelStateArray) add r1,r0,r1 lsl 2 ldrh r1,[r1,2] cbnz r1,.L12081 .L12079: movs r3,91 mov r8,1 movs r2,3 movs r0,83 .L16227: bl Det_ReportError b .L11581 .L12081: subs r3,r3,1 bne .L12077 .L11600: adds r5,r5,1 uxth r5,r5 cmp r5,r9 blo .L11587 .L11583: subs r8,r6,0 bne .L11581 movw r0,%lo(Spi_ConfigPtr) movt r0,%hi(Spi_ConfigPtr) ldr r1,[r0] ldrb r0,[sp,3] ldr r2,[r1,20] strb r6,[sp,1] movw r1,%lo(Spi_ConfigPtr+76) ldr.w r7,[r2,r0 lsl 2] movt r1,%hi(Spi_ConfigPtr+76) add r4,r1,r0 lsl 4 ldrh fp,[r7] ldr r5,[r7,8] .L16229: bl SchM_Enter_Spi_UpdateJobState subs r6,fp,0 beq .L11616 movw r10,%lo(Spi_JobStateArray) movt r10,%hi(Spi_JobStateArray) .L11608: ldrh r1,[r5] rsb r1,r1,r1 lsl 2 add r1,r10,r1 lsl 2 ldr r2,[r1,4] cbz r2,.L11615 ldrh r2,[r7] cmp r6,r2 bhs .L11613 lsl r3,r6,16 .L11611: ldrh r1,[r5,-2]! movs r0,0 rsb r1,r1,r1 lsl 2 add r1,r10,r1 lsl 2 str r0,[r1,4] lsrs r1,r3,16 add r3,r3,1<<16 adds r1,r1,1 uxth r1,r1 cmp r1,r2 blo .L11611 .L11613: mov r8,1 .L16231: bl SchM_Exit_Spi_UpdateJobState movs r3,42 movs r2,3 movs r1,0 movs r0,83 .L16233: bl Det_ReportRuntimeError b .L11581 .L11615: str r4,[r1,4] adds r5,r5,2 subs r6,r6,1 uxth r6,r6 cmp r6,0 bne .L11608 .L11616: .L16235: bl SchM_Exit_Spi_UpdateJobState ldrb r2,[sp,1] subs r8,r2,0 beq .L12216 movs r3,42 movs r2,3 movs r1,0 movs r0,83 .L16237: bl Det_ReportRuntimeError b .L11581 .L12216: movs r1,1 str r1,[r4] ldrh r1,[r7] ldr.w lr,[r7,8] mov r6,fp movw r10,%lo(Spi_JobStateArray) movt r10,%hi(Spi_JobStateArray) subs r1,r1,1 strh r1,[r4,12] lsrs r5,r6,3 str lr,[r4,8] beq .L12215 movs r4,3 ldr r3,[r7,8] .L12221: lsls r1,r2,1 adds r0,r2,1 ldrh r12,[r1,r3] add r1,r3,r0 lsl 1 ldrh r1,[r1] rsb r12,r12,r12 lsl 2 rsb r0,r1,r1 lsl 2 adds r1,r2,2 lsls r1,r1,1 str r4,[r10,r12 lsl 2] ldrh r12,[r1,r3] adds r1,r2,3 lsls r1,r1,1 ldrh r1,[r1,r3] str r4,[r10,r0 lsl 2] rsb r12,r12,r12 lsl 2 rsb r0,r1,r1 lsl 2 adds r1,r2,4 lsls r1,r1,1 str r4,[r10,r12 lsl 2] ldrh r12,[r1,r3] adds r1,r2,5 lsls r1,r1,1 ldrh r1,[r1,r3] str r4,[r10,r0 lsl 2] rsb r12,r12,r12 lsl 2 rsb r0,r1,r1 lsl 2 adds r1,r2,6 lsls r1,r1,1 str r4,[r10,r12 lsl 2] ldrh r12,[r1,r3] adds r1,r2,7 lsls r1,r1,1 adds r2,r2,8 subs r5,r5,1 ldrh r1,[r1,r3] rsb r12,r12,r12 lsl 2 str r4,[r10,r0 lsl 2] rsb r1,r1,r1 lsl 2 str r4,[r10,r12 lsl 2] str r4,[r10,r1 lsl 2] bne .L12221 .L12215: ands r1,r6,7 beq .L11621 ldr r3,[r7,8] add r3,r3,r2 lsl 1 .L12218: ldrh r2,[r3],2 movs r0,3 subs r1,r1,1 rsb r2,r2,r2 lsl 2 str r0,[r10,r2 lsl 2] bne .L12218 .L11621: movw r0,%lo(Spi_ConfigPtr) movt r0,%hi(Spi_ConfigPtr) ldr r1,[r0] ldrh r4,[lr] ldr r2,[r1,16] ldr.w r5,[r2,r4 lsl 2] ldrb r1,[r5,28] movw r2,%lo(Spi_ConfigPtr+20) movt r2,%hi(Spi_ConfigPtr+20) rsb r1,r1,r1 lsl 3 add r6,r2,r1 lsl 2 .L16239: bl SchM_Enter_Spi_UpdateAsyncHWUnitQueue ldr r1,[r6,20] cmp r1,1 beq .L11634 ldrsb r2,[r5,16] add r3,r6,r2 lsl 1 ldrh r1,[r3,8]! mov r0,0xffff cmp r1,r0 bne .L11630 lsls r1,r2,1 rsb r0,r4,r4 lsl 2 strh r4,[r1,r6] strh r4,[r3] add r1,r10,r0 lsl 2 mov r3,-1 strh r3,[r1,8] ldrsb r1,[r6,16] cmp r1,r2 blt .L11632 b .L11633 .L11630: rsb r1,r1,r1 lsl 2 rsb r0,r4,r4 lsl 2 add r1,r10,r1 lsl 2 strh r4,[r1,8] strh r4,[r3] mov r3,-1 add r1,r10,r0 lsl 2 strh r3,[r1,8] ldrsb r1,[r6,16] cmp r1,r2 .L11632: it lt strb r2,[r6,16] .L11633: .L16241: bl SchM_Exit_Spi_UpdateAsyncHWUnitQueue b .L11581 .L11634: movs r1,2 str r1,[r6,20] movs r2,1 strh r4,[r6,26] rsb r1,r4,r4 lsl 2 str r2,[r10,r1 lsl 2] movs r1,0 strb r1,[r6,24] .L16243: bl SchM_Exit_Spi_UpdateAsyncHWUnitQueue cpy r0,r5 .L16245: bl Spi_TransferAsyncJob .L11581: uxtb r0,r8 add sp,sp,16 .L16247: pop {r4-fp,pc} .endf Spi_AsyncTransmit ;Ret r8 local ;JobNum fp local ;SeqCfgPtr r7 local ;JobCfgPtr r5 local ;Job lr local ;JobCount r1 local ;SeqCfgPtr [sp,12] local ;JobCfgPtr r4 local ;NumJobsInSequence r9 local ;JobIndex r5 local ;ChannelID r1 local ;NumChannelsInJob r1 local ;ChannelIndex r2 local ;Ret r6 local ;Ret [sp,1] local ;JobCount r6 local ;JobState r1 local ;JobPtr r5 local ;SequenceState r4 local ;HWUnitQueue r6 local ;Job r4 local ;Priority r2 local ;JobListTail r3 local ;Sequence [sp,3] param .section ".ghcalltbl","" .L16222: .data.w .L16221 .endo .L16222 .L16224: .data.w .L16223 .endo .L16224 .L16226: .data.w .L16225 .endo .L16226 .L16228: .data.w .L16227 .endo .L16228 .L16230: .data.w .L16229 .endo .L16230 .L16232: .data.w .L16231 .endo .L16232 .L16234: .data.w .L16233 .endo .L16234 .L16236: .data.w .L16235 .endo .L16236 .L16238: .data.w .L16237 .endo .L16238 .L16240: .data.w .L16239 .endo .L16240 .L16242: .data.w .L16241 .endo .L16242 .L16244: .data.w .L16243 .endo .L16244 .L16246: .data.w .L16245 .endo .L16246 .section ".ghrettbl","" .L16248: .data.w .L16247 .endo .L16248 .section ".mcal_code","ax" .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.9: .endo ..gh.f.f.1.a.1.e.9 Spi_ReadIB:: push {r4-r7,lr} cpy r4,r0 cpy r5,r1 movw r7,%lo(Spi_ConfigPtr) movt r7,%hi(Spi_ConfigPtr) cpy r1,r0 movs r2,4 movs r0,0 .L16938: bl Spi_CheckChannel cpy r6,r0 cmp r0,1 beq .L16251 ldr r0,[r7] ldr r1,[r0,12] ldr.w r0,[r1,r4 lsl 2] ldr r0,[r0] cmp r0,1 it ne cmp r5,0 bne .L16251 movs r6,1 movs r3,10 movs r2,4 movs r1,0 movs r0,83 .L16940: bl Det_ReportError .L16251: cpy r0,r6 cmp r6,1 it eq .L16942: pop {r4-r7,pc} ldr r1,[r7] ldr r1,[r1,12] ldr.w r6,[r1,r4 lsl 2] ldr r1,[r6,16] ldrh r12,[r6,12] ldr r2,[r1,4] movs r3,0 cmp r3,r12 cpy r1,r5 it hs .L16944: pop {r4-r7,pc} .L16265: ldrb r12,[r2],1 strb r12,[r1],1 ldrh r12,[r6,12] add r3,r3,1<<16 cmp r12,r3 lsr 16 bhi .L16265 .L16946: pop {r4-r7,pc} .endf Spi_ReadIB ;Ret r0 local ;Index r3 local ;ChannelCfgPtr r6 local ;DataBufferSrc r2 local ;DataBufferDes r1 local ;Ret r6 local ;Channel r4 param ;DataBufferPtr r5 param .section ".ghcalltbl","" .L16939: .data.w .L16938 .endo .L16939 .L16941: .data.w .L16940 .endo .L16941 .section ".ghrettbl","" .L16943: .data.w .L16942 .endo .L16943 .L16945: .data.w .L16944 .endo .L16945 .L16947: .data.w .L16946 .endo .L16947 .section ".mcal_code","ax" .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.10: .endo ..gh.f.f.1.a.1.e.10 Spi_SetupEB:: push {r4-r8,r10-fp,lr} sub sp,sp,4 cpy r7,r0 mov fp,r1 mov r10,r2 cpy r5,r3 movw r6,%lo(Spi_ConfigPtr) movt r6,%hi(Spi_ConfigPtr) cpy r1,r0 movs r2,5 movs r0,0 .L17553: bl Spi_CheckChannel cpy r4,r0 cmp r0,1 beq .L16950 ldr r0,[r6] ldr r1,[r0,12] ldr.w r0,[r1,r7 lsl 2] ldr r1,[r0] cbnz r1,.L16955 mov r8,1 movs r3,10 movs r2,5 movs r0,83 .L17555: bl Det_ReportError b .L16948 .L16955: ldrh r1,[r0,12] movs r4,0 cmp r5,r1 bhi .L16965 cbz r5,.L16965 ldrb r0,[r0,4] sub r1,r0,9 cmp r1,8 bhs .L16962 tst r5,1 beq .L16950 b .L16965 .L16962: subs r0,r0,17 cmp r0,16 bhs .L16950 tst r5,3 beq .L16950 .L16965: movs r4,1 movs r3,13 movs r2,5 movs r1,0 movs r0,83 .L17557: bl Det_ReportError .L16950: mov r8,r4 cmp r4,1 beq .L16948 ldr r0,[r6] ldr r0,[r0,12] movw r1,%lo(Spi_ChannelStateArray) movt r1,%hi(Spi_ChannelStateArray) ldr.w r0,[r0,r7 lsl 2] add r4,r1,r7 lsl 2 mov r1,fp ldr r0,[r0,16] stm r0,{r1,r10} strh r5,[r4,2] .L17559: bl SchM_Enter_Spi_UpdateChannelState ldrb r0,[r4] cmp fp,0 ite ne and r0,r0,254 orr r0,r0,1 cmp r10,0 beq .L16974 and r0,r0,253 strb r0,[r4] .L17561: bl SchM_Exit_Spi_UpdateChannelState b .L16948 .L16974: orr r0,r0,2 strb r0,[r4] .L17563: bl SchM_Exit_Spi_UpdateChannelState .L16948: uxtb r0,r8 add sp,sp,4 .L17565: pop {r4-r8,r10-fp,pc} .endf Spi_SetupEB ;Ret r8 local ;ChannelState r4 local ;Ret r4 local ;Ret r4 local ;Channel r7 param ;SrcDataBufferPtr fp param ;DesDataBufferPtr r10 param ;Length r5 param .section ".ghcalltbl","" .L17554: .data.w .L17553 .endo .L17554 .L17556: .data.w .L17555 .endo .L17556 .L17558: .data.w .L17557 .endo .L17558 .L17560: .data.w .L17559 .endo .L17560 .L17562: .data.w .L17561 .endo .L17562 .L17564: .data.w .L17563 .endo .L17564 .section ".ghrettbl","" .L17566: .data.w .L17565 .endo .L17566 .section ".mcal_code","ax" .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 .assert 0x0 + (Spi_SyncHWUnitsBusyStatus - Spi_ConfigPtr) +0 == 140 .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.11: .endo ..gh.f.f.1.a.1.e.11 Spi_GetStatus:: push {r4-r5,lr} movw r5,%lo(Spi_ConfigPtr) movt r5,%hi(Spi_ConfigPtr) ldr r0,[r5] movs r4,r0 bne .L18020 movs r3,26 movs r2,6 cpy r1,r0 movs r0,83 .L18511: bl Det_ReportError b .L17567 .L18020: ldr r0,[r0,28] ldr r1,[r0] movs r4,1 cbz r1,.L18025 ldr r1,[r1,8] cbnz r1,.L18025 ldr.w r1,[r5,140] cmp r1,1 itt ne ldr r1,[r5,40] cmp r1,2 beq .L18029 .L18025: ldr r0,[r0,4] cbz r0,.L17567 ldr r0,[r0,8] cbnz r0,.L17567 ldr.w r0,[r5,144] cmp r0,1 itt ne ldr r0,[r5,68] cmp r0,2 .L18029: it eq mov r4,2 .L17567: cpy r0,r4 .L18513: pop {r4-r5,pc} .endf Spi_GetStatus ;Status r4 local .section ".mcal_bss","awb" Spi_SyncHWUnitsBusyStatus: .space 8 .endo Spi_SyncHWUnitsBusyStatus .section ".ghcalltbl","" .L18512: .data.w .L18511 .endo .L18512 .section ".ghrettbl","" .L18514: .data.w .L18513 .endo .L18514 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.12: .endo ..gh.f.f.1.a.1.e.12 Spi_GetJobResult:: push {r4,lr} movw r2,%lo(Spi_ConfigPtr) movt r2,%hi(Spi_ConfigPtr) ldr r1,[r2] movs r4,2 cbnz r1,.L18521 movs r3,26 movs r2,7 movs r0,83 .L18924: bl Det_ReportError cpy r0,r4 .L18926: pop {r4,pc} .L18521: ldrh r2,[r1,4] cmp r0,r2 bls .L18523 movs r3,11 movs r2,7 movs r1,0 movs r0,83 .L18928: bl Det_ReportError cpy r0,r4 .L18930: pop {r4,pc} .L18523: ldr r2,[r1,16] ldr.w r1,[r2,r0 lsl 2] cbz r1,.L18526 ldr r1,[r1,20] cbz r1,.L18531 .L18526: movs r3,15 movs r2,7 movs r1,0 movs r0,83 .L18932: bl Det_ReportError cpy r0,r4 .L18934: pop {r4,pc} .L18531: rsb r0,r0,r0 lsl 2 movw r1,%lo(Spi_JobStateArray) movt r1,%hi(Spi_JobStateArray) ldr.w r0,[r1,r0 lsl 2] .L18936: pop {r4,pc} .endf Spi_GetJobResult ;JobResult r4 local ;Job r0 param .section ".ghcalltbl","" .L18925: .data.w .L18924 .endo .L18925 .section ".ghrettbl","" .L18927: .data.w .L18926 .endo .L18927 .section ".ghcalltbl","" .L18929: .data.w .L18928 .endo .L18929 .section ".ghrettbl","" .L18931: .data.w .L18930 .endo .L18931 .section ".ghcalltbl","" .L18933: .data.w .L18932 .endo .L18933 .section ".ghrettbl","" .L18935: .data.w .L18934 .endo .L18935 .L18937: .data.w .L18936 .endo .L18937 .section ".mcal_code","ax" .assert 0x0 + (Spi_SequenceStateArray - Spi_ConfigPtr) +0 == 76 .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.13: .endo ..gh.f.f.1.a.1.e.13 Spi_GetSequenceResult:: push {r4-r5,lr} movw r5,%lo(Spi_ConfigPtr) movt r5,%hi(Spi_ConfigPtr) ldr r1,[r5] movs r4,2 cbnz r1,.L18944 movs r3,26 movs r2,8 movs r0,83 .L19340: bl Det_ReportError cpy r0,r4 .L19342: pop {r4-r5,pc} .L18944: ldrb r2,[r1,6] cmp r0,r2 bls .L18946 movs r3,12 movs r2,8 movs r1,0 movs r0,83 .L19344: bl Det_ReportError cpy r0,r4 .L19346: pop {r4-r5,pc} .L18946: ldr r2,[r1,20] ldr.w r1,[r2,r0 lsl 2] cbz r1,.L18949 ldr r1,[r1,4] cbz r1,.L18954 .L18949: movs r3,15 movs r2,8 movs r1,0 movs r0,83 .L19348: bl Det_ReportError cpy r0,r4 .L19350: pop {r4-r5,pc} .L18954: lsls r0,r0,4 add r1,r5,76 ldr r0,[r0,r1] .L19352: pop {r4-r5,pc} .endf Spi_GetSequenceResult ;SequenceResult r4 local ;Sequence r0 param .section ".ghcalltbl","" .L19341: .data.w .L19340 .endo .L19341 .section ".ghrettbl","" .L19343: .data.w .L19342 .endo .L19343 .section ".ghcalltbl","" .L19345: .data.w .L19344 .endo .L19345 .section ".ghrettbl","" .L19347: .data.w .L19346 .endo .L19347 .section ".ghcalltbl","" .L19349: .data.w .L19348 .endo .L19349 .section ".ghrettbl","" .L19351: .data.w .L19350 .endo .L19351 .L19353: .data.w .L19352 .endo .L19353 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.14: .endo ..gh.f.f.1.a.1.e.14 Spi_GetVersionInfo:: movs r1,r0 bne .L19356 movs r3,16 movs r2,9 movs r0,83 .L19454: b Det_ReportError .L19356: movs r1,179 strh r1,[r0] movs r1,83 strh r1,[r0,2] movs r1,1 strb r1,[r0,4] movs r1,2 strb r1,[r0,5] movs r1,0 strb r1,[r0,6] .L19456: ret .endf Spi_GetVersionInfo ;versioninfo r0 param .section ".bss","awb" .L19412: .endo .L19412 .section ".ghtailcalltbl","" .L19455: .data.w .L19454 .endo .L19455 .section ".ghrettbl","" .L19457: .data.w .L19456 .endo .L19457 .section ".mcal_code","ax" .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 .assert 0x0 + (Spi_SequenceStateArray - Spi_ConfigPtr) +0 == 76 .assert 0x0 + (Spi_SyncHWUnitsBusyStatus - Spi_ConfigPtr) +0 == 140 .assert 0x0 + (Spi_SeqUsedHWUnits - Spi_ConfigPtr) +0 == 4 ..gh.f.f.1.a.1.e.15: .endo ..gh.f.f.1.a.1.e.15 Spi_SyncTransmit:: push {r4-fp,lr} sub sp,sp,76 cpy r5,r0 movw r7,%lo(Spi_ConfigPtr) movt r7,%hi(Spi_ConfigPtr) cpy r1,r0 movs r2,10 strb r0,[sp,7] movs r0,0 .L26449: bl Spi_CheckSequence cpy r4,r0 cmp r0,1 beq .L19460 ldr.w lr,[r7] ldr.w r2,[lr,20] ldr.w r1,[r2,r5 lsl 2] ldrh r0,[r1] mov r10,0 strh r0,[sp,42] cmp r10,r0 bhs .L19460 ldr r0,[r1,8] str r0,[sp,48] ldr.w r0,[lr,28] ldr.w fp,[lr,16] str r0,[sp,44] .L19464: ldr r0,[sp,48] lsl r1,r10,1 ldrh r2,[r1,r0] ldr.w r1,[fp,r2 lsl 2] ldr r0,[sp,44] ldrb r3,[r1,28] ldr.w r3,[r0,r3 lsl 2] ldr r3,[r3,4] cbnz r3,.L19466 mov r8,1 movs r3,14 movs r2,10 movs r1,0 movs r0,83 .L26451: bl Det_ReportError b .L19458 .L19466: cbnz r4,.L19460 ldrb r3,[r1] cpy r1,r4 cmp r4,r3 bhs .L19475 ldr.w r2,[fp,r2 lsl 2] movw r5,%lo(Spi_ChannelStateArray) movt r5,%hi(Spi_ChannelStateArray) ldr.w r12,[lr,12] ldr r6,[r2,4] .L19468: ldrb r2,[r6,r1] ldr.w r0,[r12,r2 lsl 2] ldr r0,[r0] cmp r0,1 bne .L19472 add r2,r5,r2 lsl 2 ldrh r2,[r2,2] cbnz r2,.L19472 movs r3,91 movs r2,10 cpy r1,r4 movs r0,83 .L26453: bl Det_ReportError mov r8,1 b .L19458 .L19472: adds r1,r1,1 uxtb r1,r1 cmp r1,r3 blo .L19468 .L19475: ldrh r0,[sp,42] add r10,r10,1 uxth r10,r10 cmp r10,r0 blo .L19464 .L19460: mov r8,r4 cmp r4,1 beq .L19458 ldr r1,[r7] ldrb r5,[sp,7] ldr r2,[r1,20] ldr.w r4,[r2,r5 lsl 2] str r4,[sp,64] ldrh r4,[r4] strh r4,[sp,70] .L26455: bl SchM_Enter_Spi_UpdateSyncHWUnitStatus adds r2,r7,4 movw r4,%lo(Spi_SyncHWUnitsBusyStatus) movt r4,%hi(Spi_SyncHWUnitsBusyStatus) ldr.w r1,[r2,r5 lsl 2] ldr r2,[r4] tst r2,r1 it ne mov r8,1 movw r0,%lo(Spi_SyncHWUnitsBusyStatus) movt r0,%hi(Spi_SyncHWUnitsBusyStatus) ldr r2,[r0,4] tst r1,r2 lsl 1 it ne mov r8,1 uxtb r0,r8 cmp r0,1 beq .L19486 ldrb r0,[sp,7] ldrh fp,[sp,70] add r1,r7,76 add r2,r1,r0 lsl 4 str r2,[sp,72] movs r1,1 str r1,[r2] movs r2,0 str r2,[sp,56] lsrs r10,fp,3 beq .L21178 ldr r0,[sp,64] ldr r1,[r7] ldr r4,[r0,8] movw r6,%lo(Spi_SyncHWUnitsBusyStatus) movt r6,%hi(Spi_SyncHWUnitsBusyStatus) mov r12,1 lsl r0,r10,3 str r0,[sp,56] ldr r5,[r1,16] .L21184: ldrh r2,[r4],16 ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-14] ldrb r1,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-12] ldrb r0,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-10] ldrb lr,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-8] str r12,[r6,r1 lsl 2] ldrb r1,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-6] str r12,[r6,r0 lsl 2] str r12,[r6,lr lsl 2] ldrb lr,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-4] ldrb r0,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-2] subs r10,r10,1 ldrb r8,[r3,28] ldr.w r3,[r5,r2 lsl 2] str r12,[r6,r1 lsl 2] str r12,[r6,lr lsl 2] ldrb r1,[r3,28] str r12,[r6,r0 lsl 2] str r12,[r6,r8 lsl 2] str r12,[r6,r1 lsl 2] bne .L21184 .L21178: ands r4,fp,7 beq .L19488 ldr r1,[r7] ldr r0,[sp,64] ldr r5,[r1,16] ldr r1,[sp,56] ldr r2,[r0,8] add r6,r2,r1 lsl 1 .L21181: ldrh r2,[r6],2 ldr.w r3,[r5,r2 lsl 2] ldrb r1,[r3,28] movw r0,%lo(Spi_SyncHWUnitsBusyStatus) movt r0,%hi(Spi_SyncHWUnitsBusyStatus) movs r2,1 subs r4,r4,1 str r2,[r0,r1 lsl 2] bne .L21181 .L19488: .L26457: bl SchM_Exit_Spi_UpdateSyncHWUnitStatus ldr r0,[sp,64] ldrh r1,[r0] ldr.w r9,[r0,8] strh r1,[sp,40] cmp r1,0 beq .L19492 .L19495: ldr r3,[r7] ldrh r1,[r9] ldr r3,[r3,16] rsb r2,r1,r1 lsl 2 ldr.w r6,[r3,r1 lsl 2] movw r1,%lo(Spi_JobStateArray) movt r1,%hi(Spi_JobStateArray) add r0,r1,r2 lsl 2 str r0,[sp,52] movs r2,1 ldrb r1,[r6,28] str r2,[r0] movw r0,%lo(Spi_HWUnitQueueArray) movt r0,%hi(Spi_HWUnitQueueArray) movs r2,2 rsb r1,r1,r1 lsl 3 add r1,r0,r1 lsl 2 str r2,[r1,20] ldr r2,[r6,32] ldr r1,[r6,12] movs r5,0 cmp r1,0 ldr.w r10,[r2] it ne .L26459: blx r1 ldrb fp,[r6] cpy r4,r5 lsrs r0,fp,3 str r0,[sp,28] str fp,[sp,36] beq .L21025 .L21037: ldr r2,[r7] ldr r1,[r6,4] ldr r2,[r2,12] ldrb r1,[r1,r4] sub r8,fp,1 str r8,[sp,24] ldr.w r0,[r2,r1 lsl 2] movs r1,1 str r1,[sp] cmp r4,0 ite eq mov r2,1 mov r2,0 cmp r4,r8 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26461: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r2,[r7] ldr r1,[r6,4] adds r4,r4,1 ldr r2,[r2,12] ldrb r1,[r1,r4] ldr.w r0,[r2,r1 lsl 2] mov r1,1 str r1,[sp] ite eq mov r2,1 mov r2,0 cmp r4,r8 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26463: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r2,[r7] ldr r1,[r6,4] adds r4,r4,1 ldr r2,[r2,12] ldrb r1,[r1,r4] sub r8,fp,1 str r8,[sp,20] ldr.w r0,[r2,r1 lsl 2] mov r1,1 str r1,[sp] ite eq mov r2,1 mov r2,0 cmp r4,r8 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26465: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r2,[r7] ldr r1,[r6,4] adds r4,r4,1 ldr r2,[r2,12] ldrb r1,[r1,r4] ldr.w r0,[r2,r1 lsl 2] mov r1,1 str r1,[sp] ite eq mov r2,1 mov r2,0 cmp r4,r8 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26467: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r2,[r7] ldr r1,[r6,4] adds r4,r4,1 ldr r2,[r2,12] ldrb r1,[r1,r4] sub r8,fp,1 str r8,[sp,12] ldr.w r0,[r2,r1 lsl 2] mov r1,1 str r1,[sp] ite eq mov r2,1 mov r2,0 cmp r4,r8 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26469: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r2,[r7] ldr r1,[r6,4] adds r4,r4,1 ldr r2,[r2,12] ldrb r1,[r1,r4] ldr.w r0,[r2,r1 lsl 2] mov r1,1 str r1,[sp] ite eq mov r2,1 mov r2,0 cmp r4,r8 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26471: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r2,[r7] ldr r1,[r6,4] adds r4,r4,1 ldr r2,[r2,12] ldrb r1,[r1,r4] sub r8,fp,1 str r8,[sp,16] ldr.w r0,[r2,r1 lsl 2] mov r1,1 str r1,[sp] ite eq mov r2,1 mov r2,0 cmp r4,r8 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26473: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r2,[r7] ldr r1,[r6,4] adds r4,r4,1 ldr r2,[r2,12] ldrb r1,[r1,r4] ldr.w r0,[r2,r1 lsl 2] mov r1,1 str r1,[sp] ite eq mov r2,1 mov r2,0 cmp r4,r8 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26475: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r0,[sp,28] adds r4,r4,1 subs r0,r0,1 str r0,[sp,28] bne .L21037 .L21025: ldr r0,[sp,36] ands r0,r0,7 str r0,[sp,8] beq .L19507 .L21030: ldr r2,[r7] ldr r1,[r6,4] ldr r2,[r2,12] ldrb r1,[r1,r4] ldr.w r0,[r2,r1 lsl 2] movs r1,1 str r1,[sp] cmp r4,0 ite eq mov r2,1 mov r2,0 sub r1,fp,1 cmp r4,r1 ite eq mov r3,1 mov r3,0 mov r1,r10 .L26477: bl Spi_Drvw_TransmitChannel subs r5,r0,0 bne .L19507 ldr r0,[sp,8] adds r4,r4,1 subs r0,r0,1 str r0,[sp,8] bne .L21030 .L19507: ldrb r1,[r6,28] movw r0,%lo(Spi_HWUnitQueueArray) movt r0,%hi(Spi_HWUnitQueueArray) movs r2,1 subs r4,r5,0 rsb r1,r1,r1 lsl 3 add r1,r0,r1 lsl 2 str r2,[r1,20] beq .L19509 ldrh r0,[sp,40] movw r5,%lo(Spi_JobStateArray) movt r5,%hi(Spi_JobStateArray) lsl r10,r0,16 .L19511: ldr r2,[r7] ldrh r1,[r9] ldr r3,[r2,16] ldr.w r0,[r3,r1 lsl 2] rsbs r1,r1,r1 lsl 2 movs r3,2 str r3,[r5,r1 lsl 2] ldr r1,[r0,8] cmp r1,0 it ne .L26479: blx r1 add r9,r9,2 sub r10,r10,1<<16 lsrs r1,r10,16 bne .L19511 movs r0,1 strh r0,[sp,40] .L19516: ldrh r0,[sp,40] add r9,r9,2 subs r1,r0,1 strh r1,[sp,40] lsls r0,r1,16 bne .L19495 .L19492: subs r8,r4,0 it ne mov r4,2 ldr r0,[sp,72] str r4,[r0] .L26481: bl SchM_Enter_Spi_UpdateSyncHWUnitStatus movs r0,0 ldrh fp,[sp,70] str r0,[sp,60] lsrs r10,fp,3 beq .L21187 ldr r0,[sp,64] ldr r1,[r7] ldr r4,[r0,8] movw r6,%lo(Spi_SyncHWUnitsBusyStatus) movt r6,%hi(Spi_SyncHWUnitsBusyStatus) mov r12,0 lsl r0,r10,3 str r0,[sp,60] ldr r5,[r1,16] .L21193: ldrh r2,[r4],16 ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-14] ldrb r1,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-12] ldrb r0,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-10] ldrb lr,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-8] str r12,[r6,r1 lsl 2] ldrb r1,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-6] str r12,[r6,r0 lsl 2] str r12,[r6,lr lsl 2] ldrb lr,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-4] ldrb r0,[r3,28] ldr.w r3,[r5,r2 lsl 2] ldrh r2,[r4,-2] subs r10,r10,1 ldrb r9,[r3,28] ldr.w r3,[r5,r2 lsl 2] str r12,[r6,r1 lsl 2] str r12,[r6,lr lsl 2] ldrb r1,[r3,28] str r12,[r6,r0 lsl 2] str r12,[r6,r9 lsl 2] str r12,[r6,r1 lsl 2] bne .L21193 .L21187: ands r4,fp,7 beq .L19522 ldr r1,[r7] ldr r0,[sp,64] ldr r5,[r1,16] ldr r1,[sp,60] ldr r2,[r0,8] add r6,r2,r1 lsl 1 .L21190: ldrh r2,[r6],2 ldr.w r3,[r5,r2 lsl 2] ldrb r1,[r3,28] movw r0,%lo(Spi_SyncHWUnitsBusyStatus) movt r0,%hi(Spi_SyncHWUnitsBusyStatus) subs r4,r4,1 str r10,[r0,r1 lsl 2] bne .L21190 .L19522: .L26483: bl SchM_Exit_Spi_UpdateSyncHWUnitStatus ldr r0,[sp,64] ldr r1,[r0,12] cbz r1,.L19458 .L26485: blx r1 b .L19458 .L19509: ldr r0,[sp,52] ldr r1,[r6,8] str r5,[r0] cmp r1,0 beq .L19516 .L26487: blx r1 ldrh r0,[sp,40] add r9,r9,2 subs r1,r0,1 strh r1,[sp,40] lsls r0,r1,16 bne .L19495 b .L19492 .L19486: .L26489: bl SchM_Exit_Spi_UpdateSyncHWUnitStatus movs r3,58 movs r2,10 movs r1,0 movs r0,83 .L26491: bl Det_ReportRuntimeError .L19458: uxtb r0,r8 add sp,sp,76 .L26493: pop {r4-fp,pc} .endf Spi_SyncTransmit ;SequenceState [sp,72] local ;Ret r8 local ;HWUnit r1 local ;SeqCfgPtr [sp,64] local ;JobNum [sp,70] local ;Job r2 local ;JobCfgPtr r3 local ;NumJobsInSequence [sp,42] local ;Job r2 local ;JobIndex r10 local ;ChannelID r2 local ;ChannelIndex r1 local ;ChannelNum r3 local ;Ret r4 local ;JobsCount [sp,40] local ;JobIndexList r9 local ;Job r1 local ;JobState [sp,52] local ;JobCfgPtr r6 local ;Ret r4 local ;ChannelID r1 local ;NumChannelsInJob fp local ;ExternalDeviceConfig r10 local ;IsFirstChannel r2 local ;IsLastChannel r3 local ;Ret r5 local ;Sequence [sp,7] param .section ".ghcalltbl","" .L26450: .data.w .L26449 .endo .L26450 .L26452: .data.w .L26451 .endo .L26452 .L26454: .data.w .L26453 .endo .L26454 .L26456: .data.w .L26455 .endo .L26456 .L26458: .data.w .L26457 .endo .L26458 .L26460: .data.w .L26459 .endo .L26460 .L26462: .data.w .L26461 .endo .L26462 .L26464: .data.w .L26463 .endo .L26464 .L26466: .data.w .L26465 .endo .L26466 .L26468: .data.w .L26467 .endo .L26468 .L26470: .data.w .L26469 .endo .L26470 .L26472: .data.w .L26471 .endo .L26472 .L26474: .data.w .L26473 .endo .L26474 .L26476: .data.w .L26475 .endo .L26476 .L26478: .data.w .L26477 .endo .L26478 .L26480: .data.w .L26479 .endo .L26480 .L26482: .data.w .L26481 .endo .L26482 .L26484: .data.w .L26483 .endo .L26484 .L26486: .data.w .L26485 .endo .L26486 .L26488: .data.w .L26487 .endo .L26488 .L26490: .data.w .L26489 .endo .L26490 .L26492: .data.w .L26491 .endo .L26492 .section ".ghrettbl","" .L26494: .data.w .L26493 .endo .L26494 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.16: .endo ..gh.f.f.1.a.1.e.16 Spi_GetHWUnitStatus:: push {r4-r5,lr} cpy r5,r0 movs r4,0 cpy r1,r0 movs r2,11 cpy r0,r4 .L26616: bl Spi_CheckHWUnit cmp r0,1 beq .L26497 rsb r0,r5,r5 lsl 3 movw r1,%lo(Spi_HWUnitQueueArray) movt r1,%hi(Spi_HWUnitQueueArray) add r0,r1,r0 lsl 2 ldr r4,[r0,20] .L26497: cpy r0,r4 .L26618: pop {r4-r5,pc} .endf Spi_GetHWUnitStatus ;Status r4 local ;HWUnit r5 param .section ".ghcalltbl","" .L26617: .data.w .L26616 .endo .L26617 .section ".ghrettbl","" .L26619: .data.w .L26618 .endo .L26619 .section ".mcal_code","ax" .assert 0x0 + (Spi_SequenceStateArray - Spi_ConfigPtr) +0 == 76 .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.17: .endo ..gh.f.f.1.a.1.e.17 Spi_Cancel:: push {r4,lr} movw r4,%lo(Spi_ConfigPtr) movt r4,%hi(Spi_ConfigPtr) ldr r1,[r4] cbnz r1,.L26626 movs r3,26 movs r2,12 movs r0,83 pop {r4,lr} .L26912: b Det_ReportError .L26626: ldrb r2,[r1,6] cmp r0,r2 bls .L26628 movs r3,12 cpy r2,r3 movs r1,0 movs r0,83 pop {r4,lr} .L26914: b Det_ReportError .L26628: ldr r2,[r1,20] ldr.w r1,[r2,r0 lsl 2] cbz r1,.L26631 ldr r1,[r1,4] cbz r1,.L26636 .L26631: movs r3,15 movs r2,12 movs r1,0 movs r0,83 pop {r4,lr} .L26916: b Det_ReportError .L26636: lsls r0,r0,4 add r1,r4,76 movs r2,3 str r2,[r0,r1] .L26918: pop {r4,pc} .endf Spi_Cancel ;SeqCfgPtr r1 local ;Sequence r0 param .section ".ghtailcalltbl","" .L26913: .data.w .L26912 .endo .L26913 .L26915: .data.w .L26914 .endo .L26915 .L26917: .data.w .L26916 .endo .L26917 .section ".ghrettbl","" .L26919: .data.w .L26918 .endo .L26919 .section ".mcal_code","ax" .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 ..gh.f.f.1.a.1.e.18: .endo ..gh.f.f.1.a.1.e.18 Spi_SetAsyncMode:: push {r4-r6,lr} cpy r6,r0 movw r5,%lo(Spi_ConfigPtr) movt r5,%hi(Spi_ConfigPtr) ldr r0,[r5] movs r1,r0 bne .L28077 movs r4,1 movs r3,26 movs r2,13 movs r0,83 .L28668: bl Det_ReportError b .L26920 .L28077: ldr r2,[r0,28] ldr r1,[r2] movs r4,0 cbz r1,.L28083 ldr r0,[r1,8] cbnz r0,.L28083 ldr r0,[r5,40] cmp r0,2 itt eq ldr r0,[r1,4] cmp r0,0 beq .L26936 .L28083: ldr r0,[r2,4] cbz r0,.L26925 ldr r3,[r0,8] cbnz r3,.L26925 ldr r3,[r5,68] cmp r3,2 itt eq ldr r0,[r0,4] cmp r0,0 .L26936: it eq mov r4,1 .L26925: cmp r4,1 beq .L26920 cbz r1,.L28072 ldr r0,[r1,8] cbnz r0,.L28072 ldr r0,[r1,4] cbnz r0,.L28072 movs r1,r6 it ne mov r1,1 .L28670: bl Spi_Drvw_SetAsyncMode ldr r0,[r5] ldr r2,[r0,28] .L28072: ldr r0,[r2,4] cbz r0,.L26920 ldr r1,[r0,8] cbnz r1,.L26920 ldr r0,[r0,4] cbnz r0,.L26920 movs r1,r6 it ne mov r1,1 movs r0,1 .L28672: bl Spi_Drvw_SetAsyncMode .L26920: cpy r0,r4 .L28674: pop {r4-r6,pc} .endf Spi_SetAsyncMode ;Ret r4 local ;Ret r4 local ;Mode r6 param .section ".ghcalltbl","" .L28669: .data.w .L28668 .endo .L28669 .L28671: .data.w .L28670 .endo .L28671 .L28673: .data.w .L28672 .endo .L28673 .section ".ghrettbl","" .L28675: .data.w .L28674 .endo .L28675 .section ".mcal_code","ax" .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.19: .endo ..gh.f.f.1.a.1.e.19 Spi_SetHWUnitAsyncMode:: push {r4-r6,lr} cpy r5,r0 cpy r6,r1 cpy r1,r0 movs r2,96 movs r0,0 .L28935: bl Spi_CheckHWUnit cpy r4,r0 cmp r0,1 beq .L28678 movw r0,%lo(Spi_ConfigPtr) movt r0,%hi(Spi_ConfigPtr) ldr r1,[r0] ldr r2,[r1,28] ldr.w r1,[r2,r5 lsl 2] ldr r1,[r1,4] cbz r1,.L28680 movs r4,1 movs r3,26 movs r2,96 movs r1,0 movs r0,83 .L28937: bl Det_ReportError cpy r0,r4 .L28939: pop {r4-r6,pc} .L28680: rsb r1,r5,r5 lsl 3 add r0,r0,r1 lsl 2 ldr r0,[r0,40] cmp r0,2 itt eq mov r0,1 .L28941: pop {r4-r6,pc} cpy r0,r5 movs r1,r6 bne .L28686 .L28943: bl Spi_Drvw_SetAsyncMode cpy r0,r4 .L28945: pop {r4-r6,pc} .L28686: movs r1,1 .L28947: bl Spi_Drvw_SetAsyncMode .L28678: cpy r0,r4 .L28949: pop {r4-r6,pc} .endf Spi_SetHWUnitAsyncMode ;Ret r4 local ;HWUnit r5 param ;Mode r6 param .section ".ghcalltbl","" .L28936: .data.w .L28935 .endo .L28936 .L28938: .data.w .L28937 .endo .L28938 .section ".ghrettbl","" .L28940: .data.w .L28939 .endo .L28940 .L28942: .data.w .L28941 .endo .L28942 .section ".ghcalltbl","" .L28944: .data.w .L28943 .endo .L28944 .section ".ghrettbl","" .L28946: .data.w .L28945 .endo .L28946 .section ".ghcalltbl","" .L28948: .data.w .L28947 .endo .L28948 .section ".ghrettbl","" .L28950: .data.w .L28949 .endo .L28950 .section ".mcal_code","ax" .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.20: .endo ..gh.f.f.1.a.1.e.20 Spi_MainFunction_Handling:: push {r4,lr} movw r4,%lo(Spi_ConfigPtr) movt r4,%hi(Spi_ConfigPtr) ldr r0,[r4] cmp r0,0 it eq .L29574: pop {r4,pc} ldr r0,[r0,28] ldr r1,[r0] cbz r1,.L29322 ldr r1,[r1,8] cbnz r1,.L29322 ldr r1,[r4,40] cmp r1,2 bne .L29322 movs r0,0 .L29576: bl Spi_Drvw_PollAsyncTransmit ldr r0,[r4] ldr r0,[r0,28] .L29322: ldr r0,[r0,4] cmp r0,0 it eq .L29578: pop {r4,pc} ldr r0,[r0,8] cmp r0,0 it ne .L29580: pop {r4,pc} ldr r0,[r4,68] cmp r0,2 it ne .L29582: pop {r4,pc} movs r0,1 pop {r4,lr} .L29584: b Spi_Drvw_PollAsyncTransmit .endf Spi_MainFunction_Handling .section ".ghrettbl","" .L29575: .data.w .L29574 .endo .L29575 .section ".ghcalltbl","" .L29577: .data.w .L29576 .endo .L29577 .section ".ghrettbl","" .L29579: .data.w .L29578 .endo .L29579 .L29581: .data.w .L29580 .endo .L29581 .L29583: .data.w .L29582 .endo .L29583 .section ".ghtailcalltbl","" .L29585: .data.w .L29584 .endo .L29585 .section ".mcal_code","ax" .assert 0x0 + (Spi_ConfigPtr - Spi_ConfigPtr) +0 == 0 .assert 0x0 + (Spi_HWUnitQueueArray - Spi_ConfigPtr) +0 == 20 ..gh.f.f.1.a.1.e.21: .endo ..gh.f.f.1.a.1.e.21 Spi_ChannelEndCallback:: push {r4-fp,lr} movw r6,%lo(Spi_ConfigPtr) movt r6,%hi(Spi_ConfigPtr) ldr r7,[r6] sub sp,sp,16 add r10,r6,20 rsb r0,r0,r0 lsl 3 add r2,r10,r0 lsl 2 ldrh r0,[r2,26] ldr r3,[r7,16] cmp r1,1 ldr.w fp,[r3,r0 lsl 2] beq .L29590 movs r5,2 ldrb r2,[fp,28] ldr.w r7,[fp,24] strb r2,[sp,7] rsb r0,r2,r2 lsl 3 add r4,r10,r0 lsl 2 .L32384: bl SchM_Enter_Spi_UpdateJobState ldr r0,[r7] cbnz r0,.L29601 .L29640: .L32386: bl SchM_Exit_Spi_UpdateJobState b .L29586 .L29590: ldrb r1,[r2,24] ldrb r3,[fp] movs r5,0 adds r0,r1,1 cmp r0,r3 bhs .L29600 strb r0,[r2,24] uxtb r12,r0 str r5,[sp] subs r0,r3,1 cmp r12,r0 ldr.w r0,[fp,32] ldr r1,[r0] ldr.w r0,[fp,4] cpy r2,r5 ldr r5,[r7,12] ldrb r0,[r0,r12] ite eq mov r3,1 mov r3,0 ldr.w r0,[r5,r0 lsl 2] .L32388: bl Spi_Drvw_TransmitChannel b .L29586 .L29600: ldrb r2,[fp,28] ldr.w r7,[fp,24] strb r2,[sp,7] rsb r0,r2,r2 lsl 3 add r4,r10,r0 lsl 2 .L32390: bl SchM_Enter_Spi_UpdateJobState ldr r0,[r7] cmp r0,0 beq .L29640 .L29601: ldr r2,[r7,4] cmp r2,0 beq .L29640 str r5,[r7] movs r0,0 ldr.w r9,[fp,20] ldr.w r8,[r2,4] str r0,[r7,4] cpy r5,r2 .L32392: bl SchM_Exit_Spi_UpdateJobState ldr.w r0,[fp,8] cmp r0,0 it ne .L32394: blx r0 ldr r0,[r5] movw fp,%lo(Spi_JobStateArray) movt fp,%hi(Spi_JobStateArray) cmp r0,3 beq .L30161 ldr r1,[r7] cmp r1,2 bne .L29608 str r1,[r5] ldrh r0,[r8] ldrh r1,[r5,12] subs r1,r0,r1 uxth r1,r1 sub r12,r0,r1 cmp r1,r0 it hs mov r12,0 lsrs r7,r12,3 beq .L30160 b .L30267 .L29608: cmp r0,2 bne .L29615 .L30161: ldrh r0,[r8] ldrh r1,[r5,12] subs r1,r0,r1 uxth r1,r1 sub r12,r0,r1 cmp r1,r0 it hs mov r12,0 lsrs r7,r12,3 beq .L30160 .L30267: movs r6,0 lsls r5,r1,16 ldr.w r2,[r8,8] .L30166: lsrs r3,r5,16 lsls r0,r3,1 add lr,r3,1 lsl lr,lr,1 adds r1,r3,2 lsls r1,r1,1 ldrh r10,[r0,r2] ldrh lr,[lr,r2] ldrh r1,[r1,r2] rsb r10,r10,r10 lsl 2 rsb lr,lr,lr lsl 2 rsb r1,r1,r1 lsl 2 add r10,fp,r10 lsl 2 str r6,[r10,4] add r10,fp,r1 lsl 2 adds r1,r3,3 lsls r1,r1,1 ldrh r1,[r1,r2] add lr,fp,lr lsl 2 str r6,[lr,4] rsb r1,r1,r1 lsl 2 add lr,fp,r1 lsl 2 adds r1,r3,4 lsls r1,r1,1 ldrh r1,[r1,r2] str r6,[r10,4] rsb r1,r1,r1 lsl 2 add r10,fp,r1 lsl 2 adds r1,r3,5 lsls r1,r1,1 ldrh r1,[r1,r2] add r5,r5,1<<19 str r6,[lr,4] rsb r1,r1,r1 lsl 2 add lr,fp,r1 lsl 2 adds r1,r3,6 lsls r1,r1,1 adds r3,r3,7 lsls r3,r3,1 subs r7,r7,1 ldrh r1,[r1,r2] ldrh r3,[r3,r2] str r6,[r10,4] rsb r1,r1,r1 lsl 2 rsb r3,r3,r3 lsl 2 add r0,fp,r3 lsl 2 str r6,[lr,4] add r10,fp,r1 lsl 2 str r6,[r10,4] str r6,[r0,4] bne .L30166 lsrs r1,r5,16 .L30160: ands r0,r12,7 beq .L29612 ldr.w r2,[r8,8] add r2,r2,r1 lsl 1 .L30163: ldrh r1,[r2],2 subs r0,r0,1 rsb r1,r1,r1 lsl 2 add r1,fp,r1 lsl 2 str r7,[r1,4] bne .L30163 .L29612: ldr.w r0,[r8,12] cmp r0,0 bne .L29638 b .L29639 .L29615: ldrh r1,[r5,12] cmp r1,0 beq .L29637 ldr r0,[r5,8] adds r0,r0,2 ldrh r7,[r0] str r0,[r5,8] subs r0,r1,1 strh r0,[r5,12] ldr r0,[r6] ldr r1,[r0,16] ldr.w r5,[r1,r7 lsl 2] ldrb r2,[sp,7] ldrb r1,[r5,28] cmp r2,r1 beq .L29626 rsb r1,r1,r1 lsl 3 add r6,r10,r1 lsl 2 .L32396: bl SchM_Enter_Spi_UpdateAsyncHWUnitQueue ldr r0,[r6,20] cmp r0,1 beq .L29624 ldrsb r0,[r5,16] add r2,r6,r0 lsl 1 ldrh r1,[r2,8]! mov r3,0xffff cmp r1,r3 bne .L29620 lsls r1,r0,1 strh r7,[r1,r6] strh r7,[r2] rsb r2,r7,r7 lsl 2 add r1,fp,r2 lsl 2 mov r2,-1 strh r2,[r1,8] ldrsb r1,[r6,16] cmp r1,r0 bge .L29633 b .L29622 .L29620: rsb r1,r1,r1 lsl 2 add r1,fp,r1 lsl 2 strh r7,[r1,8] strh r7,[r2] rsb r2,r7,r7 lsl 2 add r1,fp,r2 lsl 2 mov r2,-1 strh r2,[r1,8] ldrsb r1,[r6,16] cmp r1,r0 bge .L29633 .L29622: strb r0,[r6,16] .L32398: bl SchM_Exit_Spi_UpdateAsyncHWUnitQueue mov r1,r9 cpy r0,r4 .L32400: bl Spi_StartNextJob b .L29586 .L29624: movs r0,2 str r0,[r6,20] movs r1,1 strh r7,[r6,26] rsb r0,r7,r7 lsl 2 str r1,[fp,r0 lsl 2] movs r0,0 strb r0,[r6,24] .L32402: bl SchM_Exit_Spi_UpdateAsyncHWUnitQueue cpy r0,r5 .L32404: bl Spi_TransferAsyncJob mov r1,r9 cpy r0,r4 .L32406: bl Spi_StartNextJob b .L29586 .L29626: ldrb r0,[r8,16] cmp r0,1 bne .L29636 .L32408: bl SchM_Enter_Spi_UpdateAsyncHWUnitQueue ldr r0,[r4,20] cmp r0,1 beq .L29634 ldrsb r0,[r5,16] add r2,r4,r0 lsl 1 ldrh r1,[r2,8]! mov r3,0xffff cmp r1,r3 bne .L29630 lsls r1,r0,1 strh r7,[r1,r4] strh r7,[r2] rsb r2,r7,r7 lsl 2 add r1,fp,r2 lsl 2 mov r2,-1 strh r2,[r1,8] ldrsb r1,[r4,16] cmp r1,r0 bge .L29633 b .L29632 .L29630: rsb r1,r1,r1 lsl 2 add r1,fp,r1 lsl 2 strh r7,[r1,8] strh r7,[r2] rsb r2,r7,r7 lsl 2 add r1,fp,r2 lsl 2 mov r2,-1 strh r2,[r1,8] ldrsb r1,[r4,16] cmp r1,r0 bge .L29633 .L29632: strb r0,[r4,16] .L29633: .L32410: bl SchM_Exit_Spi_UpdateAsyncHWUnitQueue mov r1,r9 cpy r0,r4 .L32412: bl Spi_StartNextJob b .L29586 .L29634: movs r0,2 str r0,[r4,20] movs r1,1 strh r7,[r4,26] rsb r0,r7,r7 lsl 2 str r1,[fp,r0 lsl 2] movs r0,0 strb r0,[r4,24] .L32414: bl SchM_Exit_Spi_UpdateAsyncHWUnitQueue cpy r0,r5 .L32416: bl Spi_TransferAsyncJob mov r1,r9 cpy r0,r4 .L32418: bl Spi_StartNextJob b .L29586 .L29636: rsb r0,r7,r7 lsl 2 movs r1,1 strh r7,[r4,26] str r1,[fp,r0 lsl 2] movs r0,0 strb r0,[r4,24] cpy r0,r5 .L32420: bl Spi_TransferAsyncJob b .L29586 .L29637: str r1,[r5] ldr.w r0,[r8,12] cmp r0,0 .L29638: it ne .L32422: blx r0 .L29639: mov r1,r9 cpy r0,r4 .L32424: bl Spi_StartNextJob .L29586: add sp,sp,16 .L32426: pop {r4-fp,pc} .endf Spi_ChannelEndCallback ;ChannelIndex r4 local ;NumberOfChannels r3 local ;IsLastChannel r3 local ;JobCfg fp local ;JobResult r5 local ;HWUnit [sp,7] local ;HWUnitQueue r4 local ;JobState r7 local ;SequenceState r5 local ;SeqCfgPtr r8 local ;CurrentJobCfg r5 local ;JobId r7 local ;CoreId r9 local ;TotalJobs r0 local ;Index r1 local ;HWUnitQueue r6 local ;Priority r0 local ;JobListTail r2 local ;Priority r0 local ;JobListTail r2 local ;HwUnit r0 param ;JobResultOK r1 param .section ".ghcalltbl","" .L32385: .data.w .L32384 .endo .L32385 .L32387: .data.w .L32386 .endo .L32387 .L32389: .data.w .L32388 .endo .L32389 .L32391: .data.w .L32390 .endo .L32391 .L32393: .data.w .L32392 .endo .L32393 .L32395: .data.w .L32394 .endo .L32395 .L32397: .data.w .L32396 .endo .L32397 .L32399: .data.w .L32398 .endo .L32399 .L32401: .data.w .L32400 .endo .L32401 .L32403: .data.w .L32402 .endo .L32403 .L32405: .data.w .L32404 .endo .L32405 .L32407: .data.w .L32406 .endo .L32407 .L32409: .data.w .L32408 .endo .L32409 .L32411: .data.w .L32410 .endo .L32411 .L32413: .data.w .L32412 .endo .L32413 .L32415: .data.w .L32414 .endo .L32415 .L32417: .data.w .L32416 .endo .L32417 .L32419: .data.w .L32418 .endo .L32419 .L32421: .data.w .L32420 .endo .L32421 .L32423: .data.w .L32422 .endo .L32423 .L32425: .data.w .L32424 .endo .L32425 .section ".ghrettbl","" .L32427: .data.w .L32426 .endo .L32427 .section ".mcal_code","ax" ;Spi_ConfigPtr Spi_ConfigPtr static ;Spi_SequenceStateArray Spi_SequenceStateArray static ;Spi_HWUnitQueueArray Spi_HWUnitQueueArray static ;Spi_SeqUsedHWUnits Spi_SeqUsedHWUnits static ;Spi_SyncHWUnitsBusyStatus Spi_SyncHWUnitsBusyStatus static .section ".mcal_bss","awb" Spi_JobStateArray:: .space 48 .endo Spi_JobStateArray Spi_ChannelStateArray:: .space 16 .endo Spi_ChannelStateArray .ghsnote info, 27, 3, 640 .section ".mcal_code","ax"