I got it! The culprit is the code that does this in BIOS: [MSR 0x122] |= 3;
So, just blank (NOP) out that piece of code in BIOS and have fun with x64. I don't have any experience with BIOS modding, but I am familiar with assembly language programming and almost everything in Intel SDM.
It took me quite some time to figure out there are 2 places to patch (for bootstrap processor and application processors).
Below are some notes to help you gain confidence that nothing fishy is being added. Use your hex editor compare function to compare between the BIOS file from Asus and my patched version.
Original (starting point):
1025C-ASUS-1301.ROM
2097152 bytes
SHA-256: 73bae3b7e061e4d6054e70b0405150ed93258d39b5561bdfb902554edd3e0a4f
Code:
//32-bit mode
53         push   ebx
6aff       push   0xffffffff
53         push   ebx
6a03       push   0x3
6822010000 push   0x122
e85c240000 call   func    //NOP out this instruction
83c414     add    esp,0x14
//32-bit mode    
b922010000 mov    ecx,0x122    
0f32       rdmsr    
0c03       or     al,0x3    
0f30       wrmsr    //NOP out this instruction
After NOP out the 2 locations with 0x90 (7 bytes in total),
SHA-256: af673c221dd145ea9faa495b5fac21d945541396a72cec3943ec1581e4a7167b
With that, you can enjoy your x64 system.
Optionally, you can update the microcode as well. I discovered Acer AOD270 BIOS has a newer version of the microcode.
In Asus 1025C (and old BIOS version of Acer AOD270): Version 0x010C, 2011-11-23
In Acer AOD270: Version 0x010D, 2011-12-22
With new microcode,
SHA-256: f568ec0f4ec31cc0a12b469a5092a233285bcfb018c6bdbd05a3ba5b765ad347
Note the hashes are on 2097152-byte ROM file, not zip file.