fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / h8300 / kernel / setup.c
index 7bab2e3..6adf8f4 100644 (file)
@@ -16,7 +16,6 @@
  * This file handles the architecture-dependent parts of system setup
  */
 
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/delay.h>
@@ -30,6 +29,7 @@
 #include <linux/major.h>
 #include <linux/bootmem.h>
 #include <linux/seq_file.h>
+#include <linux/init.h>
 
 #include <asm/setup.h>
 #include <asm/irq.h>
 
 #if defined(__H8300H__)
 #define CPU "H8/300H"
+#include <asm/regs306x.h>
 #endif
 
 #if defined(__H8300S__)
 #define CPU "H8S"
-#endif
-
-#if defined(CONFIG_INTELFLASH)
-#define BLKOFFSET 512
-#else
-#define BLKOFFSET 0
+#include <asm/regs267x.h>
 #endif
 
 #define STUBSIZE 0xc000;
@@ -58,10 +54,7 @@ unsigned long rom_length;
 unsigned long memory_start;
 unsigned long memory_end;
 
-struct task_struct *_current_task;
-
-char command_line[512];
-char saved_command_line[512];
+char command_line[COMMAND_LINE_SIZE];
 
 extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
 extern int _ramstart, _ramend;
@@ -107,12 +100,11 @@ void __init setup_arch(char **cmdline_p)
        memory_start = (unsigned long) &_ramstart;
 
        /* allow for ROMFS on the end of the kernel */
-       if (memcmp((void *)(memory_start + BLKOFFSET), "-rom1fs-", 8) == 0) {
+       if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
 #if defined(CONFIG_BLK_DEV_INITRD)
-               initrd_start = memory_start += BLKOFFSET;
+               initrd_start = memory_start;
                initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
 #else
-               memory_start += BLKOFFSET;
                memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
 #endif
        }
@@ -124,7 +116,7 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #else
        if ((memory_end < CONFIG_BLKDEV_RESERVE_ADDRESS) && 
-           (memory_end > CONFIG_BLKDEV_RESERVE_ADDRESS)
+           (memory_end > CONFIG_BLKDEV_RESERVE_ADDRESS))
            /* overlap userarea */
            memory_end = CONFIG_BLKDEV_RESERVE_ADDRESS; 
 #endif
@@ -162,8 +154,8 @@ void __init setup_arch(char **cmdline_p)
 #endif
        /* Keep a copy of command line */
        *cmdline_p = &command_line[0];
-       memcpy(saved_command_line, command_line, sizeof(saved_command_line));
-       saved_command_line[sizeof(saved_command_line)-1] = 0;
+       memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
+       saved_command_line[COMMAND_LINE_SIZE-1] = 0;
 
 #ifdef DEBUG
        if (strlen(*cmdline_p)) 
@@ -190,6 +182,16 @@ void __init setup_arch(char **cmdline_p)
         */
        paging_init();
        h8300_gpio_init();
+#if defined(CONFIG_H8300_AKI3068NET) && defined(CONFIG_IDE)
+       {
+#define AREABIT(addr) (1 << (((addr) >> 21) & 7))
+               /* setup BSC */
+               volatile unsigned char *abwcr = (volatile unsigned char *)ABWCR;
+               volatile unsigned char *cscr = (volatile unsigned char *)CSCR;
+               *abwcr &= ~(AREABIT(CONFIG_H8300_IDE_BASE) | AREABIT(CONFIG_H8300_IDE_ALT));
+               *cscr  |= (AREABIT(CONFIG_H8300_IDE_BASE) | AREABIT(CONFIG_H8300_IDE_ALT)) | 0x0f;
+       }
+#endif
 #ifdef DEBUG
        printk(KERN_DEBUG "Done setup_arch\n");
 #endif
@@ -215,7 +217,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
                   "BogoMips:\t%lu.%02lu\n"
                   "Calibration:\t%lu loops\n",
                   cpu,mode,
-                  clockfreq/100,clockfreq%100,
+                  clockfreq/1000,clockfreq%1000,
                   (loops_per_jiffy*HZ)/500000,((loops_per_jiffy*HZ)/5000)%100,
                   (loops_per_jiffy*HZ));