Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 3446

SDK • Syntax error in pico_default_asm_volatile("dsb" ::: "memory"); in synch.h

$
0
0
In SDK 1.5.1 rp2_common/hardware_sync/.../sync.h using GCC 13.2.1 arm-none-eabi on lines 156:165 :

Code:

/*! \brief Insert a DSB instruction in to the code path. *  \ingroup hardware_sync * * The DSB (data synchronization barrier) acts as a special kind of data * memory barrier (DMB). The DSB operation completes when all explicit memory * accesses before this instruction complete. */__force_inline static void __dsb(void) {    pico_default_asm_volatile("dsb" : : : "memory"); }
I get the following error:
C:/Users/username/.pico-sdk/sdk/1.5.1/src/rp2_common/hardware_sync/include/hardware/sync.h: In function '__dsb':
C:/Users/username/.pico-sdk/sdk/1.5.1/src/rp2_common/hardware_sync/include/hardware/sync.h:164:36: error: expected ')' before ':' token
164 | pico_default_asm_volatile("dsb" : : : "memory");
| ~ ^~
| )
Can someone explain the meaning and use of the three colons, ":::", in the above. I have searched for an explanation of this construct in either C or C++ thinking it may be a tri-graph symbol (say for token concatenation) and cannot find any references at all. BTW a similar construct appears on lines 167:175 in defining "__isb(void) but there there are spaces separating the colons.

Statistics: Posted by vbhunt — Mon Jun 17, 2024 10:51 pm — Replies 2 — Views 176



Viewing all articles
Browse latest Browse all 3446

Trending Articles