summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-10-19 00:20:10 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-10-19 00:20:10 +0300
commit9514d847feb70c330d310a366b92013960729bdc (patch)
treeeb231d0a20847fba154d07f4e7f58f6b4865878c /esp8266
parent462748de0c2668d40b7f2ea8f2b264d134d5d39b (diff)
downloadmicropython-9514d847feb70c330d310a366b92013960729bdc.tar.gz
micropython-9514d847feb70c330d310a366b92013960729bdc.zip
esp8266: Add MP_FASTCODE modifier to put a function to iRAM.
It can be used in the following manner: void MP_FASTCODE(foo)(int arg) { ... }
Diffstat (limited to 'esp8266')
-rw-r--r--esp8266/esp8266.ld3
-rw-r--r--esp8266/mpconfigport.h2
2 files changed, 4 insertions, 1 deletions
diff --git a/esp8266/esp8266.ld b/esp8266/esp8266.ld
index 010a4cac60..5fb6f13796 100644
--- a/esp8266/esp8266.ld
+++ b/esp8266/esp8266.ld
@@ -202,7 +202,8 @@ SECTIONS
*(.entry.text)
*(.init.literal)
*(.init)
- *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
+ *(.literal .text .literal.* .text.* .iram0.literal .iram0.text .iram0.text.*.literal .iram0.text.*)
+ *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
*(.fini.literal)
*(.fini)
*(.gnu.version)
diff --git a/esp8266/mpconfigport.h b/esp8266/mpconfigport.h
index 201057f128..602b3e9c81 100644
--- a/esp8266/mpconfigport.h
+++ b/esp8266/mpconfigport.h
@@ -182,4 +182,6 @@ extern const struct _mp_obj_module_t onewire_module;
#define MICROPY_HW_MCU_NAME "ESP8266"
#define MICROPY_PY_SYS_PLATFORM "esp8266"
+#define MP_FASTCODE(n) __attribute__((section(".iram0.text." #n))) n
+
#define _assert(expr) ((expr) ? (void)0 : __assert_func(__FILE__, __LINE__, __func__, #expr))