mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
1d506c26d9
This commit is the result of the following actions: - Running gdb/copyright.py to update all of the copyright headers to include 2024, - Manually updating a few files the copyright.py script told me to update, these files had copyright headers embedded within the file, - Regenerating gdbsupport/Makefile.in to refresh it's copyright date, - Using grep to find other files that still mentioned 2023. If these files were updated last year from 2022 to 2023 then I've updated them this year to 2024. I'm sure I've probably missed some dates. Feel free to fix them up as you spot them.
130 lines
3.1 KiB
C
130 lines
3.1 KiB
C
/* Hardware ports.
|
|
Copyright (C) 1998-2024 Free Software Foundation, Inc.
|
|
Contributed by Andrew Cagney and Cygnus Solutions.
|
|
|
|
This file is part of GDB, the GNU debugger.
|
|
|
|
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/>. */
|
|
|
|
|
|
#ifndef HW_PORTS_H
|
|
#define HW_PORTS_H
|
|
|
|
/* Initialize a port */
|
|
|
|
struct hw_port_descriptor
|
|
{
|
|
const char *name;
|
|
int number;
|
|
int nr_ports;
|
|
port_direction direction;
|
|
};
|
|
|
|
void set_hw_ports (struct hw *hw, const struct hw_port_descriptor ports[]);
|
|
|
|
typedef void (hw_port_event_method)
|
|
(struct hw *me,
|
|
int my_port,
|
|
struct hw *source,
|
|
int source_port,
|
|
int level);
|
|
|
|
void set_hw_port_event (struct hw *hw, hw_port_event_method *to_port_event);
|
|
|
|
|
|
/* Port source
|
|
|
|
A device drives its output ports using the call
|
|
|
|
*/
|
|
|
|
void hw_port_event
|
|
(struct hw *me,
|
|
int my_port,
|
|
int value);
|
|
|
|
/* This port event will then be propagated to any attached
|
|
destination ports.
|
|
|
|
Any interpretation of PORT and VALUE is model dependent. As a
|
|
guideline the following are recommended: PCI interrupts A-D should
|
|
correspond to ports 0-3; level sensitive interrupts be requested
|
|
with a value of one and withdrawn with a value of 0; edge sensitive
|
|
interrupts always have a value of 1, the event its self is treated
|
|
as the interrupt.
|
|
|
|
|
|
Port destinations
|
|
|
|
Attached to each port of a device can be zero or more
|
|
destinations. These destinations consist of a device/port pair.
|
|
A destination is attached/detached to a device line using the
|
|
attach and detach calls. */
|
|
|
|
void hw_port_attach
|
|
(struct hw *me,
|
|
int my_port,
|
|
struct hw *dest,
|
|
int dest_port,
|
|
object_disposition disposition);
|
|
|
|
void hw_port_detach
|
|
(struct hw *me,
|
|
int my_port,
|
|
struct hw *dest,
|
|
int dest_port);
|
|
|
|
|
|
/* Iterate over the list of ports attached to a device */
|
|
|
|
typedef void (hw_port_traverse_function)
|
|
(struct hw *me,
|
|
int my_port,
|
|
struct hw *dest,
|
|
int dest_port,
|
|
void *data);
|
|
|
|
void hw_port_traverse
|
|
(struct hw *me,
|
|
hw_port_traverse_function *handler,
|
|
void *data);
|
|
|
|
|
|
/* DESTINATION is attached (detached) to LINE of the device ME
|
|
|
|
|
|
Port conversion
|
|
|
|
Users refer to port numbers symbolically. For instance a device
|
|
may refer to its `INT' signal which is internally represented by
|
|
port 3.
|
|
|
|
To convert to/from the symbolic and internal representation of a
|
|
port name/number. The following functions are available. */
|
|
|
|
int hw_port_decode
|
|
(struct hw *me,
|
|
const char *symbolic_name,
|
|
port_direction direction);
|
|
|
|
int hw_port_encode
|
|
(struct hw *me,
|
|
int port_number,
|
|
char *buf,
|
|
int sizeof_buf,
|
|
port_direction direction);
|
|
|
|
|
|
#endif
|