aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-19 10:53:28 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-19 10:53:28 -0500
commitb69409279c4c960fcd1575bcf80f2a0ca414ca93 (patch)
treeda8105a20ccc08caa033a9b40da7111e1de902d7 /arch/sparc64
parent07ce198a1eb3431d04a6d59ea9fb7b71f21e33b1 (diff)
parentf6d091e05199e67ba79c3ea29faa5c3b51d5daf4 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: [SPARC64]: Add regs_return_value(). [SPARC64]: Kill pcic_present(). [SPARC]: Kill 'prom_palette'. [ATYFB]: Kill 'prom_palette' sparc code. [SPARC64]: Kill 'prom_keyboard'. [SPARC]: Kill extern decl of 'panic_setup'. [SPARC64]: Delete 'boot_flags'. [SPARC64]: Kill unused function 'kernel_enter_debugger'. [SPARC64] arch/sparc64/kernel/unaligned.c: Use time_* macros [SPARC64]: Always register a PROM based early console. [SPARC64]: Update defconfig. [SPARC64]: Add -mtune=ultrasparc3 if possible. [SPARC64]: Remove Makefile code for ancient gcc and binutils. [SPARC64]: Remove DEBUG_BOOTMEM. [SPARC64]: Use shorter "get_zeroed_page" call. [SPARC]: Use shorter form of "get_zeroed_page". [SPARC]: video/cg14.c and video/sbuslib.c build fixes
Diffstat (limited to 'arch/sparc64')
-rw-r--r--arch/sparc64/Kconfig.debug4
-rw-r--r--arch/sparc64/Makefile36
-rw-r--r--arch/sparc64/defconfig33
-rw-r--r--arch/sparc64/kernel/iommu.c3
-rw-r--r--arch/sparc64/kernel/pci.c21
-rw-r--r--arch/sparc64/kernel/process.c15
-rw-r--r--arch/sparc64/kernel/prom.c1
-rw-r--r--arch/sparc64/kernel/setup.c29
-rw-r--r--arch/sparc64/kernel/sparc64_ksyms.c3
-rw-r--r--arch/sparc64/kernel/unaligned.c3
-rw-r--r--arch/sparc64/mm/init.c49
-rw-r--r--arch/sparc64/prom/misc.c9
12 files changed, 41 insertions, 165 deletions
diff --git a/arch/sparc64/Kconfig.debug b/arch/sparc64/Kconfig.debug
index a5faa3683bd6..6a4d28a4076d 100644
--- a/arch/sparc64/Kconfig.debug
+++ b/arch/sparc64/Kconfig.debug
@@ -23,10 +23,6 @@ config STACK_DEBUG
23 depends on DEBUG_KERNEL 23 depends on DEBUG_KERNEL
24 bool "Stack Overflow Detection Support" 24 bool "Stack Overflow Detection Support"
25 25
26config DEBUG_BOOTMEM
27 depends on DEBUG_KERNEL
28 bool "Debug BOOTMEM initialization"
29
30config DEBUG_PAGEALLOC 26config DEBUG_PAGEALLOC
31 bool "Debug page memory allocations" 27 bool "Debug page memory allocations"
32 depends on DEBUG_KERNEL && !HIBERNATION 28 depends on DEBUG_KERNEL && !HIBERNATION
diff --git a/arch/sparc64/Makefile b/arch/sparc64/Makefile
index 01159cb5f16d..f0c22f826982 100644
--- a/arch/sparc64/Makefile
+++ b/arch/sparc64/Makefile
@@ -12,39 +12,13 @@ CHECKFLAGS += -D__sparc__ -D__sparc_v9__ -m64
12 12
13CPPFLAGS_vmlinux.lds += -Usparc 13CPPFLAGS_vmlinux.lds += -Usparc
14 14
15CC := $(shell if $(CC) -m64 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo $(CC); else echo sparc64-linux-gcc; fi )
16
17NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow)
18NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi)
19UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; )
20
21ifneq ($(NEW_GAS),y)
22AS = sparc64-linux-as
23LD = sparc64-linux-ld
24NM = sparc64-linux-nm
25AR = sparc64-linux-ar
26RANLIB = sparc64-linux-ranlib
27else
28AS := $(AS) -64
29LDFLAGS := -m elf64_sparc 15LDFLAGS := -m elf64_sparc
30endif
31 16
32ifneq ($(UNDECLARED_REGS),y) 17KBUILD_CFLAGS += -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow \
33CC_UNDECL = 18 -ffixed-g4 -ffixed-g5 -fcall-used-g7 -Wno-sign-compare \
34else 19 -Wa,--undeclared-regs
35CC_UNDECL = -Wa,--undeclared-regs 20KBUILD_CFLAGS += $(call cc-option,-mtune=ultrasparc3)
36AS := $(AS) --undeclared-regs 21KBUILD_AFLAGS += -m64 -mcpu=ultrasparc -Wa,--undeclared-regs
37endif
38
39ifneq ($(NEW_GCC),y)
40 KBUILD_CFLAGS += -pipe -mno-fpu -mtune=ultrasparc -mmedlow \
41 -ffixed-g4 -ffixed-g5 -fcall-used-g7 -Wno-sign-compare
42else
43 KBUILD_CFLAGS += -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow \
44 -ffixed-g4 -ffixed-g5 -fcall-used-g7 -Wno-sign-compare \
45 $(CC_UNDECL)
46 KBUILD_AFLAGS += -m64 -mcpu=ultrasparc $(CC_UNDECL)
47endif
48 22
49ifeq ($(CONFIG_MCOUNT),y) 23ifeq ($(CONFIG_MCOUNT),y)
50 KBUILD_CFLAGS += -pg 24 KBUILD_CFLAGS += -pg
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
index 833d74b2b192..250958d1e3cb 100644
--- a/arch/sparc64/defconfig
+++ b/arch/sparc64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24 3# Linux kernel version: 2.6.25-rc1
4# Tue Feb 5 17:28:19 2008 4# Sun Feb 17 22:44:12 2008
5# 5#
6CONFIG_SPARC=y 6CONFIG_SPARC=y
7CONFIG_SPARC64=y 7CONFIG_SPARC64=y
@@ -10,6 +10,7 @@ CONFIG_GENERIC_CMOS_UPDATE=y
10CONFIG_GENERIC_CLOCKEVENTS=y 10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_64BIT=y 11CONFIG_64BIT=y
12CONFIG_MMU=y 12CONFIG_MMU=y
13CONFIG_IOMMU_HELPER=y
13CONFIG_QUICKLIST=y 14CONFIG_QUICKLIST=y
14CONFIG_STACKTRACE_SUPPORT=y 15CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 16CONFIG_LOCKDEP_SUPPORT=y
@@ -21,6 +22,7 @@ CONFIG_HAVE_SETUP_PER_CPU_AREA=y
21CONFIG_ARCH_NO_VIRT_TO_BUS=y 22CONFIG_ARCH_NO_VIRT_TO_BUS=y
22CONFIG_OF=y 23CONFIG_OF=y
23CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 24CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
25CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_SPARC64_PAGE_SIZE_8KB=y 26CONFIG_SPARC64_PAGE_SIZE_8KB=y
25# CONFIG_SPARC64_PAGE_SIZE_64KB is not set 27# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
26# CONFIG_SPARC64_PAGE_SIZE_512KB is not set 28# CONFIG_SPARC64_PAGE_SIZE_512KB is not set
@@ -49,8 +51,6 @@ CONFIG_SYSVIPC_SYSCTL=y
49CONFIG_POSIX_MQUEUE=y 51CONFIG_POSIX_MQUEUE=y
50# CONFIG_BSD_PROCESS_ACCT is not set 52# CONFIG_BSD_PROCESS_ACCT is not set
51# CONFIG_TASKSTATS is not set 53# CONFIG_TASKSTATS is not set
52# CONFIG_USER_NS is not set
53# CONFIG_PID_NS is not set
54# CONFIG_AUDIT is not set 54# CONFIG_AUDIT is not set
55# CONFIG_IKCONFIG is not set 55# CONFIG_IKCONFIG is not set
56CONFIG_LOG_BUF_SHIFT=18 56CONFIG_LOG_BUF_SHIFT=18
@@ -60,6 +60,11 @@ CONFIG_FAIR_USER_SCHED=y
60# CONFIG_FAIR_CGROUP_SCHED is not set 60# CONFIG_FAIR_CGROUP_SCHED is not set
61CONFIG_SYSFS_DEPRECATED=y 61CONFIG_SYSFS_DEPRECATED=y
62CONFIG_RELAY=y 62CONFIG_RELAY=y
63CONFIG_NAMESPACES=y
64# CONFIG_UTS_NS is not set
65# CONFIG_IPC_NS is not set
66# CONFIG_USER_NS is not set
67# CONFIG_PID_NS is not set
63CONFIG_BLK_DEV_INITRD=y 68CONFIG_BLK_DEV_INITRD=y
64CONFIG_INITRAMFS_SOURCE="" 69CONFIG_INITRAMFS_SOURCE=""
65CONFIG_CC_OPTIMIZE_FOR_SIZE=y 70CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -74,6 +79,7 @@ CONFIG_HOTPLUG=y
74CONFIG_PRINTK=y 79CONFIG_PRINTK=y
75CONFIG_BUG=y 80CONFIG_BUG=y
76CONFIG_ELF_CORE=y 81CONFIG_ELF_CORE=y
82# CONFIG_COMPAT_BRK is not set
77CONFIG_BASE_FULL=y 83CONFIG_BASE_FULL=y
78CONFIG_FUTEX=y 84CONFIG_FUTEX=y
79CONFIG_ANON_INODES=y 85CONFIG_ANON_INODES=y
@@ -176,13 +182,13 @@ CONFIG_PCI_MSI=y
176CONFIG_SUN_OPENPROMFS=m 182CONFIG_SUN_OPENPROMFS=m
177CONFIG_SPARC32_COMPAT=y 183CONFIG_SPARC32_COMPAT=y
178CONFIG_COMPAT=y 184CONFIG_COMPAT=y
179CONFIG_BINFMT_ELF32=y
180# CONFIG_BINFMT_AOUT32 is not set 185# CONFIG_BINFMT_AOUT32 is not set
181 186
182# 187#
183# Executable file formats 188# Executable file formats
184# 189#
185CONFIG_BINFMT_ELF=y 190CONFIG_BINFMT_ELF=y
191CONFIG_COMPAT_BINFMT_ELF=y
186CONFIG_BINFMT_MISC=m 192CONFIG_BINFMT_MISC=m
187CONFIG_SOLARIS_EMUL=y 193CONFIG_SOLARIS_EMUL=y
188CONFIG_SCHED_SMT=y 194CONFIG_SCHED_SMT=y
@@ -354,6 +360,8 @@ CONFIG_MISC_DEVICES=y
354# CONFIG_EEPROM_93CX6 is not set 360# CONFIG_EEPROM_93CX6 is not set
355# CONFIG_SGI_IOC4 is not set 361# CONFIG_SGI_IOC4 is not set
356# CONFIG_TIFM_CORE is not set 362# CONFIG_TIFM_CORE is not set
363# CONFIG_ENCLOSURE_SERVICES is not set
364CONFIG_HAVE_IDE=y
357CONFIG_IDE=y 365CONFIG_IDE=y
358CONFIG_BLK_DEV_IDE=y 366CONFIG_BLK_DEV_IDE=y
359 367
@@ -376,6 +384,7 @@ CONFIG_IDE_PROC_FS=y
376# 384#
377CONFIG_IDE_GENERIC=y 385CONFIG_IDE_GENERIC=y
378# CONFIG_BLK_DEV_PLATFORM is not set 386# CONFIG_BLK_DEV_PLATFORM is not set
387CONFIG_BLK_DEV_IDEDMA_SFF=y
379 388
380# 389#
381# PCI IDE chipsets support 390# PCI IDE chipsets support
@@ -775,7 +784,6 @@ CONFIG_I2C_ALGOBIT=y
775# CONFIG_SENSORS_EEPROM is not set 784# CONFIG_SENSORS_EEPROM is not set
776# CONFIG_SENSORS_PCF8574 is not set 785# CONFIG_SENSORS_PCF8574 is not set
777# CONFIG_PCF8575 is not set 786# CONFIG_PCF8575 is not set
778# CONFIG_SENSORS_PCA9539 is not set
779# CONFIG_SENSORS_PCF8591 is not set 787# CONFIG_SENSORS_PCF8591 is not set
780# CONFIG_TPS65010 is not set 788# CONFIG_TPS65010 is not set
781# CONFIG_SENSORS_MAX6875 is not set 789# CONFIG_SENSORS_MAX6875 is not set
@@ -831,6 +839,7 @@ CONFIG_HWMON=y
831# CONFIG_SENSORS_SMSC47M1 is not set 839# CONFIG_SENSORS_SMSC47M1 is not set
832# CONFIG_SENSORS_SMSC47M192 is not set 840# CONFIG_SENSORS_SMSC47M192 is not set
833# CONFIG_SENSORS_SMSC47B397 is not set 841# CONFIG_SENSORS_SMSC47B397 is not set
842# CONFIG_SENSORS_ADS7828 is not set
834# CONFIG_SENSORS_THMC50 is not set 843# CONFIG_SENSORS_THMC50 is not set
835# CONFIG_SENSORS_VIA686A is not set 844# CONFIG_SENSORS_VIA686A is not set
836# CONFIG_SENSORS_VT1211 is not set 845# CONFIG_SENSORS_VT1211 is not set
@@ -840,9 +849,11 @@ CONFIG_HWMON=y
840# CONFIG_SENSORS_W83792D is not set 849# CONFIG_SENSORS_W83792D is not set
841# CONFIG_SENSORS_W83793 is not set 850# CONFIG_SENSORS_W83793 is not set
842# CONFIG_SENSORS_W83L785TS is not set 851# CONFIG_SENSORS_W83L785TS is not set
852# CONFIG_SENSORS_W83L786NG is not set
843# CONFIG_SENSORS_W83627HF is not set 853# CONFIG_SENSORS_W83627HF is not set
844# CONFIG_SENSORS_W83627EHF is not set 854# CONFIG_SENSORS_W83627EHF is not set
845# CONFIG_HWMON_DEBUG_CHIP is not set 855# CONFIG_HWMON_DEBUG_CHIP is not set
856# CONFIG_THERMAL is not set
846# CONFIG_WATCHDOG is not set 857# CONFIG_WATCHDOG is not set
847 858
848# 859#
@@ -1201,6 +1212,7 @@ CONFIG_USB_STORAGE=m
1201# CONFIG_USB_TEST is not set 1212# CONFIG_USB_TEST is not set
1202# CONFIG_USB_GADGET is not set 1213# CONFIG_USB_GADGET is not set
1203# CONFIG_MMC is not set 1214# CONFIG_MMC is not set
1215# CONFIG_MEMSTICK is not set
1204# CONFIG_NEW_LEDS is not set 1216# CONFIG_NEW_LEDS is not set
1205# CONFIG_INFINIBAND is not set 1217# CONFIG_INFINIBAND is not set
1206# CONFIG_RTC_CLASS is not set 1218# CONFIG_RTC_CLASS is not set
@@ -1242,12 +1254,10 @@ CONFIG_FS_POSIX_ACL=y
1242# CONFIG_XFS_FS is not set 1254# CONFIG_XFS_FS is not set
1243# CONFIG_GFS2_FS is not set 1255# CONFIG_GFS2_FS is not set
1244# CONFIG_OCFS2_FS is not set 1256# CONFIG_OCFS2_FS is not set
1245# CONFIG_MINIX_FS is not set 1257CONFIG_DNOTIFY=y
1246# CONFIG_ROMFS_FS is not set
1247CONFIG_INOTIFY=y 1258CONFIG_INOTIFY=y
1248CONFIG_INOTIFY_USER=y 1259CONFIG_INOTIFY_USER=y
1249# CONFIG_QUOTA is not set 1260# CONFIG_QUOTA is not set
1250CONFIG_DNOTIFY=y
1251# CONFIG_AUTOFS_FS is not set 1261# CONFIG_AUTOFS_FS is not set
1252# CONFIG_AUTOFS4_FS is not set 1262# CONFIG_AUTOFS4_FS is not set
1253# CONFIG_FUSE_FS is not set 1263# CONFIG_FUSE_FS is not set
@@ -1291,8 +1301,10 @@ CONFIG_HUGETLB_PAGE=y
1291# CONFIG_EFS_FS is not set 1301# CONFIG_EFS_FS is not set
1292# CONFIG_CRAMFS is not set 1302# CONFIG_CRAMFS is not set
1293# CONFIG_VXFS_FS is not set 1303# CONFIG_VXFS_FS is not set
1304# CONFIG_MINIX_FS is not set
1294# CONFIG_HPFS_FS is not set 1305# CONFIG_HPFS_FS is not set
1295# CONFIG_QNX4FS_FS is not set 1306# CONFIG_QNX4FS_FS is not set
1307# CONFIG_ROMFS_FS is not set
1296# CONFIG_SYSV_FS is not set 1308# CONFIG_SYSV_FS is not set
1297# CONFIG_UFS_FS is not set 1309# CONFIG_UFS_FS is not set
1298CONFIG_NETWORK_FILESYSTEMS=y 1310CONFIG_NETWORK_FILESYSTEMS=y
@@ -1370,6 +1382,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1370CONFIG_SCHEDSTATS=y 1382CONFIG_SCHEDSTATS=y
1371# CONFIG_TIMER_STATS is not set 1383# CONFIG_TIMER_STATS is not set
1372# CONFIG_SLUB_DEBUG_ON is not set 1384# CONFIG_SLUB_DEBUG_ON is not set
1385# CONFIG_SLUB_STATS is not set
1373# CONFIG_DEBUG_RT_MUTEXES is not set 1386# CONFIG_DEBUG_RT_MUTEXES is not set
1374# CONFIG_RT_MUTEX_TESTER is not set 1387# CONFIG_RT_MUTEX_TESTER is not set
1375# CONFIG_DEBUG_SPINLOCK is not set 1388# CONFIG_DEBUG_SPINLOCK is not set
@@ -1385,7 +1398,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
1385# CONFIG_DEBUG_VM is not set 1398# CONFIG_DEBUG_VM is not set
1386# CONFIG_DEBUG_LIST is not set 1399# CONFIG_DEBUG_LIST is not set
1387# CONFIG_DEBUG_SG is not set 1400# CONFIG_DEBUG_SG is not set
1388CONFIG_FORCED_INLINING=y
1389# CONFIG_BOOT_PRINTK_DELAY is not set 1401# CONFIG_BOOT_PRINTK_DELAY is not set
1390# CONFIG_RCU_TORTURE_TEST is not set 1402# CONFIG_RCU_TORTURE_TEST is not set
1391# CONFIG_KPROBES_SANITY_TEST is not set 1403# CONFIG_KPROBES_SANITY_TEST is not set
@@ -1396,7 +1408,6 @@ CONFIG_FORCED_INLINING=y
1396# CONFIG_DEBUG_STACK_USAGE is not set 1408# CONFIG_DEBUG_STACK_USAGE is not set
1397# CONFIG_DEBUG_DCFLUSH is not set 1409# CONFIG_DEBUG_DCFLUSH is not set
1398# CONFIG_STACK_DEBUG is not set 1410# CONFIG_STACK_DEBUG is not set
1399# CONFIG_DEBUG_BOOTMEM is not set
1400# CONFIG_DEBUG_PAGEALLOC is not set 1411# CONFIG_DEBUG_PAGEALLOC is not set
1401 1412
1402# 1413#
diff --git a/arch/sparc64/kernel/iommu.c b/arch/sparc64/kernel/iommu.c
index d3276ebcfb47..0e347ff812a3 100644
--- a/arch/sparc64/kernel/iommu.c
+++ b/arch/sparc64/kernel/iommu.c
@@ -200,12 +200,11 @@ int iommu_table_init(struct iommu *iommu, int tsbsize,
200 /* Allocate and initialize the dummy page which we 200 /* Allocate and initialize the dummy page which we
201 * set inactive IO PTEs to point to. 201 * set inactive IO PTEs to point to.
202 */ 202 */
203 iommu->dummy_page = __get_free_pages(GFP_KERNEL, 0); 203 iommu->dummy_page = get_zeroed_page(GFP_KERNEL);
204 if (!iommu->dummy_page) { 204 if (!iommu->dummy_page) {
205 printk(KERN_ERR "IOMMU: Error, gfp(dummy_page) failed.\n"); 205 printk(KERN_ERR "IOMMU: Error, gfp(dummy_page) failed.\n");
206 goto out_free_map; 206 goto out_free_map;
207 } 207 }
208 memset((void *)iommu->dummy_page, 0, PAGE_SIZE);
209 iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page); 208 iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page);
210 209
211 /* Now allocate and setup the IOMMU page table itself. */ 210 /* Now allocate and setup the IOMMU page table itself. */
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c
index a61c38fe75ea..545356b00e2e 100644
--- a/arch/sparc64/kernel/pci.c
+++ b/arch/sparc64/kernel/pci.c
@@ -225,20 +225,6 @@ static int __init pci_controller_init(const char *model_name, int namelen, struc
225 return 0; 225 return 0;
226} 226}
227 227
228static int __init pci_is_controller(const char *model_name, int namelen, struct device_node *dp)
229{
230 int i;
231
232 for (i = 0; i < PCI_NUM_CONTROLLER_TYPES; i++) {
233 if (!strncmp(model_name,
234 pci_controller_table[i].model_name,
235 namelen)) {
236 return 1;
237 }
238 }
239 return 0;
240}
241
242static int __init pci_controller_scan(int (*handler)(const char *, int, struct device_node *)) 228static int __init pci_controller_scan(int (*handler)(const char *, int, struct device_node *))
243{ 229{
244 struct device_node *dp; 230 struct device_node *dp;
@@ -273,13 +259,6 @@ static int __init pci_controller_scan(int (*handler)(const char *, int, struct d
273 return count; 259 return count;
274} 260}
275 261
276
277/* Is there some PCI controller in the system? */
278int __init pcic_present(void)
279{
280 return pci_controller_scan(pci_is_controller);
281}
282
283/* Find each controller in the system, attach and initialize 262/* Find each controller in the system, attach and initialize
284 * software state structure for each and link into the 263 * software state structure for each and link into the
285 * pci_pbm_root. Setup the controller enough such 264 * pci_pbm_root. Setup the controller enough such
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c
index 1b2379174988..6eceac51ae62 100644
--- a/arch/sparc64/kernel/process.c
+++ b/arch/sparc64/kernel/process.c
@@ -113,16 +113,9 @@ void cpu_idle(void)
113 113
114extern char reboot_command []; 114extern char reboot_command [];
115 115
116extern void (*prom_palette)(int);
117extern void (*prom_keyboard)(void);
118
119void machine_halt(void) 116void machine_halt(void)
120{ 117{
121 sstate_halt(); 118 sstate_halt();
122 if (prom_palette)
123 prom_palette (1);
124 if (prom_keyboard)
125 prom_keyboard();
126 prom_halt(); 119 prom_halt();
127 panic("Halt failed!"); 120 panic("Halt failed!");
128} 121}
@@ -130,10 +123,6 @@ void machine_halt(void)
130void machine_alt_power_off(void) 123void machine_alt_power_off(void)
131{ 124{
132 sstate_poweroff(); 125 sstate_poweroff();
133 if (prom_palette)
134 prom_palette(1);
135 if (prom_keyboard)
136 prom_keyboard();
137 prom_halt_power_off(); 126 prom_halt_power_off();
138 panic("Power-off failed!"); 127 panic("Power-off failed!");
139} 128}
@@ -145,10 +134,6 @@ void machine_restart(char * cmd)
145 sstate_reboot(); 134 sstate_reboot();
146 p = strchr (reboot_command, '\n'); 135 p = strchr (reboot_command, '\n');
147 if (p) *p = 0; 136 if (p) *p = 0;
148 if (prom_palette)
149 prom_palette (1);
150 if (prom_keyboard)
151 prom_keyboard();
152 if (cmd) 137 if (cmd)
153 prom_reboot(cmd); 138 prom_reboot(cmd);
154 if (*reboot_command) 139 if (*reboot_command)
diff --git a/arch/sparc64/kernel/prom.c b/arch/sparc64/kernel/prom.c
index a246e962e5a7..68964ddcde1e 100644
--- a/arch/sparc64/kernel/prom.c
+++ b/arch/sparc64/kernel/prom.c
@@ -1716,7 +1716,6 @@ static void __init of_console_init(void)
1716 1716
1717 of_console_device = dp; 1717 of_console_device = dp;
1718 1718
1719 prom_printf(msg, of_console_path);
1720 printk(msg, of_console_path); 1719 printk(msg, of_console_path);
1721} 1720}
1722 1721
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c
index 5964d8653ade..d036dbe72864 100644
--- a/arch/sparc64/kernel/setup.c
+++ b/arch/sparc64/kernel/setup.c
@@ -68,33 +68,22 @@ struct screen_info screen_info = {
68 16 /* orig-video-points */ 68 16 /* orig-video-points */
69}; 69};
70 70
71void (*prom_palette)(int);
72void (*prom_keyboard)(void);
73
74static void 71static void
75prom_console_write(struct console *con, const char *s, unsigned n) 72prom_console_write(struct console *con, const char *s, unsigned n)
76{ 73{
77 prom_write(s, n); 74 prom_write(s, n);
78} 75}
79 76
80unsigned int boot_flags = 0;
81#define BOOTME_DEBUG 0x1
82
83/* Exported for mm/init.c:paging_init. */ 77/* Exported for mm/init.c:paging_init. */
84unsigned long cmdline_memory_size = 0; 78unsigned long cmdline_memory_size = 0;
85 79
86static struct console prom_debug_console = { 80static struct console prom_early_console = {
87 .name = "debug", 81 .name = "earlyprom",
88 .write = prom_console_write, 82 .write = prom_console_write,
89 .flags = CON_PRINTBUFFER, 83 .flags = CON_PRINTBUFFER | CON_BOOT,
90 .index = -1, 84 .index = -1,
91}; 85};
92 86
93/* XXX Implement this at some point... */
94void kernel_enter_debugger(void)
95{
96}
97
98/* 87/*
99 * Process kernel command line switches that are specific to the 88 * Process kernel command line switches that are specific to the
100 * SPARC or that require special low-level processing. 89 * SPARC or that require special low-level processing.
@@ -103,8 +92,6 @@ static void __init process_switch(char c)
103{ 92{
104 switch (c) { 93 switch (c) {
105 case 'd': 94 case 'd':
106 boot_flags |= BOOTME_DEBUG;
107 break;
108 case 's': 95 case 's':
109 break; 96 break;
110 case 'h': 97 case 'h':
@@ -112,8 +99,7 @@ static void __init process_switch(char c)
112 prom_halt(); 99 prom_halt();
113 break; 100 break;
114 case 'p': 101 case 'p':
115 /* Use PROM debug console. */ 102 /* Just ignore, this behavior is now the default. */
116 register_console(&prom_debug_console);
117 break; 103 break;
118 case 'P': 104 case 'P':
119 /* Force UltraSPARC-III P-Cache on. */ 105 /* Force UltraSPARC-III P-Cache on. */
@@ -168,8 +154,6 @@ static void __init boot_flags_init(char *commands)
168 } 154 }
169} 155}
170 156
171extern void panic_setup(char *, int *);
172
173extern unsigned short root_flags; 157extern unsigned short root_flags;
174extern unsigned short root_dev; 158extern unsigned short root_dev;
175extern unsigned short ram_flags; 159extern unsigned short ram_flags;
@@ -296,6 +280,9 @@ void __init setup_arch(char **cmdline_p)
296 *cmdline_p = prom_getbootargs(); 280 *cmdline_p = prom_getbootargs();
297 strcpy(boot_command_line, *cmdline_p); 281 strcpy(boot_command_line, *cmdline_p);
298 282
283 boot_flags_init(*cmdline_p);
284 register_console(&prom_early_console);
285
299 if (tlb_type == hypervisor) 286 if (tlb_type == hypervisor)
300 printk("ARCH: SUN4V\n"); 287 printk("ARCH: SUN4V\n");
301 else 288 else
@@ -307,8 +294,6 @@ void __init setup_arch(char **cmdline_p)
307 conswitchp = &prom_con; 294 conswitchp = &prom_con;
308#endif 295#endif
309 296
310 boot_flags_init(*cmdline_p);
311
312 idprom_init(); 297 idprom_init();
313 298
314 if (!root_flags) 299 if (!root_flags)
diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c
index 68db08930399..51fa773f38c9 100644
--- a/arch/sparc64/kernel/sparc64_ksyms.c
+++ b/arch/sparc64/kernel/sparc64_ksyms.c
@@ -85,7 +85,6 @@ extern int (*handle_mathemu)(struct pt_regs *, struct fpustate *);
85extern long sparc32_open(const char __user * filename, int flags, int mode); 85extern long sparc32_open(const char __user * filename, int flags, int mode);
86extern int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from, 86extern int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
87 unsigned long pfn, unsigned long size, pgprot_t prot); 87 unsigned long pfn, unsigned long size, pgprot_t prot);
88extern void (*prom_palette)(int);
89 88
90extern int __ashrdi3(int, int); 89extern int __ashrdi3(int, int);
91 90
@@ -355,5 +354,3 @@ EXPORT_SYMBOL(xor_niagara_2);
355EXPORT_SYMBOL(xor_niagara_3); 354EXPORT_SYMBOL(xor_niagara_3);
356EXPORT_SYMBOL(xor_niagara_4); 355EXPORT_SYMBOL(xor_niagara_4);
357EXPORT_SYMBOL(xor_niagara_5); 356EXPORT_SYMBOL(xor_niagara_5);
358
359EXPORT_SYMBOL(prom_palette);
diff --git a/arch/sparc64/kernel/unaligned.c b/arch/sparc64/kernel/unaligned.c
index dc7bf1b6321c..1a511e9f0d3e 100644
--- a/arch/sparc64/kernel/unaligned.c
+++ b/arch/sparc64/kernel/unaligned.c
@@ -7,6 +7,7 @@
7 */ 7 */
8 8
9 9
10#include <linux/jiffies.h>
10#include <linux/kernel.h> 11#include <linux/kernel.h>
11#include <linux/sched.h> 12#include <linux/sched.h>
12#include <linux/mm.h> 13#include <linux/mm.h>
@@ -283,7 +284,7 @@ static void log_unaligned(struct pt_regs *regs)
283{ 284{
284 static unsigned long count, last_time; 285 static unsigned long count, last_time;
285 286
286 if (jiffies - last_time > 5 * HZ) 287 if (time_after(jiffies, last_time + 5 * HZ))
287 count = 0; 288 count = 0;
288 if (count < 5) { 289 if (count < 5) {
289 last_time = jiffies; 290 last_time = jiffies;
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index e726c45645ff..9e6bca266d88 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -618,9 +618,9 @@ static void __init inherit_prom_mappings(void)
618 read_obp_translations(); 618 read_obp_translations();
619 619
620 /* Now fixup OBP's idea about where we really are mapped. */ 620 /* Now fixup OBP's idea about where we really are mapped. */
621 prom_printf("Remapping the kernel... "); 621 printk("Remapping the kernel... ");
622 remap_kernel(); 622 remap_kernel();
623 prom_printf("done.\n"); 623 printk("done.\n");
624} 624}
625 625
626void prom_world(int enter) 626void prom_world(int enter)
@@ -739,11 +739,6 @@ static unsigned long __init choose_bootmap_pfn(unsigned long start_pfn,
739 avoid_end = PAGE_ALIGN(initrd_end); 739 avoid_end = PAGE_ALIGN(initrd_end);
740#endif 740#endif
741 741
742#ifdef CONFIG_DEBUG_BOOTMEM
743 prom_printf("choose_bootmap_pfn: kern[%lx:%lx] avoid[%lx:%lx]\n",
744 kern_base, PAGE_ALIGN(kern_base + kern_size),
745 avoid_start, avoid_end);
746#endif
747 for (i = 0; i < pavail_ents; i++) { 742 for (i = 0; i < pavail_ents; i++) {
748 unsigned long start, end; 743 unsigned long start, end;
749 744
@@ -777,10 +772,6 @@ static unsigned long __init choose_bootmap_pfn(unsigned long start_pfn,
777 } 772 }
778 773
779 /* OK, it doesn't overlap anything, use it. */ 774 /* OK, it doesn't overlap anything, use it. */
780#ifdef CONFIG_DEBUG_BOOTMEM
781 prom_printf("choose_bootmap_pfn: Using %lx [%lx]\n",
782 start >> PAGE_SHIFT, start);
783#endif
784 return start >> PAGE_SHIFT; 775 return start >> PAGE_SHIFT;
785 } 776 }
786 } 777 }
@@ -920,10 +911,6 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail,
920 unsigned long bootmap_pfn, bytes_avail, size; 911 unsigned long bootmap_pfn, bytes_avail, size;
921 int i; 912 int i;
922 913
923#ifdef CONFIG_DEBUG_BOOTMEM
924 prom_printf("bootmem_init: Scan pavail, ");
925#endif
926
927 bytes_avail = 0UL; 914 bytes_avail = 0UL;
928 for (i = 0; i < pavail_ents; i++) { 915 for (i = 0; i < pavail_ents; i++) {
929 end_of_phys_memory = pavail[i].phys_addr + 916 end_of_phys_memory = pavail[i].phys_addr +
@@ -970,33 +957,20 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail,
970 957
971 bootmap_pfn = choose_bootmap_pfn(min_low_pfn, end_pfn); 958 bootmap_pfn = choose_bootmap_pfn(min_low_pfn, end_pfn);
972 959
973#ifdef CONFIG_DEBUG_BOOTMEM
974 prom_printf("init_bootmem(min[%lx], bootmap[%lx], max[%lx])\n",
975 min_low_pfn, bootmap_pfn, max_low_pfn);
976#endif
977 bootmap_size = init_bootmem_node(NODE_DATA(0), bootmap_pfn, 960 bootmap_size = init_bootmem_node(NODE_DATA(0), bootmap_pfn,
978 min_low_pfn, end_pfn); 961 min_low_pfn, end_pfn);
979 962
980 /* Now register the available physical memory with the 963 /* Now register the available physical memory with the
981 * allocator. 964 * allocator.
982 */ 965 */
983 for (i = 0; i < pavail_ents; i++) { 966 for (i = 0; i < pavail_ents; i++)
984#ifdef CONFIG_DEBUG_BOOTMEM
985 prom_printf("free_bootmem(pavail:%d): base[%lx] size[%lx]\n",
986 i, pavail[i].phys_addr, pavail[i].reg_size);
987#endif
988 free_bootmem(pavail[i].phys_addr, pavail[i].reg_size); 967 free_bootmem(pavail[i].phys_addr, pavail[i].reg_size);
989 }
990 968
991#ifdef CONFIG_BLK_DEV_INITRD 969#ifdef CONFIG_BLK_DEV_INITRD
992 if (initrd_start) { 970 if (initrd_start) {
993 size = initrd_end - initrd_start; 971 size = initrd_end - initrd_start;
994 972
995 /* Reserve the initrd image area. */ 973 /* Reserve the initrd image area. */
996#ifdef CONFIG_DEBUG_BOOTMEM
997 prom_printf("reserve_bootmem(initrd): base[%llx] size[%lx]\n",
998 initrd_start, initrd_end);
999#endif
1000 reserve_bootmem(initrd_start, size, BOOTMEM_DEFAULT); 974 reserve_bootmem(initrd_start, size, BOOTMEM_DEFAULT);
1001 975
1002 initrd_start += PAGE_OFFSET; 976 initrd_start += PAGE_OFFSET;
@@ -1004,9 +978,6 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail,
1004 } 978 }
1005#endif 979#endif
1006 /* Reserve the kernel text/data/bss. */ 980 /* Reserve the kernel text/data/bss. */
1007#ifdef CONFIG_DEBUG_BOOTMEM
1008 prom_printf("reserve_bootmem(kernel): base[%lx] size[%lx]\n", kern_base, kern_size);
1009#endif
1010 reserve_bootmem(kern_base, kern_size, BOOTMEM_DEFAULT); 981 reserve_bootmem(kern_base, kern_size, BOOTMEM_DEFAULT);
1011 *pages_avail -= PAGE_ALIGN(kern_size) >> PAGE_SHIFT; 982 *pages_avail -= PAGE_ALIGN(kern_size) >> PAGE_SHIFT;
1012 983
@@ -1020,10 +991,6 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail,
1020 * in free_all_bootmem. 991 * in free_all_bootmem.
1021 */ 992 */
1022 size = bootmap_size; 993 size = bootmap_size;
1023#ifdef CONFIG_DEBUG_BOOTMEM
1024 prom_printf("reserve_bootmem(bootmap): base[%lx] size[%lx]\n",
1025 (bootmap_pfn << PAGE_SHIFT), size);
1026#endif
1027 reserve_bootmem((bootmap_pfn << PAGE_SHIFT), size, BOOTMEM_DEFAULT); 994 reserve_bootmem((bootmap_pfn << PAGE_SHIFT), size, BOOTMEM_DEFAULT);
1028 995
1029 for (i = 0; i < pavail_ents; i++) { 996 for (i = 0; i < pavail_ents; i++) {
@@ -1031,10 +998,6 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail,
1031 998
1032 start_pfn = pavail[i].phys_addr >> PAGE_SHIFT; 999 start_pfn = pavail[i].phys_addr >> PAGE_SHIFT;
1033 end_pfn = (start_pfn + (pavail[i].reg_size >> PAGE_SHIFT)); 1000 end_pfn = (start_pfn + (pavail[i].reg_size >> PAGE_SHIFT));
1034#ifdef CONFIG_DEBUG_BOOTMEM
1035 prom_printf("memory_present(0, %lx, %lx)\n",
1036 start_pfn, end_pfn);
1037#endif
1038 memory_present(0, start_pfn, end_pfn); 1001 memory_present(0, start_pfn, end_pfn);
1039 } 1002 }
1040 1003
@@ -1451,7 +1414,7 @@ void __init paging_init(void)
1451 zholes_size); 1414 zholes_size);
1452 } 1415 }
1453 1416
1454 prom_printf("Booting Linux...\n"); 1417 printk("Booting Linux...\n");
1455 1418
1456 central_probe(); 1419 central_probe();
1457 cpu_probe(); 1420 cpu_probe();
@@ -1549,10 +1512,6 @@ void __init mem_init(void)
1549 1512
1550 high_memory = __va(last_valid_pfn << PAGE_SHIFT); 1513 high_memory = __va(last_valid_pfn << PAGE_SHIFT);
1551 1514
1552#ifdef CONFIG_DEBUG_BOOTMEM
1553 prom_printf("mem_init: Calling free_all_bootmem().\n");
1554#endif
1555
1556 /* We subtract one to account for the mem_map_zero page 1515 /* We subtract one to account for the mem_map_zero page
1557 * allocated below. 1516 * allocated below.
1558 */ 1517 */
diff --git a/arch/sparc64/prom/misc.c b/arch/sparc64/prom/misc.c
index bbec7522826c..47a877a15abd 100644
--- a/arch/sparc64/prom/misc.c
+++ b/arch/sparc64/prom/misc.c
@@ -55,9 +55,6 @@ void prom_feval(const char *fstring)
55 P1275_INOUT(1, 1), fstring); 55 P1275_INOUT(1, 1), fstring);
56} 56}
57 57
58/* We want to do this more nicely some day. */
59extern void (*prom_palette)(int);
60
61#ifdef CONFIG_SMP 58#ifdef CONFIG_SMP
62extern void smp_capture(void); 59extern void smp_capture(void);
63extern void smp_release(void); 60extern void smp_release(void);
@@ -72,9 +69,6 @@ void prom_cmdline(void)
72 69
73 local_irq_save(flags); 70 local_irq_save(flags);
74 71
75 if (prom_palette)
76 prom_palette(1);
77
78#ifdef CONFIG_SMP 72#ifdef CONFIG_SMP
79 smp_capture(); 73 smp_capture();
80#endif 74#endif
@@ -85,9 +79,6 @@ void prom_cmdline(void)
85 smp_release(); 79 smp_release();
86#endif 80#endif
87 81
88 if (prom_palette)
89 prom_palette(0);
90
91 local_irq_restore(flags); 82 local_irq_restore(flags);
92} 83}
93 84