source: rtems/c/src/librdbg/src/powerpc/rdbg_cpu_asm.S @ cef2fb5f

4.104.114.84.95
Last change on this file since cef2fb5f was cef2fb5f, checked in by Joel Sherrill <joel.sherrill@…>, on 08/10/99 at 18:08:56

Last minute cleanup patch to close comment from Eric Valette
<valette@…>.

  • Property mode set to 100644
File size: 1.9 KB
Line 
1/*  cpu_asm.s
2 *
3 *  This file contains all assembly code for the Intel i386 implementation
4 *  of RDBG.
5 *
6 * $Id$
7 *
8 */
9
10#include <libcpu/cpu.h>
11#include <libcpu/io.h>
12#include <rtems/score/targopts.h>
13#include <asm.h>
14
15        BEGIN_CODE
16
17/*
18 *  void copyback_data_cache_and_invalidate_instr_cache(addr, size)
19 *
20 *  This routine performs a copy of the data cache
21 *  and invalidate the instruction cache
22 */
23
24        .p2align  5
25        PUBLIC_VAR (copyback_data_cache_and_invalidate_instr_cache)
26
27SYM (copyback_data_cache_and_invalidate_instr_cache):
28        /* r3 address to handle, r4 length in bytes */
29        addi    r6, r0, PPC_CACHE_ALIGNMENT
30        /* r5 = last address to handle */
31        add     r5,r3,r4
32        /* r3 = cache_align(r3, PPC_CACHE_ALIGNMENT) */
33        subi    r0,r6,1
34        andc    r3,r3,r0
35        /* R4 = R3 = copy of first address */
36        mr      r4,r3
37        /*
38         * Copyback data cache
39         */
401:      cmplw   r4,r5    /* r4 >= r5 then done */
41        dcbst   0,r4     /* flush (data cache bloc store) */
42        add     r4,r4,r6 /* r4 = next cache line addr */
43        blt     1b       /* end r4 >= r5 then done */
44        sync            /* Wait for all dcbst to complete on bus */
45        /*
46         * invalidate instruction cache
47         */
48        /* R4 = fisrt address */
49        mr      r4,r3
502:      cmplw   r4,r5    /* r4 >= r5 then done */
51        icbi    0,r4     /* invalidate (instruction cache bloc invalidate) */
52        add     r4,r4,r6 /* r4 = next cache line addr */
53        blt     2b       /* end r4 >= r5 then done */
54        sync             /* Wait for all icbi to complete on bus */
55        isync
56        blr
57
58       
59/*
60 * void enterRdbg(void)
61 *     
62 * This function perform a call to the exception SYSTEM call
63 * It is used :
64 *   1 - in the user code, to simulate a Breakpoint.
65 *       (with justSaveContext = 0)
66 *   2 - in the RDBG code, to push a ctx in the list.
67 *       (with justSaveContext = 1)
68 *
69 * In most of case, it will be use as described in 1.
70 * The 2nd possibility will be used by RDBG to obtain
71 * its own ctx
72 */
73
74        PUBLIC_VAR (enterRdbg)
75
76SYM (enterRdbg):
77        sc
78        blr
79       
80END_CODE
81
82END
Note: See TracBrowser for help on using the repository browser.