lkml.org 
[lkml]   [2006]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC, PATCH 5/24] i386 Vmi code patching
* Zachary Amsden (zach@vmware.com) wrote:
> +static void fixup_translation(struct vmi_annotation *a)
> +{
> + unsigned char *c, *start, *end;
> + int left;
> +
> + memcpy(a->nativeEIP, a->translationEIP, a->translation_size);
> + start = a->nativeEIP;
> + end = a->nativeEIP + a->translation_size;
> +
> + for (c = start; c < end;) {
> + switch(*c) {
> + case MNEM_CALL_NEAR:
> + patch_call_site(a, c);
> + c+=5;
> + break;
> +
> + case MNEM_PUSH_I:
> + c+=5;
> + break;
> +
> + case MNEM_PUSH_IB:
> + c+=2;
> + break;
> +
> + case MNEM_PUSH_EAX:
> + case MNEM_PUSH_ECX:
> + case MNEM_PUSH_EDX:
> + case MNEM_PUSH_EBX:
> + case MNEM_PUSH_EBP:
> + case MNEM_PUSH_ESI:
> + case MNEM_PUSH_EDI:
> + c+=1;
> + break;
> +
> + case MNEM_LEA:
> + BUG_ON(*(c+1) != 0x64); /* [--][--]+disp8, %esp */
> + BUG_ON(*(c+2) != 0x24); /* none + %esp */
> + c+=4;
> + break;
> +
> + default:
> + /*
> + * Don't printk - it may acquire spinlocks with
> + * partially completed VMI translations, causing
> + * nuclear meltdown of the core.
> + */
> + BUG();
> + return;
> + }

Why these restrictions? How do you do int $0x82, for example?

thanks,
-chris
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-03-15 11:02    [W:0.403 / U:0.508 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site