Module Name: src
Committed By: matt
Date: Wed Dec 29 00:39:40 UTC 2010
Modified Files:
src/sys/arch/mips/include [matt-nb5-mips64]: locore.h
src/sys/arch/mips/mips [matt-nb5-mips64]: locore_mips1.S mipsX_subr.S
mips_machdep.c vm_machdep.c
Log Message:
Janitorial work.
Move emulation prototypes here and get rid of StudLyCaps.
Remove kludgery for lwp/setfunc trampoline and just grab them of the damn
structure.
Make mips_locore_jumpvec contain the routines that don't get reassigned
and move wbflush to mips_locoresw since it does get overridden.
To generate a diff of this commit:
cvs rdiff -u -r1.78.36.1.2.26 -r1.78.36.1.2.27 \
src/sys/arch/mips/include/locore.h
cvs rdiff -u -r1.64.26.1.2.10 -r1.64.26.1.2.11 \
src/sys/arch/mips/mips/locore_mips1.S
cvs rdiff -u -r1.26.36.1.2.37 -r1.26.36.1.2.38 \
src/sys/arch/mips/mips/mipsX_subr.S
cvs rdiff -u -r1.205.4.1.2.1.2.50 -r1.205.4.1.2.1.2.51 \
src/sys/arch/mips/mips/mips_machdep.c
cvs rdiff -u -r1.121.6.1.2.17 -r1.121.6.1.2.18 \
src/sys/arch/mips/mips/vm_machdep.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/mips/include/locore.h
diff -u src/sys/arch/mips/include/locore.h:1.78.36.1.2.26 src/sys/arch/mips/include/locore.h:1.78.36.1.2.27
--- src/sys/arch/mips/include/locore.h:1.78.36.1.2.26 Wed Dec 22 06:13:36 2010
+++ src/sys/arch/mips/include/locore.h Wed Dec 29 00:39:39 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.h,v 1.78.36.1.2.26 2010/12/22 06:13:36 matt Exp $ */
+/* $NetBSD: locore.h,v 1.78.36.1.2.27 2010/12/29 00:39:39 matt Exp $ */
/*
* This file should not be included by MI code!!!
@@ -36,6 +36,53 @@
#include <mips/reg.h>
struct tlbmask;
+struct trapframe;
+
+void trap(uint32_t, uint32_t, vaddr_t, vaddr_t, struct trapframe *);
+void ast(void);
+
+void mips_fpu_trap(vaddr_t, struct trapframe *);
+void mips_fpu_intr(vaddr_t, struct trapframe *);
+
+vaddr_t mips_emul_branch(struct trapframe *, vaddr_t, uint32_t, bool);
+void mips_emul_inst(uint32_t, uint32_t, vaddr_t, struct trapframe *);
+
+void mips_emul_fp(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_branchdelayslot(uint32_t, struct trapframe *, uint32_t);
+
+void mips_emul_lwc0(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_swc0(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_special(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_special3(uint32_t, struct trapframe *, uint32_t);
+
+void mips_emul_lwc1(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_swc1(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_ldc1(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_sdc1(uint32_t, struct trapframe *, uint32_t);
+
+void mips_emul_lb(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_lbu(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_lh(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_lhu(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_lw(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_lwl(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_lwr(uint32_t, struct trapframe *, uint32_t);
+#if defined(__mips_n32) || defined(__mips_n64) || defined(__mips_o64)
+void mips_emul_lwu(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_ld(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_ldl(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_ldr(uint32_t, struct trapframe *, uint32_t);
+#endif
+void mips_emul_sb(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_sh(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_sw(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_swl(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_swr(uint32_t, struct trapframe *, uint32_t);
+#if defined(__mips_n32) || defined(__mips_n64) || defined(__mips_o64)
+void mips_emul_sd(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_sdl(uint32_t, struct trapframe *, uint32_t);
+void mips_emul_sdr(uint32_t, struct trapframe *, uint32_t);
+#endif
uint32_t mips_cp0_cause_read(void);
void mips_cp0_cause_write(uint32_t);
@@ -78,40 +125,31 @@
int tlb_update(vaddr_t, uint32_t);
void tlb_enter(size_t, vaddr_t, uint32_t);
void tlb_read_indexed(size_t, struct tlbmask *);
+void tlb_write_indexed(size_t, const struct tlbmask *);
void wbflush(void);
#ifdef MIPS1
void mips1_tlb_invalidate_all(void);
-void mips1_lwp_trampoline(void);
-void mips1_setfunc_trampoline(void);
uint32_t tx3900_cp0_config_read(void);
#endif
#if defined(MIPS3) || defined(MIPS4)
void mips3_tlb_invalidate_all(void);
-void mips3_lwp_trampoline(void);
-void mips3_setfunc_trampoline(void);
void mips3_pagezero(void *dst);
#ifdef MIPS3_5900
void mips5900_tlb_invalidate_all(void);
-void mips5900_lwp_trampoline(void);
-void mips5900_setfunc_trampoline(void);
void mips5900_pagezero(void *dst);
#endif
#endif /* MIPS3 || MIPS4 */
#ifdef MIPS32
void mips32_tlb_invalidate_all(void);
-void mips32_lwp_trampoline(void);
-void mips32_setfunc_trampoline(void);
#endif
#ifdef MIPS64
void mips64_tlb_invalidate_all(void);
-void mips64_lwp_trampoline(void);
-void mips64_setfunc_trampoline(void);
void mips64_pagezero(void *dst);
#endif
@@ -291,6 +329,9 @@
* locore function, and macros which jump through it.
*/
typedef struct {
+ void (*ljv_cpu_switch_resume)(struct lwp *);
+ intptr_t ljv_lwp_trampoline;
+ intptr_t ljv_setfunc_trampoline;
void (*ljv_tlb_set_asid)(uint32_t pid);
void (*ljv_tlb_invalidate_asids)(uint32_t, uint32_t);
void (*ljv_tlb_invalidate_addr)(vaddr_t);
@@ -300,7 +341,7 @@
int (*ljv_tlb_update)(vaddr_t, uint32_t);
void (*ljv_tlb_enter)(size_t, vaddr_t, uint32_t);
void (*ljv_tlb_read_indexed)(size_t, struct tlbmask *);
- void (*ljv_wbflush)(void);
+ void (*ljv_tlb_write_indexed)(size_t, const struct tlbmask *);
} mips_locore_jumpvec_t;
void mips_set_wbflush(void (*)(void));
@@ -310,10 +351,8 @@
void logstacktrace(void);
struct locoresw {
- void (*lsw_cpu_switch_resume)(struct lwp *);
- uintptr_t lsw_lwp_trampoline;
+ void (*lsw_wbflush)(void);
void (*lsw_cpu_idle)(void);
- uintptr_t lsw_setfunc_trampoline;
int (*lsw_send_ipi)(struct cpu_info *, int);
void (*lsw_cpu_offline_md)(void);
void (*lsw_cpu_init)(struct cpu_info *);
@@ -331,31 +370,9 @@
*/
extern mips_locore_jumpvec_t mips_locore_jumpvec;
extern struct locoresw mips_locoresw;
+struct lwpsw;
extern void mips_vector_init(const struct splsw *);
-#if defined(MIPS1) && !defined(MIPS3) && !defined(MIPS32) && !defined(MIPS64)
-#define lwp_trampoline mips1_lwp_trampoline
-#define setfunc_trampoline mips1_setfunc_trampoline
-#elif !defined(MIPS1) && defined(MIPS3) && !defined(MIPS32) && !defined(MIPS64) && !defined(MIPS3_5900)
-#define lwp_trampoline mips3_lwp_trampoline
-#define setfunc_trampoline mips3_setfunc_trampoline
-#elif !defined(MIPS1) && !defined(MIPS3) && defined(MIPS32) && !defined(MIPS64)
-#define lwp_trampoline mips32_lwp_trampoline
-#define setfunc_trampoline mips32_setfunc_trampoline
-#elif !defined(MIPS1) && !defined(MIPS3) && !defined(MIPS32) && defined(MIPS64)
- /* all common with mips3 */
-#define lwp_trampoline mips64_lwp_trampoline
-#define setfunc_trampoline mips64_setfunc_trampoline
-#elif !defined(MIPS1) && defined(MIPS3) && !defined(MIPS32) && !defined(MIPS64) && defined(MIPS3_5900)
-#define lwp_trampoline mips5900_lwp_trampoline
-#define setfunc_trampoline mips5900_setfunc_trampoline
-#else
-#define lwp_trampoline mips_locoresw.lsw_lwp_trampoline
-#define setfunc_trampoline mips_locoresw.lsw_setfunc_trampoline
-#endif
-
-#define CPU_IDLE mips_locoresw.lsw_cpu_idle
-
/* cpu_switch_resume is called inside locore.S */
/*
Index: src/sys/arch/mips/mips/locore_mips1.S
diff -u src/sys/arch/mips/mips/locore_mips1.S:1.64.26.1.2.10 src/sys/arch/mips/mips/locore_mips1.S:1.64.26.1.2.11
--- src/sys/arch/mips/mips/locore_mips1.S:1.64.26.1.2.10 Fri Dec 24 07:21:12 2010
+++ src/sys/arch/mips/mips/locore_mips1.S Wed Dec 29 00:39:39 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: locore_mips1.S,v 1.64.26.1.2.10 2010/12/24 07:21:12 matt Exp $ */
+/* $NetBSD: locore_mips1.S,v 1.64.26.1.2.11 2010/12/29 00:39:39 matt Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -1636,96 +1636,97 @@
.globl _C_LABEL(MIPSX(locore_vec))
_C_LABEL(MIPSX(locore_vec)):
- .word _C_LABEL(MIPSX(tlb_set_asid))
- .word _C_LABEL(MIPSX(tlb_invalidate_asids))
- .word _C_LABEL(MIPSX(tlb_invalidate_addr))
- .word _C_LABEL(nullop)
- .word _C_LABEL(MIPSX(tlb_invalidate_all))
- .word _C_LABEL(MIPSX(tlb_record_asids))
- .word _C_LABEL(MIPSX(tlb_update))
- .word _C_LABEL(MIPSX(tlb_enter))
- .word _C_LABEL(MIPSX(tlb_read_indexed))
- .word _C_LABEL(MIPSX(wbflush))
+ PTR_WORD _C_LABEL(MIPSX(cpu_switch_resume))
+ PTR_WORD _C_LABEL(MIPSX(lwp_trampoline))
+ PTR_WORD _C_LABEL(MIPSX(setfunc_trampoline))
+ PTR_WORD _C_LABEL(MIPSX(tlb_set_asid))
+ PTR_WORD _C_LABEL(MIPSX(tlb_invalidate_asids))
+ PTR_WORD _C_LABEL(MIPSX(tlb_invalidate_addr))
+ PTR_WORD _C_LABEL(nullop) # tlb_invalidate_globals
+ PTR_WORD _C_LABEL(MIPSX(tlb_invalidate_all))
+ PTR_WORD _C_LABEL(MIPSX(tlb_record_asids))
+ PTR_WORD _C_LABEL(MIPSX(tlb_update))
+ PTR_WORD _C_LABEL(MIPSX(tlb_enter))
+ PTR_WORD _C_LABEL(MIPSX(tlb_read_indexed))
+ PTR_WORD _C_LABEL(nullop) # tlb_write_indexed
.globl _C_LABEL(MIPSX(locoresw))
_C_LABEL(MIPSX(locoresw)):
- .word _C_LABEL(MIPSX(cpu_switch_resume))
- .word _C_LABEL(MIPSX(lwp_trampoline))
- .word _C_LABEL(nullop) # idle
- .word _C_LABEL(MIPSX(setfunc_trampoline))
- .word _C_LABEL(nullop) # send ipi
- .word _C_LABEL(nullop) # cpu_offline_md
- .word _C_LABEL(nullop) # spare
- .word _C_LABEL(nullop) # spare
+ PTR_WORD _C_LABEL(MIPSX(wbflush)) # wbflush
+ PTR_WORD _C_LABEL(nullop) # idle
+ PTR_WORD _C_LABEL(nullop) # send ipi
+ PTR_WORD _C_LABEL(nullop) # cpu_offline_md
+ PTR_WORD _C_LABEL(nullop) # spare
+ PTR_WORD _C_LABEL(nullop) # spare
MIPSX(excpt_sw):
####
#### The kernel exception handlers.
####
- .word _C_LABEL(MIPSX(kern_intr)) # 0 external interrupt
- .word _C_LABEL(MIPSX(kern_gen_exception))# 1 TLB modification
- .word _C_LABEL(MIPSX(kernel_tlb_miss)) # 2 TLB miss (LW/I-fetch)
- .word _C_LABEL(MIPSX(kernel_tlb_miss)) # 3 TLB miss (SW)
- .word _C_LABEL(MIPSX(kern_gen_exception))# 4 address error (LW/I-fetch)
- .word _C_LABEL(MIPSX(kern_gen_exception))# 5 address error (SW)
- .word _C_LABEL(MIPSX(kern_gen_exception))# 6 bus error (I-fetch)
- .word _C_LABEL(MIPSX(kern_gen_exception))# 7 bus error (load or store)
- .word _C_LABEL(MIPSX(kern_gen_exception))# 8 system call
- .word _C_LABEL(MIPSX(kern_gen_exception))# 9 breakpoint
- .word _C_LABEL(MIPSX(kern_gen_exception))# 10 reserved instruction
- .word _C_LABEL(MIPSX(kern_gen_exception))# 11 coprocessor unusable
- .word _C_LABEL(MIPSX(kern_gen_exception))# 12 arithmetic overflow
- .word _C_LABEL(MIPSX(kern_gen_exception))# 13 r3k reserved
- .word _C_LABEL(MIPSX(kern_gen_exception))# 14 r3k reserved
- .word _C_LABEL(MIPSX(kern_gen_exception))# 15 r3k reserved
- .word _C_LABEL(MIPSX(kern_gen_exception))# 16 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 17 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 18 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 19 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 20 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 21 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 22 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 23 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 24 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 25 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 26 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 27 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 28 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 29 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 30 never happens w/ MIPS1
- .word _C_LABEL(MIPSX(kern_gen_exception))# 31 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_intr)) # 0 external interrupt
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 1 TLB modification
+ PTR_WORD _C_LABEL(MIPSX(kernel_tlb_miss)) # 2 TLB miss (LW/I-fetch)
+ PTR_WORD _C_LABEL(MIPSX(kernel_tlb_miss)) # 3 TLB miss (SW)
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 4 address error (LW/I-fetch)
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 5 address error (SW)
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 6 bus error (I-fetch)
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 7 bus error (load or store)
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 8 system call
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 9 breakpoint
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 10 reserved instruction
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 11 coprocessor unusable
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 12 arithmetic overflow
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 13 r3k reserved
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 14 r3k reserved
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 15 r3k reserved
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 16 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 17 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 18 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 19 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 20 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 21 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 22 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 23 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 24 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 25 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 26 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 27 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 28 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 29 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 30 never happens w/ MIPS1
+ PTR_WORD _C_LABEL(MIPSX(kern_gen_exception))# 31 never happens w/ MIPS1
#####
##### The user exception handlers.
#####
- .word _C_LABEL(MIPSX(user_intr)) # 0
- .word _C_LABEL(MIPSX(user_gen_exception))# 1
- .word _C_LABEL(MIPSX(user_gen_exception))# 2
- .word _C_LABEL(MIPSX(user_gen_exception))# 3
- .word _C_LABEL(MIPSX(user_gen_exception))# 4
- .word _C_LABEL(MIPSX(user_gen_exception))# 5
- .word _C_LABEL(MIPSX(user_gen_exception))# 6
- .word _C_LABEL(MIPSX(user_gen_exception))# 7
- .word _C_LABEL(MIPSX(systemcall)) # 8
- .word _C_LABEL(MIPSX(user_gen_exception))# 9
- .word _C_LABEL(MIPSX(user_gen_exception))# 10
- .word _C_LABEL(MIPSX(user_gen_exception))# 11
- .word _C_LABEL(MIPSX(user_gen_exception))# 12
- .word _C_LABEL(MIPSX(user_gen_exception))# 13
- .word _C_LABEL(MIPSX(user_gen_exception))# 14
- .word _C_LABEL(MIPSX(user_gen_exception))# 15
- .word _C_LABEL(MIPSX(user_gen_exception))# 16
- .word _C_LABEL(MIPSX(user_gen_exception))# 17
- .word _C_LABEL(MIPSX(user_gen_exception))# 18
- .word _C_LABEL(MIPSX(user_gen_exception))# 19
- .word _C_LABEL(MIPSX(user_gen_exception))# 20
- .word _C_LABEL(MIPSX(user_gen_exception))# 21
- .word _C_LABEL(MIPSX(user_gen_exception))# 22
- .word _C_LABEL(MIPSX(user_gen_exception))# 23
- .word _C_LABEL(MIPSX(user_gen_exception))# 24
- .word _C_LABEL(MIPSX(user_gen_exception))# 25
- .word _C_LABEL(MIPSX(user_gen_exception))# 26
- .word _C_LABEL(MIPSX(user_gen_exception))# 27
- .word _C_LABEL(MIPSX(user_gen_exception))# 28
- .word _C_LABEL(MIPSX(user_gen_exception))# 29
- .word _C_LABEL(MIPSX(user_gen_exception))# 20
- .word _C_LABEL(MIPSX(user_gen_exception))# 31
+ PTR_WORD _C_LABEL(MIPSX(user_intr)) # 0
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 1
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 2
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 3
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 4
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 5
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 6
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 7
+ PTR_WORD _C_LABEL(MIPSX(systemcall)) # 8
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 9
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 10
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 11
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 12
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 13
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 14
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 15
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 16
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 17
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 18
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 19
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 20
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 21
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 22
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 23
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 24
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 25
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 26
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 27
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 28
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 29
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 20
+ PTR_WORD _C_LABEL(MIPSX(user_gen_exception))# 31
Index: src/sys/arch/mips/mips/mipsX_subr.S
diff -u src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.37 src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.38
--- src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.37 Fri Dec 24 07:21:12 2010
+++ src/sys/arch/mips/mips/mipsX_subr.S Wed Dec 29 00:39:39 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: mipsX_subr.S,v 1.26.36.1.2.37 2010/12/24 07:21:12 matt Exp $ */
+/* $NetBSD: mipsX_subr.S,v 1.26.36.1.2.38 2010/12/29 00:39:39 matt Exp $ */
/*
* Copyright 2002 Wasabi Systems, Inc.
@@ -2465,7 +2465,7 @@
#if defined(ENABLE_MIPS3_WIRED_MAP)
/*--------------------------------------------------------------------------
*
- * mipsN_TLBWriteIndexedVPS --
+ * mipsN_tlb_write_indexed --
*
* Write the given entry into the TLB at the given index.
* Pass full R4000 style TLB info including variable page size mask.
@@ -2480,7 +2480,7 @@
*
*--------------------------------------------------------------------------
*/
-LEAF(MIPSX(tlb_write_indexed_VPS))
+LEAF(MIPSX(tlb_write_indexed))
mfc0 v1, MIPS_COP_0_STATUS # Save the status register.
RESET_EXCEPTION_LEVEL_DISABLE_INTERRUPTS(v0)
COP0_SYNC
@@ -2521,7 +2521,7 @@
nop
j ra
mtc0 v1, MIPS_COP_0_STATUS # Restore the status register
-END(MIPSX(tlb_write_indexed_VPS))
+END(MIPSX(tlb_write_indexed))
#endif /* ENABLE_MIPS3_WIRED_MAP */
#if defined(MIPS3) && !defined(MIPS3_5900)
@@ -2642,6 +2642,9 @@
.globl _C_LABEL(MIPSX(locore_vec))
_C_LABEL(MIPSX(locore_vec)):
+ PTR_WORD _C_LABEL(MIPSX(cpu_switch_resume))
+ PTR_WORD _C_LABEL(MIPSX(lwp_trampoline))
+ PTR_WORD _C_LABEL(MIPSX(setfunc_trampoline))
PTR_WORD _C_LABEL(MIPSX(tlb_set_asid))
PTR_WORD _C_LABEL(MIPSX(tlb_invalidate_asids))
PTR_WORD _C_LABEL(MIPSX(tlb_invalidate_addr))
@@ -2651,14 +2654,16 @@
PTR_WORD _C_LABEL(MIPSX(tlb_update))
PTR_WORD _C_LABEL(MIPSX(tlb_enter))
PTR_WORD _C_LABEL(MIPSX(tlb_read_indexed))
- PTR_WORD _C_LABEL(MIPSX(wbflush))
+#if defined(ENABLE_MIPS3_WIRED_MAP)
+ PTR_WORD _C_LABEL(MIPSX(tlb_write_indexed))
+#else
+ PTR_WORD _C_LABEL(nullop)
+#endif
.globl _C_LABEL(MIPSX(locoresw))
_C_LABEL(MIPSX(locoresw)):
- PTR_WORD _C_LABEL(MIPSX(cpu_switch_resume))
- PTR_WORD _C_LABEL(MIPSX(lwp_trampoline))
+ PTR_WORD _C_LABEL(MIPSX(wbflush)) # wbflush
PTR_WORD _C_LABEL(nullop) # cpu_idle
- PTR_WORD _C_LABEL(MIPSX(setfunc_trampoline))
PTR_WORD _C_LABEL(nullop) # send ipi
PTR_WORD _C_LABEL(nullop) # cpu_offline_md
PTR_WORD _C_LABEL(nullop) # cpu_init_md
Index: src/sys/arch/mips/mips/mips_machdep.c
diff -u src/sys/arch/mips/mips/mips_machdep.c:1.205.4.1.2.1.2.50 src/sys/arch/mips/mips/mips_machdep.c:1.205.4.1.2.1.2.51
--- src/sys/arch/mips/mips/mips_machdep.c:1.205.4.1.2.1.2.50 Fri Dec 24 07:21:12 2010
+++ src/sys/arch/mips/mips/mips_machdep.c Wed Dec 29 00:39:40 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: mips_machdep.c,v 1.205.4.1.2.1.2.50 2010/12/24 07:21:12 matt Exp $ */
+/* $NetBSD: mips_machdep.c,v 1.205.4.1.2.1.2.51 2010/12/29 00:39:40 matt Exp $ */
/*
* Copyright 2002 Wasabi Systems, Inc.
@@ -112,7 +112,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: mips_machdep.c,v 1.205.4.1.2.1.2.50 2010/12/24 07:21:12 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mips_machdep.c,v 1.205.4.1.2.1.2.51 2010/12/29 00:39:40 matt Exp $");
#define __INTR_PRIVATE
@@ -1028,8 +1028,7 @@
void
mips_set_wbflush(void (*flush_fn)(void))
{
-#undef wbflush
- mips_locore_jumpvec.ljv_wbflush = flush_fn;
+ mips_locoresw.lsw_wbflush = flush_fn;
(*flush_fn)();
}
Index: src/sys/arch/mips/mips/vm_machdep.c
diff -u src/sys/arch/mips/mips/vm_machdep.c:1.121.6.1.2.17 src/sys/arch/mips/mips/vm_machdep.c:1.121.6.1.2.18
--- src/sys/arch/mips/mips/vm_machdep.c:1.121.6.1.2.17 Wed Dec 22 05:57:13 2010
+++ src/sys/arch/mips/mips/vm_machdep.c Wed Dec 29 00:39:40 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: vm_machdep.c,v 1.121.6.1.2.17 2010/12/22 05:57:13 matt Exp $ */
+/* $NetBSD: vm_machdep.c,v 1.121.6.1.2.18 2010/12/29 00:39:40 matt Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -80,7 +80,7 @@
#include "opt_coredump.h"
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.121.6.1.2.17 2010/12/22 05:57:13 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.121.6.1.2.18 2010/12/29 00:39:40 matt Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -177,7 +177,8 @@
pcb->pcb_context.val[_L_S1] = (intptr_t)arg; /* S1 */
pcb->pcb_context.val[MIPS_CURLWP_LABEL] = (intptr_t)l2; /* T8 */
pcb->pcb_context.val[_L_SP] = (intptr_t)tf; /* SP */
- pcb->pcb_context.val[_L_RA] = (intptr_t)lwp_trampoline; /* RA */
+ pcb->pcb_context.val[_L_RA] =
+ mips_locore_jumpvec.ljv_lwp_trampoline; /* RA */
#ifdef _LP64
KASSERT(pcb->pcb_context.val[_L_SR] & MIPS_SR_KX);
#endif
@@ -200,7 +201,8 @@
pcb->pcb_context.val[_L_S1] = (intptr_t)arg; /* S1 */
pcb->pcb_context.val[MIPS_CURLWP_LABEL] = (intptr_t)l; /* T8 */
pcb->pcb_context.val[_L_SP] = (intptr_t)tf; /* SP */
- pcb->pcb_context.val[_L_RA] = (intptr_t)setfunc_trampoline; /* RA */
+ pcb->pcb_context.val[_L_RA] =
+ mips_locore_jumpvec.ljv_setfunc_trampoline; /* RA */
#ifdef _LP64
KASSERT(pcb->pcb_context.val[_L_SR] & MIPS_SR_KX);
#endif