From mboxrd@z Thu Jan 1 00:00:00 1970 From: linux@arm.linux.org.uk (Russell King - ARM Linux) Date: Mon, 11 Jun 2012 10:44:23 +0100 Subject: [PATCH] ARM: EXYNOS: Add smc call to support trustzone feature In-Reply-To: <20120611090440.GA27207@july> References: <20120611090440.GA27207@july> Message-ID: <20120611094423.GC11168@n2100.arm.linux.org.uk> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Mon, Jun 11, 2012 at 06:04:40PM +0900, Kyungmin Park wrote: > +/* > + * Read registers > + * Function signature: u32 exynos_smc_readsfr(u32 addr, u32 *val) What address space is 'addr' in? > + */ > +ENTRY(exynos_smc_readsfr) > + stmfd sp!, {r4-r11, lr} > + mov r2, #0 > + lsr r0, r0, #2 > + mov ip, r1 > + mov r3, r2 > + orr r1, r0, #0xC0000000 I assume this is not PAGE_OFFSET. > + mvn r0, #100 Hmm. The compiler will automatically use mvn instead of a normal mov with negative numbers. It may be clearer to write: mov r0, #-101 > + dsb > + smc #0 > + cmn r0, #101 Same here: cmp r0, #-101 Notice that writing it this way means it's obvious that you're checking for -101, the original value passed in. > + beq 1f > + cmp r0, #0 > + streq r2, [ip] > + ldmfd sp!, {r4-r11, pc} > +1: subs r0, r1, #0 Isn't this just a normal: movs r0, r1 ? > + streq r2, [ip] > + ldmfd sp!, {r4-r11, pc} > +ENDPROC(exynos_smc_readsfr) In any case, can't this end part be written: cmp r0, #-101 moveq r0, r1 teq r0, #0 @ I prefer teq over cmp to test equality streq r2, [ip] ldmfd sp!, {r4 - r11, pc}