- removed the __attribute__((naked)) from ISRs
- removed ISR_ENTER() and ISR_EXIT() macros
Rationale: Cortex-Mx MCUs save registers R0-R4 automatically
on calling ISRs. The naked attribute tells the compiler not
to save any other registers. This is fine, as long as the
code in the ISR is not nested. If nested, it will use also
R4 and R5, which will then lead to currupted registers on
exit of the ISR. Removing the naked will fix this.
This fixes reading more than 2 bytes from the slave device.
In the current implementation the last byte was not read from
data register and the termination sequence buggy.
The transferred bytes were being counted more than once because of a +=
when calling spi_transfer_byte().
This patch should also handle errors from spi_transfer_byte() better
since it is now possible to detect errors _after_ the first byte has
been successfully sent.
Signed-off-by: Joakim Gebart <joakim@gebart.se>