]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_setexpr.c
sniper: Serial number support, obtained from die ID
[karo-tx-uboot.git] / common / cmd_setexpr.c
index 93cb255b22599311d5364987aaaa440953830083..e7194fc4f4137a1652250c0de047200aed75469c 100644 (file)
@@ -2,23 +2,7 @@
  * Copyright 2008 Freescale Semiconductor, Inc.
  * Copyright 2013 Wolfgang Denk <wd@denx.de>
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 /*
 #include <common.h>
 #include <config.h>
 #include <command.h>
+#include <mapmem.h>
 
 static ulong get_arg(char *s, int w)
 {
-       ulong *p;
-
        /*
-        * if the parameter starts with a '*' then assume
-        * it is a pointer to the value we want
+        * If the parameter starts with a '*' then assume it is a pointer to
+        * the value we want.
         */
-
        if (s[0] == '*') {
-               p = (ulong *)simple_strtoul(&s[1], NULL, 16);
+               ulong *p;
+               ulong addr;
+               ulong val;
+
+               addr = simple_strtoul(&s[1], NULL, 16);
                switch (w) {
-               case 1: return((ulong)(*(uchar *)p));
-               case 2: return((ulong)(*(ushort *)p));
+               case 1:
+                       p = map_sysmem(addr, sizeof(uchar));
+                       val = (ulong)*(uchar *)p;
+                       unmap_sysmem(p);
+                       return val;
+               case 2:
+                       p = map_sysmem(addr, sizeof(ushort));
+                       val = (ulong)*(ushort *)p;
+                       unmap_sysmem(p);
+                       return val;
                case 4:
-               default: return(*p);
+               default:
+                       p = map_sysmem(addr, sizeof(ulong));
+                       val = *p;
+                       unmap_sysmem(p);
+                       return val;
                }
        } else {
                return simple_strtoul(s, NULL, 16);