From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1J42RE-0006M5-TS for qemu-devel@nongnu.org; Sun, 16 Dec 2007 17:58:24 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1J42RD-0006Li-Hj for qemu-devel@nongnu.org; Sun, 16 Dec 2007 17:58:24 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1J42RD-0006Ld-5z for qemu-devel@nongnu.org; Sun, 16 Dec 2007 17:58:23 -0500 Received: from pop-gadwall.atl.sa.earthlink.net ([207.69.195.61]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1J42RC-0002LI-Ra for qemu-devel@nongnu.org; Sun, 16 Dec 2007 17:58:22 -0500 Received: from user-142h2k8.cable.mindspring.com ([72.40.138.136] helo=earthlink.net) by pop-gadwall.atl.sa.earthlink.net with esmtp (Exim 3.36 #1) id 1J42R6-0004EE-00 for qemu-devel@nongnu.org; Sun, 16 Dec 2007 17:58:16 -0500 Message-ID: <4765AD87.4050702@earthlink.net> Date: Sun, 16 Dec 2007 17:58:15 -0500 From: Robert Reif MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060401000401020309000103" Subject: [Qemu-devel] [PATCH] sparc32: make number of per CPU timers match number of CPUs Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------060401000401020309000103 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Only create as many per CPU timers as there are CPUs. --------------060401000401020309000103 Content-Type: text/plain; name="timer.diff.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="timer.diff.txt" Index: hw/slavio_timer.c =================================================================== RCS file: /sources/qemu/qemu/hw/slavio_timer.c,v retrieving revision 1.21 diff -p -u -r1.21 slavio_timer.c --- hw/slavio_timer.c 1 Dec 2007 15:58:22 -0000 1.21 +++ hw/slavio_timer.c 16 Dec 2007 22:53:33 -0000 @@ -61,6 +61,7 @@ typedef struct SLAVIO_TIMERState { struct SLAVIO_TIMERState *master; int slave_index; // system only + unsigned int num_slaves; struct SLAVIO_TIMERState *slave[MAX_CPUS]; uint32_t slave_mode; } SLAVIO_TIMERState; @@ -352,14 +353,16 @@ static SLAVIO_TIMERState *slavio_timer_i } void slavio_timer_init_all(target_phys_addr_t base, qemu_irq master_irq, - qemu_irq *cpu_irqs) + qemu_irq *cpu_irqs, unsigned int num_cpus) { SLAVIO_TIMERState *master; unsigned int i; master = slavio_timer_init(base + SYS_TIMER_OFFSET, master_irq, NULL, 0); - for (i = 0; i < MAX_CPUS; i++) { + master->num_slaves = num_cpus; + + for (i = 0; i < master->num_slaves; i++) { master->slave[i] = slavio_timer_init(base + (target_phys_addr_t) CPU_TIMER_OFFSET(i), cpu_irqs[i], master, i); Index: hw/sun4m.c =================================================================== RCS file: /sources/qemu/qemu/hw/sun4m.c,v retrieving revision 1.69 diff -p -u -r1.69 sun4m.c --- hw/sun4m.c 10 Dec 2007 20:00:11 -0000 1.69 +++ hw/sun4m.c 16 Dec 2007 22:53:33 -0000 @@ -436,7 +436,7 @@ static void sun4m_hw_init(const struct h hwdef->nvram_size, 8); slavio_timer_init_all(hwdef->counter_base, slavio_irq[hwdef->clock1_irq], - slavio_cpu_irq); + slavio_cpu_irq, smp_cpus); slavio_serial_ms_kbd_init(hwdef->ms_kb_base, slavio_irq[hwdef->ms_kb_irq], nographic); Index: hw/sun4m.h =================================================================== RCS file: /sources/qemu/qemu/hw/sun4m.h,v retrieving revision 1.4 diff -p -u -r1.4 sun4m.h --- hw/sun4m.h 9 Dec 2007 17:03:50 -0000 1.4 +++ hw/sun4m.h 16 Dec 2007 22:53:33 -0000 @@ -36,7 +36,7 @@ void slavio_irq_info(void *opaque); /* slavio_timer.c */ void slavio_timer_init_all(target_phys_addr_t base, qemu_irq master_irq, - qemu_irq *cpu_irqs); + qemu_irq *cpu_irqs, unsigned int num_cpus); /* slavio_serial.c */ SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq, --------------060401000401020309000103--