On Sun, Oct 16, 2016 at 01:52:18PM +0200, Maxime Villard wrote:
> Le 15/10/2016 à 20:52, Joerg Sonnenberger a écrit :
> > On Sat, Oct 15, 2016 at 12:35:39PM +0200, Maxime Villard wrote:
> > > Le 08/10/2016 à 17:14, Maxime Villard a écrit :
> > > > The patch is available here [1]. Clearly, I'm not going to commit it 
> > > > now, but
> > > > if someone here has an opinion about it, or if you think there is 
> > > > something
> > > > obviously wrong that I missed, feel free to tell me about it.
> > > > 
> > > > [1] http://m00nbsd.net/garbage/lapic/
> > > > 
> > > 
> > > (I have updated and simplified the patch)
> > 
> > Please don't use untyped vaddr_t locations with random casts all over
> > the place, but use or define a struct with the appropiate (volatile) fields.
> > 
> > Joerg
> > 
> 
> Yes, I thought about that. But how do you access the fields from assembly?
> At the end of the day, you still need offsets, and it was better to have
> different pointers.

Just like fields in the trap frame for example are accessed. Put them in
genassym.cf and use the created offset in the actual store. It doesn't
even add another command.

> I've removed lapic_tpr, which means there is only one pointer to the LAPIC
> page and each register access is done with offsets. I have reupdated and
> resimplified my patch. The only thing we do now is allocating one page of
> va at boot time, and add a level of indirection in the asm code.

The access via read/write reg is effectively the same as above. I'm not
a fan of the inline functions as they are due to the multiple layers of
casts...

Joerg

Reply via email to