Author: jhb
Date: Wed Aug 12 18:45:36 2020
New Revision: 364176
URL: https://svnweb.freebsd.org/changeset/base/364176

Log:
  Correct padding length for RISC-V PCPU data.
  
  There was an additional 7 bytes of compiler-inserted padding at the
  end of the structure visible via 'ptype /o' in gdb.
  
  Reviewed by:  mhorne
  Obtained from:        CheriBSD
  Sponsored by: DARPA
  Differential Revision:        https://reviews.freebsd.org/D25867

Modified:
  head/sys/riscv/include/pcpu.h
  head/sys/riscv/include/pcpu_aux.h

Modified: head/sys/riscv/include/pcpu.h
==============================================================================
--- head/sys/riscv/include/pcpu.h       Wed Aug 12 18:35:21 2020        
(r364175)
+++ head/sys/riscv/include/pcpu.h       Wed Aug 12 18:45:36 2020        
(r364176)
@@ -48,7 +48,7 @@
        struct pmap *pc_curpmap;        /* Currently active pmap */     \
        uint32_t pc_pending_ipis;       /* IPIs pending to this CPU */  \
        uint32_t pc_hart;               /* Hart ID */                   \
-       char __pad[49]
+       char __pad[56]                  /* Pad to factor of PAGE_SIZE */
 
 #ifdef _KERNEL
 

Modified: head/sys/riscv/include/pcpu_aux.h
==============================================================================
--- head/sys/riscv/include/pcpu_aux.h   Wed Aug 12 18:35:21 2020        
(r364175)
+++ head/sys/riscv/include/pcpu_aux.h   Wed Aug 12 18:45:36 2020        
(r364176)
@@ -46,6 +46,9 @@
  * be a multiple of the size of struct pcpu.
  */
 _Static_assert(PAGE_SIZE % sizeof(struct pcpu) == 0, "fix pcpu size");
+_Static_assert(offsetof(struct pcpu, __pad) +
+    sizeof(((struct pcpu *)0)->__pad) == sizeof(struct pcpu),
+    "fix pcpu padding");
 
 extern struct pcpu __pcpu[];
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to