forked from luck/tmp_suning_uos_patched
MIPS: Loongson64: Rename CPU TYPES
CPU_LOONGSON2 -> CPU_LOONGSON2EF CPU_LOONGSON3 -> CPU_LOONGSON64 As newer loongson-2 products (2G/2H/2K1000) can share kernel implementation with loongson-3 while 2E/2F are less similar with other LOONGSON64 products. Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Signed-off-by: Paul Burton <paulburton@kernel.org> Cc: linux-mips@vger.kernel.org Cc: chenhc@lemote.com Cc: paul.burton@mips.com
This commit is contained in:
parent
2409839ab6
commit
268a2d6001
|
@ -1377,9 +1377,9 @@ choice
|
|||
prompt "CPU type"
|
||||
default CPU_R4X00
|
||||
|
||||
config CPU_LOONGSON3
|
||||
bool "Loongson 3 CPU"
|
||||
depends on SYS_HAS_CPU_LOONGSON3
|
||||
config CPU_LOONGSON64
|
||||
bool "Loongson GSx64 CPU"
|
||||
depends on SYS_HAS_CPU_LOONGSON64
|
||||
select ARCH_HAS_PHYS_TO_DMA
|
||||
select CPU_SUPPORTS_64BIT_KERNEL
|
||||
select CPU_SUPPORTS_HIGHMEM
|
||||
|
@ -1394,19 +1394,19 @@ config CPU_LOONGSON3
|
|||
select GPIOLIB
|
||||
select SWIOTLB
|
||||
help
|
||||
The Loongson 3 processor implements the MIPS64R2 instruction
|
||||
set with many extensions.
|
||||
The Loongson GSx64 series of processor cores implements the
|
||||
MIPS64R2 instruction set with many extensions.
|
||||
|
||||
config LOONGSON3_ENHANCEMENT
|
||||
bool "New Loongson 3 CPU Enhancements"
|
||||
config LOONGSON64_ENHANCEMENT
|
||||
bool "New Loongson GSx64E CPU Enhancements"
|
||||
default n
|
||||
select CPU_MIPSR2
|
||||
select CPU_HAS_PREFETCH
|
||||
depends on CPU_LOONGSON3
|
||||
depends on CPU_LOONGSON64
|
||||
help
|
||||
New Loongson 3 CPU (since Loongson-3A R2, as opposed to Loongson-3A
|
||||
New Loongson GSx64E cores (since Loongson-3A R2, as opposed to Loongson-3A
|
||||
R1, Loongson-3B R1 and Loongson-3B R2) has many enhancements, such as
|
||||
FTLB, L1-VCache, EI/DI/Wait/Prefetch instruction, DSP/DSPv2 ASE, User
|
||||
FTLB, L1-VCache, EI/DI/Wait/Prefetch instruction, DSP/DSPr2 ASE, User
|
||||
Local register, Read-Inhibit/Execute-Inhibit, SFB (Store Fill Buffer),
|
||||
Fast TLB refill support, etc.
|
||||
|
||||
|
@ -1418,7 +1418,7 @@ config LOONGSON3_ENHANCEMENT
|
|||
config CPU_LOONGSON3_WORKAROUNDS
|
||||
bool "Old Loongson 3 LLSC Workarounds"
|
||||
default y if SMP
|
||||
depends on CPU_LOONGSON3
|
||||
depends on CPU_LOONGSON64
|
||||
help
|
||||
Loongson 3 processors have the llsc issues which require workarounds.
|
||||
Without workarounds the system may hang unexpectedly.
|
||||
|
@ -1433,7 +1433,7 @@ config CPU_LOONGSON3_WORKAROUNDS
|
|||
config CPU_LOONGSON2E
|
||||
bool "Loongson 2E"
|
||||
depends on SYS_HAS_CPU_LOONGSON2E
|
||||
select CPU_LOONGSON2
|
||||
select CPU_LOONGSON2EF
|
||||
help
|
||||
The Loongson 2E processor implements the MIPS III instruction set
|
||||
with many extensions.
|
||||
|
@ -1444,7 +1444,7 @@ config CPU_LOONGSON2E
|
|||
config CPU_LOONGSON2F
|
||||
bool "Loongson 2F"
|
||||
depends on SYS_HAS_CPU_LOONGSON2F
|
||||
select CPU_LOONGSON2
|
||||
select CPU_LOONGSON2EF
|
||||
select GPIOLIB
|
||||
help
|
||||
The Loongson 2F processor implements the MIPS III instruction set
|
||||
|
@ -1857,7 +1857,7 @@ config SYS_SUPPORTS_ZBOOT_UART_PROM
|
|||
bool
|
||||
select SYS_SUPPORTS_ZBOOT
|
||||
|
||||
config CPU_LOONGSON2
|
||||
config CPU_LOONGSON2EF
|
||||
bool
|
||||
select CPU_SUPPORTS_32BIT_KERNEL
|
||||
select CPU_SUPPORTS_64BIT_KERNEL
|
||||
|
@ -1900,7 +1900,7 @@ config CPU_BMIPS5000
|
|||
select SYS_SUPPORTS_HOTPLUG_CPU
|
||||
select CPU_HAS_RIXI
|
||||
|
||||
config SYS_HAS_CPU_LOONGSON3
|
||||
config SYS_HAS_CPU_LOONGSON64
|
||||
bool
|
||||
select CPU_SUPPORTS_CPUFREQ
|
||||
select CPU_HAS_RIXI
|
||||
|
@ -2162,7 +2162,7 @@ choice
|
|||
|
||||
config PAGE_SIZE_4KB
|
||||
bool "4kB"
|
||||
depends on !CPU_LOONGSON2 && !CPU_LOONGSON3
|
||||
depends on !CPU_LOONGSON2EF && !CPU_LOONGSON64
|
||||
help
|
||||
This option select the standard 4kB Linux page size. On some
|
||||
R3000-family processors this is the only available page size. Using
|
||||
|
@ -2616,7 +2616,7 @@ config CPU_SUPPORTS_MSA
|
|||
|
||||
config ARCH_FLATMEM_ENABLE
|
||||
def_bool y
|
||||
depends on !NUMA && !CPU_LOONGSON2
|
||||
depends on !NUMA && !CPU_LOONGSON2EF
|
||||
|
||||
config ARCH_SPARSEMEM_ENABLE
|
||||
bool
|
||||
|
@ -2697,7 +2697,7 @@ config NODES_SHIFT
|
|||
|
||||
config HW_PERF_EVENTS
|
||||
bool "Enable hardware performance counter support for perf events"
|
||||
depends on PERF_EVENTS && !OPROFILE && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_XLP || CPU_LOONGSON3)
|
||||
depends on PERF_EVENTS && !OPROFILE && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_XLP || CPU_LOONGSON64)
|
||||
default y
|
||||
help
|
||||
Enable hardware performance counter support for perf events. If
|
||||
|
|
|
@ -33,7 +33,7 @@ extern void nlm_cop2_restore(struct nlm_cop2_state *);
|
|||
#define cop2_present 1
|
||||
#define cop2_lazy_restore 0
|
||||
|
||||
#elif defined(CONFIG_CPU_LOONGSON3)
|
||||
#elif defined(CONFIG_CPU_LOONGSON64)
|
||||
|
||||
#define cop2_present 1
|
||||
#define cop2_lazy_restore 1
|
||||
|
|
|
@ -15,13 +15,12 @@
|
|||
static inline int __pure __get_cpu_type(const int cpu_type)
|
||||
{
|
||||
switch (cpu_type) {
|
||||
#if defined(CONFIG_SYS_HAS_CPU_LOONGSON2E) || \
|
||||
defined(CONFIG_SYS_HAS_CPU_LOONGSON2F)
|
||||
case CPU_LOONGSON2:
|
||||
#if defined(CONFIG_SYS_HAS_CPU_LOONGSON2EF)
|
||||
case CPU_LOONGSON2EF:
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_HAS_CPU_LOONGSON3
|
||||
case CPU_LOONGSON3:
|
||||
#ifdef CONFIG_SYS_HAS_CPU_LOONGSON64
|
||||
case CPU_LOONGSON64:
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SYS_HAS_CPU_LOONGSON1B) || \
|
||||
|
|
|
@ -319,8 +319,8 @@ enum cpu_type_enum {
|
|||
/*
|
||||
* MIPS64 class processors
|
||||
*/
|
||||
CPU_5KC, CPU_5KE, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2,
|
||||
CPU_LOONGSON3, CPU_CAVIUM_OCTEON, CPU_CAVIUM_OCTEON_PLUS,
|
||||
CPU_5KC, CPU_5KE, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2EF,
|
||||
CPU_LOONGSON64, CPU_CAVIUM_OCTEON, CPU_CAVIUM_OCTEON_PLUS,
|
||||
CPU_CAVIUM_OCTEON2, CPU_CAVIUM_OCTEON3, CPU_XLR, CPU_XLP, CPU_I6500,
|
||||
|
||||
CPU_QEMU_GENERIC,
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* TLB hazards
|
||||
*/
|
||||
#if (defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6)) && \
|
||||
!defined(CONFIG_CPU_CAVIUM_OCTEON) && !defined(CONFIG_LOONGSON3_ENHANCEMENT)
|
||||
!defined(CONFIG_CPU_CAVIUM_OCTEON) && !defined(CONFIG_LOONGSON64_ENHANCEMENT)
|
||||
|
||||
/*
|
||||
* MIPSR2 defines ehb for hazard avoidance
|
||||
|
@ -158,7 +158,7 @@ do { \
|
|||
} while (0)
|
||||
|
||||
#elif defined(CONFIG_MIPS_ALCHEMY) || defined(CONFIG_CPU_CAVIUM_OCTEON) || \
|
||||
defined(CONFIG_CPU_LOONGSON2) || defined(CONFIG_LOONGSON3_ENHANCEMENT) || \
|
||||
defined(CONFIG_CPU_LOONGSON2EF) || defined(CONFIG_LOONGSON64_ENHANCEMENT) || \
|
||||
defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_R5500) || defined(CONFIG_CPU_XLR)
|
||||
|
||||
/*
|
||||
|
|
|
@ -306,7 +306,7 @@ static inline void iounmap(const volatile void __iomem *addr)
|
|||
#undef __IS_KSEG1
|
||||
}
|
||||
|
||||
#if defined(CONFIG_CPU_CAVIUM_OCTEON) || defined(CONFIG_CPU_LOONGSON3)
|
||||
#if defined(CONFIG_CPU_CAVIUM_OCTEON) || defined(CONFIG_CPU_LOONGSON64)
|
||||
#define war_io_reorder_wmb() wmb()
|
||||
#else
|
||||
#define war_io_reorder_wmb() barrier()
|
||||
|
|
|
@ -41,7 +41,7 @@ static inline unsigned long arch_local_irq_save(void)
|
|||
" .set push \n"
|
||||
" .set reorder \n"
|
||||
" .set noat \n"
|
||||
#if defined(CONFIG_CPU_LOONGSON3) || defined (CONFIG_CPU_LOONGSON1)
|
||||
#if defined(CONFIG_CPU_LOONGSON64) || defined (CONFIG_CPU_LOONGSON1)
|
||||
" mfc0 %[flags], $12 \n"
|
||||
" di \n"
|
||||
#else
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
#define cpu_has_vtag_icache 0
|
||||
#define cpu_has_watch 1
|
||||
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
#define cpu_has_wsbh 1
|
||||
#define cpu_has_ic_fills_f_dc 1
|
||||
#define cpu_hwrena_impl_bits 0xc0000000
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
#include <boot_param.h>
|
||||
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
|
||||
/* cpu core interrupt numbers */
|
||||
#define MIPS_CPU_IRQ_BASE 56
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* Override macros used in arch/mips/kernel/head.S.
|
||||
*/
|
||||
.macro kernel_entry_setup
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
.set push
|
||||
.set mips64
|
||||
/* Set LPA on LOONGSON3 config3 */
|
||||
|
@ -54,7 +54,7 @@
|
|||
* Do SMP slave processor setup.
|
||||
*/
|
||||
.macro smp_slave_setup
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
.set push
|
||||
.set mips64
|
||||
/* Set LPA on LOONGSON3 config3 */
|
||||
|
|
|
@ -109,7 +109,7 @@ static inline void do_perfcnt_IRQ(void)
|
|||
#define LOONGSON_PCICFG_SIZE 0x00000800 /* 2K */
|
||||
#define LOONGSON_PCICFG_TOP (LOONGSON_PCICFG_BASE+LOONGSON_PCICFG_SIZE-1)
|
||||
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
#define LOONGSON_PCIIO_BASE loongson_sysconf.pci_io_base
|
||||
#else
|
||||
#define LOONGSON_PCIIO_BASE 0x1fd00000
|
||||
|
|
|
@ -35,7 +35,7 @@ extern struct pci_ops loongson_pci_ops;
|
|||
#else /* loongson2f/32bit & loongson2e */
|
||||
|
||||
/* this pci memory space is mapped by pcimap in pci.c */
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
#define LOONGSON_PCI_MEM_START 0x40000000UL
|
||||
#define LOONGSON_PCI_MEM_END 0x7effffffUL
|
||||
#else
|
||||
|
|
|
@ -121,10 +121,10 @@ search_module_dbetables(unsigned long addr)
|
|||
#define MODULE_PROC_FAMILY "SB1 "
|
||||
#elif defined CONFIG_CPU_LOONGSON1
|
||||
#define MODULE_PROC_FAMILY "LOONGSON1 "
|
||||
#elif defined CONFIG_CPU_LOONGSON2
|
||||
#define MODULE_PROC_FAMILY "LOONGSON2 "
|
||||
#elif defined CONFIG_CPU_LOONGSON3
|
||||
#define MODULE_PROC_FAMILY "LOONGSON3 "
|
||||
#elif defined CONFIG_CPU_LOONGSON2EF
|
||||
#define MODULE_PROC_FAMILY "LOONGSON2EF "
|
||||
#elif defined CONFIG_CPU_LOONGSON64
|
||||
#define MODULE_PROC_FAMILY "LOONGSON64 "
|
||||
#elif defined CONFIG_CPU_CAVIUM_OCTEON
|
||||
#define MODULE_PROC_FAMILY "OCTEON "
|
||||
#elif defined CONFIG_CPU_XLR
|
||||
|
|
|
@ -385,7 +385,7 @@ unsigned long get_wchan(struct task_struct *p);
|
|||
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->regs[29])
|
||||
#define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
|
||||
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
/*
|
||||
* Loongson-3's SFB (Store-Fill-Buffer) may buffer writes indefinitely when a
|
||||
* tight read loop is executed, because reads take priority over writes & the
|
||||
|
|
|
@ -72,7 +72,7 @@ static inline void flush_scache_line_indexed(unsigned long addr)
|
|||
static inline void flush_icache_line(unsigned long addr)
|
||||
{
|
||||
switch (boot_cpu_type()) {
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
cache_op(Hit_Invalidate_I_Loongson2, addr);
|
||||
break;
|
||||
|
||||
|
@ -154,7 +154,7 @@ static inline void flush_scache_line(unsigned long addr)
|
|||
static inline int protected_flush_icache_line(unsigned long addr)
|
||||
{
|
||||
switch (boot_cpu_type()) {
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
return protected_cache_op(Hit_Invalidate_I_Loongson2, addr);
|
||||
|
||||
default:
|
||||
|
|
|
@ -608,7 +608,7 @@ static int set_ftlb_enable(struct cpuinfo_mips *c, enum ftlb_flags flags)
|
|||
if (!(flags & FTLB_EN))
|
||||
return 1;
|
||||
return 0;
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
/* Flush ITLB, DTLB, VTLB and FTLB */
|
||||
write_c0_diag(LOONGSON_DIAG_ITLB | LOONGSON_DIAG_DTLB |
|
||||
LOONGSON_DIAG_VTLB | LOONGSON_DIAG_FTLB);
|
||||
|
@ -1529,21 +1529,21 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c, unsigned int cpu)
|
|||
case PRID_IMP_LOONGSON_64C: /* Loongson-2/3 */
|
||||
switch (c->processor_id & PRID_REV_MASK) {
|
||||
case PRID_REV_LOONGSON2E:
|
||||
c->cputype = CPU_LOONGSON2;
|
||||
c->cputype = CPU_LOONGSON2EF;
|
||||
__cpu_name[cpu] = "ICT Loongson-2";
|
||||
set_elf_platform(cpu, "loongson2e");
|
||||
set_isa(c, MIPS_CPU_ISA_III);
|
||||
c->fpu_msk31 |= FPU_CSR_CONDX;
|
||||
break;
|
||||
case PRID_REV_LOONGSON2F:
|
||||
c->cputype = CPU_LOONGSON2;
|
||||
c->cputype = CPU_LOONGSON2EF;
|
||||
__cpu_name[cpu] = "ICT Loongson-2";
|
||||
set_elf_platform(cpu, "loongson2f");
|
||||
set_isa(c, MIPS_CPU_ISA_III);
|
||||
c->fpu_msk31 |= FPU_CSR_CONDX;
|
||||
break;
|
||||
case PRID_REV_LOONGSON3A_R1:
|
||||
c->cputype = CPU_LOONGSON3;
|
||||
c->cputype = CPU_LOONGSON64;
|
||||
__cpu_name[cpu] = "ICT Loongson-3";
|
||||
set_elf_platform(cpu, "loongson3a");
|
||||
set_isa(c, MIPS_CPU_ISA_M64R1);
|
||||
|
@ -1552,7 +1552,7 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c, unsigned int cpu)
|
|||
break;
|
||||
case PRID_REV_LOONGSON3B_R1:
|
||||
case PRID_REV_LOONGSON3B_R2:
|
||||
c->cputype = CPU_LOONGSON3;
|
||||
c->cputype = CPU_LOONGSON64;
|
||||
__cpu_name[cpu] = "ICT Loongson-3";
|
||||
set_elf_platform(cpu, "loongson3b");
|
||||
set_isa(c, MIPS_CPU_ISA_M64R1);
|
||||
|
@ -1908,14 +1908,14 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu)
|
|||
switch (c->processor_id & PRID_REV_MASK) {
|
||||
case PRID_REV_LOONGSON3A_R2_0:
|
||||
case PRID_REV_LOONGSON3A_R2_1:
|
||||
c->cputype = CPU_LOONGSON3;
|
||||
c->cputype = CPU_LOONGSON64;
|
||||
__cpu_name[cpu] = "ICT Loongson-3";
|
||||
set_elf_platform(cpu, "loongson3a");
|
||||
set_isa(c, MIPS_CPU_ISA_M64R2);
|
||||
break;
|
||||
case PRID_REV_LOONGSON3A_R3_0:
|
||||
case PRID_REV_LOONGSON3A_R3_1:
|
||||
c->cputype = CPU_LOONGSON3;
|
||||
c->cputype = CPU_LOONGSON64;
|
||||
__cpu_name[cpu] = "ICT Loongson-3";
|
||||
set_elf_platform(cpu, "loongson3a");
|
||||
set_isa(c, MIPS_CPU_ISA_M64R2);
|
||||
|
@ -1929,7 +1929,7 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu)
|
|||
MIPS_ASE_LOONGSON_EXT | MIPS_ASE_LOONGSON_EXT2);
|
||||
break;
|
||||
case PRID_IMP_LOONGSON_64G:
|
||||
c->cputype = CPU_LOONGSON3;
|
||||
c->cputype = CPU_LOONGSON64;
|
||||
__cpu_name[cpu] = "ICT Loongson-3";
|
||||
set_elf_platform(cpu, "loongson3a");
|
||||
set_isa(c, MIPS_CPU_ISA_M64R2);
|
||||
|
|
|
@ -178,7 +178,7 @@ void __init check_wait(void)
|
|||
case CPU_XLP:
|
||||
cpu_wait = r4k_wait;
|
||||
break;
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
if ((c->processor_id & (PRID_IMP_MASK | PRID_REV_MASK)) >=
|
||||
(PRID_IMP_LOONGSON_64C | PRID_REV_LOONGSON3A_R2_0))
|
||||
cpu_wait = r4k_wait;
|
||||
|
|
|
@ -1623,7 +1623,7 @@ static const struct mips_perf_event *mipsxx_pmu_map_raw_event(u64 config)
|
|||
raw_event.cntr_mask =
|
||||
raw_id > 127 ? CNTR_ODD : CNTR_EVEN;
|
||||
break;
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
raw_event.cntr_mask = raw_id > 127 ? CNTR_ODD : CNTR_EVEN;
|
||||
break;
|
||||
}
|
||||
|
@ -1769,7 +1769,7 @@ init_hw_perf_events(void)
|
|||
mipspmu.general_event_map = &mipsxxcore_event_map;
|
||||
mipspmu.cache_event_map = &mipsxxcore_cache_map;
|
||||
break;
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
mipspmu.name = "mips/loongson3";
|
||||
mipspmu.general_event_map = &loongson3_event_map;
|
||||
mipspmu.cache_event_map = &loongson3_cache_map;
|
||||
|
|
|
@ -287,7 +287,7 @@ static unsigned long __init init_initrd(void)
|
|||
* Initialize the bootmem allocator. It also setup initrd related data
|
||||
* if needed.
|
||||
*/
|
||||
#if defined(CONFIG_SGI_IP27) || (defined(CONFIG_CPU_LOONGSON3) && defined(CONFIG_NUMA))
|
||||
#if defined(CONFIG_SGI_IP27) || (defined(CONFIG_CPU_LOONGSON64) && defined(CONFIG_NUMA))
|
||||
|
||||
static void __init bootmem_init(void)
|
||||
{
|
||||
|
|
|
@ -2394,7 +2394,7 @@ void __init trap_init(void)
|
|||
else {
|
||||
if (cpu_has_vtag_icache)
|
||||
set_except_vector(EXCCODE_RI, handle_ri_rdhwr_tlbp);
|
||||
else if (current_cpu_type() == CPU_LOONGSON3)
|
||||
else if (current_cpu_type() == CPU_LOONGSON64)
|
||||
set_except_vector(EXCCODE_RI, handle_ri_rdhwr_tlbp);
|
||||
else
|
||||
set_except_vector(EXCCODE_RI, handle_ri_rdhwr);
|
||||
|
|
|
@ -279,7 +279,7 @@ EXPORT_SYMBOL(csum_partial)
|
|||
#endif
|
||||
|
||||
/* odd buffer alignment? */
|
||||
#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_LOONGSON3)
|
||||
#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_LOONGSON64)
|
||||
.set push
|
||||
.set arch=mips32r2
|
||||
wsbh v1, sum
|
||||
|
@ -732,7 +732,7 @@ EXPORT_SYMBOL(csum_partial)
|
|||
addu sum, v1
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_LOONGSON3)
|
||||
#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_LOONGSON64)
|
||||
.set push
|
||||
.set arch=mips32r2
|
||||
wsbh v1, sum
|
||||
|
|
|
@ -79,7 +79,7 @@ config LOONGSON_MACH3X
|
|||
select I8259
|
||||
select IRQ_MIPS_CPU
|
||||
select NR_CPUS_DEFAULT_4
|
||||
select SYS_HAS_CPU_LOONGSON3
|
||||
select SYS_HAS_CPU_LOONGSON64
|
||||
select SYS_HAS_EARLY_PRINTK
|
||||
select SYS_SUPPORTS_SMP
|
||||
select SYS_SUPPORTS_HOTPLUG_CPU
|
||||
|
|
|
@ -21,4 +21,4 @@ obj-$(CONFIG_LEMOTE_MACH2F) += lemote-2f/
|
|||
# All Loongson-3 family machines
|
||||
#
|
||||
|
||||
obj-$(CONFIG_CPU_LOONGSON3) += loongson-3/
|
||||
obj-$(CONFIG_CPU_LOONGSON64) += loongson-3/
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
|
||||
# Only gcc >= 4.4 have Loongson specific support
|
||||
cflags-$(CONFIG_CPU_LOONGSON2) += -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_LOONGSON2EF) += -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_LOONGSON2E) += \
|
||||
$(call cc-option,-march=loongson2e,-march=r4600)
|
||||
cflags-$(CONFIG_CPU_LOONGSON2F) += \
|
||||
|
@ -22,7 +22,7 @@ ifdef CONFIG_CPU_LOONGSON2F_WORKAROUNDS
|
|||
endif
|
||||
endif
|
||||
|
||||
cflags-$(CONFIG_CPU_LOONGSON3) += -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_LOONGSON64) += -Wa,--trap
|
||||
|
||||
#
|
||||
# Some versions of binutils, not currently mainline as of 2019/02/04, support
|
||||
|
@ -44,7 +44,7 @@ cflags-$(CONFIG_CPU_LOONGSON3) += -Wa,--trap
|
|||
# binutils does not merge support for the flag then we can revisit & remove
|
||||
# this later - for now it ensures vendor toolchains don't cause problems.
|
||||
#
|
||||
cflags-$(CONFIG_CPU_LOONGSON3) += $(call as-option,-Wa$(comma)-mno-fix-loongson3-llsc,)
|
||||
cflags-$(CONFIG_CPU_LOONGSON64) += $(call as-option,-Wa$(comma)-mno-fix-loongson3-llsc,)
|
||||
|
||||
#
|
||||
# binutils from v2.25 on and gcc starting from v4.9.0 treat -march=loongson3a
|
||||
|
@ -55,14 +55,14 @@ cflags-$(CONFIG_CPU_LOONGSON3) += $(call as-option,-Wa$(comma)-mno-fix-loongson3
|
|||
#
|
||||
ifeq ($(call cc-ifversion, -ge, 0409, y), y)
|
||||
ifeq ($(call ld-ifversion, -ge, 225000000, y), y)
|
||||
cflags-$(CONFIG_CPU_LOONGSON3) += \
|
||||
cflags-$(CONFIG_CPU_LOONGSON64) += \
|
||||
$(call cc-option,-march=loongson3a -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
|
||||
else
|
||||
cflags-$(CONFIG_CPU_LOONGSON3) += \
|
||||
cflags-$(CONFIG_CPU_LOONGSON64) += \
|
||||
$(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
|
||||
endif
|
||||
else
|
||||
cflags-$(CONFIG_CPU_LOONGSON3) += \
|
||||
cflags-$(CONFIG_CPU_LOONGSON64) += \
|
||||
$(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
|
||||
endif
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ static int __init pcibios_init(void)
|
|||
#endif
|
||||
register_pci_controller(&loongson_pci_controller);
|
||||
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
sbx00_acpi_init();
|
||||
#endif
|
||||
|
||||
|
|
|
@ -324,7 +324,7 @@ static void r4k_blast_icache_page_setup(void)
|
|||
r4k_blast_icache_page = (void *)cache_noop;
|
||||
else if (ic_lsize == 16)
|
||||
r4k_blast_icache_page = blast_icache16_page;
|
||||
else if (ic_lsize == 32 && current_cpu_type() == CPU_LOONGSON2)
|
||||
else if (ic_lsize == 32 && current_cpu_type() == CPU_LOONGSON2EF)
|
||||
r4k_blast_icache_page = loongson2_blast_icache32_page;
|
||||
else if (ic_lsize == 32)
|
||||
r4k_blast_icache_page = blast_icache32_page;
|
||||
|
@ -373,7 +373,7 @@ static void r4k_blast_icache_page_indexed_setup(void)
|
|||
else if (TX49XX_ICACHE_INDEX_INV_WAR)
|
||||
r4k_blast_icache_page_indexed =
|
||||
tx49_blast_icache32_page_indexed;
|
||||
else if (current_cpu_type() == CPU_LOONGSON2)
|
||||
else if (current_cpu_type() == CPU_LOONGSON2EF)
|
||||
r4k_blast_icache_page_indexed =
|
||||
loongson2_blast_icache32_page_indexed;
|
||||
else
|
||||
|
@ -399,7 +399,7 @@ static void r4k_blast_icache_setup(void)
|
|||
r4k_blast_icache = blast_r4600_v1_icache32;
|
||||
else if (TX49XX_ICACHE_INDEX_INV_WAR)
|
||||
r4k_blast_icache = tx49_blast_icache32;
|
||||
else if (current_cpu_type() == CPU_LOONGSON2)
|
||||
else if (current_cpu_type() == CPU_LOONGSON2EF)
|
||||
r4k_blast_icache = loongson2_blast_icache32;
|
||||
else
|
||||
r4k_blast_icache = blast_icache32;
|
||||
|
@ -469,7 +469,7 @@ static void r4k_blast_scache_node_setup(void)
|
|||
{
|
||||
unsigned long sc_lsize = cpu_scache_line_size();
|
||||
|
||||
if (current_cpu_type() != CPU_LOONGSON3)
|
||||
if (current_cpu_type() != CPU_LOONGSON64)
|
||||
r4k_blast_scache_node = (void *)cache_noop;
|
||||
else if (sc_lsize == 16)
|
||||
r4k_blast_scache_node = blast_scache16_node;
|
||||
|
@ -484,7 +484,7 @@ static void r4k_blast_scache_node_setup(void)
|
|||
static inline void local_r4k___flush_cache_all(void * args)
|
||||
{
|
||||
switch (current_cpu_type()) {
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
case CPU_R4000SC:
|
||||
case CPU_R4000MC:
|
||||
case CPU_R4400SC:
|
||||
|
@ -501,7 +501,7 @@ static inline void local_r4k___flush_cache_all(void * args)
|
|||
r4k_blast_scache();
|
||||
break;
|
||||
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
/* Use get_ebase_cpunum() for both NUMA=y/n */
|
||||
r4k_blast_scache_node(get_ebase_cpunum() >> 2);
|
||||
break;
|
||||
|
@ -774,7 +774,7 @@ static inline void __local_r4k_flush_icache_range(unsigned long start,
|
|||
r4k_blast_icache();
|
||||
else {
|
||||
switch (boot_cpu_type()) {
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
protected_loongson2_blast_icache_range(start, end);
|
||||
break;
|
||||
|
||||
|
@ -867,7 +867,7 @@ static void r4k_dma_cache_wback_inv(unsigned long addr, unsigned long size)
|
|||
preempt_disable();
|
||||
if (cpu_has_inclusive_pcaches) {
|
||||
if (size >= scache_size) {
|
||||
if (current_cpu_type() != CPU_LOONGSON3)
|
||||
if (current_cpu_type() != CPU_LOONGSON64)
|
||||
r4k_blast_scache();
|
||||
else
|
||||
r4k_blast_scache_node(pa_to_nid(addr));
|
||||
|
@ -908,7 +908,7 @@ static void r4k_dma_cache_inv(unsigned long addr, unsigned long size)
|
|||
preempt_disable();
|
||||
if (cpu_has_inclusive_pcaches) {
|
||||
if (size >= scache_size) {
|
||||
if (current_cpu_type() != CPU_LOONGSON3)
|
||||
if (current_cpu_type() != CPU_LOONGSON64)
|
||||
r4k_blast_scache();
|
||||
else
|
||||
r4k_blast_scache_node(pa_to_nid(addr));
|
||||
|
@ -1228,7 +1228,7 @@ static void probe_pcache(void)
|
|||
c->options |= MIPS_CPU_PREFETCH;
|
||||
break;
|
||||
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
icache_size = 1 << (12 + ((config & CONF_IC) >> 9));
|
||||
c->icache.linesz = 16 << ((config & CONF_IB) >> 5);
|
||||
if (prid & 0x3)
|
||||
|
@ -1246,7 +1246,7 @@ static void probe_pcache(void)
|
|||
c->dcache.waybit = 0;
|
||||
break;
|
||||
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
config1 = read_c0_config1();
|
||||
lsize = (config1 >> 19) & 7;
|
||||
if (lsize)
|
||||
|
@ -1457,7 +1457,7 @@ static void probe_pcache(void)
|
|||
c->dcache.flags &= ~MIPS_CACHE_ALIASES;
|
||||
break;
|
||||
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
/*
|
||||
* LOONGSON2 has 4 way icache, but when using indexed cache op,
|
||||
* one op will act on all 4 ways
|
||||
|
@ -1483,7 +1483,7 @@ static void probe_vcache(void)
|
|||
struct cpuinfo_mips *c = ¤t_cpu_data;
|
||||
unsigned int config2, lsize;
|
||||
|
||||
if (current_cpu_type() != CPU_LOONGSON3)
|
||||
if (current_cpu_type() != CPU_LOONGSON64)
|
||||
return;
|
||||
|
||||
config2 = read_c0_config2();
|
||||
|
@ -1658,11 +1658,11 @@ static void setup_scache(void)
|
|||
#endif
|
||||
return;
|
||||
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
loongson2_sc_init();
|
||||
return;
|
||||
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
loongson3_sc_init();
|
||||
return;
|
||||
|
||||
|
@ -1931,7 +1931,7 @@ void r4k_cache_init(void)
|
|||
/* Optimization: an L2 flush implicitly flushes the L1 */
|
||||
current_cpu_data.options |= MIPS_CPU_INCLUSIVE_CACHES;
|
||||
break;
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
/* Loongson-3 maintains cache coherency by hardware */
|
||||
__flush_cache_all = cache_noop;
|
||||
__flush_cache_vmap = cache_noop;
|
||||
|
|
|
@ -187,7 +187,7 @@ static void set_prefetch_parameters(void)
|
|||
}
|
||||
break;
|
||||
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
/* Loongson-3 only support the Pref_Load/Pref_Store. */
|
||||
pref_bias_clear_store = 128;
|
||||
pref_bias_copy_load = 128;
|
||||
|
|
|
@ -35,10 +35,10 @@ extern void build_tlb_refill_handler(void);
|
|||
static inline void flush_micro_tlb(void)
|
||||
{
|
||||
switch (current_cpu_type()) {
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
write_c0_diag(LOONGSON_DIAG_ITLB);
|
||||
break;
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
write_c0_diag(LOONGSON_DIAG_ITLB | LOONGSON_DIAG_DTLB);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -571,8 +571,8 @@ void build_tlb_write_entry(u32 **p, struct uasm_label **l,
|
|||
case CPU_BMIPS4350:
|
||||
case CPU_BMIPS4380:
|
||||
case CPU_BMIPS5000:
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON2EF:
|
||||
case CPU_LOONGSON64:
|
||||
case CPU_R5500:
|
||||
if (m4kc_tlbp_war())
|
||||
uasm_i_nop(p);
|
||||
|
@ -1370,7 +1370,7 @@ static void build_r4000_tlb_refill_handler(void)
|
|||
switch (boot_cpu_type()) {
|
||||
default:
|
||||
if (sizeof(long) == 4) {
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
/* Loongson2 ebase is different than r4k, we have more space */
|
||||
if ((p - tlb_handler) > 64)
|
||||
panic("TLB refill handler space exceeded");
|
||||
|
|
|
@ -14,5 +14,5 @@ oprofile-$(CONFIG_CPU_MIPS64) += op_model_mipsxx.o
|
|||
oprofile-$(CONFIG_CPU_R10000) += op_model_mipsxx.o
|
||||
oprofile-$(CONFIG_CPU_SB1) += op_model_mipsxx.o
|
||||
oprofile-$(CONFIG_CPU_XLR) += op_model_mipsxx.o
|
||||
oprofile-$(CONFIG_CPU_LOONGSON2) += op_model_loongson2.o
|
||||
oprofile-$(CONFIG_CPU_LOONGSON3) += op_model_loongson3.o
|
||||
oprofile-$(CONFIG_CPU_LOONGSON2EF) += op_model_loongson2.o
|
||||
oprofile-$(CONFIG_CPU_LOONGSON64) += op_model_loongson3.o
|
||||
|
|
|
@ -104,10 +104,10 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
|
|||
lmodel = &op_model_mipsxx_ops;
|
||||
break;
|
||||
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_LOONGSON2EF:
|
||||
lmodel = &op_model_loongson2_ops;
|
||||
break;
|
||||
case CPU_LOONGSON3:
|
||||
case CPU_LOONGSON64:
|
||||
lmodel = &op_model_loongson3_ops;
|
||||
break;
|
||||
};
|
||||
|
|
|
@ -298,7 +298,7 @@ config GPIO_IXP4XX
|
|||
|
||||
config GPIO_LOONGSON
|
||||
bool "Loongson-2/3 GPIO support"
|
||||
depends on CPU_LOONGSON2 || CPU_LOONGSON3
|
||||
depends on CPU_LOONGSON2EF || CPU_LOONGSON64
|
||||
help
|
||||
driver for GPIO functionality on Loongson-2F/3A/3B processors.
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#define STLS2F_N_GPIO 4
|
||||
#define STLS3A_N_GPIO 16
|
||||
|
||||
#ifdef CONFIG_CPU_LOONGSON3
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
#define LOONGSON_N_GPIO STLS3A_N_GPIO
|
||||
#else
|
||||
#define LOONGSON_N_GPIO STLS2F_N_GPIO
|
||||
|
|
|
@ -45,7 +45,7 @@ static inline bool drm_arch_can_wc_memory(void)
|
|||
{
|
||||
#if defined(CONFIG_PPC) && !defined(CONFIG_NOT_COHERENT_CACHE)
|
||||
return false;
|
||||
#elif defined(CONFIG_MIPS) && defined(CONFIG_CPU_LOONGSON3)
|
||||
#elif defined(CONFIG_MIPS) && defined(CONFIG_CPU_LOONGSON64)
|
||||
return false;
|
||||
#elif defined(CONFIG_ARM) || defined(CONFIG_ARM64)
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue
Block a user