X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=arch%2Fpowerpc%2Fpthread_arch.h;h=ae0f28d6d1e13c5161f4c13af3dc4048aecea144;hb=aad3e0c5b88a9455eab8dea94562f2441ecc58c9;hp=2d1ee43cc76af9ea90abc6c6b62915f2d2987a7b;hpb=a4b51633cfdecf597c247afe028c08b520816590;p=musl diff --git a/arch/powerpc/pthread_arch.h b/arch/powerpc/pthread_arch.h index 2d1ee43c..ae0f28d6 100644 --- a/arch/powerpc/pthread_arch.h +++ b/arch/powerpc/pthread_arch.h @@ -1,19 +1,18 @@ static inline struct pthread *__pthread_self() { -#ifdef __clang__ - char *tp; - __asm__ __volatile__ ("mr %0, 2" : "=r"(tp) : : ); -#else register char *tp __asm__("r2"); -#endif + __asm__ ("" : "=r" (tp) ); return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); } #define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 #define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) -// offset of the PC register in mcontext_t, divided by the system wordsize +#define DTP_OFFSET 0x8000 + // the kernel calls the ip "nip", it's the first saved value after the 32 // GPRs. -#define CANCEL_REG_IP 32 +#define MC_PC gregs[32] +#define CANARY canary_at_end