On Sun, Apr 03, 2011 at 08:35:28AM -0400, Avi Kivity wrote: > On 04/01/2011 05:10 PM, Joerg Roedel wrote: > > This patch adds a check_perm callback for each opcode into > > the instruction emulator. This will be used to do all > > necessary permission checks on instructions before checking > > whether they are intercepted or not. > > > > > > @@ -216,6 +216,7 @@ struct decode_cache { > > u8 seg_override; > > unsigned int d; > > int (*execute)(struct x86_emulate_ctxt *ctxt); > > + int (*check_perm)(struct x86_emulate_ctxt *ctxt); > > I originally mean to use a group-like structure to have check_perm only > when needed, but I guess this is a premature optimization. #define D(_y) > { .flags = (_y) } > > #define DI(_y, _i) { .flags = (_y), .intercept = x86_intercept_##_i } > > +#define DIP(_y, _i) { .flags = (_y), .intercept = x86_intercept_##_i, \ > > + .check_perm = em_check_perm_##_i } > > Sorry, this (and all the #defines which follow) are just obfuscating. I > set a bad example here, but the following patches show there is nothing > gained by the ## games. Please use the full function name. Yeah, this became a bit obfuscating in the end. My intention was to keep the opcode tables clean and readable, but I changed it now and added the check-functions directly removing all the #defines. Joerg -- AMD Operating System Research Center Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach General Managers: Alberto Bozzo, Andrew Bowd Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html