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