diff options
-rw-r--r-- | device/ds_routines.c | 2 | ||||
-rw-r--r-- | device/ds_routines.h | 4 | ||||
-rw-r--r-- | i386/i386/fpu.c | 4 | ||||
-rw-r--r-- | i386/i386/fpu.h | 1 | ||||
-rw-r--r-- | i386/i386/hardclock.c | 7 | ||||
-rw-r--r-- | i386/i386/ipl.h | 1 | ||||
-rw-r--r-- | i386/i386/pic.h | 4 | ||||
-rw-r--r-- | i386/i386at/kd.h | 2 | ||||
-rw-r--r-- | i386/i386at/pic_isa.c | 6 | ||||
-rw-r--r-- | i386/xen/xen.c | 2 | ||||
-rw-r--r-- | linux/dev/arch/i386/kernel/irq.c | 13 | ||||
-rw-r--r-- | linux/dev/drivers/block/floppy.c | 5 | ||||
-rw-r--r-- | linux/dev/drivers/block/genhd.c | 3 | ||||
-rw-r--r-- | linux/dev/glue/block.c | 10 | ||||
-rw-r--r-- | linux/dev/glue/glue.h | 44 | ||||
-rw-r--r-- | linux/dev/glue/kmem.c | 4 | ||||
-rw-r--r-- | linux/dev/glue/misc.c | 6 | ||||
-rw-r--r-- | linux/dev/glue/net.c | 6 | ||||
-rw-r--r-- | linux/dev/init/main.c | 26 | ||||
-rw-r--r-- | linux/dev/kernel/sched.c | 13 | ||||
-rw-r--r-- | linux/dev/kernel/softirq.c | 2 | ||||
-rw-r--r-- | linux/src/drivers/block/floppy.c | 4 | ||||
-rw-r--r-- | linux/src/init/main.c | 3 |
23 files changed, 93 insertions, 79 deletions
diff --git a/device/ds_routines.c b/device/ds_routines.c index 2173ddf..d4a08fb 100644 --- a/device/ds_routines.c +++ b/device/ds_routines.c @@ -130,6 +130,8 @@ static struct device_emulation_ops *emulation_list[] = &mach_device_emulation_ops, }; +vm_map_t device_io_map; + #define NUM_EMULATION (sizeof (emulation_list) / sizeof (emulation_list[0])) io_return_t diff --git a/device/ds_routines.h b/device/ds_routines.h index e1f6aad..a00a12d 100644 --- a/device/ds_routines.h +++ b/device/ds_routines.h @@ -41,7 +41,9 @@ /* * Map for device IO memory. */ -vm_map_t device_io_map; +extern vm_map_t device_io_map; + +extern queue_head_t io_done_list; kern_return_t device_read_alloc(io_req_t, vm_size_t); kern_return_t device_write_get(io_req_t, boolean_t *); diff --git a/i386/i386/fpu.c b/i386/i386/fpu.c index 2a4b9c0..2626a38 100644 --- a/i386/i386/fpu.c +++ b/i386/i386/fpu.c @@ -52,12 +52,12 @@ #include <i386/thread.h> #include <i386/fpu.h> #include <i386/pio.h> +#include <i386/pic.h> #include <i386/locore.h> #include "cpu_number.h" #if 0 #include <i386/ipl.h> -extern int curr_ipl; #define ASSERT_IPL(L) \ { \ if (curr_ipl != L) { \ @@ -865,7 +865,7 @@ fp_state_alloc() * This comes in on line 5 of the slave PIC at SPL1. */ void -fpintr() +fpintr(int unit) { spl_t s; thread_t thread = current_thread(); diff --git a/i386/i386/fpu.h b/i386/i386/fpu.h index 1a1b61f..2156187 100644 --- a/i386/i386/fpu.h +++ b/i386/i386/fpu.h @@ -124,5 +124,6 @@ extern void fpextovrflt(void); extern void fpexterrflt(void); extern void fpastintr(void); extern void init_fpu(void); +extern void fpintr(int unit); #endif /* _I386_FPU_H_ */ diff --git a/i386/i386/hardclock.c b/i386/i386/hardclock.c index c97feac..aecd3a3 100644 --- a/i386/i386/hardclock.c +++ b/i386/i386/hardclock.c @@ -39,13 +39,12 @@ #include <i386/ipl.h> #endif -extern void clock_interrupt(); -extern char return_to_iret[]; - #ifdef LINUX_DEV -extern void linux_timer_intr(void); +#include <linux/dev/glue/glue.h> #endif +extern char return_to_iret[]; + void hardclock(iunit, old_ipl, ret_addr, regs) int iunit; /* 'unit' number */ diff --git a/i386/i386/ipl.h b/i386/i386/ipl.h index 557cd8d..8f729e1 100644 --- a/i386/i386/ipl.h +++ b/i386/i386/ipl.h @@ -73,5 +73,6 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. extern void (*ivect[])(); extern int iunit[]; extern int intpri[]; +extern spl_t curr_ipl; #endif /* __ASSEMBLER__ */ #endif /* KERNEL */ diff --git a/i386/i386/pic.h b/i386/i386/pic.h index 7a177d8..52f6ec1 100644 --- a/i386/i386/pic.h +++ b/i386/i386/pic.h @@ -179,6 +179,10 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #ifndef __ASSEMBLER__ extern void form_pic_mask (void); extern void picinit (void); +extern int curr_pic_mask; +extern int pic_mask[]; +extern void prtnull(int unit); +extern void intnull(int unit); #endif #endif /* _I386_PIC_H_ */ diff --git a/i386/i386at/kd.h b/i386/i386at/kd.h index bc265b0..3f0dfe1 100644 --- a/i386/i386at/kd.h +++ b/i386/i386at/kd.h @@ -740,4 +740,6 @@ extern void kd_slmwd (void *start, int count, int value); extern void kd_slmscu (void *from, void *to, int count); extern void kd_slmscd (void *from, void *to, int count); +extern void kdintr(int vec, int regs); + #endif /* _KD_H_ */ diff --git a/i386/i386at/pic_isa.c b/i386/i386at/pic_isa.c index ef7d84c..e48fb50 100644 --- a/i386/i386at/pic_isa.c +++ b/i386/i386at/pic_isa.c @@ -27,11 +27,11 @@ #include <sys/types.h> #include <i386/ipl.h> #include <i386/pic.h> - +#include <i386/fpu.h> +#include <i386at/kd.h> /* These interrupts are always present */ -extern void intnull(), fpintr(), hardclock(), kdintr(); -extern void prtnull(); +extern void hardclock(); void (*ivect[NINTR])() = { /* 00 */ hardclock, /* always */ diff --git a/i386/xen/xen.c b/i386/xen/xen.c index 87a1ed9..a46ee2c 100644 --- a/i386/xen/xen.c +++ b/i386/xen/xen.c @@ -18,6 +18,7 @@ #include <kern/printf.h> #include <kern/debug.h> +#include <kern/mach_clock.h> #include <mach/machine/eflags.h> #include <machine/thread.h> @@ -43,7 +44,6 @@ void hyp_failsafe_c_callback(struct failsafe_callback_regs *regs) { panic("failsafe"); } -extern void clock_interrupt(); extern void return_to_iret; void hypclock_machine_intr(int old_ipl, void *ret_addr, struct i386_interrupt_state *regs, unsigned64_t delta) { diff --git a/linux/dev/arch/i386/kernel/irq.c b/linux/dev/arch/i386/kernel/irq.c index 7faaa62..d996c25 100644 --- a/linux/dev/arch/i386/kernel/irq.c +++ b/linux/dev/arch/i386/kernel/irq.c @@ -47,10 +47,8 @@ #include <asm/io.h> #include <asm/hardirq.h> -extern void linux_timer_intr (void); -extern spl_t splhigh (void); -extern spl_t spl0 (void); -extern void form_pic_mask (void); +#include <linux/dev/glue/glue.h> +#include <machine/machspl.h> #if 0 /* XXX: This is the way it's done in linux 2.2. GNU Mach currently uses intr_count. It should be made using local_{bh/irq}_count instead (through hardirq_enter/exit) for SMP support. */ @@ -95,12 +93,6 @@ static struct linux_action *irq_action[16] = NULL, NULL, NULL, NULL }; -extern spl_t curr_ipl; -extern int curr_pic_mask; -extern int pic_mask[]; - -extern void intnull (), prtnull (); - /* * Generic interrupt handler for Linux devices. * Set up a fake `struct pt_regs' then call the real handler. @@ -446,7 +438,6 @@ static void show(char * str) int i; unsigned long *stack; int cpu = smp_processor_id(); - extern char *get_options(char *str, int *ints); printk("\n%s, CPU %d:\n", str, cpu); printk("irq: %d [%d %d]\n", diff --git a/linux/dev/drivers/block/floppy.c b/linux/dev/drivers/block/floppy.c index d3fcd6a..d297e61 100644 --- a/linux/dev/drivers/block/floppy.c +++ b/linux/dev/drivers/block/floppy.c @@ -177,6 +177,8 @@ static inline int __get_order(unsigned long size); #include <linux/blk.h> #include <linux/cdrom.h> /* for the compatibility eject ioctl */ +#include <linux/dev/glue/glue.h> + #ifndef FLOPPY_MOTOR_MASK #define FLOPPY_MOTOR_MASK 0xf0 @@ -437,7 +439,6 @@ static int probing = 0; static volatile int command_status = FD_COMMAND_NONE, fdc_busy = 0; static struct wait_queue *fdc_wait = NULL, *command_done = NULL; #ifdef MACH -extern int issig (void); #define NO_SIGNAL (! issig () || ! interruptible) #else #define NO_SIGNAL (!(current->signal & ~current->blocked) || !interruptible) @@ -4172,8 +4173,6 @@ static void floppy_release_irq_and_dma(void) #ifdef MODULE -extern char *get_options(char *str, int *ints); - char *floppy=NULL; static void parse_floppy_cfg_string(char *cfg) diff --git a/linux/dev/drivers/block/genhd.c b/linux/dev/drivers/block/genhd.c index 68a27d5..84b3792 100644 --- a/linux/dev/drivers/block/genhd.c +++ b/linux/dev/drivers/block/genhd.c @@ -39,6 +39,7 @@ #ifdef MACH #include <machine/spl.h> +#include <linux/dev/glue/glue.h> #endif #define SYS_IND(p) get_unaligned(&p->sys_ind) @@ -770,8 +771,6 @@ void device_setup(void) struct gendisk *p; int nr=0; #ifdef MACH - extern int linux_intr_pri; - linux_intr_pri = SPL5; #endif diff --git a/linux/dev/glue/block.c b/linux/dev/glue/block.c index f28644e..c995638 100644 --- a/linux/dev/glue/block.c +++ b/linux/dev/glue/block.c @@ -61,6 +61,7 @@ #include <device/disk_status.h> #include <device/device_reply.user.h> #include <device/device_emul.h> +#include <device/ds_routines.h> /* TODO. This should be fixed to not be i386 specific. */ #include <i386at/disk.h> @@ -78,9 +79,7 @@ #include <linux/hdreg.h> #include <asm/io.h> -extern int linux_auto_config; -extern int linux_intr_pri; -extern int linux_to_mach_error (int); +#include <linux/dev/glue/glue.h> /* This task queue is not used in Mach: just for fixing undefined symbols. */ DECLARE_TASK_QUEUE (tq_disk); @@ -193,9 +192,6 @@ int read_ahead[MAX_BLKDEV] = {0, }; This is unused in Mach. It is here to make drivers compile. */ struct wait_queue *wait_for_request = NULL; -/* Map for allocating device memory. */ -extern vm_map_t device_io_map; - /* Initialize block drivers. */ int blk_dev_init () @@ -276,8 +272,6 @@ unregister_blkdev (unsigned major, const char *name) void set_blocksize (kdev_t dev, int size) { - extern int *blksize_size[]; - if (! blksize_size[MAJOR (dev)]) return; diff --git a/linux/dev/glue/glue.h b/linux/dev/glue/glue.h new file mode 100644 index 0000000..5d4f6d8 --- /dev/null +++ b/linux/dev/glue/glue.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2011 Free Software Foundation + * + * This program is free software ; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation ; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY ; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the program ; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef LINUX_DEV_GLUE_GLUE_H +#define LINUX_DEV_GLUE_GLUE_H + +#include <vm/vm_types.h> +#include <mach/machine/vm_types.h> + +extern int linux_auto_config; +extern int linux_intr_pri; + +extern void *alloc_contig_mem (unsigned, unsigned, unsigned, vm_page_t *); +extern void free_contig_mem (vm_page_t); +extern void init_IRQ (void); +extern void restore_IRQ (void); +extern void linux_kmem_init (void); +extern void linux_net_emulation_init (void); +extern void device_setup (void); +extern void linux_timer_intr (void); +extern void linux_bad_intr (int); +extern void linux_sched_init (void); +extern void pcmcia_init (void); +extern void linux_soft_intr (void); +extern int issig (void); +extern int linux_to_mach_error (int); +extern char *get_options(char *str, int *ints); + +#endif /* LINUX_DEV_GLUE_GLUE_H */ diff --git a/linux/dev/glue/kmem.c b/linux/dev/glue/kmem.c index 8c21ce7..d1784a5 100644 --- a/linux/dev/glue/kmem.c +++ b/linux/dev/glue/kmem.c @@ -29,6 +29,7 @@ #include <kern/assert.h> #include <kern/kalloc.h> +#include <kern/printf.h> #include <vm/vm_page.h> #include <vm/vm_kern.h> @@ -40,8 +41,7 @@ #include <asm/system.h> -extern void *alloc_contig_mem (unsigned, unsigned, unsigned, vm_page_t *); -extern int printf (const char *, ...); +#include <linux/dev/glue/glue.h> /* Amount of memory to reserve for Linux memory allocator. We reserve 64K chunks to stay within DMA limits. diff --git a/linux/dev/glue/misc.c b/linux/dev/glue/misc.c index b467650..98c8248 100644 --- a/linux/dev/glue/misc.c +++ b/linux/dev/glue/misc.c @@ -53,6 +53,7 @@ #include <sys/types.h> #include <mach/vm_param.h> #include <kern/thread.h> +#include <kern/printf.h> #include <vm/vm_map.h> #include <vm/vm_page.h> #include <device/device_types.h> @@ -66,10 +67,7 @@ #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/kernel_stat.h> - -extern boolean_t vm_map_lookup_entry (register vm_map_t, register vm_offset_t, - vm_map_entry_t *); -extern int printf (const char *, ...); +#include <linux/dev/glue/glue.h> int (*dispatch_scsi_info_ptr) (int ino, char *buffer, char **start, off_t offset, int length, int inout) = 0; diff --git a/linux/dev/glue/net.c b/linux/dev/glue/net.c index acb31ae..91ebf96 100644 --- a/linux/dev/glue/net.c +++ b/linux/dev/glue/net.c @@ -69,6 +69,8 @@ #include <mach/vm_param.h> #include <mach/notify.h> +#include <kern/printf.h> + #include <ipc/ipc_port.h> #include <ipc/ipc_space.h> @@ -84,6 +86,7 @@ #include <device/net_io.h> #include <device/device_reply.user.h> #include <device/device_emul.h> +#include <device/ds_routines.h> #define MACH_INCLUDE #include <linux/kernel.h> @@ -97,7 +100,7 @@ #include <linux/etherdevice.h> #include <linux/wireless.h> -extern int linux_intr_pri; +#include <linux/dev/glue/glue.h> /* One of these is associated with each instance of a device. */ struct net_data @@ -248,7 +251,6 @@ void dev_kfree_skb (struct sk_buff *skb, int mode) { unsigned flags; - extern void *io_done_list; /* Queue sk_buff on done list if there is a page list attached or we need to send a reply. diff --git a/linux/dev/init/main.c b/linux/dev/init/main.c index 9ed35d3..3a88983 100644 --- a/linux/dev/init/main.c +++ b/linux/dev/init/main.c @@ -39,6 +39,7 @@ #include <machine/spl.h> #include <machine/pmap.h> #include <machine/vm_param.h> +#include <machine/model_dep.h> #define MACH_INCLUDE #include <linux/sched.h> @@ -47,6 +48,7 @@ #include <linux/delay.h> #include <linux/ioport.h> #include <linux/string.h> +#include <linux/dev/glue/glue.h> #include <asm/system.h> #include <asm/io.h> @@ -83,30 +85,6 @@ struct drive_info_struct */ static void calibrate_delay (void); -extern vm_offset_t phys_last_addr; - -extern void *alloc_contig_mem (unsigned, unsigned, unsigned, vm_page_t *); -extern void free_contig_mem (vm_page_t); -extern void init_IRQ (void); -extern void restore_IRQ (void); -extern void startrtclock (void); -extern void linux_version_init (void); -extern void linux_kmem_init (void); -extern unsigned long pci_init (unsigned long, unsigned long); -extern void linux_net_emulation_init (void); -extern void device_setup (void); -extern void linux_printk (char *,...); -extern int linux_timer_intr (void); -extern spl_t spl0 (void); -extern spl_t splhigh (void); -extern void form_pic_mask (void); -extern int linux_bad_intr (int); -extern int prtnull (); -extern int intnull (); -extern void linux_sched_init (void); -extern void pcmcia_init (void); - - /* * Amount of contiguous memory to allocate for initialization. */ diff --git a/linux/dev/kernel/sched.c b/linux/dev/kernel/sched.c index 7b5c5e4..0d2567f 100644 --- a/linux/dev/kernel/sched.c +++ b/linux/dev/kernel/sched.c @@ -34,6 +34,9 @@ #include <kern/thread.h> #include <kern/sched_prim.h> +#include <kern/printf.h> + +#include <machine/machspl.h> #define MACH_INCLUDE #include <linux/sched.h> @@ -41,21 +44,13 @@ #include <linux/fs.h> #include <linux/blkdev.h> #include <linux/interrupt.h> +#include <linux/dev/glue/glue.h> #include <asm/system.h> #include <asm/atomic.h> int securelevel = 0; -extern void *alloc_contig_mem (unsigned, unsigned, unsigned, vm_page_t *); -extern void free_contig_mem (vm_page_t); -extern spl_t splhigh (void); -extern spl_t splx (spl_t); -extern void linux_soft_intr (void); -extern int issig (void); -extern int printf (const char *, ...); -extern int linux_auto_config; - static void timer_bh (void); DECLARE_TASK_QUEUE (tq_timer); diff --git a/linux/dev/kernel/softirq.c b/linux/dev/kernel/softirq.c index 96102a7..65a0962 100644 --- a/linux/dev/kernel/softirq.c +++ b/linux/dev/kernel/softirq.c @@ -13,6 +13,8 @@ #include <linux/interrupt.h> #include <asm/system.h> +#include <linux/dev/glue/glue.h> + int bh_mask_count[32]; unsigned long bh_active = 0; unsigned long bh_mask = 0; diff --git a/linux/src/drivers/block/floppy.c b/linux/src/drivers/block/floppy.c index 0314a0b..1b96c44 100644 --- a/linux/src/drivers/block/floppy.c +++ b/linux/src/drivers/block/floppy.c @@ -177,6 +177,8 @@ static inline int __get_order(unsigned long size); #include <linux/blk.h> #include <linux/cdrom.h> /* for the compatibility eject ioctl */ +#include <linux/dev/glue/glue.h> + #ifndef FLOPPY_MOTOR_MASK #define FLOPPY_MOTOR_MASK 0xf0 @@ -4167,8 +4169,6 @@ static void floppy_release_irq_and_dma(void) #ifdef MODULE -extern char *get_options(char *str, int *ints); - char *floppy=NULL; static void parse_floppy_cfg_string(char *cfg) diff --git a/linux/src/init/main.c b/linux/src/init/main.c index d41ec60..1aa15b9 100644 --- a/linux/src/init/main.c +++ b/linux/src/init/main.c @@ -42,6 +42,8 @@ #include <asm/bugs.h> +#include <linux/dev/glue/glue.h> + /* * Versions of gcc older than that listed below may actually compile * and link okay, but the end product can have subtle run time bugs. @@ -64,7 +66,6 @@ extern int bdflush(void *); extern int kswapd(void *); extern void kswapd_setup(void); -extern void init_IRQ(void); extern void init_modules(void); extern long console_init(long, long); extern long kmalloc_init(long,long); |