diff options
Diffstat (limited to 'arch/mn10300/proc-mn103e010/proc-init.c')
| -rw-r--r-- | arch/mn10300/proc-mn103e010/proc-init.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/arch/mn10300/proc-mn103e010/proc-init.c b/arch/mn10300/proc-mn103e010/proc-init.c index 9a482efafa82..27b97980dca4 100644 --- a/arch/mn10300/proc-mn103e010/proc-init.c +++ b/arch/mn10300/proc-mn103e010/proc-init.c | |||
| @@ -9,7 +9,9 @@ | |||
| 9 | * 2 of the Licence, or (at your option) any later version. | 9 | * 2 of the Licence, or (at your option) any later version. |
| 10 | */ | 10 | */ |
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 12 | #include <asm/fpu.h> | ||
| 12 | #include <asm/rtc.h> | 13 | #include <asm/rtc.h> |
| 14 | #include <asm/busctl-regs.h> | ||
| 13 | 15 | ||
| 14 | /* | 16 | /* |
| 15 | * initialise the on-silicon processor peripherals | 17 | * initialise the on-silicon processor peripherals |
| @@ -28,6 +30,7 @@ asmlinkage void __init processor_init(void) | |||
| 28 | __set_intr_stub(EXCEP_DAERROR, dtlb_aerror); | 30 | __set_intr_stub(EXCEP_DAERROR, dtlb_aerror); |
| 29 | __set_intr_stub(EXCEP_BUSERROR, raw_bus_error); | 31 | __set_intr_stub(EXCEP_BUSERROR, raw_bus_error); |
| 30 | __set_intr_stub(EXCEP_DOUBLE_FAULT, double_fault); | 32 | __set_intr_stub(EXCEP_DOUBLE_FAULT, double_fault); |
| 33 | __set_intr_stub(EXCEP_FPU_DISABLED, fpu_disabled); | ||
| 31 | __set_intr_stub(EXCEP_SYSCALL0, system_call); | 34 | __set_intr_stub(EXCEP_SYSCALL0, system_call); |
| 32 | 35 | ||
| 33 | __set_intr_stub(EXCEP_NMI, nmi_handler); | 36 | __set_intr_stub(EXCEP_NMI, nmi_handler); |
| @@ -73,3 +76,37 @@ asmlinkage void __init processor_init(void) | |||
| 73 | 76 | ||
| 74 | calibrate_clock(); | 77 | calibrate_clock(); |
| 75 | } | 78 | } |
| 79 | |||
| 80 | /* | ||
| 81 | * determine the memory size and base from the memory controller regs | ||
| 82 | */ | ||
| 83 | void __init get_mem_info(unsigned long *mem_base, unsigned long *mem_size) | ||
| 84 | { | ||
| 85 | unsigned long base, size; | ||
| 86 | |||
| 87 | *mem_base = 0; | ||
| 88 | *mem_size = 0; | ||
| 89 | |||
| 90 | base = SDBASE(0); | ||
| 91 | if (base & SDBASE_CE) { | ||
| 92 | size = (base & SDBASE_CBAM) << SDBASE_CBAM_SHIFT; | ||
| 93 | size = ~size + 1; | ||
| 94 | base &= SDBASE_CBA; | ||
| 95 | |||
| 96 | printk(KERN_INFO "SDRAM[0]: %luMb @%08lx\n", size >> 20, base); | ||
| 97 | *mem_size += size; | ||
| 98 | *mem_base = base; | ||
| 99 | } | ||
| 100 | |||
| 101 | base = SDBASE(1); | ||
| 102 | if (base & SDBASE_CE) { | ||
| 103 | size = (base & SDBASE_CBAM) << SDBASE_CBAM_SHIFT; | ||
| 104 | size = ~size + 1; | ||
| 105 | base &= SDBASE_CBA; | ||
| 106 | |||
| 107 | printk(KERN_INFO "SDRAM[1]: %luMb @%08lx\n", size >> 20, base); | ||
| 108 | *mem_size += size; | ||
| 109 | if (*mem_base == 0) | ||
| 110 | *mem_base = base; | ||
| 111 | } | ||
| 112 | } | ||
