aboutsummaryrefslogtreecommitdiff
path: root/platforms
diff options
context:
space:
mode:
Diffstat (limited to 'platforms')
-rw-r--r--platforms/arm_atsam/_util.h9
-rw-r--r--platforms/avr/_util.h10
-rw-r--r--platforms/chibios/_util.h9
3 files changed, 28 insertions, 0 deletions
diff --git a/platforms/arm_atsam/_util.h b/platforms/arm_atsam/_util.h
new file mode 100644
index 0000000000..38aa9f4472
--- /dev/null
+++ b/platforms/arm_atsam/_util.h
@@ -0,0 +1,9 @@
+// Copyright 2023 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define RESIDENT_IN_RAM(funcname) __attribute__((section(".ramfunc." #funcname), noinline)) funcname
+
+#if __has_include_next("_util.h")
+# include_next "_util.h"
+#endif
diff --git a/platforms/avr/_util.h b/platforms/avr/_util.h
new file mode 100644
index 0000000000..81b94896ba
--- /dev/null
+++ b/platforms/avr/_util.h
@@ -0,0 +1,10 @@
+// Copyright 2023 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+// AVR can't actually run anything from RAM, so just no-op the define.
+#define RESIDENT_IN_RAM(funcname) funcname
+
+#if __has_include_next("_util.h")
+# include_next "_util.h"
+#endif
diff --git a/platforms/chibios/_util.h b/platforms/chibios/_util.h
new file mode 100644
index 0000000000..64eb62fa15
--- /dev/null
+++ b/platforms/chibios/_util.h
@@ -0,0 +1,9 @@
+// Copyright 2023 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define RESIDENT_IN_RAM(funcname) __attribute__((section(".ram0_init." #funcname), noinline)) funcname
+
+#if __has_include_next("_util.h")
+# include_next "_util.h"
+#endif