commit 3a5e4253fcfe840170df5ae1ce623ab72c942d70
parent 0fcd13f55225c4545d828e1898c219ef3cae578f
Author: Nick Brassel <nick@tzarc.org>
Date: Wed, 22 Nov 2023 12:08:52 +1100
Add simpler method for relocating functions to RAM. (#21804)
Diffstat:
4 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/platforms/arm_atsam/_util.h 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
@@ -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
@@ -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
diff --git a/quantum/util.h b/quantum/util.h
@@ -50,3 +50,7 @@
#if !defined(PACKED)
# define PACKED __attribute__((__packed__))
#endif
+
+#if __has_include("_util.h")
+# include "_util.h" /* Include the platform's _util.h */
+#endif