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:
parent
8fc6ffc62c
commit
6ad6258a28
2 changed files with 25 additions and 8 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue