I happily found an alternative fix, after poking around in the gcc function attributes there exists function attributes that mark the function as an interrupt and theirs many of them depending on which processor your targeting.
If your targeting ARM like I am and like others are in this thread then
`__attribute__ ((interrupt))`
is the attribute for ARM. I just popped that in and all the problems went away. It worked like magic. I was able to apply full optimization along with stripping of everything and de-duplicating, you name it, no problems whatsoever.
With that attribute, as I said above, I didn't have to muck around with ordering of code which may be easier for some but for me it's more difficult given my IDE so I'm glad I didn't have to delve too deeply into that.
I happily found an alternative fix, after poking around in the gcc function attributes there exists function attributes that mark the function as an interrupt and theirs many of them depending on which processor your targeting.
If your targeting ARM like I am and like others are in this thread then
`__attribute__ ((interrupt))`
is the attribute for ARM. I just popped that in and all the problems went away. It worked like magic. I was able to apply full optimization along with stripping of everything and de-duplicating, you name it, no problems whatsoever.
With that attribute, as I said above, I didn't have to muck around with ordering of code which may be easier for some but for me it's more difficult given my IDE so I'm glad I didn't have to delve too deeply into that.