[PATCH] D55763: [Sparc] Add Sparc V8 support

Daniel Cederman via Phabricator reviews at reviews.llvm.org
Mon Dec 17 05:41:57 PST 2018


dcederman created this revision.
dcederman added reviewers: jyknight, mclow.lists, mstorsjo, compnerd.
Herald added subscribers: libcxx-commits, ldionne, JDevlieghere, fedor.sergeev.

Adds the register class implementation for Sparc.
Adds support for DW_CFA_GNU_window_save.
Adds save and restore context functionality.

On Sparc the return address is the address of the call instruction, so an offset needs to be added when returning to skip the call instruction and its delay slot. This can be done with __builtin_extract_return_addr() as I have done in _Unwind_GetIP(), but I'm not sure if that is the right location to place it. Alternatively I think one could just add 8 to the result in getRegister() if the UNW_REG_IP register is accessed, but I have not tested that yet.


Repository:
  rUNW libunwind

https://reviews.llvm.org/D55763

Files:
  include/__libunwind_config.h
  include/libunwind.h
  src/DwarfParser.hpp
  src/Registers.hpp
  src/UnwindCursor.hpp
  src/UnwindLevel1.c
  src/UnwindRegistersRestore.S
  src/UnwindRegistersSave.S
  src/assembly.h
  src/libunwind.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55763.178453.patch
Type: text/x-patch
Size: 12174 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20181217/86846c07/attachment.bin>


More information about the libcxx-commits mailing list