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>
|
2009-07-31 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* partmap/pc.c (pc_partition_map_iterate): Check that boot flags are
|
* partmap/pc.c (pc_partition_map_iterate): Check that boot flags are
|
||||||
|
|
|
@ -23,25 +23,33 @@
|
||||||
#include <grub/mm.h>
|
#include <grub/mm.h>
|
||||||
#include <grub/env.h>
|
#include <grub/env.h>
|
||||||
#include <grub/command.h>
|
#include <grub/command.h>
|
||||||
|
#include <grub/extcmd.h>
|
||||||
|
|
||||||
#define cpuid(num,a,b,c,d) \
|
#define cpuid(num,a,b,c,d) \
|
||||||
asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" \
|
asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" \
|
||||||
: "=a" (a), "=r" (b), "=c" (c), "=d" (d) \
|
: "=a" (a), "=r" (b), "=c" (c), "=d" (d) \
|
||||||
: "0" (num))
|
: "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)
|
#define bit_LM (1 << 29)
|
||||||
|
|
||||||
static unsigned char has_longmode = 0;
|
static unsigned char has_longmode = 0;
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
grub_cmd_cpuid (struct grub_command *cmd __attribute__ ((unused)),
|
grub_cmd_cpuid (grub_extcmd_t cmd __attribute__ ((unused)),
|
||||||
int argc __attribute__ ((unused)),
|
int argc __attribute__ ((unused)),
|
||||||
char **args __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)
|
GRUB_MOD_INIT(cpuid)
|
||||||
{
|
{
|
||||||
|
@ -78,11 +86,11 @@ GRUB_MOD_INIT(cpuid)
|
||||||
done:
|
done:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cmd = grub_register_command ("cpuid", grub_cmd_cpuid,
|
cmd = grub_register_extcmd ("cpuid", grub_cmd_cpuid, GRUB_COMMAND_FLAG_BOTH,
|
||||||
0, "Check for CPU features");
|
"cpuid [-l]", "Check for CPU features", options);
|
||||||
}
|
}
|
||||||
|
|
||||||
GRUB_MOD_FINI(cpuid)
|
GRUB_MOD_FINI(cpuid)
|
||||||
{
|
{
|
||||||
grub_unregister_command (cmd);
|
grub_unregister_extcmd (cmd);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue