Module Name: src Committed By: palle Date: Tue Jun 10 18:27:42 UTC 2014
Modified Files: src/sys/arch/sparc64/sparc64: clock.c cpu.c Log Message: sun4v: make cpu_initclocks() work on sun4v - %tick and %stick on sun4v systems are read-only. ok martin@ To generate a diff of this commit: cvs rdiff -u -r1.115 -r1.116 src/sys/arch/sparc64/sparc64/clock.c cvs rdiff -u -r1.112 -r1.113 src/sys/arch/sparc64/sparc64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/sparc64/sparc64/clock.c diff -u src/sys/arch/sparc64/sparc64/clock.c:1.115 src/sys/arch/sparc64/sparc64/clock.c:1.116 --- src/sys/arch/sparc64/sparc64/clock.c:1.115 Wed Apr 30 00:09:29 2014 +++ src/sys/arch/sparc64/sparc64/clock.c Tue Jun 10 18:27:41 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: clock.c,v 1.115 2014/04/30 00:09:29 mrg Exp $ */ +/* $NetBSD: clock.c,v 1.116 2014/06/10 18:27:41 palle Exp $ */ /* * Copyright (c) 1992, 1993 @@ -55,7 +55,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.115 2014/04/30 00:09:29 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.116 2014/06/10 18:27:41 palle Exp $"); #include "opt_multiprocessor.h" @@ -110,6 +110,7 @@ __KERNEL_RCSID(0, "$NetBSD: clock.c,v 1. * no counter-timer %tick - %tick * US-IIe STICK - STICK * US-IIIi %stick - %stick + * sun4v %stick - %stick * * US-IIe and US-IIIi could use %tick as statclock */ @@ -472,7 +473,8 @@ cpu_initclocks(void) } /* Initialize the %tick register */ - settick(0); + if (CPU_ISSUN4U || CPU_ISSUN4US) + settick(0); /* Register timecounter "tick-counter" */ tick_timecounter.tc_frequency = ci->ci_cpu_clockrate[0]; @@ -480,7 +482,7 @@ cpu_initclocks(void) /* Register timecounter "stick-counter" */ if (ci->ci_system_clockrate[0] != 0) { - if (CPU_IS_HUMMINGBIRD()) { + if (CPU_ISSUN4U && CPU_IS_HUMMINGBIRD()) { #if NPSYCHO > 0 psycho_setstick(0); stick2e_timecounter.tc_frequency = @@ -488,7 +490,8 @@ cpu_initclocks(void) tc_init(&stick2e_timecounter); #endif } else { - setstick(0); + if (CPU_ISSUN4U || CPU_ISSUN4US) + setstick(0); stick_timecounter.tc_frequency = ci->ci_system_clockrate[0]; tc_init(&stick_timecounter); @@ -513,7 +516,7 @@ cpu_initclocks(void) /* We don't have a counter-timer -- use %tick */ tickintr_establish(PIL_CLOCK, tickintr); - } else if (CPU_IS_HUMMINGBIRD()) { + } else if (CPU_ISSUN4U && CPU_IS_HUMMINGBIRD()) { #if NPSYCHO > 0 aprint_normal("No counter-timer -- using STICK " "at %luMHz as system clock.\n", Index: src/sys/arch/sparc64/sparc64/cpu.c diff -u src/sys/arch/sparc64/sparc64/cpu.c:1.112 src/sys/arch/sparc64/sparc64/cpu.c:1.113 --- src/sys/arch/sparc64/sparc64/cpu.c:1.112 Sun Jun 8 17:33:24 2014 +++ src/sys/arch/sparc64/sparc64/cpu.c Tue Jun 10 18:27:41 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.112 2014/06/08 17:33:24 palle Exp $ */ +/* $NetBSD: cpu.c,v 1.113 2014/06/10 18:27:41 palle Exp $ */ /* * Copyright (c) 1996 @@ -52,7 +52,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.112 2014/06/08 17:33:24 palle Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.113 2014/06/10 18:27:41 palle Exp $"); #include "opt_multiprocessor.h" @@ -562,9 +562,11 @@ cpu_boot_secondary_processors(void) delay(1000); sync_tick = 1; membar_Sync(); - settick(0); + if (CPU_ISSUN4U || CPU_ISSUN4US) + settick(0); if (ci->ci_system_clockrate[0] != 0) - setstick(0); + if (CPU_ISSUN4U || CPU_ISSUN4US) + setstick(0); setpstate(pstate); @@ -592,9 +594,11 @@ cpu_hatch(void) while (sync_tick == 0) { /* we do nothing here */ } - settick(0); + if (CPU_ISSUN4U || CPU_ISSUN4US) + settick(0); if (curcpu()->ci_system_clockrate[0] != 0) { - setstick(0); + if (CPU_ISSUN4U || CPU_ISSUN4US) + setstick(0); stickintr_establish(PIL_CLOCK, stickintr); } else { tickintr_establish(PIL_CLOCK, tickintr);