Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86: x86-boot: don't request VBE2 information x86: re-add reboot fixups x86: fix typo in step.c x86: fix merge mistake in i387.c x86: clear DF before calling signal handler
This commit is contained in:
@@ -26,17 +26,10 @@ struct vesa_general_info {
|
|||||||
far_ptr video_mode_ptr; /* 14 */
|
far_ptr video_mode_ptr; /* 14 */
|
||||||
u16 total_memory; /* 18 */
|
u16 total_memory; /* 18 */
|
||||||
|
|
||||||
u16 oem_software_rev; /* 20 */
|
u8 reserved[236]; /* 20 */
|
||||||
far_ptr oem_vendor_name_ptr; /* 22 */
|
|
||||||
far_ptr oem_product_name_ptr; /* 26 */
|
|
||||||
far_ptr oem_product_rev_ptr; /* 30 */
|
|
||||||
|
|
||||||
u8 reserved[222]; /* 34 */
|
|
||||||
u8 oem_data[256]; /* 256 */
|
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24))
|
#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24))
|
||||||
#define VBE2_MAGIC ('V' + ('B' << 8) + ('E' << 16) + ('2' << 24))
|
|
||||||
|
|
||||||
struct vesa_mode_info {
|
struct vesa_mode_info {
|
||||||
u16 mode_attr; /* 0 */
|
u16 mode_attr; /* 0 */
|
||||||
|
@@ -37,8 +37,6 @@ static int vesa_probe(void)
|
|||||||
|
|
||||||
video_vesa.modes = GET_HEAP(struct mode_info, 0);
|
video_vesa.modes = GET_HEAP(struct mode_info, 0);
|
||||||
|
|
||||||
vginfo.signature = VBE2_MAGIC;
|
|
||||||
|
|
||||||
ax = 0x4f00;
|
ax = 0x4f00;
|
||||||
di = (size_t)&vginfo;
|
di = (size_t)&vginfo;
|
||||||
asm(INT10
|
asm(INT10
|
||||||
|
@@ -500,7 +500,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
|
|||||||
regs->ss = __USER32_DS;
|
regs->ss = __USER32_DS;
|
||||||
|
|
||||||
set_fs(USER_DS);
|
set_fs(USER_DS);
|
||||||
regs->flags &= ~X86_EFLAGS_TF;
|
regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
|
||||||
if (test_thread_flag(TIF_SINGLESTEP))
|
if (test_thread_flag(TIF_SINGLESTEP))
|
||||||
ptrace_notify(SIGTRAP);
|
ptrace_notify(SIGTRAP);
|
||||||
|
|
||||||
@@ -600,7 +600,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
|
|||||||
regs->ss = __USER32_DS;
|
regs->ss = __USER32_DS;
|
||||||
|
|
||||||
set_fs(USER_DS);
|
set_fs(USER_DS);
|
||||||
regs->flags &= ~X86_EFLAGS_TF;
|
regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
|
||||||
if (test_thread_flag(TIF_SINGLESTEP))
|
if (test_thread_flag(TIF_SINGLESTEP))
|
||||||
ptrace_notify(SIGTRAP);
|
ptrace_notify(SIGTRAP);
|
||||||
|
|
||||||
|
@@ -261,7 +261,7 @@ static void convert_from_fxsr(struct user_i387_ia32_struct *env,
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
env->fip = fxsave->fip;
|
env->fip = fxsave->fip;
|
||||||
env->fcs = fxsave->fcs;
|
env->fcs = (u16) fxsave->fcs | ((u32) fxsave->fop << 16);
|
||||||
env->foo = fxsave->foo;
|
env->foo = fxsave->foo;
|
||||||
env->fos = fxsave->fos;
|
env->fos = fxsave->fos;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -326,6 +326,10 @@ static inline void kb_wait(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void __attribute__((weak)) mach_reboot_fixups(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static void native_machine_emergency_restart(void)
|
static void native_machine_emergency_restart(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -337,6 +341,8 @@ static void native_machine_emergency_restart(void)
|
|||||||
/* Could also try the reset bit in the Hammer NB */
|
/* Could also try the reset bit in the Hammer NB */
|
||||||
switch (reboot_type) {
|
switch (reboot_type) {
|
||||||
case BOOT_KBD:
|
case BOOT_KBD:
|
||||||
|
mach_reboot_fixups(); /* for board specific fixups */
|
||||||
|
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
kb_wait();
|
kb_wait();
|
||||||
udelay(50);
|
udelay(50);
|
||||||
|
@@ -407,7 +407,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
|
|||||||
* The tracer may want to single-step inside the
|
* The tracer may want to single-step inside the
|
||||||
* handler too.
|
* handler too.
|
||||||
*/
|
*/
|
||||||
regs->flags &= ~TF_MASK;
|
regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
|
||||||
if (test_thread_flag(TIF_SINGLESTEP))
|
if (test_thread_flag(TIF_SINGLESTEP))
|
||||||
ptrace_notify(SIGTRAP);
|
ptrace_notify(SIGTRAP);
|
||||||
|
|
||||||
@@ -500,7 +500,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
|
|||||||
* The tracer may want to single-step inside the
|
* The tracer may want to single-step inside the
|
||||||
* handler too.
|
* handler too.
|
||||||
*/
|
*/
|
||||||
regs->flags &= ~TF_MASK;
|
regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
|
||||||
if (test_thread_flag(TIF_SINGLESTEP))
|
if (test_thread_flag(TIF_SINGLESTEP))
|
||||||
ptrace_notify(SIGTRAP);
|
ptrace_notify(SIGTRAP);
|
||||||
|
|
||||||
|
@@ -295,7 +295,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
|
|||||||
see include/asm-x86_64/uaccess.h for details. */
|
see include/asm-x86_64/uaccess.h for details. */
|
||||||
set_fs(USER_DS);
|
set_fs(USER_DS);
|
||||||
|
|
||||||
regs->flags &= ~X86_EFLAGS_TF;
|
regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
|
||||||
if (test_thread_flag(TIF_SINGLESTEP))
|
if (test_thread_flag(TIF_SINGLESTEP))
|
||||||
ptrace_notify(SIGTRAP);
|
ptrace_notify(SIGTRAP);
|
||||||
#ifdef DEBUG_SIG
|
#ifdef DEBUG_SIG
|
||||||
|
@@ -166,7 +166,7 @@ static void enable_step(struct task_struct *child, bool block)
|
|||||||
child->thread.debugctlmsr | DEBUGCTLMSR_BTF);
|
child->thread.debugctlmsr | DEBUGCTLMSR_BTF);
|
||||||
} else {
|
} else {
|
||||||
write_debugctlmsr(child,
|
write_debugctlmsr(child,
|
||||||
child->thread.debugctlmsr & ~TIF_DEBUGCTLMSR);
|
child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
|
||||||
|
|
||||||
if (!child->thread.debugctlmsr)
|
if (!child->thread.debugctlmsr)
|
||||||
clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
|
clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
|
||||||
@@ -189,7 +189,7 @@ void user_disable_single_step(struct task_struct *child)
|
|||||||
* Make sure block stepping (BTF) is disabled.
|
* Make sure block stepping (BTF) is disabled.
|
||||||
*/
|
*/
|
||||||
write_debugctlmsr(child,
|
write_debugctlmsr(child,
|
||||||
child->thread.debugctlmsr & ~TIF_DEBUGCTLMSR);
|
child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
|
||||||
|
|
||||||
if (!child->thread.debugctlmsr)
|
if (!child->thread.debugctlmsr)
|
||||||
clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
|
clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
|
||||||
|
Reference in New Issue
Block a user