diff options
Diffstat (limited to 'libgloss/xc16x/trap_handle.c')
-rw-r--r-- | libgloss/xc16x/trap_handle.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/libgloss/xc16x/trap_handle.c b/libgloss/xc16x/trap_handle.c new file mode 100644 index 000000000..899cdc20d --- /dev/null +++ b/libgloss/xc16x/trap_handle.c @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2006 KPIT Cummins + * Copyright (C) 2009 Conny Marco Menebröcker + * All rights reserved. + * + * Redistribution and use in source and binary forms is permitted + * provided that the above copyright notice and following paragraph are + * duplicated in all such forms. + * + * This file is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ +int trap0(int file, unsigned long ptr,int len) +{ +asm volatile("TRAP #3"); +return len; +} + + +int trap1(int file, unsigned long ptr,int len) +{ + asm volatile("TRAP #4"); + +} + +int trap_lseek(int file, unsigned long ptr,int len) +{ + asm volatile("TRAP #8"); + +} + + + +volatile int opensys(char *name,int flags,int perms) +{ + #ifndef __xc16xL__ + asm volatile("push r11\n" + "mov r11,r10 \n" + " mov r10,r9 \n" + " mov r9,#0x300 \n" + ); + + #endif + +asm volatile("trap #5"); +#ifndef __xc16xL__ +asm volatile("pop r11"); +#endif +} + +volatile int creatsys(char *name,int perms) +{ + #ifndef __xc16xL__ + asm volatile("push r10\n" + " mov r10,r9 \n" + " mov r9,#0x300 \n" + ); + + #endif + +asm volatile("trap #7"); +#ifndef __xc16xL__ +asm volatile("pop r10"); +#endif +} + + |