[coreboot] r3613 - trunk/util/nvramtool

svn at coreboot.org svn at coreboot.org
Sat Sep 27 12:08:28 CEST 2008


Author: stepan
Date: 2008-09-27 12:08:28 +0200 (Sat, 27 Sep 2008)
New Revision: 3613

Modified:
   trunk/util/nvramtool/ChangeLog
   trunk/util/nvramtool/DISCLAIMER
   trunk/util/nvramtool/Makefile
   trunk/util/nvramtool/README
   trunk/util/nvramtool/cmos_lowlevel.c
   trunk/util/nvramtool/cmos_lowlevel.h
   trunk/util/nvramtool/cmos_ops.c
   trunk/util/nvramtool/cmos_ops.h
   trunk/util/nvramtool/common.c
   trunk/util/nvramtool/common.h
   trunk/util/nvramtool/compute_ip_checksum.c
   trunk/util/nvramtool/hexdump.c
   trunk/util/nvramtool/hexdump.h
   trunk/util/nvramtool/input_file.c
   trunk/util/nvramtool/input_file.h
   trunk/util/nvramtool/ip_checksum.h
   trunk/util/nvramtool/layout.c
   trunk/util/nvramtool/layout.h
   trunk/util/nvramtool/layout_file.c
   trunk/util/nvramtool/layout_file.h
   trunk/util/nvramtool/lbtable.c
   trunk/util/nvramtool/lbtable.h
   trunk/util/nvramtool/nvramtool.1
   trunk/util/nvramtool/nvramtool.c
   trunk/util/nvramtool/nvramtool.spec
   trunk/util/nvramtool/opts.c
   trunk/util/nvramtool/opts.h
   trunk/util/nvramtool/reg_expr.c
   trunk/util/nvramtool/reg_expr.h
Log:
Add string support to nvramtool.

To add a string to your cmos.layout, you need to specify type 's':

#start     len       type    unused   name
416        512       s       0        boot_devices

With this patch you can do

$ nvramtool -w boot_devices="(hd0,0);(hd2,1);(hd3)"

And FILO will attempt to load a menu.lst from any of these devices in that
order.

The patch is not exactly pretty, but a cleaner solution might have resulted in
a complete rewrite of the tool, which I did not want.

Signed-off-by: Stefan Reinauer <stepan at coresystems.de>
Acked-by: Joseph Smith <joe at settoplinux.org>



Modified: trunk/util/nvramtool/ChangeLog
===================================================================
--- trunk/util/nvramtool/ChangeLog	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/ChangeLog	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,3 +1,11 @@
+Tue Sep 23 19:14:27 CEST 2008  Stefan Reinauer (stepan at coresystems.de)
+
+	Version 2.1
+
+	* Fix a number of off by one errors when accessing arrays
+
+	* Add support for reading/writing strings from/to CMOS.
+
 Mon Jan 23 16:00:00 PST 2006  David S. Peterson (dsp at llnl.gov)
 
 	Version 2.0.1

Modified: trunk/util/nvramtool/DISCLAIMER
===================================================================
--- trunk/util/nvramtool/DISCLAIMER	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/DISCLAIMER	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,8 +1,8 @@
 ####################################################################
-# $Id$
-####################################################################
 
 Copyright (C) 2002 The Regents of the University of California.
+Copyright (C) 2008 coresystems GmbH
+
 Produced at the Lawrence Livermore National Laboratory.
 Written by David S. Peterson <dsp at llnl.gov>.
 UCRL-CODE-2003-012

Modified: trunk/util/nvramtool/Makefile
===================================================================
--- trunk/util/nvramtool/Makefile	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/Makefile	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,28 +1,43 @@
-# $Id$
+#
+# Makefile for nvram utility
+# 
+# (C) 2005-2008 coresystems GmbH
+# written by Stefan Reinauer <stepan at coresystems.de>
+#
 
