mmu.h #define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1))

トップページ
jupiteroak.hatenablog.com


mmu.h
https://github.com/mit-pdos/xv6-public/blob/master/mmu.h#L91

#define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1))

PGROUNDDOWNマクロは、aで指定されたアドレス値(16進数)の下3桁を切り下げます(アドレス値を4KBの倍数値に切り下げます)。

#define PGSIZE          4096 
#define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1))

#define PGROUNDDOWN(a) (((a)) & ~(4095))

#define PGROUNDDOWN(a) (((a)) & ~(0x0000 0FFF))

#define PGROUNDDOWN(a) (((a)) & 0xFFFF F000)

アドレス値aを~(PGSIZE-1)でマスク処理することにより、アドレス値を4KBの倍数値に切り下げます。