/**
 * @file delay.s
 * @brief functions to provide smc interface
 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
 *
 * This software is proprietary of Samsung Electronics.
 * No part of this software, either material or conceptual may be copied
 * or distributed, transmitted, transcribed, stored in a retrieval system
 * or translated into any human or computer language in any form by any means,
 * electronic, mechanical, manual or otherwise, or disclosed to third parties
 * without the express written permission of Samsung Electronics.
 */

#define TIMER_PERIOD	417	/* 41.7 ns * 10 */

	export delay_timer

	area text, code, readonly
	preserve8
	arm
delay_timer
	stmfd	sp!, {r4-r11, lr}
	mov	r4, r0
	mov	r8, #10
	mul	r4, r4, r8
	mov	r9, #TIMER_PERIOD


	mrrc	p15, 0, r5, r6, c14
	cmp	r5, 0
	beq	fail

loop
	mrrc	p15, 0, r7, r8, c14
	sub	r7, r7, r5
	mov r10, r7
	mul	r7, r7, r9
	cmp	r7, r4
	blt	loop
	
	mov	r0, 0
	dsb
	isb
	ldmfd	sp!, {r4-r11, pc}
	bx	lr

fail
	mov	r0, #-1
	dsb
	isb
	ldmfd	sp!, {r4-r11, pc}
	bx	lr

	end
