/* This demonstrates how to setup a Debugger '*.ini' file to interface with the
 * C-code using the JTEST test framework.
 */

//_WDWORD(0x4001F000, 0x00000001);                    /* Remap on */

LOAD %L INCREMENTAL


RESET                                               /* Reset the target processor */
LOG OFF                                             /* Turn off Logging by default. */
BK *                                                /* Remove existing breakpoints. */

INCLUDE ../../Common/JTest/jtest_fns.ini            /* Load the JTEST helper functions */
INCLUDE ../../Common/JTest/jtest_log_FVP.ini        /* Include specified log file */

/* Break on special members of the JTEST framework.  The framework's
   name is defined in jtest_fw.h by the #DEFINE JTEST_FW. */
BS test_start  , 1, "test_start_msg();"
BS test_end    , 1, "test_end_msg();"
BS group_start , 1, "group_start_msg();"
BS group_end   , 1, "group_end_msg();"
BS dump_str    , 1, "dump_str_fn();"
//BS dump_data   , 1, "dump_data_fn();"
BS exit_fw     , 1, "break_fn(); debug_clean_fn(); log_off_fn();"

debug_setup_finished_msg()      /* Output a message to let the output
                                   parser know that setup has
                                   finished. */

G                                                   /* Start the Tests */
