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@coresystems.de Acked-by: Joseph Smith joe@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@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@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@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@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@llnl.gov dave_peterson@pobox.com .br -Stefan Reinauer stepan@openbios.org +Stefan Reinauer stepan@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.