-PROJECT = nvramtool
-CC = gcc
-CFLAGS = -O2 -W -Wall
-LDFLAGS =
-OBJS = common.o compute_ip_checksum.o hexdump.o cmos_lowlevel.o \
-       reg_expr.o layout.o layout_file.o lbtable.o cmos_ops.o input_file.o \
-       opts.o nvramtool.o
-HEADERS = common.h ip_checksum.h coreboot_tables.h hexdump.h \
-          cmos_lowlevel.h reg_expr.h layout.h layout_file.h lbtable.h \
-          cmos_ops.h input_file.h opts.h
+PROGRAM = nvramtool
 
-all: nvramtool man
+CC      = gcc
+STRIP	= strip
+INSTALL = /usr/bin/install
+PREFIX  = /usr/local
+CFLAGS  = -O2 -g -Wall -W
+#CFLAGS  = -Os -Wall
 
-nvramtool: $(OBJS)
-	$(CC) $(LDFLAGS) -o $@ $(OBJS)
+OBJS =  cmos_lowlevel.o cmos_ops.o common.o compute_ip_checksum.o \
+	hexdump.o input_file.o layout.o layout_file.o lbtable.o   \
+	nvramtool.o opts.o reg_expr.o
 
-man: nvramtool.1.gz
+all: dep $(PROGRAM)
 
-$(OBJS): $(HEADERS)
+$(PROGRAM): $(OBJS)
+	$(CC) -o $(PROGRAM) $(OBJS) $(LDFLAGS)
+	$(STRIP) $(STRIP_ARGS) $(PROGRAM)
 
-nvramtool.1.gz: nvramtool.1
-	gzip -c --best nvramtool.1 > nvramtool.1.gz
-
 clean:
-	rm -f *.o nvramtool nvramtool.1.gz
+	rm -f $(PROGRAM) *.o
 
+distclean: clean
+	rm -f .dependencies
+
+dep:
+	@$(CC) -MM *.c > .dependencies
+
+install: $(PROGRAM)
+	$(INSTALL) $(PROGRAM) $(PREFIX)/sbin
+	mkdir -p $(PREFIX)/share/man/man1
+	$(INSTALL) $(PROGRAM).1 $(PREFIX)/share/man/man1
+
+.PHONY: all clean distclean dep
+
+-include .dependencies

Modified: trunk/util/nvramtool/README
===================================================================
--- trunk/util/nvramtool/README	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/README	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,5 +1,3 @@
-$Id$
-
 Summary of Operation
 --------------------
 nvramtool is a utility for reading/writing coreboot parameters and

Modified: trunk/util/nvramtool/cmos_lowlevel.c
===================================================================
--- trunk/util/nvramtool/cmos_lowlevel.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/cmos_lowlevel.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * cmos_lowlevel.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -70,7 +69,7 @@
  ****************************************************************************/
 static inline void put_bits (unsigned char value, unsigned bit,
                              unsigned nr_bits, unsigned long long *result)
- { *result += (value & ((unsigned char) ((1 << nr_bits) - 1))) << bit; }
+ { *result += ((unsigned long long)(value & ((unsigned char) ((1 << nr_bits) - 1)))) << bit; }
 
 /****************************************************************************
  * cmos_read
@@ -79,22 +78,40 @@
  * and return this value.  The I/O privilege level of the currently executing
  * process must be set appropriately.
  ****************************************************************************/
