Merge pull request #986 from duncanspumpkin/align

Add force align attributes to all hooks
This commit is contained in:
Duncan 2021-06-09 16:05:36 +01:00 committed by GitHub
commit 1a3e1902f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 13 deletions

View File

@ -785,7 +785,7 @@ void OpenLoco::Interop::registerHooks()
// Part of 0x004691FA
registerHook(
0x0046959C,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
int16_t x = regs.eax;
int16_t i = regs.ebx / 6;
@ -800,7 +800,7 @@ void OpenLoco::Interop::registerHooks()
registerHook(
0x004AB655,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
auto v = (Vehicles::VehicleBase*)regs.esi;
v->asVehicleBody()->secondaryAnimationUpdate();
@ -809,7 +809,7 @@ void OpenLoco::Interop::registerHooks()
registerHook(
0x004392BD,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
Gui::resize();
return 0;
});
@ -826,7 +826,7 @@ void OpenLoco::Interop::registerHooks()
registerHook(
0x004C9513,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
auto window = (Ui::window*)regs.esi;
int16_t x = regs.ax;
@ -850,7 +850,7 @@ void OpenLoco::Interop::registerHooks()
registerHook(
0x004CA115,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
auto window = (Ui::window*)regs.esi;
window->updateScrollWidgets();
@ -861,7 +861,7 @@ void OpenLoco::Interop::registerHooks()
registerHook(
0x004CA17F,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
auto window = (Ui::window*)regs.esi;
window->initScrollWidgets();
@ -900,13 +900,13 @@ void OpenLoco::Interop::registerHooks()
// to set them all to zero this is required.
registerHook(
0x004422CD,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
return 0;
});
registerHook(
0x0047024A,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
auto* entity = reinterpret_cast<EntityBase*>(regs.esi);

View File

@ -9,7 +9,7 @@
#define assert_struct_size(x, y) static_assert(sizeof(x) == (y), "Improper struct size")
#if defined(__clang__)
#if defined(__clang__) || (defined(__GNUC__) && !defined(__MINGW32__))
#define FORCE_ALIGN_ARG_POINTER __attribute__((force_align_arg_pointer))
#else
#define FORCE_ALIGN_ARG_POINTER

View File

@ -145,7 +145,7 @@ namespace OpenLoco::Paint
{
registerHook(
0x004622A2,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
PaintSession session;

View File

@ -225,7 +225,7 @@ namespace OpenLoco::Ui::WindowManager
registerHook(
0x0048F210,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
auto window = Windows::Station::open(regs.dx);
regs = backup;
@ -236,7 +236,7 @@ namespace OpenLoco::Ui::WindowManager
registerHook(
0x004577FF,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
auto window = Windows::IndustryList::open();
regs = backup;
@ -409,7 +409,7 @@ namespace OpenLoco::Ui::WindowManager
registerHook(
0x004CE3D6,
[](registers& regs) -> uint8_t {
[](registers& regs) FORCE_ALIGN_ARG_POINTER -> uint8_t {
registers backup = regs;
Input::toolCancel();
regs = backup;