<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Dec 18, 2013 at 9:33 AM, Nick Kledzik <span dir="ltr"><<a href="mailto:kledzik@apple.com" target="_blank">kledzik@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div><div class="h5">
<div>On Dec 17, 2013, at 6:04 PM, Nico Weber wrote:</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Dec 17, 2013 at 2:12 PM, Nick Kledzik <span dir="ltr"><<a href="mailto:kledzik@apple.com" target="_blank">kledzik@apple.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div><br><div><div>On Dec 17, 2013, at 1:40 PM, Nico Weber <<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>> wrote:</div>

<br><blockquote type="cite"><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

 </div><blockquote class="gmail_quote" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div style="word-wrap:break-word"><div><br></div><div>I have not investigated deeply how _Unwind_VRS_Get() and friends work.  I thought part of the model was that arm could ship one static library that worked with all processors, and it did so via runtime checks for what registers the processor supported, and the core unwinder was always compiled to only use integer registers.  Meaning the float/vector registers where never saved/restored to the unwind buffer.  That is, calling a setFloatRegister() would change the real processor register and not something in the register set struct.</div>

</div></blockquote><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<br></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

Would that work for unw_set_fpreg / unw_get_fpreg? (I don't know if users call this function directly). Also, 9.3 in <a href="http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038a/IHI0038A_ehabi.pdf" target="_blank">http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038a/IHI0038A_ehabi.pdf</a><span> </span>(remark d, and instruction 11000111 0000iiii and similar) suggest that the exception bytecode modifies float registers in the virtual register bank, and if those modifications are done in real registers, wouldn't things be in an inconsistent state early during phase 2 unwinding, when the bytecode was processed once for phase 1 already?</div>

</blockquote><br></div></div><div>Yes, it would have to know in phase 1 to not manipulate the real VFP registers.   </div><div><br></div><div>But Section 4.7 in that document sounds like VFP registers are lazily saved.  That initially, only integer registers are saved into the register state set.  Then when unwinding, if it sees a frame that says it saved VFP registers, only at that point are VFP registers saved to the register state set. </div>

</div></blockquote></div><br></div><div class="gmail_extra">I see. How about we leave the float register functions stubbed out for now, and we can fill them in once the integer bits of the unwinder work, and then we can figure out how to handle VFP registers :-)</div>
</div></blockquote></div></div>Sounds good to me. </div></div></blockquote></div><br></div><div class="gmail_extra">r197591, thanks!</div></div>