X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Fm68k%2Fasmpart.S;h=22b2e9ae80502783b60ee0275449fb5df250e6db;hb=9f859ad50d3d5d98c185d40b86b2179bc4dc9aeb;hp=d52430d6d814c841a075fbb44286b15298e2964e;hpb=6ce7bf5225852208f320c07b645ce2d8011e4e9f;p=cacao.git diff --git a/src/vm/jit/m68k/asmpart.S b/src/vm/jit/m68k/asmpart.S index d52430d6d..22b2e9ae8 100644 --- a/src/vm/jit/m68k/asmpart.S +++ b/src/vm/jit/m68k/asmpart.S @@ -1,14 +1,37 @@ -/* src/vm/jit/m68k/asmpart.S - * for cacao - * Roland Lezuo - */ +/* src/vm/jit/m68k/asmpart.S - Java-C interface functions for m68k + + Copyright (C) 2006, 2007 R. Grafl, A. Krall, C. Kruegel, + C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring, + E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, + J. Wenninger, Institut f. Computersprachen - TU Wien + + This file is part of CACAO. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + +*/ + #include "config.h" -#include "vm/jit/m68k/offsets.h" #include "md-abi.h" + #include "vm/jit/methodheader.h" + .text .globl asm_vm_call_method @@ -23,9 +46,7 @@ .globl asm_patcher_wrapper -.globl asm_getclassvalues_atomic .globl asm_abstractmethoderror -.globl asm_criticalsections .globl asm_handle_exception .globl asm_handle_nat_exception @@ -92,8 +113,8 @@ asm_vm_call_method_double: movel %sp@(12*4+6*8+2*4),%a2 /* arg array */ movel %sp@(12*4+6*8+3*4),%d2 /* arg count */ - movel %a3, %sp@(12*4+6*8) /* copy method address to stackslot */ - leal %sp@(12*4+6*8), %a3 /* and store that address in %a3 */ + movel %a3, %sp@(11*4+6*8) /* copy method address to stackslot */ + leal %sp@(11*4+6*8), %a3 /* and store that address in %a3 */ #endif moveal %sp, %a5 /* memorize stack */ @@ -274,40 +295,6 @@ L_asm_patcher_wrapper_exception: jmp asm_handle_exception /* handle exception */ illegal /* XXX: we never come back */ -/******************************************************************************** - Reads a few values atomically. - C signature: - void asm_getclassvalues_atomic(vftbl_t *super, vftbl_t *sub, castinfo *out); - - super ... sp@(4) - sub ... sp@(8) - out ... sp@(12) -********************************************************************************/ -asm_getclassvalues_atomic: -_crit_restart: -_crit_begin: - moveal %sp@(4), %a0 - movel %a0@(offbaseval), %d0 - movel %a0@(offdiffval), %d1 - - moveal %sp@(8), %a0 - moveal %a0@(offbaseval), %a0 -_crit_end: - moveal %sp@(12), %a1 - movel %d0, %a1@(offcast_super_baseval) - movel %d1, %a1@(offcast_super_diffval) - movel %a0, %a1@(offcast_sub_baseval) - - rts -.data -asm_criticalsections: -#if defined(ENABLE_THREADS) - .long _crit_begin - .long _crit_end - .long _crit_restart -#endif - .long 0 -.text asm_abstractmethoderror: