gbasys
diff src/syscall.c @ 0:875ef6085efc
gbasys mercurial repository
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 04 Mar 2012 04:04:25 +0200 |
parents | |
children | c50064b181c2 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/syscall.c Sun Mar 04 04:04:25 2012 +0200 1.3 @@ -0,0 +1,49 @@ 1.4 +/* 1.5 +Copyright 2004 John Tsiombikas <nuclear@siggraph.org> 1.6 + 1.7 +This file is part of libgba, a library for GameBoy Advance development. 1.8 + 1.9 +This program is free software; you can redistribute it and/or modify 1.10 +it under the terms of the GNU General Public License as published by 1.11 +the Free Software Foundation; either version 2 of the License, or 1.12 +(at your option) any later version. 1.13 + 1.14 +This program is distributed in the hope that it will be useful, 1.15 +but WITHOUT ANY WARRANTY; without even the implied warranty of 1.16 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1.17 +GNU General Public License for more details. 1.18 + 1.19 +You should have received a copy of the GNU General Public License 1.20 +along with this program; if not, write to the Free Software 1.21 +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 1.22 +*/ 1.23 + 1.24 +#include "libgba_config.h" 1.25 + 1.26 +#include <stdio.h> 1.27 +#include <stdarg.h> 1.28 +#include "syscall.h" 1.29 + 1.30 +void halt(void) { 1.31 + __syscall(2); 1.32 +} 1.33 + 1.34 +void stop(void) { 1.35 + __syscall(3); 1.36 +} 1.37 + 1.38 +void print_vba(const char *str, ...) { 1.39 + char buf[128]; 1.40 + va_list arg_list; 1.41 + 1.42 + va_start(arg_list, str); 1.43 + vsnprintf(buf, 128, str, arg_list); 1.44 + va_end(arg_list); 1.45 + 1.46 + __asm__ __volatile__( 1.47 + "mov r0, %0\n\t" 1.48 + "swi 0xff0000\n\t" : 1.49 + : "r" (buf) 1.50 + : "r0" 1.51 + ); 1.52 +}