|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
And simplify prtnull vs intnull vs linux_bad_intr.
* i386/i386/ipl.h (intpri): Remove declaration
* i386/i386/pic.c (prtnull_count): Remove variable.
(prtnull): Remove function.
* i386/i386/pic.h (prtnull): Remove declaration.
* i386/i386at/autoconf.c (take_dev_irq, take_ctlr_irq): Use ivect instead of
intpri to determine irq availability. Do not set intpri.
* i386/i386at/pic_isa.c (ivect): Replace prtnull with intnull.
(intpri): Remove array.
* linux/dev/arch/i386/kernel/irq.c (linux_intr_pri): Remove variable.
(linux_bad_intr): Remove function.
(setup_x86_irq): Do not check intpri coherency. Do not set intpri. Set
default ivect to intnull instead of linux_bad_intr.
(probe_irq_on): Check ivect against intnull instead of linux_bad_intr.
Do not set intpri.
(probe_irq_off): Likewise.
(reserve_mach_irqs): Do not check against prtnull.
(old_clock_pri): Remove variable.
(init_IRQ): Do not set intpri. Do not set ivect to linux_bad_intr.
(restore_IRQ): Do not set ivect.
* i386/i386/pit.c (clkstart): Do not set intpri.
* i386/i386at/kd_mouse.c (kd_mouse_open, kd_mouse_close): Likewise.
* linux/dev/drivers/block/genhd.c (device_setup): Do not set linux_intr_pri.
* linux/dev/glue/block.c (init_partition, device_open): Likewise.
* linux/dev/glue/net.c (device_open): Likewise.
* linux/dev/glue/glue.h (linux_intr_pri, linux_bad_intr): Remove
declarations.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change replaces the historical page allocator with a buddy allocator
implemented in vm/vm_page.c. This allocator allows easy contiguous allocations
and also manages memory inside segments. In a future change, these segments
will be used to service requests with special constraints, such as "usable
for 16-bits DMA" or "must be part of the direct physical mapping".
* Makefrag.am (libkernel_a_SOURCES): Add vm/vm_page.c.
* i386/Makefrag.am (libkernel_a_SOURCES): Add i386/i386at/biosmem.{c,h}.
* i386/i386/vm_param.h: Include kern/macros.h.
(VM_PAGE_DMA_LIMIT, VM_PAGE_MAX_SEGS, VM_PAGE_DMA32_LIMIT,
VM_PAGE_DIRECTMAP_LIMIT, VM_PAGE_HIGHMEM_LIMIT, VM_PAGE_SEG_DMA,
VM_PAGE_SEG_DMA32, VM_PAGE_SEG_DIRECTMAP, VM_PAGE_SEG_HIGHMEM): New macros.
* i386/i386at/model_dep.c: Include i386at/biosmem.h.
(avail_next, avail_remaining): Remove variables.
(mem_size_init): Remove function.
(i386at_init): Initialize and use the biosmem module for early physical
memory management.
(pmap_free_pages): Return phys_last_addr instead of avail_remaining.
(init_alloc_aligned): Turn into a wrapper for biosmem_bootalloc.
(pmap_grab_page): Directly call init_alloc_aligned instead of pmap_next_page.
* i386/include/mach/i386/vm_types.h (phys_addr_t): New type.
* kern/bootstrap.c (free_bootstrap_pages): New function.
(bootstrap_create): Call free_bootstrap_pages instead of vm_page_create.
* kern/cpu_number.h (CPU_L1_SIZE): New macro.
* kern/slab.h: Include kern/cpu_number.h.
(CPU_L1_SIZE): Remove macro, moved to kern/cpu_number.h.
* kern/startup.c (setup_main): Change the value of machine_info.memory_size.
* linux/dev/glue/glue.h (alloc_contig_mem, free_contig_mem): Update prototypes.
* linux/dev/glue/kmem.c (linux_kmem_init): Don't use defunct page queue.
* linux/dev/init/main.c (linux_init): Don't free unused memory.
(alloc_contig_mem, free_contig_mem): Turn into wrappers for the vm_page
allocator.
* linux/pcmcia-cs/glue/ds.c (PAGE_SHIFT): Don't undefine.
* vm/pmap.h (pmap_startup, pmap_next_page): Remove prototypes.
* vm/vm_fault.c (vm_fault_page): Update calls to vm_page_convert.
* vm/vm_init.c (vm_mem_init): Call vm_page_info_all.
* vm/vm_object.c (vm_object_page_map): Update call to vm_page_init.
* vm/vm_page.h (vm_page_queue_free): Remove variable declaration.
(vm_page_create, vm_page_release_fictitious, vm_page_release): Remove
declarations.
(vm_page_convert, vm_page_init): Update prototypes.
(vm_page_grab_contig, vm_page_free_contig): New prototypes.
* vm/vm_resident.c (vm_page_template, vm_page_queue_free,
vm_page_big_pagenum): Remove variables.
(vm_page_bootstrap): Update and call vm_page_setup.
(pmap_steal_memory): Update and call vm_page_bootalloc.
(pmap_startup, vm_page_create, vm_page_grab_contiguous_pages): Remove functions.
(vm_page_init_template, vm_page_grab_contig,
vm_page_free_contig): New functions.
(vm_page_init): Update and call vm_page_init_template.
(vm_page_release_fictitious): Make static.
(vm_page_more_fictitious): Update call to vm_page_init.
(vm_page_convert): Rewrite to comply with vm_page.
(vm_page_grab): Update and call vm_page_alloc_pa.
(vm_page_release): Update and call vm_page_free_pa.
|
|
* device/ds_routines.h (io_done_list): Add variable declaration.
(device_io_map): Keep variable declaration and move definition to...
* device/ds_routines.c: ... here.
* i386/i386/fpu.c: Include <i386/pic.h>
(curr_ipl): Remove declaration.
(fpintr): Add int unit parameter.
* linux/dev/glue/glue.h: New header.
* i386/i386/fpu.h (fpintr): Add function prototype.
* i386/i386/hardclock.c (clock_interrupt, linux_timer_intr): Remove prototypes.
[LINUX_DEV]: Include <linux/dev/glue/glue.h>
* i386/i386/ipl.h (curr_ipl): Add declaration.
* i386/i386/pic.h (curr_pic_mask, pic_mask, prtnull, intnull): Add
declarations.
* i386/i386at/kd.h (kdintr): Add declaration.
* i386/i386at/pic_isa.c: Include <i386/fpu.h> and <i386at/kd.h>
(intnull, fpintr, hardclock, kdintr, prtnull): Remove prototypes.
* i386/xen/xen.c: Include <kern/mach_clock.h>
(clock_interrupt): Remove prototype.
* linux/dev/arch/i386/kernel/irq.c: Include <linux/dev/glue/glue.h> and
<machine/machspl.h>
(linux_timer_intr, splhigh, spl0, curr_ipl, curr_pic_mask, pic_mask,
get_options): Remove declarations.
* linux/dev/drivers/block/floppy.c: Include <linux/dev/glue/glue.h>
(issig, get_options): Remove declarations.
* linux/dev/drivers/block/genhd.c: Include <linux/dev/glue/glue.h>
(linux_intr_pri): Remove declaration.
* linux/dev/glue/block.c: Include <devices/ds_routines.h> and
<linux/dev/glue/glue.h>.
(device_io_map, blksize_size): Remove declarations.
* linux/dev/glue/kmem.c: Include <kern/printf.h> and <linux/dev/glue/glue.h>
(alloc_contig_mem, printf): Remove declarations.
* linux/dev/glue/misc.c: Include <printf.h> and <linux/dev/glue/glue.h>
(vm_map_lookup_entry, printf): Remove prototypes.
* linux/dev/glue/net.c: Include <kern/printf.h>, <device/ds_routines.h> and
<linux/dev/glue/glue.h>.
(linux_intr_pri, io_done_list): Remove declarations.
* linux/dev/init/main.c: Include <machine/model_dep.h> and
<linux/dev/glue/glue.h>.
(phys_last_addr, alloc_contig_mem, free_contig_mem, init_IRQ,
restore_IRQ, startrtclock, linux_version_init, linux_kmem_init, pci_init,
linux_net_emulation_init, device_setup, linux_printk, linux_timer_intr, spl0,
splhigh, form_pic_mask, linux_bad_intr, prtnull, intnull, linux_sched_init,
pcmcia_init): Remove declarations.
* linux/dev/kernel/sched.c: Include <kern/printf.h>, <machine/machspl.h> and
<linux/dev/glue/glue.h>.
(alloc_contig_mem, free_contig_mem, splhigh, splx, linux_soft_intr, issig,
printf, linux_auto_config): Remove prototypes.
* linux/dev/kernel/softirq.c: Include <linux/dev/glue/glue.h>.
* linux/src/drivers/block/floppy.c: Include <linux/dev/glue/glue.h>.
(get_options): Remove prototype.
* linux/src/init/main.c: Include <linux/dev/glue/glue.h>
(init_IRQ): Remove prototype.
|