aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2005-09-03 18:56:11 -0400
committerLinus Torvalds <torvalds@evo.osdl.org>2005-09-05 03:06:04 -0400
commit07119621e62de0a2c8db6e4896e762c498bfdd17 (patch)
treec62dd52e8072235c8148e7f31b16ed30c5e45343
parent7901c7998267d9d8c3f1b226a8c8cfd7f8e48a01 (diff)
[PATCH] mips: add support for Qemu system architecture
Add support for the virtual MIPS system that is emulated by Qemu. See http://www.linux-mips.org/wiki/Qemu for a detailed current status. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/mips/Kconfig18
-rw-r--r--arch/mips/Makefile6
-rw-r--r--arch/mips/configs/qemu_defconfig655
-rw-r--r--arch/mips/qemu/Makefile5
-rw-r--r--arch/mips/qemu/q-firmware.c7
-rw-r--r--arch/mips/qemu/q-int.S17
-rw-r--r--arch/mips/qemu/q-irq.c37
-rw-r--r--arch/mips/qemu/q-mem.c6
-rw-r--r--arch/mips/qemu/q-setup.c20
-rw-r--r--include/asm-mips/mach-qemu/cpu-feature-overrides.h31
-rw-r--r--include/asm-mips/mach-qemu/param.h13
-rw-r--r--include/asm-mips/qemu.h24
12 files changed, 839 insertions, 0 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index e82d9240ea8e..8398efdee2fa 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -445,6 +445,24 @@ config DDB5477_BUS_FREQUENCY
445 depends on DDB5477 445 depends on DDB5477
446 default 0 446 default 0
447 447
448config QEMU
449 bool "Support for Qemu"
450 select DMA_COHERENT
451 select GENERIC_ISA_DMA
452 select HAVE_STD_PC_SERIAL_PORT
453 select I8259
454 select ISA
455 select SWAP_IO_SPACE
456 select SYS_SUPPORTS_32BIT_KERNEL
457 select SYS_SUPPORTS_BIG_ENDIAN
458 help
459 Qemu is a software emulator which among other architectures also
460 can simulate a MIPS32 4Kc system. This patch adds support for the
461 system architecture that currently is being simulated by Qemu. It
462 will eventually be removed again when Qemu has the capability to
463 simulate actual MIPS hardware platforms. More information on Qemu
464 can be found at http://www.linux-mips.org/wiki/Qemu.
465
448config SGI_IP22 466config SGI_IP22
449 bool "Support for SGI IP22 (Indy/Indigo2)" 467 bool "Support for SGI IP22 (Indy/Indigo2)"
450 select ARC 468 select ARC
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index e7764f3e4887..c8b16e668c17 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -423,6 +423,12 @@ core-$(CONFIG_PMC_YOSEMITE) += arch/mips/pmc-sierra/yosemite/
423cflags-$(CONFIG_PMC_YOSEMITE) += -Iinclude/asm-mips/mach-yosemite 423cflags-$(CONFIG_PMC_YOSEMITE) += -Iinclude/asm-mips/mach-yosemite
424load-$(CONFIG_PMC_YOSEMITE) += 0xffffffff80100000 424load-$(CONFIG_PMC_YOSEMITE) += 0xffffffff80100000
425 425
426# Qemu simulating MIPS32 4Kc
427#
428core-$(CONFIG_QEMU) += arch/mips/qemu/
429cflags-$(CONFIG_QEMU) += -Iinclude/asm-mips/mach-qemu
430load-$(CONFIG_QEMU) += 0xffffffff80010000
431
426# 432#
427# Momentum Ocelot-3 433# Momentum Ocelot-3
428# 434#
diff --git a/arch/mips/configs/qemu_defconfig b/arch/mips/configs/qemu_defconfig
new file mode 100644
index 000000000000..b6568e421b99
--- /dev/null
+++ b/arch/mips/configs/qemu_defconfig
@@ -0,0 +1,655 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.13-rc6
4# Mon Aug 8 11:49:54 2005
5#
6CONFIG_MIPS=y
7
8#
9# Code maturity level options
10#
11# CONFIG_EXPERIMENTAL is not set
12CONFIG_CLEAN_COMPILE=y
13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
15
16#
17# General setup
18#
19CONFIG_LOCALVERSION=""
20# CONFIG_SWAP is not set
21# CONFIG_SYSVIPC is not set
22# CONFIG_BSD_PROCESS_ACCT is not set
23# CONFIG_SYSCTL is not set
24# CONFIG_AUDIT is not set
25# CONFIG_HOTPLUG is not set
26CONFIG_KOBJECT_UEVENT=y
27# CONFIG_IKCONFIG is not set
28CONFIG_EMBEDDED=y
29CONFIG_KALLSYMS=y
30# CONFIG_KALLSYMS_EXTRA_PASS is not set
31CONFIG_PRINTK=y
32# CONFIG_BUG is not set
33# CONFIG_BASE_FULL is not set
34# CONFIG_FUTEX is not set
35# CONFIG_EPOLL is not set
36# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
37# CONFIG_SHMEM is not set
38CONFIG_CC_ALIGN_FUNCTIONS=0
39CONFIG_CC_ALIGN_LABELS=0
40CONFIG_CC_ALIGN_LOOPS=0
41CONFIG_CC_ALIGN_JUMPS=0
42CONFIG_TINY_SHMEM=y
43CONFIG_BASE_SMALL=1
44
45#
46# Loadable module support
47#
48# CONFIG_MODULES is not set
49
50#
51# Machine selection
52#
53# CONFIG_MIPS_MTX1 is not set
54# CONFIG_MIPS_BOSPORUS is not set
55# CONFIG_MIPS_PB1000 is not set
56# CONFIG_MIPS_PB1100 is not set
57# CONFIG_MIPS_PB1500 is not set
58# CONFIG_MIPS_PB1550 is not set
59# CONFIG_MIPS_PB1200 is not set
60# CONFIG_MIPS_DB1000 is not set
61# CONFIG_MIPS_DB1100 is not set
62# CONFIG_MIPS_DB1500 is not set
63# CONFIG_MIPS_DB1550 is not set
64# CONFIG_MIPS_DB1200 is not set
65# CONFIG_MIPS_MIRAGE is not set
66# CONFIG_MIPS_COBALT is not set
67# CONFIG_MACH_DECSTATION is not set
68# CONFIG_MIPS_EV64120 is not set
69# CONFIG_MIPS_EV96100 is not set
70# CONFIG_MIPS_IVR is not set
71# CONFIG_MIPS_ITE8172 is not set
72# CONFIG_MACH_JAZZ is not set
73# CONFIG_LASAT is not set
74# CONFIG_MIPS_ATLAS is not set
75# CONFIG_MIPS_MALTA is not set
76# CONFIG_MIPS_SEAD is not set
77# CONFIG_MOMENCO_JAGUAR_ATX is not set
78# CONFIG_MOMENCO_OCELOT is not set
79# CONFIG_MOMENCO_OCELOT_3 is not set
80# CONFIG_MOMENCO_OCELOT_C is not set
81# CONFIG_MOMENCO_OCELOT_G is not set
82# CONFIG_MIPS_XXS1500 is not set
83# CONFIG_PNX8550_V2PCI is not set
84# CONFIG_PNX8550_JBS is not set
85# CONFIG_DDB5074 is not set
86# CONFIG_DDB5476 is not set
87# CONFIG_DDB5477 is not set
88# CONFIG_MACH_VR41XX is not set
89# CONFIG_PMC_YOSEMITE is not set
90CONFIG_QEMU=y
91# CONFIG_SGI_IP22 is not set
92# CONFIG_SGI_IP27 is not set
93# CONFIG_SGI_IP32 is not set
94# CONFIG_SIBYTE_SWARM is not set
95# CONFIG_SIBYTE_SENTOSA is not set
96# CONFIG_SIBYTE_RHONE is not set
97# CONFIG_SIBYTE_CARMEL is not set
98# CONFIG_SIBYTE_PTSWARM is not set
99# CONFIG_SIBYTE_LITTLESUR is not set
100# CONFIG_SIBYTE_CRHINE is not set
101# CONFIG_SIBYTE_CRHONE is not set
102# CONFIG_SNI_RM200_PCI is not set
103# CONFIG_TOSHIBA_JMR3927 is not set
104# CONFIG_TOSHIBA_RBTX4927 is not set
105# CONFIG_TOSHIBA_RBTX4938 is not set
106CONFIG_RWSEM_GENERIC_SPINLOCK=y
107CONFIG_GENERIC_CALIBRATE_DELAY=y
108CONFIG_HAVE_DEC_LOCK=y
109CONFIG_DMA_COHERENT=y
110CONFIG_GENERIC_ISA_DMA=y
111CONFIG_I8259=y
112CONFIG_CPU_BIG_ENDIAN=y
113# CONFIG_CPU_LITTLE_ENDIAN is not set
114CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
115CONFIG_SWAP_IO_SPACE=y
116CONFIG_MIPS_L1_CACHE_SHIFT=5
117CONFIG_HAVE_STD_PC_SERIAL_PORT=y
118
119#
120# CPU selection
121#
122# CONFIG_CPU_MIPS32_R1 is not set
123# CONFIG_CPU_MIPS32_R2 is not set
124# CONFIG_CPU_MIPS64_R1 is not set
125# CONFIG_CPU_MIPS64_R2 is not set
126# CONFIG_CPU_R3000 is not set
127# CONFIG_CPU_TX39XX is not set
128# CONFIG_CPU_VR41XX is not set
129# CONFIG_CPU_R4300 is not set
130CONFIG_CPU_R4X00=y
131# CONFIG_CPU_TX49XX is not set
132# CONFIG_CPU_R5000 is not set
133# CONFIG_CPU_R5432 is not set
134# CONFIG_CPU_R6000 is not set
135# CONFIG_CPU_NEVADA is not set
136# CONFIG_CPU_R8000 is not set
137# CONFIG_CPU_R10000 is not set
138# CONFIG_CPU_RM7000 is not set
139# CONFIG_CPU_RM9000 is not set
140# CONFIG_CPU_SB1 is not set
141CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
142CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
143CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
144
145#
146# Kernel type
147#
148CONFIG_32BIT=y
149# CONFIG_64BIT is not set
150CONFIG_PAGE_SIZE_4KB=y
151# CONFIG_PAGE_SIZE_8KB is not set
152# CONFIG_PAGE_SIZE_16KB is not set
153# CONFIG_PAGE_SIZE_64KB is not set
154# CONFIG_MIPS_MT is not set
155# CONFIG_64BIT_PHYS_ADDR is not set
156# CONFIG_CPU_ADVANCED is not set
157CONFIG_CPU_HAS_LLSC=y
158CONFIG_CPU_HAS_LLDSCD=y
159CONFIG_CPU_HAS_SYNC=y
160CONFIG_ARCH_FLATMEM_ENABLE=y
161CONFIG_FLATMEM=y
162CONFIG_FLAT_NODE_MEM_MAP=y
163CONFIG_PREEMPT_NONE=y
164# CONFIG_PREEMPT_VOLUNTARY is not set
165# CONFIG_PREEMPT is not set
166
167#
168# Bus options (PCI, PCMCIA, EISA, ISA, TC)
169#
170CONFIG_ISA=y
171CONFIG_MMU=y
172
173#
174# PCCARD (PCMCIA/CardBus) support
175#
176# CONFIG_PCCARD is not set
177
178#
179# PCI Hotplug Support
180#
181
182#
183# Executable file formats
184#
185CONFIG_BINFMT_ELF=y
186# CONFIG_BINFMT_MISC is not set
187CONFIG_TRAD_SIGNALS=y
188
189#
190# Networking
191#
192CONFIG_NET=y
193
194#
195# Networking options
196#
197CONFIG_PACKET=y
198CONFIG_PACKET_MMAP=y
199CONFIG_UNIX=y
200# CONFIG_NET_KEY is not set
201CONFIG_INET=y
202CONFIG_IP_MULTICAST=y
203# CONFIG_IP_ADVANCED_ROUTER is not set
204CONFIG_IP_FIB_HASH=y
205CONFIG_IP_PNP=y
206CONFIG_IP_PNP_DHCP=y
207CONFIG_IP_PNP_BOOTP=y
208# CONFIG_IP_PNP_RARP is not set
209# CONFIG_NET_IPIP is not set
210# CONFIG_NET_IPGRE is not set
211# CONFIG_IP_MROUTE is not set
212# CONFIG_SYN_COOKIES is not set
213# CONFIG_INET_AH is not set
214# CONFIG_INET_ESP is not set
215# CONFIG_INET_IPCOMP is not set
216# CONFIG_INET_TUNNEL is not set
217CONFIG_IP_TCPDIAG=y
218# CONFIG_IP_TCPDIAG_IPV6 is not set
219# CONFIG_TCP_CONG_ADVANCED is not set
220CONFIG_TCP_CONG_BIC=y
221# CONFIG_IPV6 is not set
222# CONFIG_NETFILTER is not set
223# CONFIG_BRIDGE is not set
224# CONFIG_VLAN_8021Q is not set
225# CONFIG_DECNET is not set
226# CONFIG_LLC2 is not set
227# CONFIG_IPX is not set
228# CONFIG_ATALK is not set
229# CONFIG_NET_SCHED is not set
230# CONFIG_NET_CLS_ROUTE is not set
231
232#
233# Network testing
234#
235# CONFIG_HAMRADIO is not set
236# CONFIG_IRDA is not set
237# CONFIG_BT is not set
238
239#
240# Device Drivers
241#
242
243#
244# Generic Driver Options
245#
246CONFIG_STANDALONE=y
247# CONFIG_PREVENT_FIRMWARE_BUILD is not set
248# CONFIG_FW_LOADER is not set
249
250#
251# Memory Technology Devices (MTD)
252#
253# CONFIG_MTD is not set
254
255#
256# Parallel port support
257#
258# CONFIG_PARPORT is not set
259
260#
261# Plug and Play support
262#
263# CONFIG_PNP is not set
264
265#
266# Block devices
267#
268# CONFIG_BLK_DEV_FD is not set
269# CONFIG_BLK_DEV_COW_COMMON is not set
270# CONFIG_BLK_DEV_LOOP is not set
271# CONFIG_BLK_DEV_NBD is not set
272# CONFIG_BLK_DEV_RAM is not set
273CONFIG_BLK_DEV_RAM_COUNT=16
274CONFIG_INITRAMFS_SOURCE=""
275# CONFIG_CDROM_PKTCDVD is not set
276
277#
278# IO Schedulers
279#
280CONFIG_IOSCHED_NOOP=y
281# CONFIG_IOSCHED_AS is not set
282# CONFIG_IOSCHED_DEADLINE is not set
283# CONFIG_IOSCHED_CFQ is not set
284# CONFIG_ATA_OVER_ETH is not set
285
286#
287# ATA/ATAPI/MFM/RLL support
288#
289# CONFIG_IDE is not set
290
291#
292# SCSI device support
293#
294# CONFIG_SCSI is not set
295
296#
297# Old CD-ROM drivers (not SCSI, not IDE)
298#
299# CONFIG_CD_NO_IDESCSI is not set
300
301#
302# Multi-device support (RAID and LVM)
303#
304# CONFIG_MD is not set
305
306#
307# Fusion MPT device support
308#
309# CONFIG_FUSION is not set
310
311#
312# IEEE 1394 (FireWire) support
313#
314
315#
316# I2O device support
317#
318
319#
320# Network device support
321#
322CONFIG_NETDEVICES=y
323# CONFIG_DUMMY is not set
324# CONFIG_BONDING is not set
325# CONFIG_EQUALIZER is not set
326# CONFIG_TUN is not set
327
328#
329# ARCnet devices
330#
331# CONFIG_ARCNET is not set
332
333#
334# Ethernet (10 or 100Mbit)
335#
336CONFIG_NET_ETHERNET=y
337CONFIG_MII=y
338# CONFIG_NET_VENDOR_3COM is not set
339# CONFIG_NET_VENDOR_SMC is not set
340# CONFIG_NET_VENDOR_RACAL is not set
341# CONFIG_DEPCA is not set
342# CONFIG_HP100 is not set
343CONFIG_NET_ISA=y
344# CONFIG_E2100 is not set
345# CONFIG_EWRK3 is not set
346# CONFIG_EEXPRESS is not set
347# CONFIG_EEXPRESS_PRO is not set
348# CONFIG_HPLAN_PLUS is not set
349# CONFIG_HPLAN is not set
350# CONFIG_LP486E is not set
351# CONFIG_ETH16I is not set
352CONFIG_NE2000=y
353# CONFIG_NET_PCI is not set
354# CONFIG_NET_POCKET is not set
355
356#
357# Ethernet (1000 Mbit)
358#
359
360#
361# Ethernet (10000 Mbit)
362#
363
364#
365# Token Ring devices
366#
367# CONFIG_TR is not set
368
369#
370# Wireless LAN (non-hamradio)
371#
372# CONFIG_NET_RADIO is not set
373
374#
375# Wan interfaces
376#
377# CONFIG_WAN is not set
378# CONFIG_PPP is not set
379# CONFIG_SLIP is not set
380# CONFIG_NETPOLL is not set
381# CONFIG_NET_POLL_CONTROLLER is not set
382
383#
384# ISDN subsystem
385#
386# CONFIG_ISDN is not set
387
388#
389# Telephony Support
390#
391# CONFIG_PHONE is not set
392
393#
394# Input device support
395#
396CONFIG_INPUT=y
397
398#
399# Userland interfaces
400#
401# CONFIG_INPUT_MOUSEDEV is not set
402# CONFIG_INPUT_JOYDEV is not set
403# CONFIG_INPUT_TSDEV is not set
404# CONFIG_INPUT_EVDEV is not set
405# CONFIG_INPUT_EVBUG is not set
406
407#
408# Input Device Drivers
409#
410# CONFIG_INPUT_KEYBOARD is not set
411# CONFIG_INPUT_MOUSE is not set
412# CONFIG_INPUT_JOYSTICK is not set
413# CONFIG_INPUT_TOUCHSCREEN is not set
414# CONFIG_INPUT_MISC is not set
415
416#
417# Hardware I/O ports
418#
419# CONFIG_SERIO is not set
420# CONFIG_GAMEPORT is not set
421
422#
423# Character devices
424#
425CONFIG_VT=y
426CONFIG_VT_CONSOLE=y
427CONFIG_HW_CONSOLE=y
428# CONFIG_SERIAL_NONSTANDARD is not set
429
430#
431# Serial drivers
432#
433CONFIG_SERIAL_8250=y
434CONFIG_SERIAL_8250_CONSOLE=y
435CONFIG_SERIAL_8250_NR_UARTS=4
436# CONFIG_SERIAL_8250_EXTENDED is not set
437
438#
439# Non-8250 serial port support
440#
441CONFIG_SERIAL_CORE=y
442CONFIG_SERIAL_CORE_CONSOLE=y
443# CONFIG_UNIX98_PTYS is not set
444# CONFIG_LEGACY_PTYS is not set
445
446#
447# IPMI
448#
449# CONFIG_IPMI_HANDLER is not set
450
451#
452# Watchdog Cards
453#
454# CONFIG_WATCHDOG is not set
455# CONFIG_RTC is not set
456# CONFIG_GEN_RTC is not set
457# CONFIG_DTLK is not set
458# CONFIG_R3964 is not set
459
460#
461# Ftape, the floppy tape device driver
462#
463# CONFIG_RAW_DRIVER is not set
464
465#
466# TPM devices
467#
468
469#
470# I2C support
471#
472# CONFIG_I2C is not set
473# CONFIG_I2C_SENSOR is not set
474
475#
476# Dallas's 1-wire bus
477#
478# CONFIG_W1 is not set
479
480#
481# Hardware Monitoring support
482#
483# CONFIG_HWMON is not set
484
485#
486# Misc devices
487#
488
489#
490# Multimedia devices
491#
492# CONFIG_VIDEO_DEV is not set
493
494#
495# Digital Video Broadcasting Devices
496#
497# CONFIG_DVB is not set
498
499#
500# Graphics support
501#
502# CONFIG_FB is not set
503
504#
505# Console display driver support
506#
507CONFIG_VGA_CONSOLE=y
508# CONFIG_MDA_CONSOLE is not set
509CONFIG_DUMMY_CONSOLE=y
510
511#
512# Sound
513#
514# CONFIG_SOUND is not set
515
516#
517# USB support
518#
519# CONFIG_USB_ARCH_HAS_HCD is not set
520# CONFIG_USB_ARCH_HAS_OHCI is not set
521
522#
523# USB Gadget Support
524#
525# CONFIG_USB_GADGET is not set
526
527#
528# MMC/SD Card support
529#
530# CONFIG_MMC is not set
531
532#
533# InfiniBand support
534#
535# CONFIG_INFINIBAND is not set
536
537#
538# SN Devices
539#
540
541#
542# File systems
543#
544# CONFIG_EXT2_FS is not set
545# CONFIG_EXT3_FS is not set
546# CONFIG_JBD is not set
547# CONFIG_REISERFS_FS is not set
548# CONFIG_JFS_FS is not set
549# CONFIG_FS_POSIX_ACL is not set
550
551#
552# XFS support
553#
554# CONFIG_XFS_FS is not set
555# CONFIG_MINIX_FS is not set
556# CONFIG_ROMFS_FS is not set
557CONFIG_INOTIFY=y
558# CONFIG_QUOTA is not set
559# CONFIG_DNOTIFY is not set
560# CONFIG_AUTOFS_FS is not set
561# CONFIG_AUTOFS4_FS is not set
562
563#
564# CD-ROM/DVD Filesystems
565#
566# CONFIG_ISO9660_FS is not set
567# CONFIG_UDF_FS is not set
568
569#
570# DOS/FAT/NT Filesystems
571#
572# CONFIG_MSDOS_FS is not set
573# CONFIG_VFAT_FS is not set
574# CONFIG_NTFS_FS is not set
575
576#
577# Pseudo filesystems
578#
579# CONFIG_PROC_FS is not set
580# CONFIG_SYSFS is not set
581# CONFIG_TMPFS is not set
582# CONFIG_HUGETLB_PAGE is not set
583CONFIG_RAMFS=y
584
585#
586# Miscellaneous filesystems
587#
588# CONFIG_HFSPLUS_FS is not set
589# CONFIG_CRAMFS is not set
590# CONFIG_VXFS_FS is not set
591# CONFIG_HPFS_FS is not set
592# CONFIG_QNX4FS_FS is not set
593# CONFIG_SYSV_FS is not set
594# CONFIG_UFS_FS is not set
595
596#
597# Network File Systems
598#
599CONFIG_NFS_FS=y
600CONFIG_NFS_V3=y
601# CONFIG_NFS_V3_ACL is not set
602# CONFIG_NFSD is not set
603CONFIG_ROOT_NFS=y
604CONFIG_LOCKD=y
605CONFIG_LOCKD_V4=y
606CONFIG_NFS_COMMON=y
607CONFIG_SUNRPC=y
608# CONFIG_SMB_FS is not set
609# CONFIG_CIFS is not set
610# CONFIG_NCP_FS is not set
611# CONFIG_CODA_FS is not set
612
613#
614# Partition Types
615#
616# CONFIG_PARTITION_ADVANCED is not set
617CONFIG_MSDOS_PARTITION=y
618
619#
620# Native Language Support
621#
622# CONFIG_NLS is not set
623
624#
625# Kernel hacking
626#
627# CONFIG_PRINTK_TIME is not set
628# CONFIG_DEBUG_KERNEL is not set
629CONFIG_LOG_BUF_SHIFT=14
630CONFIG_CROSSCOMPILE=y
631CONFIG_CMDLINE="console=ttyS0 debug ip=172.20.0.2:172.20.0.1::255.255.0.0"
632
633#
634# Security options
635#
636# CONFIG_KEYS is not set
637# CONFIG_SECURITY is not set
638
639#
640# Cryptographic options
641#
642# CONFIG_CRYPTO is not set
643
644#
645# Hardware crypto devices
646#
647
648#
649# Library routines
650#
651# CONFIG_CRC_CCITT is not set
652CONFIG_CRC32=y
653# CONFIG_LIBCRC32C is not set
654CONFIG_GENERIC_HARDIRQS=y
655CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/qemu/Makefile b/arch/mips/qemu/Makefile
new file mode 100644
index 000000000000..934944ab9e85
--- /dev/null
+++ b/arch/mips/qemu/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile for Qemu specific kernel interface routines under Linux.
3#
4
5obj-y = q-firmware.o q-int.o q-irq.o q-mem.o q-setup.o
diff --git a/arch/mips/qemu/q-firmware.c b/arch/mips/qemu/q-firmware.c
new file mode 100644
index 000000000000..5980f02b2df9
--- /dev/null
+++ b/arch/mips/qemu/q-firmware.c
@@ -0,0 +1,7 @@
1#include <linux/init.h>
2#include <asm/bootinfo.h>
3
4void __init prom_init(void)
5{
6 add_memory_region(0x0<<20, 0x10<<20, BOOT_MEM_RAM);
7}
diff --git a/arch/mips/qemu/q-int.S b/arch/mips/qemu/q-int.S
new file mode 100644
index 000000000000..6e3dfe5eb14b
--- /dev/null
+++ b/arch/mips/qemu/q-int.S
@@ -0,0 +1,17 @@
1/*
2 * Qemu interrupt handler code.
3 *
4 * Copyright (C) 2005 by Ralf Baechle
5 */
6#include <asm/asm.h>
7#include <asm/regdef.h>
8#include <asm/stackframe.h>
9
10 .align 5
11 NESTED(qemu_handle_int, PT_SIZE, sp)
12 SAVE_ALL
13 CLI
14 move a0, sp
15 PTR_LA ra, ret_from_irq
16 j do_qemu_int
17 END(qemu_handle_int)
diff --git a/arch/mips/qemu/q-irq.c b/arch/mips/qemu/q-irq.c
new file mode 100644
index 000000000000..2c4e0704ff10
--- /dev/null
+++ b/arch/mips/qemu/q-irq.c
@@ -0,0 +1,37 @@
1#include <linux/init.h>
2#include <linux/linkage.h>
3
4#include <asm/i8259.h>
5#include <asm/mipsregs.h>
6#include <asm/qemu.h>
7#include <asm/system.h>
8#include <asm/time.h>
9
10extern asmlinkage void qemu_handle_int(void);
11
12asmlinkage void do_qemu_int(struct pt_regs *regs)
13{
14 unsigned int pending = read_c0_status() & read_c0_cause();
15
16 if (pending & 0x8000) {
17 ll_timer_interrupt(Q_COUNT_COMPARE_IRQ, regs);
18 return;
19 }
20 if (pending & 0x0400) {
21 int irq = i8259_irq();
22
23 if (likely(irq >= 0))
24 do_IRQ(irq, regs);
25
26 return;
27 }
28}
29
30void __init arch_init_irq(void)
31{
32 set_except_vector(0, qemu_handle_int);
33 mips_hpt_frequency = QEMU_C0_COUNTER_CLOCK; /* 100MHz */
34
35 init_i8259_irqs();
36 set_c0_status(0x8400);
37}
diff --git a/arch/mips/qemu/q-mem.c b/arch/mips/qemu/q-mem.c
new file mode 100644
index 000000000000..d174fac43031
--- /dev/null
+++ b/arch/mips/qemu/q-mem.c
@@ -0,0 +1,6 @@
1#include <linux/init.h>
2
3unsigned long __init prom_free_prom_memory(void)
4{
5 return 0UL;
6}
diff --git a/arch/mips/qemu/q-setup.c b/arch/mips/qemu/q-setup.c
new file mode 100644
index 000000000000..1a80eee8cd35
--- /dev/null
+++ b/arch/mips/qemu/q-setup.c
@@ -0,0 +1,20 @@
1#include <linux/init.h>
2#include <asm/io.h>
3#include <asm/time.h>
4
5#define QEMU_PORT_BASE 0xb4000000
6
7static void __init qemu_timer_setup(struct irqaction *irq)
8{
9 /* set the clock to 100 Hz */
10 outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */
11 outb_p(LATCH & 0xff , 0x40); /* LSB */
12 outb(LATCH >> 8 , 0x40); /* MSB */
13 setup_irq(0, irq);
14}
15
16void __init plat_setup(void)
17{
18 set_io_port_base(QEMU_PORT_BASE);
19 board_timer_setup = qemu_timer_setup;
20}
diff --git a/include/asm-mips/mach-qemu/cpu-feature-overrides.h b/include/asm-mips/mach-qemu/cpu-feature-overrides.h
new file mode 100644
index 000000000000..f4e370e27168
--- /dev/null
+++ b/include/asm-mips/mach-qemu/cpu-feature-overrides.h
@@ -0,0 +1,31 @@
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_QEMU_CPU_FEATURE_OVERRIDES_H
9#define __ASM_MACH_QEMU_CPU_FEATURE_OVERRIDES_H
10
11/*
12 * QEMU only comes with a hazard-free MIPS32 processor, so things are easy.
13 */
14#define cpu_has_mips16 0
15#define cpu_has_divec 0
16#define cpu_has_cache_cdex_p 0
17#define cpu_has_prefetch 0
18#define cpu_has_mcheck 0
19#define cpu_has_ejtag 0
20
21#define cpu_has_llsc 1
22#define cpu_has_vtag_icache 0
23#define cpu_has_dc_aliases (PAGE_SIZE < 0x4000)
24#define cpu_has_ic_fills_f_dc 0
25
26#define cpu_has_dsp 0
27
28#define cpu_has_nofpuex 0
29#define cpu_has_64bits 0
30
31#endif /* __ASM_MACH_QEMU_CPU_FEATURE_OVERRIDES_H */
diff --git a/include/asm-mips/mach-qemu/param.h b/include/asm-mips/mach-qemu/param.h
new file mode 100644
index 000000000000..cb30ee490ae6
--- /dev/null
+++ b/include/asm-mips/mach-qemu/param.h
@@ -0,0 +1,13 @@
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) 2005 by Ralf Baechle
7 */
8#ifndef __ASM_MACH_QEMU_PARAM_H
9#define __ASM_MACH_QEMU_PARAM_H
10
11#define HZ 100 /* Internal kernel timer frequency */
12
13#endif /* __ASM_MACH_QEMU_PARAM_H */
diff --git a/include/asm-mips/qemu.h b/include/asm-mips/qemu.h
new file mode 100644
index 000000000000..905c39585903
--- /dev/null
+++ b/include/asm-mips/qemu.h
@@ -0,0 +1,24 @@
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) 2005 by Ralf Baechle (ralf@linux-mips.org)
7 */
8#ifndef __ASM_QEMU_H
9#define __ASM_QEMU_H
10
11/*
12 * Interrupt numbers
13 */
14#define Q_PIC_IRQ_BASE 0
15#define Q_COUNT_COMPARE_IRQ 16
16
17/*
18 * Qemu clock rate. Unlike on real MIPS this has no relation to the
19 * instruction issue rate, so the choosen value is pure fiction, just needs
20 * to match the value in Qemu itself.
21 */
22#define QEMU_C0_COUNTER_CLOCK 100000000
23
24#endif /* __ASM_QEMU_H */