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 | } | ||