-unsigned long long cmos_read (unsigned bit, unsigned length)
+unsigned long long cmos_read (const cmos_entry_t *e)
  { cmos_bit_op_location_t where;
+   unsigned bit = e->bit, length=e->length;
    unsigned next_bit, bits_left, nr_bits;
-   unsigned long long result;
+   unsigned long long result = 0;
    unsigned char value;
 
-   assert(!verify_cmos_op(bit, length));
+   assert(!verify_cmos_op(bit, length, e->config));
    result = 0;
 
-   for (next_bit = 0, bits_left = length;
-        bits_left;
-        next_bit += nr_bits, bits_left -= nr_bits)
-    { nr_bits = cmos_bit_op_strategy(bit + next_bit, bits_left, &where);
-      value = cmos_read_bits(&where, nr_bits);
-      put_bits(value, next_bit, nr_bits, &result);
+   if (e->config == CMOS_ENTRY_STRING)
+    { char *newstring = malloc((length+7)/8);
+      unsigned usize = (8 * sizeof(unsigned long long));
+
+      if(!newstring) { out_of_memory(); }
+
+      for (next_bit = 0, bits_left = length;
+           bits_left;
+           next_bit += nr_bits, bits_left -= nr_bits)
+       { nr_bits = cmos_bit_op_strategy(bit + next_bit, bits_left>usize?usize:bits_left, &where);
+         value = cmos_read_bits(&where, nr_bits);
+         put_bits(value, next_bit % usize, nr_bits, &((unsigned long long *)newstring)[next_bit/usize]);
+	 result = (unsigned long)newstring;
+       }
     }
+   else
+    { for (next_bit = 0, bits_left = length;
+           bits_left;
+           next_bit += nr_bits, bits_left -= nr_bits)
+       { nr_bits = cmos_bit_op_strategy(bit + next_bit, bits_left, &where);
+         value = cmos_read_bits(&where, nr_bits);
+         put_bits(value, next_bit, nr_bits, &result);
+       }
+    }
 
    return result;
  }
@@ -106,18 +123,33 @@
  * The I/O privilege level of the currently executing process must be set
  * appropriately.
  ****************************************************************************/
-void cmos_write (unsigned bit, unsigned length, unsigned long long value)
+void cmos_write (const cmos_entry_t *e, unsigned long long value)
  { cmos_bit_op_location_t where;
+   unsigned bit = e->bit, length=e->length;
    unsigned next_bit, bits_left, nr_bits;
 
-   assert(!verify_cmos_op(bit, length));
+   assert(!verify_cmos_op(bit, length, e->config));
 
-   for (next_bit = 0, bits_left = length;
-        bits_left;
-        next_bit += nr_bits, bits_left -= nr_bits)
-    { nr_bits = cmos_bit_op_strategy(bit + next_bit, bits_left, &where);
-      cmos_write_bits(&where, nr_bits, get_bits(value, next_bit, nr_bits));
+   if (e->config == CMOS_ENTRY_STRING) 
+    { unsigned long long *data = (unsigned long long *)(unsigned long)value;
+      unsigned usize = (8 * sizeof(unsigned long long));
+
+      for (next_bit = 0, bits_left = length;
+           bits_left;
+           next_bit += nr_bits, bits_left -= nr_bits)
+       { nr_bits = cmos_bit_op_strategy(bit + next_bit, bits_left>usize?usize:bits_left, &where);
+         value = data[next_bit/usize];
+         cmos_write_bits(&where, nr_bits, get_bits(value, next_bit % usize, nr_bits));
+       }
     }
+   else
+    { for (next_bit = 0, bits_left = length;
+           bits_left;
+           next_bit += nr_bits, bits_left -= nr_bits)
+       { nr_bits = cmos_bit_op_strategy(bit + next_bit, bits_left, &where);
+         cmos_write_bits(&where, nr_bits, get_bits(value, next_bit, nr_bits));
+       }
+    }
  }
 
 /****************************************************************************
@@ -236,13 +268,16 @@
  * wish to read or write.  Perform sanity checking on 'bit' and 'length'.  If
  * no problems were encountered, return OK.  Else return an error code.
  ****************************************************************************/
-int verify_cmos_op (unsigned bit, unsigned length)
+int verify_cmos_op (unsigned bit, unsigned length, cmos_entry_config_t config)
  { if ((bit >= (8 * CMOS_SIZE)) || ((bit + length) > (8 * CMOS_SIZE)))
       return CMOS_AREA_OUT_OF_RANGE;
 
    if (bit < (8 * CMOS_RTC_AREA_SIZE))
       return CMOS_AREA_OVERLAPS_RTC;
 
+   if (config == CMOS_ENTRY_STRING)
+      return OK;
+
    if (length > (8 * sizeof(unsigned long long)))
       return CMOS_AREA_TOO_WIDE;
 

Modified: trunk/util/nvramtool/cmos_lowlevel.h
===================================================================
--- trunk/util/nvramtool/cmos_lowlevel.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/cmos_lowlevel.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * cmos_lowlevel.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -33,19 +32,20 @@
 #define NVRAMTOOL_CMOS_LOWLEVEL_H
 
 #include "common.h"
+#include "layout.h"
 
 #define CMOS_AREA_OUT_OF_RANGE (CMOS_RESULT_START + 0)
 #define CMOS_AREA_OVERLAPS_RTC (CMOS_RESULT_START + 1)
 #define CMOS_AREA_TOO_WIDE (CMOS_RESULT_START + 2)
 
-unsigned long long cmos_read (unsigned bit, unsigned length);
-void cmos_write (unsigned bit, unsigned length, unsigned long long value);
+unsigned long long cmos_read (const cmos_entry_t *e);
+void cmos_write (const cmos_entry_t *e, unsigned long long value);
 unsigned char cmos_read_byte (unsigned index);
 void cmos_write_byte (unsigned index, unsigned char value);
 void cmos_read_all (unsigned char data[]);
 void cmos_write_all (unsigned char data[]);
 void set_iopl (int level);
-int verify_cmos_op (unsigned bit, unsigned length);
+int verify_cmos_op (unsigned bit, unsigned length, cmos_entry_config_t config);
 
 #define CMOS_SIZE 256  /* size of CMOS memory in bytes */
 #define CMOS_RTC_AREA_SIZE 14  /* first 14 bytes control real time clock */

Modified: trunk/util/nvramtool/cmos_ops.c
===================================================================
--- trunk/util/nvramtool/cmos_ops.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/cmos_ops.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * cmos_ops.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -47,7 +46,7 @@
       /* Access to reserved parameters is not permitted. */
       return CMOS_OP_RESERVED;
 
-   if ((result = verify_cmos_op(e->bit, e->length)) != OK)
+   if ((result = verify_cmos_op(e->bit, e->length, e->config)) != OK)
       return result;
 
    assert(e->length > 0);
@@ -70,6 +69,7 @@
    switch (e->config)
     { case CMOS_ENTRY_ENUM:
       case CMOS_ENTRY_HEX:
+      case CMOS_ENTRY_STRING:
          break;
 
       default:
@@ -92,6 +92,7 @@
  { const cmos_enum_t *q;
    unsigned long long out;
    const char *p;
+   char *memory;
    int negative, result, found_one;
 
    if ((result = prepare_cmos_op_common(e)) != OK)
@@ -139,6 +140,15 @@
 
          break;
 
+      case CMOS_ENTRY_STRING:
+	 if (e->length < (8 * strlen(value_str)))
+	    return CMOS_OP_VALUE_TOO_WIDE;
+	 memory = malloc(e->length / 8);
+         memset(memory, 0, e->length / 8);
+         strcpy(memory, value_str);
+         out = (unsigned long)memory;
+	 break;
+
       default:
          BUG();
     }

Modified: trunk/util/nvramtool/cmos_ops.h
===================================================================
--- trunk/util/nvramtool/cmos_ops.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/cmos_ops.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * cmos_ops.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.

Modified: trunk/util/nvramtool/common.c
===================================================================
--- trunk/util/nvramtool/common.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/common.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * common.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -35,7 +34,7 @@
 const char prog_name[] = "nvramtool";
 
 /* version of this program */
-const char prog_version[] = "2.0.1";
+const char prog_version[] = "2.1";
 
 /****************************************************************************
  * get_line_from_file

Modified: trunk/util/nvramtool/common.h
===================================================================
--- trunk/util/nvramtool/common.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/common.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * common.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.

Modified: trunk/util/nvramtool/compute_ip_checksum.c
===================================================================
--- trunk/util/nvramtool/compute_ip_checksum.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/compute_ip_checksum.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * compute_ip_checksum.c
- * $Id$
 \*****************************************************************************/
 
 #include <stdint.h>

Modified: trunk/util/nvramtool/hexdump.c
===================================================================
--- trunk/util/nvramtool/hexdump.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/hexdump.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * hexdump.c
- * $Id$
 \*****************************************************************************/
 
 #include "hexdump.h"

Modified: trunk/util/nvramtool/hexdump.h
===================================================================
--- trunk/util/nvramtool/hexdump.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/hexdump.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * hexdump.h
- * $Id$
 \*****************************************************************************/
 
 #ifndef _HEXDUMP_H

Modified: trunk/util/nvramtool/input_file.c
===================================================================
--- trunk/util/nvramtool/input_file.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/input_file.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * input_file.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -137,6 +136,7 @@
 
       item->bit = e->bit;
       item->length = e->length;
+      item->config = e->config;
       item->value = try_prepare_cmos_write(e, value);
 
       /* Append write operation to pending write list. */
@@ -162,9 +162,13 @@
    set_iopl(3);
 
    while (list != NULL)
-    { item = list;
+    { cmos_entry_t e;
+      item = list;
+      e.bit = item->bit;
+      e.length = item->length;
+      e.config = item->config;
       list = item->next;
-      cmos_write(item->bit, item->length, item->value);
+      cmos_write(&e, item->value);
       free(item);
     }
 

Modified: trunk/util/nvramtool/input_file.h
===================================================================
--- trunk/util/nvramtool/input_file.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/input_file.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * input_file.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -33,6 +32,7 @@
 #define INPUT_FILE_H
 
 #include "common.h"
+#include "layout.h"
 
 typedef struct cmos_write_t cmos_write_t;
 
@@ -44,6 +44,7 @@
 struct cmos_write_t
  { unsigned bit;
    unsigned length;
+   cmos_entry_config_t config;
    unsigned long long value;
    cmos_write_t *next;
  };

Modified: trunk/util/nvramtool/ip_checksum.h
===================================================================
--- trunk/util/nvramtool/ip_checksum.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/ip_checksum.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * ip_checksum.h
- * $Id$
 \*****************************************************************************/
 
 #ifndef IP_CHECKSUM_H

Modified: trunk/util/nvramtool/layout.c
===================================================================
--- trunk/util/nvramtool/layout.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/layout.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * layout.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.

Modified: trunk/util/nvramtool/layout.h
===================================================================
--- trunk/util/nvramtool/layout.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/layout.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * layout.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -49,6 +48,7 @@
 typedef enum
  { CMOS_ENTRY_ENUM,
    CMOS_ENTRY_HEX,
+   CMOS_ENTRY_STRING,
    CMOS_ENTRY_RESERVED
  }
 cmos_entry_config_t;

Modified: trunk/util/nvramtool/layout_file.c
===================================================================
--- trunk/util/nvramtool/layout_file.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/layout_file.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * layout_file.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -551,6 +550,10 @@
          cmos_entry->config = CMOS_ENTRY_HEX;
          break;
 
+      case 's':
+	 cmos_entry->config = CMOS_ENTRY_STRING;
+	 break;
+
       case 'r':
          cmos_entry->config = CMOS_ENTRY_RESERVED;
          break;
@@ -758,6 +761,9 @@
       case CMOS_ENTRY_RESERVED:
          return 'r';
 
+      case CMOS_ENTRY_STRING:
+         return 's';
+
       default:
          BUG();
     }

Modified: trunk/util/nvramtool/layout_file.h
===================================================================
--- trunk/util/nvramtool/layout_file.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/layout_file.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * layout_file.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.

Modified: trunk/util/nvramtool/lbtable.c
===================================================================
--- trunk/util/nvramtool/lbtable.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/lbtable.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * lbtable.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -582,6 +581,10 @@
             cmos_entry.config = CMOS_ENTRY_RESERVED;
             break;
 
+         case 's':
+            cmos_entry.config = CMOS_ENTRY_STRING;
+            break;
+
          default:
             fprintf(stderr,
                     "%s: Entry in CMOS option table has unknown config "

Modified: trunk/util/nvramtool/lbtable.h
===================================================================
--- trunk/util/nvramtool/lbtable.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/lbtable.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * lbtable.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.

Modified: trunk/util/nvramtool/nvramtool.1
===================================================================
--- trunk/util/nvramtool/nvramtool.1	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/nvramtool.1	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 .\"***************************************************************************\
 .\" nvramtool.1
-.\" $Id$
 .\"***************************************************************************
 .\"  Copyright (C) 2002, 2003 The Regents of the University of California.
 .\"  Produced at the Lawrence Livermore National Laboratory.
@@ -28,7 +27,7 @@
 .\"  with this program; if not, write to the Free Software Foundation, Inc.,
 .\"  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 .\"***************************************************************************/
-.TH NVRAMTOOL 1 "January 2008" Linux
+.TH NVRAMTOOL 1 "September 2008" Linux
 .SH NAME
 nvramtool \- read/write coreboot-related information
 .SH SYNOPSIS
@@ -252,4 +251,4 @@
 .SH AUTHORS
 David S. Peterson <dsp at llnl.gov> <dave_peterson at pobox.com>
 .br
-Stefan Reinauer <stepan at openbios.org>
+Stefan Reinauer <stepan at coresystems.de>

Modified: trunk/util/nvramtool/nvramtool.c
===================================================================
--- trunk/util/nvramtool/nvramtool.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/nvramtool.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * nvramtool.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.
@@ -477,6 +476,11 @@
                 e->length);
          break;
 
+      case CMOS_ENTRY_STRING:
+         printf("Parameter %s requires a %u-byte string.\n", name,
+                e->length / 8);
+         break;
+
       case CMOS_ENTRY_RESERVED:
          printf("Parameter %s is reserved.\n", name);
          break;
@@ -570,7 +574,7 @@
 
    /* write the value to nonvolatile RAM */
    set_iopl(3);
-   cmos_write(e->bit, e->length, n);
+   cmos_write(e, n);
    cmos_checksum_write(cmos_checksum_compute());
    set_iopl(0);
    return;
@@ -674,7 +678,7 @@
 
    /* read the value from CMOS */
    set_iopl(3);
-   value = cmos_read(e->bit, e->length);
+   value = cmos_read(e);
    set_iopl(0);
 
    /* display the value */
@@ -703,6 +707,16 @@
 
          break;
 
+      case CMOS_ENTRY_STRING:
+         if (show_name)
+	    printf("%s = %s\n", e->name, (char *)(unsigned long)value);
+	 else
+ 	    printf("%s\n", (char *)(unsigned long)value);
+
+         free((void *)(unsigned long)value);
+
+         break;
+
       case CMOS_ENTRY_RESERVED:
       default:
          BUG();

Modified: trunk/util/nvramtool/nvramtool.spec
===================================================================
--- trunk/util/nvramtool/nvramtool.spec	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/nvramtool.spec	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,9 +1,7 @@
 ##
-# $Id$
-##
 
 Name:    nvramtool
-Version: 2.0.1
+Version: 2.1
 Release: 0
 
 Summary: coreboot utility program

Modified: trunk/util/nvramtool/opts.c
===================================================================
--- trunk/util/nvramtool/opts.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/opts.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * opts.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.

Modified: trunk/util/nvramtool/opts.h
===================================================================
--- trunk/util/nvramtool/opts.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/opts.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * opts.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.

Modified: trunk/util/nvramtool/reg_expr.c
===================================================================
--- trunk/util/nvramtool/reg_expr.c	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/reg_expr.c	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * reg_expr.c
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.

Modified: trunk/util/nvramtool/reg_expr.h
===================================================================
--- trunk/util/nvramtool/reg_expr.h	2008-09-27 08:51:11 UTC (rev 3612)
+++ trunk/util/nvramtool/reg_expr.h	2008-09-27 10:08:28 UTC (rev 3613)
@@ -1,6 +1,5 @@
 /*****************************************************************************\
  * reg_expr.h
- * $Id$
  *****************************************************************************
  *  Copyright (C) 2002-2005 The Regents of the University of California.
  *  Produced at the Lawrence Livermore National Laboratory.





More information about the coreboot mailing list