ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/thunks.cpp
(Generate patch)

Comparing SheepShaver/src/thunks.cpp (file contents):
Revision 1.7 by gbeauche, 2004-04-18T23:03:50Z vs.
Revision 1.14 by gbeauche, 2005-07-03T22:02:01Z

# Line 37 | Line 37
37  
38  
39   /*              NativeOp instruction format:
40 <                +------------+--------------------------+--+----------+------------+
41 <                |      6     |                          |FN|    OP    |      2     |
42 <                +------------+--------------------------+--+----------+------------+
43 <                 0         5 |6                       19 20 21      25 26        31
40 >                +------------+-------------------------+--+-----------+------------+
41 >                |      6     |                         |FN|    OP     |      2     |
42 >                +------------+-------------------------+--+-----------+------------+
43 >                 0         5 |6                      18 19 20      25 26        31
44   */
45  
46 < #define POWERPC_NATIVE_OP(LR, OP) \
47 <                (POWERPC_EMUL_OP | ((LR) << 11) | (((uint32)OP) << 6) | 2)
46 > #define POWERPC_NATIVE_OP(FN, OP) \
47 >                (POWERPC_EMUL_OP | ((FN) << 12) | (((uint32)OP) << 6) | 2)
48  
49   /*
50   *  Return the fake PowerPC opcode to handle specified native code
# Line 55 | Line 55 | uint32 NativeOpcode(int selector)
55   {
56          uint32 opcode;
57          switch (selector) {
58        case NATIVE_DISABLE_INTERRUPT:
59        case NATIVE_ENABLE_INTERRUPT:
58          case NATIVE_CHECK_LOAD_INVOC:
59                  opcode = POWERPC_NATIVE_OP(0, selector);
60                  break;
# Line 64 | Line 62 | uint32 NativeOpcode(int selector)
62          case NATIVE_VIDEO_INSTALL_ACCEL:
63          case NATIVE_VIDEO_VBL:
64          case NATIVE_VIDEO_DO_DRIVER_IO:
65 +        case NATIVE_ETHER_AO_GET_HWADDR:
66 +        case NATIVE_ETHER_AO_ADD_MULTI:
67 +        case NATIVE_ETHER_AO_DEL_MULTI:
68 +        case NATIVE_ETHER_AO_SEND_PACKET:
69          case NATIVE_ETHER_IRQ:
70          case NATIVE_ETHER_INIT:
71          case NATIVE_ETHER_TERM:
# Line 89 | Line 91 | uint32 NativeOpcode(int selector)
91          case NATIVE_FILLRECT_HOOK:
92          case NATIVE_BITBLT:
93          case NATIVE_INVRECT:
94 <        case NATIVE_FILLRECT_8:
93 <        case NATIVE_FILLRECT_32:
94 >        case NATIVE_FILLRECT:
95                  opcode = POWERPC_NATIVE_OP(1, selector);
96                  break;
97          default:
# Line 152 | Line 153 | static void generate_powerpc_thunks(void
153          assert(xlm_index != -1 && check_load_invoc_index != -1);
154  
155          uint32 check_load_invoc_opcode = NativeOpcode(NATIVE_CHECK_LOAD_INVOC);
156 <        uintptr base;
156 >        uint32 base;
157  
158          // GetResource()
159          get_resource_func = base = SheepMem::Reserve(get_resource_template_size);
# Line 218 | Line 219 | bool ThunksInit(void)
219          native_op[NATIVE_R_GET_RESOURCE].func = r_get_resource_func;
220   #endif
221   #else
222 < #if defined(__linux__) || (defined(__APPLE__) && defined(__MACH__))
222 > #if defined(__linux__) || defined(__NetBSD__) || (defined(__APPLE__) && defined(__MACH__))
223   #define DEFINE_NATIVE_OP(ID, FUNC) do {                         \
224                  uintptr base = SheepMem::Reserve(8);            \
225                  WriteMacInt32(base + 0, (uint32)FUNC);          \
226 <                WriteMacInt32(base + 4, 0); /*Fake TVECT*/      \
226 >                WriteMacInt32(base + 4, (uint32)TOC);           \
227                  native_op[ID].tvect = base;                                     \
228                  native_op[ID].func  = (uint32)FUNC;                     \
229          } while (0)
# Line 239 | Line 240 | bool ThunksInit(void)
240          DEFINE_NATIVE_OP(NATIVE_VIDEO_INSTALL_ACCEL, VideoInstallAccel);
241          DEFINE_NATIVE_OP(NATIVE_VIDEO_VBL, VideoVBL);
242          DEFINE_NATIVE_OP(NATIVE_VIDEO_DO_DRIVER_IO, VideoDoDriverIO);
243 +        DEFINE_NATIVE_OP(NATIVE_ETHER_AO_GET_HWADDR, AO_get_ethernet_address);
244 +        DEFINE_NATIVE_OP(NATIVE_ETHER_AO_ADD_MULTI, AO_enable_multicast);
245 +        DEFINE_NATIVE_OP(NATIVE_ETHER_AO_DEL_MULTI, AO_disable_multicast);
246 +        DEFINE_NATIVE_OP(NATIVE_ETHER_AO_SENDPACKET, AO_transmit_packet);
247          DEFINE_NATIVE_OP(NATIVE_ETHER_IRQ, EtherIRQ);
248          DEFINE_NATIVE_OP(NATIVE_ETHER_INIT, InitStreamModule);
249          DEFINE_NATIVE_OP(NATIVE_ETHER_TERM, TerminateStreamModule);
# Line 256 | Line 261 | bool ThunksInit(void)
261          DEFINE_NATIVE_OP(NATIVE_MAKE_EXECUTABLE, MakeExecutable);
262          DEFINE_NATIVE_OP(NATIVE_SYNC_HOOK, NQD_sync_hook);
263          DEFINE_NATIVE_OP(NATIVE_BITBLT_HOOK, NQD_bitblt_hook);
264 < //      DEFINE_NATIVE_OP(NATIVE_FILLRECT_HOOK, NQD_fillrect_hook);
264 >        DEFINE_NATIVE_OP(NATIVE_FILLRECT_HOOK, NQD_fillrect_hook);
265          DEFINE_NATIVE_OP(NATIVE_BITBLT, NQD_bitblt);
266 < //      DEFINE_NATIVE_OP(NATIVE_INVRECT, NQD_invrect);
267 < //      DEFINE_NATIVE_OP(NATIVE_FILLRECT_8, NQD_fillrect8);
263 < //      DEFINE_NATIVE_OP(NATIVE_FILLRECT_32, NQD_fillrect32);
266 >        DEFINE_NATIVE_OP(NATIVE_INVRECT, NQD_invrect);
267 >        DEFINE_NATIVE_OP(NATIVE_FILLRECT, NQD_fillrect);
268   #undef DEFINE_NATIVE_OP
269   #endif
270  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines