libww libww
WWitch compatibility library for the Wonderful toolchain
Loading...
Searching...
No Matches
bank.h
Go to the documentation of this file.
1#include <sys/types.h>
2
3#ifndef __LIBWW_SYS_BANK_H__
4#define __LIBWW_SYS_BANK_H__
5
6/* Begin auto-generated section */
7
8/* Bank region names */
9#define BANK_SRAM 0
10#define BANK_ROM0 1
11#define BANK_ROM1 2
12
13/* SRAM banks */
14/* RAM file storage */
15#define BANK_SOFTFS 0
16#define BANK_USERDS1 1
17#define BANK_USERDS0 2
18#define BANK_OSWORK 3
19
20/* bank_*_map utility wrappers */
21#define sram_get_map() bank_get_map(BANK_SRAM)
22#define sram_set_map(bank_id) bank_get_map(BANK_SRAM, bank_id)
23#define rom0_get_map() bank_get_map(BANK_ROM0)
24#define rom0_set_map(bank_id) bank_get_map(BANK_ROM0, bank_id)
25#define rom1_get_map() bank_get_map(BANK_ROM1)
26#define rom1_set_map(bank_id) bank_get_map(BANK_ROM1, bank_id)
27
32static inline void bank_set_map(uint16_t bank_type, uint16_t bank) {
33 uint16_t result;
34 __asm volatile (
35 "int $0x18"
36 : "=a" (result)
37 : "b" (bank_type), "c" (bank), "Rah" ((uint8_t) 0x00)
38 : "cc", "memory"
39 );
40}
41
46static inline uint16_t bank_get_map(uint16_t bank_type) {
47 uint16_t result;
48 __asm volatile (
49 "int $0x18"
50 : "=a" (result)
51 : "b" (bank_type), "Rah" ((uint8_t) 0x01)
52 : "cc", "memory"
53 );
54 return result;
55}
56
62static inline uint8_t bank_read_byte(uint16_t bank_id, uint16_t offset) {
63 uint16_t result;
64 __asm volatile (
65 "int $0x18"
66 : "=a" (result)
67 : "b" (bank_id), "d" (offset), "Rah" ((uint8_t) 0x02)
68 : "cc", "memory"
69 );
70 return result;
71}
72
78static inline void bank_write_byte(uint16_t bank_id, uint16_t offset, uint8_t value) {
79 uint16_t result;
80 __asm volatile (
81 "int $0x18"
82 : "=a" (result)
83 : "b" (bank_id), "d" (offset), "c" (value), "Rah" ((uint8_t) 0x03)
84 : "cc", "memory"
85 );
86}
87
93static inline uint8_t bank_read_word(uint16_t bank_id, uint16_t offset) {
94 uint16_t result;
95 __asm volatile (
96 "int $0x18"
97 : "=a" (result)
98 : "b" (bank_id), "d" (offset), "Rah" ((uint8_t) 0x04)
99 : "cc", "memory"
100 );
101 return result;
102}
103
109static inline void bank_write_word(uint16_t bank_id, uint16_t offset, uint16_t value) {
110 uint16_t result;
111 __asm volatile (
112 "int $0x18"
113 : "=a" (result)
114 : "b" (bank_id), "d" (offset), "c" (value), "Rah" ((uint8_t) 0x05)
115 : "cc", "memory"
116 );
117}
118
125void bank_read_block(uint16_t bank_id, uint16_t offset, void __far* data, uint16_t length);
126
133void bank_write_block(uint16_t bank_id, uint16_t offset, const void __far* data, uint16_t length);
134
141static inline void bank_fill_block(uint16_t bank_id, uint16_t offset, uint16_t length, uint8_t value) {
142 uint16_t result;
143 __asm volatile (
144 "int $0x18"
145 : "=a" (result)
146 : "a" ((uint16_t) (((0x08) << 8) | (value & 0xFF))), "b" (bank_id), "d" (offset), "c" (length)
147 : "cc", "memory"
148 );
149}
150
154static inline void bank_erase_flash(uint16_t bank_id) {
155 uint16_t result;
156 __asm volatile (
157 "int $0x18"
158 : "=a" (result)
159 : "b" (bank_id), "Rah" ((uint8_t) 0x09)
160 : "cc", "memory"
161 );
162}
163
164/* End auto-generated section */
165
166
167#endif /* __LIBWW_SYS_BANK_H__ */
static void bank_write_word(uint16_t bank_id, uint16_t offset, uint16_t value)
Definition bank.h:109
static uint8_t bank_read_byte(uint16_t bank_id, uint16_t offset)
Definition bank.h:62
static void bank_set_map(uint16_t bank_type, uint16_t bank)
Definition bank.h:32
static void bank_fill_block(uint16_t bank_id, uint16_t offset, uint16_t length, uint8_t value)
Definition bank.h:141
static void bank_erase_flash(uint16_t bank_id)
Definition bank.h:154
static uint8_t bank_read_word(uint16_t bank_id, uint16_t offset)
Definition bank.h:93
static void bank_write_byte(uint16_t bank_id, uint16_t offset, uint8_t value)
Definition bank.h:78
void bank_read_block(uint16_t bank_id, uint16_t offset, void __far *data, uint16_t length)
static uint16_t bank_get_map(uint16_t bank_type)
Definition bank.h:46
void bank_write_block(uint16_t bank_id, uint16_t offset, const void __far *data, uint16_t length)