summaryrefslogtreecommitdiff
path: root/testasmcomp/arm.S
blob: 196a3f39740c254c9f2a6aee5180164217041e7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/***********************************************************************/
/*                                                                     */
/*                           Objective Caml                            */
/*                                                                     */
/*            Xavier Leroy, projet Cristal, INRIA Rocquencourt         */
/*                                                                     */
/*  Copyright 1998 Institut National de Recherche en Informatique et   */
/*  en Automatique.  All rights reserved.  This file is distributed    */
/*  under the terms of the Q Public License version 1.0.               */
/*                                                                     */
/***********************************************************************/

/* $Id$ */

fp      .req    r11
ip      .req    r12
sp      .req    r13
lr      .req    r14
pc      .req    r15

        .text

        .global call_gen_code
        .type   call_gen_code, %function
        .align  0
call_gen_code:
        mov     ip, sp
        stmfd   sp!, {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
        sub     fp, ip, #4
    @ r0 is function to call
    @ r1, r2, r3 are arguments 1, 2, 3
        mov     r4, r0
        mov     r0, r1
        mov     r1, r2
        mov     r2, r3
        mov     lr, pc
        mov     pc, r4
        ldmea   fp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}

        .global caml_c_call
        .type   caml_c_call, %function
        .align  0
caml_c_call:
    @ function to call is in r10
        mov     pc, r10