diff options
Diffstat (limited to 'arch/sparc/kernel/setup.c')
-rw-r--r-- | arch/sparc/kernel/setup.c | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/arch/sparc/kernel/setup.c b/arch/sparc/kernel/setup.c new file mode 100644 index 000000000..5ec5b56ba --- /dev/null +++ b/arch/sparc/kernel/setup.c @@ -0,0 +1,120 @@ +/* + * linux/arch/alpha/kernel/setup.c + * + * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) + */ + +/* + * bootup setup stuff.. + */ + +#include <linux/errno.h> +#include <linux/sched.h> +#include <linux/kernel.h> +#include <linux/mm.h> +#include <linux/stddef.h> +#include <linux/unistd.h> +#include <linux/ptrace.h> +#include <linux/malloc.h> +#include <linux/ldt.h> +#include <linux/user.h> +#include <linux/a.out.h> +#include <linux/tty.h> + +#include <asm/segment.h> +#include <asm/system.h> +#include <asm/io.h> +#include <asm/openprom.h> /* for console registration + cheese */ + +extern void get_idprom(void); +extern void probe_devices(void); + +/* + * Gcc is hard to keep happy ;-) + */ +struct screen_info screen_info = { + 0, 0, /* orig-x, orig-y */ + { 0, 0, }, /* unused */ + 0, /* orig-video-page */ + 0, /* orig-video-mode */ + 80, /* orig-video-cols */ + 0,0,0, /* ega_ax, ega_bx, ega_cx */ + 25 /* orig-video-lines */ +}; + +/* At least I hide the sneaky floppy_track_buffer in my dirty assembly + * code. ;-) + */ + +unsigned long bios32_init(unsigned long memory_start, unsigned long memory_end) +{ + return memory_start; +} + +/* Lame prom console routines, gets registered below. Thanks for the + * tip Linus. First comes the V0 prom routine, then the V3 version + * written by Paul Hatchman (paul@sfe.com.au). + */ + +void sparc_console_print(const char * p) +{ + unsigned char c; + + while ((c = *(p++)) != 0) + { + if (c == '\n') romvec->pv_putchar('\r'); + (*(romvec->pv_putchar))(c); + } + + return; + +} + +/* paul@sfe.com.au */ +/* V3 prom console printing routines */ +void sparc_console_print_v3 (const char *p) +{ + unsigned char c; + + while ((c = *(p++)) != 0) + { + if (c == '\n') romvec->pv_v2devops.v2_dev_write + ((*romvec->pv_v2bootargs.fd_stdout), "\r", 1); + romvec->pv_v2devops.v2_dev_write + ((*romvec->pv_v2bootargs.fd_stdout), &c, 1); + } + + return; +} + + +/* This routine will in the future do all the nasty prom stuff + * to probe for the mmu type and its parameters, etc. This will + * also be where SMP things happen plus the Sparc specific memory + * physical memory probe as on the alpha. + */ + +extern void register_console(void (*proc)(const char *)); +extern unsigned int prom_iface_vers, end_of_phys_memory; + +void setup_arch(char **cmdline_p, + unsigned long * memory_start_p, unsigned long * memory_end_p) +{ + if(romvec->pv_romvers == 0) { + register_console(sparc_console_print); + } else { + register_console(sparc_console_print_v3); + }; + + printk("Sparc PROM-Console registered...\n"); + get_idprom(); /* probe_devices expects this to be done */ + probe_devices(); /* cpu/fpu, mmu probes */ + + *memory_start_p = (((unsigned long) &end)); + *memory_end_p = (((unsigned long) end_of_phys_memory)); +} + +asmlinkage int sys_ioperm(unsigned long from, unsigned long num, int on) +{ + return -EIO; +} |