File tree Expand file tree Collapse file tree 1 file changed +7
-3
lines changed
Expand file tree Collapse file tree 1 file changed +7
-3
lines changed Original file line number Diff line number Diff line change @@ -1013,7 +1013,7 @@ intop3b: { int op = ArOpsFR[D_MO(opc)];
10131013 /* optimized multiple register push */
10141014 while (1 ) {
10151015 int op ;
1016- if (opc > 8 && !(_mode & DATA16 )) // 32-bit segreg
1016+ if (opc > 8 && !(m & DATA16 )) // 32-bit segreg
10171017 m |= SEGREG ;
10181018 Gen (O_PUSH2 , m , R1Tab_l [opc - 1 ]);
10191019 PC ++ ;
@@ -2479,7 +2479,9 @@ intop3b: { int op = ArOpsFR[D_MO(opc)];
24792479 break ;
24802480///
24812481 case 0xa0 : /* PUSHfs */
2482- Gen (L_REG , _mode , Ofs_FS );
2482+ Gen (L_REG , _mode |DATA16 , Ofs_FS );
2483+ if (!(_mode & DATA16 )) // 32-bit segreg padding
2484+ Gen (L_ZXAX , _mode );
24832485 Gen (O_PUSH , _mode ); PC += 2 ;
24842486 break ;
24852487 case 0xa1 : /* POPfs */
@@ -2572,7 +2574,9 @@ intop3b: { int op = ArOpsFR[D_MO(opc)];
25722574 /* case 0xa7: CMPXCHGw (486 STEP A only) */
25732575///
25742576 case 0xa8 : /* PUSHgs */
2575- Gen (L_REG , _mode , Ofs_GS );
2577+ Gen (L_REG , _mode |DATA16 , Ofs_GS );
2578+ if (!(_mode & DATA16 )) // 32-bit segreg padding
2579+ Gen (L_ZXAX , _mode );
25762580 Gen (O_PUSH , _mode ); PC += 2 ;
25772581 break ;
25782582 case 0xa9 : /* POPgs */
You can’t perform that action at this time.
0 commit comments