01.12.2014 Views

RealView Compilation Tools Developer Guide - ARM Information ...

RealView Compilation Tools Developer Guide - ARM Information ...

RealView Compilation Tools Developer Guide - ARM Information ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

处 理 处 理 器 异 常<br />

该 继 续 执 行 地 址 较 lr_mode 中 的 地 址 少 一 个 字 ( 四 个 字 节 ), 因 此 , 其 返 回 指<br />

令 为 :<br />

SUBS pc, lr, #4<br />

将 返 回 地 址 推 入 堆 中 并 在 返 回 时 将 其 弹 出 的 处 理 程 序 入 口 和 出 口 代 码 为 :<br />

SUB<br />

STMFD<br />

;...<br />

LDMFD<br />

lr,lr,#4<br />

sp!,{reglist,lr}<br />

sp!,{reglist,pc}^<br />

对 于 发 生 在 Thumb 状 态 下 的 异 常 , 处 理 程 序 返 回 指 令 (SUBS pc,lr,#4) 改 变 了 程<br />

序 计 数 器 , 将 其 指 向 下 一 条 要 执 行 指 令 的 地 址 。 由 于 程 序 计 数 器 的 更 新 是 在 处 理<br />

异 常 之 前 完 成 , 下 一 条 指 令 应 在 (PC - 4) 。 因 此 , 处 理 器 存 储 在 lr_mode 的 值 为<br />

PC 。<br />

从 预 取 中 断 处 理 程 序 返 回<br />

如 果 处 理 器 试 图 在 非 法 地 址 取 指 令 , 则 该 指 令 被 标 志 为 无 效 。 继 续 执 行 已 经 在 流<br />

水 线 中 的 指 令 至 遇 到 产 生 “ 预 取 中 断 ” 处 的 无 效 指 令 为 止 。<br />

如 有 将 虚 拟 存 储 器 位 置 映 射 到 该 物 理 存 储 器 的 指 令 , 异 常 处 理 程 序 将 无 映 射 关<br />

系 的 指 令 装 入 物 理 存 储 器 并 使 用 MMU。 然 后 , 处 理 程 序 必 须 返 回 , 再 次 使 着 运<br />

行 产 生 异 常 的 指 令 。 现 在 装 入 并 执 行 指 令 。<br />

因 为 发 出 预 取 中 断 时 程 序 计 数 器 还 没 有 被 更 新 , 所 以 lr_ABT 指 向 产 生 异 常 的 下<br />

一 条 指 令 。 处 理 程 序 必 须 返 回 至 lr_ABT - 4 的 指 令 , 请 使 用 下 列 指 令 :<br />

SUBS pc,lr, #4<br />

将 返 回 地 址 推 入 堆 中 并 在 返 回 时 将 其 弹 出 的 处 理 程 序 入 口 和 出 口 代 码 为 :<br />

SUB<br />

STMFD<br />

;...<br />

LDMFD<br />

lr,lr,#4<br />

sp!,{reglist,lr}<br />

sp!,{reglist,pc}^<br />

对 于 发 生 在 Thumb 状 态 下 的 异 常 , 处 理 程 序 返 回 指 令 (SUBS pc,lr,#4) 改 变 了 程<br />

序 计 数 器 , 将 其 指 向 产 生 中 断 指 令 的 地 址 。 由 于 程 序 计 数 器 的 更 新 不 是 在 处 理 异<br />

常 之 前 完 成 , 中 断 指 令 应 在 (PC - 4)。 因 此 , 处 理 器 存 储 在 lr_mode 的 值 为 PC。<br />

6-10 © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 <strong>ARM</strong> DUI 0203BSC

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!