1 Aug 2008 18:12
Re: ccio_mark_invalid(): would it have to clear a bit or byte?
Grant Grundler <grundler <at> parisc-linux.org>
2008-08-01 16:12:48 GMT
2008-08-01 16:12:48 GMT
On Mon, Jul 21, 2008 at 02:51:08PM +0000, Joel Soete wrote:
> Hello all,
>
> given this comment:
> * Given a virtual address (vba, arg2) and space id, (sid, arg1),
> * load the I/O PDIR entry pointed to by pdir_ptr (arg0). Each IO Pdir
> * entry consists of 8 bytes as shown below (MSB == bit 0):
...
> and also this:
> while (byte_cnt > 0) {
> /* clear I/O Pdir entry "valid" bit first */
> ((unsigned char *) pdir_ptr)[7] = 0;
>
> So if I well understand 'Valid' field of a pdir entry is well of 1 bit but
> the code cleanup a all byte?
That's just a convenient way to clobber the bit we care about.
The fact that the rest of the pdir remains available is irrelevant
except for debugging (when we might dump IO Pdir to see the history.)
>
> Is coding something like:
> #define PTE_VALID_BIT_MASK 0xfffffffffffffffeULL
>
> *pdir_ptr &= PTE_VALID_BIT_MASK;
That's a load/modify store of a 64-bit value.
That substantially more instructions than a single byte store.
> wouldn't do better what comment says it does?
(Continue reading)
RSS Feed