Browse Source

Add simpler method for relocating functions to RAM. (#21804)

Nick Brassel 2 years ago
parent
commit
3a5e4253fc
4 changed files with 32 additions and 0 deletions
  1. 9 0
      platforms/arm_atsam/_util.h
  2. 10 0
      platforms/avr/_util.h
  3. 9 0
      platforms/chibios/_util.h
  4. 4 0
      quantum/util.h

+ 9 - 0
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

+ 10 - 0
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

+ 9 - 0
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

+ 4 - 0
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