~ruther/qmk_firmware

3a5e4253fcfe840170df5ae1ce623ab72c942d70 — Nick Brassel 1 year, 8 months ago 0fcd13f
Add simpler method for relocating functions to RAM. (#21804)

4 files changed, 32 insertions(+), 0 deletions(-)

A platforms/arm_atsam/_util.h
A platforms/avr/_util.h
A platforms/chibios/_util.h
M quantum/util.h
A platforms/arm_atsam/_util.h => platforms/arm_atsam/_util.h +9 -0
@@ 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

A platforms/avr/_util.h => platforms/avr/_util.h +10 -0
@@ 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

A platforms/chibios/_util.h => platforms/chibios/_util.h +9 -0
@@ 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

M quantum/util.h => quantum/util.h +4 -0
@@ 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