From a15f64b6da518de85dfbf9f633ec9d04f8d76e76 Mon Sep 17 00:00:00 2001 From: Dale Rahn Date: Tue, 16 Sep 2008 04:20:43 +0000 Subject: SMP ddb support, with some feedback from kettenis. --- sys/arch/powerpc/include/cpu.h | 9 ++++++++- sys/arch/powerpc/include/db_machdep.h | 13 ++++++++++++- sys/arch/powerpc/include/intr.h | 7 ++++++- 3 files changed, 26 insertions(+), 3 deletions(-) (limited to 'sys/arch/powerpc/include') diff --git a/sys/arch/powerpc/include/cpu.h b/sys/arch/powerpc/include/cpu.h index 4a6d2ed2692..2553e3b0183 100644 --- a/sys/arch/powerpc/include/cpu.h +++ b/sys/arch/powerpc/include/cpu.h @@ -1,4 +1,4 @@ -/* $OpenBSD: cpu.h,v 1.38 2008/07/18 23:43:31 art Exp $ */ +/* $OpenBSD: cpu.h,v 1.39 2008/09/16 04:20:42 drahn Exp $ */ /* $NetBSD: cpu.h,v 1.1 1996/09/30 16:34:21 ws Exp $ */ /* @@ -73,6 +73,13 @@ struct cpu_info { volatile u_int64_t ci_nextstatevent; int ci_statspending; + volatile int ci_ddb_paused; +#define CI_DDB_RUNNING 0 +#define CI_DDB_SHOULDSTOP 1 +#define CI_DDB_STOPPED 2 +#define CI_DDB_ENTERDDB 3 +#define CI_DDB_INDDB 4 + u_long ci_randseed; }; diff --git a/sys/arch/powerpc/include/db_machdep.h b/sys/arch/powerpc/include/db_machdep.h index 241c7511fd6..af3a6400e7b 100644 --- a/sys/arch/powerpc/include/db_machdep.h +++ b/sys/arch/powerpc/include/db_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: db_machdep.h,v 1.21 2005/12/17 07:31:26 miod Exp $ */ +/* $OpenBSD: db_machdep.h,v 1.22 2008/09/16 04:20:42 drahn Exp $ */ /* $NetBSD: db_machdep.h,v 1.13 1996/04/29 20:50:08 leo Exp $ */ /* @@ -93,12 +93,23 @@ extern db_regs_t ddb_regs; /* register state */ #ifdef _KERNEL +int db_enter_ddb(void); +void db_startcpu(int); +void db_stopcpu(int); +void ppc_ipi_db(struct cpu_info *); + void kdb_kintr(void *); int kdb_trap(int, void *); void db_save_regs(struct trapframe *frame); void ddb_trap(void); db_expr_t db_dumpframe(u_int32_t pframe, int (*pr)(const char *, ...)); +extern struct mutex ddb_mp_mutex; + +#define DDB_STATE_NOT_RUNNING 0 +#define DDB_STATE_RUNNING 1 +#define DDB_STATE_EXITING 2 + #endif /* _KERNEL */ #endif /* _PPC_DB_MACHDEP_H_ */ diff --git a/sys/arch/powerpc/include/intr.h b/sys/arch/powerpc/include/intr.h index 3e2c206e9ef..f05d41e7189 100644 --- a/sys/arch/powerpc/include/intr.h +++ b/sys/arch/powerpc/include/intr.h @@ -1,4 +1,4 @@ -/* $OpenBSD: intr.h,v 1.34 2007/11/14 20:33:32 thib Exp $ */ +/* $OpenBSD: intr.h,v 1.35 2008/09/16 04:20:42 drahn Exp $ */ /* * Copyright (c) 1997 Per Fogelstrom, Opsycon AB and RTMX Inc, USA. @@ -124,5 +124,10 @@ extern int ppc_configed_intr_cnt; extern struct intrhand ppc_configed_intr[MAX_PRECONF_INTR]; void softnet(int isr); +#define PPC_IPI_NOP 0 +#define PPC_IPI_DDB 1 + +void ppc_send_ipi(struct cpu_info *, int); + #endif /* _LOCORE */ #endif /* _POWERPC_INTR_H_ */ -- cgit v1.2.3