;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\Can_ZX_K14xM\Src\Can.c -o objs\release\Can.o ;Source File: ..\..\..\MCAL\Can_ZX_K14xM\Src\Can.c ;Directory: ; D:\AUTOMFL\AutoSAR\ZHIXIN\MCAL_Capri(1.2.0)\Project\Capri\MultiProject ;Compile Date: Mon Dec 18 00:01:45 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 Can_CheckInitialized: push {r4,lr} movw r2,%lo(Can_DriverStatus) movt r2,%hi(Can_DriverStatus) ldr r1,[r2] movs r4,r1 itt ne mov r0,1 .L2138: pop {r4,pc} cpy r2,r0 movs r3,5 movs r0,92 .L2140: bl Det_ReportError cpy r0,r4 .L2142: pop {r4,pc} .endf Can_CheckInitialized ;CheckStatus r4 local ;ServiceId r0 param .section ".mcal_bss","awb" .align 4 Can_DriverStatus: .space 4 .endo Can_DriverStatus .section ".ghrettbl","" .align 4 .L2139: .data.w .L2138 .endo .L2139 .section ".ghcalltbl","" .align 4 .L2141: .data.w .L2140 .endo .L2141 .section ".ghrettbl","" .L2143: .data.w .L2142 .endo .L2143 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.1: .endo ..gh.f.f.1.a.1.e.1 Can_CheckController: push {lr} movw r12,%lo(Can_ConfigPtr) movt r12,%hi(Can_ConfigPtr) ldr.w r3,[r12] ldr r3,[r3,8] cmp r1,r3 itt lo mov r0,1 .L2266: pop {pc} cpy r2,r0 movs r3,4 movs r1,0 movs r0,92 .L2268: bl Det_ReportError movs r0,0 .L2270: pop {pc} .endf Can_CheckController ;CheckStatus r0 local ;ServiceId r2 param ;Controller r1 param .section ".mcal_bss","awb" Can_ConfigPtr: .space 4 .endo Can_ConfigPtr .section ".ghrettbl","" .L2267: .data.w .L2266 .endo .L2267 .section ".ghcalltbl","" .L2269: .data.w .L2268 .endo .L2269 .section ".ghrettbl","" .L2271: .data.w .L2270 .endo .L2271 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.2: .endo ..gh.f.f.1.a.1.e.2 Can_CheckGetControllerErrorCounter: cpy r2,r0 movs r0,1 cmp r1,0 it ne .L2402: ret push {lr} cpy r3,r0 movs r0,92 .L2404: bl Det_ReportError movs r0,0 ldr.w lr,[sp],4 .L2406: ret .endf Can_CheckGetControllerErrorCounter ;CheckStatus r0 local ;ServiceId r2 param ;ErrorCounterPtr r1 param .section ".bss","awb" .L2359: .endo .L2359 .section ".ghrettbl","" .L2403: .data.w .L2402 .endo .L2403 .section ".ghcalltbl","" .L2405: .data.w .L2404 .endo .L2405 .section ".ghrettbl","" .L2407: .data.w .L2406 .endo .L2407 .section ".mcal_code","ax" .assert 0x0 + (Can_ControllerConfigPtr - Can_InterruptEnableStatus) +0 == 4 .assert 0x0 + (Can_InterruptEnableStatus - Can_InterruptEnableStatus) +0 == 0 ..gh.f.f.1.a.1.e.3: .endo ..gh.f.f.1.a.1.e.3 Can_SetControllerToStopMode: push {r4-r7,r10,lr} movw r2,%lo(Can_InterruptEnableStatus) movt r2,%hi(Can_InterruptEnableStatus) ldr.w r10,[r2,4] ldrb r0,[r2] cpy r6,r1 cmp r0,1 bne .L2410 cpy r0,r1 .L3456: bl Can_Drv_DisableInterrupts ldrb r0,[r10,12] cmp r0,1 bne .L2412 cpy r0,r6 movs r2,0 movs r1,1 .L3458: bl Can_Drv_ConfigErrorInterrupt .L2412: ldr.w r0,[r10,52] tst r0,1<<19 beq .L2414 cpy r0,r6 movs r2,0 movs r1,10 .L3460: bl Can_Drv_ConfigErrorInterrupt ldr.w r0,[r10,52] .L2414: tst r0,1<<18 beq .L2416 cpy r0,r6 movs r2,0 movs r1,11 .L3462: bl Can_Drv_ConfigErrorInterrupt ldr.w r0,[r10,52] .L2416: tst r0,1<<16 beq .L2418 cpy r0,r6 movs r2,0 movs r1,12 .L3464: bl Can_Drv_ConfigErrorInterrupt .L2418: ldr.w r0,[r10,8] tst r0,2 bne .L2410 cpy r0,r6 movs r2,0 cpy r1,r2 .L3466: bl Can_Drv_ConfigErrorInterrupt .L2410: ldrb r0,[r10,32] movs r7,0 cmp r7,r0 bhs .L2422 .L2424: ldr.w r2,[r10,36] lsrs r1,r7,24 ldr.w r5,[r2,r1 lsl 2] ldr r1,[r5,24] cmp r1,1 bne .L2426 ldrb r2,[r5,16] movs r4,0 cmp r4,r2 bhs .L2425 .L2431: ldrb r1,[r5,28] cpy r0,r6 add r1,r1,r4 lsr 24 uxtb r1,r1 .L3468: bl Can_Drv_AbortTransfer ldrb r2,[r5,16] add r4,r4,1<<24 cmp r2,r4 lsr 24 bhi .L2431 ldrb r0,[r10,32] add r7,r7,1<<24 cmp r0,r7 lsr 24 bhi .L2424 b .L2422 .L2426: cpy r0,r6 ldrb r1,[r5,28] .L3470: bl Can_Drv_AbortTransfer ldrb r0,[r10,32] .L2425: add r7,r7,1<<24 cmp r0,r7 lsr 24 bhi .L2424 .L2422: cpy r0,r6 .L3472: bl Can_Drv_SetStopMode uxtb r0,r0 .L3474: pop {r4-r7,r10,pc} .endf Can_SetControllerToStopMode ;HwObjIdx r1 local ;CanHwObjPtr r5 local ;IdIndex r1 local ;ConfigPtr r10 local ;ControllerId none param ;HwChannel r6 param .section ".mcal_bss","awb" Can_InterruptEnableStatus: .space 1 .endo Can_InterruptEnableStatus .space 3 Can_ControllerConfigPtr: .space 4 .endo Can_ControllerConfigPtr .section ".ghcalltbl","" .L3457: .data.w .L3456 .endo .L3457 .L3459: .data.w .L3458 .endo .L3459 .L3461: .data.w .L3460 .endo .L3461 .L3463: .data.w .L3462 .endo .L3463 .L3465: .data.w .L3464 .endo .L3465 .L3467: .data.w .L3466 .endo .L3467 .L3469: .data.w .L3468 .endo .L3469 .L3471: .data.w .L3470 .endo .L3471 .L3473: .data.w .L3472 .endo .L3473 .section ".ghrettbl","" .L3475: .data.w .L3474 .endo .L3475 .section ".mcal_code","ax" .assert 0x0 + (Can_ControllerConfigPtr - Can_ControllerConfigPtr) +0 == 0 .assert 0x0 + (Can_HwObjectConfigPtr - Can_ControllerConfigPtr) +0 == 4 ..gh.f.f.1.a.1.e.4: .endo ..gh.f.f.1.a.1.e.4 Can_ParseRxData: push {r4-r7,r10,lr} ldr r5,[sp,24] cpy r4,r2 cpy r7,r3 movw r2,%lo(Can_ControllerConfigPtr) movt r2,%hi(Can_ControllerConfigPtr) ldr.w r10,[r2],4 ldr.w r6,[r2,r1 lsl 2] ldm r5,{r0-r1} cpy r2,r0 tst r2,1<<21 it ne orr r1,r1,1<<31 ldr r0,[r6,24] str r1,[r4] cbnz r0,.L3480 and r2,r2,15<<24 cmp r2,3<<25 bne .L3480 movs r3,1 movs r2,8 cpy r1,r0 movs r0,92 .L3798: bl Det_ReportRuntimeError ldr r1,[r4] ldr r0,[r6,24] .L3480: cmp r0,2 itt ne ldr r0,[r5] tst r0,1<<31 beq .L3484 orr r1,r1,1<<30 str r1,[r4] .L3484: add r3,r5,8 ldrb r2,[r5,72] ldrb r0,[r6,12] .L3800: bl CAN_LPduRxFunc cmp r0,1 it ne .L3802: pop {r4-r7,r10,pc} ldrb r0,[r6,12] strb r0,[r4,4] ldrb r0,[r10] strb r0,[r4,5] ldrb r0,[r5,72] cpy r1,r7 str r0,[r7,8] add r0,r5,8 str r0,[r7] cpy r0,r4 pop {r4-r7,r10,lr} .L3804: b CanIf_RxIndication .endf Can_ParseRxData ;ConfigPtr r10 local ;HwConfigPtr r6 local ;ControllerId none param ;HwObjId r1 param ;CanHwObjPtr r4 param ;CanIfPduInfoPtr r7 param ;MsgBufPtr r5 param .section ".mcal_bss","awb" Can_HwObjectConfigPtr: .space 16 .endo Can_HwObjectConfigPtr .section ".ghcalltbl","" .L3799: .data.w .L3798 .endo .L3799 .L3801: .data.w .L3800 .endo .L3801 .section ".ghrettbl","" .L3803: .data.w .L3802 .endo .L3803 .section ".ghtailcalltbl","" .align 4 .L3805: .data.w .L3804 .endo .L3805 .section ".mcal_code","ax" .assert 0x0 + (Can_ControllerConfigPtr - Can_ControllerConfigPtr) +0 == 0 .assert 0x0 + (Can_HwToMapMbIndex - Can_ControllerConfigPtr) +0 == 20 ..gh.f.f.1.a.1.e.5: .endo ..gh.f.f.1.a.1.e.5 Can_ProcessRxMsgBuffer: push {r4-r6,lr} sub sp,sp,24 cpy r5,r1 movw r6,%lo(Can_ControllerConfigPtr) movt r6,%hi(Can_ControllerConfigPtr) add r1,r3,r0 lsl 7 ldr.w r4,[r6],20 ldrb r1,[r6,r1] cmp r1,255 beq .L3806 add r6,r2,r1 lsl 5 ldrb r1,[r6,13] cmp r1,0 bne .L3806 ldr r1,[r6,24] cbnz r1,.L3811 movw r3,%lo(Can_State) movt r3,%hi(Can_State) ldrb r1,[r6,28] ldr r2,[r3] add r3,sp,4 add r1,r1,r1 lsl 2 ldr.w r1,[r2,r1 lsl 2] add r2,sp,16 str r1,[sp] ldrb r1,[r6,12] .L4200: bl Can_ParseRxData cpy r0,r5 movs r2,0 ldrb r3,[r6,13] ldrb r1,[r6,28] .L4202: bl Can_Drv_Receive b .L3806 .L3811: cmp r1,2 bne .L3806 cmp r3,7 bne .L3816 ldr r0,[r4,4] ldr r0,[r0,8] cmp r0,0 it ne .L4204: blx r0 b .L3806 .L3816: cmp r3,6 bne .L3821 ldr r0,[r4,4] ldr r0,[r0,12] cmp r0,0 it ne .L4206: blx r0 b .L3806 .L3821: movw r3,%lo(Can_State) movt r3,%hi(Can_State) ldrb r1,[r6,28] ldr r2,[r3] add r3,sp,4 add r1,r1,r1 lsl 2 ldr.w r1,[r2,r1 lsl 2] add r2,sp,16 str r1,[sp] ldrb r1,[r6,12] .L4208: bl Can_ParseRxData ldr r0,[r4,4] ldr r0,[r0,16] cmp r0,0 it ne .L4210: blx r0 cpy r0,r5 movs r1,0 .L4212: bl Can_Drv_RxFIFO .L3806: add sp,sp,24 .L4214: pop {r4-r6,pc} .endf Can_ProcessRxMsgBuffer ;ConfigPtr r4 local ;CanMsgBuf r1 local ;HwInfo [sp,16] local ;PduInfo [sp,4] local ;HwObjIndex r1 local ;HwObjPtr r6 local ;TempHwObj r1 local ;ControllerId r0 param ;HwChannel r5 param ;HwConfigPtr r2 param ;MbIdx r3 param .section ".mcal_const","a" .align 4 Can_State: .data.w Can_Status0 .endo Can_State .section ".mcal_bss","awb" Can_HwToMapMbIndex: .space 128 .endo Can_HwToMapMbIndex .section ".ghcalltbl","" .L4201: .data.w .L4200 .endo .L4201 .L4203: .data.w .L4202 .endo .L4203 .L4205: .data.w .L4204 .endo .L4205 .L4207: .data.w .L4206 .endo .L4207 .L4209: .data.w .L4208 .endo .L4209 .L4211: .data.w .L4210 .endo .L4211 .L4213: .data.w .L4212 .endo .L4213 .section ".ghrettbl","" .L4215: .data.w .L4214 .endo .L4215 .section ".mcal_bss","awb" Can_Status0: .space 1304 .endo Can_Status0 .section ".mcal_code","ax" .assert 0x0 + (Can_ControllerState - Can_DriverStatus) +0 == 1472 .assert 0x0 + (Can_ConfigPtr - Can_DriverStatus) +0 == 4 .assert 0x0 + (Can_DriverStatus - Can_DriverStatus) +0 == 0 .assert 0x0 + (Can_ControllerConfigPtr - Can_DriverStatus) +0 == 12 .assert 0x0 + (Can_HwObjectConfigPtr - Can_DriverStatus) +0 == 16 .assert 0x0 + (Can_InterruptEnableStatus - Can_DriverStatus) +0 == 8 .assert 0x0 + (Can_HwToMapMbIndex - Can_DriverStatus) +0 == 32 .assert 0x0 + (Can_BaudrateIdConfig - Can_DriverStatus) +0 == 1466 .assert 0x0 + (Can_DisableInterruptLevel - Can_DriverStatus) +0 == 1468 .assert 0x0 + (Can_EccInjectionStatus - Can_DriverStatus) +0 == 1464 ..gh.f.f.1.a.1.e.6: .endo ..gh.f.f.1.a.1.e.6 Can_Init:: push {r4-fp,lr} mov r1,0x0414 sub sp,sp,r1 movw fp,%lo(Can_DriverStatus) movt fp,%hi(Can_DriverStatus) ldr.w r1,[fp] cbz r1,.L4224 movs r3,6 movs r2,0 cpy r1,r2 movs r0,92 .L9583: bl Det_ReportError b .L4216 .L4224: cbz r0,.L4219 movs r3,9 cpy r2,r1 movs r0,92 .L9585: bl Det_ReportError b .L4216 .L4219: movw r1,%lo(Can_PreDefinedConfigPtr) movt r1,%hi(Can_PreDefinedConfigPtr) ldr r3,[r1] ldr r5,[r3,8] str r3,[fp,4] cmp r0,r5 bhs .L4243 ldr r4,[r3,28] .L4234: ldr.w r1,[r4,r0 lsl 2] cbz r1,.L4238 ldr.w r1,[fp,1472] cbz r1,.L4238 movs r3,6 movs r2,0 cpy r1,r2 movs r0,92 .L9587: bl Det_ReportError b .L4216 .L4238: adds r0,r0,1 uxtb r0,r0 cmp r0,r5 blo .L4234 .L4243: movs r2,1 mov r9,0 cmp r9,r5 bhs .L4299 .L4244: ldr r4,[r3,28] uxtb r0,r9 ldr.w r4,[r4,r0 lsl 2] cmp r4,0 beq .L4297 ldrb r0,[r4,3] cmp r0,1 bne .L4297 ldrh r0,[r4,24] strh r0,[fp,1466] ldr r1,[r4,40] str r4,[fp,12] movs r0,0 strb r0,[fp,1464] ldrb r7,[r4,2] str r0,[fp,1468] movw r0,%lo(Can_State) movt r0,%hi(Can_State) ldr r2,[r1] ldr r1,[r0] cpy r0,r7 .L9589: bl Can_Drv_Init strb r0,[sp,3] lsls r0,r0,24 bne .L4294 cpy r0,r7 .L9591: bl Can_Drv_DisableMbInterrupts movs r2,1 ldrh r1,[r4,24] ldr r0,[r4,28] strb r2,[fp,8] rsb r1,r1,r1 lsl 2 ldrb r1,[r0,r1 lsl 3] cpy r0,r7 .L9593: bl Can_Drv_SetTxArbitrationDelay movs r2,8 add r1,fp,32 uxtb r3,r9 mov r5,-1 add r3,r1,r3 lsl 7 .L5073: strb r5,[r3],16 strb r5,[r3,-15] strb r5,[r3,-14] strb r5,[r3,-13] strb r5,[r3,-12] strb r5,[r3,-11] strb r5,[r3,-10] strb r5,[r3,-9] strb r5,[r3,-8] strb r5,[r3,-7] strb r5,[r3,-6] strb r5,[r3,-5] strb r5,[r3,-4] strb r5,[r3,-3] strb r5,[r3,-2] strb r5,[r3,-1] subs r2,r2,1 bne .L5073 ldrb r0,[r4,32] cmp r2,r0 bhs .L4259 ldr r3,[r4,36] mov lr,r2 str r3,[sp,12] .L4251: ldr.w r12,[sp,12] lsr r2,lr,24 ldr.w r3,[r12,r2 lsl 2] ldr r4,[r3,24] ldrb r5,[r3,12] movw r12,%lo(Can_HwObjectConfigPtr) movt r12,%hi(Can_HwObjectConfigPtr) subs r4,r4,1 str r3,[r12,r5 lsl 2] blo .L4252 beq .L4253 cmp r4,1 beq .L4256 add lr,lr,1<<24 cmp r0,lr lsr 24 bhi .L4251 b .L4259 .L4252: ldrb r3,[r3,28] uxtb r2,r9 add lr,lr,1<<24 cmp r0,lr lsr 24 add r2,r3,r2 lsl 7 strb r5,[r1,r2] bhi .L4251 b .L4259 .L4253: ldrb r12,[r3,16] movs r2,0 cmp r2,r12 bhs .L4258 uxtb r6,r9 lsls r6,r6,7 ldrb r10,[r3,28] .L4255: add r3,r6,r10 add r3,r3,r2 lsr 24 add r2,r2,1<<24 strb r5,[r1,r3] cmp r12,r2 lsr 24 bhi .L4255 add lr,lr,1<<24 cmp r0,lr lsr 24 bhi .L4251 b .L4259 .L4256: ldrb r3,[r3,28] uxtb r12,r9 add r2,r3,r12 lsl 7 strb r5,[r1,r2] add r2,r1,r12 lsl 7 strb r5,[r2,6] strb r5,[r2,7] .L4258: add lr,lr,1<<24 cmp r0,lr lsr 24 bhi .L4251 .L4259: ldr.w r4,[fp,12] cpy r0,r7 movs r1,1 str r4,[sp,16] .L9595: bl Can_Drv_SetRxMaskType ldrb r1,[r4,32] movs r2,0 cmp r2,r1 bhs .L4293 str r2,[sp,4] .L4260: ldr r6,[sp,16] ldr.w r10,[sp,4] ldr r2,[r6,36] lsr r0,r10,24 ldr.w r5,[r2,r0 lsl 2] ldr r0,[r5,24] cbnz r0,.L4265 ldr r0,[r5,8] ldr r1,[r5,20] movs r4,r0 it ne mov r4,1 cpy r2,r4 cpy r0,r7 ldr r3,[r1] ldrb r1,[r5,28] .L9597: bl Can_Drv_ConfigRxMb ldr r1,[r5,20] ldrb r2,[r5,28] ldr r3,[r1,4] cpy r0,r7 cpy r1,r4 .L9599: bl Can_Drv_SetRxIndividualMask add r2,r10,1<<24 ldrb r1,[r6,32] str r2,[sp,4] cmp r1,r2 lsr 24 bhi .L4260 b .L4293 .L4265: cmp r0,2 bne .L4292 ldr.w r1,[fp,12] ldr r2,[sp,4] str r1,[sp,8] ldr r1,[r1,36] lsrs r0,r2,24 movs r4,0 cpy r6,r4 mov r2,1<<10 ldr.w r5,[r1,r0 lsl 2] add r0,sp,20 movw r1,%lo(____UNNAMED_1_static_in_Can_SetControllerFifoFilter) movt r1,%hi(____UNNAMED_1_static_in_Can_SetControllerFifoFilter) .L9601: bl memcpy ldrb r2,[r5,18] mov r10,r4 lsrs r0,r2,2 adds r1,r0,6 cmp r1,32 bhi .L4268 mov r8,r1 cmp r4,r1 bhs .L4988 b .L4283 .L4268: mov r8,32 cpy r1,r2 cmp r4,r1 bhs .L4988 .L4270: ldr.w r2,[fp,12] ldr r3,[r2,4] ldr r3,[r3] movs r4,0 cpy r0,r7 cpy r2,r4 subs r3,r3,1 blo .L4271 beq .L4274 cmp r3,1 beq .L4277 movs r6,3 mov r1,r10 .L9603: bl Can_Drv_SetRxFifoIndividualMask add r10,r10,1 uxtb r10,r10 cmp r10,r8 bhs .L4988 b .L4283 .L4271: cpy r4,r1 cpy r6,r2 ldr r1,[r5,20] ldr r2,[r5,8] add r1,r1,r10 lsl 3 ldr r1,[r1,4] cbz r2,.L4273 lsls r1,r1,1 orr r2,r1,3<<30 mov r1,r10 .L9605: bl Can_Drv_SetRxFifoIndividualMask add r10,r10,1 uxtb r10,r10 cmp r10,r8 bhs .L4988 b .L4283 .L4273: lsls r1,r1,19 orr r2,r1,3<<30 mov r1,r10 .L9607: bl Can_Drv_SetRxFifoIndividualMask add r10,r10,1 uxtb r10,r10 cmp r10,r8 bhs .L4988 b .L4283 .L4274: ldr r2,[r5,20] lsls r4,r1,1 add r3,r2,r10 lsl 4 ldr r2,[r5,8] ldr r1,[r3,4] ldr r3,[r3,12] uxtb r4,r4 movs r6,1 cbz r2,.L4276 lsrs r1,r1,15 lsls r1,r1,16 orr r1,r1,3<<30 orr r2,r1,r3 lsr 15 mov r1,r10 .L9609: bl Can_Drv_SetRxFifoIndividualMask add r10,r10,1 uxtb r10,r10 cmp r10,r8 bhs .L4988 b .L4283 .L4276: lsls r1,r1,19 orr r1,r1,3<<30 orr r2,r1,r3 lsl 3 mov r1,r10 .L9611: bl Can_Drv_SetRxFifoIndividualMask add r10,r10,1 uxtb r10,r10 cmp r10,r8 bhs .L4988 b .L4283 .L4277: ldr r2,[r5,20] ldr.w r12,[r5,8] lsls r4,r1,2 uxtb r4,r4 movs r6,2 add lr,r2,r10 lsl 5 cmp r12,0 ldr.w r1,[lr,4] ldr.w r2,[lr,12] ldr.w r3,[lr,20] ldr.w lr,[lr,28] beq .L4279 lsrs r1,r1,21 lsrs r2,r2,21 lsls r2,r2,16 orr r1,r2,r1 lsl 24 lsrs r2,r3,21 orr r1,r1,r2 lsl 8 orr r2,r1,lr lsr 21 mov r1,r10 .L9613: bl Can_Drv_SetRxFifoIndividualMask add r10,r10,1 uxtb r10,r10 cmp r10,r8 bhs .L4988 b .L4283 .L4279: lsrs r1,r1,3 lsrs r2,r2,3 lsls r2,r2,16 orr r1,r2,r1 lsl 24 lsrs r2,r3,3 orr r1,r1,r2 lsl 8 orr r2,r1,lr lsr 3 mov r1,r10 .L9615: bl Can_Drv_SetRxFifoIndividualMask add r10,r10,1 uxtb r10,r10 cmp r10,r8 bhs .L4988 .L4283: ldrb r1,[r5,18] cmp r10,r1 blo .L4270 .L4988: ldr r0,[sp,8] ldr r1,[r0,4] cpy r0,r7 ldr r1,[r1,4] .L9617: bl Can_Drv_SetRxFifoGlobalMask movs r1,0 cpy r2,r4 lsrs lr,r2,3 beq .L4987 ldr r0,[r5,8] ldr r4,[r5,20] add r3,sp,68 mov r10,r1 lsl r1,lr,3 cmp r0,0 ite ne mov r12,1 mov r12,0 .L4993: ldr.w r0,[r4],64 strb r12,[r3,-47] strb r10,[r3,-48] subs lr,lr,1 str r0,[r3,-44] ldr.w r0,[r4,-56] strb r12,[r3,-39] strb r10,[r3,-40] str r0,[r3,-36] ldr.w r0,[r4,-48] strb r12,[r3,-31] strb r10,[r3,-32] str r0,[r3,-28] ldr.w r0,[r4,-40] strb r12,[r3,-23] strb r10,[r3,-24] str r0,[r3,-20] ldr.w r0,[r4,-32] strb r12,[r3,-15] strb r10,[r3,-16] str r0,[r3,-12] ldr.w r0,[r4,-24] strb r12,[r3,-7] strb r10,[r3,-8] str r0,[r3,-4] ldr.w r0,[r4,-16] strb r12,[r3,1] str r0,[r3,4] strb r10,[r3],64 ldr.w r0,[r4,-8] strb r12,[r3,-55] strb r10,[r3,-56] str r0,[r3,-52] bne .L4993 .L4987: ands r4,r2,7 beq .L4290 ldr r2,[r5,8] add r12,sp,20 add r3,r12,r1 lsl 3 movs r12,r2 it ne mov r12,1 ldr r2,[r5,20] .L4990: ldr.w r0,[r2,r1 lsl 3] strb r12,[r3,1] adds r1,r1,1 subs r4,r4,1 str r0,[r3,4] strb lr,[r3],8 bne .L4990 .L4290: add r2,sp,20 cpy r1,r6 cpy r0,r7 .L9619: bl Can_Drv_ConfigRxFifo ldr r2,[sp,16] ldrb r1,[r2,32] .L4292: ldr r2,[sp,4] add r2,r2,1<<24 str r2,[sp,4] cmp r1,r2 lsr 24 bhi .L4260 .L4293: cpy r0,r7 .L9621: bl Can_Drv_SetStopMode .L4294: ldrb r2,[sp,3] cbnz r2,.L4298 ldr.w r3,[fp,4] movs r0,2 str r0,[fp,1472] ldr r5,[r3,8] .L4297: add r9,r9,1 uxtb r0,r9 cmp r0,r5 blo .L4244 .L4298: cmp r2,1 bne .L4304 .L4299: ldr.w r3,[fp,4] ldr r0,[r3,8] movs r1,0 cmp r1,r0 bhs .L4216 ldr r3,[r3,28] .L4300: lsrs r2,r1,24 ldr.w r2,[r3,r2 lsl 2] cbz r2,.L4303 movs r2,0 str r2,[fp,1472] .L4303: add r1,r1,1<<24 cmp r0,r1 lsr 24 bhi .L4300 b .L4216 .L4304: movs r0,1 str r0,[fp] .L4216: mov r0,0x0414 add sp,sp,r0 .L9623: pop {r4-fp,pc} .endf Can_Init ;Index r0 local ;Index r9 local ;ReturnVal r2 local ;CanCtrlPtr r4 local ;HwChannel r7 local ;ReturnVal [sp,3] local ;HwObjectRefIndex r2 local ;ObjIndex r2 local ;CanHwObjectPtr r3 local ;TempCanObjectType r4 local ;ConfigPtr [sp,16] local ;HwObjIndex r2 local ;CanHwObjPtr r5 local ;CanMsgIdType r4 local ;ConfigPtr [sp,8] local ;FilterIdx r10 local ;HwFilterCount r4 local ;HwConfigPtr r5 local ;FifoFilterRffn r8 local ;ElementFormat r6 local ;RxFifoFilters [sp,20] local ;HwFilterCount r4 local ;HwFilterMask r2 local ;TempRxFifoType r3 local ;Config r0 param .section ".mcal_bss","awb" Can_EccInjectionStatus: .space 1 .endo Can_EccInjectionStatus .space 1 Can_BaudrateIdConfig: .space 2 .endo Can_BaudrateIdConfig Can_DisableInterruptLevel: .space 4 .endo Can_DisableInterruptLevel Can_ControllerState: .space 4 .endo Can_ControllerState .section ".rodata","a" .align 4 ____UNNAMED_1_static_in_Can_SetControllerFifoFilter: .space 1024 .endo ____UNNAMED_1_static_in_Can_SetControllerFifoFilter .section ".ghcalltbl","" .L9584: .data.w .L9583 .endo .L9584 .L9586: .data.w .L9585 .endo .L9586 .L9588: .data.w .L9587 .endo .L9588 .L9590: .data.w .L9589 .endo .L9590 .L9592: .data.w .L9591 .endo .L9592 .L9594: .data.w .L9593 .endo .L9594 .L9596: .data.w .L9595 .endo .L9596 .L9598: .data.w .L9597 .endo .L9598 .L9600: .data.w .L9599 .endo .L9600 .L9602: .data.w .L9601 .endo .L9602 .L9604: .data.w .L9603 .endo .L9604 .L9606: .data.w .L9605 .endo .L9606 .L9608: .data.w .L9607 .endo .L9608 .L9610: .data.w .L9609 .endo .L9610 .L9612: .data.w .L9611 .endo .L9612 .L9614: .data.w .L9613 .endo .L9614 .L9616: .data.w .L9615 .endo .L9616 .L9618: .data.w .L9617 .endo .L9618 .L9620: .data.w .L9619 .endo .L9620 .L9622: .data.w .L9621 .endo .L9622 .section ".ghrettbl","" .L9624: .data.w .L9623 .endo .L9624 .section ".mcal_code","ax" .assert 0x0 + (Can_ConfigPtr - Can_DriverStatus) +0 == 4 .assert 0x0 + (Can_ControllerState - Can_DriverStatus) +0 == 1472 .assert 0x0 + (Can_DriverStatus - Can_DriverStatus) +0 == 0 ..gh.f.f.1.a.1.e.7: .endo ..gh.f.f.1.a.1.e.7 Can_DeInit:: push {r4-r6,lr} movw r4,%lo(Can_DriverStatus) movt r4,%hi(Can_DriverStatus) ldr r1,[r4] movs r0,0 cmp r1,1 beq .L9633 cpy r2,r0 movs r3,6 cpy r1,r0 movs r0,92 pop {r4-r6,lr} .L10461: b Det_ReportError .L9633: ldr r1,[r4,4] ldr r2,[r1,8] cmp r0,r2 bhs .L9628 ldr r5,[r1,28] .L9634: ldr.w r3,[r5,r0 lsl 2] cbz r3,.L9638 ldr.w r3,[r4,1472] cmp r3,1 bne .L9638 movs r2,16 movs r3,6 movs r1,0 movs r0,92 pop {r4-r6,lr} .L10463: b Det_ReportError .L9638: ldr r3,[r1,8] adds r0,r0,1 uxtb r0,r0 cmp r0,r3 blo .L9634 .L9628: movs r6,0 str r6,[r4] cmp r6,r2 bhs .L9641 cpy r5,r6 .L9643: ldr r3,[r1,28] lsrs r0,r5,24 ldr.w r0,[r3,r0 lsl 2] cbz r0,.L9644 ldrb r3,[r0,3] cmp r3,1 bne .L9644 ldrb r0,[r0,2] str r6,[r4,1472] .L10465: bl Can_Drv_Deinit ldr r1,[r4,4] ldr r2,[r1,8] .L9644: add r5,r5,1<<24 cmp r2,r5 lsr 24 bhi .L9643 .L9641: str r6,[r4,4] .L10467: pop {r4-r6,pc} .endf Can_DeInit ;CtrlId r0 local ;CanCtrlPtr r0 local ;CtrlId r0 local .section ".ghtailcalltbl","" .L10462: .data.w .L10461 .endo .L10462 .L10464: .data.w .L10463 .endo .L10464 .section ".ghcalltbl","" .L10466: .data.w .L10465 .endo .L10466 .section ".ghrettbl","" .L10468: .data.w .L10467 .endo .L10468 .section ".mcal_code","ax" .assert 0x0 + (Can_ControllerState - Can_ConfigPtr) +0 == 1468 .assert 0x0 + (Can_InterruptEnableStatus - Can_ConfigPtr) +0 == 4 .assert 0x0 + (Can_ControllerConfigPtr - Can_ConfigPtr) +0 == 8 .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.8: .endo ..gh.f.f.1.a.1.e.8 Can_SetControllerMode:: push {r4-r8,r10-fp,lr} sub sp,sp,4 cpy r7,r0 cpy r4,r1 movs r6,1 movs r0,3 .L12281: bl Can_CheckInitialized cmp r0,1 bne .L10471 cpy r1,r7 movs r0,3 .L12283: bl Can_CheckController cmp r0,1 bne .L10471 movw r5,%lo(Can_ConfigPtr) movt r5,%hi(Can_ConfigPtr) ldr r0,[r5] ldr r1,[r0,28] ldr.w r0,[r1,r7 lsl 2] subs r1,r4,1 mov r8,r0 blo .L10523 beq .L10478 cmp r1,2 blo .L10512 beq .L10517 movs r3,4 movs r2,3 movs r1,0 movs r0,92 .L12285: bl Det_ReportError cpy r0,r6 b .L10469 .L10478: ldr.w r0,[r5,1468] cmp r0,2 beq .L10480 movs r3,6 movs r2,3 movs r1,0 movs r0,92 .L12287: bl Det_ReportError cpy r0,r6 b .L10469 .L10480: ldr.w r10,[r5,8] ldrb r4,[r8,2] ldrb r1,[r10,32] mov fp,0 cmp fp,r1 bhs .L10494 .L10484: ldr.w r1,[r10,36] lsr r0,fp,24 ldr.w r7,[r1,r0 lsl 2] ldr r1,[r7,24] ldr r0,[r7,8] movs r2,r0 it ne mov r2,1 cbnz r1,.L10486 ldr r0,[r7,20] ldrb r1,[r7,28] ldr r3,[r0] cpy r0,r4 .L12289: bl Can_Drv_ConfigRxMb .L10486: ldrb r0,[r7,13] cbnz r0,.L10493 ldr r0,[r7,24] subs r0,r0,0 beq .L10488 cmp r0,2 beq .L10489 ldrb r1,[r10,32] add fp,fp,1<<24 cmp r1,fp lsr 24 bhi .L10484 b .L11282 .L10488: cpy r0,r4 movs r3,0 cpy r2,r3 ldrb r1,[r7,28] .L12291: bl Can_Drv_Receive ldrb r1,[r10,32] add fp,fp,1<<24 cmp r1,fp lsr 24 bhi .L10484 b .L11282 .L10489: ldr.w r0,[r10,40] ldr r1,[r0] ldr r1,[r1,12] cpy r0,r4 cmp r1,1 bne .L10491 ldr.w r1,[r10,48] .L12293: bl Can_Drv_RxFIFO ldrb r1,[r10,32] add fp,fp,1<<24 cmp r1,fp lsr 24 bhi .L10484 b .L11282 .L10491: movs r1,0 .L12295: bl Can_Drv_RxFIFO .L10493: ldrb r1,[r10,32] add fp,fp,1<<24 cmp r1,fp lsr 24 bhi .L10484 .L11282: ldr.w r10,[r5,8] .L10494: cpy r0,r4 .L12297: bl Can_Drv_SetStartMode cpy r7,r0 movw r1,6 movt r1,59 cpy r0,r4 .L12299: bl Can_Drv_ClearErrorStatus ldrb r0,[r5,4] cmp r0,1 bne .L10506 ldrb r0,[r10,12] cmp r0,1 bne .L10497 cpy r0,r4 cpy r2,r6 cpy r1,r6 .L12301: bl Can_Drv_ConfigErrorInterrupt .L10497: ldr.w r0,[r10,52] tst r0,1<<19 beq .L10499 cpy r0,r4 cpy r2,r6 movs r1,10 .L12303: bl Can_Drv_ConfigErrorInterrupt ldr.w r0,[r10,52] .L10499: tst r0,1<<18 beq .L10501 cpy r0,r4 cpy r2,r6 movs r1,11 .L12305: bl Can_Drv_ConfigErrorInterrupt ldr.w r0,[r10,52] .L10501: tst r0,1<<16 beq .L10503 cpy r0,r4 cpy r2,r6 movs r1,12 .L12307: bl Can_Drv_ConfigErrorInterrupt .L10503: ldr.w r0,[r10,8] tst r0,2 bne .L10505 cpy r0,r4 cpy r2,r6 movs r1,0 .L12309: bl Can_Drv_ConfigErrorInterrupt .L10505: cpy r0,r4 .L12311: bl Can_Drv_EnableInterrupts .L10506: cbnz r7,.L10508 cpy r0,r4 .L12313: bl Can_Drv_ManualBusOffRecovery cpy r7,r0 .L10508: uxtb r7,r7 cmp r7,0 bne .L10471 cpy r1,r6 str r6,[r5,1468] ldrb r0,[r8,1] .L12315: bl CanIf_ControllerModeIndication cpy r0,r7 b .L10469 .L10512: cpy r4,r0 ldr.w r0,[r5,1468] subs r0,r0,1 blo .L10516 beq .L10513 cmp r0,2 it hi mov r0,r6 bhi .L10469 b .L10515 .L10513: ldrb r1,[r4,2] ldrb r0,[r4] .L12317: bl Can_SetControllerToStopMode cbnz r0,.L10516 .L10515: movs r1,2 str r1,[r5,1468] ldrb r0,[r4,1] .L12319: bl CanIf_ControllerModeIndication movs r0,0 b .L10469 .L10516: cpy r0,r6 b .L10469 .L10517: cpy r4,r0 ldr.w r0,[r5,1468] cmp r0,2 bne .L10519 movs r1,3 str r1,[r5,1468] ldrb r0,[r4,1] .L12321: bl CanIf_ControllerModeIndication movs r0,0 b .L10469 .L10519: cmp r0,3 it eq mov r0,0 beq .L10469 movs r3,6 movs r2,3 movs r1,0 movs r0,92 .L12323: bl Det_ReportError cpy r0,r6 b .L10469 .L10523: movs r3,4 movs r2,3 movs r1,0 movs r0,92 .L12325: bl Det_ReportError .L10471: cpy r0,r6 .L10469: add sp,sp,4 .L12327: pop {r4-r8,r10-fp,pc} .endf Can_SetControllerMode ;ReturnStatus r6 local ;CanCtrlPtr r8 local ;ReturnStatus r6 local ;HwChannel r4 local ;ConfigPtr r10 local ;HwObjIdx r0 local ;CanHwObjPtr r7 local ;CanMsgIdType r2 local ;ReturnVal r7 local ;ConfigPtr r10 local ;CanCtrlPtr r4 local ;ReturnStatus r6 local ;CanCtrlPtr r4 local ;ReturnStatus r6 local ;Controller r7 param ;Transition r4 param .section ".ghcalltbl","" .L12282: .data.w .L12281 .endo .L12282 .L12284: .data.w .L12283 .endo .L12284 .L12286: .data.w .L12285 .endo .L12286 .L12288: .data.w .L12287 .endo .L12288 .L12290: .data.w .L12289 .endo .L12290 .L12292: .data.w .L12291 .endo .L12292 .L12294: .data.w .L12293 .endo .L12294 .L12296: .data.w .L12295 .endo .L12296 .L12298: .data.w .L12297 .endo .L12298 .L12300: .data.w .L12299 .endo .L12300 .L12302: .data.w .L12301 .endo .L12302 .L12304: .data.w .L12303 .endo .L12304 .L12306: .data.w .L12305 .endo .L12306 .L12308: .data.w .L12307 .endo .L12308 .L12310: .data.w .L12309 .endo .L12310 .L12312: .data.w .L12311 .endo .L12312 .L12314: .data.w .L12313 .endo .L12314 .L12316: .data.w .L12315 .endo .L12316 .L12318: .data.w .L12317 .endo .L12318 .L12320: .data.w .L12319 .endo .L12320 .L12322: .data.w .L12321 .endo .L12322 .L12324: .data.w .L12323 .endo .L12324 .L12326: .data.w .L12325 .endo .L12326 .section ".ghrettbl","" .L12328: .data.w .L12327 .endo .L12328 .section ".mcal_code","ax" .assert 0x0 + (Can_InterruptEnableStatus - Can_ConfigPtr) +0 == 4 .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 .assert 0x0 + (Can_DisableInterruptLevel - Can_ConfigPtr) +0 == 1464 .assert 0x0 + (Can_ControllerConfigPtr - Can_ConfigPtr) +0 == 8 ..gh.f.f.1.a.1.e.9: .endo ..gh.f.f.1.a.1.e.9 Can_DisableControllerInterrupts:: push {r4-r6,lr} cpy r4,r0 movs r0,4 .L12722: bl Can_CheckInitialized cmp r0,1 it ne .L12724: pop {r4-r6,pc} cpy r1,r4 movs r0,4 .L12726: bl Can_CheckController cmp r0,1 it ne .L12728: pop {r4-r6,pc} movw r5,%lo(Can_ConfigPtr) movt r5,%hi(Can_ConfigPtr) ldr r0,[r5] ldr r1,[r0,28] ldr.w r4,[r1,r4 lsl 2] .L12730: bl SchM_Enter_Can_DisableIntGlobal ldr.w r0,[r5,1464] adds r0,r0,1 str r0,[r5,1464] .L12732: bl SchM_Exit_Can_DisableIntGlobal ldrb r4,[r4,2] ldr r6,[r5,8] ldrb r0,[r5,4] cmp r0,1 it ne .L12734: pop {r4-r6,pc} cpy r0,r4 .L12736: bl Can_Drv_DisableInterrupts ldrb r0,[r6,12] cmp r0,1 bne .L12340 cpy r0,r4 movs r2,0 movs r1,1 .L12738: bl Can_Drv_ConfigErrorInterrupt .L12340: ldr r0,[r6,52] tst r0,1<<19 beq .L12342 cpy r0,r4 movs r2,0 movs r1,10 .L12740: bl Can_Drv_ConfigErrorInterrupt ldr r0,[r6,52] .L12342: tst r0,1<<18 beq .L12344 cpy r0,r4 movs r2,0 movs r1,11 .L12742: bl Can_Drv_ConfigErrorInterrupt ldr r0,[r6,52] .L12344: tst r0,1<<16 beq .L12346 cpy r0,r4 movs r2,0 movs r1,12 .L12744: bl Can_Drv_ConfigErrorInterrupt .L12346: ldr r0,[r6,8] tst r0,2 bne .L12348 cpy r0,r4 movs r2,0 cpy r1,r2 .L12746: bl Can_Drv_ConfigErrorInterrupt .L12348: movs r0,0 strb r0,[r5,4] .L12748: pop {r4-r6,pc} .endf Can_DisableControllerInterrupts ;CanCtrlPtr r4 local ;HwChannel r4 local ;ConfigPtr r6 local ;Controller r4 param .section ".ghcalltbl","" .L12723: .data.w .L12722 .endo .L12723 .section ".ghrettbl","" .L12725: .data.w .L12724 .endo .L12725 .section ".ghcalltbl","" .L12727: .data.w .L12726 .endo .L12727 .section ".ghrettbl","" .L12729: .data.w .L12728 .endo .L12729 .section ".ghcalltbl","" .L12731: .data.w .L12730 .endo .L12731 .L12733: .data.w .L12732 .endo .L12733 .section ".ghrettbl","" .L12735: .data.w .L12734 .endo .L12735 .section ".ghcalltbl","" .L12737: .data.w .L12736 .endo .L12737 .L12739: .data.w .L12738 .endo .L12739 .L12741: .data.w .L12740 .endo .L12741 .L12743: .data.w .L12742 .endo .L12743 .L12745: .data.w .L12744 .endo .L12745 .L12747: .data.w .L12746 .endo .L12747 .section ".ghrettbl","" .L12749: .data.w .L12748 .endo .L12749 .section ".mcal_code","ax" .assert 0x0 + (Can_InterruptEnableStatus - Can_ConfigPtr) +0 == 4 .assert 0x0 + (Can_ControllerConfigPtr - Can_ConfigPtr) +0 == 8 .assert 0x0 + (Can_DisableInterruptLevel - Can_ConfigPtr) +0 == 1464 .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.10: .endo ..gh.f.f.1.a.1.e.10 Can_EnableControllerInterrupts:: push {r4-r6,lr} cpy r4,r0 movs r0,5 .L13224: bl Can_CheckInitialized cmp r0,1 it ne .L13226: pop {r4-r6,pc} cpy r1,r4 movs r0,5 .L13228: bl Can_CheckController cmp r0,1 it ne .L13230: pop {r4-r6,pc} movw r5,%lo(Can_ConfigPtr) movt r5,%hi(Can_ConfigPtr) ldr r0,[r5] ldr r1,[r0,28] ldr.w r4,[r1,r4 lsl 2] .L13232: bl SchM_Enter_Can_DisableIntGlobal ldr.w r0,[r5,1464] subs r0,r0,1 it hs str r0,[r5,1464] .L13234: bl SchM_Exit_Can_DisableIntGlobal ldr.w r0,[r5,1464] cmp r0,0 it ne .L13236: pop {r4-r6,pc} ldrb r4,[r4,2] ldr r6,[r5,8] ldrb r0,[r5,4] cmp r0,0 it ne .L13238: pop {r4-r6,pc} cpy r0,r4 .L13240: bl Can_Drv_EnableInterrupts ldrb r0,[r6,12] cmp r0,1 bne .L12765 cpy r0,r4 movs r2,1 cpy r1,r2 .L13242: bl Can_Drv_ConfigErrorInterrupt .L12765: ldr r0,[r6,52] tst r0,1<<19 beq .L12767 cpy r0,r4 movs r2,1 movs r1,10 .L13244: bl Can_Drv_ConfigErrorInterrupt ldr r0,[r6,52] .L12767: tst r0,1<<18 beq .L12769 cpy r0,r4 movs r2,1 movs r1,11 .L13246: bl Can_Drv_ConfigErrorInterrupt ldr r0,[r6,52] .L12769: tst r0,1<<16 beq .L12771 cpy r0,r4 movs r2,1 movs r1,12 .L13248: bl Can_Drv_ConfigErrorInterrupt .L12771: ldr r0,[r6,8] tst r0,2 bne .L12773 cpy r0,r4 movs r2,1 movs r1,0 .L13250: bl Can_Drv_ConfigErrorInterrupt .L12773: movs r0,1 strb r0,[r5,4] .L13252: pop {r4-r6,pc} .endf Can_EnableControllerInterrupts ;CanCtrlPtr r4 local ;HwChannel r4 local ;ConfigPtr r6 local ;Controller r4 param .section ".ghcalltbl","" .L13225: .data.w .L13224 .endo .L13225 .section ".ghrettbl","" .L13227: .data.w .L13226 .endo .L13227 .section ".ghcalltbl","" .L13229: .data.w .L13228 .endo .L13229 .section ".ghrettbl","" .L13231: .data.w .L13230 .endo .L13231 .section ".ghcalltbl","" .L13233: .data.w .L13232 .endo .L13233 .L13235: .data.w .L13234 .endo .L13235 .section ".ghrettbl","" .L13237: .data.w .L13236 .endo .L13237 .L13239: .data.w .L13238 .endo .L13239 .section ".ghcalltbl","" .L13241: .data.w .L13240 .endo .L13241 .L13243: .data.w .L13242 .endo .L13243 .L13245: .data.w .L13244 .endo .L13245 .L13247: .data.w .L13246 .endo .L13247 .L13249: .data.w .L13248 .endo .L13249 .L13251: .data.w .L13250 .endo .L13251 .section ".ghrettbl","" .L13253: .data.w .L13252 .endo .L13253 .section ".mcal_code","ax" .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 .assert 0x0 + (Can_ControllerConfigPtr - Can_ConfigPtr) +0 == 8 ..gh.f.f.1.a.1.e.11: .endo ..gh.f.f.1.a.1.e.11 Can_GetControllerErrorState:: push {r4-r7,r10,lr} cpy r5,r0 cpy r7,r1 movs r4,1 movs r0,17 .L13981: bl Can_CheckInitialized cmp r0,1 bne .L13256 cpy r1,r5 movs r0,17 .L13983: bl Can_CheckController cmp r0,1 bne .L13256 movs r1,r7 bne .L13261 cpy r3,r0 movs r2,17 movs r0,92 .L13985: bl Det_ReportError cpy r0,r4 .L13987: pop {r4-r7,r10,pc} .L13261: movw r1,%lo(Can_ConfigPtr) movt r1,%hi(Can_ConfigPtr) ldr r0,[r1] ldr r2,[r0,28] ldr.w r0,[r2,r5 lsl 2] ldr.w r10,[r1,8] ldrb r6,[r0,2] cpy r0,r6 .L13989: bl Can_Drv_GetControllerRxErrorCounter cpy r4,r0 cpy r0,r6 .L13991: bl Can_Drv_GetControllerTxErrorCounter cpy r5,r0 cpy r0,r6 .L13993: bl Can_Drv_GetControllerErrorState movs r6,r0 itt eq str r0,[r7] .L13995: pop {r4-r7,r10,pc} cmp r6,1 bne .L13274 uxth r2,r5 uxth r1,r4 ldrb r0,[r10,1] .L13997: bl CanIf_ControllerErrorStatePassive str r6,[r7] movs r0,0 .L13999: pop {r4-r7,r10,pc} .L13274: movs r0,2 str r0,[r7] movs r4,0 .L13256: cpy r0,r4 .L14001: pop {r4-r7,r10,pc} .endf Can_GetControllerErrorState ;ReturnStatus r4 local ;HwChannel r6 local ;ReturnVal r6 local ;ConfigPtr r10 local ;Temp r6 local ;RxCount r4 local ;TxCount r5 local ;Controller r5 param ;ErrorStatePtr r7 param .section ".ghcalltbl","" .L13982: .data.w .L13981 .endo .L13982 .L13984: .data.w .L13983 .endo .L13984 .L13986: .data.w .L13985 .endo .L13986 .section ".ghrettbl","" .L13988: .data.w .L13987 .endo .L13988 .section ".ghcalltbl","" .L13990: .data.w .L13989 .endo .L13990 .L13992: .data.w .L13991 .endo .L13992 .L13994: .data.w .L13993 .endo .L13994 .section ".ghrettbl","" .L13996: .data.w .L13995 .endo .L13996 .section ".ghcalltbl","" .L13998: .data.w .L13997 .endo .L13998 .section ".ghrettbl","" .L14000: .data.w .L13999 .endo .L14000 .L14002: .data.w .L14001 .endo .L14002 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.12: .endo ..gh.f.f.1.a.1.e.12 Can_GetControllerRxErrorCounter:: push {r4-r6,lr} cpy r4,r0 cpy r6,r1 movs r5,1 movs r0,48 .L14177: bl Can_CheckInitialized cmp r0,1 bne .L14005 cpy r1,r4 movs r0,48 .L14179: bl Can_CheckController cmp r0,1 bne .L14005 cpy r1,r6 movs r0,48 .L14181: bl Can_CheckGetControllerErrorCounter cmp r0,1 bne .L14005 movw r1,%lo(Can_ConfigPtr) movt r1,%hi(Can_ConfigPtr) ldr r0,[r1] ldr r1,[r0,28] ldr.w r0,[r1,r4 lsl 2] ldrb r0,[r0,2] .L14183: bl Can_Drv_GetControllerRxErrorCounter strb r0,[r6] movs r5,0 .L14005: cpy r0,r5 .L14185: pop {r4-r6,pc} .endf Can_GetControllerRxErrorCounter ;ReturnStatus r5 local ;CanCtrlPtr r0 local ;Controller r4 param ;RxErrorCounterPtr r6 param .section ".ghcalltbl","" .L14178: .data.w .L14177 .endo .L14178 .L14180: .data.w .L14179 .endo .L14180 .L14182: .data.w .L14181 .endo .L14182 .L14184: .data.w .L14183 .endo .L14184 .section ".ghrettbl","" .L14186: .data.w .L14185 .endo .L14186 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.13: .endo ..gh.f.f.1.a.1.e.13 Can_GetControllerTxErrorCounter:: push {r4-r6,lr} cpy r4,r0 cpy r6,r1 movs r5,1 movs r0,49 .L14369: bl Can_CheckInitialized cmp r0,1 bne .L14189 cpy r1,r4 movs r0,49 .L14371: bl Can_CheckController cmp r0,1 bne .L14189 cpy r1,r6 movs r0,49 .L14373: bl Can_CheckGetControllerErrorCounter cmp r0,1 bne .L14189 movw r1,%lo(Can_ConfigPtr) movt r1,%hi(Can_ConfigPtr) ldr r0,[r1] ldr r1,[r0,28] ldr.w r0,[r1,r4 lsl 2] ldrb r0,[r0,2] .L14375: bl Can_Drv_GetControllerTxErrorCounter strb r0,[r6] movs r5,0 .L14189: cpy r0,r5 .L14377: pop {r4-r6,pc} .endf Can_GetControllerTxErrorCounter ;ReturnStatus r5 local ;CanCtrlPtr r0 local ;Controller r4 param ;TxErrorCounterPtr r6 param .section ".ghcalltbl","" .L14370: .data.w .L14369 .endo .L14370 .L14372: .data.w .L14371 .endo .L14372 .L14374: .data.w .L14373 .endo .L14374 .L14376: .data.w .L14375 .endo .L14376 .section ".ghrettbl","" .L14378: .data.w .L14377 .endo .L14378 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.14: .endo ..gh.f.f.1.a.1.e.14 Can_GetControllerMode:: push {r4-r6,lr} cpy r6,r0 cpy r5,r1 movs r4,1 movs r0,18 .L14597: bl Can_CheckInitialized cmp r0,1 bne .L14379 cpy r1,r6 movs r0,18 .L14599: bl Can_CheckController cmp r0,1 bne .L14379 movs r1,r5 bne .L14386 cpy r3,r0 movs r2,18 movs r0,92 .L14601: bl Det_ReportError b .L14379 .L14386: movw r1,%lo(Can_ControllerState) movt r1,%hi(Can_ControllerState) ldr r0,[r1] movs r4,0 str r0,[r5] .L14379: cpy r0,r4 .L14603: pop {r4-r6,pc} .endf Can_GetControllerMode ;ReturnStatus r4 local ;Controller r6 param ;ControllerModePtr r5 param .section ".ghcalltbl","" .L14598: .data.w .L14597 .endo .L14598 .L14600: .data.w .L14599 .endo .L14600 .L14602: .data.w .L14601 .endo .L14602 .section ".ghrettbl","" .L14604: .data.w .L14603 .endo .L14604 .section ".mcal_code","ax" .assert 0x0 + (Can_TxPduId - Can_ConfigPtr) +0 == 1472 .assert 0x0 + (Can_HwObjectConfigPtr - Can_ConfigPtr) +0 == 12 .assert 0x0 + (Can_ControllerState - Can_ConfigPtr) +0 == 1468 .assert 0x0 + (Can_BaudrateIdConfig - Can_ConfigPtr) +0 == 1462 .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.15: .endo ..gh.f.f.1.a.1.e.15 Can_Write:: push {r4-fp,lr} sub sp,sp,24 mov r8,r0 cpy r5,r0 cpy r6,r1 movs r4,1 movs r0,6 .L15667: bl Can_CheckInitialized cmp r0,1 bne .L14605 movw fp,%lo(Can_ConfigPtr) movt fp,%hi(Can_ConfigPtr) ldr.w r2,[fp] ldr r1,[r2,16] cmp r5,r1 bhs .L14615 ldrb r1,[r2,4] uxtb r0,r8 cmp r0,r1 bhs .L14616 .L14615: movs r3,2 movs r2,6 movs r1,0 movs r0,92 .L15669: bl Det_ReportError b .L14605 .L14616: movs r1,r6 bne .L14610 cpy r3,r4 movs r2,6 movs r0,92 .L15671: bl Det_ReportError b .L14605 .L14610: ldr r1,[r2,20] uxtb r0,r8 ldr r3,[r2,28] ldrb r1,[r1,r0] ldr.w r1,[r3,r1 lsl 2] cmp r1,0 beq .L14605 ldr r2,[r2,24] ldrh r3,[fp,1462] add r7,r2,r0 lsl 5 ldrb r2,[r6,2] ldr r0,[r1,28] rsb r3,r3,r3 lsl 2 add r3,r0,r3 lsl 3 ldrb r3,[r3,10] cmp r3,1 bne .L14632 ldrb r3,[r7,17] cmp r2,r3 bhi .L14635 cmp r2,8 bls .L14636 ldr r3,[r6,4] tst r3,1<<30 beq .L14635 .L14636: ldr r3,[r6,8] cbnz r3,.L14624 ldrb r3,[r7,14] cbnz r3,.L14624 cpy r3,r4 movs r2,6 movs r1,0 movs r0,92 .L15673: bl Det_ReportError b .L14605 .L14632: cmp r2,8 bls .L14636 .L14635: movs r3,3 movs r2,6 movs r1,0 movs r0,92 .L15675: bl Det_ReportError b .L14605 .L14624: ldr.w r3,[fp,1468] cmp r3,1 bne .L14605 ldrb r9,[r1] ldrb r10,[r1,2] movw r0,%lo(Can_HwObjectConfigPtr) movt r0,%hi(Can_HwObjectConfigPtr) uxtb r1,r8 str r7,[r0,r1 lsl 2] ldr r1,[r7,24] cmp r1,1 bne .L14653 ldr r1,[r6,4] strb r2,[sp,16] lsrs r1,r1,31 str r1,[sp,12] movs r5,0 strb r5,[sp,17] .L14646: ldrb r1,[r7,28] lsrs r4,r5,24 mov r0,r10 add r1,r1,r4 uxtb r1,r1 .L15677: bl Can_Drv_GetTransferStatus cbnz r0,.L14648 ldrb r1,[r7,28] ldrh r0,[r6] ldr.w r12,[r6,8] add r3,fp,0x05c0 add r1,r1,r4 uxtb r1,r1 add r2,r1,r9 lsl 7 lsls r2,r2,1 strh r0,[r2,r3] uxtb r2,r8 ldr r3,[r6,4] stm sp,{r3,r12} movw r0,%lo(Can_HwObjectConfigPtr) movt r0,%hi(Can_HwObjectConfigPtr) ldr.w r3,[r0,r2 lsl 2] add r2,sp,12 mov r0,r10 ldrb r3,[r3,13] .L15679: bl Can_Drv_SendData .L14648: ldrb r2,[r7,16] add r5,r5,1<<24 cmp r2,r5 lsr 24 bls .L14651 uxtb r1,r0 cmp r1,2 beq .L14646 .L14651: cbz r0,.L14642 uxtb r1,r0 cmp r1,2 .L14653: it ne mov r0,1 .L14642: uxtb r4,r0 .L14605: cpy r0,r4 add sp,sp,24 .L15681: pop {r4-fp,pc} .endf Can_Write ;ReturnStatus r4 local ;CanHwObjPtr r7 local ;CanObjConfigPtr r1 local ;ControllerId r9 local ;HwChannel r10 local ;MessageInfo [sp,12] local ;ReturnVal r0 local ;ObjIndx r1 local ;Hth r8 param ;PduInfo r6 param .section ".mcal_bss","awb" Can_TxPduId: .space 256 .endo Can_TxPduId .section ".ghcalltbl","" .L15668: .data.w .L15667 .endo .L15668 .L15670: .data.w .L15669 .endo .L15670 .L15672: .data.w .L15671 .endo .L15672 .L15674: .data.w .L15673 .endo .L15674 .L15676: .data.w .L15675 .endo .L15676 .L15678: .data.w .L15677 .endo .L15678 .L15680: .data.w .L15679 .endo .L15680 .section ".ghrettbl","" .L15682: .data.w .L15681 .endo .L15682 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.16: .endo ..gh.f.f.1.a.1.e.16 Can_AbortHwObjectSend:: push {r4-r6,lr} cpy r4,r0 movs r0,20 .L16028: bl Can_CheckInitialized cmp r0,1 it ne .L16030: pop {r4-r6,pc} movw r2,%lo(Can_ConfigPtr) movt r2,%hi(Can_ConfigPtr) ldr r0,[r2] ldr r1,[r0,16] cmp r4,r1 bhs .L15693 ldrb r1,[r0,4] cmp r4,r1 bhs .L15688 .L15693: movs r3,2 movs r2,20 movs r1,0 movs r0,92 pop {r4-r6,lr} .L16032: b Det_ReportError .L15688: ldr r1,[r0,20] ldr r2,[r0,28] ldrb r1,[r1,r4] ldr.w r1,[r2,r1 lsl 2] cmp r1,0 it eq .L16034: pop {r4-r6,pc} ldr r0,[r0,24] ldrb r6,[r1,2] add r5,r0,r4 lsl 5 ldrb r1,[r5,16] movs r4,0 cmp r4,r1 it hs .L16036: pop {r4-r6,pc} .L15702: ldrb r1,[r5,28] cpy r0,r6 add r1,r1,r4 lsr 24 uxtb r1,r1 .L16038: bl Can_Drv_AbortTransfer ldrb r2,[r5,16] add r4,r4,1<<24 cmp r2,r4 lsr 24 bhi .L15702 .L16040: pop {r4-r6,pc} .endf Can_AbortHwObjectSend ;CanHwObjPtr r5 local ;CanObjConfigPtr r1 local ;HwChannel r6 local ;IdIndex r0 local ;Hth r4 param .section ".ghcalltbl","" .L16029: .data.w .L16028 .endo .L16029 .section ".ghrettbl","" .L16031: .data.w .L16030 .endo .L16031 .section ".ghtailcalltbl","" .L16033: .data.w .L16032 .endo .L16033 .section ".ghrettbl","" .L16035: .data.w .L16034 .endo .L16035 .L16037: .data.w .L16036 .endo .L16037 .section ".ghcalltbl","" .L16039: .data.w .L16038 .endo .L16039 .section ".ghrettbl","" .L16041: .data.w .L16040 .endo .L16041 .section ".mcal_code","ax" .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 .assert 0x0 + (Can_TxPduId - Can_ConfigPtr) +0 == 1472 .assert 0x0 + (Can_HwObjectConfigPtr - Can_ConfigPtr) +0 == 12 ..gh.f.f.1.a.1.e.17: .endo ..gh.f.f.1.a.1.e.17 Can_MainFunction_Write:: push {r4-fp,lr} movw r10,%lo(Can_ConfigPtr) movt r10,%hi(Can_ConfigPtr) ldr.w r1,[r10] sub sp,sp,8 cmp r1,0 beq .L16042 ldrb r0,[r1,4] ldr r2,[r1,16] cmp r0,r2 bhs .L16042 lsls r3,r0,24 mov r9,r3 .L16048: ldr r0,[r1,20] lsrs r3,r3,24 ldrb fp,[r0,r3] ldr r3,[r1,28] ldr.w r0,[r3,fp lsl 2] cmp r0,0 beq .L16046 ldrb r3,[r0,3] cmp r3,1 bne .L16046 ldr.w r12,[r1,24] lsr r3,r9,24 add r5,r12,r3 lsl 5 ldrb r3,[r5,13] cmp r3,1 bne .L16046 ldrb r7,[r0,2] ldrb r0,[r5,16] add r12,r10,12 lsr r3,r9,22 movs r4,0 cmp r4,r0 str r5,[r12,r3] bhs .L16046 movw r1,%lo(Can_State) movt r1,%hi(Can_State) ldr.w r8,[r1] .L16057: ldrb r1,[r5,28] lsrs r6,r4,24 add r1,r1,r6 add r2,r1,r1 lsl 2 add r2,r8,r2 lsl 2 ldr r2,[r2,12] cmp r2,2 bne .L16061 uxtb r1,r1 cpy r0,r7 .L17067: bl Can_Drv_WriteMainFunction ldrb r1,[r5,28] cpy r0,r7 add r1,r1,r6 uxtb r1,r1 .L17069: bl Can_Drv_GetTransferStatus cbnz r0,.L16408 ldrb r1,[r5,28] add r1,r1,r6 add r0,r1,fp lsl 7 add r1,r10,0x05c0 lsls r0,r0,1 ldrh r0,[r0,r1] .L17071: bl CanIf_TxConfirmation .L16408: ldrb r0,[r5,16] .L16061: add r4,r4,1<<24 cmp r0,r4 lsr 24 bhi .L16057 ldr.w r1,[r10] ldr r2,[r1,16] .L16046: add r3,r9,1<<24 mov r9,r3 cmp r2,r3 lsr 24 bhi .L16048 .L16042: add sp,sp,8 .L17073: pop {r4-fp,pc} .endf Can_MainFunction_Write ;CanObjConfigPtr r0 local ;CanControllerId fp local ;HwObjIndex r0 local ;HwChannel r7 local ;HwConfigPtr r5 local ;ObjIndx r3 local .section ".ghcalltbl","" .L17068: .data.w .L17067 .endo .L17068 .L17070: .data.w .L17069 .endo .L17070 .L17072: .data.w .L17071 .endo .L17072 .section ".ghrettbl","" .L17074: .data.w .L17073 .endo .L17074 .section ".mcal_code","ax" .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 .assert 0x0 + (Can_ControllerConfigPtr - Can_ConfigPtr) +0 == 8 .assert 0x0 + (Can_HwObjectConfigPtr - Can_ConfigPtr) +0 == 12 ..gh.f.f.1.a.1.e.18: .endo ..gh.f.f.1.a.1.e.18 Can_MainFunction_Read:: push {r4-r7,r10-fp,lr} sub sp,sp,208 movw r2,%lo(Can_ConfigPtr) movt r2,%hi(Can_ConfigPtr) ldr r0,[r2] movs r1,0 cmp r0,0 itt ne ldrb r2,[r0,4] cmp r1,r2 bhs .L17075 mov r10,r1 .L17081: ldr r1,[r0,20] lsr r3,r10,24 ldrb fp,[r1,r3] ldr r3,[r0,28] ldr.w r1,[r3,fp lsl 2] cmp r1,0 beq .L17079 ldrb r3,[r1,3] cmp r3,1 bne .L17079 ldr.w r12,[r0,24] lsr r3,r10,24 add r5,r12,r3 lsl 5 ldrb r3,[r5,13] cmp r3,1 bne .L17079 lsr r0,r10,22 movw r6,%lo(Can_ConfigPtr+12) movt r6,%hi(Can_ConfigPtr+12) ldrb r4,[r1,2] str r5,[r6,r0] cpy r0,r4 .L18863: bl Can_Drv_CheckStoppedMode cmp r0,0 bne .L17802 ldr r0,[r5,24] cbnz r0,.L17093 lsr r0,r10,22 ldr r5,[r6,r0] add r2,sp,128 cpy r0,r4 ldrb r3,[r5,13] ldrb r1,[r5,28] .L18865: bl Can_Drv_Receive cpy r0,r4 ldrb r1,[r5,28] .L18867: bl Can_Drv_ReadMainFunction cpy r0,r4 ldrb r1,[r5,28] .L18869: bl Can_Drv_GetTransferStatus cmp r0,0 bne .L17802 add r0,sp,128 str r0,[sp] add r3,sp,108 add r2,sp,120 lsr r1,r10,24 mov r0,fp .L18871: bl Can_ParseRxData movw r1,%lo(Can_ConfigPtr) movt r1,%hi(Can_ConfigPtr) ldr r0,[r1] ldrb r2,[r0,4] add r10,r10,1<<24 cmp r2,r10 lsr 24 bhi .L17081 b .L17075 .L17093: cmp r0,2 bne .L17802 lsr r0,r10,22 movw r1,%lo(Can_ConfigPtr) movt r1,%hi(Can_ConfigPtr) ldr r5,[r1,8] ldr r6,[r6,r0] cpy r0,r4 movs r1,5 .L18873: bl Can_Drv_GetMbInterruptFlag ldrb r1,[r5,32] movs r7,0 cmp r7,r1 bhs .L17802 b .L17108 .L17095: cpy r0,r4 movs r1,6 .L18875: bl Can_Drv_GetMbInterruptFlag cmp r0,1 bne .L17099 ldr r0,[r5,4] ldr r0,[r0,12] cmp r0,0 it ne .L18877: blx r0 cpy r0,r4 movs r1,6 .L18879: bl Can_Drv_ClearMbIntStatus .L17099: cpy r0,r4 movs r1,7 .L18881: bl Can_Drv_GetMbInterruptFlag cmp r0,1 bne .L17103 cpy r3,r0 movs r2,8 movs r1,0 movs r0,92 .L18883: bl Det_ReportRuntimeError ldr r0,[r5,4] ldr r0,[r0,8] cmp r0,0 it ne .L18885: blx r0 cpy r0,r4 movs r1,7 .L18887: bl Can_Drv_ClearMbIntStatus .L17103: add r1,sp,28 cpy r0,r4 .L18889: bl Can_Drv_RxFIFO cpy r0,r4 ldrb r1,[r6,28] .L18891: bl Can_Drv_ReadMainFunction cpy r0,r4 ldrb r1,[r6,28] .L18893: bl Can_Drv_GetTransferStatus cbnz r0,.L17106 add r0,sp,28 str r0,[sp] add r3,sp,8 add r2,sp,20 lsr r1,r10,24 mov r0,fp .L18895: bl Can_ParseRxData ldr r0,[r5,4] ldr r0,[r0,16] cmp r0,0 it ne .L18897: blx r0 .L17106: cpy r0,r4 movs r1,5 .L18899: bl Can_Drv_GetMbInterruptFlag ldrb r1,[r5,32] adds r7,r7,1 uxtb r7,r7 cmp r7,r1 bhs .L17802 .L17108: cmp r0,1 beq .L17095 .L17802: movw r1,%lo(Can_ConfigPtr) movt r1,%hi(Can_ConfigPtr) ldr r0,[r1] ldrb r2,[r0,4] .L17079: add r10,r10,1<<24 cmp r2,r10 lsr 24 bhi .L17081 .L17075: add sp,sp,208 .L18901: pop {r4-r7,r10-fp,pc} .endf Can_MainFunction_Read ;CanObjConfigPtr r1 local ;CanControllerId fp local ;HwObjIndex r1 local ;HwChannel r4 local ;HwConfigPtr r5 local ;CanMsgBuf [sp,128] local ;HwInfo [sp,120] local ;PduInfo [sp,108] local ;HwConfigPtr r5 local ;ConfigPtr r5 local ;HwConfigPtr r6 local ;CanMsgBuf [sp,28] local ;HwInfo [sp,20] local ;PduInfo [sp,8] local ;ObjIdx r7 local ;ReturnVal r0 local .section ".ghcalltbl","" .L18864: .data.w .L18863 .endo .L18864 .L18866: .data.w .L18865 .endo .L18866 .L18868: .data.w .L18867 .endo .L18868 .L18870: .data.w .L18869 .endo .L18870 .L18872: .data.w .L18871 .endo .L18872 .L18874: .data.w .L18873 .endo .L18874 .L18876: .data.w .L18875 .endo .L18876 .L18878: .data.w .L18877 .endo .L18878 .L18880: .data.w .L18879 .endo .L18880 .L18882: .data.w .L18881 .endo .L18882 .L18884: .data.w .L18883 .endo .L18884 .L18886: .data.w .L18885 .endo .L18886 .L18888: .data.w .L18887 .endo .L18888 .L18890: .data.w .L18889 .endo .L18890 .L18892: .data.w .L18891 .endo .L18892 .L18894: .data.w .L18893 .endo .L18894 .L18896: .data.w .L18895 .endo .L18896 .L18898: .data.w .L18897 .endo .L18898 .L18900: .data.w .L18899 .endo .L18900 .section ".ghrettbl","" .L18902: .data.w .L18901 .endo .L18902 .section ".mcal_code","ax" .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 .assert 0x0 + (Can_ControllerState - Can_ConfigPtr) +0 == 1468 .assert 0x0 + (Can_ControllerConfigPtr - Can_ConfigPtr) +0 == 8 ..gh.f.f.1.a.1.e.19: .endo ..gh.f.f.1.a.1.e.19 Can_MainFunction_Mode:: push {r4-r6,lr} movw r4,%lo(Can_ConfigPtr) movt r4,%hi(Can_ConfigPtr) ldr r1,[r4] movs r0,0 cmp r1,0 itt ne ldr r2,[r1,8] cmp r0,r2 it hs .L19898: pop {r4-r6,pc} cpy r5,r0 .L18909: ldr r3,[r1,28] lsrs r0,r5,24 ldr.w r0,[r3,r0 lsl 2] cbz r0,.L18910 ldrb r3,[r0,3] cmp r3,1 bne .L18910 ldrb r0,[r0,2] ldr.w r3,[r4,1468] ldr r6,[r4,8] cmp r3,1 bne .L18920 .L19900: bl Can_Drv_CheckStartedMode cbnz r0,.L19541 movs r1,2 str r1,[r4,1468] ldrb r0,[r6,1] .L19902: bl CanIf_ControllerModeIndication ldr r1,[r4] ldr r2,[r1,8] add r5,r5,1<<24 cmp r2,r5 lsr 24 bhi .L18909 .L19904: pop {r4-r6,pc} .L18920: cmp r3,2 bne .L18910 .L19906: bl Can_Drv_CheckStartedMode cmp r0,1 bne .L19541 str r0,[r4,1468] cpy r1,r0 ldrb r0,[r6,1] .L19908: bl CanIf_ControllerModeIndication .L19541: ldr r1,[r4] ldr r2,[r1,8] .L18910: add r5,r5,1<<24 cmp r2,r5 lsr 24 bhi .L18909 .L19910: pop {r4-r6,pc} .endf Can_MainFunction_Mode ;CanObjConfigPtr r0 local ;CanControllerId r0 local ;HwChannel r0 local ;ConfigPtr r6 local .section ".ghrettbl","" .L19899: .data.w .L19898 .endo .L19899 .section ".ghcalltbl","" .L19901: .data.w .L19900 .endo .L19901 .L19903: .data.w .L19902 .endo .L19903 .section ".ghrettbl","" .L19905: .data.w .L19904 .endo .L19905 .section ".ghcalltbl","" .L19907: .data.w .L19906 .endo .L19907 .L19909: .data.w .L19908 .endo .L19909 .section ".ghrettbl","" .L19911: .data.w .L19910 .endo .L19911 .section ".mcal_code","ax" .assert 0x0 + (Can_TxPduId - Can_ConfigPtr) +0 == 1472 .assert 0x0 + (Can_HwToMapMbIndex - Can_ConfigPtr) +0 == 28 .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.20: .endo ..gh.f.f.1.a.1.e.20 Can_ProcessMbCommonInterrupt:: push {r4-r6,lr} cpy r6,r1 movw r4,%lo(Can_ConfigPtr) movt r4,%hi(Can_ConfigPtr) ldr r1,[r4] cmp r1,0 it eq .L20284: pop {r4-r6,pc} ldr.w r12,[r1,12] ldr r3,[r1,28] ldrb r0,[r12,r0] ldr.w r5,[r3,r0 lsl 2] cmp r5,0 it eq .L20286: pop {r4-r6,pc} subs r2,r2,1 blo .L19934 beq .L19919 cmp r2,1 beq .L19921 .L20288: pop {r4-r6,pc} .L19919: ldrb r0,[r5] ldr r2,[r1,24] add r1,r6,r0 lsl 7 add r0,r4,28 ldrb r0,[r0,r1] cmp r0,255 it eq .L20290: pop {r4-r6,pc} add r0,r2,r0 lsl 5 ldrb r2,[r0,13] cmp r2,0 it ne .L20292: pop {r4-r6,pc} ldr r0,[r0,24] cmp r0,1 it ne .L20294: pop {r4-r6,pc} lsls r0,r1,1 add r1,r4,0x05c0 ldrh r0,[r0,r1] pop {r4-r6,lr} .L20296: b CanIf_TxConfirmation .L19921: cmp r6,7 bne .L19934 cpy r3,r2 movs r2,8 movs r1,0 movs r0,92 .L20298: bl Det_ReportRuntimeError ldr r1,[r4] .L19934: cpy r3,r6 ldr r2,[r1,24] ldrb r1,[r5,2] ldrb r0,[r5] pop {r4-r6,lr} .L20300: b Can_ProcessRxMsgBuffer .endf Can_ProcessMbCommonInterrupt ;CanObjConfigPtr r5 local ;HwConfigPtr r2 local ;HwObjIndex r0 local ;Id r0 param ;MbIdx r6 param ;Type r2 param .section ".ghrettbl","" .L20285: .data.w .L20284 .endo .L20285 .L20287: .data.w .L20286 .endo .L20287 .L20289: .data.w .L20288 .endo .L20289 .L20291: .data.w .L20290 .endo .L20291 .L20293: .data.w .L20292 .endo .L20293 .L20295: .data.w .L20294 .endo .L20295 .section ".ghtailcalltbl","" .L20297: .data.w .L20296 .endo .L20297 .section ".ghcalltbl","" .L20299: .data.w .L20298 .endo .L20299 .section ".ghtailcalltbl","" .L20301: .data.w .L20300 .endo .L20301 .section ".mcal_code","ax" .assert 0x0 + (Can_ControllerConfigPtr - Can_ConfigPtr) +0 == 8 .assert 0x0 + (Can_HwToMapMbIndex - Can_ConfigPtr) +0 == 28 .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.21: .endo ..gh.f.f.1.a.1.e.21 Can_ProcessRxFiFoDmaInterrupt:: push {r4-r7,lr} cpy r5,r1 movw r4,%lo(Can_ConfigPtr) movt r4,%hi(Can_ConfigPtr) ldr r1,[r4] sub sp,sp,24 cbz r1,.L20302 ldr r3,[r1,12] ldr r2,[r1,28] ldrb r0,[r3,r0] ldr.w r6,[r2,r0 lsl 2] cbz r6,.L20302 cmp r5,18 bne .L20308 movs r3,1 movs r2,8 movs r1,0 movs r0,92 .L20670: bl Det_ReportRuntimeError ldr r1,[r4] .L20308: ldrb r0,[r6] ldrb r7,[r6,2] ldr r3,[r1,24] ldr r6,[r4,8] add r2,r4,28 lsls r1,r0,7 ldrb r2,[r1,r2] cmp r2,255 beq .L20302 add r4,r3,r2 lsl 5 ldrb r1,[r4,13] cbnz r1,.L20302 cmp r5,17 bne .L20316 ldr r1,[r6,48] add r3,sp,4 add r2,sp,16 str r1,[sp] ldrb r1,[r4,12] .L20672: bl Can_ParseRxData cpy r0,r7 ldr r1,[r6,48] .L20674: bl Can_Drv_RxFIFO b .L20302 .L20316: cmp r5,18 bne .L20302 ldr r0,[r6,44] cmp r0,0 it ne .L20676: blx r0 cpy r0,r7 ldr r1,[r6,48] .L20678: bl Can_Drv_RxFIFO .L20302: add sp,sp,24 .L20680: pop {r4-r7,pc} .endf Can_ProcessRxFiFoDmaInterrupt ;CanObjConfigPtr r6 local ;ControllerId r0 local ;HwChannel r7 local ;HwConfigPtr r3 local ;ConfigPtr r6 local ;HwInfo [sp,16] local ;PduInfo [sp,4] local ;HwObjIndex r2 local ;HwObjPtr r4 local ;Id r0 param ;IntType r5 param .section ".ghcalltbl","" .L20671: .data.w .L20670 .endo .L20671 .L20673: .data.w .L20672 .endo .L20673 .L20675: .data.w .L20674 .endo .L20675 .L20677: .data.w .L20676 .endo .L20677 .L20679: .data.w .L20678 .endo .L20679 .section ".ghrettbl","" .L20681: .data.w .L20680 .endo .L20681 .section ".mcal_code","ax" .assert 0x0 + (Can_ControllerState - Can_ConfigPtr) +0 == 1468 .assert 0x0 + (Can_ConfigPtr - Can_ConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.22: .endo ..gh.f.f.1.a.1.e.22 Can_ProcessBusOffInterrupt:: push {r4-r5,lr} movw r4,%lo(Can_ConfigPtr) movt r4,%hi(Can_ConfigPtr) ldr r1,[r4] cmp r1,0 it eq .L20837: pop {r4-r5,pc} ldr r2,[r1,28] ldr r1,[r1,12] ldrb r0,[r1,r0] ldr.w r5,[r2,r0 lsl 2] cmp r5,0 it eq .L20839: pop {r4-r5,pc} ldrb r1,[r5,2] ldrb r0,[r5] .L20841: bl Can_SetControllerToStopMode cmp r0,0 it ne .L20843: pop {r4-r5,pc} movs r0,2 str r0,[r4,1468] ldrb r0,[r5,1] pop {r4-r5,lr} .L20845: b CanIf_ControllerBusOff .endf Can_ProcessBusOffInterrupt ;CanObjConfigPtr r5 local ;Id r0 param .section ".ghrettbl","" .L20838: .data.w .L20837 .endo .L20838 .L20840: .data.w .L20839 .endo .L20840 .section ".ghcalltbl","" .L20842: .data.w .L20841 .endo .L20842 .section ".ghrettbl","" .L20844: .data.w .L20843 .endo .L20844 .section ".ghtailcalltbl","" .L20846: .data.w .L20845 .endo .L20846 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.23: .endo ..gh.f.f.1.a.1.e.23 Can_ProcessErrorInterrupt:: push {r4-r7,lr} cpy r5,r1 cpy r4,r2 movw r2,%lo(Can_ConfigPtr) movt r2,%hi(Can_ConfigPtr) ldr r1,[r2] cmp r1,0 it eq .L21364: pop {r4-r7,pc} ldr r2,[r1,28] ldr r1,[r1,12] ldrb r0,[r1,r0] ldr.w r7,[r2,r0 lsl 2] cmp r7,0 it eq .L21366: pop {r4-r7,pc} tst r4,1<<10 ldrb r6,[r7,1] beq .L20857 cpy r0,r6 movs r1,9 .L21368: bl CanIf_ErrorNotification .L20857: tst r4,1<<11 beq .L20859 cpy r0,r6 movs r1,8 .L21370: bl CanIf_ErrorNotification .L20859: tst r4,1<<12 beq .L20861 cpy r0,r6 movs r1,10 .L21372: bl CanIf_ErrorNotification .L20861: tst r4,1<<13 beq .L20863 cpy r0,r6 movs r1,4 .L21374: bl CanIf_ErrorNotification .L20863: tst r4,1<<14 beq .L20865 cpy r0,r6 movs r1,2 .L21376: bl CanIf_ErrorNotification .L20865: tst r4,1<<15 beq .L20853 cpy r0,r6 movs r1,1 .L21378: bl CanIf_ErrorNotification .L20853: cmp r5,1 bne .L20868 ldr r0,[r7,20] cmp r0,0 it eq .L21380: pop {r4-r7,pc} pop {r4-r7,lr} .L21382: bx r0 .L20868: ldr r0,[r7,16] cmp r0,0 it eq .L21384: pop {r4-r7,pc} pop {r4-r7,lr} .L21386: bx r0 .endf Can_ProcessErrorInterrupt ;CanObjConfigPtr r7 local ;CanInterfaceId r6 local ;CtrlOffset r0 param ;IsErrFast r5 param ;Data r4 param .section ".ghrettbl","" .L21365: .data.w .L21364 .endo .L21365 .L21367: .data.w .L21366 .endo .L21367 .section ".ghcalltbl","" .L21369: .data.w .L21368 .endo .L21369 .L21371: .data.w .L21370 .endo .L21371 .L21373: .data.w .L21372 .endo .L21373 .L21375: .data.w .L21374 .endo .L21375 .L21377: .data.w .L21376 .endo .L21377 .L21379: .data.w .L21378 .endo .L21379 .section ".ghrettbl","" .L21381: .data.w .L21380 .endo .L21381 .section ".ghtailcalltbl","" .L21383: .data.w .L21382 .endo .L21383 .section ".ghrettbl","" .L21385: .data.w .L21384 .endo .L21385 .section ".ghtailcalltbl","" .L21387: .data.w .L21386 .endo .L21387 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.24: .endo ..gh.f.f.1.a.1.e.24 Can_ProcessEccInterrupt:: movw r3,%lo(Can_ConfigPtr) movt r3,%hi(Can_ConfigPtr) ldr r2,[r3] cmp r2,0 it eq .L21722: ret ldr r3,[r2,28] ldr r2,[r2,12] ldrb r0,[r2,r0] ldr.w r0,[r3,r0 lsl 2] cmp r0,0 it eq .L21724: ret cmp r1,10 bne .L21394 ldr r0,[r0,56] cmp r0,0 it eq .L21726: ret .L21728: bx r0 .L21394: cmp r1,11 bne .L21399 ldr r0,[r0,60] cmp r0,0 it eq .L21730: ret .L21732: bx r0 .L21399: cmp r1,12 it ne .L21734: ret ldr r0,[r0,64] cmp r0,0 it eq .L21736: ret .L21738: bx r0 .endf Can_ProcessEccInterrupt ;CanObjConfigPtr r0 local ;CtrlOffset r0 param ;IntType r1 param ;Data none param .section ".ghrettbl","" .L21723: .data.w .L21722 .endo .L21723 .L21725: .data.w .L21724 .endo .L21725 .L21727: .data.w .L21726 .endo .L21727 .section ".ghtailcalltbl","" .L21729: .data.w .L21728 .endo .L21729 .section ".ghrettbl","" .L21731: .data.w .L21730 .endo .L21731 .section ".ghtailcalltbl","" .L21733: .data.w .L21732 .endo .L21733 .section ".ghrettbl","" .L21735: .data.w .L21734 .endo .L21735 .L21737: .data.w .L21736 .endo .L21737 .section ".ghtailcalltbl","" .L21739: .data.w .L21738 .endo .L21739 .section ".mcal_code","ax" .assert 0x0 + (Can_EccInjectionStatus - Can_ControllerConfigPtr) +0 == 1452 .assert 0x0 + (Can_ControllerConfigPtr - Can_ControllerConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.25: .endo ..gh.f.f.1.a.1.e.25 Can_InjectError:: push {r4-r7,lr} cpy r7,r0 movw r5,%lo(Can_ControllerConfigPtr) movt r5,%hi(Can_ControllerConfigPtr) movs r4,1 movs r0,21 ldr r6,[r5] .L21948: bl Can_CheckInitialized cmp r0,1 bne .L21742 cpy r1,r7 movs r0,21 .L21950: bl Can_CheckController cmp r0,1 itt eq ldrb r0,[r6,68] cmp r0,1 bne .L21742 ldrb r0,[r6,2] .L21952: bl Can_Drv_InjectCorrectableAddress uxtb r4,r0 cbnz r4,.L21742 movs r0,1 strb r0,[r5,1452] ldrb r0,[r6,2] .L21954: bl Can_Drv_InjectAddress ldrb r1,[r5,1452] uxtb r4,r0 cmp r1,0 it ne mov r4,1 .L21742: cpy r0,r4 .L21956: pop {r4-r7,pc} .endf Can_InjectError ;ReturnVal r4 local ;ConfigPtr r6 local ;ControllerId r7 param .section ".ghcalltbl","" .L21949: .data.w .L21948 .endo .L21949 .L21951: .data.w .L21950 .endo .L21951 .L21953: .data.w .L21952 .endo .L21953 .L21955: .data.w .L21954 .endo .L21955 .section ".ghrettbl","" .L21957: .data.w .L21956 .endo .L21957 .section ".mcal_code","ax" .assert 0x0 + (Can_EccInjectionStatus - Can_ControllerConfigPtr) +0 == 1452 .assert 0x0 + (Can_ControllerConfigPtr - Can_ControllerConfigPtr) +0 == 0 ..gh.f.f.1.a.1.e.26: .endo ..gh.f.f.1.a.1.e.26 Can_ClearInjectError:: push {r4-r7,lr} cpy r7,r0 movw r5,%lo(Can_ControllerConfigPtr) movt r5,%hi(Can_ControllerConfigPtr) movs r4,1 movs r0,22 ldr r6,[r5] .L22251: bl Can_CheckInitialized cmp r0,1 bne .L21960 cpy r1,r7 movs r0,22 .L22253: bl Can_CheckController cmp r0,1 itttt eq ldrb r0,[r6,68] cmp r0,1 ldrb r0,[r5,1452] cmp r0,1 bne .L21960 ldrb r0,[r6,2] .L22255: bl Can_Drv_ClearInjection uxtb r4,r0 cmp r4,0 it eq strb r4,[r5,1452] .L21960: cpy r0,r4 .L22257: pop {r4-r7,pc} .endf Can_ClearInjectError ;ReturnVal r4 local ;ConfigPtr r6 local ;ControllerId r7 param .section ".ghcalltbl","" .L22252: .data.w .L22251 .endo .L22252 .L22254: .data.w .L22253 .endo .L22254 .L22256: .data.w .L22255 .endo .L22256 .section ".ghrettbl","" .L22258: .data.w .L22257 .endo .L22258 .section ".mcal_code","ax" ..gh.f.f.1.a.1.e.27: .endo ..gh.f.f.1.a.1.e.27 Can_MainFunction_BusOff:: .L22309: ret .endf Can_MainFunction_BusOff .section ".bss","awb" .L22295: .endo .L22295 .section ".ghrettbl","" .L22310: .data.w .L22309 .endo .L22310 .section ".mcal_code","ax" ;Can_PreDefinedConfigPtr Can_PreDefinedConfigPtr import ;Can_DisableInterruptLevel Can_DisableInterruptLevel static ;Can_BaudrateIdConfig Can_BaudrateIdConfig static ;Can_ControllerState Can_ControllerState static ;Can_DriverStatus Can_DriverStatus static ;Can_ConfigPtr Can_ConfigPtr static ;Can_ControllerConfigPtr Can_ControllerConfigPtr static ;Can_HwObjectConfigPtr Can_HwObjectConfigPtr static ;Can_Status0 Can_Status0 static ;Can_TxPduId Can_TxPduId static ;Can_HwToMapMbIndex Can_HwToMapMbIndex static ;Can_State Can_State static ;Can_InterruptEnableStatus Can_InterruptEnableStatus static ;Can_EccInjectionStatus Can_EccInjectionStatus static ;____UNNAMED_1_static_in_Can_SetControllerFifoFilter ____UNNAMED_1_static_in_Can_SetControllerFifoFilter static .global Can_PreDefinedConfigPtr .ghsnote info, 27, 3, 640