It uses integers natively and removes the bit32 library.
The intsize patch is no longer needed.
---
SerialICE/patches/lua-5.2.0-intsize.diff | 20 ---------
SerialICE/patches/lua-5.2.0-shared.diff | 42 -------------------
SerialICE/patches/lua-5.2.0-x64-fix.diff | 12 ------
SerialICE/simba/chipset/i82801.lua | 6 +--
SerialICE/simba/chipset/intel_bars.lua | 14 +++----
SerialICE/simba/chipset/intel_smbus.lua | 38 ++++++++---------
SerialICE/simba/chipset/pc80.lua | 72 ++++++++++++++++----------------
SerialICE/simba/chipset/smbus_host.lua | 14 +++----
SerialICE/simba/chipset/superio.lua | 4 +-
SerialICE/simba/chipset/via_bars.lua | 8 ++--
SerialICE/simba/core_io.lua | 4 +-
SerialICE/simba/cpu.lua | 10 ++---
SerialICE/simba/hooks.lua | 10 ++---
SerialICE/simba/mmio.lua | 4 +-
SerialICE/simba/pci_cfg.lua | 48 ++++++++++-----------
SerialICE/simba/replay.lua | 4 +-
qemu-0.15.x/configure | 28 +++----------
qemu-0.15.x/serialice-lua.c | 2 +-
18 files changed, 125 insertions(+), 215 deletions(-)
delete mode 100644 SerialICE/patches/lua-5.2.0-intsize.diff
delete mode 100644 SerialICE/patches/lua-5.2.0-shared.diff
delete mode 100644 SerialICE/patches/lua-5.2.0-x64-fix.diff
diff --git a/SerialICE/patches/lua-5.2.0-intsize.diff b/SerialICE/patches/lua-5.2.0-intsize.diff
deleted file mode 100644
index e29ffae..0000000
--- a/SerialICE/patches/lua-5.2.0-intsize.diff
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -ur lua-5.2.0/src/luaconf.h lua-5.2.0-shared/src/luaconf.h
---- lua-5.2.0/src/luaconf.h 2011-12-06 17:58:36.000000000 +0100
-+++ lua-5.2.0-shared/src/luaconf.h 2012-06-12 22:25:20.179943819 +0200
-@@ -10,6 +10,7 @@
-
- #include <limits.h>
- #include <stddef.h>
-+#include <stdint.h>
-
-
- /*
-@@ -444,7 +445,7 @@
- ** CHANGE that if ptrdiff_t is not adequate on your machine. (On most
- ** machines, ptrdiff_t gives a good choice between int or long.)
- */
--#define LUA_INTEGER ptrdiff_t
-+#define LUA_INTEGER int64_t
-
- /*
- @@ LUA_UNSIGNED is the integral type used by lua_pushunsigned/lua_tounsigned.
diff --git a/SerialICE/patches/lua-5.2.0-shared.diff b/SerialICE/patches/lua-5.2.0-shared.diff
deleted file mode 100644
index 4b8aaaf..0000000
--- a/SerialICE/patches/lua-5.2.0-shared.diff
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -ur lua-5.2.0/Makefile lua-5.2.0-shared/Makefile
---- lua-5.2.0/Makefile 2011-11-16 00:38:12.000000000 +0100
-+++ lua-5.2.0-shared/Makefile 2012-06-12 21:42:25.953250340 +0200
-@@ -41,7 +41,7 @@
- # What to install.
- TO_BIN= lua luac
- TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp
--TO_LIB= liblua.a
-+TO_LIB= liblua.a liblua.so
- TO_MAN= lua.1 luac.1
-
- # Lua version and release.
-diff -ur lua-5.2.0/src/Makefile lua-5.2.0-shared/src/Makefile
---- lua-5.2.0/src/Makefile 2011-09-19 14:45:14.000000000 +0200
-+++ lua-5.2.0-shared/src/Makefile 2012-06-12 21:44:17.476584177 +0200
-@@ -29,6 +29,7 @@
- PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
-
- LUA_A= liblua.a
-+LUA_SO= liblua.so
- CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \
- lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \
- ltm.o lundump.o lvm.o lzio.o
-@@ -43,7 +44,7 @@
- LUAC_O= luac.o
-
- ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
--ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
-+ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
- ALL_A= $(LUA_A)
-
- # Targets start here.
-@@ -59,6 +60,9 @@
- $(AR) $@ $?
- $(RANLIB) $@
-
-+$(LUA_SO): $(CORE_O) $(LIB_O)
-+ $(CC) -o $@ -shared $? -lm -ldl
-+
- $(LUA_T): $(LUA_O) $(LUA_A)
- $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
-
diff --git a/SerialICE/patches/lua-5.2.0-x64-fix.diff b/SerialICE/patches/lua-5.2.0-x64-fix.diff
deleted file mode 100644
index d649f7a..0000000
--- a/SerialICE/patches/lua-5.2.0-x64-fix.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur lua-5.2.0/src/Makefile lua-5.2.0-shared/src/Makefile
---- lua-5.2.0/src/Makefile 2011-09-19 14:45:14.000000000 +0200
-+++ lua-5.2.0-shared/src/Makefile 2012-06-12 22:24:16.973276561 +0200
-@@ -103,7 +103,7 @@
- generic: $(ALL)
-
- linux:
-- $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"
-+ $(MAKE) $(ALL) SYSCFLAGS="-fPIC -DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"
-
- macosx:
- $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" SYSLIBS="-lreadline"
diff --git a/SerialICE/simba/chipset/i82801.lua b/SerialICE/simba/chipset/i82801.lua
index 24da007..40be0f9 100644
--- a/SerialICE/simba/chipset/i82801.lua
+++ b/SerialICE/simba/chipset/i82801.lua
@@ -44,11 +44,11 @@ function pm_io_bar(f, action)
end
function lpc_io_bar(f, action)
- local base = bit32.band(action.data, 0xffff)
- local mask = bit32.bor(bit32.rshift(action.data, 16), 3)
+ local base = (action.data & 0xffff)
+ local mask = (action.data >> 16) | 3
local size = mask + 1
- base = bit32.band(base, bit32.bnot(mask))
+ base = (base & ~mask)
add_bar(f.dev, f.reg, "LPC", size)
f.dev.bar[f.reg].val = base
diff --git a/SerialICE/simba/chipset/intel_bars.lua b/SerialICE/simba/chipset/intel_bars.lua
index 0841a23..63feb23 100644
--- a/SerialICE/simba/chipset/intel_bars.lua
+++ b/SerialICE/simba/chipset/intel_bars.lua
@@ -35,7 +35,7 @@ dev_i915 = {
}
function i915_pcie_bar(f, action)
- local baseaddr = bit32.band(action.data, 0xf0000000)
+ local baseaddr = (action.data & 0xf0000000)
local size = 256*1024*1024
-- enable is 0:00.0 [054] .31
@@ -58,26 +58,26 @@ end
function i945_pcie_bar(f, action)
local base = action.data
- local sizebits = bit32.band(bit32.rshift(base, 1), 0x3)
+ local sizebits = (base >> 1) & 0x3
local baseaddr = 0
local size = 0
if sizebits == 0 then
size = 256*1024*1024
- baseaddr = bit32.band(base, 0xf0000000)
+ baseaddr = (base & 0xf0000000)
elseif sizebits == 1 then
size = 128*1024*1024
- baseaddr = bit32.band(base, 0xf8000000)
+ baseaddr = (base & 0xf8000000)
elseif sizebits == 2 then
size = 64*1024*1024
- baseaddr = bit32.band(base, 0xfc000000)
+ baseaddr = (base & 0xfc000000)
else
-- undefined, really
- baseaddr = bit32.band(base, 0xfe000000)
+ baseaddr = (base & 0xfe000000)
size = 32*1024*1024
end
- if bit32.band(base, 1) ~= 0 then
+ if (base & 1) ~= 0 then
pcie_mm_enable(f.dev, f.reg, baseaddr, size)
else
pcie_mm_disable(f.dev, f.reg, baseaddr, size)
diff --git a/SerialICE/simba/chipset/intel_smbus.lua b/SerialICE/simba/chipset/intel_smbus.lua
index 1c2606d..469e7c8 100644
--- a/SerialICE/simba/chipset/intel_smbus.lua
+++ b/SerialICE/simba/chipset/intel_smbus.lua
@@ -31,7 +31,7 @@ I801_PEC_EN = 0x80
local function intel_smbus_get_protocol(f)
- local proto = bit32.band(f.reg.control, 0x1c)
+ local proto = (f.reg.control & 0x1c)
if proto == I801_QUICK then
return SMBUS_QUICK
@@ -73,7 +73,7 @@ local function intel_smbus_host_status(f, action)
if not smbus.passive(f) then
f.reg.status = 0x0
end
- if bit32.band(f.reg.status, 0x40) ~= 0 then
+ if (f.reg.status & 0x40) ~= 0 then
printk(f, action, "Host may be busy, ignoring.\n")
end
smbus.get_resource(f)
@@ -83,19 +83,19 @@ local function intel_smbus_host_status(f, action)
elseif smbus.state(f, HOST_STARTED) then
if not smbus.passive(f) then
- f.reg.status = bit32.band(f.reg.status, 0xFE)
+ f.reg.status = (f.reg.status & 0xFE)
if f.reg.busy_count > 0 then
f.reg.busy_count = f.reg.busy_count - 1
- f.reg.status = bit32.bor(f.reg.status, 0x01)
+ f.reg.status = (f.reg.status | 0x01)
end
- if bit32.band(f.reg.status, 0x02) == 0 then
+ if (f.reg.status & 0x02) == 0 then
smbus_transaction(host)
end
end
- local irq = bit32.band(f.reg.status, 0x02) ~= 0
- local failures = bit32.band(f.reg.status, 0x1c) ~= 0
- local host_busy = bit32.band(f.reg.status, 0x01) ~= 0
+ local irq = (f.reg.status & 0x02) ~= 0
+ local failures = (f.reg.status & 0x1c) ~= 0
+ local host_busy = (f.reg.status & 0x01) ~= 0
if irq and not host_busy then
smbus.done(f)
@@ -107,17 +107,17 @@ local function intel_smbus_host_status(f, action)
if not smbus.passive(f) then
action.data = f.reg.status;
- f.reg.status = bit32.bor(f.reg.status, 0x40)
+ f.reg.status = (f.reg.status | 0x40)
end
else
if not smbus.passive(f) then
- f.reg.status = bit32.band(f.reg.status, bit32.bnot(action.data))
+ f.reg.status = (f.reg.status & ~action.data)
end
- local ack_irq = bit32.band(action.data, 0x02) ~= 0
- local release_host = bit32.band(action.data, 0x40) ~= 0
- local failures = bit32.band(action.data, 0x1c) ~= 0
+ local ack_irq = (action.data & 0x02) ~= 0
+ local release_host = (action.data & 0x40) ~= 0
+ local failures = (action.data & 0x1c) ~= 0
if release_host then
smbus.put_resource(f)
end
@@ -137,18 +137,18 @@ local function intel_smbus_host_control(f, action)
if not action.write then
f.reg.block_ptr=0;
if not smbus.passive(f) then
- action.data = bit32.band(f.reg.control, bit32.bnot(0x40))
+ action.data = (f.reg.control & ~0x40)
end
else
f.reg.control = action.data;
- if bit32.band(f.reg.control, 0x80) ~= 0 then
+ if (f.reg.control & 0x80) ~= 0 then
printk(f, action, "No PEC simulation\n")
end
- local abort = bit32.band(f.reg.control, 0x02) ~= 0
- local start = bit32.band(f.reg.control, 0x40) ~= 0
+ local abort = (f.reg.control & 0x02) ~= 0
+ local start = (f.reg.control & 0x40) ~= 0
if abort then
smbus.abort(f)
end
@@ -171,7 +171,7 @@ local function intel_smbus_block_data(f, action)
end
local function intel_smbus_host_access(f, action)
- local reg = bit32.band(action.addr, (f.size-1))
+ local reg = action.addr & (f.size-1)
-- mirror hw register both ways
local data_write = 0
@@ -246,7 +246,7 @@ local intel_smbus_host = {
function intel_smbus_setup(base, size)
local f = intel_smbus_host
- f.base = bit32.band(base, bit32.bnot(size-1))
+ f.base = (base & ~size-1)
f.size = size
if not f.reg then
f.reg = { control = 0, status = 0, busy_count = 0, block_ptr = 0, aux_ctl = 0, aux_sts = 0 }
diff --git a/SerialICE/simba/chipset/pc80.lua b/SerialICE/simba/chipset/pc80.lua
index 35d01e3..454bdda 100644
--- a/SerialICE/simba/chipset/pc80.lua
+++ b/SerialICE/simba/chipset/pc80.lua
@@ -25,9 +25,9 @@ filter_debugport = {
-- i8259 PIC
function i8259_pre(f, action)
- local master = (bit32.rshift(0x05, action.addr) == 0x1)
- local slave = (bit32.rshift(0x05, action.addr) == 0x5)
- local reg = bit32.band(0x03, action.addr)
+ local master = ((0x05 >> action.addr) == 0x1)
+ local slave = ((0x05 >> action.addr) == 0x5)
+ local reg = (0x03 & action.addr)
if reg == 0 or reg == 1 then
return handle_action(f, action)
end
@@ -35,7 +35,7 @@ function i8259_pre(f, action)
end
function i8259_post(f,action)
- local reg = bit32.band(0x03, action.addr)
+ local reg = (0x03 & action.addr)
if reg == 0 or reg == 1 then
return true
end
@@ -133,37 +133,37 @@ function i8254_pre(f, action)
return handle_action(f, action)
end
- local reg = bit32.band(0x03, action.addr)
+ local reg = (0x03 & action.addr)
if reg >= 0x0 and reg < 0x03 then
local counter_n = 0
local counter_p = 0
if f.counter[reg].lsb then
f.counter[reg].lsb = f.counter[reg].after_lsb
counter_n = action.data
- counter_p = bit32.band(0xff00, f.counter[reg].init)
+ counter_p = (0xff00 & f.counter[reg].init)
else
- counter_n = bit32.lshift(action.data, 8)
- counter_p = bit32.band(0x00ff, f.counter[reg].init)
+ counter_n = (action.data << 8)
+ counter_p = (0x00ff & f.counter[reg].init)
end
- f.counter[reg].init = bit32.bor(counter_n, counter_p)
+ f.counter[reg].init = (counter_n | counter_p)
elseif reg == 0x03 then
- local reg2 = bit32.rshift(action.data, 6)
- local rwsel = bit32.band(0x3, bit32.rshift(action.data, 4))
+ local reg2 = (action.data >> 6)
+ local rwsel = 0x3 & (action.data >> 4)
if reg2 == 0x3 then
- if bit32.band(0x10, action.data) == 0 then
- f.counter[0].readback = (bit32.band(0x2, action.data) ~= 0)
- f.counter[1].readback = (bit32.band(0x4, action.data) ~= 0)
- f.counter[2].readback = (bit32.band(0x8, action.data) ~= 0)
+ if (0x10 & action.data) == 0 then
+ f.counter[0].readback = ((0x2 & action.data) ~= 0)
+ f.counter[1].readback = ((0x4 & action.data) ~= 0)
+ f.counter[2].readback = ((0x8 & action.data) ~= 0)
end
- if bit32.band(0x20, action.data) == 0 then
- f.counter[0].latch = (bit32.band(0x2, action.data) ~= 0)
- f.counter[1].latch = (bit32.band(0x4, action.data) ~= 0)
- f.counter[2].latch = (bit32.band(0x8, action.data) ~= 0)
+ if (0x20 & action.data) == 0 then
+ f.counter[0].latch = ((0x2 & action.data) ~= 0)
+ f.counter[1].latch = ((0x4 & action.data) ~= 0)
+ f.counter[2].latch = ((0x8 & action.data) ~= 0)
end
elseif rwsel == 0x0 then
f.counter[reg2].latch = true
else
- f.counter[reg2].mode = bit32.band(0xf, action.data)
+ f.counter[reg2].mode = (0xf & action.data)
if rwsel == 0x1 then
f.counter[reg2].lsb = true
f.counter[reg2].after_lsb = true
@@ -180,17 +180,17 @@ function i8254_pre(f, action)
end
function i8254_post(f, action)
- local reg = bit32.band(0x03, action.addr)
+ local reg = (0x03 & action.addr)
if reg >= 0x0 and reg < 0x03 then
if action.write then
- local mode = bit32.band(0x0f, f.counter[reg].mode);
+ local mode = (0x0f & f.counter[reg].mode);
local modestr = "Mode" .. mode
if mode == 0x4 then
modestr = "Square Wave"
elseif mode == 0x6 then
modestr = "Rate Generator"
end
- if bit32.band(0x01, mode) ~= 0 then
+ if (0x01 & mode) ~= 0 then
modestr = modestr .. " (BCD)"
end
@@ -262,15 +262,15 @@ filter_i8254_b = {
function i8042_write(f, action)
if action.addr == 0x60 then
f.reg.data = action.data
- f.reg.sts = bit32.band(f.reg.sts, 0xf7)
+ f.reg.sts = (f.reg.sts & 0xf7)
if (f.reg.cmd == 0xd1) then
- f.reg.A20 = (bit32.band(0x02, action.data) == 0x02)
+ f.reg.A20 = ((0x02 & action.data) == 0x02)
end
return handle_action(f, action)
end
if action.addr == 0x64 then
f.reg.cmd = action.data
- f.reg.sts = bit32.bor(f.reg.sts, 0x0a)
+ f.reg.sts = (f.reg.sts | 0x0a)
return handle_action(f, action)
end
return skip_filter(f, action)
@@ -278,7 +278,7 @@ end
function i8042_read(f, action)
if action.addr == 0x60 then
- f.reg.sts = bit32.band(f.reg.sts, 0xfe)
+ f.reg.sts = (f.reg.sts & 0xfe)
return handle_action(f, action)
end
if action.addr == 0x64 then
@@ -330,11 +330,11 @@ filter_i8042 = {
function nvram_bank(addr)
- if bit32.band(0xfe, addr) == 0x70 then
+ if (0xfe & addr) == 0x70 then
return 1
- elseif bit32.band(0xfe, addr) == 0x72 then
+ elseif (0xfe & addr) == 0x72 then
return 2
- elseif bit32.band(0xfe, addr) == 0x74 then
+ elseif (0xfe & addr) == 0x74 then
return 2
else
return 0
@@ -344,12 +344,12 @@ end
function nvram_write(f, action)
local val = action.data
local rtc = false
- local is_index = (bit32.band(0x01, action.addr) == 0x0)
+ local is_index = ((0x01 & action.addr) == 0x0)
local bank = nvram_bank(action.addr)
if bank == 1 then
if is_index then
- f.reg.p70 = bit32.band(0x7f, val)
+ f.reg.p70 = (0x7f & val)
if f.reg.p70 < 0x0E then
rtc = true
end
@@ -362,7 +362,7 @@ function nvram_write(f, action)
end
elseif bank == 2 then
if is_index then
- f.reg.p72 = bit32.band(0x7f, val)
+ f.reg.p72 = (0x7f & val)
else
local index = 0x80 + f.reg.p72
f.nvram_data[index] = val
@@ -379,7 +379,7 @@ end
function nvram_read(f, action)
local val = 0
local rtc = false
- local is_index = (bit32.band(0x01, action.addr) == 0x0)
+ local is_index = ((0x01 & action.addr) == 0x0)
local bank = nvram_bank(action.addr)
if bank == 1 then
@@ -423,7 +423,7 @@ function nvram_pre(f, action)
end
function nvram_post(f, action)
- if bit32.band(0x01, action.addr) == 0x0 then
+ if (0x01 & action.addr) == 0x0 then
return true
end
@@ -463,7 +463,7 @@ filter_nvram = {
function sys_rst_pre(f, action)
if action.size == 1 then
- if action.write and bit32.band(action.data, 0x04) == 0x04 then
+ if action.write and (action.data & 0x04) == 0x04 then
SerialICE_system_reset()
end
return handle_action(f, action)
diff --git a/SerialICE/simba/chipset/smbus_host.lua b/SerialICE/simba/chipset/smbus_host.lua
index 1da4b0c..f8baf2e 100644
--- a/SerialICE/simba/chipset/smbus_host.lua
+++ b/SerialICE/simba/chipset/smbus_host.lua
@@ -50,19 +50,19 @@ local function signal_reset(f)
end
local function signal_set(f, flag)
- local mask = bit32.lshift(1, flag)
- f.host.signals = bit32.bor(f.host.signals, mask)
+ local mask = (1 << flag)
+ f.host.signals = (f.host.signals | mask)
end
local function signal_clr(f, flag)
- local mask = bit32.bnot(bit32.lshift(1, flag))
- f.host.signals = bit32.band(f.host.signals, mask)
+ local mask = ~(1 << flag)
+ f.host.signals = (f.host.signals & mask)
end
local function signal_in(f, flag)
- local mask = bit32.lshift(1, flag)
- return bit32.band(f.host.signals, mask) ~= 0
+ local mask = (1 << flag)
+ return (f.host.signals & mask) ~= 0
end
-- *******************
@@ -119,7 +119,7 @@ local function host_proto(f, proto)
end
local function host_reading(f)
- return bit32.band(f.host.slave, 0x01) == 0x01
+ return (f.host.slave & 0x01) == 0x01
end
diff --git a/SerialICE/simba/chipset/superio.lua b/SerialICE/simba/chipset/superio.lua
index 7d6252c..03e1e61 100644
--- a/SerialICE/simba/chipset/superio.lua
+++ b/SerialICE/simba/chipset/superio.lua
@@ -59,7 +59,7 @@ function superio_try_enable_io(f, idx)
if ldn.set[0x30] and ldn.data[0x30] ~= 0x0 then
if idx == 0 and ldn.set[0x60] and ldn.set[0x61] then
- local iobase = bit32.bor(bit32.lshift(ldn.data[0x60], 8), ldn.data[0x61])
+ local iobase = (ldn.data[0x60] << 8) | ldn.data[0x61]
if not ldn.bar0.size then
ldn.bar0.size = 1
end
@@ -73,7 +73,7 @@ function superio_try_enable_io(f, idx)
end
end
if idx == 1 and ldn.set[0x62] and ldn.set[0x63] then
- local iobase = bit32.bor(bit32.lshift(ldn.data[0x62], 8), ldn.data[0x63])
+ local iobase = (ldn.data[0x62] << 8) | ldn.data[0x63]
if not ldn.bar1.size then
ldn.bar1.size = 1
end
diff --git a/SerialICE/simba/chipset/via_bars.lua b/SerialICE/simba/chipset/via_bars.lua
index 5610230..71f026a 100644
--- a/SerialICE/simba/chipset/via_bars.lua
+++ b/SerialICE/simba/chipset/via_bars.lua
@@ -35,7 +35,7 @@ dev_nb_traf_ctl = {
}
function vx900_pcie_bar(f, action)
- local baseaddr = bit32.lshift(action.data, 28)
+ local baseaddr = (action.data << 28)
local size = 256*1024*1024
-- enable is 0:00.5 [060] .10
@@ -57,7 +57,7 @@ dev_sb = {
function sb_mmio_bar(f, action)
-- This MMIO space is used for SPI and CEC control
f.dev.mmio.name = "SB_MMIO"
- f.dev.mmio.val = bit32.lshift(bit32.band(action.data, 0xfff0), 8)
+ f.dev.mmio.val = (action.data & 0xfff0) << 8
f.dev.mmio.size = 0x10000
generic_mmio_bar(f.dev.mmio)
@@ -65,13 +65,13 @@ end
function pm_io_bar(f, action)
f.dev.acpi.name = "ACPI"
- f.dev.acpi.val = bit32.band(action.data, 0xff80)
+ f.dev.acpi.val = (action.data & 0xff80)
f.dev.acpi.size = 0x80
generic_io_bar(f.dev.acpi)
end
function smbus_bar_hook(f, action)
- local base = bit32.band(action.data, 0xfff0)
+ local base = (action.data & 0xfff0)
intel_smbus_setup(base, 0x10)
end
diff --git a/SerialICE/simba/core_io.lua b/SerialICE/simba/core_io.lua
index 08ae42e..f1bf8cb 100644
--- a/SerialICE/simba/core_io.lua
+++ b/SerialICE/simba/core_io.lua
@@ -58,9 +58,9 @@ function mem_post(f, action)
end
elseif f.decode == F_RANGE then
if (action.write) then
- printk(f, action, "[%08x] <= %s\n", bit32.band(action.addr, (f.size - 1)), size)
+ printk(f, action, "[%08x] <= %s\n", action.addr & (f.size - 1), size)
else
- printk(f, action, "[%08x] => %s\n", bit32.band(action.addr, (f.size - 1)), size)
+ printk(f, action, "[%08x] => %s\n", action.addr & (f.size - 1), size)
end
end
return true
diff --git a/SerialICE/simba/cpu.lua b/SerialICE/simba/cpu.lua
index 02839a9..10a7fe4 100644
--- a/SerialICE/simba/cpu.lua
+++ b/SerialICE/simba/cpu.lua
@@ -19,14 +19,14 @@ function var_mtrr_post(f, action)
elseif mt == 6 then memtype = "Write-Back"
else memtype = "Unknown"
end
- printk(f, action, "Set MTRR %x base to %08x.%08x (%s)\n", (addr - 0x200) / 2, hi, bit32.band(lo, 0xffffff00), memtype)
+ printk(f, action, "Set MTRR %x base to %08x.%08x (%s)\n", (addr - 0x200) / 2, hi, (lo & 0xffffff00), memtype)
else
- if bit32.band(lo, 0x800) == 0x800 then
+ if (lo & 0x800) == 0x800 then
valid = "valid"
else
valid = "disabled"
end
- printk(f, action, "Set MTRR %x mask to %08x.%08x (%s)\n", (addr - 0x200) / 2, hi, bit32.band(lo, 0xfffff000), valid)
+ printk(f, action, "Set MTRR %x mask to %08x.%08x (%s)\n", (addr - 0x200) / 2, hi, (lo & 0xfffff000), valid)
end
return true
end
@@ -114,8 +114,8 @@ function multicore_post(f, action)
-- Set number of cores to 1 on Core Duo and Atom to trick the
-- firmware into not trying to wake up non-BSP nodes.
if not action.write and rin.eax == 0x01 then
- rout.ebx = bit32.band(0xff00ffff, rout.ebx);
- rout.ebx = bit32.bor(0x00010000, rout.ebx);
+ rout.ebx = (0xff00ffff & rout.ebx);
+ rout.ebx = (0x00010000 | rout.ebx);
return fake_action(f, action, 0)
end
return skip_filter(f, action)
diff --git a/SerialICE/simba/hooks.lua b/SerialICE/simba/hooks.lua
index c726e8c..3813088 100644
--- a/SerialICE/simba/hooks.lua
+++ b/SerialICE/simba/hooks.lua
@@ -141,7 +141,7 @@ function generic_io_bar(bar)
f.size = bar.size
bar.f = f
end
- bar.f.base = bit32.band(bar.val, bit32.bnot(bar.size-1))
+ bar.f.base = (bar.val & ~bar.size-1)
if (bar.f.base ~= 0) then
enable_hook(io_hooks, bar.f)
else
@@ -160,7 +160,7 @@ function generic_mmio_bar(bar)
f.size = bar.size
bar.f = f
end
- bar.f.base = bit32.band(bar.val, bit32.bnot(bar.size-1))
+ bar.f.base = (bar.val & ~bar.size-1)
if bar.f.base ~= 0 then
enable_hook(mem_hooks, bar.f)
else
@@ -230,11 +230,11 @@ function pre_action(action, dir_wr, addr, size, data)
action.size = size
if action.write then
if size == 1 then
- action.data = bit32.band(0xff, data)
+ action.data = (0xff & data)
elseif size == 2 then
- action.data = bit32.band(0xffff, data)
+ action.data = (0xffff & data)
elseif size == 4 then
- action.data = bit32.band(0xffffffff, data)
+ action.data = (0xffffffff & data)
end
end
end
diff --git a/SerialICE/simba/mmio.lua b/SerialICE/simba/mmio.lua
index c6ba1e5..628a87e 100644
--- a/SerialICE/simba/mmio.lua
+++ b/SerialICE/simba/mmio.lua
@@ -7,9 +7,9 @@
-- We should avoid that someone wakes up cores
-- on the target system that go wild.
function mem_lapic(f, action)
- if bit32.band(action.addr, f.size-1) == 0x300 then
+ if (action.addr & f.size-1) == 0x300 then
-- replace Start-Up IPI with Init IPI
- if action.write and bit32.band(action.data, 0xf0f00) == 0xc0600 then
+ if action.write and (action.data & 0xf0f00) == 0xc0600 then
return fake_action(f, action, 0xc0500)
end
end
diff --git a/SerialICE/simba/pci_cfg.lua b/SerialICE/simba/pci_cfg.lua
index e7bdf65..2e892a7 100644
--- a/SerialICE/simba/pci_cfg.lua
+++ b/SerialICE/simba/pci_cfg.lua
@@ -11,10 +11,10 @@ PCI_CFG_WRITE = true
pci_cfg_hooks = new_hooks("PCI")
function add_pci_cfg_hook(dev, reg, size, func)
- local bdfr = bit32.bor(dev.pci_dev, reg)
+ local bdfr = (dev.pci_dev | reg)
local name = string.format("%x:%02x.%x [%03x]",
- bit32.band(0xff,bit32.rshift(bdfr, 20)), bit32.band(0x1f,bit32.rshift(bdfr, 15)),
- bit32.band(0x7,bit32.rshift(bdfr, 12)), bit32.band(0xfff,bdfr))
+ (0xff & (bdfr >> 20)), (0x1f & (bdfr >> 15)),
+ (0x7 & (bdfr >> 12)), (0xfff & bdfr))
local filter = {
base = bdfr,
dev = dev,
@@ -30,7 +30,7 @@ end
function is_pci_cfg_hooked(bdf)
local l = pci_cfg_hooks.list
while l do
- if bdf == bit32.band(l.hook.base, bit32.bnot(0x03)) then
+ if bdf == (l.hook.base & ~0x03) then
return true
end
l = l.next
@@ -151,8 +151,8 @@ function pci_cfg_print(f, action, bdfr)
end
printk(f, action, "%x:%02x.%x [%03x] %s %s\n",
- bit32.band(0xff,bit32.rshift(bdfr, 20)), bit32.band(0x1f,bit32.rshift(bdfr, 15)),
- bit32.band(0x7,bit32.rshift(bdfr, 12)), bit32.band(0xfff,bdfr),
+ (0xff & (bdfr >> 20)), (0x1f & (bdfr >> 15)),
+ (0x7 & (bdfr >> 12)), (0xfff & bdfr),
dir_str, size_data(action.size, action.data))
end
@@ -186,19 +186,19 @@ function pci_cfg_access(f, action)
if (size == 1) then
av[addr%4] = true
bv[addr%4] = true
- amask = bit32.lshift(0xff, ll)
- omask = bit32.lshift(data, ll)
- f.reg.data = bit32.band(f.reg.data, bit32.bnot(amask))
- f.reg.data = bit32.bor(f.reg.data, omask)
+ amask = (0xff << ll)
+ omask = (data << ll)
+ f.reg.data = (f.reg.data & ~amask)
+ f.reg.data = (f.reg.data | omask)
elseif (size == 2) then
av[addr%4] = true
bv[addr%4] = true
av[addr%4+1] = true
bv[addr%4+1] = true
- amask = bit32.lshift(0xffff, ll)
- omask = bit32.lshift(data, ll)
- f.reg.data = bit32.band(f.reg.data, bit32.bnot(amask))
- f.reg.data = bit32.bor(f.reg.data, omask)
+ amask = (0xffff << ll)
+ omask = (data << ll)
+ f.reg.data = (f.reg.data & ~amask)
+ f.reg.data = (f.reg.data | omask)
elseif (size == 4) then
f.reg.data = data
for i = 0, 3, 1 do av[i] = true end
@@ -211,14 +211,14 @@ function pci_cfg_access(f, action)
if (bv[i] and av[i]) then
call_pci_cfg_hook(action, bdfr + i, 1, val)
end
- val = bit32.rshift(val, 8)
+ val = (val >> 8)
end
val = f.reg.data
for i = 0, 2, 1 do
if ((bv[i] and bv[i+1]) and (av[i] or av[i+1])) then
call_pci_cfg_hook(action, bdfr + i, 2, val)
end
- val = bit32.rshift(val, 8)
+ val = (val >> 8)
end
val = f.reg.data
if (bv[0] and bv[1] and bv[2] and bv[3]) then
@@ -233,20 +233,20 @@ end
function pci_io_cfg_pre(f, action)
if action.addr == 0xcf8 and action.size == 4 then
if action.write then
- if bit32.band(0x80000000, action.data) ~= 0 then
+ if (0x80000000 & action.data) ~= 0 then
f.reg.reset = true
new_parent_action()
end
local bdfr = 0
-- BDFR is like normal BDF but reg has 12 bits to cover all extended space
-- Copy bus/device/function
- bdfr = bit32.lshift(action.data, 4)
- bdfr = bit32.band(bdfr, 0x0ffff000)
+ bdfr = (action.data << 4)
+ bdfr = (bdfr & 0x0ffff000)
-- Some chipsets allows (on request) performing extended register space access
-- Usually using bits 27:24, copy that to right place
- bdfr = bit32.bor(bdfr, bit32.band(0xf00, bit32.rshift(action.data, 24 - 8)))
+ bdfr = bdfr | (0xf00 & (action.data >> 24 - 8))
-- Add the classic PCI register
- bdfr = bit32.bor(bdfr, bit32.band(action.data, 0xfc))
+ bdfr = bdfr | (action.data & 0xfc)
pci_cfg_select(f, bdfr)
end
return handle_action(f, action)
@@ -287,8 +287,8 @@ filter_pci_io_cfg = {
function pci_mm_cfg_pre(f, action)
local bdfr = 0
- bdfr = bit32.band(action.addr, bit32.bnot(f.base))
- bdfr = bit32.band(bdfr, bit32.bnot(0x3))
+ bdfr = (action.addr & ~f.base)
+ bdfr = (bdfr & ~0x3)
pci_cfg_select(f, bdfr)
pci_cfg_access(f, action)
@@ -297,7 +297,7 @@ function pci_mm_cfg_pre(f, action)
end
function pci_mm_cfg_post(f, action)
- local bdfr = bit32.band(action.addr, bit32.bnot(f.base))
+ local bdfr = (action.addr & ~f.base)
pci_cfg_print(f, action, bdfr)
return true
end
diff --git a/SerialICE/simba/replay.lua b/SerialICE/simba/replay.lua
index 8ec3b0a..e7a2868 100644
--- a/SerialICE/simba/replay.lua
+++ b/SerialICE/simba/replay.lua
@@ -153,8 +153,8 @@ function parse_pci(line)
return false
end
- local nreg = bit32.band(0xfc, tonumber(reg,16))
- local noff = bit32.band(0x03, tonumber(reg,16))
+ local nreg = 0xfc & tonumber(reg,16)
+ local noff = 0x03 & tonumber(reg,16)
local ndata = tonumber(data,16)
local nsize = string.len(data)/2
diff --git a/qemu-0.15.x/configure b/qemu-0.15.x/configure
index 947fa3f..7f8f104 100755
--- a/qemu-0.15.x/configure
+++ b/qemu-0.15.x/configure
@@ -1743,44 +1743,28 @@ EOF
got_lua=yes
fi
fi
- if test "$got_lua" != "yes" && $pkg_config --atleast-version=5.2 lua ; then
+ if test "$got_lua" != "yes" && $pkg_config --atleast-version=5.3 lua ; then
lua_cflags=`$pkg_config --cflags lua 2> /dev/null`
lua_ldflags=`$pkg_config --libs lua 2> /dev/null`
if compile_prog "$lua_cflags" "$lua_ldflags" > /dev/null 2> /dev/null ; then
got_lua=yes
fi
fi
- if test "$got_lua" != "yes" && $pkg_config --exists lua5.2 ; then
- lua_cflags=`$pkg_config --cflags lua5.2 2> /dev/null`
- lua_ldflags=`$pkg_config --libs lua5.2 2> /dev/null`
+ if test "$got_lua" != "yes" && $pkg_config --exists lua5.3 ; then
+ lua_cflags=`$pkg_config --cflags lua5.3 2> /dev/null`
+ lua_ldflags=`$pkg_config --libs lua5.3 2> /dev/null`
if compile_prog "$lua_cflags" "$lua_ldflags" > /dev/null 2> /dev/null ; then
got_lua=yes
fi
fi
if test "$got_lua" != "yes" ; then
echo
- echo "Error Lua version >= 5.2 not found. Can't build QEMU with SerialICE support."
- echo
- exit 1
- fi
-
-# Test if lua-5.2.x-intsize.patch has been applied. On a 32bit host system
-# LUA_INTEGER is often a signed 32bit integer (ptrdiff_t) and not enough for our needs.
- cat > $TMPC << EOF
-#include <lua.h>
-int main(void) { LUA_INTEGER a = (unsigned long int)1<<31; if (a<0) return 1; else return 0; }
-EOF
-
- if compile_prog "$lua_cflags" "$lua_ldflags" && $TMPE > /dev/null 2> /dev/null ; then
- serialice=yes
- else
- echo
- echo "Error Found Lua but it needs a patch to handle 32bit unsigned integers"
- echo "correctly. Can't build QEMU with SerialICE support."
+ echo "Error Lua version >= 5.3 not found. Can't build QEMU with SerialICE support."
echo
exit 1
fi
+ serialice=yes
libs_softmmu="$lua_ldflags $libs_softmmu"
fi # test "$serialice"
diff --git a/qemu-0.15.x/serialice-lua.c b/qemu-0.15.x/serialice-lua.c
index 0216eb2..cdf3e25 100644
--- a/qemu-0.15.x/serialice-lua.c
+++ b/qemu-0.15.x/serialice-lua.c
@@ -106,7 +106,7 @@ static int serialice_system_reset(lua_State * luastate)
static int register_set(lua_State * L)
{
const char *key = luaL_checkstring(L, 2);
- int val = luaL_checkint(L, 3);
+ int val = luaL_checkinteger(L, 3);
int ret = 1;
if (strcmp(key, "eax") == 0) {
--
2.1.0