Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2016-02-09 16:44:05 +0300
committerNick Clifton <nickc@redhat.com>2016-02-09 16:44:05 +0300
commit9676aeef0d672fea93310df14d36c1c9904d0179 (patch)
tree9c03e4fae190b722d24752df6161f3b1adf74b24 /libgloss/msp430
parentc4dcfc1bda72883aa20eba627af840d1a4256c7b (diff)
Seperate MSP430 cio syscalls into individual function sections.
START_FUNC: New macro. END_FUNC: New macro. exit, isatty, getpid, sc2: Use the new macros.
Diffstat (limited to 'libgloss/msp430')
-rw-r--r--libgloss/msp430/ciosyscalls.S75
1 files changed, 46 insertions, 29 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,28 +21,60 @@
.macro sc,a
sc2 \a,\a
.endm
+
+.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
+
+.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
- .weak \name
- .global \name
-\name:
+ START_FUNC \name
call_ #__errno
movx_ #ENOSYS, @R12
MOV.W #-1,R12
ret_
+ END_FUNC \name
.endm
- .weak exit
- .weak _exit
- .global exit
- .global _exit
-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
-
#define SC(n) sc2 n,SYS_##n
SC (open)
@@ -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_