Skip to content

Commit f1a394e

Browse files
Merge branch '54-always_inline' of https://github.com/RickKimball/Arduino_STM32 into development
2 parents e9e9048 + f9aa37e commit f1a394e

11 files changed

Lines changed: 31 additions & 27 deletions

File tree

STM32F1/cores/maple/ext_interrupts.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ void detachInterrupt(uint8 pin);
106106
*
107107
* @see noInterrupts()
108108
*/
109-
static __always_inline void interrupts() {
109+
static inline __always_inline void interrupts() {
110110
nvic_globalirq_enable();
111111
}
112112

@@ -120,7 +120,7 @@ static __always_inline void interrupts() {
120120
*
121121
* @see interrupts()
122122
*/
123-
static __always_inline void noInterrupts() {
123+
static inline __always_inline void noInterrupts() {
124124
nvic_globalirq_disable();
125125
}
126126

STM32F1/cores/maple/libmaple/exti.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,15 +250,15 @@ void __irq_exti15_10(void) {
250250
* won't actually be cleared in time and the ISR will fire again. To
251251
* compensate, this function NOPs for 2 cycles after clearing the
252252
* pending bits to ensure it takes effect. */
253-
static __always_inline void clear_pending_msk(uint32 exti_msk) {
253+
static inline __always_inline void clear_pending_msk(uint32 exti_msk) {
254254
EXTI_BASE->PR = exti_msk;
255255
asm volatile("nop");
256256
asm volatile("nop");
257257
}
258258

259259
/* This dispatch routine is for non-multiplexed EXTI lines only; i.e.,
260260
* it doesn't check EXTI_PR. */
261-
static __always_inline void dispatch_single_exti(uint32 exti) {
261+
static inline __always_inline void dispatch_single_exti(uint32 exti) {
262262
voidArgumentFuncPtr handler = exti_channels[exti].handler;
263263

264264
if (!handler) {
@@ -270,7 +270,7 @@ static __always_inline void dispatch_single_exti(uint32 exti) {
270270
}
271271

272272
/* Dispatch routine for EXTIs which share an IRQ. */
273-
static __always_inline void dispatch_extis(uint32 start, uint32 stop) {
273+
static inline __always_inline void dispatch_extis(uint32 start, uint32 stop) {
274274
uint32 pr = EXTI_BASE->PR;
275275
uint32 handled_msk = 0;
276276
uint32 exti;

STM32F1/system/libmaple/dma_private.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
/* Wrap this in an ifdef to shut up GCC. (We provide DMA_GET_HANDLER
3838
* in the series support files, which need dma_irq_handler().) */
3939
#ifdef DMA_GET_HANDLER
40-
static __always_inline void dma_irq_handler(dma_dev *dev, dma_tube tube) {
40+
static inline __always_inline void dma_irq_handler(dma_dev *dev, dma_tube tube) {
4141

4242
void (*handler)(void) = DMA_GET_HANDLER(dev, tube);
4343
if (handler) {

STM32F1/system/libmaple/include/libmaple/libmaple_types.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,12 @@ typedef void (*voidArgumentFuncPtr)(void *);
5757
#define __packed __attribute__((__packed__))
5858
#define __deprecated __attribute__((__deprecated__))
5959
#define __weak __attribute__((weak))
60-
#define __always_inline inline __attribute__((always_inline))
60+
#ifndef __always_inline
61+
#define __always_inline __attribute__((always_inline))
62+
#endif
63+
#ifndef __unused
6164
#define __unused __attribute__((unused))
65+
#endif
6266

6367
#ifndef NULL
6468
#define NULL 0

STM32F1/system/libmaple/include/libmaple/nvic.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,14 @@ void nvic_sys_reset();
109109
/**
110110
* Enables interrupts and configurable fault handlers (clear PRIMASK).
111111
*/
112-
static __always_inline void nvic_globalirq_enable() {
112+
static inline __always_inline void nvic_globalirq_enable() {
113113
asm volatile("cpsie i");
114114
}
115115

116116
/**
117117
* Disable interrupts and configurable fault handlers (set PRIMASK).
118118
*/
119-
static __always_inline void nvic_globalirq_disable() {
119+
static inline __always_inline void nvic_globalirq_disable() {
120120
asm volatile("cpsid i");
121121
}
122122

STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ int usb_cdcacm_get_n_data_bits(void); /* bDataBits */
169169

170170
void usb_cdcacm_set_hooks(unsigned hook_flags, void (*hook)(unsigned, void*));
171171

172-
static __always_inline void usb_cdcacm_remove_hooks(unsigned hook_flags) {
172+
static inline __always_inline void usb_cdcacm_remove_hooks(unsigned hook_flags) {
173173
usb_cdcacm_set_hooks(hook_flags, 0);
174174
}
175175

STM32F1/system/libmaple/stm32f1/include/series/gpio.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ typedef exti_num afio_exti_num;
484484
/**
485485
* @brief Deprecated. Use exti_select(exti, port) instead.
486486
*/
487-
static __always_inline void afio_exti_select(exti_num exti, exti_cfg port) {
487+
static inline __always_inline void afio_exti_select(exti_num exti, exti_cfg port) {
488488
exti_select(exti, port);
489489
}
490490

STM32F1/system/libmaple/stm32f1/include/series/spi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ extern void spi_config_gpios(struct spi_dev*, uint8,
7575
* @brief Deprecated. Use spi_config_gpios() instead.
7676
* @see spi_config_gpios()
7777
*/
78-
static __always_inline void spi_gpio_cfg(uint8 as_master,
78+
static inline __always_inline void spi_gpio_cfg(uint8 as_master,
7979
struct gpio_dev *nss_dev,
8080
uint8 nss_bit,
8181
struct gpio_dev *comm_dev,

STM32F1/system/libmaple/stm32f2/include/series/dma.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,7 @@ void dma_set_mem_n_addr(dma_dev *dev, dma_tube tube, int n,
707707
* @param tube Tube whose memory 0 address to set
708708
* @param addr Address to use as memory 0
709709
*/
710-
static __always_inline void
710+
static inline __always_inline void
711711
dma_set_mem0_addr(dma_dev *dev, dma_tube tube, __io void *addr) {
712712
dma_set_mem_n_addr(dev, tube, 0, addr);
713713
}
@@ -720,13 +720,13 @@ dma_set_mem0_addr(dma_dev *dev, dma_tube tube, __io void *addr) {
720720
* @param tube Tube whose memory 1 address to set
721721
* @param addr Address to use as memory 1
722722
*/
723-
static __always_inline void
723+
static inline __always_inline void
724724
dma_set_mem1_addr(dma_dev *dev, dma_tube tube, __io void *addr) {
725725
dma_set_mem_n_addr(dev, tube, 1, addr);
726726
}
727727

728728
/* Assume the user means SM0AR in a non-double-buffered configuration. */
729-
static __always_inline void
729+
static inline __always_inline void
730730
dma_set_mem_addr(dma_dev *dev, dma_tube tube, __io void *addr) {
731731
dma_set_mem0_addr(dev, tube, addr);
732732
}
@@ -743,7 +743,7 @@ static inline dma_xfer_size dma_get_per_size(dma_dev *dev, dma_tube tube) {
743743
void dma_enable_fifo(dma_dev *dev, dma_tube tube);
744744
void dma_disable_fifo(dma_dev *dev, dma_tube tube);
745745

746-
static __always_inline int dma_is_fifo_enabled(dma_dev *dev, dma_tube tube) {
746+
static inline __always_inline int dma_is_fifo_enabled(dma_dev *dev, dma_tube tube) {
747747
return dma_tube_regs(dev, tube)->SFCR & DMA_SFCR_DMDIS;
748748
}
749749

@@ -769,7 +769,7 @@ static __always_inline int dma_is_fifo_enabled(dma_dev *dev, dma_tube tube) {
769769
* I can't imagine why ST didn't just use a byte for each group. The
770770
* bits fit, and it would have made functions like these simpler and
771771
* faster. Oh well. */
772-
static __always_inline uint32 _dma_sr_fcr_shift(dma_tube tube) {
772+
static inline __always_inline uint32 _dma_sr_fcr_shift(dma_tube tube) {
773773
switch (tube) {
774774
case DMA_S0: /* fall through */
775775
case DMA_S4:

STM32F1/system/libmaple/timer_private.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@
121121
* line may be shared with another timer. For example, the timer 1
122122
* update interrupt shares an IRQ line with the timer 10 interrupt on
123123
* STM32F1 (XL-density), STM32F2, and STM32F4. */
124-
static __always_inline void dispatch_single_irq(timer_dev *dev,
124+
static inline __always_inline void dispatch_single_irq(timer_dev *dev,
125125
timer_interrupt_id iid,
126126
uint32 irq_mask) {
127127
timer_bas_reg_map *regs = (dev->regs).bas;
@@ -145,15 +145,15 @@ static __always_inline void dispatch_single_irq(timer_dev *dev,
145145
} \
146146
} while (0)
147147

148-
static __always_inline void dispatch_adv_brk(timer_dev *dev) {
148+
static inline __always_inline void dispatch_adv_brk(timer_dev *dev) {
149149
dispatch_single_irq(dev, TIMER_BREAK_INTERRUPT, TIMER_SR_BIF);
150150
}
151151

152-
static __always_inline void dispatch_adv_up(timer_dev *dev) {
152+
static inline __always_inline void dispatch_adv_up(timer_dev *dev) {
153153
dispatch_single_irq(dev, TIMER_UPDATE_INTERRUPT, TIMER_SR_UIF);
154154
}
155155

156-
static __always_inline void dispatch_adv_trg_com(timer_dev *dev) {
156+
static inline __always_inline void dispatch_adv_trg_com(timer_dev *dev) {
157157
timer_adv_reg_map *regs = (dev->regs).adv;
158158
uint32 dsr = regs->DIER & regs->SR;
159159
void (**hs)(void) = dev->handlers;
@@ -168,7 +168,7 @@ static __always_inline void dispatch_adv_trg_com(timer_dev *dev) {
168168
regs->SR &= ~handled;
169169
}
170170

171-
static __always_inline void dispatch_adv_cc(timer_dev *dev) {
171+
static inline __always_inline void dispatch_adv_cc(timer_dev *dev) {
172172
timer_adv_reg_map *regs = (dev->regs).adv;
173173
uint32 dsr = regs->DIER & regs->SR;
174174
void (**hs)(void) = dev->handlers;
@@ -182,7 +182,7 @@ static __always_inline void dispatch_adv_cc(timer_dev *dev) {
182182
regs->SR &= ~handled;
183183
}
184184

185-
static __always_inline void dispatch_general(timer_dev *dev) {
185+
static inline __always_inline void dispatch_general(timer_dev *dev) {
186186
timer_gen_reg_map *regs = (dev->regs).gen;
187187
uint32 dsr = regs->DIER & regs->SR;
188188
void (**hs)(void) = dev->handlers;
@@ -200,7 +200,7 @@ static __always_inline void dispatch_general(timer_dev *dev) {
200200

201201
/* On F1 (XL-density), F2, and F4, TIM9 and TIM12 are restricted
202202
* general-purpose timers with update, CC1, CC2, and TRG interrupts. */
203-
static __always_inline void dispatch_tim_9_12(timer_dev *dev) {
203+
static inline __always_inline void dispatch_tim_9_12(timer_dev *dev) {
204204
timer_gen_reg_map *regs = (dev->regs).gen;
205205
uint32 dsr = regs->DIER & regs->SR;
206206
void (**hs)(void) = dev->handlers;
@@ -216,7 +216,7 @@ static __always_inline void dispatch_tim_9_12(timer_dev *dev) {
216216

217217
/* On F1 (XL-density), F2, and F4, timers 10, 11, 13, and 14 are
218218
* restricted general-purpose timers with update and CC1 interrupts. */
219-
static __always_inline void dispatch_tim_10_11_13_14(timer_dev *dev) {
219+
static inline __always_inline void dispatch_tim_10_11_13_14(timer_dev *dev) {
220220
timer_gen_reg_map *regs = (dev->regs).gen;
221221
uint32 dsr = regs->DIER & regs->SR;
222222
void (**hs)(void) = dev->handlers;
@@ -228,7 +228,7 @@ static __always_inline void dispatch_tim_10_11_13_14(timer_dev *dev) {
228228
regs->SR &= ~handled;
229229
}
230230

231-
static __always_inline void dispatch_basic(timer_dev *dev) {
231+
static inline __always_inline void dispatch_basic(timer_dev *dev) {
232232
dispatch_single_irq(dev, TIMER_UPDATE_INTERRUPT, TIMER_SR_UIF);
233233
}
234234

0 commit comments

Comments
 (0)