亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? generic-stub.h

?? ecos下的gui開發源代碼
?? H
字號:
//========================================================================
//
//      generic-stub.h
//
//      Definitions for the generic GDB remote stub
//
//========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
// Copyright (C) 2003 Gary Thomas
//
// eCos 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 2 or (at your option) any later version.
//
// eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s):     Red Hat, nickg
// Contributors:  Red Hat, nickg, dmoseley
// Date:          1998-06-08
// Purpose:       
// Description:   Definitions for the generic GDB remote stub
// Usage:         This header is not to be included by user code, and is
//                only placed in a publically accessible directory so
//                that platform stub packages are able to include it
//                if required.
//
//####DESCRIPTIONEND####
//
//========================================================================


#ifndef GENERIC_STUB_H
#define GENERIC_STUB_H

#ifdef __cplusplus
extern "C" {
#endif

/* Three typedefs must be provided before including this file.
   target_register_t should correspond to the largest register value on
   this target processor.
   regnames_t corresponds to a type representing a register number. 
   uint32 must correspond to at least a 32-bit unsigned integer type
   (it may be larger). */

#ifndef ASM

#ifndef __ECOS__
#include "dbg-serial.h"
#endif // __ECOS__

struct gdb_packet
{
  /* The checksum calculated so far. */
  uint32 checksum;
  /* The checksum we've received from the remote side. */
  uint32 xmitcsum;
  /* Contents of the accumulated packet. */
  char *contents;
  /* Number of characters received. */
  uint32 length;
  /*
   * state is the current state:
   *  0 = looking for start of packet
   *  1 = got start of packet, looking for # terminator
   *  2 = looking for first byte of checksum
   *  3 = looking for second byte of checksum (indicating end of packet)
   */
  char state;
  char err;  // This is set if the packet should be tossed because of overflow
};

/* Return the currently-saved value corresponding to register REG. */
extern target_register_t get_register (regnames_t reg);

/* Write the contents of register WHICH into VALUE as raw bytes */
extern int get_register_as_bytes (regnames_t which, char *value);

#ifdef CYGHWR_REGISTER_VALIDITY_CHECKING
// Return the validity of register REG.
extern int get_register_valid (regnames_t reg);
#endif

/* Store VALUE in the register corresponding to WHICH. */
extern void put_register (regnames_t which, target_register_t value);

extern int put_register_as_bytes (regnames_t which, char *value);

/* Set the next instruction to be executed when the user program resumes
   execution to PC. */
#if !defined(SET_PC_PROTOTYPE_EXISTS) && !defined(set_pc)
#define SET_PC_PROTOTYPE_EXISTS
extern void set_pc (target_register_t pc);
#endif

/* Set the return value of the currently-pending syscall to VALUE. */
extern void set_syscall_value (target_register_t value);

/* Return the Nth argument to the currently-pending syscall (starting from
   0). */
extern target_register_t get_syscall_arg (int n);

/* Initialize the stub. This will also install any trap handlers needed by
   the stub. */
extern void initialize_stub (void);

/* Initialize the hardware. */
extern void initHardware (void);

/* Skip the current instruction. */
extern void __skipinst (void);

/* If the address in the PC register corresponds to the breakpoint()
   instruction, return a non-zero value. */
#ifndef __is_breakpoint_function
extern int __is_breakpoint_function (void);
#endif

/* Execute a breakpoint instruction. Restarting will cause the instruction
   to be skipped. */
#ifndef breakpoint
extern void breakpoint (void);
#endif

/* Return the syscall # corresponding to this system call. */
extern int __get_syscall_num (void);

/* Transfer exception event processing to the stub. */
extern void __switch_to_stub (void);

/* Send an exit packet containing the specified status. */
extern void __send_exit_status (int status);

/* Copy COUNT bytes of memory from ADDR to BUF.  
   ADDR is assumed to live in the user program's space. 
   Returns number of bytes successfully read 
   (caller must check to see if less than requested).  */
extern int __read_mem_safe (void *buf, 
                            void *addr, 
                            int count);

extern int __read_progmem_safe (void *buf, 
				void *addr, 
				int count);

/* Copy COUNT bytes of memory from BUF to ADDR. 
   ADDR is assumed to live in the user program's space. 
   Returns number of bytes successfully read 
   (caller must check to see if less than requested).  */
#ifndef __write_mem_safe
extern int __write_mem_safe (void *buf, 
                             void *addr, 
                             int count);
#endif

extern int __write_progmem_safe (void *buf, 
				 void *addr, 
				 int count);

/* Set to a non-zero value if a memory fault occurs while 
   __set_mem_fault_trap () is running. */
extern volatile int __mem_fault;

#ifndef __ECOS__
#if 1
#include "stub-tservice.h"  /* target dependent stub services */
#else
/* Flush the instruction cache. */
extern void flush_i_cache (void);

/* Flush the data cache. */
extern void __flush_d_cache (void);

typedef enum {
  CACHE_NOOP, CACHE_ENABLE, CACHE_DISABLE, CACHE_FLUSH
} cache_control_t;

/* Perform the specified operation on the instruction cache. 
   Returns 1 if the cache is enabled, 0 otherwise. */
extern int __instruction_cache (cache_control_t request);
/* Perform the specified operation on the data cache. 
   Returns 1 if the cache is enabled, 0 otherwise. */
extern int __data_cache (cache_control_t request);
#endif
#endif // __ECOS__

/* Write the 'T' packet in BUFFER. SIGVAL is the signal the program
   received. */
extern void __build_t_packet (int sigval, char *buffer);

/* Return 1 when a complete packet has been received, 0 if the packet
   is not yet complete, or -1 if an erroneous packet was NAKed. */
int __add_char_to_packet (unsigned character, struct gdb_packet *packet);

typedef int (*__PFI)(int);
typedef void (*__PFV)(void);

/* When an exception occurs, __process_exception_vec will be invoked with
   the signal number corresponding to the trap/exception. The function
   should return zero if it wishes execution to resume from the saved
   register values; a non-zero value indicates that the exception handler
   should be reinvoked. */
#if !defined(PROCESS_EXCEPTION_VEC_PROTOTYPE_EXISTS)
#define PROCESS_EXCEPTION_VEC_PROTOTYPE_EXISTS
extern volatile __PFI __process_exception_vec;
#endif

/* __process_exit_vec is invoked when a 'k' kill packet is received
   from GDB. */
extern volatile __PFV __process_exit_vec;

/* If SIGSYSCALL is defined, and such a signal value is returned from 
   __computeSignal (), the function pointed to by this vector will
   be invoked.

   If the return value is negative, the user program is assumed to
   have received the corresponding positive signal value, and an
   exception will be processed.  Otherwise, the user program is
   restarted from the next instruction. */
extern volatile __PFI __process_syscall_vec;

/* A continue packet was received from GDB with a signal value. The function
   pointed to by __process_signal_vec will be invoked with this signal
   value. 

   If a zero value is returned, we will ignore the signal, and proceed
   with the continue request. Otherwise, the program will be killed
   with the signal. */
extern volatile __PFI __process_signal_vec;

/* If non-NULL, __init_vec is called right before the user program is
   resumed. */
extern volatile __PFV __init_vec;
/* if non-NULL, __cleanup_vec is called after the user program takes
   an exception. */
extern volatile __PFV __cleanup_vec;

/* Send an 'O' packet to GDB containing STR. */
extern int __output_gdb_string (target_register_t addr, int string_len);

/* Request MAXLEN bytes of input from GDB to be stored in DEST. If BLOCK
   is set, GDB should block until MAXLEN bytes are available to be
   read; otherwise, it will return immediately with whatever data is
   available. 
   The return value is the number of bytes written into DEST. */
extern int __get_gdb_input (target_register_t dest, int maxlen, int block);

/* Return the ASCII equivalent of C (C>=0 && C<=15). The result will be 
   lower-case. */
extern char __tohex (int c);

/* Convert COUNT bytes of the memory region in MEM to a hexadecimal
   string in DEST.
   The resulting string will contain 2*COUNT characters.
   If MAY_FAULT is non-zero, memory faults are trapped; if a fault occurs,
   a NULL value will be returned.
   The value returned is one byte past the end of the string written. */
extern char *__mem2hex (char *mem, char *dest, int count, int may_fault);

/* Given a hexadecimal string in MEM, write the equivalent bytes to DEST.
   The string is assumed to contain 2*COUNT characters.
   If MAY_FAULT is non-zero, memory faults are trapped; if a fault occurs,
   a NULL value will be returned.
   Otherwise, the value returned is one byte past the last byte written. */
extern char *__hex2mem (char *buf, char *mem, int count, int may_fault);

#ifdef CYGSEM_ECOS_SUPPORTS_PROGRAM_ARGS
/* Set the program arguments passed into the user program's main */
extern void __set_program_args (int argc, char **argv);

/* Return the user program arguments passed in from GDB (via an 'A'
   packet). argcPtr is a pointer into the user program, which will hold
   the number of arguments; the strings are returned. */
extern char **__get_program_args (target_register_t argcPtr);
#endif

/* Encode PACKET as a remote protocol packet and send it to GDB; this takes
   care of sending the initial '$' character, as well as the trailing '#'
   and checksum, and also waits for an ACK from the remote side, resending
   as necessary. */
extern void __putpacket (char *packet);

/* Retrieve the next remote protocol packet from GDB, taking care of verifying
   the checksum and sending an ACK when necessary. */
extern void __getpacket (char *buffer);

/* Convert the hexadecimal string pointed to by *PTR into an integer,
   and store it in the value pointed to by INTVALUE. The number of
   characters read from *PTR will be returned; *PTR will point to the first
   non-hexadecmial character encountered. */
extern unsigned int __hexToInt (char **ptr, target_register_t *intValue);

/* Convert the value in INTVALUE into a string of hexadecimal
   characters stored in PTR. NUMBITS are the number of bits to use
   in INTVALUE. The number of characters written to PTR will be returned. */
extern unsigned int __intToHex (char *ptr, 
                                target_register_t intValue, 
                                int numBits);

/* Handle an exception, usually some sort of hardware or software trap.
   This is responsible for communicating the exception to GDB. */
extern void __handle_exception (void);

/* Send a 'X' packet with signal SIGVAL to GDB. */
extern void __kill_program (int sigval);

/* Given a packet pointed to by PACKETCONTENTS, decode it and respond to
   GDB appropriately. */
extern int __process_packet (char *packetContents);

/* Write the C-style string pointed to by STR to the GDB comm port.
   Used for printing debug messages. */
extern void __putDebugStr (char *str);

#if defined(NO_MALLOC) && !defined(MAX_BP_NUM)
#define MAX_BP_NUM 64 /* Maximum allowed # of breakpoints */
#endif

extern int hal_syscall_handler(void);
extern int __is_bsp_syscall(void);

extern void __install_breakpoint_list (void);
extern void __clear_breakpoint_list (void);
extern int __display_breakpoint_list (void (*print_func)(target_register_t));

/* 'Z' packet types */
#define ZTYPE_SW_BREAKPOINT        0
#define ZTYPE_HW_BREAKPOINT        1
#define ZTYPE_HW_WATCHPOINT_WRITE  2
#define ZTYPE_HW_WATCHPOINT_READ   3
#define ZTYPE_HW_WATCHPOINT_ACCESS 4

#endif /* ASM */

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* GENERIC_STUB_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲不卡av一区二区三区| 日韩精品成人一区二区三区| 欧美视频一区二| 国产suv一区二区三区88区| 首页国产欧美久久| 亚洲欧洲www| 久久先锋资源网| 欧美日韩国产欧美日美国产精品| 成人黄色777网| 激情五月激情综合网| 亚洲国产成人av网| 亚洲日本在线观看| 国产亚洲人成网站| 日韩精品一区二区三区视频 | 欧洲日韩一区二区三区| 粉嫩av一区二区三区在线播放| 日韩精品一卡二卡三卡四卡无卡| 一区二区三区在线不卡| 国产精品视频免费看| 久久色成人在线| 欧美一级欧美三级| 欧美一区二区在线免费观看| fc2成人免费人成在线观看播放 | 亚洲精品视频观看| 国产精品久久久久天堂| 久久精品人人做人人爽人人| 日韩欧美另类在线| 欧美一级国产精品| 91精品免费观看| 欧美精品vⅰdeose4hd| 欧美性猛片aaaaaaa做受| 一本到不卡免费一区二区| av中文字幕不卡| 成人av在线一区二区三区| 成人综合在线观看| 成人免费福利片| 波多野结衣在线aⅴ中文字幕不卡| 国内外精品视频| 国产大陆亚洲精品国产| 国产成人日日夜夜| 国产成人8x视频一区二区| 国产成人午夜99999| 丁香亚洲综合激情啪啪综合| 国产91精品一区二区麻豆网站| 国产精品综合一区二区| 国产一区二区不卡在线 | 91网站在线播放| proumb性欧美在线观看| 91香蕉视频污在线| 欧美日精品一区视频| 欧美日韩在线播放一区| 欧美丰满嫩嫩电影| 精品国偷自产国产一区| 精品国产91九色蝌蚪| 久久日韩粉嫩一区二区三区 | 亚洲三级久久久| 亚洲免费观看高清完整版在线观看 | 一区二区三区资源| 亚洲成av人影院在线观看网| 日本欧美大码aⅴ在线播放| 久久精品国产免费看久久精品| 国产又粗又猛又爽又黄91精品| 国产一区二区影院| 91影院在线免费观看| 色综合久久久久网| 91麻豆精品国产自产在线观看一区| 欧美一区二区国产| 精品国产乱码久久久久久免费| 国产午夜精品福利| 亚洲欧美成aⅴ人在线观看| 亚洲影院免费观看| 美女mm1313爽爽久久久蜜臀| 高清beeg欧美| 欧美日韩成人在线| 久久一区二区视频| 亚洲免费av网站| 奇米影视7777精品一区二区| 丁香啪啪综合成人亚洲小说 | 一本高清dvd不卡在线观看| 91精品国产91久久久久久最新毛片 | 国产日韩欧美一区二区三区综合| 中文字幕制服丝袜一区二区三区 | 成人av先锋影音| 欧美日韩免费观看一区二区三区| 欧美哺乳videos| 一区二区三区免费看视频| 久久99国内精品| 99国产精品久久久| 91精品国产麻豆国产自产在线 | 亚洲码国产岛国毛片在线| 日韩va欧美va亚洲va久久| 成人性视频网站| 91精品国产一区二区三区 | 亚洲免费av在线| 国产一区在线看| 欧美日韩一级二级| 国产日韩欧美精品综合| 亚洲r级在线视频| 成人精品鲁一区一区二区| 欧美日韩精品一区二区三区四区| 久久精品亚洲国产奇米99| 视频一区中文字幕| 91小宝寻花一区二区三区| 久久久www成人免费无遮挡大片| 亚洲va国产va欧美va观看| 色综合中文字幕国产| 亚洲精品一区二区三区影院| 亚洲一区二区三区视频在线| 成人av在线电影| 久久久不卡网国产精品一区| 美女视频免费一区| 欧美久久久影院| 一级中文字幕一区二区| jizz一区二区| 国产区在线观看成人精品| 极品美女销魂一区二区三区免费| 欧美日韩美女一区二区| 亚洲永久精品国产| 日本韩国一区二区三区视频| 中文字幕在线播放不卡一区| 国产成人8x视频一区二区| 精品国产网站在线观看| 日韩不卡在线观看日韩不卡视频| 欧美色大人视频| 亚洲一区二区三区四区在线| 91丨porny丨中文| 自拍偷拍亚洲激情| 波多野洁衣一区| 国产精品成人免费在线| 成人在线一区二区三区| 国产欧美日韩综合| 国产成人午夜99999| 国产女主播在线一区二区| 国产一区91精品张津瑜| 精品国产自在久精品国产| 久久精品国产一区二区三| 欧美大片在线观看| 极品美女销魂一区二区三区免费| 欧美电影免费观看高清完整版在线| 视频一区二区中文字幕| 欧美精选一区二区| 日本欧洲一区二区| 日韩三级视频中文字幕| 久久电影国产免费久久电影| 亚洲精品一区二区三区香蕉| 国产福利精品导航| 日韩毛片精品高清免费| 一本大道av伊人久久综合| 亚洲一区二区三区四区在线观看| 欧美午夜片在线看| 丝袜国产日韩另类美女| 欧美成人一级视频| 国产成人精品www牛牛影视| 国产精品久久毛片| 91亚洲精品久久久蜜桃| 亚洲综合丝袜美腿| 91精品国产综合久久精品| 极品少妇xxxx精品少妇| 欧美国产日韩精品免费观看| 91亚洲资源网| 日本va欧美va精品发布| 久久综合狠狠综合久久综合88| 97久久超碰国产精品| 天天亚洲美女在线视频| 国产色91在线| 色哟哟一区二区三区| 日韩二区三区四区| 国产午夜精品久久久久久免费视| av不卡免费在线观看| 五月婷婷色综合| 久久久久久久性| 色天天综合色天天久久| 奇米影视一区二区三区小说| 国产精品青草久久| 欧美精品久久久久久久久老牛影院| 国产精品一线二线三线| 亚洲美女免费在线| 久久亚洲一级片| 91啦中文在线观看| 麻豆精品视频在线| 中文字幕一区二区三中文字幕| 欧美丝袜丝交足nylons图片| 国内精品在线播放| 亚洲综合色区另类av| 国产亚洲欧美一区在线观看| 欧美亚洲图片小说| 国产福利91精品一区二区三区| 香蕉久久一区二区不卡无毒影院 | 亚洲超碰97人人做人人爱| 26uuu久久天堂性欧美| 色综合欧美在线| 国产高清不卡一区二区| 午夜精品福利视频网站| 欧美国产一区视频在线观看| 91精品国产一区二区三区蜜臀| 91丨九色porny丨蝌蚪| 国产精品资源在线看| 婷婷综合另类小说色区| 亚洲欧美另类图片小说| 久久免费的精品国产v∧|