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.
Details
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
sys/arm/include/pcb.h | ||
---|---|---|
55 | I would rather you just do something more obvious to the reader that doesn't have to worry about padding by having the same exact definitions: uint32_t *_pcb_rsvd0; uint32_t _pcb_rsvd1; u_int _pcb_rsvd2; |
sys/arm/include/pcb.h | ||
---|---|---|
54–55 | After the latest revision, you do not need #ifdef ARM_NEW_PMAP. Use ARM_NEW_PMAP definition always. A comment that three fields are only used by new pmap case would be enough. Is it important that pcb_pagedir is vm_offset_t for v5/old v6 pmaps ? |
sys/arm/include/pcb.h | ||
---|---|---|
62 | I suggest removing the '======' delimiters. Also, please specify in comment what compatibility is wanted there, i.e. that we want binary compatibility between PCB layouts for old and new pmaps. The code change looks fine. |
Thanks, eventually that'd be nice. However I'd like to submit this patch and then remove any old-pmap stuff in a separate commit. It's just that we have prepared new-pmap to be MFCed to 10-stable and I'd like to have every necessary change isolated to keep the track of all required commits.
If you have no objections I'd like to ask zbb to commit this change as is.