From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:58841) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SA2jv-00013D-IG for qemu-devel@nongnu.org; Tue, 20 Mar 2012 13:20:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SA2jt-0000FO-Ob for qemu-devel@nongnu.org; Tue, 20 Mar 2012 13:20:55 -0400 Received: from cantor2.suse.de ([195.135.220.15]:59190 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SA2jt-0000FD-IL for qemu-devel@nongnu.org; Tue, 20 Mar 2012 13:20:53 -0400 Message-ID: <4F68BC73.9070408@suse.de> Date: Tue, 20 Mar 2012 18:20:51 +0100 From: =?UTF-8?B?QW5kcmVhcyBGw6RyYmVy?= MIME-Version: 1.0 References: <201203201408.56275.paul@codesourcery.com> <4F68B6AA.7060803@codemonkey.ws> <201203201714.09024.paul@codesourcery.com> In-Reply-To: <201203201714.09024.paul@codesourcery.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] ARM QOM conversion / class hierarchy List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paul Brook Cc: Peter Maydell , QEMU Developers , Anthony Liguori Am 20.03.2012 18:14, schrieb Paul Brook: >> Make an ARMCPUClass that maps to the existing ARM support. Do *not* e= xpose >> all of the different features as properties. Make ARMCPUClass abstrac= t. >> >> Subclass ARMCPUClass for specific models, set default flags to impleme= nt >> the necessary logic. Expose tunables on a case-by-case basis (if ther= e >> needs to be a 'neon' flag for cortex-a9, then make one, but don't make >> everything a flag just for the hell of it). >=20 > As long as we can avoid the sort of duplication and redundant implement= ation=20 > that the initial .feature patch introduced. If only having a neon knob= on=20 > some cores means we have to duplicate a whole bunch of boilerplate betw= een=20 > those cores then we're doing it wrong. Allowing to parse cpu,+/-feature is what ARMCPU::features is for. object_new() creates an ARMCPU instance, initfn copies ARMCPUClass::features into ARMCPU::features, TBD sets/unsets feature flags. That's orthogonal to imperative vs. declarative and/or inheritence. Andreas --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=C3=B6rffer; HRB 16746 AG N=C3=BC= rnberg