
ARM64异常漫谈
liuhangtiant
这个作者很懒,什么都没留下…
展开
-
Linux exception table机制
概述简单来说,exception table用于截获一些异常,并且针对该异常做一些修正。一个简单的例子先来看一段调用逻辑及代码片段:futex_init futex_detect_cmpxchg(); cmpxchg_futex_value_locked(&curval, NULL, 0, 0) futex_atomic_cmpxchg_inatomic(curval, uaddr, uval, newval);ARM64平台:static in原创 2020-11-01 23:30:34 · 1549 阅读 · 0 评论 -
ARM64异常漫谈一:异常向量表
前言ARMV8的异常向量表较ARMV7的异常向量表有了很大的变动,但是实际上换汤不换药,做事情的方式变了,但是做的事情还是一样的。本文会详细介绍一下ARMV8的异常向量表。异常routing下面是异常发生时,exception level切换表:我们举两个例子来说明下:第一个红色框的内容表示:在此种配置下,EL0和EL1状态下产生的异步异常,会导致CPU进入EL1。第一个红色框的内容...原创 2019-05-21 23:30:17 · 4293 阅读 · 0 评论 -
ARM64异常漫谈二——kernel_entry和kernel_exit
前言本文介绍kernel_entry和kernel_exit两个宏,这两个函数并不单单是从用户空间进入内核空间以及从内核空间退出到用户空间才会用到。所有的异常处理函数首先会调用kernel_entry保存现场,最后调用kernel_exit恢复现场。kernel_entry .macro kernel_entry, el, regsize = 64 sub sp, sp, #S_FRA...原创 2019-05-23 08:03:48 · 3198 阅读 · 0 评论