Fixed memory write.

Signed-off-by: Yilin Sun <imi415@imi.moe>
This commit is contained in:
Yilin Sun 2023-03-08 23:42:53 +08:00
parent 959a54e666
commit a22cbd1e98
Signed by: imi415
GPG Key ID: 17F01E106F9F5E0A
1 changed files with 15 additions and 15 deletions

View File

@ -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) {