码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-06-13 13:12:35      阅读:115      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!