#defines in asm.h to use them, and convert code which needs to use C labels
to use _C_LABEL as well. (I can't see any reason why the label vs. function
differentiation shouldn't be GC'd; i only added uses of _C_LABEL.) This
should help if this port is converted to use ELF, and was checked by
compiling all kernels in arm32/conf (with some driver removals and some
MI header fixups re: common blocks) with an arm-linux ELF toolchain.
emulation of managed pages. This required the following `interesting' changes:
* File system buffers must be entered with an access type of
VM_PROT_READ|VM_PROT_WRITE, so that the pages will be accessible immediately.
Otherwise we would have to teach pagemove() to update the R/M information.
Since they're never eligible for paging, the latter is overkill.
* We must insure that pages allocated before the pmap is completely set up
(that is, pages allocated early by the VM system) are not eligible for R/M
emulation, since the memory needed for this isn't available. We do this by
allocating the pmap's internal memory with uvm_pageboot_alloc(). This also
fixes an absolutely horrible hack where the pmap only worked because page 0
happened to be mapped.
to be mapped.
Also:
* Push the wired page counting into the p->v list maintenance functions. This
avoids code duplication, and fixes some cases where we were confused about
which pages to do it with.
* Fix lots of problems associated with pmap_nightmare() (and rename it to
pmap_vac_me_harder()).
* Since the early pages are no longer considered `managed', just make
pmap_*_pv() panic if !pmap_initialized.
- returned EOPNOTSUPP rather than -1.
- no check for negative offset.
many of these fix potential security problems in these drivers.
XXX XXX XXX
the d_mmap cdev routine should be changed to have a prototype like:
paddr_t (*d_mmap) __P((dev_t, off_t, int));
by someone!
Modify current_spl_level to reflect the temporary change in interrupt
priority level which dispatching.
Don't increment the interrupt stats for every handler in the interrupt chain.
Cleaned up a number of comments.
Define soft interrupt names.
A few miscellaneous tidy ups.
Removed any remnants of soft interrupt dispatching.
Cleaned up a number of comments.
Removed a number of blank lines.
Nuked register keywords.
Made sure code is in sync with interrupt handling for other ARM hardware.
to obtains pv_addr_t structures for the proc0 L1 page table and the proc0
pagetable that maps page tables.
Use the virtual address from the pv_addr_t structure for the proc0 L1 page
table when calling pmap_bootstrap rather than relying on a special mapping
at PAGE_DIRS_BASE.
Modify ofw_construct_proc0_addrspace() for similar changes to
ofw_configmem().
Remove the kernel_pde page table in ofw_construct_proc0_addrspace() as it
it now longer needed.
Fix code indenting.
Removed a load of unnecessary includes.
Removed unnecessary prototypes and variables.
Removed dead variables debug_flags and cpu_cache.
Removed some unnecessary cache syncs.
Only sync the first 64 bytes after setting up the vectors.
Removed all the boot argument checking code and instead call the
generic ARM boot argument checking code parse_mi_bootargs() in machdep.c
Fixed the ofrootfound() function so that it builds.