From 9676aeef0d672fea93310df14d36c1c9904d0179 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 9 Feb 2016 13:44:05 +0000 Subject: [PATCH] Seperate MSP430 cio syscalls into individual function sections. START_FUNC: New macro. END_FUNC: New macro. exit, isatty, getpid, sc2: Use the new macros. --- libgloss/msp430/ciosyscalls.S | 77 +++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/libgloss/msp430/ciosyscalls.S b/libgloss/msp430/ciosyscalls.S index abb01b03e..889deae9e 100644 --- a/libgloss/msp430/ciosyscalls.S +++ b/libgloss/msp430/ciosyscalls.S @@ -21,27 +21,59 @@ .macro sc,a sc2 \a,\a .endm - -.macro sc2,name,num - .weak \name - .global \name -\name: - call_ #__errno - movx_ #ENOSYS, @R12 - MOV.W #-1,R12 - ret_ + +.macro START_FUNC name1, name2=foo + .pushsection .text.\name1,"ax",@progbits + .p2align 1 + .weak \name1 + .global \name1 +\name1: + .ifnc \name2,foo + .weak \name2 + .global \name2 +\name2: + .endif .endm - .weak exit - .weak _exit - .global exit - .global _exit -exit: -_exit: +.macro END_FUNC name1, name2=foo + .type \name1 , @function + .size \name1 , . - \name1 + .ifnc \name2,foo + .type \name2 , @function + .size \name2 , . - \name2 + .endif + .popsection +.endm + + +START_FUNC exit, _exit /* For some reason, the board fails to stop at a breakpoint placed on top of a software breakpoint instruction. */ /* MOV.B #0,R3 ; this is a software breakpoint instruction */ 1: br_ #1b +END_FUNC exit, _exit + + +START_FUNC isatty,_isatty + MOV #1,R12 + ret_ +END_FUNC isatty,_isatty + + +START_FUNC getpid + MOV #42,R12 + ret_ +END_FUNC getpid + + +.macro sc2,name,num + START_FUNC \name + call_ #__errno + movx_ #ENOSYS, @R12 + MOV.W #-1,R12 + ret_ + END_FUNC \name +.endm #define SC(n) sc2 n,SYS_##n @@ -52,18 +84,3 @@ _exit: SC (fstat) SC (lseek) SC (kill) - - .weak isatty - .global isatty -isatty: - .weak _isatty - .global _isatty -_isatty: - MOV #1,R12 - ret_ - - .weak getpid - .global getpid -getpid: - MOV #42,R12 - ret_