X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Ftarget%2Ftarget_type.h;h=7a8ac9c4a89a0f7752c347f7a284b20ced122127;hb=559d08c19ed838f7bb2a77ce56a5a274641111f8;hp=67041b31625a68e2a605d3e90ef09fedf2e99eed;hpb=df0e90ec8c728be50f1457ecc513d78de044f5a4;p=openocd.git diff --git a/src/target/target_type.h b/src/target/target_type.h index 67041b3162..7a8ac9c4a8 100644 --- a/src/target/target_type.h +++ b/src/target/target_type.h @@ -2,7 +2,7 @@ * Copyright (C) 2005 by Dominic Rath * * Dominic.Rath@gmx.de * * * - * Copyright (C) 2007,2008,2009 Øyvind Harboe * + * Copyright (C) 2007-2010 Øyvind Harboe * * oyvind.harboe@zylin.com * * * * Copyright (C) 2008 by Spencer Oliver * @@ -27,6 +27,7 @@ #define TARGET_TYPE_H #include +#include struct target; @@ -73,6 +74,17 @@ struct target_type * */ int (*assert_reset)(struct target *target); + /** + * The implementation is responsible for polling the + * target such that target->state reflects the + * state correctly. + * + * Otherwise the following would fail, as there will not + * be any "poll" invoked inbetween the "reset run" and + * "halt". + * + * reset run; halt + */ int (*deassert_reset)(struct target *target); int (*soft_reset_halt_imp)(struct target *target); int (*soft_reset_halt)(struct target *target); @@ -146,8 +158,6 @@ struct target_type */ int (*remove_watchpoint)(struct target *target, struct watchpoint *watchpoint); - /* target algorithm support */ - int (*run_algorithm_imp)(struct target *target, int num_mem_params, struct mem_param *mem_params, int num_reg_params, struct reg_param *reg_param, uint32_t entry_point, uint32_t exit_point, int timeout_ms, void *arch_info); /** * Target algorithm support. Do @b not call this method directly, * use target_run_algorithm() instead. @@ -213,6 +223,13 @@ struct target_type int (*mmu)(struct target *target, int *enabled); + /* after reset is complete, the target can check if things are properly set up. + * + * This can be used to check if e.g. DCC memory writes have been enabled for + * arm7/9 targets, which they really should except in the most contrived + * circumstances. + */ + int (*check_reset)(struct target *target); }; #endif // TARGET_TYPE_H