42 lines
911 B
ArmAsm
42 lines
911 B
ArmAsm
|
/*
|
||
|
* Copyright (C) 2009 Apple Inc. All rights reserved.
|
||
|
*
|
||
|
* This document is the property of Apple Inc.
|
||
|
* It is considered confidential and proprietary.
|
||
|
*
|
||
|
* This document may not be reproduced or transmitted in any form,
|
||
|
* in whole or in part, without the express written permission of
|
||
|
* Apple Inc.
|
||
|
*/
|
||
|
|
||
|
.text
|
||
|
.global _cortex_hang_start, _cortex_hang_ffe, _cortex_hang_end
|
||
|
.thumb
|
||
|
.syntax unified
|
||
|
|
||
|
// Believe it or not, without this, it does not fail
|
||
|
#define NOP mov r8,r8
|
||
|
|
||
|
// R0 holds the number of iterations we should run
|
||
|
// start this routine at a page boundary
|
||
|
_cortex_hang_start:
|
||
|
// save some registers and set aside a word
|
||
|
push {r4,r5,r6,r7,lr}
|
||
|
sub sp, #4
|
||
|
1:
|
||
|
cmp r0, #0
|
||
|
beq 1f
|
||
|
NOP // 0xff0
|
||
|
NOP // 0xff2
|
||
|
NOP // 0xff4
|
||
|
NOP // 0xff6
|
||
|
subs r0, #1 // 0xff8
|
||
|
str.w ip, [sp] // 0xffa
|
||
|
_cortex_hang_ffe:
|
||
|
bl 1b // 0xffe
|
||
|
1:
|
||
|
add sp, #4
|
||
|
pop {r4,r5,r6,r7,pc}
|
||
|
bx lr
|
||
|
_cortex_hang_end:
|