Fixed memory write.
Signed-off-by: Yilin Sun <imi415@imi.moe>
This commit is contained in:
parent
959a54e666
commit
a22cbd1e98
|
@ -36,11 +36,11 @@ static mrb_value mrb_read8(mrb_state *mrb, mrb_value self) {
|
|||
}
|
||||
|
||||
static mrb_value mrb_write32(mrb_state *mrb, mrb_value self) {
|
||||
mrb_value addr, value;
|
||||
mrb_get_args(mrb, "i|i", &addr, &value);
|
||||
mrb_int addr, value;
|
||||
mrb_get_args(mrb, "ii", &addr, &value);
|
||||
|
||||
uint32_t addr_int = mrb_integer(addr);
|
||||
uint32_t value_int = mrb_integer(value);
|
||||
uint32_t addr_int = (uint32_t)addr;
|
||||
uint32_t value_int = (uint32_t)value;
|
||||
|
||||
if (addr_int % 4 != 0) {
|
||||
mrb_raise(mrb, E_ARGUMENT_ERROR, "Address must be 32bits aligned");
|
||||
|
@ -48,15 +48,15 @@ static mrb_value mrb_write32(mrb_state *mrb, mrb_value self) {
|
|||
|
||||
*(volatile uint16_t *)(addr_int) = value_int;
|
||||
|
||||
return self;
|
||||
return mrb_nil_value();
|
||||
}
|
||||
|
||||
static mrb_value mrb_write16(mrb_state *mrb, mrb_value self) {
|
||||
mrb_value addr, value;
|
||||
mrb_get_args(mrb, "i|i", &addr, &value);
|
||||
mrb_int addr, value;
|
||||
mrb_get_args(mrb, "ii", &addr, &value);
|
||||
|
||||
uint32_t addr_int = mrb_integer(addr);
|
||||
uint16_t value_int = mrb_integer(value);
|
||||
uint32_t addr_int = (uint32_t)addr;
|
||||
uint16_t value_int = (uint16_t)value;
|
||||
|
||||
if (addr_int % 2 != 0) {
|
||||
mrb_raise(mrb, E_ARGUMENT_ERROR, "Address must be 16bits aligned");
|
||||
|
@ -64,19 +64,19 @@ static mrb_value mrb_write16(mrb_state *mrb, mrb_value self) {
|
|||
|
||||
*(volatile uint16_t *)(addr_int) = value_int;
|
||||
|
||||
return self;
|
||||
return mrb_nil_value();
|
||||
}
|
||||
|
||||
static mrb_value mrb_write8(mrb_state *mrb, mrb_value self) {
|
||||
mrb_value addr, value;
|
||||
mrb_get_args(mrb, "i|i", &addr, &value);
|
||||
mrb_int addr, value;
|
||||
mrb_get_args(mrb, "ii", &addr, &value);
|
||||
|
||||
uint32_t addr_int = mrb_integer(addr);
|
||||
uint16_t value_int = mrb_integer(value);
|
||||
uint32_t addr_int = (uint32_t)addr;
|
||||
uint8_t value_int = (uint8_t)value;
|
||||
|
||||
*(volatile uint8_t *)(addr_int) = value_int;
|
||||
|
||||
return self;
|
||||
return mrb_nil_value();
|
||||
}
|
||||
|
||||
void mrb_mruby_devmem_gem_init(mrb_state *mrb) {
|
||||
|
|
Loading…
Reference in New Issue