aboutsummaryrefslogtreecommitdiff
path: root/cortex-m-rt/macros/src
diff options
context:
space:
mode:
authorGravatar Jorge Aparicio <jorge@japaric.io> 2018-10-26 20:45:59 +0200
committerGravatar Jorge Aparicio <jorge@japaric.io> 2018-10-26 20:45:59 +0200
commit01802586446225d43790e160768dd6bfb07590a4 (patch)
tree3e7ac8f340beebbfe4f0e9be6a53e1e74820e605 /cortex-m-rt/macros/src
parent58cdad2fba9763ac590bb0460ecd7193014a1e12 (diff)
downloadcortex-m-01802586446225d43790e160768dd6bfb07590a4.tar.gz
cortex-m-01802586446225d43790e160768dd6bfb07590a4.tar.zst
cortex-m-01802586446225d43790e160768dd6bfb07590a4.zip
entry/exception/interrupt: forward `static mut` attributes
this is required to implement safe interfaces to things like writable Flash (e.g. EEPROM emulation) which require the `#[link_section]` attribute.
Diffstat (limited to 'cortex-m-rt/macros/src')
-rw-r--r--cortex-m-rt/macros/src/lib.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/cortex-m-rt/macros/src/lib.rs b/cortex-m-rt/macros/src/lib.rs
index 560a05f..dd89f06 100644
--- a/cortex-m-rt/macros/src/lib.rs
+++ b/cortex-m-rt/macros/src/lib.rs
@@ -113,6 +113,7 @@ pub fn entry(args: TokenStream, input: TokenStream) -> TokenStream {
let vars = statics
.into_iter()
.map(|var| {
+ let attrs = var.attrs;
let ident = var.ident;
let ty = var.ty;
let expr = var.expr;
@@ -120,6 +121,7 @@ pub fn entry(args: TokenStream, input: TokenStream) -> TokenStream {
quote!(
#[allow(non_snake_case)]
let #ident: &'static mut #ty = unsafe {
+ #(#attrs)*
static mut #ident: #ty = #expr;
&mut #ident
@@ -398,6 +400,7 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
let vars = statics
.into_iter()
.map(|var| {
+ let attrs = var.attrs;
let ident = var.ident;
let ty = var.ty;
let expr = var.expr;
@@ -405,6 +408,7 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
quote!(
#[allow(non_snake_case)]
let #ident: &mut #ty = unsafe {
+ #(#attrs)*
static mut #ident: #ty = #expr;
&mut #ident
@@ -539,6 +543,7 @@ pub fn interrupt(args: TokenStream, input: TokenStream) -> TokenStream {
let vars = statics
.into_iter()
.map(|var| {
+ let attrs = var.attrs;
let ident = var.ident;
let ty = var.ty;
let expr = var.expr;
@@ -546,6 +551,7 @@ pub fn interrupt(args: TokenStream, input: TokenStream) -> TokenStream {
quote!(
#[allow(non_snake_case)]
let #ident: &mut #ty = unsafe {
+ #(#attrs)*
static mut #ident: #ty = #expr;
&mut #ident