Re: [PATCH] Use %ebp rather than %ebx for thread_info pointer

Luca Barbieri (ldb@ldb.ods.org)
Thu, 9 Jan 2003 21:38:54 +0100


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-21352-1042145309-0001-2
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

> Hmm.. Did you check what fork
It only seems to use ret_from_fork, that sets up %ebp on its own.
> execve
Doesn't seem to use any function in entry.S
> vm86 do? I know at least the vm86() =20
> stuff sets up %ebx before calling the asm functions in entry.S, I bet=20
> those need to be changed to use %ebp too with something like this.

Right. This should fix it (compiles but untested):
--- arch/i386/kernel/vm86.c~ 2003-01-02 04:21:07.000000000 +0100
+++ arch/i386/kernel/vm86.c 2003-01-09 21:24:58.000000000 +0100
@@ -298,9 +298,10 @@
__asm__ __volatile__(
"xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs\n\t"
"movl %0,%%esp\n\t"
+ "movl %1,%%ebp\n\t"
"jmp resume_userspace"
: /* no outputs */
- :"r" (&info->regs), "b" (tsk->thread_info) : "ax");
+ :"r" (&info->regs), "r" (tsk->thread_info) : "ax");
/* we never return here */
}
=20
@@ -311,8 +312,9 @@
regs32 =3D save_v86_state(regs16);
regs32->eax =3D retval;
__asm__ __volatile__("movl %0,%%esp\n\t"
+ "movl %1,%%ebp\n\t"
"jmp resume_userspace"
- : : "r" (regs32), "b" (current_thread_info()));
+ : : "r" (regs32), "r" (current_thread_info()));
}
=20
static inline void set_IF(struct kernel_vm86_regs * regs)

--=_courier-21352-1042145309-0001-2
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+Hd3ddjkty3ft5+cRAhqtAKCAEDn93oXmo7/S9AFztzlt7lqFJgCgyBDL
7Ze+A5XjW7eAOWzwtm2xYu8=
=K/9Q
-----END PGP SIGNATURE-----

--=_courier-21352-1042145309-0001-2--