Re: Fwd: Re: Registers used for exception handling on Linux/m68k?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/1/20 2:46 PM, Nathan Sidwell wrote:
Aha!  it is EH_RETURN :) and it appears stack adjustment is something different.

for x86, gcc has:
#define EH_RETURN_DATA_REGNO(N)    ((N) <= DX_REG ? (N) : INVALID_REGNUM)

thus N can either be AX_REG or DX_REG. (which is eax/rax and edx/rdx depending on compilation mode)

for m68k gcc has:
#define EH_RETURN_DATA_REGNO(N) \
  ((N) < 2 ? (N) : INVALID_REGNUM)

so that's registers d0 and d1

I'm guessing EHPersonality:CoreCLR is a different ABI that you're not concerned with.

Yeah, it also seems to be present in the X86 backend only (at least not in the Sparc backend).

Thus I think you want:

getExceptionPointerRegister to return d0 and getExceptionSelectorRegister to return d1.

give that a go, and see if you can throw/catch exceptions between code compiled by your llvm port and a gcc

Perfect, thanks.

hope that helps.
I'll give it a try.

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz@xxxxxxxxxx
`. `'   Freie Universitaet Berlin - glaubitz@xxxxxxxxxxxxxxxxxxx
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913



[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux