Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ycai
simbricks
Commits
b32403b2
Commit
b32403b2
authored
Jun 14, 2020
by
Jialin Li
Browse files
checkpoint
parent
3420d3cb
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
85 deletions
+28
-85
corundum_bm/Makefile
corundum_bm/Makefile
+4
-0
corundum_bm/corundum_bm.cc
corundum_bm/corundum_bm.cc
+12
-54
corundum_bm/corundum_bm.h
corundum_bm/corundum_bm.h
+12
-31
No files found.
corundum_bm/Makefile
View file @
b32403b2
...
@@ -3,7 +3,11 @@ CFLAGS += -Wall -Wextra -Wno-unused-parameter -O3
...
@@ -3,7 +3,11 @@ CFLAGS += -Wall -Wextra -Wno-unused-parameter -O3
all
:
corundum_bm tester
all
:
corundum_bm tester
corundum.o
:
corundum.cc
g++
$(CFLAGS)
$(CPPFLAGS)
-c
-o
$@
$<
corundum_bm
:
corundum_bm.o ../nicsim_common/libnicsim_common.a
corundum_bm
:
corundum_bm.o ../nicsim_common/libnicsim_common.a
g++
$^
-o
$@
-lm
-lstdc
++
tester
:
tester.o ../nicsim_common/libnicsim_common.a
tester
:
tester.o ../nicsim_common/libnicsim_common.a
...
...
corundum_bm/corundum_bm.c
→
corundum_bm/corundum_bm.c
c
View file @
b32403b2
...
@@ -6,10 +6,20 @@
...
@@ -6,10 +6,20 @@
#include <signal.h>
#include <signal.h>
#include <corundum_bm.h>
#include <corundum_bm.h>
#include <nicsim.h>
extern
"C"
{
#include <nicsim.h>
}
Corundum
::
Corundum
()
{
}
Corundum
::~
Corundum
()
{
}
static
volatile
int
exiting
=
0
;
static
volatile
int
exiting
=
0
;
static
struct
CorundumRegs
regs
;
static
void
sigint_handler
(
int
dummy
)
static
void
sigint_handler
(
int
dummy
)
{
{
...
@@ -73,58 +83,6 @@ static void h2d_read(volatile struct cosim_pcie_proto_h2d_read *read)
...
@@ -73,58 +83,6 @@ static void h2d_read(volatile struct cosim_pcie_proto_h2d_read *read)
uint64_t
val
=
csr_read
(
read
->
offset
);
uint64_t
val
=
csr_read
(
read
->
offset
);
read_complete
(
read
->
req_id
,
&
val
,
read
->
len
);
read_complete
(
read
->
req_id
,
&
val
,
read
->
len
);
}
else
{
}
else
{
switch
(
read
->
offset
-
0x80000
)
{
case
REG_A
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_a
,
read
->
len
);
break
;
case
REG_B
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_b
,
read
->
len
);
break
;
case
REG_C
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_c
,
read
->
len
);
break
;
case
REG_D
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_d
,
read
->
len
);
break
;
case
REG_E
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_e
,
read
->
len
);
break
;
case
REG_F
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_f
,
read
->
len
);
break
;
case
REG_G
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_g
,
read
->
len
);
break
;
case
REG_H
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_h
,
read
->
len
);
break
;
case
REG_I
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_i
,
read
->
len
);
break
;
case
REG_J
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_j
,
read
->
len
);
break
;
case
REG_K
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_k
,
read
->
len
);
break
;
case
REG_L
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_l
,
read
->
len
);
break
;
case
REG_M
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_m
,
read
->
len
);
break
;
case
REG_N
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_n
,
read
->
len
);
break
;
case
REG_O
:
read_complete
(
read
->
req_id
,
&
regs
.
reg_o
,
read
->
len
);
break
;
default:
fprintf
(
stderr
,
"unimplemented read at off=0x%lx len=%u
\n
"
,
read
->
offset
,
read
->
len
);
uint64_t
val
=
0
;
read_complete
(
read
->
req_id
,
&
val
,
read
->
len
);
break
;
}
}
}
}
}
...
...
corundum_bm/corundum_bm.h
View file @
b32403b2
...
@@ -2,36 +2,17 @@
...
@@ -2,36 +2,17 @@
#include <stdint.h>
#include <stdint.h>
#define REG_A 0x0
typedef
uint32_t
reg_t
;
#define REG_B 0x4
typedef
uint64_t
addr_t
;
#define REG_C 0x10
#define REG_D 0x14
class
Corundum
{
#define REG_E 0x20
public:
#define REG_F 0x24
Corundum
();
#define REG_G 0x28
~
Corundum
();
#define REG_H 0x2c
#define REG_I 0x30
reg_t
readReg
(
addr_t
addr
);
#define REG_J 0x34
void
writeReg
(
addr_t
addr
,
reg_t
val
);
#define REG_K 0x38
#define REG_L 0x3c
private:
#define REG_M 0x40
#define REG_N 0x44
#define REG_O 0x48
struct
CorundumRegs
{
uint32_t
reg_a
;
uint32_t
reg_b
;
uint32_t
reg_c
;
uint32_t
reg_d
;
uint32_t
reg_e
;
uint32_t
reg_f
;
uint32_t
reg_g
;
uint32_t
reg_h
;
uint32_t
reg_i
;
uint32_t
reg_j
;
uint32_t
reg_k
;
uint32_t
reg_l
;
uint32_t
reg_m
;
uint32_t
reg_n
;
uint32_t
reg_o
;
};
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment