Revision 819385c5 hw/sun4u.c
b/hw/sun4u.c | ||
---|---|---|
68 | 68 |
/* NVRAM helpers */ |
69 | 69 |
void NVRAM_set_byte (m48t59_t *nvram, uint32_t addr, uint8_t value) |
70 | 70 |
{ |
71 |
m48t59_set_addr(nvram, addr); |
|
72 |
m48t59_write(nvram, value); |
|
71 |
m48t59_write(nvram, addr, value); |
|
73 | 72 |
} |
74 | 73 |
|
75 | 74 |
uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr) |
76 | 75 |
{ |
77 |
m48t59_set_addr(nvram, addr); |
|
78 |
return m48t59_read(nvram); |
|
76 |
return m48t59_read(nvram, addr); |
|
79 | 77 |
} |
80 | 78 |
|
81 | 79 |
void NVRAM_set_word (m48t59_t *nvram, uint32_t addr, uint16_t value) |
82 | 80 |
{ |
83 |
m48t59_set_addr(nvram, addr); |
|
84 |
m48t59_write(nvram, value >> 8); |
|
85 |
m48t59_set_addr(nvram, addr + 1); |
|
86 |
m48t59_write(nvram, value & 0xFF); |
|
81 |
m48t59_write(nvram, addr, value >> 8); |
|
82 |
m48t59_write(nvram, addr + 1, value & 0xFF); |
|
87 | 83 |
} |
88 | 84 |
|
89 | 85 |
uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr) |
90 | 86 |
{ |
91 | 87 |
uint16_t tmp; |
92 | 88 |
|
93 |
m48t59_set_addr(nvram, addr); |
|
94 |
tmp = m48t59_read(nvram) << 8; |
|
95 |
m48t59_set_addr(nvram, addr + 1); |
|
96 |
tmp |= m48t59_read(nvram); |
|
89 |
tmp = m48t59_read(nvram, addr) << 8; |
|
90 |
tmp |= m48t59_read(nvram, addr + 1); |
|
97 | 91 |
|
98 | 92 |
return tmp; |
99 | 93 |
} |
100 | 94 |
|
101 | 95 |
void NVRAM_set_lword (m48t59_t *nvram, uint32_t addr, uint32_t value) |
102 | 96 |
{ |
103 |
m48t59_set_addr(nvram, addr); |
|
104 |
m48t59_write(nvram, value >> 24); |
|
105 |
m48t59_set_addr(nvram, addr + 1); |
|
106 |
m48t59_write(nvram, (value >> 16) & 0xFF); |
|
107 |
m48t59_set_addr(nvram, addr + 2); |
|
108 |
m48t59_write(nvram, (value >> 8) & 0xFF); |
|
109 |
m48t59_set_addr(nvram, addr + 3); |
|
110 |
m48t59_write(nvram, value & 0xFF); |
|
97 |
m48t59_write(nvram, addr, value >> 24); |
|
98 |
m48t59_write(nvram, addr + 1, (value >> 16) & 0xFF); |
|
99 |
m48t59_write(nvram, addr + 2, (value >> 8) & 0xFF); |
|
100 |
m48t59_write(nvram, addr + 3, value & 0xFF); |
|
111 | 101 |
} |
112 | 102 |
|
113 | 103 |
uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr) |
114 | 104 |
{ |
115 | 105 |
uint32_t tmp; |
116 | 106 |
|
117 |
m48t59_set_addr(nvram, addr); |
|
118 |
tmp = m48t59_read(nvram) << 24; |
|
119 |
m48t59_set_addr(nvram, addr + 1); |
|
120 |
tmp |= m48t59_read(nvram) << 16; |
|
121 |
m48t59_set_addr(nvram, addr + 2); |
|
122 |
tmp |= m48t59_read(nvram) << 8; |
|
123 |
m48t59_set_addr(nvram, addr + 3); |
|
124 |
tmp |= m48t59_read(nvram); |
|
107 |
tmp = m48t59_read(nvram, addr) << 24; |
|
108 |
tmp |= m48t59_read(nvram, addr + 1) << 16; |
|
109 |
tmp |= m48t59_read(nvram, addr + 2) << 8; |
|
110 |
tmp |= m48t59_read(nvram, addr + 3); |
|
125 | 111 |
|
126 | 112 |
return tmp; |
127 | 113 |
} |
... | ... | |
132 | 118 |
int i; |
133 | 119 |
|
134 | 120 |
for (i = 0; i < max && str[i] != '\0'; i++) { |
135 |
m48t59_set_addr(nvram, addr + i); |
|
136 |
m48t59_write(nvram, str[i]); |
|
121 |
m48t59_write(nvram, addr + i, str[i]); |
|
137 | 122 |
} |
138 |
m48t59_set_addr(nvram, addr + max - 1); |
|
139 |
m48t59_write(nvram, '\0'); |
|
123 |
m48t59_write(nvram, addr + max - 1, '\0'); |
|
140 | 124 |
} |
141 | 125 |
|
142 | 126 |
int NVRAM_get_string (m48t59_t *nvram, uint8_t *dst, uint16_t addr, int max) |
... | ... | |
357 | 341 |
pci_cmd646_ide_init(pci_bus, bs_table, 1); |
358 | 342 |
kbd_init(); |
359 | 343 |
floppy_controller = fdctrl_init(6, 2, 0, 0x3f0, fd_table); |
360 |
nvram = m48t59_init(8, 0, 0x0074, NVRAM_SIZE); |
|
344 |
nvram = m48t59_init(8, 0, 0x0074, NVRAM_SIZE, 59);
|
|
361 | 345 |
sun4u_NVRAM_set_params(nvram, NVRAM_SIZE, "Sun4u", ram_size, boot_device, |
362 | 346 |
KERNEL_LOAD_ADDR, kernel_size, |
363 | 347 |
kernel_cmdline, |
Also available in: Unified diff