aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-mips/mach-ip27
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-mips/mach-ip27')
-rw-r--r--include/asm-mips/mach-ip27/cpu-feature-overrides.h39
-rw-r--r--include/asm-mips/mach-ip27/irq.h22
-rw-r--r--include/asm-mips/mach-ip27/mangle-port.h16
-rw-r--r--include/asm-mips/mach-ip27/mmzone.h36
-rw-r--r--include/asm-mips/mach-ip27/spaces.h34
-rw-r--r--include/asm-mips/mach-ip27/topology.h38
6 files changed, 185 insertions, 0 deletions
diff --git a/include/asm-mips/mach-ip27/cpu-feature-overrides.h b/include/asm-mips/mach-ip27/cpu-feature-overrides.h
new file mode 100644
index 000000000000..fe96d7358517
--- /dev/null
+++ b/include/asm-mips/mach-ip27/cpu-feature-overrides.h
@@ -0,0 +1,39 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2003 Ralf Baechle
7 */
8#ifndef __ASM_MACH_IP27_CPU_FEATURE_OVERRIDES_H
9#define __ASM_MACH_IP27_CPU_FEATURE_OVERRIDES_H
10
11/*
12 * IP27 only comes with R10000 family processors all using the same config
13 */
14#define cpu_has_watch 1
15#define cpu_has_mips16 0
16#define cpu_has_divec 0
17#define cpu_has_vce 0
18#define cpu_has_cache_cdex_p 0
19#define cpu_has_cache_cdex_s 0
20#define cpu_has_prefetch 1
21#define cpu_has_mcheck 0
22#define cpu_has_ejtag 0
23
24#define cpu_has_llsc 1
25#define cpu_has_vtag_icache 0
26#define cpu_has_dc_aliases 0
27#define cpu_has_ic_fills_f_dc 0
28#define cpu_icache_snoops_remote_store 1
29
30#define cpu_has_nofpuex 0
31#define cpu_has_64bits 1
32
33#define cpu_has_subset_pcaches 1
34
35#define cpu_dcache_line_size() 32
36#define cpu_icache_line_size() 64
37#define cpu_scache_line_size() 128
38
39#endif /* __ASM_MACH_IP27_CPU_FEATURE_OVERRIDES_H */
diff --git a/include/asm-mips/mach-ip27/irq.h b/include/asm-mips/mach-ip27/irq.h
new file mode 100644
index 000000000000..806213ce31b6
--- /dev/null
+++ b/include/asm-mips/mach-ip27/irq.h
@@ -0,0 +1,22 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 1999, 2000, 01, 02, 03 by Ralf Baechle
7 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
8 * Copyright (C) 2001 Kanoj Sarcar
9 */
10#ifndef __ASM_MACH_IP27_IRQ_H
11#define __ASM_MACH_IP27_IRQ_H
12
13#include <asm/sn/arch.h>
14
15/*
16 * A hardwired interrupt number is completly stupid for this system - a
17 * large configuration might have thousands if not tenthousands of
18 * interrupts.
19 */
20#define NR_IRQS 256
21
22#endif /* __ASM_MACH_IP27_IRQ_H */
diff --git a/include/asm-mips/mach-ip27/mangle-port.h b/include/asm-mips/mach-ip27/mangle-port.h
new file mode 100644
index 000000000000..f76c44880451
--- /dev/null
+++ b/include/asm-mips/mach-ip27/mangle-port.h
@@ -0,0 +1,16 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2003, 2004 Ralf Baechle
7 */
8#ifndef __ASM_MACH_IP27_MANGLE_PORT_H
9#define __ASM_MACH_IP27_MANGLE_PORT_H
10
11#define __swizzle_addr_b(port) (port)
12#define __swizzle_addr_w(port) ((port) ^ 2)
13#define __swizzle_addr_l(port) (port)
14#define __swizzle_addr_q(port) (port)
15
16#endif /* __ASM_MACH_IP27_MANGLE_PORT_H */
diff --git a/include/asm-mips/mach-ip27/mmzone.h b/include/asm-mips/mach-ip27/mmzone.h
new file mode 100644
index 000000000000..d3f566362e9d
--- /dev/null
+++ b/include/asm-mips/mach-ip27/mmzone.h
@@ -0,0 +1,36 @@
1#ifndef _ASM_MACH_MMZONE_H
2#define _ASM_MACH_MMZONE_H
3
4#include <asm/sn/addrs.h>
5#include <asm/sn/arch.h>
6#include <asm/sn/hub.h>
7
8#define pa_to_nid(addr) NASID_TO_COMPACT_NODEID(NASID_GET(addr))
9
10#define LEVELS_PER_SLICE 128
11
12struct slice_data {
13 unsigned long irq_alloc_mask[2];
14 unsigned long irq_enable_mask[2];
15 int level_to_irq[LEVELS_PER_SLICE];
16};
17
18struct hub_data {
19 kern_vars_t kern_vars;
20 DECLARE_BITMAP(h_bigwin_used, HUB_NUM_BIG_WINDOW);
21 cpumask_t h_cpus;
22 unsigned long slice_map;
23 struct slice_data slice[2];
24};
25
26struct node_data {
27 struct pglist_data pglist;
28 struct hub_data hub;
29};
30
31extern struct node_data *__node_data[];
32
33#define NODE_DATA(n) (&__node_data[(n)]->pglist)
34#define hub_data(n) (&__node_data[(n)]->hub)
35
36#endif /* _ASM_MACH_MMZONE_H */
diff --git a/include/asm-mips/mach-ip27/spaces.h b/include/asm-mips/mach-ip27/spaces.h
new file mode 100644
index 000000000000..e3b3fe32eeb1
--- /dev/null
+++ b/include/asm-mips/mach-ip27/spaces.h
@@ -0,0 +1,34 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 1996, 99 Ralf Baechle
7 * Copyright (C) 2000, 2002 Maciej W. Rozycki
8 * Copyright (C) 1990, 1999 by Silicon Graphics, Inc.
9 */
10#ifndef _ASM_MACH_IP27_SPACES_H
11#define _ASM_MACH_IP27_SPACES_H
12
13/*
14 * IP27 uses the R10000's uncached attribute feature. Attribute 3 selects
15 * uncached memory addressing.
16 */
17#define CAC_BASE 0xa800000000000000
18
19#define HSPEC_BASE 0x9000000000000000
20#define IO_BASE 0x9200000000000000
21#define MSPEC_BASE 0x9400000000000000
22#define UNCAC_BASE 0x9600000000000000
23
24#define TO_PHYS(x) ( ((x) & TO_PHYS_MASK))
25#define TO_CAC(x) (CAC_BASE | ((x) & TO_PHYS_MASK))
26#define TO_UNCAC(x) (UNCAC_BASE | ((x) & TO_PHYS_MASK))
27#define TO_MSPEC(x) (MSPEC_BASE | ((x) & TO_PHYS_MASK))
28#define TO_HSPEC(x) (HSPEC_BASE | ((x) & TO_PHYS_MASK))
29
30#define PAGE_OFFSET CAC_BASE
31
32#define HIGHMEM_START (~0UL)
33
34#endif /* _ASM_MACH_IP27_SPACES_H */
diff --git a/include/asm-mips/mach-ip27/topology.h b/include/asm-mips/mach-ip27/topology.h
new file mode 100644
index 000000000000..a70a81257c3d
--- /dev/null
+++ b/include/asm-mips/mach-ip27/topology.h
@@ -0,0 +1,38 @@
1#ifndef _ASM_MACH_TOPOLOGY_H
2#define _ASM_MACH_TOPOLOGY_H 1
3
4#include <asm/sn/arch.h>
5#include <asm/sn/hub.h>
6#include <asm/mmzone.h>
7
8#define cpu_to_node(cpu) (cpu_data[(cpu)].p_nodeid)
9#define parent_node(node) (node)
10#define node_to_cpumask(node) (hub_data(node)->h_cpus)
11#define node_to_first_cpu(node) (first_cpu(node_to_cpumask(node)))
12#define pcibus_to_cpumask(bus) (cpu_online_map)
13
14extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
15
16#define node_distance(from, to) (__node_distances[(from)][(to)])
17
18/* sched_domains SD_NODE_INIT for SGI IP27 machines */
19#define SD_NODE_INIT (struct sched_domain) { \
20 .span = CPU_MASK_NONE, \
21 .parent = NULL, \
22 .groups = NULL, \
23 .min_interval = 8, \
24 .max_interval = 32, \
25 .busy_factor = 32, \
26 .imbalance_pct = 125, \
27 .cache_hot_time = (10*1000), \
28 .cache_nice_tries = 1, \
29 .per_cpu_gain = 100, \
30 .flags = SD_LOAD_BALANCE \
31 | SD_BALANCE_EXEC \
32 | SD_WAKE_BALANCE, \
33 .last_balance = jiffies, \
34 .balance_interval = 1, \
35 .nr_balance_failed = 0, \
36}
37
38#endif /* _ASM_MACH_TOPOLOGY_H */