===== (b)yte (s)elect and addr ===== Here are some explanations about the use of bs and addr in in functions like _c0r(void *_css, uint32_t addr, unsigned int bs, uint32_t *valp) Byte access are bs=0001, 0010, 0100, 1000 \\ Word access are bs=0011, 0110, 1100 \\ Long access are bs=1111 \\ But selects with bs=1110 or 0111 could also occur on Intel based systems if ''inl'' or ''outl'' accesses an odd address. \\ The 4 byte access will be splitted of into a 1 byte access and a 3 byte access. The given address is always divideable by 4. This is through the fact, that the address bits 0 and 1 on the pci bus are used for some other functions. The bs value selects which of the 4 Bytes are read/written together. One example: addr = 0100111000100, bs = 0011 reads/writes these adresses 0100111000100 0100111000101 -- -- Another example: addr = 0100111000100, bs = 1110 reads/writes these adresses: -- 0100111000101 0100111000110 0100111000111 ====== ====== **[[start|home]]**