⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hw_core.c

📁 这个是LINUX下的GDB调度工具的源码
💻 C
字号:
/*  This file is part of the program psim.        Copyright (C) 1994-1996, Andrew Cagney <cagney@highland.com.au>        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 2 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, write to the Free Software    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.        */#ifndef _HW_CORE_C_#define _HW_CORE_C_#include "device_table.h"#include "corefile.h"/* DEVICE      core - root of the device tree      DESCRIPTION      The core device positioned at the root of the device tree appears   to its child devices as a normal device just like every other   device in the tree.   Internally it is implemented using a core object.  Requests to   attach (or detach) address spaces are passed to that core object.   Requests to transfer (DMA) data are reflected back down the device   tree using the core_map data transfer methods.   PROPERTIES   None.   */static voidhw_core_init_address_callback(device *me){  core *memory = (core*)device_data(me);  core_init(memory);}static voidhw_core_attach_address_callback(device *me,				attach_type attach,				int space,				unsigned_word addr,				unsigned nr_bytes,				access_type access,				device *client) /*callback/default*/{  core *memory = (core*)device_data(me);  if (space != 0)    error("core_attach_address_callback() invalid address space\n");  core_attach(memory,	      attach,	      space,	      access,	      addr,	      nr_bytes,	      client);}static unsignedhw_core_dma_read_buffer_callback(device *me,				 void *dest,				 int space,				 unsigned_word addr,				 unsigned nr_bytes){  core *memory = (core*)device_data(me);  return core_map_read_buffer(core_readable(memory),			      dest,			      addr,			      nr_bytes);}static unsignedhw_core_dma_write_buffer_callback(device *me,				  const void *source,				  int space,				  unsigned_word addr,				  unsigned nr_bytes,				  int violate_read_only_section){  core *memory = (core*)device_data(me);  core_map *map = (violate_read_only_section		   ? core_readable(memory)		   : core_writeable(memory));  return core_map_write_buffer(map,			       source,			       addr,			       nr_bytes);}static device_callbacks const hw_core_callbacks = {  { hw_core_init_address_callback, },  { hw_core_attach_address_callback, },  { NULL, }, /* IO */  { hw_core_dma_read_buffer_callback,    hw_core_dma_write_buffer_callback, },  { NULL, }, /* interrupt */  { generic_device_unit_decode,    generic_device_unit_encode,    generic_device_address_to_attach_address,    generic_device_size_to_attach_size, },};static void *hw_core_create(const char *name,	       const device_unit *unit_address,	       const char *args){  core *memory = core_create();  return memory;}const device_descriptor hw_core_device_descriptor[] = {  { "core", hw_core_create, &hw_core_callbacks },  { NULL },};#endif /* _HW_CORE_C_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -