422 lines
11 KiB
NASM
422 lines
11 KiB
NASM
;--------------------------------------------------------
|
|
; File Created by SDCC : free open source ISO C Compiler
|
|
; Version 4.5.0 #15242 (Linux)
|
|
;--------------------------------------------------------
|
|
.module stm8l15x_itc
|
|
|
|
;--------------------------------------------------------
|
|
; Public variables in this module
|
|
;--------------------------------------------------------
|
|
.globl _ITC_GetCPUCC
|
|
.globl _ITC_DeInit
|
|
.globl _ITC_GetSoftIntStatus
|
|
.globl _ITC_GetSoftwarePriority
|
|
.globl _ITC_SetSoftwarePriority
|
|
;--------------------------------------------------------
|
|
; ram data
|
|
;--------------------------------------------------------
|
|
.area DATA
|
|
;--------------------------------------------------------
|
|
; ram data
|
|
;--------------------------------------------------------
|
|
.area INITIALIZED
|
|
;--------------------------------------------------------
|
|
; absolute external ram data
|
|
;--------------------------------------------------------
|
|
.area DABS (ABS)
|
|
|
|
; default segment ordering for linker
|
|
.area HOME
|
|
.area GSINIT
|
|
.area GSFINAL
|
|
.area CONST
|
|
.area INITIALIZER
|
|
.area CODE
|
|
|
|
;--------------------------------------------------------
|
|
; global & static initialisations
|
|
;--------------------------------------------------------
|
|
.area HOME
|
|
.area GSINIT
|
|
.area GSFINAL
|
|
.area GSINIT
|
|
;--------------------------------------------------------
|
|
; Home
|
|
;--------------------------------------------------------
|
|
.area HOME
|
|
.area HOME
|
|
;--------------------------------------------------------
|
|
; code
|
|
;--------------------------------------------------------
|
|
.area CODE
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 56: uint8_t ITC_GetCPUCC(void)
|
|
; -----------------------------------------
|
|
; function ITC_GetCPUCC
|
|
; -----------------------------------------
|
|
_ITC_GetCPUCC:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 65: __asm__("push cc");
|
|
push cc
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 66: __asm__("pop a");
|
|
pop a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 71: }
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 90: void ITC_DeInit(void)
|
|
; -----------------------------------------
|
|
; function ITC_DeInit
|
|
; -----------------------------------------
|
|
_ITC_DeInit:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 92: ITC->ISPR1 = ITC_SPRX_RESET_VALUE;
|
|
mov 0x7f70+0, #0xff
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 93: ITC->ISPR2 = ITC_SPRX_RESET_VALUE;
|
|
mov 0x7f71+0, #0xff
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 94: ITC->ISPR3 = ITC_SPRX_RESET_VALUE;
|
|
mov 0x7f72+0, #0xff
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 95: ITC->ISPR4 = ITC_SPRX_RESET_VALUE;
|
|
mov 0x7f73+0, #0xff
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 96: ITC->ISPR5 = ITC_SPRX_RESET_VALUE;
|
|
mov 0x7f74+0, #0xff
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 97: ITC->ISPR6 = ITC_SPRX_RESET_VALUE;
|
|
mov 0x7f75+0, #0xff
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 98: ITC->ISPR7 = ITC_SPRX_RESET_VALUE;
|
|
mov 0x7f76+0, #0xff
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 99: ITC->ISPR8 = ITC_SPRX_RESET_VALUE;
|
|
mov 0x7f77+0, #0xff
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 100: }
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 107: uint8_t ITC_GetSoftIntStatus(void)
|
|
; -----------------------------------------
|
|
; function ITC_GetSoftIntStatus
|
|
; -----------------------------------------
|
|
_ITC_GetSoftIntStatus:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 109: return ((uint8_t)(ITC_GetCPUCC() & CPU_SOFT_INT_DISABLED));
|
|
call _ITC_GetCPUCC
|
|
and a, #0x28
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 110: }
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 117: ITC_PriorityLevel_TypeDef ITC_GetSoftwarePriority(IRQn_TypeDef IRQn)
|
|
; -----------------------------------------
|
|
; function ITC_GetSoftwarePriority
|
|
; -----------------------------------------
|
|
_ITC_GetSoftwarePriority:
|
|
pushw x
|
|
ld xl, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 119: uint8_t Value = 0;
|
|
clr a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 126: Mask = (uint8_t)(0x03U << ((IRQn % 4U) * 2U));
|
|
ldw y, x
|
|
push a
|
|
ld a, yl
|
|
and a, #0x03
|
|
ld xh, a
|
|
pop a
|
|
rlwa x
|
|
ld (0x01, sp), a
|
|
rrwa x
|
|
sll (0x01, sp)
|
|
push a
|
|
ld a, #0x03
|
|
ld (0x03, sp), a
|
|
ld a, (0x02, sp)
|
|
jreq 00139$
|
|
00138$:
|
|
sll (0x03, sp)
|
|
dec a
|
|
jrne 00138$
|
|
00139$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 128: switch (IRQn)
|
|
ld a, xl
|
|
cp a, #0x1d
|
|
pop a
|
|
jrugt 00128$
|
|
rlwa x
|
|
clr a
|
|
rrwa x
|
|
sllw x
|
|
ldw x, (#00141$, x)
|
|
jp (x)
|
|
00141$:
|
|
.dw #00128$
|
|
.dw #00103$
|
|
.dw #00103$
|
|
.dw #00103$
|
|
.dw #00107$
|
|
.dw #00107$
|
|
.dw #00107$
|
|
.dw #00107$
|
|
.dw #00111$
|
|
.dw #00111$
|
|
.dw #00111$
|
|
.dw #00111$
|
|
.dw #00115$
|
|
.dw #00115$
|
|
.dw #00115$
|
|
.dw #00115$
|
|
.dw #00128$
|
|
.dw #00118$
|
|
.dw #00118$
|
|
.dw #00118$
|
|
.dw #00121$
|
|
.dw #00121$
|
|
.dw #00121$
|
|
.dw #00128$
|
|
.dw #00128$
|
|
.dw #00124$
|
|
.dw #00124$
|
|
.dw #00124$
|
|
.dw #00126$
|
|
.dw #00126$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 132: case DMA1_CHANNEL2_3_IRQn:
|
|
00103$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 133: Value = (uint8_t)(ITC->ISPR1 & Mask); /* Read software priority */
|
|
ld a, 0x7f70
|
|
and a, (0x02, sp)
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 134: break;
|
|
jra 00128$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 144: case EXTID_IRQn:
|
|
00107$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 150: Value = (uint8_t)(ITC->ISPR2 & Mask); /* Read software priority */
|
|
ld a, 0x7f71
|
|
and a, (0x02, sp)
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 151: break;
|
|
jra 00128$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 156: case EXTI3_IRQn:
|
|
00111$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 157: Value = (uint8_t)(ITC->ISPR3 & Mask); /* Read software priority */
|
|
ld a, 0x7f72
|
|
and a, (0x02, sp)
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 158: break;
|
|
jra 00128$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 163: case EXTI7_IRQn:
|
|
00115$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 164: Value = (uint8_t)(ITC->ISPR4 & Mask); /* Read software priority */
|
|
ld a, 0x7f73
|
|
and a, (0x02, sp)
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 165: break;
|
|
jra 00128$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 177: case TIM2_UPD_OVF_TRG_BRK_IRQn:
|
|
00118$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 182: Value = (uint8_t)(ITC->ISPR5 & Mask); /* Read software priority */
|
|
ld a, 0x7f74
|
|
and a, (0x02, sp)
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 183: break;
|
|
jra 00128$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 192: case TIM3_CC_IRQn:
|
|
00121$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 198: Value = (uint8_t)(ITC->ISPR6 & Mask); /* Read software priority */
|
|
ld a, 0x7f75
|
|
and a, (0x02, sp)
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 199: break;
|
|
jra 00128$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 208: case USART1_TX_IRQn:
|
|
00124$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 212: Value = (uint8_t)(ITC->ISPR7 & Mask); /* Read software priority */
|
|
ld a, 0x7f76
|
|
and a, (0x02, sp)
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 213: break;
|
|
jra 00128$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 218: case I2C1_IRQn:
|
|
00126$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 223: Value = (uint8_t)(ITC->ISPR8 & Mask); /* Read software priority */
|
|
ld a, 0x7f77
|
|
and a, (0x02, sp)
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 228: }
|
|
00128$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 230: Value >>= (uint8_t)((IRQn % 4u) * 2u);
|
|
push a
|
|
ld a, (0x02, sp)
|
|
jreq 00143$
|
|
00142$:
|
|
srl (1, sp)
|
|
dec a
|
|
jrne 00142$
|
|
00143$:
|
|
pop a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 232: return((ITC_PriorityLevel_TypeDef)Value);
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 234: }
|
|
popw x
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 253: void ITC_SetSoftwarePriority(IRQn_TypeDef IRQn, ITC_PriorityLevel_TypeDef ITC_PriorityLevel)
|
|
; -----------------------------------------
|
|
; function ITC_SetSoftwarePriority
|
|
; -----------------------------------------
|
|
_ITC_SetSoftwarePriority:
|
|
pushw x
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 267: Mask = (uint8_t)(~(uint8_t)(0x03U << ((IRQn % 4U) * 2U)));
|
|
ld xl, a
|
|
and a, #0x03
|
|
sll a
|
|
ld xh, a
|
|
ld a, #0x03
|
|
push a
|
|
ld a, xh
|
|
tnz a
|
|
jreq 00139$
|
|
00138$:
|
|
sll (1, sp)
|
|
dec a
|
|
jrne 00138$
|
|
00139$:
|
|
pop a
|
|
cpl a
|
|
ld (0x01, sp), a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 269: NewPriority = (uint8_t)((uint8_t)(ITC_PriorityLevel) << ((IRQn % 4U) * 2U));
|
|
ld a, (0x05, sp)
|
|
push a
|
|
ld a, xh
|
|
tnz a
|
|
jreq 00141$
|
|
00140$:
|
|
sll (1, sp)
|
|
dec a
|
|
jrne 00140$
|
|
00141$:
|
|
pop a
|
|
ld (0x02, sp), a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 271: switch (IRQn)
|
|
ld a, xl
|
|
cp a, #0x1d
|
|
jrule 00142$
|
|
jp 00129$
|
|
00142$:
|
|
clr a
|
|
ld xh, a
|
|
sllw x
|
|
ldw x, (#00143$, x)
|
|
jp (x)
|
|
00143$:
|
|
.dw #00129$
|
|
.dw #00103$
|
|
.dw #00103$
|
|
.dw #00103$
|
|
.dw #00107$
|
|
.dw #00107$
|
|
.dw #00107$
|
|
.dw #00107$
|
|
.dw #00111$
|
|
.dw #00111$
|
|
.dw #00111$
|
|
.dw #00111$
|
|
.dw #00115$
|
|
.dw #00115$
|
|
.dw #00115$
|
|
.dw #00115$
|
|
.dw #00129$
|
|
.dw #00118$
|
|
.dw #00118$
|
|
.dw #00118$
|
|
.dw #00121$
|
|
.dw #00121$
|
|
.dw #00121$
|
|
.dw #00129$
|
|
.dw #00129$
|
|
.dw #00124$
|
|
.dw #00124$
|
|
.dw #00124$
|
|
.dw #00126$
|
|
.dw #00126$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 275: case DMA1_CHANNEL2_3_IRQn:
|
|
00103$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 276: ITC->ISPR1 &= Mask;
|
|
ld a, 0x7f70
|
|
and a, (0x01, sp)
|
|
ld 0x7f70, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 277: ITC->ISPR1 |= NewPriority;
|
|
ld a, 0x7f70
|
|
or a, (0x02, sp)
|
|
ld 0x7f70, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 278: break;
|
|
jra 00129$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 288: case EXTID_IRQn:
|
|
00107$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 294: ITC->ISPR2 &= Mask;
|
|
ld a, 0x7f71
|
|
and a, (0x01, sp)
|
|
ld 0x7f71, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 295: ITC->ISPR2 |= NewPriority;
|
|
ld a, 0x7f71
|
|
or a, (0x02, sp)
|
|
ld 0x7f71, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 296: break;
|
|
jra 00129$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 301: case EXTI3_IRQn:
|
|
00111$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 302: ITC->ISPR3 &= Mask;
|
|
ld a, 0x7f72
|
|
and a, (0x01, sp)
|
|
ld 0x7f72, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 303: ITC->ISPR3 |= NewPriority;
|
|
ld a, 0x7f72
|
|
or a, (0x02, sp)
|
|
ld 0x7f72, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 304: break;
|
|
jra 00129$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 309: case EXTI7_IRQn:
|
|
00115$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 310: ITC->ISPR4 &= Mask;
|
|
ld a, 0x7f73
|
|
and a, (0x01, sp)
|
|
ld 0x7f73, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 311: ITC->ISPR4 |= NewPriority;
|
|
ld a, 0x7f73
|
|
or a, (0x02, sp)
|
|
ld 0x7f73, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 312: break;
|
|
jra 00129$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 323: case TIM2_UPD_OVF_TRG_BRK_IRQn:
|
|
00118$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 328: ITC->ISPR5 &= Mask;
|
|
ld a, 0x7f74
|
|
and a, (0x01, sp)
|
|
ld 0x7f74, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 329: ITC->ISPR5 |= NewPriority;
|
|
ld a, 0x7f74
|
|
or a, (0x02, sp)
|
|
ld 0x7f74, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 330: break;
|
|
jra 00129$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 338: case TIM3_CC_IRQn:
|
|
00121$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 344: ITC->ISPR6 &= Mask;
|
|
ld a, 0x7f75
|
|
and a, (0x01, sp)
|
|
ld 0x7f75, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 345: ITC->ISPR6 |= NewPriority;
|
|
ld a, 0x7f75
|
|
or a, (0x02, sp)
|
|
ld 0x7f75, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 346: break;
|
|
jra 00129$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 355: case USART1_TX_IRQn:
|
|
00124$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 359: ITC->ISPR7 &= Mask;
|
|
ld a, 0x7f76
|
|
and a, (0x01, sp)
|
|
ld 0x7f76, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 360: ITC->ISPR7 |= NewPriority;
|
|
ld a, 0x7f76
|
|
or a, (0x02, sp)
|
|
ld 0x7f76, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 361: break;
|
|
jra 00129$
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 366: case I2C1_IRQn:
|
|
00126$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 371: ITC->ISPR8 &= Mask;
|
|
ld a, 0x7f77
|
|
and a, (0x01, sp)
|
|
ld 0x7f77, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 372: ITC->ISPR8 |= NewPriority;
|
|
ld a, 0x7f77
|
|
or a, (0x02, sp)
|
|
ld 0x7f77, a
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 377: }
|
|
00129$:
|
|
; ../inc/stm8l151x/src/stm8l15x_itc.c: 378: }
|
|
popw x
|
|
popw x
|
|
pop a
|
|
jp (x)
|
|
.area CODE
|
|
.area CONST
|
|
.area INITIALIZER
|
|
.area CABS (ABS)
|