ia64/xen-unstable

changeset 3427:7a4e8660d4f4

bitkeeper revision 1.1159.217.12 (41e53bd9y3GpK3IRHZDW920VkztFhg)

Merge scramble.cl.cam.ac.uk:/local/scratch/kaf24/xen-2.0-testing.bk
into scramble.cl.cam.ac.uk:/local/scratch/kaf24/xen-unstable.bk
author kaf24@scramble.cl.cam.ac.uk
date Wed Jan 12 15:01:45 2005 +0000 (2005-01-12)
parents 1c8e5bc858f0 983a02b6959a
children cd78cc21face
files xen/arch/x86/x86_32/seg_fixup.c
line diff
     1.1 --- a/xen/arch/x86/x86_32/seg_fixup.c	Wed Jan 12 14:19:45 2005 +0000
     1.2 +++ b/xen/arch/x86/x86_32/seg_fixup.c	Wed Jan 12 15:01:45 2005 +0000
     1.3 @@ -75,7 +75,7 @@ static unsigned char insn_decode[256] = 
     1.4      X, X, X, X, X, X, X, X,
     1.5      X, X, X, X, X, X, X, X,
     1.6      /* 0xA0 - 0xAF */
     1.7 -    O|1, O|4, O|1, O|4, X, X, X, X,
     1.8 +    O|4, O|4, O|4, O|4, X, X, X, X,
     1.9      X, X, X, X, X, X, X, X,
    1.10      /* 0xB0 - 0xBF */
    1.11      X, X, X, X, X, X, X, X,
    1.12 @@ -366,28 +366,17 @@ int gpf_emulate_4gb(struct xen_regs *reg
    1.13      
    1.14      if ( !(decode & HAS_MODRM) )
    1.15      {
    1.16 -        switch ( decode & 7 )
    1.17 +        if ( (decode & 7) != 4 )
    1.18 +            goto fail;
    1.19 +
    1.20 +        if ( get_user(offset, (u32 *)pb) )
    1.21          {
    1.22 -        case 1:
    1.23 -            if ( get_user(b, pb) )
    1.24 -            {
    1.25 -                DPRINTK("Fault while extracting <moffs8>.\n");
    1.26 -                goto page_fault;
    1.27 -            }
    1.28 -            pb++;
    1.29 -            offset = (signed long)(signed char)b;
    1.30 -            goto skip_modrm;
    1.31 -        case 4:
    1.32 -            if ( get_user(offset, (u32 *)pb) )
    1.33 -            {
    1.34 -                DPRINTK("Fault while extracting <disp8>.\n");
    1.35 -                goto page_fault;
    1.36 -            }
    1.37 -            pb += 4;
    1.38 -            goto skip_modrm;
    1.39 -        default:
    1.40 -            goto fail;
    1.41 +            DPRINTK("Fault while extracting <disp8>.\n");
    1.42 +            goto page_fault;
    1.43          }
    1.44 +        pb += 4;
    1.45 +
    1.46 +        goto skip_modrm;
    1.47      }
    1.48  
    1.49      /*