16#ifndef _PICO_PLATFORM_H
17#define _PICO_PLATFORM_H
20#error pico/platform.h should not be included directly; include pico.h instead
24#include "pico/platform/sections.h"
25#include "pico/platform/panic.h"
27#include "hardware/regs/addressmap.h"
28#include "hardware/regs/sio.h"
31#ifndef PICO_STACK_SIZE
32#define PICO_STACK_SIZE _u(0x800)
37#define PICO_HEAP_SIZE _u(0x800)
41#ifndef PICO_NO_RAM_VECTOR_TABLE
42#define PICO_NO_RAM_VECTOR_TABLE 0
46#ifndef PICO_RP2040_B0_SUPPORTED
47#define PICO_RP2040_B0_SUPPORTED 1
51#ifndef PICO_FLOAT_SUPPORT_ROM_V1
52#define PICO_FLOAT_SUPPORT_ROM_V1 1
56#ifndef PICO_DOUBLE_SUPPORT_ROM_V1
57#define PICO_DOUBLE_SUPPORT_ROM_V1 1
61#ifndef PICO_RP2040_B1_SUPPORTED
62#define PICO_RP2040_B1_SUPPORTED 1
66#ifndef PICO_RP2040_B2_SUPPORTED
67#define PICO_RP2040_B2_SUPPORTED 1
71#ifndef PICO_CLKDIV_ROUND_NEAREST
72#define PICO_CLKDIV_ROUND_NEAREST 1
95 pico_default_asm_volatile(
98 :
"+l" (minimum_cycles) : :
"cc",
"memory"
106 pico_default_asm_volatile (
"bkpt #0" : : :
"memory");
115 return (*(uint32_t *) (SIO_BASE + SIO_CPUID_OFFSET));
133 pico_default_asm_volatile (
"mrs %0, ipsr" :
"=l" (exception));
148 GCC_Pragma(
"GCC diagnostic push")
149 GCC_Pragma(
"GCC diagnostic ignored \"-Warray-bounds\"")
150 return *(uint8_t*)0x13;
151 GCC_Pragma(
"GCC diagnostic pop")
166__asm (
"mul %0, %0, %1" :
"+l" (a) :
"l" (b) : );
168pico_default_asm (
"muls %0, %1" :
"+l" (a) :
"l" (b) :
"cc");
186#define __fast_mul(a, b) __builtin_choose_expr(__builtin_constant_p(b) && !__builtin_constant_p(a), \
187 (__builtin_popcount(b) >= 2 ? __mul_instruction(a,b) : (a)*(b)), \
Macros and definitions common to all rp2 platforms but not specific to any library.
Macros and definitions (and functions when included by non assembly code) to adapt for different comp...