llvm-project/llvm/lib/Target/AVR
Andrew Dona-Couch 1fedd90cc7 [AVR] fix interrupt stack pointer restoration
This patch fixes a corruption of the stack pointer and several registers in any AVR interrupt with non-empty stack frame.  Previously, the callee-saved registers were popped before restoring the stack pointer, causing the pointer math to use the wrong base value while also corrupting the caller's register.  This change fixes the code to restore the stack pointer last before exiting the interrupt service routine.

https://bugs.llvm.org/show_bug.cgi?id=47253

Reviewed By: dylanmckay

Differential Revision: https://reviews.llvm.org/D87735

Patch by Andrew Dona-Couch.
2020-10-01 18:52:13 +13:00
..
AsmParser Don't dereference from a dyn_cast<>. NFCI. 2020-09-14 13:05:17 +01:00
Disassembler [AVR] Disassemble double register instructions 2020-06-23 02:18:04 +02:00
MCTargetDesc [X86][MC][Target] Initial backend support a tune CPU to support -mtune 2020-08-14 15:31:50 -07:00
TargetInfo CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
AVR.h
AVR.td
AVRAsmPrinter.cpp [AsmPrinter][MCStreamer] De-capitalize EmitInstruction and EmitCFI* 2020-02-13 22:08:55 -08:00
AVRCallingConv.td [AVR] Rewrite the function calling convention. 2020-06-23 21:36:18 +12:00
AVRDevices.td Add support for AVR attiny441 and attiny841 2020-08-24 20:28:32 +12:00
AVRExpandPseudoInsts.cpp [AVR][NFC] Use Register instead of unsigned 2020-03-05 11:38:24 +08:00
AVRFrameLowering.cpp [AVR] fix interrupt stack pointer restoration 2020-10-01 18:52:13 +13:00
AVRFrameLowering.h ArrayRef'ize restoreCalleeSavedRegisters. NFCI. 2020-02-29 09:50:23 +01:00
AVRISelDAGToDAG.cpp [AVR][NFC] Use Register instead of unsigned 2020-03-05 11:38:24 +08:00
AVRISelLowering.cpp [SelectionDAG] Use Align/MaybeAlign in calls to getLoad/getStore/getExtLoad/getTruncStore. 2020-09-14 13:54:50 -07:00
AVRISelLowering.h [AVR] Rewrite the function calling convention. 2020-06-23 21:36:18 +12:00
AVRInstrFormats.td [AVR] Disassemble double register instructions 2020-06-23 02:18:04 +02:00
AVRInstrInfo.cpp [AVR] Rewrite the function calling convention. 2020-06-23 21:36:18 +12:00
AVRInstrInfo.h [NFC] unsigned->Register in storeRegTo/loadRegFromStack 2020-02-03 14:22:16 +01:00
AVRInstrInfo.td [AVR] Fix miscompilation of zext + add 2020-06-18 16:51:37 +02:00
AVRMCInstLower.cpp
AVRMCInstLower.h
AVRMachineFunctionInfo.h [AVR] Generalize the previous interrupt bugfix to signal handlers too 2020-03-31 19:33:34 +13:00
AVRRegisterInfo.cpp [AVR] Generalize the previous interrupt bugfix to signal handlers too 2020-03-31 19:33:34 +13:00
AVRRegisterInfo.h [AVR][NFC] Use Register instead of unsigned 2020-03-05 11:38:24 +08:00
AVRRegisterInfo.td [AVR] Rewrite the function calling convention. 2020-06-23 21:36:18 +12:00
AVRRelaxMemOperations.cpp
AVRSelectionDAGInfo.h
AVRSubtarget.cpp [X86][MC][Target] Initial backend support a tune CPU to support -mtune 2020-08-14 15:31:50 -07:00
AVRSubtarget.h [X86][MC][Target] Initial backend support a tune CPU to support -mtune 2020-08-14 15:31:50 -07:00
AVRTargetMachine.cpp Fix AVR build after 777180a32b 2020-01-28 19:22:22 -05:00
AVRTargetMachine.h
AVRTargetObjectFile.cpp [AVR] Do not place functions in .progmem.data 2020-04-20 13:56:38 +02:00
AVRTargetObjectFile.h
CMakeLists.txt
LLVMBuild.txt
README.md
TODO.md

README.md

AVR backend

This experimental backend is for the 8-bit Atmel AVR microcontroller.