lk中内联调用的dsb()

比如lk的uart_dm_init()函数就调用了dsb()

/* Configure the uart clock */clock_config_uart_dm(id);dsb();/*Configure GPIO to provide connectivity between UART blockproduct ports and chip pads */gpio_config_uart_dm(id);dsb();

dsb的在lk\arch\arm\include\arch\Defines.h中定义,如下:

#if ARM_ISA_ARMV7
#define dsb() __asm__ volatile("dsb" : : : "memory");
#define dmb() __asm__ volatile("dmb" : : : "memory");
#define isb() __asm__ volatile("isb" : : : "memory");
#elif ARM_ISA_ARMV6
#define dsb() __asm__ volatile ("mcrp15, 0, %0, c7, c10, 4" : : "r" (0): "memory");
#define dmb() __asm__ volatile ("mcrp15, 0, %0, c7, c10, 5" : : "r" (0): "memory");
#define isb() __asm__ volatile ("mcrp15, 0, %0, c7, c5,  4" : :"r" (0): "memory");
#endif

这里是内联汇编里的dsb指令,这是gcc的inline asssemble,主要功能是数据同步屏障,Datasynchronization barrier。

memory is an instruction to GCC that (sortof) says that the inline asm sequence has side effects on global memory, andhence not just effects on local variables need to be taken into account.

这都是 gcc的 inlineassemble

相关链接:

ARM嵌入式开发中的GCC内联汇编(ARM GCC Inline Assembler Cookbook)

http://blog.csdn.net/linglongqiongge/article/details/51678588

lk中内联调用的dsb()相关推荐

  1. java 内联调用深度_Java中内联虚拟方法调用的性能

    java 内联调用深度 总览 动态编译的好处之一是它能够支持在虚拟方法代码上的广泛方法内联. 内联代码可提高性能时,代码仍必须检查类型(以防由于优化而更改了类型)或在多个可能的实现之间进行选择. 这导 ...

  2. C语言中内联函数的作用 inline

    C语言中内联函数的作用 inline C语言中内联函数到底有什么作用? 试想一下,每当我们在假设就在主函数中调用另外一个函数的时候,那么这个函数就要入栈或者出栈,比如说下面的一个例子: 点击(此处)折 ...

  3. Linux C中内联汇编的语法格式及使用方法

    在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基 ...

  4. CUDA:CUDA内核中内联PTX(汇编语言)用法的实例

    CUDA:CUDA内核中内联PTX(汇编语言)用法的实例 // System includes #include <stdio.h> #include <assert.h>// ...

  5. html中内联元素是什么意思,HTML中内联元素指的是什么

    HTML中内联元素指的是什么 发布时间:2020-12-17 09:38:32 来源:亿速云 阅读:74 作者:小新 这篇文章主要介绍了HTML中内联元素指的是什么,具有一定借鉴价值,需要的朋友可以参 ...

  6. 在html中怎么设置内联标签,HTML中内联元素有哪些

    内联元素有:a.acronym.b.br.cite.code.dfn.em.font.i.img.input.kbd.label.s.samp.small.span.strong.sub.sup.te ...

  7. c语言什么是内联函数,C语言中内联函数inline的使用方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 来源一:比特网 来源二:东方锐智 在C++中,为了解决一些频繁调用的小涵数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联涵 ...

  8. 一步步编写操作系统 79 在c代码中内联汇编

    基本内联汇编是最简单的内联形式,其格式为: asm [volatile] ("assembly code") 各关键字之间可以用空格或制表符分隔也可以紧凑挨在一起不分隔,各部分意义 ...

  9. C++中内联函数和宏定义的区别

    1.内联函数在编译时展开,宏在预编译时展开 2.在编译的时候,内联函数可以直接被镶嵌在目标代码中,而宏只是一个简单的文本替换. 3.内联函数可以完成诸如类型检测,语句是否正确等编译功能,宏就不具有这样 ...

最新文章

  1. Erlang--热更新
  2. Nagios监控部署(四)--被监控主机配置
  3. 1.2机器学习基础下--python深度机器学习
  4. ASP.NET应用程序与页面生命周期
  5. 异常处理---SpringMVC学习笔记(十)
  6. BugkuCTF-Reverse题mobile2(gctf)
  7. ZStack常见问题
  8. java 静态导入 import static
  9. python程序纠错_纠错帮【python文稿AI纠错工具】
  10. n维椭球体积公式_初中物理公式总结(表格整理版)
  11. 前端单点登录(SSO)
  12. Matlab FontName 以及字体设置
  13. pad怎么远程服务器,iphone和ipad如何远程控制局域网电脑
  14. 在VScode上使用latex编辑pdf
  15. 停车还能360全方位影像_新司机轻松,老司机上瘾,中大型SUV都少不了360°全景影像...
  16. Windows或Linux中32位与64位操作系统的区别
  17. java-net-php-python-ssm仿猫眼电影计算机毕业设计程序
  18. React开发(250):react项目理解 ant design loding控制页面转圈加载
  19. 2023年全国最新二级建造师精选真题及答案44
  20. 银河移民PHP面试,移民香港,我真的“后悔死了”

热门文章

  1. 009_logback本地Appender
  2. 015_JavaScript的四种迭代语句
  3. 创建emp表 oracle,Oracle中创建和管理表详解
  4. u盘扩容软件_扩容盘的认识与检测和量产还原
  5. Dell R240 1U机架式服务器 资料
  6. 如何查看别人(自己)电脑最近的浏览记录
  7. java数组split_js数组接受split(java split)
  8. soc设计方法与实现第三版pdf_资深Redis技术专家带你深入了解:Redis的设计与实现(PDF)...
  9. wordpress mysql 安装_wordpress 搭建安装教程 1 安装数据库、SQLyog
  10. android 时间转换 工具下载,时间转换器手游下载_时间转换器安卓版下载v1.09.25_3DM手游...