blob: eb7d3e9497b3b4f98267a16e4a2c66e2c4c847ef [file] [log] [blame]
/* Target dependent code for ARC processor family, for GDB, the GNU debugger.
Copyright 2008, 2009 Free Software Foundation, Inc.
Contributed by ARC International (www.arc.com)
Authors:
Richard Stuckey <richard.stuckey@arc.com>
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/******************************************************************************/
/* */
/* Outline: */
/* This header file defines an initialization function for the arc_elf32 */
/* architecture, and various operations which are useful for the various */
/* arc-elf32 targets supported. */
/* */
/******************************************************************************/
#ifndef ARC_ELF32_TDEP_H
#define ARC_ELF32_TDEP_H
/* gdb header files */
#include "defs.h"
#include "gdbarch.h"
#include "target.h"
#include "breakpoint.h"
/* ARC header files */
#include "arc-registers.h"
#include "arc-architecture.h"
/* Complete the structure definition here. */
struct arc_variant_info
{
ARC_ProcessorVersion processor_version;
ARC_RegisterInfo registers;
};
typedef enum
{
REGISTER_IS_READ_ONLY,
ERROR_ON_READING_REGISTER,
ERROR_ON_WRITING_REGISTER
} RegisterError;
typedef void (*ProcessorControlFunction)(void);
struct gdbarch* arc_elf32_initialize (struct gdbarch *gdbarch,
struct gdbarch_list *arches);
void arc_check_pc_defined (struct gdbarch *gdbarch);
void arc_elf32_find_register_numbers (void);
void arc_elf32_load_program (char *filename, int from_tty);
void arc_elf32_create_inferior (char *exec_file,
char *args,
char **env,
struct target_ops *target_ops);
void arc_elf32_execute (struct target_waitstatus *status,
ProcessorControlFunction run_processor,
ProcessorControlFunction start_processor,
ProcessorControlFunction stop_processor);
void arc_elf32_close (Boolean resume);
void arc_elf32_fetch_registers (struct regcache *regcache, int gdb_regno);
void arc_elf32_store_registers (struct regcache *regcache, int gdb_regno);
int arc_elf32_insert_breakpoint (struct bp_target_info *bpt);
int arc_elf32_remove_breakpoint (struct bp_target_info *bpt);
LONGEST arc_elf32_xfer_partial (struct target_ops *ops,
enum target_object object,
const char *annex,
gdb_byte *readbuf,
const gdb_byte *writebuf,
ULONGEST offset,
LONGEST len);
void arc_elf32_core_warning (RegisterError error,
ARC_RegisterNumber hw_regno);
void arc_elf32_aux_warning (RegisterError error,
ARC_RegisterNumber hw_regno);
extern ARC_RegisterNumber arc_debug_regnum;
extern ARC_RegisterNumber arc_pc_regnum;
extern ARC_RegisterNumber arc_status32_regnum;
extern Boolean arc_program_is_loaded;
extern Boolean arc_target_is_connected;
#endif /* ARC_ELF32_TDEP_H */
/******************************************************************************/