首页 > 其他 > 详细

看见了就转来了, 涉及到UBOOT 地址的一个问题.

时间:2016-06-13 13:09:28      阅读:131      评论:0      收藏:0      [点我收藏+]

addr = (_bss_end + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);什么意思?


这是UBOOT 中的一个分配视频帧缓冲区地址的函数,我想问的是:加一个(PAGE_SIZE - 1)) 然后在与上一个 ~(PAGE_SIZE - 1) 是起什么作用的,我看好多都是这样写的。请高手告诉这样我这样写的目的是什么?

对于PAGE_SIZE的值为2的n次幂,如4096,经过addr = (_bss_end + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);操作之后,得到的addr的值按照PAGE_SIZE即4096大小对齐,addr的值是PAGE_SIZE的倍数,并且是刚好大于_bss_end值。若_bss_end是PAGE_SIZE的倍数,则addr=_bss_end。
举个例子:_bss_end=100,PAGE_SIZE=64,上述计算后,addr=128,刚好是64的倍数,且大于100,若_bss_end=128,则addr=128

看见了就转来了, 涉及到UBOOT 地址的一个问题.

原文:http://www.cnblogs.com/the-tops/p/5580149.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!