On Mon, 2016-07-25 at 19:30 +0530, Richard Henderson wrote: > > Or can they also be called outside of that context ? > > No, not without a valid return address. > > E.g. it's not valid to have one helper call another, and for the second > helper > use GETPC. For this, typically, one must factor out a common function which > accepts a "retaddr" argument, which the callers must fill in with GETPC.
Right, I've figured that out. I notice that the cpu_ldl_code() are sprinkled in parts that are "chancy". For example we have one in powerpc_excp() to read the faulting instruction, though that *should* never fail it's till not great. I haven't completely figured out what code path instruction translation faults take, I assume we longjmp out of the translation loop the same was as we do out of the execution loop ? Note: I've started cleaning that on ppc (but not fixing the -2 bug yet) in there: very much a work in progress but I'd be happy to have initial feedback (ignore patch 1 about MOL OSI, it's unrelated): https://github.com/ozbenh/qemu/commits/wip Cheers, Ben.