Date: Thu, 24 Oct 2019 17:54:36 +0300 From: Konstantin Belousov <kostikbel@gmail.com> To: Nick Kostirya <nikolay.kostirya@i11.co> Cc: freebsd-arm@freebsd.org Subject: Re: ucontext Message-ID: <20191024145436.GX73312@kib.kiev.ua> In-Reply-To: <20191024141133.04fb0693@i11.co>
index | next in thread | previous in thread | raw e-mail
On Thu, Oct 24, 2019 at 02:11:33PM +0300, Nick Kostirya via freebsd-arm wrote:
> Hello.
> I want to port MLton to ARM.
> There are file with access to ucontext_t structure.
>
>
> static void catcher (__attribute__ ((unused)) int signo,
> __attribute__ ((unused)) siginfo_t* info,
> void* context) {
> ucontext_t* ucp = (ucontext_t*)context;
> #if (defined (__x86_64__))
> GC_handleSigProf ((code_pointer) ucp->uc_mcontext.mc_rip);
> #elif (defined (__i386__))
> GC_handleSigProf ((code_pointer) ucp->uc_mcontext.mc_eip);
> #else
> #error Profiling handler is missing for this architecture
> #endif
> }
>
> Please, tell me what should I write for ARM.
>
> #elif (defined (__arm__))
> GC_handleSigProf ((code_pointer) ucp->uc_mcontext.mc_vfp_ptr);
>
> Is it?
I believe you want
uc_context.__gregs[_REG_PC]
on arm (32bit) and
uc_context.mc_gpregs.gp_elr
on arm64 for aarch64.
Sometimes the thumb bit (lowest bit in PC) leaks there, then you should
mask it.
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20191024145436.GX73312>
