svn commit: r290979 - head/sys/arm/include

Zbigniew Bodek zbb at FreeBSD.org
Tue Nov 17 13:09:53 UTC 2015


Author: zbb
Date: Tue Nov 17 13:09:51 2015
New Revision: 290979
URL: https://svnweb.freebsd.org/changeset/base/290979

Log:
  Make PCB structure binary compatible for old and new PMAP on ARM
  
  This structure must be binary compatible regardless of PMAP
  version being used. Create reserved section for NEW_PMAP to
  make other variables be placed exactly in the same memory
  addresses. This fixes kgdb/gdb behavoiur, which uses pcb.h stuctures.
  The NEW_PMAP is kernel flag, so it does not propagate to the buildworld,
  what makes the tools using pcb.h unable to parse PCB data.
  
  Reviewed by:   mmel, kib
  Submitted by:  Wojciech Macek <wma at semihalf.com>
  Obtained from: Semihalf
  Sponsored by:  Juniper Networks Inc.
  Differential Revision: https://reviews.freebsd.org/D4011

Modified:
  head/sys/arm/include/pcb.h

Modified: head/sys/arm/include/pcb.h
==============================================================================
--- head/sys/arm/include/pcb.h	Tue Nov 17 13:02:44 2015	(r290978)
+++ head/sys/arm/include/pcb.h	Tue Nov 17 13:09:51 2015	(r290979)
@@ -52,14 +52,17 @@ struct pcb {
 #define	PCB_OWNFPU	0x00000001
 #define PCB_NOALIGNFLT	0x00000002
 	caddr_t	pcb_onfault;			/* On fault handler */
-#ifdef  ARM_NEW_PMAP
-	uint32_t	pcb_pagedir;		/* TTB0 value */
-#else
-	vm_offset_t	pcb_pagedir;		/* PT hooks */
+	vm_offset_t	pcb_pagedir;		/* TTB0 value */
+	/*
+	 * XXX:
+	 * Variables pcb_pl1vec, pcb_l1vec, pcb_dacr are used solely
+	 * by old PMAP. Keep them here for PCB binary compatibility
+	 * between old and new PMAP.
+	 */
 	uint32_t *pcb_pl1vec;			/* PTR to vector_base L1 entry*/
 	uint32_t pcb_l1vec;			/* Value to stuff on ctx sw */
 	u_int	pcb_dacr;			/* Domain Access Control Reg */
-#endif
+
 	struct vfp_state pcb_vfpstate;          /* VP/NEON state */
 	u_int pcb_vfpcpu;                       /* VP/NEON last cpu */
 } __aligned(8); /*


More information about the svn-src-all mailing list