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
This commit is contained in:
parent
d3dc28086b
commit
c110bf7495
@ -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); /*
|
||||
|
Loading…
Reference in New Issue
Block a user