dev_zero.cc Source File
Back to the index.
src
devices
dev_zero.cc
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2004-2009 Anders Gavare. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
*
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
* 3. The name of the author may not be used to endorse or promote products
13
* derived from this software without specific prior written permission.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
* SUCH DAMAGE.
26
*
27
*
28
* COMMENT: A simple device which returns zero for reads, discards all writes
29
*/
30
31
#include <stdio.h>
32
#include <stdlib.h>
33
#include <string.h>
34
35
#include "
device.h
"
36
#include "
machine.h
"
37
#include "
memory.h
"
38
#include "
misc.h
"
39
40
41
DEVICE_ACCESS
(zero)
42
{
43
if
(writeflag ==
MEM_READ
) {
44
size_t
i;
45
for
(i=0; i<len; i++)
46
data
[i] = 0;
47
}
48
49
return
1;
50
}
51
52
53
DEVINIT
(zero)
54
{
55
memory_device_register
(
devinit
->
machine
->
memory
,
56
devinit
->
name
,
devinit
->
addr
,
devinit
->
len
,
57
dev_zero_access, NULL,
DM_DEFAULT
, NULL);
58
59
return
1;
60
}
61
DM_DEFAULT
#define DM_DEFAULT
Definition:
memory.h:130
devinit::len
uint64_t len
Definition:
device.h:48
memory.h
misc.h
devinit::name
char * name
Definition:
device.h:43
MEM_READ
#define MEM_READ
Definition:
memory.h:116
machine::memory
struct memory * memory
Definition:
machine.h:126
data
u_short data
Definition:
siireg.h:79
DEVICE_ACCESS
DEVICE_ACCESS(zero)
Definition:
dev_zero.cc:41
devinit
Definition:
device.h:40
DEVINIT
DEVINIT(zero)
Definition:
dev_zero.cc:53
devinit::machine
struct machine * machine
Definition:
device.h:41
memory_device_register
void memory_device_register(struct memory *mem, const char *, uint64_t baseaddr, uint64_t len, int(*f)(struct cpu *, struct memory *, uint64_t, unsigned char *, size_t, int, void *), void *extra, int flags, unsigned char *dyntrans_data)
Definition:
memory.cc:339
device.h
devinit::addr
uint64_t addr
Definition:
device.h:46
machine.h
Generated on Fri Dec 7 2018 19:52:23 for GXemul by
1.8.13