projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git://git.denx.de/u-boot-x86
[oweals/u-boot.git]
/
common
/
cmd_itest.c
diff --git
a/common/cmd_itest.c
b/common/cmd_itest.c
index 76af62b46ee274841a65c0eb8f040d75aa2ad02b..91ae5c2704c882be8d4457d67d5f8488b19d2f1c 100644
(file)
--- a/
common/cmd_itest.c
+++ b/
common/cmd_itest.c
@@
-15,6
+15,9
@@
#include <common.h>
#include <config.h>
#include <command.h>
#include <common.h>
#include <config.h>
#include <command.h>
+#include <mapmem.h>
+
+#include <asm/io.h>
#define EQ 0
#define NE 1
#define EQ 0
#define NE 1
@@
-49,16
+52,30
@@
static const op_tbl_t op_table [] = {
static long evalexp(char *s, int w)
{
long l = 0;
static long evalexp(char *s, int w)
{
long l = 0;
- long *p;
+ unsigned long addr;
+ void *buf;
/* if the parameter starts with a * then assume is a pointer to the value we want */
if (s[0] == '*') {
/* if the parameter starts with a * then assume is a pointer to the value we want */
if (s[0] == '*') {
- p = (long *)simple_strtoul(&s[1], NULL, 16);
+ addr = simple_strtoul(&s[1], NULL, 16);
+ buf = map_physmem(addr, w, MAP_WRBACK);
+ if (!buf) {
+ puts("Failed to map physical memory\n");
+ return 0;
+ }
switch (w) {
switch (w) {
- case 1: return((long)(*(unsigned char *)p));
- case 2: return((long)(*(unsigned short *)p));
- case 4: return(*p);
+ case 1:
+ l = (long)(*(unsigned char *)buf);
+ break;
+ case 2:
+ l = (long)(*(unsigned short *)buf);
+ break;
+ case 4:
+ l = (long)(*(unsigned long *)buf);
+ break;
}
}
+ unmap_physmem(buf, w);
+ return l;
} else {
l = simple_strtoul(s, NULL, 16);
}
} else {
l = simple_strtoul(s, NULL, 16);
}