llvm-project/libunwind
whitequark 4f9c59f863 [OR1K] Add the EPCR special-purpose register to register state.
This makes it possible to unwind hardware exception stack frames,
which necessarily save every register and so need an extra column
for storing the return address. CFI for the exception handler could
then look as follows:

.globl exception_vector
exception_vector:
    .cfi_startproc
    .cfi_signal_frame
    .cfi_return_column 32
    l.addi  r1, r1, -0x100
    .cfi_def_cfa_offset 0x100
    l.sw    0x00(r1), r2
    .cfi_offset 2, 0x00-0x100
    l.sw    0x04(r1), r3
    .cfi_offset 3, 0x04-0x100
    l.sw    0x08(r1), r4
    .cfi_offset 4, 0x08-0x100
    l.mfspr r3, r0, SPR_EPCR_BASE
    l.sw    0x78(r1), r3
    .cfi_offset 32, 0x78-0x100
    l.jal   exception_handler
     l.nop
    l.lwz   r2, 0x00(r1)
    l.lwz   r3, 0x04(r1)
    l.lwz   r4, 0x08(r1)
    l.jr    r9
     l.nop
    .cfi_endproc

This register could, of course, also be accessed by the trace
callback or personality function, if so desired.

llvm-svn: 332513
2018-05-16 19:09:48 +00:00
..
cmake build: use POSITION_INDEPENDENT_CODE instead of -fPIC 2017-10-03 20:22:26 +00:00
docs Update docs version to 7.0 2018-01-03 15:58:08 +00:00
include [OR1K] Add the EPCR special-purpose register to register state. 2018-05-16 19:09:48 +00:00
src [OR1K] Add the EPCR special-purpose register to register state. 2018-05-16 19:09:48 +00:00
test [libunwind] Permit additional compiler and linker flags to be passed to tests. 2018-02-27 18:40:04 +00:00
.arcconfig [libunwind] Set up .arcconfig to point to new Diffusion UNW repository 2018-01-10 22:20:03 +00:00
.clang-format unwind: add a .clang-format 2015-05-07 19:50:18 +00:00
CMakeLists.txt [CMake] Support for monorepo layout 2018-04-04 17:57:15 +00:00
LICENSE.TXT Fix the project name in the license file. 2017-02-27 17:47:58 +00:00