Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Nov 2019 19:52:22 +0000 (UTC)
From:      Mitchell Horne <mhorne@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r354263 - stable/12/lib/libthr/arch/riscv/include
Message-ID:  <201911021952.xA2JqMKE056301@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mhorne
Date: Sat Nov  2 19:52:22 2019
New Revision: 354263
URL: https://svnweb.freebsd.org/changeset/base/354263

Log:
  MFC r353334:
  
  RISC-V: Fix an alignment warning in libthr
  
  Compiling with clang gives a loss-of-alignment error due the cast to
  uint8_t *. Since the TLS is always tcb aligned and TP_OFFSET is defined
  as sizeof(struct tcb) we can guarantee there is no misalignment. Silence
  the error by moving the offset into the inline assembly.
  
  Reviewed by:	br
  Differential Revision:	https://reviews.freebsd.org/D21926

Modified:
  stable/12/lib/libthr/arch/riscv/include/pthread_md.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/lib/libthr/arch/riscv/include/pthread_md.h
==============================================================================
--- stable/12/lib/libthr/arch/riscv/include/pthread_md.h	Sat Nov  2 19:50:36 2019	(r354262)
+++ stable/12/lib/libthr/arch/riscv/include/pthread_md.h	Sat Nov  2 19:52:22 2019	(r354263)
@@ -62,7 +62,7 @@ static __inline void
 _tcb_set(struct tcb *tcb)
 {
 
-	__asm __volatile("mv tp, %0" :: "r"((uint8_t *)tcb + TP_OFFSET));
+	__asm __volatile("addi tp, %0, %1" :: "r"(tcb), "I"(TP_OFFSET));
 }
 
 /*
@@ -71,11 +71,11 @@ _tcb_set(struct tcb *tcb)
 static __inline struct tcb *
 _tcb_get(void)
 {
-	register uint8_t *_tp;
+	struct tcb *_tcb;
 
-	__asm __volatile("mv %0, tp" : "=r"(_tp));
+	__asm __volatile("addi %0, tp, %1" : "=r"(_tcb) : "I"(-TP_OFFSET));
 
-	return ((struct tcb *)(_tp - TP_OFFSET));
+	return (_tcb);
 }
 
 static __inline struct pthread *



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201911021952.xA2JqMKE056301>