2009-08-01 Vladimir Serbinenko <phcoder@gmail.com>

2009-08-01  Robert Millan  <rmh.grub@aybabtu.com>

	Fix cpuid command.

	* commands/i386/cpuid.c (options): New variable.
	(grub_cmd_cpuid): Return real error.
	(GRUB_MOD_INIT(cpuid)): Declare options.
This commit is contained in:
phcoder 2009-08-01 14:30:59 +00:00
parent 8fc6ffc62c
commit 6ad6258a28
2 changed files with 25 additions and 8 deletions

View File

@ -1,3 +1,12 @@
2009-08-01 Vladimir Serbinenko <phcoder@gmail.com>
2009-08-01 Robert Millan <rmh.grub@aybabtu.com>
Fix cpuid command.
* commands/i386/cpuid.c (options): New variable.
(grub_cmd_cpuid): Return real error.
(GRUB_MOD_INIT(cpuid)): Declare options.
2009-07-31 Vladimir Serbinenko <phcoder@gmail.com>
* partmap/pc.c (pc_partition_map_iterate): Check that boot flags are

View File

@ -23,25 +23,33 @@
#include <grub/mm.h>
#include <grub/env.h>
#include <grub/command.h>
#include <grub/extcmd.h>
#define cpuid(num,a,b,c,d) \
asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" \
: "=a" (a), "=r" (b), "=c" (c), "=d" (d) \
: "0" (num))
static const struct grub_arg_option options[] =
{
{"long-mode", 'l', 0, "check for long mode flag (default)", 0, 0},
{0, 0, 0, 0, 0, 0}
};
#define bit_LM (1 << 29)
static unsigned char has_longmode = 0;
static grub_err_t
grub_cmd_cpuid (struct grub_command *cmd __attribute__ ((unused)),
int argc __attribute__ ((unused)),
char **args __attribute__ ((unused)))
grub_cmd_cpuid (grub_extcmd_t cmd __attribute__ ((unused)),
int argc __attribute__ ((unused)),
char **args __attribute__ ((unused)))
{
return !has_longmode;
return has_longmode ? GRUB_ERR_NONE
: grub_error (GRUB_ERR_TEST_FAILURE, "false");
}
static grub_command_t cmd;
static grub_extcmd_t cmd;
GRUB_MOD_INIT(cpuid)
{
@ -78,11 +86,11 @@ GRUB_MOD_INIT(cpuid)
done:
#endif
cmd = grub_register_command ("cpuid", grub_cmd_cpuid,
0, "Check for CPU features");
cmd = grub_register_extcmd ("cpuid", grub_cmd_cpuid, GRUB_COMMAND_FLAG_BOTH,
"cpuid [-l]", "Check for CPU features", options);
}
GRUB_MOD_FINI(cpuid)
{
grub_unregister_command (cmd);
grub_unregister_extcmd (cmd);
}