OpenCores
URL https://opencores.org/ocsvn/light52/light52/trunk

Subversion Repositories light52

[/] [light52/] [trunk/] [tools/] [b51/] [src/] [b51_log.h] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 ja_rd
#ifndef LOG_H_INCLUDED
2
#define LOG_H_INCLUDED
3
 
4
#include <stdint.h>
5
#include <stdbool.h>
6
 
7
 
8
/**
9
    Information needed by the MCS51 logger functions.
10
    Mostly copies of previous values of CPU registers, used to detect and log
11
    changes to them.
12
*/
13
typedef struct log51_s {
14
    uint16_t pc;
15
    uint8_t psw;
16
    uint8_t sp;
17
    uint8_t a;
18
    uint32_t executed_instructions;
19
} log51_t;
20
 
21
/**
22
    Open log files for writing (erasing previous contents).
23
    @return True if both files were open successfully.
24
*/
25
extern bool log_init(const char *sw_log_file, const char *con_log_file);
26
 
27
/** Close both log files. */
28
extern void log_close(void);
29
 
30
/**
31
    Update the logger status: transfer the CPU state to the logger state.
32
    Do this at the START of every instruction.
33
 
34
    @arg log Logger object.
35
    @arg pc CPU PC value.
36
    @arg sp CPU SP value.
37
    @arg a CPU ACC value.
38
    @arg psw CPU PSW value.
39
*/
40
extern void log_baseline(log51_t *log, uint16_t pc, uint8_t sp, uint8_t a, uint8_t psw);
41
 
42
/**
43
    Log write access to IDATA memory.
44
 
45
    @arg log Logger object.
46
    @arg addr IDATA address written to.
47
    @arg value Value written to IDATA.
48
*/
49
extern void log_idata(log51_t *log, uint8_t addr, uint8_t value);
50
 
51
/**
52
    Log write access to XDATA.
53
 
54
    @arg log Logger object.
55
    @arg addr XDATA address written to.
56
    @arg value Value written to XDATA.
57
*/
58
extern void log_xdata(log51_t *log, uint16_t addr, uint8_t value);
59
 
60
/**
61
    Log write access to SFR space.
62
 
63
    @arg log Logger object.
64
    @arg addr Address of SFR written to.
65
    @arg value Value written to SFR.
66
*/
67
extern void log_sfr(log51_t *log, uint8_t addr, uint8_t value);
68
 
69
/**
70
    Log jump (including calls and returns).
71
 
72
    @arg log Logger object.
73
    @arg addr Jump target address.
74
*/
75
extern bool log_jump(log51_t *log, uint16_t addr);
76
 
77
/**
78
    Log attemp to execute an unimplemented instruction.
79
    (Unimplemented by the simulator OR by the core).
80
 
81
    @arg log Logger object.
82
    @arg opcode Instruction opcode that triggered the log.
83
*/
84
extern void log_unimplemented(log51_t *log, uint8_t opcode);
85
 
86
/**
87
    Log change to 16-bit register -- DPTR.
88
 
89
    @arg log Logger object.
90
    @arg msg Name of 16-bit register.
91
    @arg value Value written to register.
92
*/
93
extern void log_reg16(log51_t *log, const char *msg, uint16_t value);
94
 
95
/**
96
    Compare CPU state (as given by register arguments sp, a and psw) with
97
    logger state and log any changes.
98
 
99
    @arg log Logger object.
100
    @arg sp CPU sp value.
101
    @arg a CPU ACC value.
102
    @arg psw CPU psw value.
103
*/
104
extern void log_status(log51_t *log, uint8_t sp, uint8_t a, uint8_t psw);
105
 
106
/**
107
    Log character written to the MCU serial port to serial log file.
108
    FIXME supports only 1 serial port and 1 serial log file.
109
 
110
    @arg c Byte written to the serial port.
111
*/
112
extern void log_con_output(char c);
113
 
114
#endif // LOG_H_INCLUDED

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.