sparc,leon: Introduce the sparc-leon CPU type.
Add sparc_leon enum, M_LEON|M_LEON3_SOC machine. Add compilation of leon.c in mm and kernel if CONFIG_SPARC_LEON is defined. Add sparc_leon dependent initialization to switch statements + head.S. Signed-off-by: Konrad Eisele <konrad@gaisler.com> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
97fb58fa9b
commit
0fd7ef1fe0
@@ -41,6 +41,8 @@ obj-y += of_device_common.o
|
||||
obj-y += of_device_$(BITS).o
|
||||
obj-$(CONFIG_SPARC64) += prom_irqtrans.o
|
||||
|
||||
obj-$(CONFIG_SPARC_LEON)+= leon_kernel.o
|
||||
|
||||
obj-$(CONFIG_SPARC64) += reboot.o
|
||||
obj-$(CONFIG_SPARC64) += sysfs.o
|
||||
obj-$(CONFIG_SPARC64) += iommu.o
|
||||
|
@@ -312,7 +312,12 @@ void __cpuinit cpu_probe(void)
|
||||
|
||||
psr = get_psr();
|
||||
put_psr(psr | PSR_EF);
|
||||
#ifdef CONFIG_SPARC_LEON
|
||||
fpu_vers = 7;
|
||||
#else
|
||||
fpu_vers = ((get_fsr() >> 17) & 0x7);
|
||||
#endif
|
||||
|
||||
put_psr(psr);
|
||||
|
||||
set_cpu_and_fpu(psr_impl, psr_vers, fpu_vers);
|
||||
|
@@ -809,6 +809,11 @@ found_version:
|
||||
nop
|
||||
|
||||
got_prop:
|
||||
#ifdef CONFIG_SPARC_LEON
|
||||
/* no cpu-type check is needed, it is a SPARC-LEON */
|
||||
ba sun4c_continue_boot
|
||||
nop
|
||||
#endif
|
||||
set cputypval, %o2
|
||||
ldub [%o2 + 0x4], %l1
|
||||
|
||||
|
@@ -31,6 +31,8 @@ static struct Sun_Machine_Models Sun_Machines[NUM_SUN_MACHINES] = {
|
||||
{ .name = "Sun 4/200 Series", .id_machtype = (SM_SUN4 | SM_4_260) },
|
||||
{ .name = "Sun 4/300 Series", .id_machtype = (SM_SUN4 | SM_4_330) },
|
||||
{ .name = "Sun 4/400 Series", .id_machtype = (SM_SUN4 | SM_4_470) },
|
||||
/* Now Leon */
|
||||
{ .name = "Leon3 System-on-a-Chip", .id_machtype = (M_LEON | M_LEON3_SOC) },
|
||||
/* Now, Sun4c's */
|
||||
{ .name = "Sun4c SparcStation 1", .id_machtype = (SM_SUN4C | SM_4C_SS1) },
|
||||
{ .name = "Sun4c SparcStation IPC", .id_machtype = (SM_SUN4C | SM_4C_IPC) },
|
||||
|
@@ -45,6 +45,7 @@
|
||||
#include <asm/pcic.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/irq_regs.h>
|
||||
#include <asm/leon.h>
|
||||
|
||||
#include "kernel.h"
|
||||
#include "irq.h"
|
||||
@@ -661,6 +662,10 @@ void __init init_IRQ(void)
|
||||
sun4d_init_IRQ();
|
||||
break;
|
||||
|
||||
case sparc_leon:
|
||||
leon_init_IRQ();
|
||||
break;
|
||||
|
||||
default:
|
||||
prom_printf("Cannot initialize IRQs on this Sun machine...");
|
||||
break;
|
||||
|
@@ -235,6 +235,8 @@ void __init setup_arch(char **cmdline_p)
|
||||
sparc_cpu_model = sun4e;
|
||||
if (!strcmp(&cputypval,"sun4u"))
|
||||
sparc_cpu_model = sun4u;
|
||||
if (!strncmp(&cputypval, "leon" , 4))
|
||||
sparc_cpu_model = sparc_leon;
|
||||
|
||||
printk("ARCH: ");
|
||||
switch(sparc_cpu_model) {
|
||||
@@ -256,6 +258,9 @@ void __init setup_arch(char **cmdline_p)
|
||||
case sun4u:
|
||||
printk("SUN4U\n");
|
||||
break;
|
||||
case sparc_leon:
|
||||
printk("LEON\n");
|
||||
break;
|
||||
default:
|
||||
printk("UNKNOWN!\n");
|
||||
break;
|
||||
|
Reference in New Issue
Block a user