Module Name: src Committed By: matt Date: Sun Aug 18 06:29:29 UTC 2013
Modified Files: src/sys/arch/arm/arm: blockio.S bus_space_asm_generic.S bus_space_notimpl.S vectors.S src/sys/arch/arm/arm32: bcopy_page.S setcpsr.S setstack.S src/sys/arch/arm/mainbus: mainbus_io_asm.S Log Message: Move parts of cpu.h that are not needed by MI code in <arm/locore.h> Don't include <machine/cpu.h> or <machine/frame.h>, use <arm/locore.h> Use <arm/asm.h> instead of <machine/arm.h> To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/arm/blockio.S \ src/sys/arch/arm/arm/vectors.S cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/arm/bus_space_asm_generic.S cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/arm/bus_space_notimpl.S cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/arm32/bcopy_page.S cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/arm32/setcpsr.S cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/arm32/setstack.S cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/mainbus/mainbus_io_asm.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/arm/blockio.S diff -u src/sys/arch/arm/arm/blockio.S:1.7 src/sys/arch/arm/arm/blockio.S:1.8 --- src/sys/arch/arm/arm/blockio.S:1.7 Sun Aug 11 03:09:41 2013 +++ src/sys/arch/arm/arm/blockio.S Sun Aug 18 06:29:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: blockio.S,v 1.7 2013/08/11 03:09:41 matt Exp $ */ +/* $NetBSD: blockio.S,v 1.8 2013/08/18 06:29:29 matt Exp $ */ /* * Copyright (c) 2001 Ben Harris. @@ -48,7 +48,7 @@ #include <machine/asm.h> -RCSID("$NetBSD: blockio.S,v 1.7 2013/08/11 03:09:41 matt Exp $") +RCSID("$NetBSD: blockio.S,v 1.8 2013/08/18 06:29:29 matt Exp $") /* * Read bytes from an I/O address into a block of memory @@ -101,6 +101,7 @@ ENTRY(read_multi_1) ldrbgt r3, [r0] strbgt r3, [r1], #1 ldmdb fp, {fp, sp, pc} +END(read_multi_1) /* * Write bytes to an I/O address from a block of memory @@ -152,6 +153,7 @@ ENTRY(write_multi_1) ldrbgt r3, [r1], #1 strbgt r3, [r0] ldmdb fp, {fp, sp, pc} +END(write_multi_1) /* * Reads short ints (16 bits) from an I/O address into a block of memory @@ -164,7 +166,7 @@ ENTRY(write_multi_1) ENTRY(insw) /* Make sure that we have a positive length */ cmp r2, #0x00000000 - movle pc, lr + RETc(le) /* If the destination address and the size is word aligned, do it fast */ @@ -182,7 +184,7 @@ ENTRY(insw) strb r3, [r1], #0x0001 bgt .Linswloop - mov pc, lr + RET /* Word aligned insw */ @@ -198,7 +200,8 @@ ENTRY(insw) subs r2, r2, #0x00000002 /* Next */ bgt .Lfastinswloop - mov pc, lr + RET +END(insw) /* @@ -212,7 +215,7 @@ ENTRY(insw) ENTRY(outsw) /* Make sure that we have a positive length */ cmp r2, #0x00000000 - movle pc, lr + RETc(le) /* If the destination address and the size is word aligned, do it fast */ @@ -231,7 +234,7 @@ ENTRY(outsw) str r3, [r0] bgt .Loutswloop - mov pc, lr + RET /* Word aligned outsw */ @@ -259,7 +262,8 @@ ENTRY(outsw) bgt .Lfastoutswloop - mov pc, lr + RET +END(outsw) /* * reads short ints (16 bits) from an I/O address into a block of memory @@ -274,7 +278,7 @@ ENTRY(outsw) ENTRY(insw16) /* Make sure that we have a positive length */ cmp r2, #0x00000000 - movle pc, lr + RETc(le) /* If the destination address is word aligned and the size suitably aligned, do it fast */ @@ -318,6 +322,7 @@ ENTRY(insw16) bgt .Linsw16loop pop {r4,r5,pc} /* Restore regs and go home */ +END(insw16) /* @@ -331,7 +336,7 @@ ENTRY(insw16) ENTRY(outsw16) /* Make sure that we have a positive length */ cmp r2, #0x00000000 - movle pc, lr + RETc(le) /* If the destination address is word aligned and the size suitably aligned, do it fast */ @@ -385,6 +390,7 @@ ENTRY(outsw16) bgt .Loutsw16loop pop {r4,r5,pc} /* and go home */ +END(outsw16) /* * reads short ints (16 bits) from an I/O address into a block of memory @@ -400,7 +406,7 @@ ENTRY(outsw16) ENTRY(inswm8) /* Make sure that we have a positive length */ cmp r2, #0x00000000 - movle pc, lr + RETc(le) /* If the destination address is word aligned and the size suitably aligned, do it fast */ @@ -481,6 +487,7 @@ ENTRY(inswm8) .Linswm8_l1: pop {r4-r9,pc} /* And go home */ +END(inswm8) /* * write short ints (16 bits) to an I/O address from a block of memory @@ -496,7 +503,7 @@ ENTRY(inswm8) ENTRY(outswm8) /* Make sure that we have a positive length */ cmp r2, #0x00000000 - movle pc, lr + RETc(le) /* If the destination address is word aligned and the size suitably aligned, do it fast */ @@ -585,3 +592,4 @@ ENTRY(outswm8) .Loutswm8_l1: pop {r4-r8,pc} /* And go home */ +END(outswm8) Index: src/sys/arch/arm/arm/vectors.S diff -u src/sys/arch/arm/arm/vectors.S:1.7 src/sys/arch/arm/arm/vectors.S:1.8 --- src/sys/arch/arm/arm/vectors.S:1.7 Wed Jun 12 21:34:12 2013 +++ src/sys/arch/arm/arm/vectors.S Sun Aug 18 06:29:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: vectors.S,v 1.7 2013/06/12 21:34:12 matt Exp $ */ +/* $NetBSD: vectors.S,v 1.8 2013/08/18 06:29:29 matt Exp $ */ /* * Copyright (C) 1994-1997 Mark Brinicombe @@ -69,6 +69,7 @@ _C_LABEL(page0rel): #elif !defined(ARM_HAS_VBAR) b .Lfiqvector #endif +END(page0rel) #endif /* CPU_ARMV7 || CPU_ARM11 || ARM_HAS_VBAR */ #ifndef ARM_HAS_VBAR @@ -85,6 +86,7 @@ _C_LABEL(page0): #ifdef __ARM_FIQ_INDIRECT ldr pc, .Lfiq_target #endif +END(page0) #endif /* !ARM_HAS_VBAR */ #ifndef __ARM_FIQ_INDIRECT .Lfiqvector: Index: src/sys/arch/arm/arm/bus_space_asm_generic.S diff -u src/sys/arch/arm/arm/bus_space_asm_generic.S:1.9 src/sys/arch/arm/arm/bus_space_asm_generic.S:1.10 --- src/sys/arch/arm/arm/bus_space_asm_generic.S:1.9 Tue Mar 19 17:11:13 2013 +++ src/sys/arch/arm/arm/bus_space_asm_generic.S Sun Aug 18 06:29:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_space_asm_generic.S,v 1.9 2013/03/19 17:11:13 skrll Exp $ */ +/* $NetBSD: bus_space_asm_generic.S,v 1.10 2013/08/18 06:29:29 matt Exp $ */ /* * Copyright (c) 1997 Causality Limited. @@ -106,6 +106,7 @@ ENTRY_NP(generic_armv4_bs_w_2) DSB RET END(generic_armv4_bs_w_2) +END(generic_armv4_bs_w_2_swap) #endif ENTRY_NP(generic_bs_w_4_swap) @@ -115,6 +116,7 @@ ENTRY_NP(generic_bs_w_4) DSB RET END(generic_bs_w_4) +END(generic_bs_w_4_swap) /* * read multiple @@ -504,6 +506,7 @@ ENTRY_NP(generic_armv4_bs_sr_2) DSB RET END(generic_armv4_bs_sr_2) +END(generic_armv4_bs_sr_2_swap) #endif ENTRY_NP(generic_bs_sr_4_swap) @@ -522,6 +525,7 @@ ENTRY_NP(generic_bs_sr_4) DSB RET END(generic_bs_sr_4) +END(generic_bs_sr_4_swap) /* * copy region Index: src/sys/arch/arm/arm/bus_space_notimpl.S diff -u src/sys/arch/arm/arm/bus_space_notimpl.S:1.4 src/sys/arch/arm/arm/bus_space_notimpl.S:1.5 --- src/sys/arch/arm/arm/bus_space_notimpl.S:1.4 Sun Dec 11 12:16:41 2005 +++ src/sys/arch/arm/arm/bus_space_notimpl.S Sun Aug 18 06:29:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_space_notimpl.S,v 1.4 2005/12/11 12:16:41 christos Exp $ */ +/* $NetBSD: bus_space_notimpl.S,v 1.5 2013/08/18 06:29:29 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe. @@ -43,7 +43,7 @@ #define __C(x,y) __CONCAT(x,y) #define __S(s) __STRING(s) #define NAME(func) __C(BUS_SPACE,__C(_bs_,func)) -#define LNAME(func) __C(L,NAME(func)) +#define LNAME(func) __C(.L,NAME(func)) #define __L(x) _C_LABEL(x) #define GLOBAL(func) .global __L(NAME(func)) @@ -56,22 +56,23 @@ #define NOT_IMPL(func) \ GLOBAL(func) ; \ LABEL(func) ; \ - stmfd sp!, {r0-r3} ; \ + push {r0-r3} ; \ adr r1, LNAME(__C(func,_funcname)) ; \ mov r2, sp ; \ - b bs_notimpl_panic ; \ + b .Lbs_notimpl_panic ; \ ; \ LLABEL(__C(func,_funcname)) ; \ .asciz __S(func) ; \ .align 0 ; \ + END(NAME(func)) -bs_notimpl_message: +.Lbs_notimpl_message: .ascii __S(BUS_SPACE) .asciz "_%s: args at %p" .align 0 -bs_notimpl_panic: - adr r0, bs_notimpl_message +.Lbs_notimpl_panic: + adr r0, .Lbs_notimpl_message b _C_LABEL(panic) /* Index: src/sys/arch/arm/arm32/bcopy_page.S diff -u src/sys/arch/arm/arm32/bcopy_page.S:1.8 src/sys/arch/arm/arm32/bcopy_page.S:1.9 --- src/sys/arch/arm/arm32/bcopy_page.S:1.8 Sun Dec 11 12:16:41 2005 +++ src/sys/arch/arm/arm32/bcopy_page.S Sun Aug 18 06:29:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: bcopy_page.S,v 1.8 2005/12/11 12:16:41 christos Exp $ */ +/* $NetBSD: bcopy_page.S,v 1.9 2013/08/18 06:29:29 matt Exp $ */ /* * Copyright (c) 1995 Scott Stevens @@ -73,8 +73,8 @@ #endif /* ! COPY_CHUNK */ #ifndef SAVE_REGS -#define SAVE_REGS stmfd sp!, {r4-r8, lr} -#define RESTORE_REGS ldmfd sp!, {r4-r8, pc} +#define SAVE_REGS push {r4-r8, lr} +#define RESTORE_REGS pop {r4-r8, pc} #endif ENTRY(bcopy_page) @@ -115,6 +115,7 @@ ENTRY(bcopy_page) bne 1b RESTORE_REGS /* ...and return. */ +END(bcopy_page) /* * bzero_page(dest) @@ -130,7 +131,7 @@ ENTRY(bcopy_page) */ ENTRY(bzero_page) - stmfd sp!, {r4-r8, lr} + push {r4-r8, lr} #ifdef BIG_LOOPS mov r2, #(PAGE_SIZE >> 9) #else @@ -175,7 +176,8 @@ ENTRY(bzero_page) subs r2, r2, #1 bne 1b - ldmfd sp!, {r4-r8, pc} + pop {r4-r8, pc} +END(bzero_page) #else /* __XSCALE__ */ @@ -184,7 +186,7 @@ ENTRY(bzero_page) */ ENTRY(bcopy_page) pld [r0] - stmfd sp!, {r4, r5} + push {r4, r5} mov ip, #32 ldr r2, [r0], #0x04 /* 0x00 */ ldr r3, [r0], #0x04 /* 0x04 */ @@ -242,8 +244,9 @@ ENTRY(bcopy_page) ldrgt r3, [r0], #0x04 /* 0x84 */ strd r4, [r1], #0x08 bgt 1b - ldmfd sp!, {r4, r5} - mov pc, lr + pop {r4, r5} + RET +END(bcopy_page) /* * XSCALE version of bzero_page @@ -270,5 +273,6 @@ ENTRY(bzero_page) strd r2, [r0], #8 subs r1, r1, #128 bne 1b - mov pc, lr + RET +END(bzero_page) #endif /* __XSCALE__ */ Index: src/sys/arch/arm/arm32/setcpsr.S diff -u src/sys/arch/arm/arm32/setcpsr.S:1.2 src/sys/arch/arm/arm32/setcpsr.S:1.3 --- src/sys/arch/arm/arm32/setcpsr.S:1.2 Thu Aug 15 01:37:02 2002 +++ src/sys/arch/arm/arm32/setcpsr.S Sun Aug 18 06:29:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: setcpsr.S,v 1.2 2002/08/15 01:37:02 briggs Exp $ */ +/* $NetBSD: setcpsr.S,v 1.3 2013/08/18 06:29:29 matt Exp $ */ /* * Copyright (c) 1994 Mark Brinicombe. @@ -63,7 +63,8 @@ ENTRY_NP(SetCPSR) mov r0, r3 /* Return the old CPSR */ - mov pc, lr + RET +END(SetCPSR) /* Gets the CPSR register @@ -73,6 +74,5 @@ ENTRY_NP(SetCPSR) ENTRY_NP(GetCPSR) mrs r0, cpsr /* Get the CPSR */ - - mov pc, lr - + RET +END(GetCPSR) Index: src/sys/arch/arm/arm32/setstack.S diff -u src/sys/arch/arm/arm32/setstack.S:1.5 src/sys/arch/arm/arm32/setstack.S:1.6 --- src/sys/arch/arm/arm32/setstack.S:1.5 Thu Feb 16 02:35:52 2012 +++ src/sys/arch/arm/arm32/setstack.S Sun Aug 18 06:29:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: setstack.S,v 1.5 2012/02/16 02:35:52 christos Exp $ */ +/* $NetBSD: setstack.S,v 1.6 2013/08/18 06:29:29 matt Exp $ */ /* * Copyright (c) 1994 Mark Brinicombe. @@ -49,7 +49,7 @@ #include <arm/armreg.h> #include <machine/asm.h> - RCSID("$NetBSD: setstack.S,v 1.5 2012/02/16 02:35:52 christos Exp $") + RCSID("$NetBSD: setstack.S,v 1.6 2013/08/18 06:29:29 matt Exp $") /* To set the stack pointer for a particular mode we must switch * to that mode update the banked r13 and then switch back. @@ -69,7 +69,8 @@ ENTRY(set_stackptr) msr cpsr_c, r3 /* Restore the old mode */ - mov pc, lr /* Exit */ + RET /* Exit */ +END(set_stackptr) /* To get the stack pointer for a particular mode we must switch * to that mode copy the banked r13 and then switch back. @@ -84,10 +85,11 @@ ENTRY(get_stackptr) orr r2, r2, r0 msr cpsr_c, r2 - mov r0, sp /* Set the stack pointer */ + mov r0, sp /* Get the stack pointer */ msr cpsr_c, r3 /* Restore the old mode */ - mov pc, lr /* Exit */ + RET /* Exit */ +END(get_stackptr) /* End of setstack.S */ Index: src/sys/arch/arm/mainbus/mainbus_io_asm.S diff -u src/sys/arch/arm/mainbus/mainbus_io_asm.S:1.1 src/sys/arch/arm/mainbus/mainbus_io_asm.S:1.2 --- src/sys/arch/arm/mainbus/mainbus_io_asm.S:1.1 Sat Feb 24 19:38:02 2001 +++ src/sys/arch/arm/mainbus/mainbus_io_asm.S Sun Aug 18 06:29:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: mainbus_io_asm.S,v 1.1 2001/02/24 19:38:02 reinoud Exp $ */ +/* $NetBSD: mainbus_io_asm.S,v 1.2 2013/08/18 06:29:29 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe. @@ -45,17 +45,20 @@ ENTRY(mainbus_bs_r_1) ldrb r0, [r1, r2, lsl #2] - mov pc, lr + RET +END(mainbus_bs_r_1) ENTRY(mainbus_bs_r_2) ldr r0, [r1, r2, lsl #2] bic r0, r0, #0xff000000 bic r0, r0, #0x00ff0000 - mov pc, lr + RET +END(mainbus_bs_r_2) ENTRY(mainbus_bs_r_4) ldr r0, [r1, r2, lsl #2] - mov pc, lr + RET +END(mainbus_bs_r_4) /* * write single @@ -63,17 +66,20 @@ ENTRY(mainbus_bs_r_4) ENTRY(mainbus_bs_w_1) strb r3, [r1, r2, lsl #2] - mov pc, lr + RET +END(mainbus_bs_w_1) ENTRY(mainbus_bs_w_2) mov r3, r3, lsl #16 orr r3, r3, r3, lsr #16 str r3, [r1, r2, lsl #2] - mov pc, lr + RET +END(mainbus_bs_w_2) ENTRY(mainbus_bs_w_4) str r3, [r1, r2, lsl #2] - mov pc, lr + RET +END(mainbus_bs_w_4) /* * read multiple @@ -84,6 +90,7 @@ ENTRY(mainbus_bs_rm_2) mov r1, r3 ldr r2, [sp, #0] b _C_LABEL(insw16) +END(mainbus_bs_rm_2) /* * write multiple @@ -95,18 +102,20 @@ ENTRY(mainbus_bs_wm_1) /* Make sure that we have a positive length */ cmp r2, #0x00000000 - movle pc, lr + RETc(le) -mainbus_wm_1_loop: +.Lmainbus_wm_1_loop: ldrb r1, [r3], #0x0001 str r1, [r0] subs r2, r2, #0x00000001 - bgt mainbus_wm_1_loop + bgt .Lmainbus_wm_1_loop - mov pc, lr + RET +END(mainbus_bs_wm_1) ENTRY(mainbus_bs_wm_2) add r0, r1, r2, lsl #2 mov r1, r3 ldr r2, [sp, #0] b _C_LABEL(outsw16) +END(mainbus_bs_wm_2)