CVS commit: src/sys/arch/arc/arc
Module Name:src Committed By: tsutsui Date: Fri May 29 23:02:51 UTC 2020 Modified Files: src/sys/arch/arc/arc: arcbios.c Log Message: Make sure to preserve MIPS_CURLWP (t8) register from ARC BIOS calls. Fixes silent hangup right after starting a kernel on my Express5800/230 R4400 PCI (finally I've repaired its PSU and RTC). Reviewed by soda@. Maybe other ARC machines are also affected. Note GXemul was not affected by this problem because it doesn't have actual ARC BIOS ROM and emulates ARC functions internally. Should be pulled up to at least netbsd-9. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arc/arc/arcbios.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/arc/arc/arcbios.c diff -u src/sys/arch/arc/arc/arcbios.c:1.17 src/sys/arch/arc/arc/arcbios.c:1.18 --- src/sys/arch/arc/arc/arcbios.c:1.17 Fri Nov 27 03:23:04 2009 +++ src/sys/arch/arc/arc/arcbios.c Fri May 29 23:02:51 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: arcbios.c,v 1.17 2009/11/27 03:23:04 rmind Exp $ */ +/* $NetBSD: arcbios.c,v 1.18 2020/05/29 23:02:51 tsutsui Exp $ */ /* $OpenBSD: arcbios.c,v 1.3 1998/06/06 06:33:33 mickey Exp $ */ /*- @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: arcbios.c,v 1.17 2009/11/27 03:23:04 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arcbios.c,v 1.18 2020/05/29 23:02:51 tsutsui Exp $"); #include #include @@ -39,7 +39,9 @@ __KERNEL_RCSID(0, "$NetBSD: arcbios.c,v #include #include #include +#include #include +#include #include int Bios_Read(int, char *, int, int *); @@ -68,23 +70,56 @@ int arc_cpu_l2cache_size = 0; /* * ARC Bios trampoline code. + * Note we have to save/restore reserved MIPS_CURLWP register. */ -#define ARC_Call(Name,Offset) \ -__asm("\n" \ -" .text\n" \ -" .ent " #Name "\n" \ -" .align 3\n" \ -" .set noreorder\n" \ -" .globl " #Name "\n" \ -#Name":\n" \ -" lw $2, 0x80001020\n"\ -" lw $2," #Offset "($2)\n"\ -" jr $2\n" \ -" nop\n" \ +#define ARC_Call(Name,Offset) \ +__asm("\n" \ +" .text\n" \ +" .ent " #Name "\n" \ +" .align 3\n" \ +" .set noreorder\n" \ +" .globl " #Name "\n" \ +#Name":\n" \ +" subu $29, " ___STRING(CALLFRAME_SIZ) "\n" \ +" sw $31, " ___STRING(CALLFRAME_RA) "($29)\n" \ +" sw $16, " ___STRING(CALLFRAME_SP) "($29)\n" \ +" lw $2, 0x80001020\n"\ +" lw $2," #Offset "($2)\n"\ +" jalr $2\n" \ +" move $16, " ___STRING(MIPS_CURLWP) "\n" \ +" move " ___STRING(MIPS_CURLWP) ", $16\n" \ +" lw $31, " ___STRING(CALLFRAME_RA) "($29)\n" \ +" lw $16, " ___STRING(CALLFRAME_SP) "($29)\n" \ +" j $31\n" \ +" addu $29, " ___STRING(CALLFRAME_SIZ) "\n" \ +" .end " #Name "\n" ); + +#define ARC_Call5(Name,Offset) \ +__asm("\n" \ +" .text\n" \ +" .ent " #Name "\n" \ +" .align 3\n" \ +" .set noreorder\n" \ +" .globl " #Name "\n" \ +#Name":\n" \ +" subu $29, " ___STRING(CALLFRAME_SIZ + 4) "\n" \ +" sw $31, " ___STRING(CALLFRAME_RA + 4) "($29)\n" \ +" sw $16, " ___STRING(CALLFRAME_SP + 4) "($29)\n" \ +" lw $12, " ___STRING(CALLFRAME_SIZ + 4 + 16) "($29)\n" \ +" sw $12, 16($29)\n" \ +" lw $2, 0x80001020\n"\ +" lw $2," #Offset "($2)\n"\ +" jalr $2\n" \ +" move $16, " ___STRING(MIPS_CURLWP) "\n" \ +" move " ___STRING(MIPS_CURLWP) ", $16\n" \ +" lw $31, " ___STRING(CALLFRAME_RA + 4) "($29)\n" \ +" lw $16, " ___STRING(CALLFRAME_SP + 4) "($29)\n" \ +" j $31\n" \ +" addu $29, " ___STRING(CALLFRAME_SIZ + 4) "\n" \ " .end " #Name "\n" ); ARC_Call(Bios_Load, 0x00); -ARC_Call(Bios_Invoke, 0x04); +ARC_Call5(Bios_Invoke, 0x04); ARC_Call(Bios_Execute, 0x08); ARC_Call(Bios_Halt, 0x0c); ARC_Call(Bios_PowerDown, 0x10);
CVS commit: src/sys/arch/arc/arc
Module Name:src Committed By: rin Date: Sun Apr 7 03:53:53 UTC 2019 Modified Files: src/sys/arch/arc/arc: locore_machdep.S Log Message: Remove dead codes, that are #if 0'd for more than 19 years! To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arc/arc/locore_machdep.S 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/arc/arc/locore_machdep.S diff -u src/sys/arch/arc/arc/locore_machdep.S:1.16 src/sys/arch/arc/arc/locore_machdep.S:1.17 --- src/sys/arch/arc/arc/locore_machdep.S:1.16 Fri Nov 27 03:23:04 2009 +++ src/sys/arch/arc/arc/locore_machdep.S Sun Apr 7 03:53:53 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: locore_machdep.S,v 1.16 2009/11/27 03:23:04 rmind Exp $ */ +/* $NetBSD: locore_machdep.S,v 1.17 2019/04/07 03:53:53 rin Exp $ */ /* $OpenBSD: locore.S,v 1.12 1997/04/19 17:19:43 pefo Exp $ */ /* @@ -195,140 +195,3 @@ LEAF(fillw) jr ra nop END(fillw) - -/*#ifdef DEBUG*/ /* for minidebug.c: fix trap() to use this */ -#if 0 -/* - * Read a long and return it. - * Note: addresses can be unaligned! - * - * long -L* mdbpeek(addr) -L* caddt_t addr; -L* { -L* return (*(long *)addr); -L* } - */ -LEAF(mdbpeek) - li v0, MDBERR - sw v0, UADDR+PCB_ONFAULT - and v0, a0, 3 # unaligned address? - bne v0, zero, 1f - nop - b 2f - lw v0, (a0) # aligned access -1: - LWHI v0, 0(a0) # get next 4 bytes (unaligned) - LWLO v0, 3(a0) -2: - j ra # made it w/o errors - sw zero, UADDR+PCB_ONFAULT -mdberr: - li v0, 1 # trap sends us here - sw v0, mdbmkfault - j ra - nop -END(mdbpeek) - -/* - * Write a long to 'addr'. - * Note: addresses can be unaligned! - * -L* void -L* mdbpoke(addr, value) -L* caddt_t addr; -L* long value; -L* { -L* *(long *)addr = value; -L* } - */ -LEAF(mdbpoke) - li v0, MDBERR - sw v0, UADDR+PCB_ONFAULT - and v0, a0, 3 # unaligned address? - bne v0, zero, 1f - nop - b 2f - sw a1, (a0) # aligned access -1: - SWHI a1, 0(a0) # store next 4 bytes (unaligned) - SWLO a1, 3(a0) - and a0, a0, ~3 # align address for cache flush -2: - sw zero, UADDR+PCB_ONFAULT - b R4K_FlushICache # flush instruction cache - li a1, 8 -END(mdbpoke) - -/* - * Save registers and state so we can do a 'mdbreset' (like longjmp) later. - * Always returns zero. - * -L* int mdb_savearea[11]; -L* -L* int -L* mdbsetexit() -L* { -L* mdb_savearea[0] = 0; -L* return (0); -L* } - */ - .comm mdb_savearea, (11 * 4) - -LEAF(mdbsetexit) - la a0, mdb_savearea - sw s0, 0(a0) - sw s1, 4(a0) - sw s2, 8(a0) - sw s3, 12(a0) - sw s4, 16(a0) - sw s5, 20(a0) - sw s6, 24(a0) - sw s7, 28(a0) - sw sp, 32(a0) - sw s8, 36(a0) - sw ra, 40(a0) - j ra - move v0, zero -END(mdbsetexit) - -/* - * Restore registers and state (like longjmp) and return x. - * -L* int -L* mdbreset(x) -L* { -L* return (x); -L* } - */ -LEAF(mdbreset) - la v0, mdb_savearea - lw ra, 40(v0) - lw s0, 0(v0) - lw s1, 4(v0) - lw s2, 8(v0) - lw s3, 12(v0) - lw s4, 16(v0) - lw s5, 20(v0) - lw s6, 24(v0) - lw s7, 28(v0) - lw sp, 32(v0) - lw s8, 36(v0) - j ra - move v0, a0 -END(mdbreset) - -/* - * Trap into the debugger. - * -L* void -L* mdbpanic() -L* { -L* } - */ -LEAF(mdbpanic) - break BREAK_SOVER_VAL - j ra - nop -END(mdbpanic) -#endif /* DEBUG */
CVS commit: src/sys/arch/arc/arc
Module Name:src Committed By: matt Date: Tue Jul 12 23:53:18 UTC 2016 Modified Files: src/sys/arch/arc/arc: bus_space_sparse.c Log Message: Put back cacheable To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arc/arc/bus_space_sparse.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/arc/arc/bus_space_sparse.c diff -u src/sys/arch/arc/arc/bus_space_sparse.c:1.19 src/sys/arch/arc/arc/bus_space_sparse.c:1.20 --- src/sys/arch/arc/arc/bus_space_sparse.c:1.19 Mon Jul 11 16:18:55 2016 +++ src/sys/arch/arc/arc/bus_space_sparse.c Tue Jul 12 23:53:18 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_space_sparse.c,v 1.19 2016/07/11 16:18:55 matt Exp $ */ +/* $NetBSD: bus_space_sparse.c,v 1.20 2016/07/12 23:53:18 matt Exp $ */ /* NetBSD: bus_machdep.c,v 1.1 2000/01/26 18:48:00 drochner Exp */ /*- @@ -39,7 +39,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: bus_space_sparse.c,v 1.19 2016/07/11 16:18:55 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus_space_sparse.c,v 1.20 2016/07/12 23:53:18 matt Exp $"); #include #include @@ -75,9 +75,8 @@ arc_sparse_bus_space_compose_handle(bus_ * Since all buses can be linearly mappable, we don't have to check * BUS_SPACE_MAP_LINEAR and BUS_SPACE_MAP_PREFETCHABLE. */ - const u_int pmap_flags = (flags & BUS_SPACE_MAP_CACHEABLE) - ? PMAP_WRITE_BACK - : 0; + const bool cacheable = (flags & BUS_SPACE_MAP_CACHEABLE) != 0; + const u_int pmap_flags = cacheable ? PMAP_WRITE_BACK : 0; /* * XXX - `bst->bs_pbase' must be page aligned,
CVS commit: src/sys/arch/arc/arc
Module Name:src Committed By: matt Date: Wed Jun 24 06:19:52 UTC 2015 Modified Files: src/sys/arch/arc/arc: cpu.c Log Message: Fix includes To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arc/arc/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/arc/arc/cpu.c diff -u src/sys/arch/arc/arc/cpu.c:1.19 src/sys/arch/arc/arc/cpu.c:1.20 --- src/sys/arch/arc/arc/cpu.c:1.19 Sun Mar 6 14:58:42 2011 +++ src/sys/arch/arc/arc/cpu.c Wed Jun 24 06:19:52 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.19 2011/03/06 14:58:42 tsutsui Exp $ */ +/* $NetBSD: cpu.c,v 1.20 2015/06/24 06:19:52 matt Exp $ */ /* $OpenBSD: cpu.c,v 1.8 1997/04/19 17:19:41 pefo Exp $ */ /* @@ -34,7 +34,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: cpu.c,v 1.19 2011/03/06 14:58:42 tsutsui Exp $); +__KERNEL_RCSID(0, $NetBSD: cpu.c,v 1.20 2015/06/24 06:19:52 matt Exp $); #include sys/param.h #include sys/systm.h @@ -43,7 +43,8 @@ __KERNEL_RCSID(0, $NetBSD: cpu.c,v 1.19 #include uvm/uvm_extern.h -#include machine/cpu.h +#include mips/locore.h + #include machine/autoconf.h #include ioconf.h
CVS commit: src/sys/arch/arc/arc
Module Name:src Committed By: tsutsui Date: Wed Mar 2 10:51:04 UTC 2011 Modified Files: src/sys/arch/arc/arc: interrupt.c Log Message: Fix misplaced #endif. PR port-arc/44664 XXX: I'll also remove ENABLE_INT5_STATCLOCK soon since no visible improvements. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arc/arc/interrupt.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/arc/arc/interrupt.c diff -u src/sys/arch/arc/arc/interrupt.c:1.8 src/sys/arch/arc/arc/interrupt.c:1.9 --- src/sys/arch/arc/arc/interrupt.c:1.8 Sun Feb 20 07:52:42 2011 +++ src/sys/arch/arc/arc/interrupt.c Wed Mar 2 10:51:04 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: interrupt.c,v 1.8 2011/02/20 07:52:42 matt Exp $ */ +/* $NetBSD: interrupt.c,v 1.9 2011/03/02 10:51:04 tsutsui Exp $ */ /* $OpenBSD: trap.c,v 1.22 1999/05/24 23:08:59 jason Exp $ */ /* @@ -40,7 +40,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: interrupt.c,v 1.8 2011/02/20 07:52:42 matt Exp $); +__KERNEL_RCSID(0, $NetBSD: interrupt.c,v 1.9 2011/03/02 10:51:04 tsutsui Exp $); #include sys/param.h #include sys/systm.h @@ -124,8 +124,8 @@ * effect, clears the timer interrupt request. */ mips3_cp0_compare_write(0); - } #endif + } /* * If there is an independent timer interrupt handler,
CVS commit: src/sys/arch/arc/arc
Module Name:src Committed By: uebayasi Date: Fri Nov 12 16:09:58 UTC 2010 Modified Files: src/sys/arch/arc/arc: p_acer_pica_61.c p_dti_arcstation.c p_dti_tyne.c p_sni_rm200pci.c Log Message: Pull in uvm/uvm.h for vm_page_zero_enable. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arc/arc/p_acer_pica_61.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arc/arc/p_dti_arcstation.c cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arc/arc/p_dti_tyne.c cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arc/arc/p_sni_rm200pci.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/arc/arc/p_acer_pica_61.c diff -u src/sys/arch/arc/arc/p_acer_pica_61.c:1.10 src/sys/arch/arc/arc/p_acer_pica_61.c:1.11 --- src/sys/arch/arc/arc/p_acer_pica_61.c:1.10 Thu Feb 22 05:09:01 2007 +++ src/sys/arch/arc/arc/p_acer_pica_61.c Fri Nov 12 16:09:57 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: p_acer_pica_61.c,v 1.10 2007/02/22 05:09:01 thorpej Exp $ */ +/* $NetBSD: p_acer_pica_61.c,v 1.11 2010/11/12 16:09:57 uebayasi Exp $ */ /* $OpenBSD: picabus.c,v 1.11 1999/01/11 05:11:10 millert Exp $ */ /* @@ -30,10 +30,10 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: p_acer_pica_61.c,v 1.10 2007/02/22 05:09:01 thorpej Exp $); +__KERNEL_RCSID(0, $NetBSD: p_acer_pica_61.c,v 1.11 2010/11/12 16:09:57 uebayasi Exp $); #include sys/param.h -#include uvm/uvm_extern.h +#include uvm/uvm.h #include machine/autoconf.h #include machine/platform.h Index: src/sys/arch/arc/arc/p_dti_arcstation.c diff -u src/sys/arch/arc/arc/p_dti_arcstation.c:1.13 src/sys/arch/arc/arc/p_dti_arcstation.c:1.14 --- src/sys/arch/arc/arc/p_dti_arcstation.c:1.13 Mon Dec 3 15:33:14 2007 +++ src/sys/arch/arc/arc/p_dti_arcstation.c Fri Nov 12 16:09:57 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: p_dti_arcstation.c,v 1.13 2007/12/03 15:33:14 ad Exp $ */ +/* $NetBSD: p_dti_arcstation.c,v 1.14 2010/11/12 16:09:57 uebayasi Exp $ */ /* $OpenBSD: machdep.c,v 1.36 1999/05/22 21:22:19 weingart Exp $ */ /* @@ -76,12 +76,12 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: p_dti_arcstation.c,v 1.13 2007/12/03 15:33:14 ad Exp $); +__KERNEL_RCSID(0, $NetBSD: p_dti_arcstation.c,v 1.14 2010/11/12 16:09:57 uebayasi Exp $); #include sys/param.h #include sys/systm.h #include sys/device.h -#include uvm/uvm_extern.h +#include uvm/uvm.h #include machine/autoconf.h #include machine/bus.h Index: src/sys/arch/arc/arc/p_dti_tyne.c diff -u src/sys/arch/arc/arc/p_dti_tyne.c:1.16 src/sys/arch/arc/arc/p_dti_tyne.c:1.17 --- src/sys/arch/arc/arc/p_dti_tyne.c:1.16 Mon Dec 3 15:33:14 2007 +++ src/sys/arch/arc/arc/p_dti_tyne.c Fri Nov 12 16:09:57 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: p_dti_tyne.c,v 1.16 2007/12/03 15:33:14 ad Exp $ */ +/* $NetBSD: p_dti_tyne.c,v 1.17 2010/11/12 16:09:57 uebayasi Exp $ */ /* $OpenBSD: machdep.c,v 1.36 1999/05/22 21:22:19 weingart Exp $ */ /* @@ -76,12 +76,12 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: p_dti_tyne.c,v 1.16 2007/12/03 15:33:14 ad Exp $); +__KERNEL_RCSID(0, $NetBSD: p_dti_tyne.c,v 1.17 2010/11/12 16:09:57 uebayasi Exp $); #include sys/param.h #include sys/systm.h #include sys/device.h -#include uvm/uvm_extern.h +#include uvm/uvm.h #include machine/autoconf.h #include machine/bus.h Index: src/sys/arch/arc/arc/p_sni_rm200pci.c diff -u src/sys/arch/arc/arc/p_sni_rm200pci.c:1.12 src/sys/arch/arc/arc/p_sni_rm200pci.c:1.13 --- src/sys/arch/arc/arc/p_sni_rm200pci.c:1.12 Mon Dec 3 15:33:14 2007 +++ src/sys/arch/arc/arc/p_sni_rm200pci.c Fri Nov 12 16:09:57 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: p_sni_rm200pci.c,v 1.12 2007/12/03 15:33:14 ad Exp $ */ +/* $NetBSD: p_sni_rm200pci.c,v 1.13 2010/11/12 16:09:57 uebayasi Exp $ */ /* $OpenBSD: machdep.c,v 1.36 1999/05/22 21:22:19 weingart Exp $ */ /* @@ -76,12 +76,12 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: p_sni_rm200pci.c,v 1.12 2007/12/03 15:33:14 ad Exp $); +__KERNEL_RCSID(0, $NetBSD: p_sni_rm200pci.c,v 1.13 2010/11/12 16:09:57 uebayasi Exp $); #include sys/param.h #include sys/systm.h #include sys/device.h -#include uvm/uvm_extern.h +#include uvm/uvm.h #include machine/autoconf.h #include machine/bus.h