For the value of PAGE_SIZE to the power of 2, such as 4096, addr = (_ BSS _ end+(page _ size-1))&; ~(PAGE _ SIZE- 1); After the operation, the value of addr is aligned according to the size of PAGE_SIZE, that is, 4096. The value of addr is a multiple of PAGE_SIZE and just larger than the value of _bss_end. If _bss_end is a multiple of PAGE_SIZE, addr=_bss_end.
For example: _bss_end= 100, PAGE_SIZE=64. After the above calculation, addr= 128, which is just a multiple of 64 and greater than 100. If _bss_end= 128,Addr = 65438。
Personal opinion, please give some advice.