aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64')
-rw-r--r--arch/sparc64/defconfig19
-rw-r--r--arch/sparc64/kernel/ebus.c2
-rw-r--r--arch/sparc64/kernel/irq.c12
-rw-r--r--arch/sparc64/kernel/of_device.c2
-rw-r--r--arch/sparc64/kernel/pci_psycho.c6
-rw-r--r--arch/sparc64/kernel/pci_sabre.c6
-rw-r--r--arch/sparc64/kernel/pci_schizo.c8
-rw-r--r--arch/sparc64/kernel/power.c2
-rw-r--r--arch/sparc64/kernel/sbus.c6
-rw-r--r--arch/sparc64/kernel/setup.c10
-rw-r--r--arch/sparc64/kernel/smp.c6
-rw-r--r--arch/sparc64/kernel/time.c7
12 files changed, 49 insertions, 37 deletions
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
index f54ab375464b..dcae559879ae 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.18 3# Linux kernel version: 2.6.19-rc1
4# Mon Oct 2 14:24:40 2006 4# Thu Oct 5 02:08:41 2006
5# 5#
6CONFIG_SPARC=y 6CONFIG_SPARC=y
7CONFIG_SPARC64=y 7CONFIG_SPARC64=y
@@ -197,6 +197,7 @@ CONFIG_INET_XFRM_TUNNEL=y
197CONFIG_INET_TUNNEL=y 197CONFIG_INET_TUNNEL=y
198CONFIG_INET_XFRM_MODE_TRANSPORT=y 198CONFIG_INET_XFRM_MODE_TRANSPORT=y
199CONFIG_INET_XFRM_MODE_TUNNEL=y 199CONFIG_INET_XFRM_MODE_TUNNEL=y
200CONFIG_INET_XFRM_MODE_BEET=y
200CONFIG_INET_DIAG=y 201CONFIG_INET_DIAG=y
201CONFIG_INET_TCP_DIAG=y 202CONFIG_INET_TCP_DIAG=y
202# CONFIG_TCP_CONG_ADVANCED is not set 203# CONFIG_TCP_CONG_ADVANCED is not set
@@ -214,6 +215,7 @@ CONFIG_INET6_XFRM_TUNNEL=m
214CONFIG_INET6_TUNNEL=m 215CONFIG_INET6_TUNNEL=m
215CONFIG_INET6_XFRM_MODE_TRANSPORT=m 216CONFIG_INET6_XFRM_MODE_TRANSPORT=m
216CONFIG_INET6_XFRM_MODE_TUNNEL=m 217CONFIG_INET6_XFRM_MODE_TUNNEL=m
218CONFIG_INET6_XFRM_MODE_BEET=m
217# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 219# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
218CONFIG_IPV6_TUNNEL=m 220CONFIG_IPV6_TUNNEL=m
219# CONFIG_IPV6_SUBTREES is not set 221# CONFIG_IPV6_SUBTREES is not set
@@ -373,6 +375,7 @@ CONFIG_BLK_DEV_ALI15X3=y
373# CONFIG_BLK_DEV_CS5530 is not set 375# CONFIG_BLK_DEV_CS5530 is not set
374# CONFIG_BLK_DEV_HPT34X is not set 376# CONFIG_BLK_DEV_HPT34X is not set
375# CONFIG_BLK_DEV_HPT366 is not set 377# CONFIG_BLK_DEV_HPT366 is not set
378# CONFIG_BLK_DEV_JMICRON is not set
376# CONFIG_BLK_DEV_SC1200 is not set 379# CONFIG_BLK_DEV_SC1200 is not set
377# CONFIG_BLK_DEV_PIIX is not set 380# CONFIG_BLK_DEV_PIIX is not set
378# CONFIG_BLK_DEV_IT821X is not set 381# CONFIG_BLK_DEV_IT821X is not set
@@ -449,10 +452,10 @@ CONFIG_ISCSI_TCP=m
449# CONFIG_SCSI_INIA100 is not set 452# CONFIG_SCSI_INIA100 is not set
450# CONFIG_SCSI_STEX is not set 453# CONFIG_SCSI_STEX is not set
451# CONFIG_SCSI_SYM53C8XX_2 is not set 454# CONFIG_SCSI_SYM53C8XX_2 is not set
452# CONFIG_SCSI_IPR is not set
453# CONFIG_SCSI_QLOGIC_1280 is not set 455# CONFIG_SCSI_QLOGIC_1280 is not set
454# CONFIG_SCSI_QLOGICPTI is not set 456# CONFIG_SCSI_QLOGICPTI is not set
455# CONFIG_SCSI_QLA_FC is not set 457# CONFIG_SCSI_QLA_FC is not set
458# CONFIG_SCSI_QLA_ISCSI is not set
456# CONFIG_SCSI_LPFC is not set 459# CONFIG_SCSI_LPFC is not set
457# CONFIG_SCSI_DC395x is not set 460# CONFIG_SCSI_DC395x is not set
458# CONFIG_SCSI_DC390T is not set 461# CONFIG_SCSI_DC390T is not set
@@ -478,6 +481,7 @@ CONFIG_MD_RAID456=m
478CONFIG_MD_MULTIPATH=m 481CONFIG_MD_MULTIPATH=m
479# CONFIG_MD_FAULTY is not set 482# CONFIG_MD_FAULTY is not set
480CONFIG_BLK_DEV_DM=m 483CONFIG_BLK_DEV_DM=m
484# CONFIG_DM_DEBUG is not set
481CONFIG_DM_CRYPT=m 485CONFIG_DM_CRYPT=m
482CONFIG_DM_SNAPSHOT=m 486CONFIG_DM_SNAPSHOT=m
483CONFIG_DM_MIRROR=m 487CONFIG_DM_MIRROR=m
@@ -840,12 +844,12 @@ CONFIG_HWMON=y
840# 844#
841# Misc devices 845# Misc devices
842# 846#
847# CONFIG_TIFM_CORE is not set
843 848
844# 849#
845# Multimedia devices 850# Multimedia devices
846# 851#
847# CONFIG_VIDEO_DEV is not set 852# CONFIG_VIDEO_DEV is not set
848CONFIG_VIDEO_V4L2=y
849 853
850# 854#
851# Digital Video Broadcasting Devices 855# Digital Video Broadcasting Devices
@@ -858,6 +862,7 @@ CONFIG_VIDEO_V4L2=y
858# 862#
859# CONFIG_FIRMWARE_EDID is not set 863# CONFIG_FIRMWARE_EDID is not set
860CONFIG_FB=y 864CONFIG_FB=y
865CONFIG_FB_DDC=y
861CONFIG_FB_CFB_FILLRECT=y 866CONFIG_FB_CFB_FILLRECT=y
862CONFIG_FB_CFB_COPYAREA=y 867CONFIG_FB_CFB_COPYAREA=y
863CONFIG_FB_CFB_IMAGEBLIT=y 868CONFIG_FB_CFB_IMAGEBLIT=y
@@ -1236,6 +1241,7 @@ CONFIG_FS_MBCACHE=y
1236# CONFIG_JFS_FS is not set 1241# CONFIG_JFS_FS is not set
1237CONFIG_FS_POSIX_ACL=y 1242CONFIG_FS_POSIX_ACL=y
1238# CONFIG_XFS_FS is not set 1243# CONFIG_XFS_FS is not set
1244# CONFIG_GFS2_FS is not set
1239# CONFIG_OCFS2_FS is not set 1245# CONFIG_OCFS2_FS is not set
1240# CONFIG_MINIX_FS is not set 1246# CONFIG_MINIX_FS is not set
1241# CONFIG_ROMFS_FS is not set 1247# CONFIG_ROMFS_FS is not set
@@ -1279,6 +1285,7 @@ CONFIG_RAMFS=y
1279# 1285#
1280# CONFIG_ADFS_FS is not set 1286# CONFIG_ADFS_FS is not set
1281# CONFIG_AFFS_FS is not set 1287# CONFIG_AFFS_FS is not set
1288# CONFIG_ECRYPT_FS is not set
1282# CONFIG_HFS_FS is not set 1289# CONFIG_HFS_FS is not set
1283# CONFIG_HFSPLUS_FS is not set 1290# CONFIG_HFSPLUS_FS is not set
1284# CONFIG_BEFS_FS is not set 1291# CONFIG_BEFS_FS is not set
@@ -1355,6 +1362,10 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1355# CONFIG_NLS_UTF8 is not set 1362# CONFIG_NLS_UTF8 is not set
1356 1363
1357# 1364#
1365# Distributed Lock Manager
1366#
1367
1368#
1358# Instrumentation Support 1369# Instrumentation Support
1359# 1370#
1360CONFIG_PROFILING=y 1371CONFIG_PROFILING=y
diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c
index 8a9b470e1b65..2df25c2b4071 100644
--- a/arch/sparc64/kernel/ebus.c
+++ b/arch/sparc64/kernel/ebus.c
@@ -79,7 +79,7 @@ static void __ebus_dma_reset(struct ebus_dma_info *p, int no_drain)
79 } 79 }
80} 80}
81 81
82static irqreturn_t ebus_dma_irq(int irq, void *dev_id, struct pt_regs *regs) 82static irqreturn_t ebus_dma_irq(int irq, void *dev_id)
83{ 83{
84 struct ebus_dma_info *p = dev_id; 84 struct ebus_dma_info *p = dev_id;
85 unsigned long flags; 85 unsigned long flags;
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c
index 4e64724cb9ae..d64b1ea848de 100644
--- a/arch/sparc64/kernel/irq.c
+++ b/arch/sparc64/kernel/irq.c
@@ -522,12 +522,13 @@ void ack_bad_irq(unsigned int virt_irq)
522} 522}
523 523
524#ifndef CONFIG_SMP 524#ifndef CONFIG_SMP
525extern irqreturn_t timer_interrupt(int, void *, struct pt_regs *); 525extern irqreturn_t timer_interrupt(int, void *);
526 526
527void timer_irq(int irq, struct pt_regs *regs) 527void timer_irq(int irq, struct pt_regs *regs)
528{ 528{
529 unsigned long clr_mask = 1 << irq; 529 unsigned long clr_mask = 1 << irq;
530 unsigned long tick_mask = tick_ops->softint_mask; 530 unsigned long tick_mask = tick_ops->softint_mask;
531 struct pt_regs *old_regs;
531 532
532 if (get_softint() & tick_mask) { 533 if (get_softint() & tick_mask) {
533 irq = 0; 534 irq = 0;
@@ -535,21 +536,25 @@ void timer_irq(int irq, struct pt_regs *regs)
535 } 536 }
536 clear_softint(clr_mask); 537 clear_softint(clr_mask);
537 538
539 old_regs = set_irq_regs(regs);
538 irq_enter(); 540 irq_enter();
539 541
540 kstat_this_cpu.irqs[0]++; 542 kstat_this_cpu.irqs[0]++;
541 timer_interrupt(irq, NULL, regs); 543 timer_interrupt(irq, NULL);
542 544
543 irq_exit(); 545 irq_exit();
546 set_irq_regs(old_regs);
544} 547}
545#endif 548#endif
546 549
547void handler_irq(int irq, struct pt_regs *regs) 550void handler_irq(int irq, struct pt_regs *regs)
548{ 551{
549 struct ino_bucket *bucket; 552 struct ino_bucket *bucket;
553 struct pt_regs *old_regs;
550 554
551 clear_softint(1 << irq); 555 clear_softint(1 << irq);
552 556
557 old_regs = set_irq_regs(regs);
553 irq_enter(); 558 irq_enter();
554 559
555 /* Sliiiick... */ 560 /* Sliiiick... */
@@ -558,12 +563,13 @@ void handler_irq(int irq, struct pt_regs *regs)
558 struct ino_bucket *next = __bucket(bucket->irq_chain); 563 struct ino_bucket *next = __bucket(bucket->irq_chain);
559 564
560 bucket->irq_chain = 0; 565 bucket->irq_chain = 0;
561 __do_IRQ(bucket->virt_irq, regs); 566 __do_IRQ(bucket->virt_irq);
562 567
563 bucket = next; 568 bucket = next;
564 } 569 }
565 570
566 irq_exit(); 571 irq_exit();
572 set_irq_regs(old_regs);
567} 573}
568 574
569struct sun5_timer { 575struct sun5_timer {
diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c
index 7f9204535770..d822c7c18e1f 100644
--- a/arch/sparc64/kernel/of_device.c
+++ b/arch/sparc64/kernel/of_device.c
@@ -841,7 +841,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
841 if (!parent) 841 if (!parent)
842 strcpy(op->dev.bus_id, "root"); 842 strcpy(op->dev.bus_id, "root");
843 else 843 else
844 strcpy(op->dev.bus_id, dp->path_component_name); 844 sprintf(op->dev.bus_id, "%s@%08x", dp->name, dp->node);
845 845
846 if (of_device_register(op)) { 846 if (of_device_register(op)) {
847 printk("%s: Could not register of device.\n", 847 printk("%s: Could not register of device.\n",
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c
index 1ec0aab68c08..fda5db223d96 100644
--- a/arch/sparc64/kernel/pci_psycho.c
+++ b/arch/sparc64/kernel/pci_psycho.c
@@ -533,7 +533,7 @@ static void psycho_check_iommu_error(struct pci_controller_info *p,
533#define PSYCHO_UEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ 533#define PSYCHO_UEAFSR_RESV2 0x00000000007fffffUL /* Reserved */
534#define PSYCHO_UE_AFAR 0x0038UL 534#define PSYCHO_UE_AFAR 0x0038UL
535 535
536static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs) 536static irqreturn_t psycho_ue_intr(int irq, void *dev_id)
537{ 537{
538 struct pci_controller_info *p = dev_id; 538 struct pci_controller_info *p = dev_id;
539 unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_UE_AFSR; 539 unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_UE_AFSR;
@@ -610,7 +610,7 @@ static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs)
610#define PSYCHO_CEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ 610#define PSYCHO_CEAFSR_RESV2 0x00000000007fffffUL /* Reserved */
611#define PSYCHO_CE_AFAR 0x0040UL 611#define PSYCHO_CE_AFAR 0x0040UL
612 612
613static irqreturn_t psycho_ce_intr(int irq, void *dev_id, struct pt_regs *regs) 613static irqreturn_t psycho_ce_intr(int irq, void *dev_id)
614{ 614{
615 struct pci_controller_info *p = dev_id; 615 struct pci_controller_info *p = dev_id;
616 unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_CE_AFSR; 616 unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_CE_AFSR;
@@ -735,7 +735,7 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm, int is_pbm
735 return ret; 735 return ret;
736} 736}
737 737
738static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) 738static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id)
739{ 739{
740 struct pci_pbm_info *pbm = dev_id; 740 struct pci_pbm_info *pbm = dev_id;
741 struct pci_controller_info *p = pbm->parent; 741 struct pci_controller_info *p = pbm->parent;
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c
index 45891850b90d..6ec569828c29 100644
--- a/arch/sparc64/kernel/pci_sabre.c
+++ b/arch/sparc64/kernel/pci_sabre.c
@@ -574,7 +574,7 @@ static void sabre_check_iommu_error(struct pci_controller_info *p,
574 spin_unlock_irqrestore(&iommu->lock, flags); 574 spin_unlock_irqrestore(&iommu->lock, flags);
575} 575}
576 576
577static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs) 577static irqreturn_t sabre_ue_intr(int irq, void *dev_id)
578{ 578{
579 struct pci_controller_info *p = dev_id; 579 struct pci_controller_info *p = dev_id;
580 unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_UE_AFSR; 580 unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_UE_AFSR;
@@ -634,7 +634,7 @@ static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs)
634 return IRQ_HANDLED; 634 return IRQ_HANDLED;
635} 635}
636 636
637static irqreturn_t sabre_ce_intr(int irq, void *dev_id, struct pt_regs *regs) 637static irqreturn_t sabre_ce_intr(int irq, void *dev_id)
638{ 638{
639 struct pci_controller_info *p = dev_id; 639 struct pci_controller_info *p = dev_id;
640 unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_CE_AFSR; 640 unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_CE_AFSR;
@@ -726,7 +726,7 @@ static irqreturn_t sabre_pcierr_intr_other(struct pci_controller_info *p)
726 return ret; 726 return ret;
727} 727}
728 728
729static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) 729static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id)
730{ 730{
731 struct pci_controller_info *p = dev_id; 731 struct pci_controller_info *p = dev_id;
732 unsigned long afsr_reg, afar_reg; 732 unsigned long afsr_reg, afar_reg;
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c
index 75ade83ecc65..66911b126aed 100644
--- a/arch/sparc64/kernel/pci_schizo.c
+++ b/arch/sparc64/kernel/pci_schizo.c
@@ -515,7 +515,7 @@ static void schizo_check_iommu_error(struct pci_controller_info *p,
515#define SCHIZO_UEAFSR_MTAG 0x000000000000e000UL /* Safari */ 515#define SCHIZO_UEAFSR_MTAG 0x000000000000e000UL /* Safari */
516#define SCHIZO_UEAFSR_ECCSYND 0x00000000000001ffUL /* Safari */ 516#define SCHIZO_UEAFSR_ECCSYND 0x00000000000001ffUL /* Safari */
517 517
518static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs) 518static irqreturn_t schizo_ue_intr(int irq, void *dev_id)
519{ 519{
520 struct pci_controller_info *p = dev_id; 520 struct pci_controller_info *p = dev_id;
521 unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_UE_AFSR; 521 unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_UE_AFSR;
@@ -603,7 +603,7 @@ static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs)
603#define SCHIZO_CEAFSR_MTAG 0x000000000000e000UL 603#define SCHIZO_CEAFSR_MTAG 0x000000000000e000UL
604#define SCHIZO_CEAFSR_ECCSYND 0x00000000000001ffUL 604#define SCHIZO_CEAFSR_ECCSYND 0x00000000000001ffUL
605 605
606static irqreturn_t schizo_ce_intr(int irq, void *dev_id, struct pt_regs *regs) 606static irqreturn_t schizo_ce_intr(int irq, void *dev_id)
607{ 607{
608 struct pci_controller_info *p = dev_id; 608 struct pci_controller_info *p = dev_id;
609 unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_CE_AFSR; 609 unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_CE_AFSR;
@@ -778,7 +778,7 @@ static irqreturn_t schizo_pcierr_intr_other(struct pci_pbm_info *pbm)
778 return ret; 778 return ret;
779} 779}
780 780
781static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) 781static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id)
782{ 782{
783 struct pci_pbm_info *pbm = dev_id; 783 struct pci_pbm_info *pbm = dev_id;
784 struct pci_controller_info *p = pbm->parent; 784 struct pci_controller_info *p = pbm->parent;
@@ -933,7 +933,7 @@ static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *reg
933/* We only expect UNMAP errors here. The rest of the Safari errors 933/* We only expect UNMAP errors here. The rest of the Safari errors
934 * are marked fatal and thus cause a system reset. 934 * are marked fatal and thus cause a system reset.
935 */ 935 */
936static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id, struct pt_regs *regs) 936static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id)
937{ 937{
938 struct pci_controller_info *p = dev_id; 938 struct pci_controller_info *p = dev_id;
939 u64 errlog; 939 u64 errlog;
diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c
index 0b9c70627ce4..699b24b890df 100644
--- a/arch/sparc64/kernel/power.c
+++ b/arch/sparc64/kernel/power.c
@@ -35,7 +35,7 @@ static void __iomem *power_reg;
35static DECLARE_WAIT_QUEUE_HEAD(powerd_wait); 35static DECLARE_WAIT_QUEUE_HEAD(powerd_wait);
36static int button_pressed; 36static int button_pressed;
37 37
38static irqreturn_t power_handler(int irq, void *dev_id, struct pt_regs *regs) 38static irqreturn_t power_handler(int irq, void *dev_id)
39{ 39{
40 if (button_pressed == 0) { 40 if (button_pressed == 0) {
41 button_pressed = 1; 41 button_pressed = 1;
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c
index c49a57795743..01d6d869ea2b 100644
--- a/arch/sparc64/kernel/sbus.c
+++ b/arch/sparc64/kernel/sbus.c
@@ -839,7 +839,7 @@ unsigned int sbus_build_irq(void *buscookie, unsigned int ino)
839#define SYSIO_UEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ 839#define SYSIO_UEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */
840#define SYSIO_UEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ 840#define SYSIO_UEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */
841#define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ 841#define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */
842static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs) 842static irqreturn_t sysio_ue_handler(int irq, void *dev_id)
843{ 843{
844 struct sbus_bus *sbus = dev_id; 844 struct sbus_bus *sbus = dev_id;
845 struct sbus_iommu *iommu = sbus->iommu; 845 struct sbus_iommu *iommu = sbus->iommu;
@@ -911,7 +911,7 @@ static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs)
911#define SYSIO_CEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ 911#define SYSIO_CEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */
912#define SYSIO_CEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ 912#define SYSIO_CEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */
913#define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ 913#define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */
914static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs) 914static irqreturn_t sysio_ce_handler(int irq, void *dev_id)
915{ 915{
916 struct sbus_bus *sbus = dev_id; 916 struct sbus_bus *sbus = dev_id;
917 struct sbus_iommu *iommu = sbus->iommu; 917 struct sbus_iommu *iommu = sbus->iommu;
@@ -988,7 +988,7 @@ static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs)
988#define SYSIO_SBAFSR_SIZE 0x00001c0000000000UL /* Size of transfer */ 988#define SYSIO_SBAFSR_SIZE 0x00001c0000000000UL /* Size of transfer */
989#define SYSIO_SBAFSR_MID 0x000003e000000000UL /* MID causing the error */ 989#define SYSIO_SBAFSR_MID 0x000003e000000000UL /* MID causing the error */
990#define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */ 990#define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */
991static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id, struct pt_regs *regs) 991static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id)
992{ 992{
993 struct sbus_bus *sbus = dev_id; 993 struct sbus_bus *sbus = dev_id;
994 struct sbus_iommu *iommu = sbus->iommu; 994 struct sbus_iommu *iommu = sbus->iommu;
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c
index 958287448cfe..cc8ad480a204 100644
--- a/arch/sparc64/kernel/setup.c
+++ b/arch/sparc64/kernel/setup.c
@@ -91,16 +91,6 @@ void kernel_enter_debugger(void)
91{ 91{
92} 92}
93 93
94int obp_system_intr(void)
95{
96 if (boot_flags & BOOTME_DEBUG) {
97 printk("OBP: system interrupted\n");
98 prom_halt();
99 return 1;
100 }
101 return 0;
102}
103
104/* 94/*
105 * Process kernel command line switches that are specific to the 95 * Process kernel command line switches that are specific to the
106 * SPARC or that require special low-level processing. 96 * SPARC or that require special low-level processing.
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index f62bf3a2de1a..cc09d8266414 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -31,6 +31,7 @@
31#include <asm/cpudata.h> 31#include <asm/cpudata.h>
32 32
33#include <asm/irq.h> 33#include <asm/irq.h>
34#include <asm/irq_regs.h>
34#include <asm/page.h> 35#include <asm/page.h>
35#include <asm/pgtable.h> 36#include <asm/pgtable.h>
36#include <asm/oplib.h> 37#include <asm/oplib.h>
@@ -1187,6 +1188,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)
1187 unsigned long compare, tick, pstate; 1188 unsigned long compare, tick, pstate;
1188 int cpu = smp_processor_id(); 1189 int cpu = smp_processor_id();
1189 int user = user_mode(regs); 1190 int user = user_mode(regs);
1191 struct pt_regs *old_regs;
1190 1192
1191 /* 1193 /*
1192 * Check for level 14 softint. 1194 * Check for level 14 softint.
@@ -1203,8 +1205,9 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)
1203 clear_softint(tick_mask); 1205 clear_softint(tick_mask);
1204 } 1206 }
1205 1207
1208 old_regs = set_irq_regs(regs);
1206 do { 1209 do {
1207 profile_tick(CPU_PROFILING, regs); 1210 profile_tick(CPU_PROFILING);
1208 if (!--prof_counter(cpu)) { 1211 if (!--prof_counter(cpu)) {
1209 irq_enter(); 1212 irq_enter();
1210 1213
@@ -1236,6 +1239,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)
1236 : /* no outputs */ 1239 : /* no outputs */
1237 : "r" (pstate)); 1240 : "r" (pstate));
1238 } while (time_after_eq(tick, compare)); 1241 } while (time_after_eq(tick, compare));
1242 set_irq_regs(old_regs);
1239} 1243}
1240 1244
1241static void __init smp_setup_percpu_timer(void) 1245static void __init smp_setup_percpu_timer(void)
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c
index 00f6fc4aaaff..061e1b1fa583 100644
--- a/arch/sparc64/kernel/time.c
+++ b/arch/sparc64/kernel/time.c
@@ -45,6 +45,7 @@
45#include <asm/cpudata.h> 45#include <asm/cpudata.h>
46#include <asm/uaccess.h> 46#include <asm/uaccess.h>
47#include <asm/prom.h> 47#include <asm/prom.h>
48#include <asm/irq_regs.h>
48 49
49DEFINE_SPINLOCK(mostek_lock); 50DEFINE_SPINLOCK(mostek_lock);
50DEFINE_SPINLOCK(rtc_lock); 51DEFINE_SPINLOCK(rtc_lock);
@@ -452,7 +453,7 @@ static inline void timer_check_rtc(void)
452 } 453 }
453} 454}
454 455
455irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) 456irqreturn_t timer_interrupt(int irq, void *dev_id)
456{ 457{
457 unsigned long ticks, compare, pstate; 458 unsigned long ticks, compare, pstate;
458 459
@@ -460,8 +461,8 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
460 461
461 do { 462 do {
462#ifndef CONFIG_SMP 463#ifndef CONFIG_SMP
463 profile_tick(CPU_PROFILING, regs); 464 profile_tick(CPU_PROFILING);
464 update_process_times(user_mode(regs)); 465 update_process_times(user_mode(get_irq_regs()));
465#endif 466#endif
466 do_timer(1); 467 do_timer(1);
467 468