|
|
|
#include <ppc_asm.tmpl>
|
|
|
|
#include <ppc_defs.h>
|
|
|
|
#include <syscall.h>
|
|
|
|
|
|
|
|
#ifdef CONFIG_ARM /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
|
|
|
|
#warning ARM version not implemented yet /* XXXXXXXXXXXXXXXXXXXXXXXXXXXX */
|
|
|
|
.global mon_getc
|
|
|
|
.type mon_getc,function
|
|
|
|
mon_getc:
|
|
|
|
.global mon_tstc
|
|
|
|
.type mon_tstc,function
|
|
|
|
mon_tstc:
|
|
|
|
.global mon_putc
|
|
|
|
.type mon_putc,function
|
|
|
|
mon_putc:
|
|
|
|
.global mon_puts
|
|
|
|
.type mon_puts,function
|
|
|
|
mon_puts:
|
|
|
|
.global mon_printf
|
|
|
|
.type mon_printf,function
|
|
|
|
mon_printf:
|
|
|
|
.global mon_install_hdlr
|
|
|
|
.type mon_install_hdlr,function
|
|
|
|
mon_install_hdlr:
|
|
|
|
.global mon_free_hdlr
|
|
|
|
.type mon_free_hdlr,function
|
|
|
|
mon_free_hdlr:
|
|
|
|
.global mon_malloc
|
|
|
|
.type mon_malloc,function
|
|
|
|
mon_malloc:
|
|
|
|
.global mon_free
|
|
|
|
.type mon_free,function
|
|
|
|
mon_free:
|
|
|
|
@ args = 0, pretend = 0, frame = 0
|
|
|
|
@ frame_needed = 1, current_function_anonymous_args = 0
|
|
|
|
mov ip, sp
|
|
|
|
stmfd sp!, {fp, ip, lr, pc}
|
|
|
|
sub fp, ip, #4
|
|
|
|
ldmea fp, {fp, sp, pc}
|
|
|
|
#elif defined(CONFIG_MIPS)/* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
|
|
|
|
#warning MIPS version not implemented yet
|
|
|
|
.global mon_getc
|
|
|
|
.type mon_getc,function
|
|
|
|
mon_getc:
|
|
|
|
.global mon_tstc
|
|
|
|
.type mon_tstc,function
|
|
|
|
mon_tstc:
|
|
|
|
.global mon_putc
|
|
|
|
.type mon_putc,function
|
|
|
|
mon_putc:
|
|
|
|
.global mon_puts
|
|
|
|
.type mon_puts,function
|
|
|
|
mon_puts:
|
|
|
|
.global mon_printf
|
|
|
|
.type mon_printf,function
|
|
|
|
mon_printf:
|
|
|
|
.global mon_install_hdlr
|
|
|
|
.type mon_install_hdlr,function
|
|
|
|
mon_install_hdlr:
|
|
|
|
.global mon_free_hdlr
|
|
|
|
.type mon_free_hdlr,function
|
|
|
|
mon_free_hdlr:
|
|
|
|
.global mon_malloc
|
|
|
|
.type mon_malloc,function
|
|
|
|
mon_malloc:
|
|
|
|
.global mon_free
|
|
|
|
.type mon_free,function
|
|
|
|
mon_free:
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
#ifdef CONFIG_I386 /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
|
|
|
|
#define SYMBOL_NAME(X) X
|
|
|
|
#define SYMBOL_NAME_LABEL(X) X##:
|
|
|
|
|
|
|
|
#define SYSCALL(name,n) \
|
|
|
|
.globl SYMBOL_NAME(name) ; \
|
|
|
|
SYMBOL_NAME_LABEL(name) ; \
|
|
|
|
movl $n, %eax ;\
|
|
|
|
pushl %ebx; \
|
|
|
|
pushl %ecx; \
|
|
|
|
int $0x40 ;\
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* CONFIG_I386 */
|
|
|
|
|
|
|
|
#ifdef CONFIG_PPC
|
|
|
|
#define SYSCALL(name,n) \
|
|
|
|
.globl name ; \
|
|
|
|
name: ; \
|
|
|
|
li r0,n ; \
|
|
|
|
sc ; \
|
|
|
|
blr
|
|
|
|
#endif /* CONFIG_PPC */
|
|
|
|
|
|
|
|
.text
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Make sure these functions are in the same order as they
|
|
|
|
* appear in the "include/syscall.h" header file !!!
|
|
|
|
*/
|
|
|
|
|
|
|
|
SYSCALL(mon_getc,SYSCALL_GETC)
|
|
|
|
SYSCALL(mon_tstc,SYSCALL_TSTC)
|
|
|
|
SYSCALL(mon_putc,SYSCALL_PUTC)
|
|
|
|
SYSCALL(mon_puts,SYSCALL_PUTS)
|
|
|
|
SYSCALL(mon_printf,SYSCALL_PRINTF)
|
|
|
|
SYSCALL(mon_install_hdlr,SYSCALL_INSTALL_HDLR)
|
|
|
|
SYSCALL(mon_free_hdlr,SYSCALL_FREE_HDLR)
|
|
|
|
SYSCALL(mon_malloc,SYSCALL_MALLOC)
|
|
|
|
SYSCALL(mon_free,SYSCALL_FREE)
|
|
|
|
SYSCALL(mon_udelay,SYSCALL_UDELAY)
|
|
|
|
SYSCALL(mon_get_timer,SYSCALL_GET_TIMER)
|
|
|
|
#endif /* CONFIG_ARM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
|