Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Nov 2015 13:09:51 +0000 (UTC)
From:      Zbigniew Bodek <zbb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r290979 - head/sys/arm/include
Message-ID:  <201511171309.tAHD9pLN008315@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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); /*



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